πŸ”
← Back to Categories

GCX016E Sequence (GCX016ER)

Objective: Handles GCX016ER processing.
πŸ—ΊοΈ High-Level Visual Map
flowchart TD
    A[GCX016E Program Start]:::start
    B[1:MQ Message Retrieval]:::process
    C{Messages Available?}:::decision
    D[91:Message Array Initialization]:::process
    E{Message Type?}:::decision
    F[Train Processing Path]:::process
    G[Cargo Processing Path]:::process
    H[2:Train Identification and Validation]:::process
    I{Train Disposition Code?}:::decision
    J[3:Train Hold Processing - HMI]:::process
    K[4:Train Hold Release Processing - HRE]:::process
    L[5:Train Arrival Processing - POD/AAD]:::process
    M[6:Train Review Complete Processing - RC]:::process
    N[7:Train Not Arrived Processing - OCA]:::process
    O[8:Train Arrival Cancellation - COC]:::process
    P[9:Train Lock Processing - LCK]:::process
    Q[10:Train Unlock Processing - ULC]:::process
    R[11:Train Seizure Processing - SEI]:::process
    S[12:Train Seizure Release Processing - SER]:::process
    T[13:Train All Clear Processing - CAE]:::process
    U[105:Equipment Hold Processing by VID Segment]:::process
    V[106:Equipment Release Processing by VID Segment]:::process
    W[107:Equipment Seizure Processing by VID Segment]:::process
    X[108:Equipment Seizure Release Processing by VID Segment]:::process
    Y{Cargo Lookup Method?}:::decision
    Z[21:Cargo Processing by Bond]:::process
    AA[22:Cargo Processing by Car/Waybill]:::process
    BB[23:Individual Cargo Processing]:::process
    CC[42:S09 Status Segment Processing]:::process
    DD[43:Disposition Code Table Lookup]:::process
    EE[44:Duplicate Disposition Code Detection]:::process
    FF[45:Counterpart Disposition Code Removal]:::process
    GG[59:Complex Cargo Status Evaluation]:::process
    HH{Disposition Code Type?}:::decision
    II[24:Disposition Code 95 Processing]:::process
    JJ[25:In-Bond Broker Processing]:::process
    KK[26:SNP Processing]:::process
    LL[50:CPRS Bond Processing]:::process
    MM[57:Status Array Verification]:::process
    NN[58:Individual Status Analysis]:::process
    OO[65:Multi-Cargo Processing by Car/Waybill]:::process
    PP[68:Export Notification Processing]:::process
    QQ[69:Arrival Notification Processing]:::process
    RR{Cargo Found?}:::decision
    SS[70:New Cargo Record Creation]:::process
    TT[175:New Foreign Cargo Record Creation]:::process
    UU[176:Foreign Manifest Building from M10 Segments]:::process
    VV[76:Generic Table I/O Interface]:::process
    WW[77:Comprehensive Merlin Message Formatting]:::process
    XX[80:Cargo Status Integration]:::process
    YY[85:CIH Hold Email Notification]:::process
    ZZ[88:Merlin Message Distribution]:::process
    AAA[Program End]:::final
    
    %% Datasources
    MQ1[(GC350.EXP.INPUT Queue)]:::datasource
    IMS1[(GCWTL Train List Segments)]:::datasource
    IMS2[(GCSUSRT US Cargo Root Segments)]:::datasource
    IMS3[(GCSUSS09 Status Segments)]:::datasource
    IMS4[(GCSTBRT Table Segments)]:::datasource
    IMS5[(GCSUSS05 Equipment Segments)]:::datasource
    IMS6[(GCSA2RT Cargo Segments)]:::datasource
    IMS7[(GCST2RT Broker Segments)]:::datasource
    IMS8[(SHIPROOT Shipment Root)]:::datasource
    IMS9[(SHIPMINU Shipment Minimum)]:::datasource
    IMS10[(GCCC-CARGO-ROOT Canadian Cargo)]:::datasource
    
    %% Main Flow
    A --> B
    B --> C
    C -->|Yes| D
    C -->|No| AAA
    D --> E
    E -->|Train Message| F
    E -->|Cargo Message| G
    
    %% Train Processing Flow
    F --> H
    H --> I
    I -->|HMI| J
    I -->|HRE| K
    I -->|POD/AAD| L
    I -->|RC| M
    I -->|OCA| N
    I -->|COC| O
    I -->|LCK| P
    I -->|ULC| Q
    I -->|SEI| R
    I -->|SER| S
    I -->|CAE| T
    I -->|VID Equipment| U
    U --> V
    V --> W
    W --> X
    J --> ZZ
    K --> ZZ
    L --> ZZ
    M --> ZZ
    N --> ZZ
    O --> ZZ
    P --> ZZ
    Q --> ZZ
    R --> ZZ
    S --> ZZ
    T --> ZZ
    X --> ZZ
    
    %% Cargo Processing Flow
    G --> Y
    Y -->|Bond Number| Z
    Y -->|Car/Waybill| AA
    Z --> BB
    AA --> BB
    BB --> CC
    CC --> DD
    DD --> EE
    EE --> FF
    FF --> GG
    GG --> HH
    HH -->|DC95| II
    HH -->|In-Bond| JJ
    HH -->|SNP| KK
    HH -->|CPRS| LL
    II --> MM
    JJ --> MM
    KK --> MM
    LL --> MM
    MM --> NN
    NN --> OO
    OO --> PP
    PP --> QQ
    QQ --> WW
    
    %% New Cargo Creation
    BB --> RR
    RR -->|No| SS
    RR -->|Foreign| TT
    SS --> UU
    TT --> UU
    UU --> VV
    
    %% Final Processing
    VV --> WW
    WW --> XX
    XX --> YY
    YY --> ZZ
    ZZ --> AAA
    
    %% Datasource Connections
    MQ1 -.->|Read Messages| B
    IMS1 -.->|Read Train Data| H
    IMS2 -.->|Read Cargo Data| BB
    IMS3 -.->|Read/Write Status| CC
    IMS4 -.->|Read Tables| DD
    IMS4 -.->|Read Tables| VV
    IMS5 -.->|Read Equipment| XX
    IMS6 -.->|Read Cargo Segments| YY
    IMS7 -.->|Read Broker Data| YY
    IMS8 -.->|Validate Shipment| SS
    IMS9 -.->|Create Minimum Info| SS
    IMS10 -.->|Search Canadian Cargo| UU
    
    %% Class Definitions
    classDef start fill:#67A353
    classDef process fill:#08AAD2
    classDef decision fill:#FFE347
    classDef datasource fill:#2EA597
    classDef final fill:#D13313
                
πŸ“‹ Step-by-Step Logic Trace
βœ“ Consolidated Acceptance Criteria
  • Message retrieval is initiated → messages are retrieved from queue and completion codes are evaluated to determine message availability 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_1MQMessageRetrieval(["Start Step"]) E_1MQMessageRetrieval(["End Step"]) N_1MQMessageRetrieval_Node0{"Message retrieval is initiated"}:::decision N_1MQMessageRetrieval_Node0_action["Messages are retrieved from queue
and completion codes are evaluated
to determine message availability
status"]:::main N_1MQMessageRetrieval_Node0 -- Yes --> N_1MQMessageRetrieval_Node0_action N_1MQMessageRetrieval_Node0_action --> E_1MQMessageRetrieval S_1MQMessageRetrieval --> N_1MQMessageRetrieval_Node0 N_1MQMessageRetrieval_Node0 -- No --> E_1MQMessageRetrieval
File: GCX016E.cbl
GIVEN: The system needs to process messages from GC350.EXP.INPUT queue
WHEN: Message retrieval is initiated
THEN:
  • Messages are retrieved from queue
  • Completion codes are evaluated to determine message availability status
βœ“ Consolidated Acceptance Criteria
  • Vessel name starts with 'TRAIN' or 'DAY' → continue processing without additional validation
  • Train lookup is performed against train list → if train not found, generate error message to Merlin 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_2TrainIdentificationandValidation(["Start Step"]) E_2TrainIdentificationandValidation(["End Step"]) N_2TrainIdentificationandValidation_Node0{"Vessel name starts with TRAIN or
DAY"}:::decision N_2TrainIdentificationandValidation_Node0_action["Continue processing without
additional validation"]:::main N_2TrainIdentificationandValidation_Node0 -- Yes --> N_2TrainIdentificationandValidation_Node0_action N_2TrainIdentificationandValidation_Node0_action --> E_2TrainIdentificationandValidation S_2TrainIdentificationandValidation --> N_2TrainIdentificationandValidation_Node0 N_2TrainIdentificationandValidation_Node1{"Train lookup is performed against
train list"}:::decision N_2TrainIdentificationandValidation_Node1_action["If train not found, generate error
message to Merlin system"]:::main N_2TrainIdentificationandValidation_Node1 -- Yes --> N_2TrainIdentificationandValidation_Node1_action N_2TrainIdentificationandValidation_Node1_action --> E_2TrainIdentificationandValidation N_2TrainIdentificationandValidation_Node0 -- No --> N_2TrainIdentificationandValidation_Node1 N_2TrainIdentificationandValidation_Node1 -- No --> E_2TrainIdentificationandValidation
File: GCX016E.cbl
GIVEN: M10 segment contains vessel name information
WHEN: Vessel name starts with 'TRAIN' or 'DAY'
THEN: Continue processing without additional validation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Vessel name does not start with 'TRAIN' or 'DAY'
WHEN: Train lookup is performed against train list
THEN: If train not found, generate error message to Merlin system
βœ“ Consolidated Acceptance Criteria
  • Train hold event is processed → set train held status and log hold message to Merlin 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_3TrainHoldProcessingHMI(["Start Step"]) E_3TrainHoldProcessingHMI(["End Step"]) N_3TrainHoldProcessingHMI_Node0{"Train hold event is processed"}:::decision N_3TrainHoldProcessingHMI_Node0_action["Set train held status and log hold
message to Merlin system"]:::main N_3TrainHoldProcessingHMI_Node0 -- Yes --> N_3TrainHoldProcessingHMI_Node0_action N_3TrainHoldProcessingHMI_Node0_action --> E_3TrainHoldProcessingHMI S_3TrainHoldProcessingHMI --> N_3TrainHoldProcessingHMI_Node0 N_3TrainHoldProcessingHMI_Node0 -- No --> E_3TrainHoldProcessingHMI
File: GCX016E.cbl
GIVEN: V9 segment contains event code HMI
WHEN: Train hold event is processed
THEN:
  • Set train held status
  • Log hold message to merlin system
βœ“ Consolidated Acceptance Criteria
  • Train hold release event is processed → remove train hold status and log release message to Merlin 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_4TrainHoldReleaseProcessingHRE(["Start Step"]) E_4TrainHoldReleaseProcessingHRE(["End Step"]) N_4TrainHoldReleaseProcessingHRE_Node0{"Train hold release event is
processed"}:::decision N_4TrainHoldReleaseProcessingHRE_Node0_action["Remove train hold status and log
release message to Merlin system"]:::main N_4TrainHoldReleaseProcessingHRE_Node0 -- Yes --> N_4TrainHoldReleaseProcessingHRE_Node0_action N_4TrainHoldReleaseProcessingHRE_Node0_action --> E_4TrainHoldReleaseProcessingHRE S_4TrainHoldReleaseProcessingHRE --> N_4TrainHoldReleaseProcessingHRE_Node0 N_4TrainHoldReleaseProcessingHRE_Node0 -- No --> E_4TrainHoldReleaseProcessingHRE
File: GCX016E.cbl
GIVEN: V9 segment contains event code HRE
WHEN: Train hold release event is processed
THEN:
  • Remove train hold status
  • Log release message to merlin system
βœ“ Consolidated Acceptance Criteria
  • Train arrival event is processed → process train arrival and update arrival status in 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_5TrainArrivalProcessingPODAAD(["Start Step"]) E_5TrainArrivalProcessingPODAAD(["End Step"]) N_5TrainArrivalProcessingPODAAD_Node0{"Train arrival event is processed"}:::decision N_5TrainArrivalProcessingPODAAD_Node0_action["Process train arrival and update
arrival status in system"]:::main N_5TrainArrivalProcessingPODAAD_Node0 -- Yes --> N_5TrainArrivalProcessingPODAAD_Node0_action N_5TrainArrivalProcessingPODAAD_Node0_action --> E_5TrainArrivalProcessingPODAAD S_5TrainArrivalProcessingPODAAD --> N_5TrainArrivalProcessingPODAAD_Node0 N_5TrainArrivalProcessingPODAAD_Node0 -- No --> E_5TrainArrivalProcessingPODAAD
File: GCX016E.cbl
GIVEN: V9 segment contains event code POD or AAD
WHEN: Train arrival event is processed
THEN:
  • Process train arrival
  • Update arrival status in system
βœ“ Consolidated Acceptance Criteria
  • Review complete event is processed → set review completed status for 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_6TrainReviewCompleteProcessingRC(["Start Step"]) E_6TrainReviewCompleteProcessingRC(["End Step"]) N_6TrainReviewCompleteProcessingRC_Node0{"Review complete event is processed"}:::decision N_6TrainReviewCompleteProcessingRC_Node0_action["Set review completed status for the
train"]:::main N_6TrainReviewCompleteProcessingRC_Node0 -- Yes --> N_6TrainReviewCompleteProcessingRC_Node0_action N_6TrainReviewCompleteProcessingRC_Node0_action --> E_6TrainReviewCompleteProcessingRC S_6TrainReviewCompleteProcessingRC --> N_6TrainReviewCompleteProcessingRC_Node0 N_6TrainReviewCompleteProcessingRC_Node0 -- No --> E_6TrainReviewCompleteProcessingRC
File: GCX016E.cbl
GIVEN: V9 segment contains event code RC
WHEN: Review complete event is processed
THEN: Set review completed status for the train
βœ“ Consolidated Acceptance Criteria
  • Train not arrived event is processed → handle arrival cancellation for 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_7TrainNotArrivedProcessingOCA(["Start Step"]) E_7TrainNotArrivedProcessingOCA(["End Step"]) N_7TrainNotArrivedProcessingOCA_Node0{"Train not arrived event is
processed"}:::decision N_7TrainNotArrivedProcessingOCA_Node0_action["Handle arrival cancellation for the
train"]:::main N_7TrainNotArrivedProcessingOCA_Node0 -- Yes --> N_7TrainNotArrivedProcessingOCA_Node0_action N_7TrainNotArrivedProcessingOCA_Node0_action --> E_7TrainNotArrivedProcessingOCA S_7TrainNotArrivedProcessingOCA --> N_7TrainNotArrivedProcessingOCA_Node0 N_7TrainNotArrivedProcessingOCA_Node0 -- No --> E_7TrainNotArrivedProcessingOCA
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: V9 segment contains event code OCA
WHEN: Train not arrived event is processed
THEN: Handle arrival cancellation for the train
βœ“ Consolidated Acceptance Criteria
  • Train arrival cancellation is processed → process arrival cancellation with different logic based on current 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_8TrainArrivalCancellationCOC(["Start Step"]) E_8TrainArrivalCancellationCOC(["End Step"]) N_8TrainArrivalCancellationCOC_Node0{"Train arrival cancellation is
processed"}:::decision N_8TrainArrivalCancellationCOC_Node0_action["Process arrival cancellation with
different logic based on current
arrival status"]:::main N_8TrainArrivalCancellationCOC_Node0 -- Yes --> N_8TrainArrivalCancellationCOC_Node0_action N_8TrainArrivalCancellationCOC_Node0_action --> E_8TrainArrivalCancellationCOC S_8TrainArrivalCancellationCOC --> N_8TrainArrivalCancellationCOC_Node0 N_8TrainArrivalCancellationCOC_Node0 -- No --> E_8TrainArrivalCancellationCOC
File: GCX016E.cbl
GIVEN: V9 segment contains event code COC
WHEN: Train arrival cancellation is processed
THEN: Process arrival cancellation with different logic based on current arrival status
βœ“ Consolidated Acceptance Criteria
  • Train lock event is processed → set train locked 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_9TrainLockProcessingLCK(["Start Step"]) E_9TrainLockProcessingLCK(["End Step"]) N_9TrainLockProcessingLCK_Node0{"Train lock event is processed"}:::decision N_9TrainLockProcessingLCK_Node0_action["Set train locked status"]:::main N_9TrainLockProcessingLCK_Node0 -- Yes --> N_9TrainLockProcessingLCK_Node0_action N_9TrainLockProcessingLCK_Node0_action --> E_9TrainLockProcessingLCK S_9TrainLockProcessingLCK --> N_9TrainLockProcessingLCK_Node0 N_9TrainLockProcessingLCK_Node0 -- No --> E_9TrainLockProcessingLCK
File: GCX016E.cbl
GIVEN: V9 segment contains event code LCK
WHEN: Train lock event is processed
THEN: Set train locked status
βœ“ Consolidated Acceptance Criteria
  • Train unlock event is processed and train is currently locked → remove train lock 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_10TrainUnlockProcessingULC(["Start Step"]) E_10TrainUnlockProcessingULC(["End Step"]) N_10TrainUnlockProcessingULC_Node0{"Train unlock event is processed and
train is currently locked"}:::decision N_10TrainUnlockProcessingULC_Node0_action["Remove train lock status"]:::main N_10TrainUnlockProcessingULC_Node0 -- Yes --> N_10TrainUnlockProcessingULC_Node0_action N_10TrainUnlockProcessingULC_Node0_action --> E_10TrainUnlockProcessingULC S_10TrainUnlockProcessingULC --> N_10TrainUnlockProcessingULC_Node0 N_10TrainUnlockProcessingULC_Node0 -- No --> E_10TrainUnlockProcessingULC
File: GCX016E.cbl
GIVEN: V9 segment contains event code ULC
WHEN:
  • Train unlock event is processed
  • Train is currently locked
THEN: Remove train lock status
βœ“ Consolidated Acceptance Criteria
  • Train seizure event is processed → set train 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_11TrainSeizureProcessingSEI(["Start Step"]) E_11TrainSeizureProcessingSEI(["End Step"]) N_11TrainSeizureProcessingSEI_Node0{"Train seizure event is processed"}:::decision N_11TrainSeizureProcessingSEI_Node0_action["Set train seized status"]:::main N_11TrainSeizureProcessingSEI_Node0 -- Yes --> N_11TrainSeizureProcessingSEI_Node0_action N_11TrainSeizureProcessingSEI_Node0_action --> E_11TrainSeizureProcessingSEI S_11TrainSeizureProcessingSEI --> N_11TrainSeizureProcessingSEI_Node0 N_11TrainSeizureProcessingSEI_Node0 -- No --> E_11TrainSeizureProcessingSEI
File: GCX016E.cbl
GIVEN: V9 segment contains event code SEI
WHEN: Train seizure event is processed
THEN: Set train seized status
βœ“ Consolidated Acceptance Criteria
  • Train seizure release event is processed → remove train seize 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_12TrainSeizureReleaseProcessingSER(["Start Step"]) E_12TrainSeizureReleaseProcessingSER(["End Step"]) N_12TrainSeizureReleaseProcessingSER_Node0{"Train seizure release event is
processed"}:::decision N_12TrainSeizureReleaseProcessingSER_Node0_action["Remove train seize status"]:::main N_12TrainSeizureReleaseProcessingSER_Node0 -- Yes --> N_12TrainSeizureReleaseProcessingSER_Node0_action N_12TrainSeizureReleaseProcessingSER_Node0_action --> E_12TrainSeizureReleaseProcessingSER S_12TrainSeizureReleaseProcessingSER --> N_12TrainSeizureReleaseProcessingSER_Node0 N_12TrainSeizureReleaseProcessingSER_Node0 -- No --> E_12TrainSeizureReleaseProcessingSER
File: GCX016E.cbl
GIVEN: V9 segment contains event code SER
WHEN: Train seizure release event is processed
THEN: Remove train seize status
βœ“ Consolidated Acceptance Criteria
  • Train all clear event is processed → set all clear status for 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_13TrainAllClearProcessingCAE(["Start Step"]) E_13TrainAllClearProcessingCAE(["End Step"]) N_13TrainAllClearProcessingCAE_Node0{"Train all clear event is processed"}:::decision N_13TrainAllClearProcessingCAE_Node0_action["Set all clear status for the train"]:::main N_13TrainAllClearProcessingCAE_Node0 -- Yes --> N_13TrainAllClearProcessingCAE_Node0_action N_13TrainAllClearProcessingCAE_Node0_action --> E_13TrainAllClearProcessingCAE S_13TrainAllClearProcessingCAE --> N_13TrainAllClearProcessingCAE_Node0 N_13TrainAllClearProcessingCAE_Node0 -- No --> E_13TrainAllClearProcessingCAE
File: GCX016E.cbl
GIVEN: V9 segment contains event code CAE
WHEN: Train all clear event is processed
THEN: Set all clear status for the train
βœ“ Consolidated Acceptance Criteria
  • Bond number is identified from X4 segment → process all cargos with matching 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_21CargoProcessingbyBond(["Start Step"]) E_21CargoProcessingbyBond(["End Step"]) N_21CargoProcessingbyBond_Node0{"Bond number is identified from X4
segment"}:::decision N_21CargoProcessingbyBond_Node0_action["Process all cargos with matching
bond number"]:::main N_21CargoProcessingbyBond_Node0 -- Yes --> N_21CargoProcessingbyBond_Node0_action N_21CargoProcessingbyBond_Node0_action --> E_21CargoProcessingbyBond S_21CargoProcessingbyBond --> N_21CargoProcessingbyBond_Node0 N_21CargoProcessingbyBond_Node0 -- No --> E_21CargoProcessingbyBond
File: GCX016E.cbl
GIVEN: Disposition code requires bond-based processing
WHEN: Bond number is identified from X4 segment
THEN: Process all cargos with matching bond number
βœ“ Consolidated Acceptance Criteria
  • Car ID and waybill are identified from segments → process all cargos with matching car ID 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_22CargoProcessingbyCarWaybill(["Start Step"]) E_22CargoProcessingbyCarWaybill(["End Step"]) N_22CargoProcessingbyCarWaybill_Node0{"Car ID and waybill are identified
from segments"}:::decision N_22CargoProcessingbyCarWaybill_Node0_action["Process all cargos with matching
car ID and waybill"]:::main N_22CargoProcessingbyCarWaybill_Node0 -- Yes --> N_22CargoProcessingbyCarWaybill_Node0_action N_22CargoProcessingbyCarWaybill_Node0_action --> E_22CargoProcessingbyCarWaybill S_22CargoProcessingbyCarWaybill --> N_22CargoProcessingbyCarWaybill_Node0 N_22CargoProcessingbyCarWaybill_Node0 -- No --> E_22CargoProcessingbyCarWaybill
File: GCX016E.cbl
GIVEN: Disposition code requires car/waybill-based processing
WHEN:
  • Car id
  • Waybill are identified from segments
THEN:
  • Process all cargos with matching car id
  • Waybill
βœ“ Consolidated Acceptance Criteria
  • Single cargo is identified from segments → process individual US cargo with 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_23IndividualCargoProcessing(["Start Step"]) E_23IndividualCargoProcessing(["End Step"]) N_23IndividualCargoProcessing_Node0{"Single cargo is identified from
segments"}:::decision N_23IndividualCargoProcessing_Node0_action["Process individual US cargo with
disposition code"]:::main N_23IndividualCargoProcessing_Node0 -- Yes --> N_23IndividualCargoProcessing_Node0_action N_23IndividualCargoProcessing_Node0_action --> E_23IndividualCargoProcessing S_23IndividualCargoProcessing --> N_23IndividualCargoProcessing_Node0 N_23IndividualCargoProcessing_Node0 -- No --> E_23IndividualCargoProcessing
File: GCX016E.cbl
GIVEN: Disposition code requires individual cargo processing
WHEN: Single cargo is identified from segments
THEN: Process individual US cargo with disposition code
βœ“ Consolidated Acceptance Criteria
  • Entry numbers match existing bond information → clear bond information from 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_24DispositionCode95Processing(["Start Step"]) E_24DispositionCode95Processing(["End Step"]) N_24DispositionCode95Processing_Node0{"Entry numbers match existing bond
information"}:::decision N_24DispositionCode95Processing_Node0_action["Clear bond information from cargo
record"]:::main N_24DispositionCode95Processing_Node0 -- Yes --> N_24DispositionCode95Processing_Node0_action N_24DispositionCode95Processing_Node0_action --> E_24DispositionCode95Processing S_24DispositionCode95Processing --> N_24DispositionCode95Processing_Node0 N_24DispositionCode95Processing_Node0 -- No --> E_24DispositionCode95Processing
File: GCX016E.cbl
GIVEN: Disposition code is 95
WHEN: Entry numbers match existing bond information
THEN: Clear bond information from cargo record
βœ“ Consolidated Acceptance Criteria
  • Entry number and broker information are provided → update broker entry numbers with validation and set in-bond information for entry types 61, 62, 63, 69
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_25InBondBrokerProcessing(["Start Step"]) E_25InBondBrokerProcessing(["End Step"]) N_25InBondBrokerProcessing_Node0{"Entry number and broker information
are provided"}:::decision N_25InBondBrokerProcessing_Node0_action["Update broker entry numbers with
validation and set in-bond
information for entry types 61, 62,
63, 69"]:::main N_25InBondBrokerProcessing_Node0 -- Yes --> N_25InBondBrokerProcessing_Node0_action N_25InBondBrokerProcessing_Node0_action --> E_25InBondBrokerProcessing S_25InBondBrokerProcessing --> N_25InBondBrokerProcessing_Node0 N_25InBondBrokerProcessing_Node0 -- No --> E_25InBondBrokerProcessing
File: GCX016E.cbl
GIVEN: Disposition code requires in-bond processing
WHEN:
  • Entry number
  • Broker information are provided
THEN:
  • Update broker entry numbers with validation
  • Set in-bond information for entry types 61, 62, 63, 69
βœ“ Consolidated Acceptance Criteria
  • SNP processing is initiated → process SNP disposition with specific 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_26SNPProcessing(["Start Step"]) E_26SNPProcessing(["End Step"]) N_26SNPProcessing_Node0{"SNP processing is initiated"}:::decision N_26SNPProcessing_Node0_action["Process SNP disposition with
specific business logic"]:::main N_26SNPProcessing_Node0 -- Yes --> N_26SNPProcessing_Node0_action N_26SNPProcessing_Node0_action --> E_26SNPProcessing S_26SNPProcessing --> N_26SNPProcessing_Node0 N_26SNPProcessing_Node0 -- No --> E_26SNPProcessing
File: GCX016E.cbl
GIVEN: Disposition code is SNP
WHEN: SNP processing is initiated
THEN: Process SNP disposition with specific business logic
βœ“ Consolidated Acceptance Criteria
  • S09 segments are fetched for cargo → create or replace S09 segments for cargo records and manage status arrays with sequence numbers
  • N7 segment data contains car information → update car ID from N7 segment data
  • Car ID processing is performed → clear 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_42S09StatusSegmentProcessing(["Start Step"]) E_42S09StatusSegmentProcessing(["End Step"]) N_42S09StatusSegmentProcessing_Node0{"S09 segments are fetched for cargo"}:::decision N_42S09StatusSegmentProcessing_Node0_action["Create or replace S09 segments for
cargo records and manage status
arrays with sequence numbers"]:::main N_42S09StatusSegmentProcessing_Node0 -- Yes --> N_42S09StatusSegmentProcessing_Node0_action N_42S09StatusSegmentProcessing_Node0_action --> E_42S09StatusSegmentProcessing S_42S09StatusSegmentProcessing --> N_42S09StatusSegmentProcessing_Node0 N_42S09StatusSegmentProcessing_Node1{"N7 segment data contains car
information"}:::decision N_42S09StatusSegmentProcessing_Node1_action["Update car ID from N7 segment data"]:::main N_42S09StatusSegmentProcessing_Node1 -- Yes --> N_42S09StatusSegmentProcessing_Node1_action N_42S09StatusSegmentProcessing_Node1_action --> E_42S09StatusSegmentProcessing N_42S09StatusSegmentProcessing_Node0 -- No --> N_42S09StatusSegmentProcessing_Node1 N_42S09StatusSegmentProcessing_Node2{"Car ID processing is performed"}:::decision N_42S09StatusSegmentProcessing_Node2_action["Clear car ID information"]:::main N_42S09StatusSegmentProcessing_Node2 -- Yes --> N_42S09StatusSegmentProcessing_Node2_action N_42S09StatusSegmentProcessing_Node2_action --> E_42S09StatusSegmentProcessing N_42S09StatusSegmentProcessing_Node1 -- No --> N_42S09StatusSegmentProcessing_Node2 N_42S09StatusSegmentProcessing_Node2 -- No --> E_42S09StatusSegmentProcessing
File: GCX016E.cbl
GIVEN: Cargo requires status segment processing
WHEN: S09 segments are fetched for cargo
THEN:
  • Create or replace s09 segments for cargo records
  • Manage status arrays with sequence numbers
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo is not CPRS shipment
WHEN: N7 segment data contains car information
THEN: Update car ID from N7 segment data
File: GCX016E.cbl
GIVEN: Cargo is CPRS shipment
WHEN: Car ID processing is performed
THEN: Clear car ID information
βœ“ Consolidated Acceptance Criteria
  • DC table lookup is performed → retrieve disposition code details from 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_43DispositionCodeTableLookup(["Start Step"]) E_43DispositionCodeTableLookup(["End Step"]) N_43DispositionCodeTableLookup_Node0{"DC table lookup is performed"}:::decision N_43DispositionCodeTableLookup_Node0_action["Retrieve disposition code details
from DC table"]:::main N_43DispositionCodeTableLookup_Node0 -- Yes --> N_43DispositionCodeTableLookup_Node0_action N_43DispositionCodeTableLookup_Node0_action --> E_43DispositionCodeTableLookup S_43DispositionCodeTableLookup --> N_43DispositionCodeTableLookup_Node0 N_43DispositionCodeTableLookup_Node0 -- No --> E_43DispositionCodeTableLookup
File: GCX016E.cbl
GIVEN: Disposition code needs validation
WHEN: DC table lookup is performed
THEN: Retrieve disposition code details from DC table
βœ“ Consolidated Acceptance Criteria
  • The system looks up the disposition code in the GCSTBRT disposition code table → if the code is not found in the table, generate a Merlin error message and stop processing for this 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_43DispositionCodeTableLookup(["Start Step"]) E_43DispositionCodeTableLookup(["End Step"]) N_43DispositionCodeTableLookup_Node0{"The system looks up the disposition
code in the GCSTBRT disposition code
table"}:::decision N_43DispositionCodeTableLookup_Node0_action["If the code is not found in the
table, generate a Merlin error
message and stop processing for this
code"]:::main N_43DispositionCodeTableLookup_Node0 -- Yes --> N_43DispositionCodeTableLookup_Node0_action N_43DispositionCodeTableLookup_Node0_action --> E_43DispositionCodeTableLookup S_43DispositionCodeTableLookup --> N_43DispositionCodeTableLookup_Node0 N_43DispositionCodeTableLookup_Node0 -- No --> E_43DispositionCodeTableLookup
File: GCX016E.cbl
GIVEN: A disposition code is received for processing
WHEN: The system looks up the disposition code in the GCSTBRT disposition code table
THEN:
  • If the code is not found in the table, generate a merlin error message
  • Stop processing for this code
βœ“ Consolidated Acceptance Criteria
  • New disposition code is being added → search existing status array for matching disposition codes and check entry numbers and quantities for exact 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_44DuplicateDispositionCodeDetection(["Start Step"]) E_44DuplicateDispositionCodeDetection(["End Step"]) N_44DuplicateDispositionCodeDetection_Node0{"New disposition code is being added"}:::decision N_44DuplicateDispositionCodeDetection_Node0_action["Search existing status array for
matching disposition codes and check
entry numbers and quantities for
exact matches"]:::main N_44DuplicateDispositionCodeDetection_Node0 -- Yes --> N_44DuplicateDispositionCodeDetection_Node0_action N_44DuplicateDispositionCodeDetection_Node0_action --> E_44DuplicateDispositionCodeDetection S_44DuplicateDispositionCodeDetection --> N_44DuplicateDispositionCodeDetection_Node0 N_44DuplicateDispositionCodeDetection_Node0 -- No --> E_44DuplicateDispositionCodeDetection
File: GCX016E.cbl
GIVEN: Status array contains existing disposition codes
WHEN: New disposition code is being added
THEN:
  • Search existing status array for matching disposition codes
  • Check entry numbers
  • Quantities for exact matches
βœ“ Consolidated Acceptance Criteria
  • The system searches the existing S09A status array for the same disposition code with matching entry number and quantity → if an exact duplicate is found, skip processing and do not add the code again
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_44DuplicateDispositionCodeDetection(["Start Step"]) E_44DuplicateDispositionCodeDetection(["End Step"]) N_44DuplicateDispositionCodeDetection_Node0{"The system searches the existing
S09A status array for the same
disposition code with matching entry
number and quantity"}:::decision N_44DuplicateDispositionCodeDetection_Node0_action["If an exact duplicate is found,
skip processing and do not add the
code again"]:::main N_44DuplicateDispositionCodeDetection_Node0 -- Yes --> N_44DuplicateDispositionCodeDetection_Node0_action N_44DuplicateDispositionCodeDetection_Node0_action --> E_44DuplicateDispositionCodeDetection S_44DuplicateDispositionCodeDetection --> N_44DuplicateDispositionCodeDetection_Node0 N_44DuplicateDispositionCodeDetection_Node0 -- No --> E_44DuplicateDispositionCodeDetection
File: GCX016E.cbl
GIVEN: A valid disposition code needs to be added to the cargo status array
WHEN:
  • The system searches the existing s09a status array for the same disposition code with matching entry number
  • Quantity
THEN:
  • If an exact duplicate is found, skip processing
  • Do not add the code again
βœ“ Consolidated Acceptance Criteria
  • Counterpart disposition codes exist in status array → remove counterpart disposition codes 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_45CounterpartDispositionCodeRemoval(["Start Step"]) E_45CounterpartDispositionCodeRemoval(["End Step"]) N_45CounterpartDispositionCodeRemoval_Node0{"Counterpart disposition codes exist
in status array"}:::decision N_45CounterpartDispositionCodeRemoval_Node0_action["Remove counterpart disposition
codes from status array"]:::main N_45CounterpartDispositionCodeRemoval_Node0 -- Yes --> N_45CounterpartDispositionCodeRemoval_Node0_action N_45CounterpartDispositionCodeRemoval_Node0_action --> E_45CounterpartDispositionCodeRemoval S_45CounterpartDispositionCodeRemoval --> N_45CounterpartDispositionCodeRemoval_Node0 N_45CounterpartDispositionCodeRemoval_Node0 -- No --> E_45CounterpartDispositionCodeRemoval
File: GCX016E.cbl
GIVEN: New disposition code has counterpart logic defined
WHEN: Counterpart disposition codes exist in status array
THEN: Remove counterpart disposition codes from status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the new disposition code for addition to the status array → remove all existing 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_45CounterpartDispositionCodeRemoval(["Start Step"]) E_45CounterpartDispositionCodeRemoval(["End Step"]) N_45CounterpartDispositionCodeRemoval_Node0{"The system processes the new
disposition code for addition to the
status array"}:::decision N_45CounterpartDispositionCodeRemoval_Node0_action["Remove all existing counterpart
disposition codes from the status
array before adding the new code"]:::main N_45CounterpartDispositionCodeRemoval_Node0 -- Yes --> N_45CounterpartDispositionCodeRemoval_Node0_action N_45CounterpartDispositionCodeRemoval_Node0_action --> E_45CounterpartDispositionCodeRemoval S_45CounterpartDispositionCodeRemoval --> N_45CounterpartDispositionCodeRemoval_Node0 N_45CounterpartDispositionCodeRemoval_Node0 -- No --> E_45CounterpartDispositionCodeRemoval
File: GCX016E.cbl
GIVEN: A disposition code has counterpart codes defined in the disposition code table
WHEN: The system processes the new disposition code for addition to the status array
THEN: Remove all existing counterpart disposition codes from the status array before adding the new code
βœ“ Consolidated Acceptance Criteria
  • Bond processing is required → apply CPRS-specific bond 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_50CPRSBondProcessing(["Start Step"]) E_50CPRSBondProcessing(["End Step"]) N_50CPRSBondProcessing_Node0{"Bond processing is required"}:::decision N_50CPRSBondProcessing_Node0_action["Apply CPRS-specific bond processing
rules"]:::main N_50CPRSBondProcessing_Node0 -- Yes --> N_50CPRSBondProcessing_Node0_action N_50CPRSBondProcessing_Node0_action --> E_50CPRSBondProcessing S_50CPRSBondProcessing --> N_50CPRSBondProcessing_Node0 N_50CPRSBondProcessing_Node0 -- No --> E_50CPRSBondProcessing
File: GCX016E.cbl
GIVEN: Cargo is CPRS shipment
WHEN: Bond processing is required
THEN: Apply CPRS-specific bond processing rules
βœ“ Consolidated Acceptance Criteria
  • Status array verification is performed → verify status array integrity 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_57StatusArrayVerification(["Start Step"]) E_57StatusArrayVerification(["End Step"]) N_57StatusArrayVerification_Node0{"Status array verification is
performed"}:::decision N_57StatusArrayVerification_Node0_action["Verify status array integrity and
sequence numbers"]:::main N_57StatusArrayVerification_Node0 -- Yes --> N_57StatusArrayVerification_Node0_action N_57StatusArrayVerification_Node0_action --> E_57StatusArrayVerification S_57StatusArrayVerification --> N_57StatusArrayVerification_Node0 N_57StatusArrayVerification_Node0 -- No --> E_57StatusArrayVerification
File: GCX016E.cbl
GIVEN: Status array has been updated with disposition codes
WHEN: Status array verification is performed
THEN:
  • Verify status array integrity
  • Sequence numbers
βœ“ Consolidated Acceptance Criteria
  • Individual status analysis is performed → analyze each status code for hold, release, PTT, and other 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_58IndividualStatusAnalysis(["Start Step"]) E_58IndividualStatusAnalysis(["End Step"]) N_58IndividualStatusAnalysis_Node0{"Individual status analysis is
performed"}:::decision N_58IndividualStatusAnalysis_Node0_action["Analyze each status code for hold,
release, PTT, and other status flags"]:::main N_58IndividualStatusAnalysis_Node0 -- Yes --> N_58IndividualStatusAnalysis_Node0_action N_58IndividualStatusAnalysis_Node0_action --> E_58IndividualStatusAnalysis S_58IndividualStatusAnalysis --> N_58IndividualStatusAnalysis_Node0 N_58IndividualStatusAnalysis_Node0 -- No --> E_58IndividualStatusAnalysis
File: GCX016E.cbl
GIVEN: Status array contains multiple disposition codes
WHEN: Individual status analysis is performed
THEN: Analyze each status code for hold, release, PTT, and other status flags
βœ“ Consolidated Acceptance Criteria
  • Final status determination is required → apply status hierarchy: Manual Release β†’ Released, FDA Hold β†’ HOLDFDA, PTT with quantity check β†’ PTT, Hold combinations β†’ Various hold statuses, Release with quantity validation β†’ RELSD or HOLDPCS, Export/Arrival β†’ EXPORT/ARRIVAL, Default β†’ ACK or 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_59ComplexCargoStatusEvaluation(["Start Step"]) E_59ComplexCargoStatusEvaluation(["End Step"]) N_59ComplexCargoStatusEvaluation_Node0{"Final status determination is
required"}:::decision N_59ComplexCargoStatusEvaluation_Node0_action["Apply status hierarchy: Manual
Release Released, FDA Hold HOLDFDA,
PTT with quantity check PTT, Hold
combinations Various hold statuses,
Release with quantity validation
RELSD or HOLDPCS, ExportArrival
EXPORTARRIVAL, Default ACK or
PROCEED"]:::main N_59ComplexCargoStatusEvaluation_Node0 -- Yes --> N_59ComplexCargoStatusEvaluation_Node0_action N_59ComplexCargoStatusEvaluation_Node0_action --> E_59ComplexCargoStatusEvaluation S_59ComplexCargoStatusEvaluation --> N_59ComplexCargoStatusEvaluation_Node0 N_59ComplexCargoStatusEvaluation_Node0 -- No --> E_59ComplexCargoStatusEvaluation
File: GCX016E.cbl
GIVEN: All disposition codes have been processed and analyzed
WHEN: Final status determination is required
THEN: Apply status hierarchy: Manual Release β†’ Released, FDA Hold β†’ HOLDFDA, PTT with quantity check β†’ PTT, Hold combinations β†’ Various hold statuses, Release with quantity validation β†’ RELSD or HOLDPCS, Export/Arrival β†’ EXPORT/ARRIVAL, Default β†’ ACK or PROCEED
βœ“ Consolidated Acceptance Criteria
  • Multi-cargo processing is initiated → process all related cargos and verify release status for each 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_65MultiCargoProcessingbyCarWaybill(["Start Step"]) E_65MultiCargoProcessingbyCarWaybill(["End Step"]) N_65MultiCargoProcessingbyCarWaybill_Node0{"Multi-cargo processing is initiated"}:::decision N_65MultiCargoProcessingbyCarWaybill_Node0_action["Process all related cargos and
verify release status for each CCN"]:::main N_65MultiCargoProcessingbyCarWaybill_Node0 -- Yes --> N_65MultiCargoProcessingbyCarWaybill_Node0_action N_65MultiCargoProcessingbyCarWaybill_Node0_action --> E_65MultiCargoProcessingbyCarWaybill S_65MultiCargoProcessingbyCarWaybill --> N_65MultiCargoProcessingbyCarWaybill_Node0 N_65MultiCargoProcessingbyCarWaybill_Node0 -- No --> E_65MultiCargoProcessingbyCarWaybill
File: GCX016E.cbl
GIVEN: Multiple cargos exist with same car ID and waybill
WHEN: Multi-cargo processing is initiated
THEN:
  • Process all related cargos
  • Verify release status for each ccn
βœ“ Consolidated Acceptance Criteria
  • Export processing is performed → set export status, clear destination index, and generate 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_68ExportNotificationProcessing(["Start Step"]) E_68ExportNotificationProcessing(["End Step"]) N_68ExportNotificationProcessing_Node0{"Export processing is performed"}:::decision N_68ExportNotificationProcessing_Node0_action["Set export status, clear
destination index, and generate
appropriate notifications"]:::main N_68ExportNotificationProcessing_Node0 -- Yes --> N_68ExportNotificationProcessing_Node0_action N_68ExportNotificationProcessing_Node0_action --> E_68ExportNotificationProcessing S_68ExportNotificationProcessing --> N_68ExportNotificationProcessing_Node0 N_68ExportNotificationProcessing_Node0 -- No --> E_68ExportNotificationProcessing
File: GCX016E.cbl
GIVEN: Cargo status is set to export
WHEN: Export processing is performed
THEN: Set export status, clear destination index, and generate appropriate notifications
βœ“ Consolidated Acceptance Criteria
  • Arrival processing is performed → update arrival flags and dates based on 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_69ArrivalNotificationProcessing(["Start Step"]) E_69ArrivalNotificationProcessing(["End Step"]) N_69ArrivalNotificationProcessing_Node0{"Arrival processing is performed"}:::decision N_69ArrivalNotificationProcessing_Node0_action["Update arrival flags and dates
based on location"]:::main N_69ArrivalNotificationProcessing_Node0 -- Yes --> N_69ArrivalNotificationProcessing_Node0_action N_69ArrivalNotificationProcessing_Node0_action --> E_69ArrivalNotificationProcessing S_69ArrivalNotificationProcessing --> N_69ArrivalNotificationProcessing_Node0 N_69ArrivalNotificationProcessing_Node0 -- No --> E_69ArrivalNotificationProcessing
File: GCX016E.cbl
GIVEN: Cargo status is set to arrival
WHEN: Arrival processing is performed
THEN:
  • Update arrival flags
  • Dates based on location
βœ“ Consolidated Acceptance Criteria
  • New cargo creation is required → create new cargo record with CPRS vs regular shipment handling and automatically spawn GCT0162E for new cargos
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_70NewCargoRecordCreation(["Start Step"]) E_70NewCargoRecordCreation(["End Step"]) N_70NewCargoRecordCreation_Node0{"New cargo creation is required"}:::decision N_70NewCargoRecordCreation_Node0_action["Create new cargo record with CPRS
vs regular shipment handling and
automatically spawn GCT0162E for new
cargos"]:::main N_70NewCargoRecordCreation_Node0 -- Yes --> N_70NewCargoRecordCreation_Node0_action N_70NewCargoRecordCreation_Node0_action --> E_70NewCargoRecordCreation S_70NewCargoRecordCreation --> N_70NewCargoRecordCreation_Node0 N_70NewCargoRecordCreation_Node0 -- No --> E_70NewCargoRecordCreation
File: GCX016E.cbl
GIVEN: Cargo lookup returns no existing cargo
WHEN: New cargo creation is required
THEN:
  • Create new cargo record with cprs vs regular shipment handling
  • Automatically spawn gct0162e for new cargos
βœ“ Consolidated Acceptance Criteria
  • Generic table interface is called → perform table read/write operations with appropriate 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_76GenericTableIOInterface(["Start Step"]) E_76GenericTableIOInterface(["End Step"]) N_76GenericTableIOInterface_Node0{"Generic table interface is called"}:::decision N_76GenericTableIOInterface_Node0_action["Perform table readwrite operations
with appropriate error handling"]:::main N_76GenericTableIOInterface_Node0 -- Yes --> N_76GenericTableIOInterface_Node0_action N_76GenericTableIOInterface_Node0_action --> E_76GenericTableIOInterface S_76GenericTableIOInterface --> N_76GenericTableIOInterface_Node0 N_76GenericTableIOInterface_Node0 -- No --> E_76GenericTableIOInterface
File: GCX016E.cbl
GIVEN: Table operations are required for various business processes
WHEN: Generic table interface is called
THEN: Perform table read/write operations with appropriate error handling
βœ“ Consolidated Acceptance Criteria
  • Merlin message formatting is initiated → include disposition code messages unless manual/auto release, add car ID, waybill, US CCN, date/time, special comments up to 3 lines, K1 comments up to 4 lines, and quantity impact information
  • K1 segment contains 'DIRECTOR OF CUSTOMS, CP RAIL' or 'CANADIAN PACIFIC LIMITED' or 'CANADIAN PACIFIC RAILWAY CO' → create broker bond creation message for CP Rail
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_77ComprehensiveMerlinMessageFormatting(["Start Step"]) E_77ComprehensiveMerlinMessageFormatting(["End Step"]) N_77ComprehensiveMerlinMessageFormatting_Node0{"Merlin message formatting is
initiated"}:::decision N_77ComprehensiveMerlinMessageFormatting_Node0_action["Include disposition code messages
unless manualauto release, add car
ID, waybill, US CCN, datetime,
special comments up to 3 lines, K1
comments up to 4 lines, and quantity
impact information"]:::main N_77ComprehensiveMerlinMessageFormatting_Node0 -- Yes --> N_77ComprehensiveMerlinMessageFormatting_Node0_action N_77ComprehensiveMerlinMessageFormatting_Node0_action --> E_77ComprehensiveMerlinMessageFormatting S_77ComprehensiveMerlinMessageFormatting --> N_77ComprehensiveMerlinMessageFormatting_Node0 N_77ComprehensiveMerlinMessageFormatting_Node1{"K1 segment contains DIRECTOR OF
CUSTOMS, CP RAIL or CANADIAN PACIFIC
LIMITED or CANADIAN PACIFIC RAILWAY
CO"}:::decision N_77ComprehensiveMerlinMessageFormatting_Node1_action["Create broker bond creation message
for CP Rail"]:::main N_77ComprehensiveMerlinMessageFormatting_Node1 -- Yes --> N_77ComprehensiveMerlinMessageFormatting_Node1_action N_77ComprehensiveMerlinMessageFormatting_Node1_action --> E_77ComprehensiveMerlinMessageFormatting N_77ComprehensiveMerlinMessageFormatting_Node0 -- No --> N_77ComprehensiveMerlinMessageFormatting_Node1 N_77ComprehensiveMerlinMessageFormatting_Node1 -- No --> E_77ComprehensiveMerlinMessageFormatting
File: GCX016E.cbl
GIVEN: Cargo processing requires Merlin notification
WHEN: Merlin message formatting is initiated
THEN: Include disposition code messages unless manual/auto release, add car ID, waybill, US CCN, date/time, special comments up to 3 lines, K1 comments up to 4 lines, and quantity impact information
File: GCX016E.cbl
GIVEN: K1 segment contains CP Rail identifiers
WHEN: K1 segment contains 'DIRECTOR OF CUSTOMS, CP RAIL' or 'CANADIAN PACIFIC LIMITED' or 'CANADIAN PACIFIC RAILWAY CO'
THEN: Create broker bond creation message for CP Rail
βœ“ Consolidated Acceptance Criteria
  • Integration is initiated and equipment type is valid (containers, trailers, chassis, etc.) and status is not PTT/PTT-EX for held/partial held cargos → map cargo status to integration system status descriptions and process only HOLD, PTT, PTT-EX, or RELEASE statuses
  • Release status verification is performed → verify full release before setting 'RELEASE' status in integration 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_80CargoStatusIntegration(["Start Step"]) E_80CargoStatusIntegration(["End Step"]) N_80CargoStatusIntegration_Node0{"Integration is initiated and
equipment type is valid containers,
trailers, chassis, etc. and status
is not PTTPTT-EX for heldpartial
held cargos"}:::decision N_80CargoStatusIntegration_Node0_action["Map cargo status to integration
system status descriptions and
process only HOLD, PTT, PTT-EX, or
RELEASE statuses"]:::main N_80CargoStatusIntegration_Node0 -- Yes --> N_80CargoStatusIntegration_Node0_action N_80CargoStatusIntegration_Node0_action --> E_80CargoStatusIntegration S_80CargoStatusIntegration --> N_80CargoStatusIntegration_Node0 N_80CargoStatusIntegration_Node1{"Release status verification is
performed"}:::decision N_80CargoStatusIntegration_Node1_action["Verify full release before setting
RELEASE status in integration system"]:::main N_80CargoStatusIntegration_Node1 -- Yes --> N_80CargoStatusIntegration_Node1_action N_80CargoStatusIntegration_Node1_action --> E_80CargoStatusIntegration N_80CargoStatusIntegration_Node0 -- No --> N_80CargoStatusIntegration_Node1 N_80CargoStatusIntegration_Node1 -- No --> E_80CargoStatusIntegration
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo status has been determined and requires external integration
WHEN:
  • Integration is initiated
  • Equipment type is valid (containers, trailers, chassis, etc.) and status is not ptt/ptt-ex for held/partial held cargos
THEN:
  • Map cargo status to integration system status descriptions
  • Process only hold, ptt, ptt-ex, or release statuses
File: GCX016E.cbl
GIVEN: Process type is 4E and cargo status is release
WHEN: Release status verification is performed
THEN: Verify full release before setting 'RELEASE' status in integration system
βœ“ Consolidated Acceptance Criteria
  • Email notification is required and freight forwarder has internet capability → route email to freight forwarder email address, otherwise route to default Merlin ID
  • Email failure is detected → resend email to backup recipients (AEI9999, OM01247)
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_85CIHHoldEmailNotification(["Start Step"]) E_85CIHHoldEmailNotification(["End Step"]) N_85CIHHoldEmailNotification_Node0{"Email notification is required and
freight forwarder has internet
capability"}:::decision N_85CIHHoldEmailNotification_Node0_action["Route email to freight forwarder
email address, otherwise route to
default Merlin ID"]:::main N_85CIHHoldEmailNotification_Node0 -- Yes --> N_85CIHHoldEmailNotification_Node0_action N_85CIHHoldEmailNotification_Node0_action --> E_85CIHHoldEmailNotification S_85CIHHoldEmailNotification --> N_85CIHHoldEmailNotification_Node0 N_85CIHHoldEmailNotification_Node1{"Email failure is detected"}:::decision N_85CIHHoldEmailNotification_Node1_action["Resend email to backup recipients
AEI9999, OM01247"]:::main N_85CIHHoldEmailNotification_Node1 -- Yes --> N_85CIHHoldEmailNotification_Node1_action N_85CIHHoldEmailNotification_Node1_action --> E_85CIHHoldEmailNotification N_85CIHHoldEmailNotification_Node0 -- No --> N_85CIHHoldEmailNotification_Node1 N_85CIHHoldEmailNotification_Node1 -- No --> E_85CIHHoldEmailNotification
File: GCX016E.cbl
GIVEN: Disposition code is freight forwarder type
WHEN:
  • Email notification is required
  • Freight forwarder has internet capability
THEN: Route email to freight forwarder email address, otherwise route to default Merlin ID
File: GCX016E.cbl
GIVEN: Email notification fails to primary recipients
WHEN: Email failure is detected
THEN: Resend email to backup recipients (AEI9999, OM01247)
βœ“ Consolidated Acceptance Criteria
  • Message type is error message → route to 'IN' destination
  • Info message routing is performed → route to 'IN' plus SD segment Merlin IDs
  • Release message routing is performed → route to SD segment Merlin IDs only
  • Unrelease message routing is performed → route to OM01247 plus SD cancel Merlin IDs
  • Export message routing is performed → route based on equipment type classification
  • Merlin ID validation fails → reroute to OM01247 with 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_88MerlinMessageDistribution(["Start Step"]) E_88MerlinMessageDistribution(["End Step"]) N_88MerlinMessageDistribution_Node0{"Message type is error message"}:::decision N_88MerlinMessageDistribution_Node0_action["Route to IN destination"]:::exclusion N_88MerlinMessageDistribution_Node0 -- Yes -->|Alternative| N_88MerlinMessageDistribution_Node0_action N_88MerlinMessageDistribution_Node0_action --> E_88MerlinMessageDistribution S_88MerlinMessageDistribution --> N_88MerlinMessageDistribution_Node0 N_88MerlinMessageDistribution_Node1{"Info message routing is performed"}:::decision N_88MerlinMessageDistribution_Node1_action["Route to IN plus SD segment Merlin
IDs"]:::main N_88MerlinMessageDistribution_Node1 -- Yes --> N_88MerlinMessageDistribution_Node1_action N_88MerlinMessageDistribution_Node1_action --> E_88MerlinMessageDistribution N_88MerlinMessageDistribution_Node0 -- No --> N_88MerlinMessageDistribution_Node1 N_88MerlinMessageDistribution_Node2{"Release message routing is
performed"}:::decision N_88MerlinMessageDistribution_Node2_action["Route to SD segment Merlin IDs only"]:::main N_88MerlinMessageDistribution_Node2 -- Yes --> N_88MerlinMessageDistribution_Node2_action N_88MerlinMessageDistribution_Node2_action --> E_88MerlinMessageDistribution N_88MerlinMessageDistribution_Node1 -- No --> N_88MerlinMessageDistribution_Node2 N_88MerlinMessageDistribution_Node3{"Unrelease message routing is
performed"}:::decision N_88MerlinMessageDistribution_Node3_action["Route to OM01247 plus SD cancel
Merlin IDs"]:::main N_88MerlinMessageDistribution_Node3 -- Yes --> N_88MerlinMessageDistribution_Node3_action N_88MerlinMessageDistribution_Node3_action --> E_88MerlinMessageDistribution N_88MerlinMessageDistribution_Node2 -- No --> N_88MerlinMessageDistribution_Node3 N_88MerlinMessageDistribution_Node4{"Export message routing is performed"}:::decision N_88MerlinMessageDistribution_Node4_action["Route based on equipment type
classification"]:::main N_88MerlinMessageDistribution_Node4 -- Yes --> N_88MerlinMessageDistribution_Node4_action N_88MerlinMessageDistribution_Node4_action --> E_88MerlinMessageDistribution N_88MerlinMessageDistribution_Node3 -- No --> N_88MerlinMessageDistribution_Node4 N_88MerlinMessageDistribution_Node5{"Merlin ID validation fails"}:::decision N_88MerlinMessageDistribution_Node5_action["Reroute to OM01247 with error
notification"]:::main N_88MerlinMessageDistribution_Node5 -- Yes --> N_88MerlinMessageDistribution_Node5_action N_88MerlinMessageDistribution_Node5_action --> E_88MerlinMessageDistribution N_88MerlinMessageDistribution_Node4 -- No --> N_88MerlinMessageDistribution_Node5 N_88MerlinMessageDistribution_Node5 -- No --> E_88MerlinMessageDistribution
File: GCX016E.cbl
GIVEN: Merlin message is ready for distribution
WHEN: Message type is error message
THEN: Route to 'IN' destination
File: GCX016E.cbl
GIVEN: Merlin message is informational type
WHEN: Info message routing is performed
THEN: Route to 'IN' plus SD segment Merlin IDs
File: GCX016E.cbl
GIVEN: Merlin message is release type
WHEN: Release message routing is performed
THEN: Route to SD segment Merlin IDs only
File: GCX016E.cbl
GIVEN: Merlin message is unrelease type
WHEN: Unrelease message routing is performed
THEN: Route to OM01247 plus SD cancel Merlin IDs
File: GCX016E.cbl
GIVEN: Merlin message is export type
WHEN: Export message routing is performed
THEN: Route based on equipment type classification
File: GCX016E.cbl
GIVEN: Primary Merlin ID is invalid
WHEN: Merlin ID validation fails
THEN: Reroute to OM01247 with error notification
βœ“ Consolidated Acceptance Criteria
  • Message ID is GCW016 → process messages directly varying WS-LINE from 1 until max entries or end 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_91MessageArrayInitialization(["Start Step"]) E_91MessageArrayInitialization(["End Step"]) N_91MessageArrayInitialization_Node0{"Message ID is GCW016"}:::decision N_91MessageArrayInitialization_Node0_action["Process messages directly varying
WS-LINE from 1 until max entries or
end found"]:::main N_91MessageArrayInitialization_Node0 -- Yes --> N_91MessageArrayInitialization_Node0_action N_91MessageArrayInitialization_Node0_action --> E_91MessageArrayInitialization S_91MessageArrayInitialization --> N_91MessageArrayInitialization_Node0 N_91MessageArrayInitialization_Node0 -- No --> E_91MessageArrayInitialization
File: GCX016E.cbl
GIVEN: Valid messages are available for processing
WHEN: Message ID is GCW016
THEN: Process messages directly varying WS-LINE from 1 until max entries or end found
βœ“ Consolidated Acceptance Criteria
  • VID segments are present for equipment-specific processing → process associated VID segments for equipment-specific 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_105EquipmentHoldProcessingbyVIDSegment(["Start Step"]) E_105EquipmentHoldProcessingbyVIDSegment(["End Step"]) N_105EquipmentHoldProcessingbyVIDSegment_Node0{"VID segments are present for
equipment-specific processing"}:::decision N_105EquipmentHoldProcessingbyVIDSegment_Node0_action["Process associated VID segments for
equipment-specific holds"]:::main N_105EquipmentHoldProcessingbyVIDSegment_Node0 -- Yes --> N_105EquipmentHoldProcessingbyVIDSegment_Node0_action N_105EquipmentHoldProcessingbyVIDSegment_Node0_action --> E_105EquipmentHoldProcessingbyVIDSegment S_105EquipmentHoldProcessingbyVIDSegment --> N_105EquipmentHoldProcessingbyVIDSegment_Node0 N_105EquipmentHoldProcessingbyVIDSegment_Node0 -- No --> E_105EquipmentHoldProcessingbyVIDSegment
File: GCX016E.cbl
GIVEN: Event code is HMI or SEI
WHEN: VID segments are present for equipment-specific processing
THEN: Process associated VID segments for equipment-specific holds
βœ“ Consolidated Acceptance Criteria
  • VID segments are present for equipment-specific processing → process associated VID segments for equipment-specific 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_106EquipmentReleaseProcessingbyVIDSegment(["Start Step"]) E_106EquipmentReleaseProcessingbyVIDSegment(["End Step"]) N_106EquipmentReleaseProcessingbyVIDSegment_Node0{"VID segments are present for
equipment-specific processing"}:::decision N_106EquipmentReleaseProcessingbyVIDSegment_Node0_action["Process associated VID segments for
equipment-specific releases"]:::main N_106EquipmentReleaseProcessingbyVIDSegment_Node0 -- Yes --> N_106EquipmentReleaseProcessingbyVIDSegment_Node0_action N_106EquipmentReleaseProcessingbyVIDSegment_Node0_action --> E_106EquipmentReleaseProcessingbyVIDSegment S_106EquipmentReleaseProcessingbyVIDSegment --> N_106EquipmentReleaseProcessingbyVIDSegment_Node0 N_106EquipmentReleaseProcessingbyVIDSegment_Node0 -- No --> E_106EquipmentReleaseProcessingbyVIDSegment
File: GCX016E.cbl
GIVEN: Event code is HRE or SER
WHEN: VID segments are present for equipment-specific processing
THEN: Process associated VID segments for equipment-specific releases
βœ“ Consolidated Acceptance Criteria
  • The system performs a database lookup using the bond number as search criteria → all cargo records matching the bond number are identified 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_126CargoDatabaseLookupbyBondNumber(["Start Step"]) E_126CargoDatabaseLookupbyBondNumber(["End Step"]) N_126CargoDatabaseLookupbyBondNumber_Node0{"The system performs a database
lookup using the bond number as
search criteria"}:::decision N_126CargoDatabaseLookupbyBondNumber_Node0_action["All cargo records matching the bond
number are identified and made
available for processing"]:::main N_126CargoDatabaseLookupbyBondNumber_Node0 -- Yes --> N_126CargoDatabaseLookupbyBondNumber_Node0_action N_126CargoDatabaseLookupbyBondNumber_Node0_action --> E_126CargoDatabaseLookupbyBondNumber S_126CargoDatabaseLookupbyBondNumber --> N_126CargoDatabaseLookupbyBondNumber_Node0 N_126CargoDatabaseLookupbyBondNumber_Node0 -- No --> E_126CargoDatabaseLookupbyBondNumber
File: GCX016E.cbl
GIVEN: A valid customs bond number has been extracted from the X4 segment
WHEN: The system performs a database lookup using the bond number as search criteria
THEN:
  • All cargo records matching the bond number are identified
  • Made available for processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo for in-bond validation → the entry number is validated for proper format and business rules 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_132InBondEntryNumberValidation(["Start Step"]) E_132InBondEntryNumberValidation(["End Step"]) N_132InBondEntryNumberValidation_Node0{"The system processes the cargo for
in-bond validation"}:::decision N_132InBondEntryNumberValidation_Node0_action["The entry number is validated for
proper format and business rules
compliance"]:::main N_132InBondEntryNumberValidation_Node0 -- Yes --> N_132InBondEntryNumberValidation_Node0_action N_132InBondEntryNumberValidation_Node0_action --> E_132InBondEntryNumberValidation S_132InBondEntryNumberValidation --> N_132InBondEntryNumberValidation_Node0 N_132InBondEntryNumberValidation_Node0 -- No --> E_132InBondEntryNumberValidation
File: GCX016E.cbl
GIVEN: A cargo record contains an in-bond entry number
WHEN: The system processes the cargo for in-bond validation
THEN:
  • The entry number is validated for proper format
  • Business rules compliance
βœ“ Consolidated Acceptance Criteria
  • The system processes the in-bond flag setting → master in-bond flags are set according to entry type 61 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_134MasterInBondFlagSettingforCode61(["Start Step"]) E_134MasterInBondFlagSettingforCode61(["End Step"]) N_134MasterInBondFlagSettingforCode61_Node0{"The system processes the in-bond
flag setting"}:::decision N_134MasterInBondFlagSettingforCode61_Node0_action["Master in-bond flags are set
according to entry type 61 business
rules"]:::main N_134MasterInBondFlagSettingforCode61_Node0 -- Yes --> N_134MasterInBondFlagSettingforCode61_Node0_action N_134MasterInBondFlagSettingforCode61_Node0_action --> E_134MasterInBondFlagSettingforCode61 S_134MasterInBondFlagSettingforCode61 --> N_134MasterInBondFlagSettingforCode61_Node0 N_134MasterInBondFlagSettingforCode61_Node0 -- No --> E_134MasterInBondFlagSettingforCode61
File: GCX016E.cbl
GIVEN: The entry type code is determined to be 61
WHEN: The system processes the in-bond flag setting
THEN: Master in-bond flags are set according to entry type 61 business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the in-bond flag setting → master in-bond flags are set according to entry type 62 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_134MasterInBondFlagSettingforCode62(["Start Step"]) E_134MasterInBondFlagSettingforCode62(["End Step"]) N_134MasterInBondFlagSettingforCode62_Node0{"The system processes the in-bond
flag setting"}:::decision N_134MasterInBondFlagSettingforCode62_Node0_action["Master in-bond flags are set
according to entry type 62 business
rules"]:::main N_134MasterInBondFlagSettingforCode62_Node0 -- Yes --> N_134MasterInBondFlagSettingforCode62_Node0_action N_134MasterInBondFlagSettingforCode62_Node0_action --> E_134MasterInBondFlagSettingforCode62 S_134MasterInBondFlagSettingforCode62 --> N_134MasterInBondFlagSettingforCode62_Node0 N_134MasterInBondFlagSettingforCode62_Node0 -- No --> E_134MasterInBondFlagSettingforCode62
File: GCX016E.cbl
GIVEN: The entry type code is determined to be 62
WHEN: The system processes the in-bond flag setting
THEN: Master in-bond flags are set according to entry type 62 business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the in-bond flag setting → master in-bond flags are set according to entry type 63 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_134MasterInBondFlagSettingforCode63(["Start Step"]) E_134MasterInBondFlagSettingforCode63(["End Step"]) N_134MasterInBondFlagSettingforCode63_Node0{"The system processes the in-bond
flag setting"}:::decision N_134MasterInBondFlagSettingforCode63_Node0_action["Master in-bond flags are set
according to entry type 63 business
rules"]:::main N_134MasterInBondFlagSettingforCode63_Node0 -- Yes --> N_134MasterInBondFlagSettingforCode63_Node0_action N_134MasterInBondFlagSettingforCode63_Node0_action --> E_134MasterInBondFlagSettingforCode63 S_134MasterInBondFlagSettingforCode63 --> N_134MasterInBondFlagSettingforCode63_Node0 N_134MasterInBondFlagSettingforCode63_Node0 -- No --> E_134MasterInBondFlagSettingforCode63
File: GCX016E.cbl
GIVEN: The entry type code is determined to be 63
WHEN: The system processes the in-bond flag setting
THEN: Master in-bond flags are set according to entry type 63 business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the in-bond flag setting → master in-bond flags are set according to entry type 69 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_134MasterInBondFlagSettingforCode69(["Start Step"]) E_134MasterInBondFlagSettingforCode69(["End Step"]) N_134MasterInBondFlagSettingforCode69_Node0{"The system processes the in-bond
flag setting"}:::decision N_134MasterInBondFlagSettingforCode69_Node0_action["Master in-bond flags are set
according to entry type 69 business
rules"]:::main N_134MasterInBondFlagSettingforCode69_Node0 -- Yes --> N_134MasterInBondFlagSettingforCode69_Node0_action N_134MasterInBondFlagSettingforCode69_Node0_action --> E_134MasterInBondFlagSettingforCode69 S_134MasterInBondFlagSettingforCode69 --> N_134MasterInBondFlagSettingforCode69_Node0 N_134MasterInBondFlagSettingforCode69_Node0 -- No --> E_134MasterInBondFlagSettingforCode69
File: GCX016E.cbl
GIVEN: The entry type code is determined to be 69
WHEN: The system processes the in-bond flag setting
THEN: Master in-bond flags are set according to entry type 69 business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the code insertion into the S09A status array → insert the new disposition code with its associated data (entry number, quantity, date/time) into the next available array position
  • The system completes the array modification operations → reorganize the status array sequence numbers to maintain consecutive numbering and update the total count of active status codes
  • The system completes all array operations → update the status array counter to reflect the current number of active 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_157StatusArrayManagementandProcessing(["Start Step"]) E_157StatusArrayManagementandProcessing(["End Step"]) N_157StatusArrayManagementandProcessing_Node0{"The system processes the code
insertion into the S09A status array"}:::decision N_157StatusArrayManagementandProcessing_Node0_action["Insert the new disposition code
with its associated data entry
number, quantity, datetime into the
next available array position"]:::main N_157StatusArrayManagementandProcessing_Node0 -- Yes --> N_157StatusArrayManagementandProcessing_Node0_action N_157StatusArrayManagementandProcessing_Node0_action --> E_157StatusArrayManagementandProcessing S_157StatusArrayManagementandProcessing --> N_157StatusArrayManagementandProcessing_Node0 N_157StatusArrayManagementandProcessing_Node1{"The system completes the array
modification operations"}:::decision N_157StatusArrayManagementandProcessing_Node1_action["Reorganize the status array
sequence numbers to maintain
consecutive numbering and update the
total count of active status codes"]:::main N_157StatusArrayManagementandProcessing_Node1 -- Yes --> N_157StatusArrayManagementandProcessing_Node1_action N_157StatusArrayManagementandProcessing_Node1_action --> E_157StatusArrayManagementandProcessing N_157StatusArrayManagementandProcessing_Node0 -- No --> N_157StatusArrayManagementandProcessing_Node1 N_157StatusArrayManagementandProcessing_Node2{"The system completes all array
operations"}:::decision N_157StatusArrayManagementandProcessing_Node2_action["Update the status array counter to
reflect the current number of active
disposition codes in the array"]:::main N_157StatusArrayManagementandProcessing_Node2 -- Yes --> N_157StatusArrayManagementandProcessing_Node2_action N_157StatusArrayManagementandProcessing_Node2_action --> E_157StatusArrayManagementandProcessing N_157StatusArrayManagementandProcessing_Node1 -- No --> N_157StatusArrayManagementandProcessing_Node2 N_157StatusArrayManagementandProcessing_Node2 -- No --> E_157StatusArrayManagementandProcessing
File: GCX016E.cbl
GIVEN: A validated disposition code needs to be added to the cargo status array
WHEN: The system processes the code insertion into the S09A status array
THEN: Insert the new disposition code with its associated data (entry number, quantity, date/time) into the next available array position
File: GCX016E.cbl
GIVEN: Disposition codes have been added or removed from the status array
WHEN: The system completes the array modification operations
THEN:
  • Reorganize the status array sequence numbers to maintain consecutive numbering
  • Update the total count of active status codes
File: GCX016E.cbl
GIVEN: The status array has been modified with additions or removals of disposition codes
WHEN: The system completes all array operations
THEN: Update the status array counter to reflect the current number of active disposition codes in the array
βœ“ Consolidated Acceptance Criteria
  • Foreign cargo creation is required → create foreign cargo record with appropriate international 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_175NewForeignCargoRecordCreation(["Start Step"]) E_175NewForeignCargoRecordCreation(["End Step"]) N_175NewForeignCargoRecordCreation_Node0{"Foreign cargo creation is required"}:::decision N_175NewForeignCargoRecordCreation_Node0_action["Create foreign cargo record with
appropriate international processing
flags"]:::main N_175NewForeignCargoRecordCreation_Node0 -- Yes --> N_175NewForeignCargoRecordCreation_Node0_action N_175NewForeignCargoRecordCreation_Node0_action --> E_175NewForeignCargoRecordCreation S_175NewForeignCargoRecordCreation --> N_175NewForeignCargoRecordCreation_Node0 N_175NewForeignCargoRecordCreation_Node0 -- No --> E_175NewForeignCargoRecordCreation
File: GCX016E.cbl
GIVEN: Cargo is identified as foreign shipment
WHEN: Foreign cargo creation is required
THEN: Create foreign cargo record with appropriate international processing flags
βœ“ Consolidated Acceptance Criteria
  • Foreign manifest building is initiated → build foreign manifest structure from M10 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_176ForeignManifestBuildingfromM10Segments(["Start Step"]) E_176ForeignManifestBuildingfromM10Segments(["End Step"]) N_176ForeignManifestBuildingfromM10Segments_Node0{"Foreign manifest building is
initiated"}:::decision N_176ForeignManifestBuildingfromM10Segments_Node0_action["Build foreign manifest structure
from M10 segment data"]:::main N_176ForeignManifestBuildingfromM10Segments_Node0 -- Yes --> N_176ForeignManifestBuildingfromM10Segments_Node0_action N_176ForeignManifestBuildingfromM10Segments_Node0_action --> E_176ForeignManifestBuildingfromM10Segments S_176ForeignManifestBuildingfromM10Segments --> N_176ForeignManifestBuildingfromM10Segments_Node0 N_176ForeignManifestBuildingfromM10Segments_Node0 -- No --> E_176ForeignManifestBuildingfromM10Segments
File: GCX016E.cbl
GIVEN: M10 segments contain foreign manifest information
WHEN: Foreign manifest building is initiated
THEN: Build foreign manifest structure from M10 segment data
βœ“ Consolidated Acceptance Criteria
  • Completion code is not OK and reason code is 2033 → set message not available flag
  • Backout count is not zero → skip message and set skip message flag
  • Backout count is zero → set good message found flag 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_MessagesAvailable(["Start Step"]) E_MessagesAvailable(["End Step"]) N_MessagesAvailable_Node0{"Completion code is not OK and
reason code is 2033"}:::decision N_MessagesAvailable_Node0_action["Set message not available flag"]:::main N_MessagesAvailable_Node0 -- Yes --> N_MessagesAvailable_Node0_action N_MessagesAvailable_Node0_action --> E_MessagesAvailable S_MessagesAvailable --> N_MessagesAvailable_Node0 N_MessagesAvailable_Node1{"Backout count is not zero"}:::decision N_MessagesAvailable_Node1_action["Skip message and set skip message
flag"]:::main N_MessagesAvailable_Node1 -- Yes --> N_MessagesAvailable_Node1_action N_MessagesAvailable_Node1_action --> E_MessagesAvailable N_MessagesAvailable_Node0 -- No --> N_MessagesAvailable_Node1 N_MessagesAvailable_Node2{"Backout count is zero"}:::decision N_MessagesAvailable_Node2_action["Set good message found flag for
processing"]:::main N_MessagesAvailable_Node2 -- Yes --> N_MessagesAvailable_Node2_action N_MessagesAvailable_Node2_action --> E_MessagesAvailable N_MessagesAvailable_Node1 -- No --> N_MessagesAvailable_Node2 N_MessagesAvailable_Node2 -- No --> E_MessagesAvailable
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Messages have been retrieved from the queue with completion codes
WHEN:
  • Completion code is not ok
  • Reason code is 2033
THEN: Set message not available flag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Message completion is OK
WHEN: Backout count is not zero
THEN:
  • Skip message
  • Set skip message flag
File: GCX016E.cbl
GIVEN: Message completion is OK
WHEN: Backout count is zero
THEN: Set good message found flag for processing
βœ“ Consolidated Acceptance Criteria
  • Message contains train-related segments (M10 with vessel/train info) → route to train processing path
  • Message contains cargo-related segments (X4, N7) → route to cargo processing path
  • If the message context to determine processing type → the K1 segment is classified as either train message or cargo message for appropriate processing workflow
  • The system determines message type → the system classifies the message as ARRCANL (arrival cancellation) or other arrival type for proper routing
  • If the message type → the system routes to cargo message array initialization for cargo messages or train message array initialization for train 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_MessageType(["Start Step"]) E_MessageType(["End Step"]) N_MessageType_Node0{"Message contains train-related
segments M10 with vesseltrain info"}:::decision N_MessageType_Node0_action["Route to train processing path"]:::main N_MessageType_Node0 -- Yes --> N_MessageType_Node0_action N_MessageType_Node0_action --> E_MessageType S_MessageType --> N_MessageType_Node0 N_MessageType_Node1{"Message contains cargo-related
segments X4, N7"}:::decision N_MessageType_Node1_action["Route to cargo processing path"]:::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
context to determine processing type"}:::decision N_MessageType_Node2_action["The K1 segment is classified as
either train message or cargo
message for appropriate processing
workflow"]:::main N_MessageType_Node2 -- Yes --> N_MessageType_Node2_action N_MessageType_Node2_action --> E_MessageType N_MessageType_Node1 -- No --> N_MessageType_Node2 N_MessageType_Node3{"The system determines message type"}:::decision N_MessageType_Node3_action["The system classifies the message
as ARRCANL arrival cancellation or
other arrival type for proper
routing"]:::main N_MessageType_Node3 -- Yes --> N_MessageType_Node3_action N_MessageType_Node3_action --> E_MessageType N_MessageType_Node2 -- No --> N_MessageType_Node3 N_MessageType_Node4{"The system evaluates the message
type"}:::decision N_MessageType_Node4_action["The system routes to cargo message
array initialization for cargo
messages or train message array
initialization for train messages"]:::main N_MessageType_Node4 -- Yes --> N_MessageType_Node4_action N_MessageType_Node4_action --> E_MessageType N_MessageType_Node3 -- No --> N_MessageType_Node4 N_MessageType_Node4 -- No --> E_MessageType
File: GCX016E.cbl
GIVEN: Message array has been initialized
WHEN: Message contains train-related segments (M10 with vessel/train info)
THEN: Route to train processing path
File: GCX016E.cbl
GIVEN: Message array has been initialized
WHEN: Message contains cargo-related segments (X4, N7)
THEN: Route to cargo processing path
File: GCX016E.cbl
GIVEN: A K1 segment is received for processing
WHEN: The system evaluates the message context to determine processing type
THEN: The K1 segment is classified as either train message or cargo message for appropriate processing workflow
File: GCX016E.cbl
GIVEN: An arrival notification is ready for distribution
WHEN: The system determines message type
THEN: The system classifies the message as ARRCANL (arrival cancellation) or other arrival type for proper routing
File: GCX016E.cbl
GIVEN: A message needs to be processed for array initialization
WHEN: The system evaluates the message type
THEN: The system routes to cargo message array initialization for cargo messages or train message array initialization for train messages
βœ“ Consolidated Acceptance Criteria
  • Processing type is by bond number → route to bond-based cargo processing
  • Processing type is by car ID and waybill → route to car/waybill-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_CargoLookupMethod(["Start Step"]) E_CargoLookupMethod(["End Step"]) N_CargoLookupMethod_Node0{"Processing type is by bond number"}:::decision N_CargoLookupMethod_Node0_action["Route to bond-based cargo
processing"]:::main N_CargoLookupMethod_Node0 -- Yes --> N_CargoLookupMethod_Node0_action N_CargoLookupMethod_Node0_action --> E_CargoLookupMethod S_CargoLookupMethod --> N_CargoLookupMethod_Node0 N_CargoLookupMethod_Node1{"Processing type is by car ID and
waybill"}:::decision N_CargoLookupMethod_Node1_action["Route to carwaybill-based cargo
processing"]:::main N_CargoLookupMethod_Node1 -- Yes --> N_CargoLookupMethod_Node1_action N_CargoLookupMethod_Node1_action --> E_CargoLookupMethod N_CargoLookupMethod_Node0 -- No --> N_CargoLookupMethod_Node1 N_CargoLookupMethod_Node1 -- No --> E_CargoLookupMethod
File: GCX016E.cbl
GIVEN: X4 segment contains disposition code and processing parameters
WHEN: Processing type is by bond number
THEN: Route to bond-based cargo processing
File: GCX016E.cbl
GIVEN: X4 segment contains disposition code and processing parameters
WHEN:
  • Processing type is by car id
  • Waybill
THEN: Route to car/waybill-based cargo processing
βœ“ Consolidated Acceptance Criteria
  • The message ID is GCW016 → skip MQ processing and use internal message structure 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_CheckMessageTypeforGCW016(["Start Step"]) E_CheckMessageTypeforGCW016(["End Step"]) N_CheckMessageTypeforGCW016_Node0{"The message ID is GCW016"}:::decision N_CheckMessageTypeforGCW016_Node0_action["Skip MQ processing and use internal
message structure directly"]:::main N_CheckMessageTypeforGCW016_Node0 -- Yes --> N_CheckMessageTypeforGCW016_Node0_action N_CheckMessageTypeforGCW016_Node0_action --> E_CheckMessageTypeforGCW016 S_CheckMessageTypeforGCW016 --> N_CheckMessageTypeforGCW016_Node0 N_CheckMessageTypeforGCW016_Node0 -- No --> E_CheckMessageTypeforGCW016
File: GCX016E.cbl
GIVEN: A message is being processed for customs EDI transactions
WHEN: The message ID is GCW016
THEN:
  • Skip mq processing
  • Use internal message structure directly
βœ“ Consolidated Acceptance Criteria
  • MQ connection is initiated → connect to MQ system and prepare for queue 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_EstablishMQConnection(["Start Step"]) E_EstablishMQConnection(["End Step"]) N_EstablishMQConnection_Node0{"MQ connection is initiated"}:::decision N_EstablishMQConnection_Node0_action["Connect to MQ system and prepare
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_Node0 -- No --> E_EstablishMQConnection
File: GCX016E.cbl
GIVEN: The system needs to retrieve customs messages from MQ
WHEN: MQ connection is initiated
THEN:
  • Connect to mq system
  • Prepare for queue operations
βœ“ Consolidated Acceptance Criteria
  • Queue open operation is requested for GC350.EXP.INPUT → open the queue for reading customs export messages
  • System attempts to open GC350.EXP.INPUT queue → the export input queue is opened 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_OpenGC350EXPINPUTQueue(["Start Step"]) E_OpenGC350EXPINPUTQueue(["End Step"]) N_OpenGC350EXPINPUTQueue_Node0{"Queue open operation is requested
for GC350.EXP.INPUT"}:::decision N_OpenGC350EXPINPUTQueue_Node0_action["Open the queue for reading customs
export messages"]:::main N_OpenGC350EXPINPUTQueue_Node0 -- Yes --> N_OpenGC350EXPINPUTQueue_Node0_action N_OpenGC350EXPINPUTQueue_Node0_action --> E_OpenGC350EXPINPUTQueue S_OpenGC350EXPINPUTQueue --> N_OpenGC350EXPINPUTQueue_Node0 N_OpenGC350EXPINPUTQueue_Node1{"System attempts to open
GC350.EXP.INPUT queue"}:::decision N_OpenGC350EXPINPUTQueue_Node1_action["The export input queue is opened
for message processing"]:::main N_OpenGC350EXPINPUTQueue_Node1 -- Yes --> N_OpenGC350EXPINPUTQueue_Node1_action N_OpenGC350EXPINPUTQueue_Node1_action --> E_OpenGC350EXPINPUTQueue N_OpenGC350EXPINPUTQueue_Node0 -- No --> N_OpenGC350EXPINPUTQueue_Node1 N_OpenGC350EXPINPUTQueue_Node1 -- No --> E_OpenGC350EXPINPUTQueue
File: GCX016E.cbl
GIVEN: MQ connection is established
WHEN: Queue open operation is requested for GC350.EXP.INPUT
THEN: Open the queue for reading customs export messages
File: GCX016E.cbl
GIVEN: MQ Manager connection is successfully established
WHEN: System attempts to open GC350.EXP.INPUT queue
THEN: The export input queue is opened for message processing
βœ“ Consolidated Acceptance Criteria
  • Queue open operation completes → if queue opens successfully, proceed to message loading; otherwise set message not available
  • Queue opening attempt completes → system determines if queue opening 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_QueueOpenSuccessful(["Start Step"]) E_QueueOpenSuccessful(["End Step"]) N_QueueOpenSuccessful_Node0{"Queue open operation completes"}:::decision N_QueueOpenSuccessful_Node0_action["If queue opens successfully,
proceed to message loading otherwise
set message not available"]:::main N_QueueOpenSuccessful_Node0 -- Yes --> N_QueueOpenSuccessful_Node0_action N_QueueOpenSuccessful_Node0_action --> E_QueueOpenSuccessful S_QueueOpenSuccessful --> N_QueueOpenSuccessful_Node0 N_QueueOpenSuccessful_Node1{"Queue opening attempt completes"}:::decision N_QueueOpenSuccessful_Node1_action["System determines if queue opening
was successful or 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_Node1 -- No --> E_QueueOpenSuccessful
File: GCX016E.cbl
GIVEN: An attempt to open GC350.EXP.INPUT queue has been made
WHEN: Queue open operation completes
THEN: If queue opens successfully, proceed to message loading; otherwise set message not available
File: GCX016E.cbl
GIVEN: System has attempted to open GC350.EXP.INPUT queue
WHEN: Queue opening attempt completes
THEN: System determines if queue opening was successful or failed
βœ“ Consolidated Acceptance Criteria
  • MQGET operation is executed → retrieve the next available customs 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_ExecuteMQGETtoRetrieveMessage(["Start Step"]) E_ExecuteMQGETtoRetrieveMessage(["End Step"]) N_ExecuteMQGETtoRetrieveMessage_Node0{"MQGET operation is executed"}:::decision N_ExecuteMQGETtoRetrieveMessage_Node0_action["Retrieve the next available customs
message from the queue"]:::main N_ExecuteMQGETtoRetrieveMessage_Node0 -- Yes --> N_ExecuteMQGETtoRetrieveMessage_Node0_action N_ExecuteMQGETtoRetrieveMessage_Node0_action --> E_ExecuteMQGETtoRetrieveMessage S_ExecuteMQGETtoRetrieveMessage --> N_ExecuteMQGETtoRetrieveMessage_Node0 N_ExecuteMQGETtoRetrieveMessage_Node0 -- No --> E_ExecuteMQGETtoRetrieveMessage
File: GCX016E.cbl
GIVEN: The GC350.EXP.INPUT queue is open and accessible
WHEN: MQGET operation is executed
THEN: Retrieve the next available customs message from the queue
βœ“ Consolidated Acceptance Criteria
  • Message completion code is evaluated → if completion code is OK, message is available; if reason code 2033, no message available; otherwise message 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_MessageAvailable(["Start Step"]) E_MessageAvailable(["End Step"]) N_MessageAvailable_Node0{"Message completion code is
evaluated"}:::decision N_MessageAvailable_Node0_action["If completion code is OK, message
is available if reason code 2033, no
message available otherwise message
error occurred"]:::main N_MessageAvailable_Node0 -- Yes --> N_MessageAvailable_Node0_action N_MessageAvailable_Node0_action --> E_MessageAvailable S_MessageAvailable --> N_MessageAvailable_Node0 N_MessageAvailable_Node0 -- No --> E_MessageAvailable
File: GCX016E.cbl
GIVEN: MQGET operation has been executed on the customs queue
WHEN: Message completion code is evaluated
THEN: If completion code is OK, message is available; if reason code 2033, no message available; otherwise message error occurred
βœ“ Consolidated Acceptance Criteria
  • Message backout count is checked → if backout count is zero, message is good for processing; if backout count is not zero, skip 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_BackoutCountValid(["Start Step"]) E_BackoutCountValid(["End Step"]) N_BackoutCountValid_Node0{"Message backout count is checked"}:::decision N_BackoutCountValid_Node0_action["If backout count is zero, message
is good for processing if backout
count is not zero, skip the message"]:::main N_BackoutCountValid_Node0 -- Yes --> N_BackoutCountValid_Node0_action N_BackoutCountValid_Node0_action --> E_BackoutCountValid S_BackoutCountValid --> N_BackoutCountValid_Node0 N_BackoutCountValid_Node0 -- No --> E_BackoutCountValid
File: GCX016E.cbl
GIVEN: A customs message is available from the queue
WHEN: Message backout count is checked
THEN: If backout count is zero, message is good for processing; if backout count is not zero, skip the message
βœ“ Consolidated Acceptance Criteria
  • Message validation is complete → set good message flag to indicate message is ready for processing
  • Message classification is performed → set good message flag to indicate the message is ready 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_SetGoodMessageFlag(["Start Step"]) E_SetGoodMessageFlag(["End Step"]) N_SetGoodMessageFlag_Node0{"Message validation is complete"}:::decision N_SetGoodMessageFlag_Node0_action["Set good message flag to indicate
message is ready for processing"]:::main N_SetGoodMessageFlag_Node0 -- Yes --> N_SetGoodMessageFlag_Node0_action N_SetGoodMessageFlag_Node0_action --> E_SetGoodMessageFlag S_SetGoodMessageFlag --> N_SetGoodMessageFlag_Node0 N_SetGoodMessageFlag_Node1{"Message classification is performed"}:::decision N_SetGoodMessageFlag_Node1_action["Set good message flag to indicate
the message is ready for business
processing"]:::main N_SetGoodMessageFlag_Node1 -- Yes --> N_SetGoodMessageFlag_Node1_action N_SetGoodMessageFlag_Node1_action --> E_SetGoodMessageFlag N_SetGoodMessageFlag_Node0 -- No --> N_SetGoodMessageFlag_Node1 N_SetGoodMessageFlag_Node1 -- No --> E_SetGoodMessageFlag
File: GCX016E.cbl
GIVEN: A customs message is available and has valid backout count
WHEN: Message validation is complete
THEN: Set good message flag to indicate message is ready for processing
File: GCX016E.cbl
GIVEN: A message has been retrieved successfully and backout count is zero
WHEN: Message classification is performed
THEN: Set good message flag to indicate the message is ready for business processing
βœ“ Consolidated Acceptance Criteria
  • Message backout count validation fails → set skip message flag to bypass processing of this 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_SetSkipMessageFlag(["Start Step"]) E_SetSkipMessageFlag(["End Step"]) N_SetSkipMessageFlag_Node0{"Message backout count validation
fails"}:::decision N_SetSkipMessageFlag_Node0_action["Set skip message flag to bypass
processing of this message"]:::main N_SetSkipMessageFlag_Node0 -- Yes --> N_SetSkipMessageFlag_Node0_action N_SetSkipMessageFlag_Node0_action --> E_SetSkipMessageFlag S_SetSkipMessageFlag --> N_SetSkipMessageFlag_Node0 N_SetSkipMessageFlag_Node0 -- No --> E_SetSkipMessageFlag
File: GCX016E.cbl
GIVEN: A customs message is available but has invalid backout count
WHEN: Message backout count validation fails
THEN: Set skip message flag to bypass processing of this message
βœ“ Consolidated Acceptance Criteria
  • No message is available or queue open failed or message error occurred → set message not available flag to indicate no messages to process
  • The completion code indicates no message is available (reason code 2033) → set message not available flag to indicate queue is 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_SetMessageNotAvailableFlag(["Start Step"]) E_SetMessageNotAvailableFlag(["End Step"]) N_SetMessageNotAvailableFlag_Node0{"No message is available or queue
open failed or message error
occurred"}:::decision N_SetMessageNotAvailableFlag_Node0_action["Set message not available flag to
indicate no messages to process"]:::exclusion N_SetMessageNotAvailableFlag_Node0 -- Yes -->|Alternative| N_SetMessageNotAvailableFlag_Node0_action N_SetMessageNotAvailableFlag_Node0_action --> E_SetMessageNotAvailableFlag S_SetMessageNotAvailableFlag --> N_SetMessageNotAvailableFlag_Node0 N_SetMessageNotAvailableFlag_Node1{"The completion code indicates no
message is available reason code
2033"}:::decision N_SetMessageNotAvailableFlag_Node1_action["Set message not available flag to
indicate queue is empty"]:::main N_SetMessageNotAvailableFlag_Node1 -- Yes --> N_SetMessageNotAvailableFlag_Node1_action N_SetMessageNotAvailableFlag_Node1_action --> E_SetMessageNotAvailableFlag N_SetMessageNotAvailableFlag_Node0 -- No --> N_SetMessageNotAvailableFlag_Node1 N_SetMessageNotAvailableFlag_Node1 -- No --> E_SetMessageNotAvailableFlag
File: GCX016E.cbl
GIVEN: MQGET operation has been attempted on customs queue
WHEN: No message is available or queue open failed or message error occurred
THEN: Set message not available flag to indicate no messages to process
File: GCX016E.cbl
GIVEN: An MQGET operation is executed
WHEN: The completion code indicates no message is available (reason code 2033)
THEN: Set message not available flag to indicate queue is empty
βœ“ Consolidated Acceptance Criteria
  • Loading continuation is evaluated → if more messages needed and conditions allow, continue loading; otherwise complete message loading 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_ContinueLoading(["Start Step"]) E_ContinueLoading(["End Step"]) N_ContinueLoading_Node0{"Loading continuation is evaluated"}:::decision N_ContinueLoading_Node0_action["If more messages needed and
conditions allow, continue loading
otherwise complete message loading
process"]:::main N_ContinueLoading_Node0 -- Yes --> N_ContinueLoading_Node0_action N_ContinueLoading_Node0_action --> E_ContinueLoading S_ContinueLoading --> N_ContinueLoading_Node0 N_ContinueLoading_Node0 -- No --> E_ContinueLoading
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A message processing result has been determined (good, skip, or not available)
WHEN: Loading continuation is evaluated
THEN:
  • If more messages needed
  • Conditions allow, continue loading; otherwise complete message loading process
βœ“ Consolidated Acceptance Criteria
  • A message retrieval request is initiated → the system executes MQGET operation to retrieve the next available message from GC350.EXP.INPUT 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_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue(["Start Step"]) E_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue(["End Step"]) N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0{"A message retrieval request is
initiated"}:::decision N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0_action["The system executes MQGET operation
to retrieve the next available
message from GC350.EXP.INPUT queue"]:::main N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0 -- Yes --> N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0_action N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0_action --> E_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue S_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue --> N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0 N_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue_Node0 -- No --> E_ExecuteMQGETtoRetrieveMessagefromGC350EXPINPUTQueue
File: GCX016E.cbl
GIVEN: The system needs to process export messages
WHEN: A message retrieval request is initiated
THEN: The system executes MQGET operation to retrieve the next available message from GC350.EXP.INPUT queue
βœ“ Consolidated Acceptance Criteria
  • The MQ completion code is evaluated → if completion code indicates success, proceed to message validation; if no message available, set message not available flag; if other error, handle error 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_EvaluateMQCompletionCode(["Start Step"]) E_EvaluateMQCompletionCode(["End Step"]) N_EvaluateMQCompletionCode_Node0{"The MQ completion code is evaluated"}:::decision N_EvaluateMQCompletionCode_Node0_action["If completion code indicates
success, proceed to message
validation if no message available,
set message not available flag if
other error, handle error condition"]:::main N_EvaluateMQCompletionCode_Node0 -- Yes --> N_EvaluateMQCompletionCode_Node0_action N_EvaluateMQCompletionCode_Node0_action --> E_EvaluateMQCompletionCode S_EvaluateMQCompletionCode --> N_EvaluateMQCompletionCode_Node0 N_EvaluateMQCompletionCode_Node0 -- No --> E_EvaluateMQCompletionCode
File: GCX016E.cbl
GIVEN: An MQGET operation has been executed
WHEN: The MQ completion code is evaluated
THEN: If completion code indicates success, proceed to message validation; if no message available, set message not available flag; if other error, handle error condition
βœ“ Consolidated Acceptance Criteria
  • The message backout count is evaluated → if backout count is zero, mark as good message; if backout count is greater than zero, mark as skip message due to high backout 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_CheckMessageBackoutCount(["Start Step"]) E_CheckMessageBackoutCount(["End Step"]) N_CheckMessageBackoutCount_Node0{"The message backout count is
evaluated"}:::decision N_CheckMessageBackoutCount_Node0_action["If backout count is zero, mark as
good message if backout count is
greater than zero, mark as skip
message due to high backout count"]:::main N_CheckMessageBackoutCount_Node0 -- Yes --> N_CheckMessageBackoutCount_Node0_action N_CheckMessageBackoutCount_Node0_action --> E_CheckMessageBackoutCount S_CheckMessageBackoutCount --> N_CheckMessageBackoutCount_Node0 N_CheckMessageBackoutCount_Node0 -- No --> E_CheckMessageBackoutCount
File: GCX016E.cbl
GIVEN: A message has been successfully retrieved from the queue
WHEN: The message backout count is evaluated
THEN: If backout count is zero, mark as good message; if backout count is greater than zero, mark as skip message due to high backout count
βœ“ Consolidated Acceptance Criteria
  • Message classification is performed → set skip message flag to prevent processing of potentially problematic 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_SetSkipMessageFlagHighBackoutCount(["Start Step"]) E_SetSkipMessageFlagHighBackoutCount(["End Step"]) N_SetSkipMessageFlagHighBackoutCount_Node0{"Message classification is performed"}:::decision N_SetSkipMessageFlagHighBackoutCount_Node0_action["Set skip message flag to prevent
processing of potentially
problematic message"]:::main N_SetSkipMessageFlagHighBackoutCount_Node0 -- Yes --> N_SetSkipMessageFlagHighBackoutCount_Node0_action N_SetSkipMessageFlagHighBackoutCount_Node0_action --> E_SetSkipMessageFlagHighBackoutCount S_SetSkipMessageFlagHighBackoutCount --> N_SetSkipMessageFlagHighBackoutCount_Node0 N_SetSkipMessageFlagHighBackoutCount_Node0 -- No --> E_SetSkipMessageFlagHighBackoutCount
File: GCX016E.cbl
GIVEN: A message has been retrieved successfully but backout count is greater than zero
WHEN: Message classification is performed
THEN: Set skip message flag to prevent processing of potentially problematic message
βœ“ Consolidated Acceptance Criteria
  • The completion code indicates an error other than 'no message available' → handle the MQ error condition appropriately based on the specific error 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_HandleMQErrorCondition(["Start Step"]) E_HandleMQErrorCondition(["End Step"]) N_HandleMQErrorCondition_Node0{"The completion code indicates an
error other than no message
available"}:::decision N_HandleMQErrorCondition_Node0_action["Handle the MQ error condition
appropriately based on the specific
error type"]:::exclusion N_HandleMQErrorCondition_Node0 -- Yes -->|Alternative| N_HandleMQErrorCondition_Node0_action N_HandleMQErrorCondition_Node0_action --> E_HandleMQErrorCondition S_HandleMQErrorCondition --> N_HandleMQErrorCondition_Node0 N_HandleMQErrorCondition_Node0 -- No --> E_HandleMQErrorCondition
File: GCX016E.cbl
GIVEN: An MQGET operation is executed
WHEN: The completion code indicates an error other than 'no message available'
THEN: Handle the MQ error condition appropriately based on the specific error type
βœ“ Consolidated Acceptance Criteria
  • Processing decision is made → if good message, proceed to business processing; if skip message, continue to next message; if no message available, end message loading 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_MessageClassification(["Start Step"]) E_MessageClassification(["End Step"]) N_MessageClassification_Node0{"Processing decision is made"}:::decision N_MessageClassification_Node0_action["If good message, proceed to
business processing if skip message,
continue to next message if no
message available, end message
loading process"]:::main N_MessageClassification_Node0 -- Yes --> N_MessageClassification_Node0_action N_MessageClassification_Node0_action --> E_MessageClassification S_MessageClassification --> N_MessageClassification_Node0 N_MessageClassification_Node0 -- No --> E_MessageClassification
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A message has been classified as good, skip, or not available
WHEN: Processing decision is made
THEN: If good message, proceed to business processing; if skip message, continue to next message; if no message available, end message loading process
βœ“ Consolidated Acceptance Criteria
  • The vessel name starts with 'TRAIN' or 'DAY' → the system continues with train processing without additional validation
  • The system processes the M10 segment → the train ID is extracted from the vessel name for database lookup
  • The system processes the vessel name field → the train ID is extracted from the vessel name 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_ExtractTrainIDfromVesselName(["Start Step"]) E_ExtractTrainIDfromVesselName(["End Step"]) N_ExtractTrainIDfromVesselName_Node0{"The vessel name starts with TRAIN
or DAY"}:::decision N_ExtractTrainIDfromVesselName_Node0_action["The system continues with train
processing without additional
validation"]:::main N_ExtractTrainIDfromVesselName_Node0 -- Yes --> N_ExtractTrainIDfromVesselName_Node0_action N_ExtractTrainIDfromVesselName_Node0_action --> E_ExtractTrainIDfromVesselName S_ExtractTrainIDfromVesselName --> N_ExtractTrainIDfromVesselName_Node0 N_ExtractTrainIDfromVesselName_Node1{"The system processes the M10
segment"}:::decision N_ExtractTrainIDfromVesselName_Node1_action["The train ID is extracted from the
vessel name for database lookup"]:::main N_ExtractTrainIDfromVesselName_Node1 -- Yes --> N_ExtractTrainIDfromVesselName_Node1_action N_ExtractTrainIDfromVesselName_Node1_action --> E_ExtractTrainIDfromVesselName N_ExtractTrainIDfromVesselName_Node0 -- No --> N_ExtractTrainIDfromVesselName_Node1 N_ExtractTrainIDfromVesselName_Node2{"The system processes the vessel
name field"}:::decision N_ExtractTrainIDfromVesselName_Node2_action["The train ID is extracted from the
vessel name for validation"]:::main N_ExtractTrainIDfromVesselName_Node2 -- Yes --> N_ExtractTrainIDfromVesselName_Node2_action N_ExtractTrainIDfromVesselName_Node2_action --> E_ExtractTrainIDfromVesselName N_ExtractTrainIDfromVesselName_Node1 -- No --> N_ExtractTrainIDfromVesselName_Node2 N_ExtractTrainIDfromVesselName_Node2 -- No --> E_ExtractTrainIDfromVesselName
File: GCX016E.cbl
GIVEN: A vessel name is provided in the M10 segment
WHEN: The vessel name starts with 'TRAIN' or 'DAY'
THEN: The system continues with train processing without additional validation
File: GCX016E.cbl
GIVEN: An M10 segment contains a vessel name field
WHEN: The system processes the M10 segment
THEN: The train ID is extracted from the vessel name for database lookup
File: GCX016E.cbl
GIVEN: An M10 vessel name segment is received
WHEN: The system processes the vessel name field
THEN: The train ID is extracted from the vessel name for validation
βœ“ Consolidated Acceptance Criteria
  • The system searches the train list using GCCUTRIO → if the train is found in GCWTL segments, 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_QueryGCWTLTrainListSegments(["Start Step"]) E_QueryGCWTLTrainListSegments(["End Step"]) N_QueryGCWTLTrainListSegments_Node0{"The system searches the train list
using GCCUTRIO"}:::decision N_QueryGCWTLTrainListSegments_Node0_action["If the train is found in GCWTL
segments, processing continues if
not found, an error is generated"]:::main N_QueryGCWTLTrainListSegments_Node0 -- Yes --> N_QueryGCWTLTrainListSegments_Node0_action N_QueryGCWTLTrainListSegments_Node0_action --> E_QueryGCWTLTrainListSegments S_QueryGCWTLTrainListSegments --> N_QueryGCWTLTrainListSegments_Node0 N_QueryGCWTLTrainListSegments_Node0 -- No --> E_QueryGCWTLTrainListSegments
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A vessel name that does not start with 'TRAIN' or 'DAY'
WHEN: The system searches the train list using GCCUTRIO
THEN: If the train is found in GCWTL segments, processing continues; if not found, an error is generated
βœ“ Consolidated Acceptance Criteria
  • The train is not found in the GCWTL train list segments → the system generates a train not found error message for Merlin notification
  • Train lookup fails → a train not found error is generated for error handling
  • The system attempts to process an HMI hold disposition → a train not found error is generated for the invalid train ID
  • The train cannot be found in the system → a train not found error is generated and processing stops
  • The system processes the validation failure → a train not found error message is generated with relevant train identification details
  • The train is not found in the train list → the system generates a train not found 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_GenerateTrainNotFoundError(["Start Step"]) E_GenerateTrainNotFoundError(["End Step"]) N_GenerateTrainNotFoundError_Node0{"The train is not found in the GCWTL
train list segments"}:::decision N_GenerateTrainNotFoundError_Node0_action["The system generates a train not
found error message for Merlin
notification"]:::main N_GenerateTrainNotFoundError_Node0 -- Yes --> N_GenerateTrainNotFoundError_Node0_action N_GenerateTrainNotFoundError_Node0_action --> E_GenerateTrainNotFoundError S_GenerateTrainNotFoundError --> N_GenerateTrainNotFoundError_Node0 N_GenerateTrainNotFoundError_Node1{"Train lookup fails"}:::decision N_GenerateTrainNotFoundError_Node1_action["A train not found error is
generated for error handling"]:::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{"The system attempts to process an
HMI hold disposition"}:::decision N_GenerateTrainNotFoundError_Node2_action["A train not found error is
generated for the invalid train ID"]:::main N_GenerateTrainNotFoundError_Node2 -- Yes --> N_GenerateTrainNotFoundError_Node2_action N_GenerateTrainNotFoundError_Node2_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node1 -- No --> N_GenerateTrainNotFoundError_Node2 N_GenerateTrainNotFoundError_Node3{"The train cannot be found in the
system"}:::decision N_GenerateTrainNotFoundError_Node3_action["A train not found error is
generated and processing stops"]:::main N_GenerateTrainNotFoundError_Node3 -- Yes --> N_GenerateTrainNotFoundError_Node3_action N_GenerateTrainNotFoundError_Node3_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node2 -- No --> N_GenerateTrainNotFoundError_Node3 N_GenerateTrainNotFoundError_Node4{"The system processes the validation
failure"}:::decision N_GenerateTrainNotFoundError_Node4_action["A train not found error message is
generated with relevant train
identification details"]:::main N_GenerateTrainNotFoundError_Node4 -- Yes --> N_GenerateTrainNotFoundError_Node4_action N_GenerateTrainNotFoundError_Node4_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node3 -- No --> N_GenerateTrainNotFoundError_Node4 N_GenerateTrainNotFoundError_Node5{"The train is not found in the train
list"}:::decision N_GenerateTrainNotFoundError_Node5_action["The system generates a train not
found error message"]:::main N_GenerateTrainNotFoundError_Node5 -- Yes --> N_GenerateTrainNotFoundError_Node5_action N_GenerateTrainNotFoundError_Node5_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node4 -- No --> N_GenerateTrainNotFoundError_Node5 N_GenerateTrainNotFoundError_Node5 -- No --> E_GenerateTrainNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train lookup has been performed
WHEN: The train is not found in the GCWTL train list segments
THEN: The system generates a train not found error message for Merlin notification
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID does not exist in the database
WHEN: Train lookup fails
THEN: A train not found error is generated for error handling
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID from M10 segment does not exist in GCWTL train list
WHEN: The system attempts to process an HMI hold disposition
THEN: A train not found error is generated for the invalid train ID
File: GCX016E.cbl
GIVEN: A train ID is provided for seizure release
WHEN: The train cannot be found in the system
THEN:
  • A train not found error is generated
  • Processing stops
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Train validation has failed and train was not found
WHEN: The system processes the validation failure
THEN: A train not found error message is generated with relevant train identification details
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID has been extracted from the M10 segment
WHEN: The train is not found in the train list
THEN: The system generates a train not found error message
βœ“ Consolidated Acceptance Criteria
  • The train is identified as a CPRS train → the system applies CPRS-specific processing rules and continues with train processing
  • CPRS special processing is triggered → cPRS-specific business rules and processing logic are applied to the train
  • CPRS special processing is triggered → the system handles SCAC unknown scenarios and performs US-CCN key renumbering for CPRS-specific 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_ApplyCPRSSpecialProcessing(["Start Step"]) E_ApplyCPRSSpecialProcessing(["End Step"]) N_ApplyCPRSSpecialProcessing_Node0{"The train is identified as a CPRS
train"}:::decision N_ApplyCPRSSpecialProcessing_Node0_action["The system applies CPRS-specific
processing rules and continues with
train processing"]:::main N_ApplyCPRSSpecialProcessing_Node0 -- Yes --> N_ApplyCPRSSpecialProcessing_Node0_action N_ApplyCPRSSpecialProcessing_Node0_action --> E_ApplyCPRSSpecialProcessing S_ApplyCPRSSpecialProcessing --> N_ApplyCPRSSpecialProcessing_Node0 N_ApplyCPRSSpecialProcessing_Node1{"CPRS special processing is
triggered"}:::decision N_ApplyCPRSSpecialProcessing_Node1_action["CPRS-specific business rules and
processing logic are applied to the
train"]:::main N_ApplyCPRSSpecialProcessing_Node1 -- Yes --> N_ApplyCPRSSpecialProcessing_Node1_action N_ApplyCPRSSpecialProcessing_Node1_action --> E_ApplyCPRSSpecialProcessing N_ApplyCPRSSpecialProcessing_Node0 -- No --> N_ApplyCPRSSpecialProcessing_Node1 N_ApplyCPRSSpecialProcessing_Node2{"CPRS special processing is
triggered"}:::decision N_ApplyCPRSSpecialProcessing_Node2_action["The system handles SCAC unknown
scenarios and performs US-CCN key
renumbering for CPRS-specific lookup"]:::main N_ApplyCPRSSpecialProcessing_Node2 -- Yes --> N_ApplyCPRSSpecialProcessing_Node2_action N_ApplyCPRSSpecialProcessing_Node2_action --> E_ApplyCPRSSpecialProcessing N_ApplyCPRSSpecialProcessing_Node1 -- No --> N_ApplyCPRSSpecialProcessing_Node2 N_ApplyCPRSSpecialProcessing_Node2 -- No --> E_ApplyCPRSSpecialProcessing
File: GCX016E.cbl
GIVEN: A train has been successfully found in the system
WHEN: The train is identified as a CPRS train
THEN:
  • The system applies cprs-specific processing rules
  • Continues with train processing
File: GCX016E.cbl
GIVEN: A train has been identified as CPRS type
WHEN: CPRS special processing is triggered
THEN:
  • Cprs-specific business rules
  • Processing logic are applied to the train
File: GCX016E.cbl
GIVEN: Cargo is identified as CPRS traffic and no initial record was found
WHEN: CPRS special processing is triggered
THEN:
  • The system handles scac unknown scenarios
  • Performs us-ccn key renumbering for cprs-specific lookup
βœ“ Consolidated Acceptance Criteria
  • The train is either a valid TRAIN/DAY named vessel or found in the train list → the system sets the train found flag and continues with subsequent train processing operations
  • The system is ready to proceed with train operations → continue with normal train processing workflow and log validation 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_ContinuewithTrainProcessing(["Start Step"]) E_ContinuewithTrainProcessing(["End Step"]) N_ContinuewithTrainProcessing_Node0{"The train is either a valid
TRAINDAY named vessel or found in
the train list"}:::decision N_ContinuewithTrainProcessing_Node0_action["The system sets the train found
flag and continues with subsequent
train processing operations"]:::main N_ContinuewithTrainProcessing_Node0 -- Yes --> N_ContinuewithTrainProcessing_Node0_action N_ContinuewithTrainProcessing_Node0_action --> E_ContinuewithTrainProcessing S_ContinuewithTrainProcessing --> N_ContinuewithTrainProcessing_Node0 N_ContinuewithTrainProcessing_Node1{"The system is ready to proceed with
train operations"}:::decision N_ContinuewithTrainProcessing_Node1_action["Continue with normal train
processing workflow and log
validation results"]:::main N_ContinuewithTrainProcessing_Node1 -- Yes --> N_ContinuewithTrainProcessing_Node1_action N_ContinuewithTrainProcessing_Node1_action --> E_ContinuewithTrainProcessing N_ContinuewithTrainProcessing_Node0 -- No --> N_ContinuewithTrainProcessing_Node1 N_ContinuewithTrainProcessing_Node1 -- No --> E_ContinuewithTrainProcessing
File: GCX016E.cbl
GIVEN: Train validation has been completed
WHEN: The train is either a valid TRAIN/DAY named vessel or found in the train list
THEN:
  • The system sets the train found flag
  • Continues with subsequent train processing operations
File: GCX016E.cbl
GIVEN: Train found flag has been set after successful validation
WHEN: The system is ready to proceed with train operations
THEN:
  • Continue with normal train processing workflow
  • Log validation results
βœ“ Consolidated Acceptance Criteria
  • The vessel name does not match TRAIN or DAY naming patterns → the system calls GCCUTRIO service to lookup the train in external 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_CallGCCUTRIOtoLookupTrain(["Start Step"]) E_CallGCCUTRIOtoLookupTrain(["End Step"]) N_CallGCCUTRIOtoLookupTrain_Node0{"The vessel name does not match
TRAIN or DAY naming patterns"}:::decision N_CallGCCUTRIOtoLookupTrain_Node0_action["The system calls GCCUTRIO service
to lookup the train in external
train records"]:::main N_CallGCCUTRIOtoLookupTrain_Node0 -- Yes --> N_CallGCCUTRIOtoLookupTrain_Node0_action N_CallGCCUTRIOtoLookupTrain_Node0_action --> E_CallGCCUTRIOtoLookupTrain S_CallGCCUTRIOtoLookupTrain --> N_CallGCCUTRIOtoLookupTrain_Node0 N_CallGCCUTRIOtoLookupTrain_Node0 -- No --> E_CallGCCUTRIOtoLookupTrain
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A vessel name that requires train validation
WHEN: The vessel name does not match TRAIN or DAY naming patterns
THEN: The system calls GCCUTRIO service to lookup the train in external train records
βœ“ Consolidated Acceptance Criteria
  • The system initiates train lookup → gCCUTRIO database lookup is called to search for 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_CallGCCUTRIODatabaseLookup(["Start Step"]) E_CallGCCUTRIODatabaseLookup(["End Step"]) N_CallGCCUTRIODatabaseLookup_Node0{"The system initiates train lookup"}:::decision N_CallGCCUTRIODatabaseLookup_Node0_action["GCCUTRIO database lookup is called
to search for train information"]:::main N_CallGCCUTRIODatabaseLookup_Node0 -- Yes --> N_CallGCCUTRIODatabaseLookup_Node0_action N_CallGCCUTRIODatabaseLookup_Node0_action --> E_CallGCCUTRIODatabaseLookup S_CallGCCUTRIODatabaseLookup --> N_CallGCCUTRIODatabaseLookup_Node0 N_CallGCCUTRIODatabaseLookup_Node0 -- No --> E_CallGCCUTRIODatabaseLookup
File: GCX016E.cbl
GIVEN: A train ID has been extracted from the vessel name
WHEN: The system initiates train lookup
THEN: GCCUTRIO database lookup is called to search for train information
βœ“ Consolidated Acceptance Criteria
  • The lookup results are evaluated → if train is found, retrieve train information; if not found, generate train not found error
  • The system searches for the train in the GCWTL train list segments → the system determines if the train exists and routes processing accordingly
  • The system searches the train list database → if the train is not found in the system, processing should branch to warning generation, otherwise continue to status checking
  • The system searches for the train in the train list → the system determines if the train exists and can proceed with cancellation or must log an error
  • The system searches the train list for the specified train ID → the system determines if the train exists in the system OR generates train not found error if train does not exist
  • The system searches for the train in the train list → if the train is found, processing continues; if not found, an error is generated
  • The system searches for the train in the train list → the system determines if the train exists and is valid for seizure processing
  • The system looks up the train in the train list → the system determines if the train exists and is valid for processing
  • The system searches for the train in the train list → the system determines if the train exists or not found
  • If the lookup results → if train is found, proceed to validate train record status; if 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 lookup results are evaluated"}:::decision N_TrainFoundinSystem_Node0_action["If train is found, retrieve train
information if not found, generate
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 searches for the train
in the GCWTL train list segments"}:::decision N_TrainFoundinSystem_Node1_action["The system determines if the train
exists and routes processing
accordingly"]:::main N_TrainFoundinSystem_Node1 -- Yes --> N_TrainFoundinSystem_Node1_action N_TrainFoundinSystem_Node1_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node0 -- No --> N_TrainFoundinSystem_Node1 N_TrainFoundinSystem_Node2{"The system searches the train list
database"}:::decision N_TrainFoundinSystem_Node2_action["If the train is not found in the
system, processing should branch to
warning generation, otherwise
continue to status checking"]:::main N_TrainFoundinSystem_Node2 -- Yes --> N_TrainFoundinSystem_Node2_action N_TrainFoundinSystem_Node2_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node1 -- No --> N_TrainFoundinSystem_Node2 N_TrainFoundinSystem_Node3{"The system searches for the train
in the train list"}:::decision N_TrainFoundinSystem_Node3_action["The system determines if the train
exists and can proceed with
cancellation or must log an error"]:::main N_TrainFoundinSystem_Node3 -- Yes --> N_TrainFoundinSystem_Node3_action N_TrainFoundinSystem_Node3_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node2 -- No --> N_TrainFoundinSystem_Node3 N_TrainFoundinSystem_Node4{"The system searches the train list
for the specified train ID"}:::decision N_TrainFoundinSystem_Node4_action["The system determines if the train
exists in the system OR generates
train not found error if train does
not exist"]:::main N_TrainFoundinSystem_Node4 -- Yes --> N_TrainFoundinSystem_Node4_action N_TrainFoundinSystem_Node4_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node3 -- No --> N_TrainFoundinSystem_Node4 N_TrainFoundinSystem_Node5{"The system searches for the train
in the train list"}:::decision N_TrainFoundinSystem_Node5_action["If the train is found, processing
continues if not found, an error is
generated"]:::main N_TrainFoundinSystem_Node5 -- Yes --> N_TrainFoundinSystem_Node5_action N_TrainFoundinSystem_Node5_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node4 -- No --> N_TrainFoundinSystem_Node5 N_TrainFoundinSystem_Node6{"The system searches for the train
in the train list"}:::decision N_TrainFoundinSystem_Node6_action["The system determines if the train
exists and is valid for seizure
processing"]:::main N_TrainFoundinSystem_Node6 -- Yes --> N_TrainFoundinSystem_Node6_action N_TrainFoundinSystem_Node6_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node5 -- No --> N_TrainFoundinSystem_Node6 N_TrainFoundinSystem_Node7{"The system looks up the train in
the train list"}:::decision N_TrainFoundinSystem_Node7_action["The system determines if the train
exists and is valid for processing"]:::main N_TrainFoundinSystem_Node7 -- Yes --> N_TrainFoundinSystem_Node7_action N_TrainFoundinSystem_Node7_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node6 -- No --> N_TrainFoundinSystem_Node7 N_TrainFoundinSystem_Node8{"The system searches for the train
in the train list"}:::decision N_TrainFoundinSystem_Node8_action["The system determines if the train
exists or not found"]:::main N_TrainFoundinSystem_Node8 -- Yes --> N_TrainFoundinSystem_Node8_action N_TrainFoundinSystem_Node8_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node7 -- No --> N_TrainFoundinSystem_Node8 N_TrainFoundinSystem_Node9{"The system evaluates the lookup
results"}:::decision N_TrainFoundinSystem_Node9_action["If train is found, proceed to
validate train record status if not
found, generate train not found
error"]:::main N_TrainFoundinSystem_Node9 -- Yes --> N_TrainFoundinSystem_Node9_action N_TrainFoundinSystem_Node9_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node8 -- No --> N_TrainFoundinSystem_Node9 N_TrainFoundinSystem_Node9 -- No --> E_TrainFoundinSystem
File: GCX016E.cbl
GIVEN: A database lookup has been performed for a train ID
WHEN: The lookup results are evaluated
THEN: If train is found, retrieve train information; if not found, generate train not found error
File: GCX016E.cbl
GIVEN: A train ID has been extracted from the M10 segment
WHEN: The system searches for the train in the GCWTL train list segments
THEN:
  • The system determines if the train exists
  • Routes processing accordingly
File: GCX016E.cbl
GIVEN: A train ID has been extracted from the M10 segment
WHEN: The system searches the train list database
THEN: If the train is not found in the system, processing should branch to warning generation, otherwise continue to status checking
File: GCX016E.cbl
GIVEN: A train ID has been validated from M10 segment
WHEN: The system searches for the train in the train list
THEN:
  • The system determines if the train exists
  • Can proceed with cancellation or must log an error
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID has been extracted from M10 segment AND vessel name does not start with 'TRAIN' or 'DAY'
WHEN: The system searches the train list for the specified train ID
THEN: The system determines if the train exists in the system OR generates train not found error if train does not exist
File: GCX016E.cbl
GIVEN: A train ID has been extracted from the M10 segment
WHEN: The system searches for the train in the train list
THEN: If the train is found, processing continues; if not found, an error is generated
File: GCX016E.cbl
GIVEN: A train ID has been extracted from the M10 segment
WHEN: The system searches for the train in the train list
THEN:
  • The system determines if the train exists
  • Is valid for seizure processing
File: GCX016E.cbl
GIVEN: A train ID is provided for seizure release processing
WHEN: The system looks up the train in the train list
THEN:
  • The system determines if the train exists
  • Is valid for processing
File: GCX016E.cbl
GIVEN: A train ID has been extracted from the M10 segment
WHEN: The system searches for the train in the train list
THEN: The system determines if the train exists or not found
File: GCX016E.cbl
GIVEN: GCCUTRIO has been called to lookup train information
WHEN: The system evaluates the lookup results
THEN: If train is found, proceed to validate train record status; if not found, generate train not found error
βœ“ Consolidated Acceptance Criteria
  • Train lookup is successful → complete train information is 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_RetrieveTrainInformation(["Start Step"]) E_RetrieveTrainInformation(["End Step"]) N_RetrieveTrainInformation_Node0{"Train lookup is successful"}:::decision N_RetrieveTrainInformation_Node0_action["Complete train information is
retrieved from the database"]:::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: GCX016E.cbl
GIVEN: A train exists in the database
WHEN: Train lookup is successful
THEN: Complete train information is retrieved from the database
βœ“ Consolidated Acceptance Criteria
  • If train type → if train is CPRS type, apply CPRS special processing; otherwise proceed 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_IsCPRSTrain(["Start Step"]) E_IsCPRSTrain(["End Step"]) N_IsCPRSTrain_Node0{"The system evaluates train type"}:::decision N_IsCPRSTrain_Node0_action["If train is CPRS type, apply CPRS
special processing otherwise proceed
with standard processing"]:::main N_IsCPRSTrain_Node0 -- Yes --> N_IsCPRSTrain_Node0_action N_IsCPRSTrain_Node0_action --> E_IsCPRSTrain S_IsCPRSTrain --> N_IsCPRSTrain_Node0 N_IsCPRSTrain_Node0 -- No --> E_IsCPRSTrain
File: GCX016E.cbl
GIVEN: Train information has been retrieved from the database
WHEN: The system evaluates train type
THEN: If train is CPRS type, apply CPRS special processing; otherwise proceed with standard processing
βœ“ Consolidated Acceptance Criteria
  • Train processing is completed → train found flag is set to indicate successful train identification
  • The system completes train validation processing → set train found flag to true and continue with train processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetTrainFoundFlag(["Start Step"]) E_SetTrainFoundFlag(["End Step"]) N_SetTrainFoundFlag_Node0{"Train processing is completed"}:::decision N_SetTrainFoundFlag_Node0_action["Train found flag is set to indicate
successful train identification"]:::main N_SetTrainFoundFlag_Node0 -- Yes --> N_SetTrainFoundFlag_Node0_action N_SetTrainFoundFlag_Node0_action --> E_SetTrainFoundFlag S_SetTrainFoundFlag --> N_SetTrainFoundFlag_Node0 N_SetTrainFoundFlag_Node1{"The system completes train
validation processing"}:::decision N_SetTrainFoundFlag_Node1_action["Set train found flag to true and
continue with train processing"]:::main N_SetTrainFoundFlag_Node1 -- Yes --> N_SetTrainFoundFlag_Node1_action N_SetTrainFoundFlag_Node1_action --> E_SetTrainFoundFlag N_SetTrainFoundFlag_Node0 -- No --> N_SetTrainFoundFlag_Node1 N_SetTrainFoundFlag_Node1 -- No --> E_SetTrainFoundFlag
File: GCX016E.cbl
GIVEN: Train information has been successfully retrieved and processed
WHEN: Train processing is completed
THEN: Train found flag is set to indicate successful train identification
File: GCX016E.cbl
GIVEN: A train has been successfully validated (either regular or CPRS)
WHEN: The system completes train validation processing
THEN:
  • Set train found flag to true
  • Continue with train processing
βœ“ Consolidated Acceptance Criteria
  • Error message creation is triggered → a Merlin error message is created to notify relevant parties of the train lookup 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_CreateMerlinErrorMessage(["Start Step"]) E_CreateMerlinErrorMessage(["End Step"]) N_CreateMerlinErrorMessage_Node0{"Error message creation is triggered"}:::decision N_CreateMerlinErrorMessage_Node0_action["A Merlin error message is created
to notify relevant parties of the
train lookup failure"]:::exclusion N_CreateMerlinErrorMessage_Node0 -- Yes -->|Alternative| N_CreateMerlinErrorMessage_Node0_action N_CreateMerlinErrorMessage_Node0_action --> E_CreateMerlinErrorMessage S_CreateMerlinErrorMessage --> N_CreateMerlinErrorMessage_Node0 N_CreateMerlinErrorMessage_Node0 -- No --> E_CreateMerlinErrorMessage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train not found error has been generated
WHEN: Error message creation is triggered
THEN: A Merlin error message is created to notify relevant parties of the train lookup failure
βœ“ Consolidated Acceptance Criteria
  • Error flag setting is processed → train error flag is set to indicate train lookup 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_SetTrainErrorFlag(["Start Step"]) E_SetTrainErrorFlag(["End Step"]) N_SetTrainErrorFlag_Node0{"Error flag setting is processed"}:::decision N_SetTrainErrorFlag_Node0_action["Train error flag is set to indicate
train lookup failure"]:::exclusion N_SetTrainErrorFlag_Node0 -- Yes -->|Alternative| N_SetTrainErrorFlag_Node0_action N_SetTrainErrorFlag_Node0_action --> E_SetTrainErrorFlag S_SetTrainErrorFlag --> N_SetTrainErrorFlag_Node0 N_SetTrainErrorFlag_Node0 -- No --> E_SetTrainErrorFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train not found error has occurred and Merlin message has been created
WHEN: Error flag setting is processed
THEN: Train error flag is set to indicate train lookup failure
βœ“ Consolidated Acceptance Criteria
  • Train lookup phase is finished → system continues with the next phase of message processing
  • The system continues processing → the system must proceed with the next step in the cargo processing workflow
  • The logging process finishes → the system should continue with the main cargo processing workflow
  • The creation process finishes → the system should continue with the next step in the message processing workflow
  • The audit logging process is complete → the system continues with the main cargo processing workflow without interruption
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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{"Train lookup phase is finished"}:::decision N_ContinueProcessing_Node0_action["System continues with the next
phase of message processing"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"The system continues processing"}:::decision N_ContinueProcessing_Node1_action["The system must proceed with the
next step in the cargo processing
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_Node2{"The logging process finishes"}:::decision N_ContinueProcessing_Node2_action["The system should continue with the
main cargo processing workflow"]:::main N_ContinueProcessing_Node2 -- Yes --> N_ContinueProcessing_Node2_action N_ContinueProcessing_Node2_action --> E_ContinueProcessing N_ContinueProcessing_Node1 -- No --> N_ContinueProcessing_Node2 N_ContinueProcessing_Node3{"The creation process finishes"}:::decision N_ContinueProcessing_Node3_action["The system should continue with the
next step in the message processing
workflow"]:::main N_ContinueProcessing_Node3 -- Yes --> N_ContinueProcessing_Node3_action N_ContinueProcessing_Node3_action --> E_ContinueProcessing N_ContinueProcessing_Node2 -- No --> N_ContinueProcessing_Node3 N_ContinueProcessing_Node4{"The audit logging process is
complete"}:::decision N_ContinueProcessing_Node4_action["The system continues with the main
cargo processing workflow without
interruption"]:::main N_ContinueProcessing_Node4 -- Yes --> N_ContinueProcessing_Node4_action N_ContinueProcessing_Node4_action --> E_ContinueProcessing N_ContinueProcessing_Node3 -- No --> N_ContinueProcessing_Node4 N_ContinueProcessing_Node4 -- No --> E_ContinueProcessing
File: GCX016E.cbl
GIVEN: Train lookup processing has completed (either successfully or with error)
WHEN: Train lookup phase is finished
THEN: System continues with the next phase of message processing
File: GCX016E.cbl
GIVEN: The cargo disposition logging has been validated as successful
WHEN: The system continues processing
THEN: The system must proceed with the next step in the cargo processing workflow
File: GCX016E.cbl
GIVEN: The audit logging attempt has been completed (successfully or with error)
WHEN: The logging process finishes
THEN: The system should continue with the main cargo processing workflow
File: GCX016E.cbl
GIVEN: Cargo record creation process has completed (either successfully or with error)
WHEN: The creation process finishes
THEN: The system should continue with the next step in the message processing workflow
File: GCX016E.cbl
GIVEN: Either the audit log entry was successfully created or the logging error was handled
WHEN: The audit logging process is complete
THEN: The system continues with the main cargo processing workflow without interruption
βœ“ Consolidated Acceptance Criteria
  • If the train ID for CPRS indicators or Canadian Pacific Railway naming conventions → the system routes the train to CPRS-specific processing if indicators are found, otherwise processes as regular 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_TrainIDContainsCPRSIndicator(["Start Step"]) E_TrainIDContainsCPRSIndicator(["End Step"]) N_TrainIDContainsCPRSIndicator_Node0{"The system evaluates the train ID
for CPRS indicators or Canadian
Pacific Railway naming conventions"}:::decision N_TrainIDContainsCPRSIndicator_Node0_action["The system routes the train to
CPRS-specific processing if
indicators are found, otherwise
processes as regular train"]:::main N_TrainIDContainsCPRSIndicator_Node0 -- Yes --> N_TrainIDContainsCPRSIndicator_Node0_action N_TrainIDContainsCPRSIndicator_Node0_action --> E_TrainIDContainsCPRSIndicator S_TrainIDContainsCPRSIndicator --> N_TrainIDContainsCPRSIndicator_Node0 N_TrainIDContainsCPRSIndicator_Node0 -- No --> E_TrainIDContainsCPRSIndicator
File: GCX016E.cbl
GIVEN: A train record is being processed for arrival or departure
WHEN: The system evaluates the train ID for CPRS indicators or Canadian Pacific Railway naming conventions
THEN: The system routes the train to CPRS-specific processing if indicators are found, otherwise processes as regular train
βœ“ Consolidated Acceptance Criteria
  • The system processes the train identification → the system applies CPRS naming conventions and formats the train ID according to Canadian Pacific Railway 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_ApplyCPRSNamingConventions(["Start Step"]) E_ApplyCPRSNamingConventions(["End Step"]) N_ApplyCPRSNamingConventions_Node0{"The system processes the train
identification"}:::decision N_ApplyCPRSNamingConventions_Node0_action["The system applies CPRS naming
conventions and formats the train ID
according to Canadian Pacific
Railway standards"]:::main N_ApplyCPRSNamingConventions_Node0 -- Yes --> N_ApplyCPRSNamingConventions_Node0_action N_ApplyCPRSNamingConventions_Node0_action --> E_ApplyCPRSNamingConventions S_ApplyCPRSNamingConventions --> N_ApplyCPRSNamingConventions_Node0 N_ApplyCPRSNamingConventions_Node0 -- No --> E_ApplyCPRSNamingConventions
File: GCX016E.cbl
GIVEN: A train has been identified as a CPRS train
WHEN: The system processes the train identification
THEN:
  • The system applies cprs naming conventions
  • Formats the train id according to canadian pacific railway standards
βœ“ Consolidated Acceptance Criteria
  • The system validates the train format against CPRS standards → the system confirms the train ID meets Canadian Pacific Railway formatting requirements or flags format violations
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateCPRSTrainFormat(["Start Step"]) E_ValidateCPRSTrainFormat(["End Step"]) N_ValidateCPRSTrainFormat_Node0{"The system validates the train
format against CPRS standards"}:::decision N_ValidateCPRSTrainFormat_Node0_action["The system confirms the train ID
meets Canadian Pacific Railway
formatting requirements or flags
format violations"]:::main N_ValidateCPRSTrainFormat_Node0 -- Yes --> N_ValidateCPRSTrainFormat_Node0_action N_ValidateCPRSTrainFormat_Node0_action --> E_ValidateCPRSTrainFormat S_ValidateCPRSTrainFormat --> N_ValidateCPRSTrainFormat_Node0 N_ValidateCPRSTrainFormat_Node0 -- No --> E_ValidateCPRSTrainFormat
File: GCX016E.cbl
GIVEN: A CPRS train ID has been formatted according to naming conventions
WHEN: The system validates the train format against CPRS standards
THEN: The system confirms the train ID meets Canadian Pacific Railway formatting requirements or flags format violations
βœ“ Consolidated Acceptance Criteria
  • The system searches the GCWTL train data for the CPRS train → the system either finds the train record and proceeds with normal processing or generates a 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_CPRSTrainFoundinSystem(["Start Step"]) E_CPRSTrainFoundinSystem(["End Step"]) N_CPRSTrainFoundinSystem_Node0{"The system searches the GCWTL train
data for the CPRS train"}:::decision N_CPRSTrainFoundinSystem_Node0_action["The system either finds the train
record and proceeds with normal
processing or generates a train not
found error"]:::main N_CPRSTrainFoundinSystem_Node0 -- Yes --> N_CPRSTrainFoundinSystem_Node0_action N_CPRSTrainFoundinSystem_Node0_action --> E_CPRSTrainFoundinSystem S_CPRSTrainFoundinSystem --> N_CPRSTrainFoundinSystem_Node0 N_CPRSTrainFoundinSystem_Node0 -- No --> E_CPRSTrainFoundinSystem
File: GCX016E.cbl
GIVEN: A validated CPRS train ID is ready for processing
WHEN: The system searches the GCWTL train data for the CPRS train
THEN:
  • The system either finds the train record
  • Proceeds with normal processing or generates a train not found error
βœ“ Consolidated Acceptance Criteria
  • The system cannot locate the train in GCWTL train data → the system generates a train not found error message and continues with cargo 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_GenerateCPRSTrainNotFoundError(["Start Step"]) E_GenerateCPRSTrainNotFoundError(["End Step"]) N_GenerateCPRSTrainNotFoundError_Node0{"The system cannot locate the train
in GCWTL train data"}:::decision N_GenerateCPRSTrainNotFoundError_Node0_action["The system generates a train not
found error message and continues
with cargo lookup processing"]:::main N_GenerateCPRSTrainNotFoundError_Node0 -- Yes --> N_GenerateCPRSTrainNotFoundError_Node0_action N_GenerateCPRSTrainNotFoundError_Node0_action --> E_GenerateCPRSTrainNotFoundError S_GenerateCPRSTrainNotFoundError --> N_GenerateCPRSTrainNotFoundError_Node0 N_GenerateCPRSTrainNotFoundError_Node0 -- No --> E_GenerateCPRSTrainNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A CPRS train ID has been validated but not found in the train data system
WHEN: The system cannot locate the train in GCWTL train data
THEN:
  • The system generates a train not found error message
  • Continues with cargo lookup processing
βœ“ Consolidated Acceptance Criteria
  • The system searches GCSUSRT cargo records using the car ID from the N7 segment → the system identifies existing CPRS cargo records or determines that new cargo records 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_CPRSCargoLookupbyCarID(["Start Step"]) E_CPRSCargoLookupbyCarID(["End Step"]) N_CPRSCargoLookupbyCarID_Node0{"The system searches GCSUSRT cargo
records using the car ID from the N7
segment"}:::decision N_CPRSCargoLookupbyCarID_Node0_action["The system identifies existing CPRS
cargo records or determines that new
cargo records need to be created"]:::main N_CPRSCargoLookupbyCarID_Node0 -- Yes --> N_CPRSCargoLookupbyCarID_Node0_action N_CPRSCargoLookupbyCarID_Node0_action --> E_CPRSCargoLookupbyCarID S_CPRSCargoLookupbyCarID --> N_CPRSCargoLookupbyCarID_Node0 N_CPRSCargoLookupbyCarID_Node0 -- No --> E_CPRSCargoLookupbyCarID
File: GCX016E.cbl
GIVEN: CPRS train processing has been initiated (whether train was found or not)
WHEN: The system searches GCSUSRT cargo records using the car ID from the N7 segment
THEN: The system identifies existing CPRS cargo records or determines that new cargo records need to be created
βœ“ Consolidated Acceptance Criteria
  • The system processes the existing cargo records → the system updates the existing CPRS cargo with new disposition codes, status changes, and associated processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProcessExistingCPRSCargo(["Start Step"]) E_ProcessExistingCPRSCargo(["End Step"]) N_ProcessExistingCPRSCargo_Node0{"The system processes the existing
cargo records"}:::decision N_ProcessExistingCPRSCargo_Node0_action["The system updates the existing
CPRS cargo with new disposition
codes, status changes, and
associated processing"]:::main N_ProcessExistingCPRSCargo_Node0 -- Yes --> N_ProcessExistingCPRSCargo_Node0_action N_ProcessExistingCPRSCargo_Node0_action --> E_ProcessExistingCPRSCargo S_ProcessExistingCPRSCargo --> N_ProcessExistingCPRSCargo_Node0 N_ProcessExistingCPRSCargo_Node0 -- No --> E_ProcessExistingCPRSCargo
File: GCX016E.cbl
GIVEN: CPRS cargo records have been found in the system for the specified car ID
WHEN: The system processes the existing cargo records
THEN: The system updates the existing CPRS cargo with new disposition codes, status changes, and associated processing
βœ“ Consolidated Acceptance Criteria
  • The system needs to process new CPRS cargo → the system creates new cargo records in GCSUSRT with appropriate CPRS-specific attributes and initial status
  • The system creates a new cargo record → a new CPRS cargo record is created with appropriate CPRS-specific attributes and processing rules
  • The system creates the cargo record → new CPRS cargo record is created with CPRS-specific business attributes and processing rules
  • The system creates new CPRS cargo record → establish new cargo record with CPRS-specific data structure and attributes
  • A new CPRS cargo record needs to be created → the system initiates creation of a new cargo record with CPRS-specific attributes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CreateNewCPRSCargoRecord(["Start Step"]) E_CreateNewCPRSCargoRecord(["End Step"]) N_CreateNewCPRSCargoRecord_Node0{"The system needs to process new
CPRS cargo"}:::decision N_CreateNewCPRSCargoRecord_Node0_action["The system creates new cargo
records in GCSUSRT with appropriate
CPRS-specific attributes and initial
status"]:::main N_CreateNewCPRSCargoRecord_Node0 -- Yes --> N_CreateNewCPRSCargoRecord_Node0_action N_CreateNewCPRSCargoRecord_Node0_action --> E_CreateNewCPRSCargoRecord S_CreateNewCPRSCargoRecord --> N_CreateNewCPRSCargoRecord_Node0 N_CreateNewCPRSCargoRecord_Node1{"The system creates a new cargo
record"}:::decision N_CreateNewCPRSCargoRecord_Node1_action["A new CPRS cargo record is created
with appropriate CPRS-specific
attributes and processing rules"]:::main N_CreateNewCPRSCargoRecord_Node1 -- Yes --> N_CreateNewCPRSCargoRecord_Node1_action N_CreateNewCPRSCargoRecord_Node1_action --> E_CreateNewCPRSCargoRecord N_CreateNewCPRSCargoRecord_Node0 -- No --> N_CreateNewCPRSCargoRecord_Node1 N_CreateNewCPRSCargoRecord_Node2{"The system creates the cargo record"}:::decision N_CreateNewCPRSCargoRecord_Node2_action["New CPRS cargo record is created
with CPRS-specific business
attributes and processing rules"]:::main N_CreateNewCPRSCargoRecord_Node2 -- Yes --> N_CreateNewCPRSCargoRecord_Node2_action N_CreateNewCPRSCargoRecord_Node2_action --> E_CreateNewCPRSCargoRecord N_CreateNewCPRSCargoRecord_Node1 -- No --> N_CreateNewCPRSCargoRecord_Node2 N_CreateNewCPRSCargoRecord_Node3{"the system creates new CPRS cargo
record"}:::decision N_CreateNewCPRSCargoRecord_Node3_action["establish new cargo record with
CPRS-specific data structure and
attributes"]:::main N_CreateNewCPRSCargoRecord_Node3 -- Yes --> N_CreateNewCPRSCargoRecord_Node3_action N_CreateNewCPRSCargoRecord_Node3_action --> E_CreateNewCPRSCargoRecord N_CreateNewCPRSCargoRecord_Node2 -- No --> N_CreateNewCPRSCargoRecord_Node3 N_CreateNewCPRSCargoRecord_Node4{"A new CPRS cargo record needs to be
created"}:::decision N_CreateNewCPRSCargoRecord_Node4_action["The system initiates creation of a
new cargo record with CPRS-specific
attributes"]:::main N_CreateNewCPRSCargoRecord_Node4 -- Yes --> N_CreateNewCPRSCargoRecord_Node4_action N_CreateNewCPRSCargoRecord_Node4_action --> E_CreateNewCPRSCargoRecord N_CreateNewCPRSCargoRecord_Node3 -- No --> N_CreateNewCPRSCargoRecord_Node4 N_CreateNewCPRSCargoRecord_Node4 -- No --> E_CreateNewCPRSCargoRecord
File: GCX016E.cbl
GIVEN: No existing CPRS cargo records are found for the specified car ID
WHEN: The system needs to process new CPRS cargo
THEN:
  • The system creates new cargo records in gcsusrt with appropriate cprs-specific attributes
  • Initial status
File: GCX016E.cbl
GIVEN: No existing cargo records exist and the traffic is identified as CPRS
WHEN: The system creates a new cargo record
THEN:
  • A new cprs cargo record is created with appropriate cprs-specific attributes
  • Processing rules
File: GCX016E.cbl
GIVEN: A new record is required for CPRS traffic
WHEN: The system creates the cargo record
THEN:
  • New cprs cargo record is created with cprs-specific business attributes
  • Processing rules
File: GCX016E.cbl
GIVEN: CPRS cargo creation rules have been applied successfully
WHEN: the system creates new CPRS cargo record
THEN:
  • Establish new cargo record with cprs-specific data structure
  • Attributes
File: GCX016E.cbl
GIVEN: No cargo record exists after CPRS processing and secondary search
WHEN: A new CPRS cargo record needs to be created
THEN: The system initiates creation of a new cargo record with CPRS-specific attributes
βœ“ Consolidated Acceptance Criteria
  • The system applies CPRS bond processing rules from GCSTBRT bond tables → the system processes bonds according to Canadian Pacific Railway requirements and cross-border regulations
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ApplyCPRSBondProcessingRules(["Start Step"]) E_ApplyCPRSBondProcessingRules(["End Step"]) N_ApplyCPRSBondProcessingRules_Node0{"The system applies CPRS bond
processing rules from GCSTBRT bond
tables"}:::decision N_ApplyCPRSBondProcessingRules_Node0_action["The system processes bonds
according to Canadian Pacific
Railway requirements and
cross-border regulations"]:::main N_ApplyCPRSBondProcessingRules_Node0 -- Yes --> N_ApplyCPRSBondProcessingRules_Node0_action N_ApplyCPRSBondProcessingRules_Node0_action --> E_ApplyCPRSBondProcessingRules S_ApplyCPRSBondProcessingRules --> N_ApplyCPRSBondProcessingRules_Node0 N_ApplyCPRSBondProcessingRules_Node0 -- No --> E_ApplyCPRSBondProcessingRules
File: GCX016E.cbl
GIVEN: CPRS cargo records are ready for bond processing (either existing or newly created)
WHEN: The system applies CPRS bond processing rules from GCSTBRT bond tables
THEN:
  • The system processes bonds according to canadian pacific railway requirements
  • Cross-border regulations
βœ“ Consolidated Acceptance Criteria
  • The system configures CPRS-specific processing flags → the system sets appropriate flags for Canadian Pacific Railway processing, cross-border handling, and special 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_SetCPRSSpecialFlags(["Start Step"]) E_SetCPRSSpecialFlags(["End Step"]) N_SetCPRSSpecialFlags_Node0{"The system configures CPRS-specific
processing flags"}:::decision N_SetCPRSSpecialFlags_Node0_action["The system sets appropriate flags
for Canadian Pacific Railway
processing, cross-border handling,
and special routing requirements"]:::main N_SetCPRSSpecialFlags_Node0 -- Yes --> N_SetCPRSSpecialFlags_Node0_action N_SetCPRSSpecialFlags_Node0_action --> E_SetCPRSSpecialFlags S_SetCPRSSpecialFlags --> N_SetCPRSSpecialFlags_Node0 N_SetCPRSSpecialFlags_Node0 -- No --> E_SetCPRSSpecialFlags
File: GCX016E.cbl
GIVEN: CPRS bond processing rules have been applied to the cargo
WHEN: The system configures CPRS-specific processing flags
THEN: The system sets appropriate flags for Canadian Pacific Railway processing, cross-border handling, and special routing requirements
βœ“ Consolidated Acceptance Criteria
  • The system performs cross-border validation for Canadian Pacific Railway operations → the system validates compliance with cross-border regulations and determines if Canadian border crossing 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_HandleCPRSCrossBorderValidation(["Start Step"]) E_HandleCPRSCrossBorderValidation(["End Step"]) N_HandleCPRSCrossBorderValidation_Node0{"The system performs cross-border
validation for Canadian Pacific
Railway operations"}:::decision N_HandleCPRSCrossBorderValidation_Node0_action["The system validates compliance
with cross-border regulations and
determines if Canadian border
crossing processing is required"]:::main N_HandleCPRSCrossBorderValidation_Node0 -- Yes --> N_HandleCPRSCrossBorderValidation_Node0_action N_HandleCPRSCrossBorderValidation_Node0_action --> E_HandleCPRSCrossBorderValidation S_HandleCPRSCrossBorderValidation --> N_HandleCPRSCrossBorderValidation_Node0 N_HandleCPRSCrossBorderValidation_Node0 -- No --> E_HandleCPRSCrossBorderValidation
File: GCX016E.cbl
GIVEN: CPRS special flags have been configured for the cargo
WHEN: The system performs cross-border validation for Canadian Pacific Railway operations
THEN:
  • The system validates compliance with cross-border regulations
  • Determines if canadian border crossing processing is required
βœ“ Consolidated Acceptance Criteria
  • If routing information to determine border crossing requirements → the system identifies Canadian border crossings and routes to appropriate location mapping or proceeds to bond 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_CanadianBorderCrossing(["Start Step"]) E_CanadianBorderCrossing(["End Step"]) N_CanadianBorderCrossing_Node0{"The system evaluates routing
information to determine border
crossing requirements"}:::decision N_CanadianBorderCrossing_Node0_action["The system identifies Canadian
border crossings and routes to
appropriate location mapping or
proceeds to bond information
processing"]:::main N_CanadianBorderCrossing_Node0 -- Yes --> N_CanadianBorderCrossing_Node0_action N_CanadianBorderCrossing_Node0_action --> E_CanadianBorderCrossing S_CanadianBorderCrossing --> N_CanadianBorderCrossing_Node0 N_CanadianBorderCrossing_Node0 -- No --> E_CanadianBorderCrossing
File: GCX016E.cbl
GIVEN: CPRS cross-border validation has been completed
WHEN: The system evaluates routing information to determine border crossing requirements
THEN:
  • The system identifies canadian border crossings
  • Routes to appropriate location mapping or proceeds to bond information processing
βœ“ Consolidated Acceptance Criteria
  • The system maps US port information to Canadian location equivalents using border location maps → the system establishes proper location mapping for cross-border processing and routing 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_MapUSPorttoCanadianLocation(["Start Step"]) E_MapUSPorttoCanadianLocation(["End Step"]) N_MapUSPorttoCanadianLocation_Node0{"The system maps US port information
to Canadian location equivalents
using border location maps"}:::decision N_MapUSPorttoCanadianLocation_Node0_action["The system establishes proper
location mapping for cross-border
processing and routing validation"]:::main N_MapUSPorttoCanadianLocation_Node0 -- Yes --> N_MapUSPorttoCanadianLocation_Node0_action N_MapUSPorttoCanadianLocation_Node0_action --> E_MapUSPorttoCanadianLocation S_MapUSPorttoCanadianLocation --> N_MapUSPorttoCanadianLocation_Node0 N_MapUSPorttoCanadianLocation_Node0 -- No --> E_MapUSPorttoCanadianLocation
File: GCX016E.cbl
GIVEN: A Canadian border crossing has been identified for CPRS cargo
WHEN: The system maps US port information to Canadian location equivalents using border location maps
THEN:
  • The system establishes proper location mapping for cross-border processing
  • Routing validation
βœ“ Consolidated Acceptance Criteria
  • The system validates routing against CPRS routing rules and cross-border requirements → the system confirms routing compliance and proceeds to bond 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_ValidateCPRSRoutingRules(["Start Step"]) E_ValidateCPRSRoutingRules(["End Step"]) N_ValidateCPRSRoutingRules_Node0{"The system validates routing
against CPRS routing rules and
cross-border requirements"}:::decision N_ValidateCPRSRoutingRules_Node0_action["The system confirms routing
compliance and proceeds to bond
information processing"]:::main N_ValidateCPRSRoutingRules_Node0 -- Yes --> N_ValidateCPRSRoutingRules_Node0_action N_ValidateCPRSRoutingRules_Node0_action --> E_ValidateCPRSRoutingRules S_ValidateCPRSRoutingRules --> N_ValidateCPRSRoutingRules_Node0 N_ValidateCPRSRoutingRules_Node0 -- No --> E_ValidateCPRSRoutingRules
File: GCX016E.cbl
GIVEN: US port to Canadian location mapping has been completed
WHEN:
  • The system validates routing against cprs routing rules
  • Cross-border requirements
THEN:
  • The system confirms routing compliance
  • Proceeds to bond information processing
βœ“ Consolidated Acceptance Criteria
  • The system applies CPRS bond information to the cargo → the system updates cargo records with appropriate Canadian Pacific Railway bond details 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_ApplyCPRSBondInformation(["Start Step"]) E_ApplyCPRSBondInformation(["End Step"]) N_ApplyCPRSBondInformation_Node0{"The system applies CPRS bond
information to the cargo"}:::decision N_ApplyCPRSBondInformation_Node0_action["The system updates cargo records
with appropriate Canadian Pacific
Railway bond details and
requirements"]:::main N_ApplyCPRSBondInformation_Node0 -- Yes --> N_ApplyCPRSBondInformation_Node0_action N_ApplyCPRSBondInformation_Node0_action --> E_ApplyCPRSBondInformation S_ApplyCPRSBondInformation --> N_ApplyCPRSBondInformation_Node0 N_ApplyCPRSBondInformation_Node0 -- No --> E_ApplyCPRSBondInformation
File: GCX016E.cbl
GIVEN: CPRS routing rules have been validated (either after border crossing mapping or direct validation)
WHEN: The system applies CPRS bond information to the cargo
THEN:
  • The system updates cargo records with appropriate canadian pacific railway bond details
  • Requirements
βœ“ Consolidated Acceptance Criteria
  • The system sets Canadian Pacific Railway bond configuration → the system establishes proper bond settings specific to Canadian Pacific Railway requirements and generates bond creation 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_SetCanadianPacificRailwayBond(["Start Step"]) E_SetCanadianPacificRailwayBond(["End Step"]) N_SetCanadianPacificRailwayBond_Node0{"The system sets Canadian Pacific
Railway bond configuration"}:::decision N_SetCanadianPacificRailwayBond_Node0_action["The system establishes proper bond
settings specific to Canadian
Pacific Railway requirements and
generates bond creation messaging"]:::main N_SetCanadianPacificRailwayBond_Node0 -- Yes --> N_SetCanadianPacificRailwayBond_Node0_action N_SetCanadianPacificRailwayBond_Node0_action --> E_SetCanadianPacificRailwayBond S_SetCanadianPacificRailwayBond --> N_SetCanadianPacificRailwayBond_Node0 N_SetCanadianPacificRailwayBond_Node0 -- No --> E_SetCanadianPacificRailwayBond
File: GCX016E.cbl
GIVEN: CPRS bond information has been applied to the cargo
WHEN: The system sets Canadian Pacific Railway bond configuration
THEN:
  • The system establishes proper bond settings specific to canadian pacific railway requirements
  • Generates bond creation messaging
βœ“ Consolidated Acceptance Criteria
  • The system generates bond creation messaging → the system creates K1 segment messages documenting the bond creation for Canadian Pacific Railway 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_GenerateK1BondCreationMessage(["Start Step"]) E_GenerateK1BondCreationMessage(["End Step"]) N_GenerateK1BondCreationMessage_Node0{"The system generates bond creation
messaging"}:::decision N_GenerateK1BondCreationMessage_Node0_action["The system creates K1 segment
messages documenting the bond
creation for Canadian Pacific
Railway operations"]:::main N_GenerateK1BondCreationMessage_Node0 -- Yes --> N_GenerateK1BondCreationMessage_Node0_action N_GenerateK1BondCreationMessage_Node0_action --> E_GenerateK1BondCreationMessage S_GenerateK1BondCreationMessage --> N_GenerateK1BondCreationMessage_Node0 N_GenerateK1BondCreationMessage_Node0 -- No --> E_GenerateK1BondCreationMessage
File: GCX016E.cbl
GIVEN: Canadian Pacific Railway bond has been configured
WHEN: The system generates bond creation messaging
THEN: The system creates K1 segment messages documenting the bond creation for Canadian Pacific Railway operations
βœ“ Consolidated Acceptance Criteria
  • The system updates CPRS cargo status → the system sets appropriate status indicators reflecting completed Canadian Pacific Railway processing and prepares for notification 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_UpdateCPRSCargoStatus(["Start Step"]) E_UpdateCPRSCargoStatus(["End Step"]) N_UpdateCPRSCargoStatus_Node0{"The system updates CPRS cargo
status"}:::decision N_UpdateCPRSCargoStatus_Node0_action["The system sets appropriate status
indicators reflecting completed
Canadian Pacific Railway processing
and prepares for notification
generation"]:::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: GCX016E.cbl
GIVEN: K1 bond creation messages have been generated
WHEN: The system updates CPRS cargo status
THEN:
  • The system sets appropriate status indicators reflecting completed canadian pacific railway processing
  • Prepares for notification generation
βœ“ Consolidated Acceptance Criteria
  • The system sends CPRS processing notifications → the system delivers appropriate notifications to stakeholders regarding Canadian Pacific Railway cargo 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_SendCPRSNotifications(["Start Step"]) E_SendCPRSNotifications(["End Step"]) N_SendCPRSNotifications_Node0{"The system sends CPRS processing
notifications"}:::decision N_SendCPRSNotifications_Node0_action["The system delivers appropriate
notifications to stakeholders
regarding Canadian Pacific Railway
cargo processing completion"]:::main N_SendCPRSNotifications_Node0 -- Yes --> N_SendCPRSNotifications_Node0_action N_SendCPRSNotifications_Node0_action --> E_SendCPRSNotifications S_SendCPRSNotifications --> N_SendCPRSNotifications_Node0 N_SendCPRSNotifications_Node0 -- No --> E_SendCPRSNotifications
File: GCX016E.cbl
GIVEN: CPRS cargo status has been updated
WHEN: The system sends CPRS processing notifications
THEN: The system delivers appropriate notifications to stakeholders regarding Canadian Pacific Railway cargo processing completion
βœ“ Consolidated Acceptance Criteria
  • The system processes the M10 segment to extract train identification → the train ID is validated and made available for subsequent hold processing
  • The system processes the M10 segment for train identification → the train ID must be extracted and validated from the M10 segment data
  • The system validates the train identification → the system confirms train ID is valid and accessible for cancellation processing
  • The system processes the M10 segment for train identification → the system extracts and validates the train ID for further processing
  • The system needs to identify the target train → the system retrieves and validates train identification from the M10 segment
  • The system processes the M10 segment for train seizure → the system extracts the train ID and prepares it for validation
  • The system processes seizure release for the train → the train ID is extracted and validated from the M10 segment
  • The system processes the M10 segment to extract and validate train ID → the train ID is validated against available train data for further processing
  • Processing a COC disposition code → the system extracts the train ID from the M10 segment 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_ValidateTrainIDfromM10Segment(["Start Step"]) E_ValidateTrainIDfromM10Segment(["End Step"]) N_ValidateTrainIDfromM10Segment_Node0{"The system processes the M10
segment to extract train
identification"}:::decision N_ValidateTrainIDfromM10Segment_Node0_action["The train ID is validated and made
available for subsequent hold
processing"]:::main N_ValidateTrainIDfromM10Segment_Node0 -- Yes --> N_ValidateTrainIDfromM10Segment_Node0_action N_ValidateTrainIDfromM10Segment_Node0_action --> E_ValidateTrainIDfromM10Segment S_ValidateTrainIDfromM10Segment --> N_ValidateTrainIDfromM10Segment_Node0 N_ValidateTrainIDfromM10Segment_Node1{"The system processes the M10
segment for train identification"}:::decision N_ValidateTrainIDfromM10Segment_Node1_action["The train ID must be extracted and
validated from the M10 segment data"]:::main N_ValidateTrainIDfromM10Segment_Node1 -- Yes --> N_ValidateTrainIDfromM10Segment_Node1_action N_ValidateTrainIDfromM10Segment_Node1_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node0 -- No --> N_ValidateTrainIDfromM10Segment_Node1 N_ValidateTrainIDfromM10Segment_Node2{"The system validates the train
identification"}:::decision N_ValidateTrainIDfromM10Segment_Node2_action["The system confirms train ID is
valid and accessible for
cancellation processing"]:::main N_ValidateTrainIDfromM10Segment_Node2 -- Yes --> N_ValidateTrainIDfromM10Segment_Node2_action N_ValidateTrainIDfromM10Segment_Node2_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node1 -- No --> N_ValidateTrainIDfromM10Segment_Node2 N_ValidateTrainIDfromM10Segment_Node3{"The system processes the M10
segment for train identification"}:::decision N_ValidateTrainIDfromM10Segment_Node3_action["The system extracts and validates
the train ID for further processing"]:::main N_ValidateTrainIDfromM10Segment_Node3 -- Yes --> N_ValidateTrainIDfromM10Segment_Node3_action N_ValidateTrainIDfromM10Segment_Node3_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node2 -- No --> N_ValidateTrainIDfromM10Segment_Node3 N_ValidateTrainIDfromM10Segment_Node4{"The system needs to identify the
target train"}:::decision N_ValidateTrainIDfromM10Segment_Node4_action["The system retrieves and validates
train identification from the M10
segment"]:::main N_ValidateTrainIDfromM10Segment_Node4 -- Yes --> N_ValidateTrainIDfromM10Segment_Node4_action N_ValidateTrainIDfromM10Segment_Node4_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node3 -- No --> N_ValidateTrainIDfromM10Segment_Node4 N_ValidateTrainIDfromM10Segment_Node5{"The system processes the M10
segment for train seizure"}:::decision N_ValidateTrainIDfromM10Segment_Node5_action["The system extracts the train ID
and prepares it for validation"]:::main N_ValidateTrainIDfromM10Segment_Node5 -- Yes --> N_ValidateTrainIDfromM10Segment_Node5_action N_ValidateTrainIDfromM10Segment_Node5_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node4 -- No --> N_ValidateTrainIDfromM10Segment_Node5 N_ValidateTrainIDfromM10Segment_Node6{"The system processes seizure
release for the train"}:::decision N_ValidateTrainIDfromM10Segment_Node6_action["The train ID is extracted and
validated from the M10 segment"]:::main N_ValidateTrainIDfromM10Segment_Node6 -- Yes --> N_ValidateTrainIDfromM10Segment_Node6_action N_ValidateTrainIDfromM10Segment_Node6_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node5 -- No --> N_ValidateTrainIDfromM10Segment_Node6 N_ValidateTrainIDfromM10Segment_Node7{"The system processes the M10
segment to extract and validate
train ID"}:::decision N_ValidateTrainIDfromM10Segment_Node7_action["The train ID is validated against
available train data for further
processing"]:::main N_ValidateTrainIDfromM10Segment_Node7 -- Yes --> N_ValidateTrainIDfromM10Segment_Node7_action N_ValidateTrainIDfromM10Segment_Node7_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node6 -- No --> N_ValidateTrainIDfromM10Segment_Node7 N_ValidateTrainIDfromM10Segment_Node8{"Processing a COC disposition code"}:::decision N_ValidateTrainIDfromM10Segment_Node8_action["The system extracts the train ID
from the M10 segment for validation"]:::main N_ValidateTrainIDfromM10Segment_Node8 -- Yes --> N_ValidateTrainIDfromM10Segment_Node8_action N_ValidateTrainIDfromM10Segment_Node8_action --> E_ValidateTrainIDfromM10Segment N_ValidateTrainIDfromM10Segment_Node7 -- No --> N_ValidateTrainIDfromM10Segment_Node8 N_ValidateTrainIDfromM10Segment_Node8 -- No --> E_ValidateTrainIDfromM10Segment
File: GCX016E.cbl
GIVEN: A V9 segment with HMI disposition code is received
WHEN: The system processes the M10 segment to extract train identification
THEN:
  • The train id is validated
  • Made available for subsequent hold processing
File: GCX016E.cbl
GIVEN: A V9 segment with OCA disposition code is received
WHEN: The system processes the M10 segment for train identification
THEN:
  • The train id must be extracted
  • Validated from the m10 segment data
File: GCX016E.cbl
GIVEN: A train ID is provided from M10 segment data
WHEN: The system validates the train identification
THEN:
  • The system confirms train id is valid
  • Accessible for cancellation processing
File: GCX016E.cbl
GIVEN: An M10 segment contains vessel/train information
WHEN: The system processes the M10 segment for train identification
THEN:
  • The system extracts
  • Validates the train id for further processing
File: GCX016E.cbl
GIVEN: An unlock request is being processed
WHEN: The system needs to identify the target train
THEN:
  • The system retrieves
  • Validates train identification from the m10 segment
File: GCX016E.cbl
GIVEN: An M10 segment contains vessel/train identification information
WHEN: The system processes the M10 segment for train seizure
THEN:
  • The system extracts the train id
  • Prepares it for validation
File: GCX016E.cbl
GIVEN: An M10 segment contains train identification information
WHEN: The system processes seizure release for the train
THEN:
  • The train id is extracted
  • Validated from the m10 segment
File: GCX016E.cbl
GIVEN: An OCA disposition code is received for a train AND M10 segment contains train identification information
WHEN:
  • The system processes the m10 segment to extract
  • Validate train id
THEN: The train ID is validated against available train data for further processing
File: GCX016E.cbl
GIVEN: An M10 segment contains vessel/train information
WHEN: Processing a COC disposition code
THEN: The system extracts the train ID from the M10 segment for validation
βœ“ Consolidated Acceptance Criteria
  • The system needs to process a hold disposition for the train → the complete train record is retrieved from GCWTL for 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_RetrieveTrainRecordfromGCWTL(["Start Step"]) E_RetrieveTrainRecordfromGCWTL(["End Step"]) N_RetrieveTrainRecordfromGCWTL_Node0{"The system needs to process a hold
disposition for the train"}:::decision N_RetrieveTrainRecordfromGCWTL_Node0_action["The complete train record is
retrieved from GCWTL for status
updates"]:::main N_RetrieveTrainRecordfromGCWTL_Node0 -- Yes --> N_RetrieveTrainRecordfromGCWTL_Node0_action N_RetrieveTrainRecordfromGCWTL_Node0_action --> E_RetrieveTrainRecordfromGCWTL S_RetrieveTrainRecordfromGCWTL --> N_RetrieveTrainRecordfromGCWTL_Node0 N_RetrieveTrainRecordfromGCWTL_Node0 -- No --> E_RetrieveTrainRecordfromGCWTL
File: GCX016E.cbl
GIVEN: A train exists in the GCWTL train list segments
WHEN: The system needs to process a hold disposition for the train
THEN: The complete train record is retrieved from GCWTL for status updates
βœ“ Consolidated Acceptance Criteria
  • An HMI disposition code is being processed → the train hold status flag is set to indicate the train 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_SetTrainHoldStatusFlag(["Start Step"]) E_SetTrainHoldStatusFlag(["End Step"]) N_SetTrainHoldStatusFlag_Node0{"An HMI disposition code is being
processed"}:::decision N_SetTrainHoldStatusFlag_Node0_action["The train hold status flag is set
to indicate the train is 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: GCX016E.cbl
GIVEN: A valid train record has been retrieved from GCWTL
WHEN: An HMI disposition code is being processed
THEN: The train hold status flag is set to indicate the train is held
βœ“ Consolidated Acceptance Criteria
  • The system completes hold processing → the updated train status is written back to the GCWTL database
  • The system completes hold release processing → the train status is updated in the database with the current hold release information
  • The system commits status changes → update the train status information in the database to reflect the completed arrival
  • The system finalizes the cancellation process → the system updates the train status information in the database
  • The system needs to save the status change → the system updates the train record in the database with the new seizure status
  • The system commits the status changes → the train status is updated in the database with the new all clear status
  • The system updates train information → update the train status in GCWTL train list segments database with arrival information
  • The status processing is complete → the train status is updated in the database and the status change 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_UpdateTrainStatusinDatabase(["Start Step"]) E_UpdateTrainStatusinDatabase(["End Step"]) N_UpdateTrainStatusinDatabase_Node0{"The system completes hold
processing"}:::decision N_UpdateTrainStatusinDatabase_Node0_action["The updated train status is written
back to the GCWTL 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 completes hold release
processing"}:::decision N_UpdateTrainStatusinDatabase_Node1_action["The train status is updated in the
database with the current hold
release information"]:::main N_UpdateTrainStatusinDatabase_Node1 -- Yes --> N_UpdateTrainStatusinDatabase_Node1_action N_UpdateTrainStatusinDatabase_Node1_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node0 -- No --> N_UpdateTrainStatusinDatabase_Node1 N_UpdateTrainStatusinDatabase_Node2{"The system commits status changes"}:::decision N_UpdateTrainStatusinDatabase_Node2_action["Update the train status information
in the database to reflect the
completed arrival"]:::main N_UpdateTrainStatusinDatabase_Node2 -- Yes --> N_UpdateTrainStatusinDatabase_Node2_action N_UpdateTrainStatusinDatabase_Node2_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node1 -- No --> N_UpdateTrainStatusinDatabase_Node2 N_UpdateTrainStatusinDatabase_Node3{"The system finalizes the
cancellation process"}:::decision N_UpdateTrainStatusinDatabase_Node3_action["The system updates the train status
information in the database"]:::main N_UpdateTrainStatusinDatabase_Node3 -- Yes --> N_UpdateTrainStatusinDatabase_Node3_action N_UpdateTrainStatusinDatabase_Node3_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node2 -- No --> N_UpdateTrainStatusinDatabase_Node3 N_UpdateTrainStatusinDatabase_Node4{"The system needs to save the status
change"}:::decision N_UpdateTrainStatusinDatabase_Node4_action["The system updates the train record
in the database with the new seizure
status"]:::main N_UpdateTrainStatusinDatabase_Node4 -- Yes --> N_UpdateTrainStatusinDatabase_Node4_action N_UpdateTrainStatusinDatabase_Node4_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node3 -- No --> N_UpdateTrainStatusinDatabase_Node4 N_UpdateTrainStatusinDatabase_Node5{"The system commits the status
changes"}:::decision N_UpdateTrainStatusinDatabase_Node5_action["The train status is updated in the
database with the new all clear
status"]:::main N_UpdateTrainStatusinDatabase_Node5 -- Yes --> N_UpdateTrainStatusinDatabase_Node5_action N_UpdateTrainStatusinDatabase_Node5_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node4 -- No --> N_UpdateTrainStatusinDatabase_Node5 N_UpdateTrainStatusinDatabase_Node6{"The system updates train
information"}:::decision N_UpdateTrainStatusinDatabase_Node6_action["Update the train status in GCWTL
train list segments database with
arrival information"]:::main N_UpdateTrainStatusinDatabase_Node6 -- Yes --> N_UpdateTrainStatusinDatabase_Node6_action N_UpdateTrainStatusinDatabase_Node6_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node5 -- No --> N_UpdateTrainStatusinDatabase_Node6 N_UpdateTrainStatusinDatabase_Node7{"The status processing is complete"}:::decision N_UpdateTrainStatusinDatabase_Node7_action["The train status is updated in the
database and the status change is
logged"]:::main N_UpdateTrainStatusinDatabase_Node7 -- Yes --> N_UpdateTrainStatusinDatabase_Node7_action N_UpdateTrainStatusinDatabase_Node7_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node6 -- No --> N_UpdateTrainStatusinDatabase_Node7 N_UpdateTrainStatusinDatabase_Node7 -- No --> E_UpdateTrainStatusinDatabase
File: GCX016E.cbl
GIVEN: The train hold status flag has been set
WHEN: The system completes hold processing
THEN: The updated train status is written back to the GCWTL database
File: GCX016E.cbl
GIVEN: Hold release action has been logged
WHEN: The system completes hold release processing
THEN: The train status is updated in the database with the current hold release information
File: GCX016E.cbl
GIVEN: The train arrival action has been logged
WHEN: The system commits status changes
THEN: Update the train status information in the database to reflect the completed arrival
File: GCX016E.cbl
GIVEN: Notification has been sent to business users
WHEN: The system finalizes the cancellation process
THEN: The system updates the train status information in the database
File: GCX016E.cbl
GIVEN: The train seizure flag has been set to 'Y'
WHEN: The system needs to save the status change
THEN: The system updates the train record in the database with the new seizure status
File: GCX016E.cbl
GIVEN: Train all clear status has been set and previous holds cleared
WHEN: The system commits the status changes
THEN: The train status is updated in the database with the new all clear status
File: GCX016E.cbl
GIVEN: A train arrival status flag has been set for an import manifest train
WHEN: The system updates train information
THEN: Update the train status in GCWTL train list segments database with arrival information
File: GCX016E.cbl
GIVEN: A train status flag has been modified due to a V9 disposition code event
WHEN: The status processing is complete
THEN:
  • The train status is updated in the database
  • The status change is logged
βœ“ Consolidated Acceptance Criteria
  • The hold status has been updated in the database → a log entry is created with the hold action and current 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_LogHoldActionwithTimestamp(["Start Step"]) E_LogHoldActionwithTimestamp(["End Step"]) N_LogHoldActionwithTimestamp_Node0{"The hold status has been updated in
the database"}:::decision N_LogHoldActionwithTimestamp_Node0_action["A log entry is created with the
hold action and current timestamp
for audit purposes"]:::main N_LogHoldActionwithTimestamp_Node0 -- Yes --> N_LogHoldActionwithTimestamp_Node0_action N_LogHoldActionwithTimestamp_Node0_action --> E_LogHoldActionwithTimestamp S_LogHoldActionwithTimestamp --> N_LogHoldActionwithTimestamp_Node0 N_LogHoldActionwithTimestamp_Node0 -- No --> E_LogHoldActionwithTimestamp
File: GCX016E.cbl
GIVEN: A train has been successfully placed on hold
WHEN: The hold status has been updated in the database
THEN:
  • A log entry is created with the hold action
  • Current timestamp for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs to notify stakeholders of the hold → a Merlin hold notification message is generated with train details and 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_GenerateMerlinHoldNotificationMessage(["Start Step"]) E_GenerateMerlinHoldNotificationMessage(["End Step"]) N_GenerateMerlinHoldNotificationMessage_Node0{"The system needs to notify
stakeholders of the hold"}:::decision N_GenerateMerlinHoldNotificationMessage_Node0_action["A Merlin hold notification message
is generated with train details and
hold information"]:::main N_GenerateMerlinHoldNotificationMessage_Node0 -- Yes --> N_GenerateMerlinHoldNotificationMessage_Node0_action N_GenerateMerlinHoldNotificationMessage_Node0_action --> E_GenerateMerlinHoldNotificationMessage S_GenerateMerlinHoldNotificationMessage --> N_GenerateMerlinHoldNotificationMessage_Node0 N_GenerateMerlinHoldNotificationMessage_Node0 -- No --> E_GenerateMerlinHoldNotificationMessage
File: GCX016E.cbl
GIVEN: A train hold action has been logged
WHEN: The system needs to notify stakeholders of the hold
THEN:
  • A merlin hold notification message is generated with train details
  • Hold information
βœ“ Consolidated Acceptance Criteria
  • The system processes notification distribution → the hold notification is sent to all designated recipients through the Merlin message 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_SendHoldNotificationtoRecipients(["Start Step"]) E_SendHoldNotificationtoRecipients(["End Step"]) N_SendHoldNotificationtoRecipients_Node0{"The system processes notification
distribution"}:::decision N_SendHoldNotificationtoRecipients_Node0_action["The hold notification is sent to
all designated recipients through
the Merlin message system"]:::main N_SendHoldNotificationtoRecipients_Node0 -- Yes --> N_SendHoldNotificationtoRecipients_Node0_action N_SendHoldNotificationtoRecipients_Node0_action --> E_SendHoldNotificationtoRecipients S_SendHoldNotificationtoRecipients --> N_SendHoldNotificationtoRecipients_Node0 N_SendHoldNotificationtoRecipients_Node0 -- No --> E_SendHoldNotificationtoRecipients
File: GCX016E.cbl
GIVEN: A Merlin hold notification message has been generated
WHEN: The system processes notification distribution
THEN: The hold notification is sent to all designated recipients through the Merlin message system
βœ“ Consolidated Acceptance Criteria
  • The system needs to notify about the processing error → the error message is sent to the default recipient for error handling 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_SendErrorMessagetoDefaultRecipient(["Start Step"]) E_SendErrorMessagetoDefaultRecipient(["End Step"]) N_SendErrorMessagetoDefaultRecipient_Node0{"The system needs to notify about
the processing error"}:::decision N_SendErrorMessagetoDefaultRecipient_Node0_action["The error message is sent to the
default recipient for error handling
and resolution"]:::exclusion N_SendErrorMessagetoDefaultRecipient_Node0 -- Yes -->|Alternative| N_SendErrorMessagetoDefaultRecipient_Node0_action N_SendErrorMessagetoDefaultRecipient_Node0_action --> E_SendErrorMessagetoDefaultRecipient S_SendErrorMessagetoDefaultRecipient --> N_SendErrorMessagetoDefaultRecipient_Node0 N_SendErrorMessagetoDefaultRecipient_Node0 -- No --> E_SendErrorMessagetoDefaultRecipient
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train not found error has been generated
WHEN: The system needs to notify about the processing error
THEN:
  • The error message is sent to the default recipient for error handling
  • Resolution
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold release event → the system processes VID segment for individual equipment hold release instead of train-level processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProcessVIDSegmentforIndividualEquipment(["Start Step"]) E_ProcessVIDSegmentforIndividualEquipment(["End Step"]) N_ProcessVIDSegmentforIndividualEquipment_Node0{"The system processes the hold
release event"}:::decision N_ProcessVIDSegmentforIndividualEquipment_Node0_action["The system processes VID segment
for individual equipment hold
release instead of train-level
processing"]:::main N_ProcessVIDSegmentforIndividualEquipment_Node0 -- Yes --> N_ProcessVIDSegmentforIndividualEquipment_Node0_action N_ProcessVIDSegmentforIndividualEquipment_Node0_action --> E_ProcessVIDSegmentforIndividualEquipment S_ProcessVIDSegmentforIndividualEquipment --> N_ProcessVIDSegmentforIndividualEquipment_Node0 N_ProcessVIDSegmentforIndividualEquipment_Node0 -- No --> E_ProcessVIDSegmentforIndividualEquipment
File: GCX016E.cbl
GIVEN: An HRE disposition code is received AND a VID segment is present in the message
WHEN: The system processes the hold release event
THEN: The system processes VID segment for individual equipment hold release instead of train-level processing
βœ“ Consolidated Acceptance Criteria
  • The VID segment is processed for hold release → the equipment hold 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_DecrementEquipmentHoldCounter(["Start Step"]) E_DecrementEquipmentHoldCounter(["End Step"]) N_DecrementEquipmentHoldCounter_Node0{"The VID segment is processed for
hold release"}:::decision N_DecrementEquipmentHoldCounter_Node0_action["The equipment hold counter is
decremented by one"]:::main N_DecrementEquipmentHoldCounter_Node0 -- Yes --> N_DecrementEquipmentHoldCounter_Node0_action N_DecrementEquipmentHoldCounter_Node0_action --> E_DecrementEquipmentHoldCounter S_DecrementEquipmentHoldCounter --> N_DecrementEquipmentHoldCounter_Node0 N_DecrementEquipmentHoldCounter_Node0 -- No --> E_DecrementEquipmentHoldCounter
File: GCX016E.cbl
GIVEN: Equipment-specific hold release is being processed AND the equipment has an active hold counter
WHEN: The VID segment is processed for hold release
THEN: The equipment hold counter is decremented by one
βœ“ Consolidated Acceptance Criteria
  • The system checks the equipment hold counter value → iF the hold counter equals zero THEN proceed to remove equipment hold flag ELSE proceed to log hold release action
  • The system checks the hold counter value → the system determines if hold counter equals zero to set equipment 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_HoldCounter0(["Start Step"]) E_HoldCounter0(["End Step"]) N_HoldCounter0_Node0{"The system checks the equipment
hold counter value"}:::decision N_HoldCounter0_Node0_action["IF the hold counter equals zero
THEN proceed to remove equipment
hold flag ELSE proceed to log hold
release action"]:::main N_HoldCounter0_Node0 -- Yes --> N_HoldCounter0_Node0_action N_HoldCounter0_Node0_action --> E_HoldCounter0 S_HoldCounter0 --> N_HoldCounter0_Node0 N_HoldCounter0_Node1{"The system checks the hold counter
value"}:::decision N_HoldCounter0_Node1_action["The system determines if hold
counter equals zero to set equipment
status to released"]:::main N_HoldCounter0_Node1 -- Yes --> N_HoldCounter0_Node1_action N_HoldCounter0_Node1_action --> E_HoldCounter0 N_HoldCounter0_Node0 -- No --> N_HoldCounter0_Node1 N_HoldCounter0_Node1 -- No --> E_HoldCounter0
File: GCX016E.cbl
GIVEN: Equipment hold counter has been decremented
WHEN: The system checks the equipment hold counter value
THEN: IF the hold counter equals zero THEN proceed to remove equipment hold flag ELSE proceed to log hold release action
File: GCX016E.cbl
GIVEN: Hold counter has been decremented for equipment release
WHEN: The system checks the hold counter value
THEN: The system determines if hold counter equals zero to set equipment status to released
βœ“ Consolidated Acceptance Criteria
  • All holds on the equipment have been released → the equipment hold status flag is removed from the equipment record
  • HRE disposition code is processed for the equipment → the system removes the hold flag from the equipment 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_RemoveEquipmentHoldFlag(["Start Step"]) E_RemoveEquipmentHoldFlag(["End Step"]) N_RemoveEquipmentHoldFlag_Node0{"All holds on the equipment have
been released"}:::decision N_RemoveEquipmentHoldFlag_Node0_action["The equipment hold status flag is
removed from the equipment record"]:::main N_RemoveEquipmentHoldFlag_Node0 -- Yes --> N_RemoveEquipmentHoldFlag_Node0_action N_RemoveEquipmentHoldFlag_Node0_action --> E_RemoveEquipmentHoldFlag S_RemoveEquipmentHoldFlag --> N_RemoveEquipmentHoldFlag_Node0 N_RemoveEquipmentHoldFlag_Node1{"HRE disposition code is processed
for the equipment"}:::decision N_RemoveEquipmentHoldFlag_Node1_action["The system removes the hold flag
from the equipment record"]:::main N_RemoveEquipmentHoldFlag_Node1 -- Yes --> N_RemoveEquipmentHoldFlag_Node1_action N_RemoveEquipmentHoldFlag_Node1_action --> E_RemoveEquipmentHoldFlag N_RemoveEquipmentHoldFlag_Node0 -- No --> N_RemoveEquipmentHoldFlag_Node1 N_RemoveEquipmentHoldFlag_Node1 -- No --> E_RemoveEquipmentHoldFlag
File: GCX016E.cbl
GIVEN: Equipment hold counter equals zero
WHEN: All holds on the equipment have been released
THEN: The equipment hold status flag is removed from the equipment record
File: GCX016E.cbl
GIVEN: Equipment is currently held with hold flag set
WHEN: HRE disposition code is processed for the equipment
THEN: The system removes the hold flag from the equipment record
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold release event → the system processes train-level hold release for the entire 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_ProcessTrainLevelHoldRelease(["Start Step"]) E_ProcessTrainLevelHoldRelease(["End Step"]) N_ProcessTrainLevelHoldRelease_Node0{"The system processes the hold
release event"}:::decision N_ProcessTrainLevelHoldRelease_Node0_action["The system processes train-level
hold release for the entire train"]:::main N_ProcessTrainLevelHoldRelease_Node0 -- Yes --> N_ProcessTrainLevelHoldRelease_Node0_action N_ProcessTrainLevelHoldRelease_Node0_action --> E_ProcessTrainLevelHoldRelease S_ProcessTrainLevelHoldRelease --> N_ProcessTrainLevelHoldRelease_Node0 N_ProcessTrainLevelHoldRelease_Node0 -- No --> E_ProcessTrainLevelHoldRelease
File: GCX016E.cbl
GIVEN: An HRE disposition code is received AND no VID segment is present in the message
WHEN: The system processes the hold release event
THEN: The system processes train-level hold release for the entire train
βœ“ Consolidated Acceptance Criteria
  • The system processes the train hold release → the train hold status flag is removed from the train 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_RemoveTrainHoldStatusFlag(["Start Step"]) E_RemoveTrainHoldStatusFlag(["End Step"]) N_RemoveTrainHoldStatusFlag_Node0{"The system processes the train hold
release"}:::decision N_RemoveTrainHoldStatusFlag_Node0_action["The train hold status flag is
removed from the train record"]:::main N_RemoveTrainHoldStatusFlag_Node0 -- Yes --> N_RemoveTrainHoldStatusFlag_Node0_action N_RemoveTrainHoldStatusFlag_Node0_action --> E_RemoveTrainHoldStatusFlag S_RemoveTrainHoldStatusFlag --> N_RemoveTrainHoldStatusFlag_Node0 N_RemoveTrainHoldStatusFlag_Node0 -- No --> E_RemoveTrainHoldStatusFlag
File: GCX016E.cbl
GIVEN: Train-level hold release is being processed
WHEN: The system processes the train hold release
THEN: The train hold status flag is removed from the train record
βœ“ Consolidated Acceptance Criteria
  • The hold release processing is completed → the hold release action is logged in the system 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_LogHoldReleaseAction(["Start Step"]) E_LogHoldReleaseAction(["End Step"]) N_LogHoldReleaseAction_Node0{"The hold release processing is
completed"}:::decision N_LogHoldReleaseAction_Node0_action["The hold release action is logged
in the system audit trail"]:::main N_LogHoldReleaseAction_Node0 -- Yes --> N_LogHoldReleaseAction_Node0_action N_LogHoldReleaseAction_Node0_action --> E_LogHoldReleaseAction S_LogHoldReleaseAction --> N_LogHoldReleaseAction_Node0 N_LogHoldReleaseAction_Node0 -- No --> E_LogHoldReleaseAction
File: GCX016E.cbl
GIVEN: A hold release action has been processed (either equipment-specific or train-level)
WHEN: The hold release processing is completed
THEN: The hold release action is logged in the system audit trail
βœ“ Consolidated Acceptance Criteria
  • The hold release processing is nearly complete → a Merlin notification message is generated containing hold release details
  • The system prepares notifications → a Merlin notification message is generated containing the review complete details
  • The system processes notification requirements → the system generates a Merlin notification message for the train lock event
  • The system needs to notify stakeholders → the system generates a Merlin notification message with unlock details
  • The system needs to notify stakeholders → the system generates a Merlin notification message with seizure details
  • The system generates notifications → a Merlin notification message is created containing train details and all clear status information
  • The system prepares external notifications → a Merlin notification message is generated with seizure 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_GenerateMerlinNotificationMessage(["Start Step"]) E_GenerateMerlinNotificationMessage(["End Step"]) N_GenerateMerlinNotificationMessage_Node0{"The hold release processing is
nearly complete"}:::decision N_GenerateMerlinNotificationMessage_Node0_action["A Merlin notification message is
generated containing hold release
details"]:::main N_GenerateMerlinNotificationMessage_Node0 -- Yes --> N_GenerateMerlinNotificationMessage_Node0_action N_GenerateMerlinNotificationMessage_Node0_action --> E_GenerateMerlinNotificationMessage S_GenerateMerlinNotificationMessage --> N_GenerateMerlinNotificationMessage_Node0 N_GenerateMerlinNotificationMessage_Node1{"The system prepares notifications"}:::decision N_GenerateMerlinNotificationMessage_Node1_action["A Merlin notification message is
generated containing the review
complete details"]:::main N_GenerateMerlinNotificationMessage_Node1 -- Yes --> N_GenerateMerlinNotificationMessage_Node1_action N_GenerateMerlinNotificationMessage_Node1_action --> E_GenerateMerlinNotificationMessage N_GenerateMerlinNotificationMessage_Node0 -- No --> N_GenerateMerlinNotificationMessage_Node1 N_GenerateMerlinNotificationMessage_Node2{"The system processes notification
requirements"}:::decision N_GenerateMerlinNotificationMessage_Node2_action["The system generates a Merlin
notification message for the train
lock event"]:::main N_GenerateMerlinNotificationMessage_Node2 -- Yes --> N_GenerateMerlinNotificationMessage_Node2_action N_GenerateMerlinNotificationMessage_Node2_action --> E_GenerateMerlinNotificationMessage N_GenerateMerlinNotificationMessage_Node1 -- No --> N_GenerateMerlinNotificationMessage_Node2 N_GenerateMerlinNotificationMessage_Node3{"The system needs to notify
stakeholders"}:::decision N_GenerateMerlinNotificationMessage_Node3_action["The system generates a Merlin
notification message with unlock
details"]:::main N_GenerateMerlinNotificationMessage_Node3 -- Yes --> N_GenerateMerlinNotificationMessage_Node3_action N_GenerateMerlinNotificationMessage_Node3_action --> E_GenerateMerlinNotificationMessage N_GenerateMerlinNotificationMessage_Node2 -- No --> N_GenerateMerlinNotificationMessage_Node3 N_GenerateMerlinNotificationMessage_Node4{"The system needs to notify
stakeholders"}:::decision N_GenerateMerlinNotificationMessage_Node4_action["The system generates a Merlin
notification message with seizure
details"]:::main N_GenerateMerlinNotificationMessage_Node4 -- Yes --> N_GenerateMerlinNotificationMessage_Node4_action N_GenerateMerlinNotificationMessage_Node4_action --> E_GenerateMerlinNotificationMessage N_GenerateMerlinNotificationMessage_Node3 -- No --> N_GenerateMerlinNotificationMessage_Node4 N_GenerateMerlinNotificationMessage_Node5{"The system generates notifications"}:::decision N_GenerateMerlinNotificationMessage_Node5_action["A Merlin notification message is
created containing train details and
all clear status information"]:::main N_GenerateMerlinNotificationMessage_Node5 -- Yes --> N_GenerateMerlinNotificationMessage_Node5_action N_GenerateMerlinNotificationMessage_Node5_action --> E_GenerateMerlinNotificationMessage N_GenerateMerlinNotificationMessage_Node4 -- No --> N_GenerateMerlinNotificationMessage_Node5 N_GenerateMerlinNotificationMessage_Node6{"The system prepares external
notifications"}:::decision N_GenerateMerlinNotificationMessage_Node6_action["A Merlin notification message is
generated with seizure release
details"]:::main N_GenerateMerlinNotificationMessage_Node6 -- Yes --> N_GenerateMerlinNotificationMessage_Node6_action N_GenerateMerlinNotificationMessage_Node6_action --> E_GenerateMerlinNotificationMessage N_GenerateMerlinNotificationMessage_Node5 -- No --> N_GenerateMerlinNotificationMessage_Node6 N_GenerateMerlinNotificationMessage_Node6 -- No --> E_GenerateMerlinNotificationMessage
File: GCX016E.cbl
GIVEN: Train status has been updated in the database
WHEN: The hold release processing is nearly complete
THEN: A Merlin notification message is generated containing hold release details
File: GCX016E.cbl
GIVEN: A train review complete action has been logged
WHEN: The system prepares notifications
THEN: A Merlin notification message is generated containing the review complete details
File: GCX016E.cbl
GIVEN: Train lock action has been logged
WHEN: The system processes notification requirements
THEN: The system generates a Merlin notification message for the train lock event
File: GCX016E.cbl
GIVEN: A train unlock action has been logged
WHEN: The system needs to notify stakeholders
THEN: The system generates a Merlin notification message with unlock details
File: GCX016E.cbl
GIVEN: A train seizure has been logged successfully
WHEN: The system needs to notify stakeholders
THEN: The system generates a Merlin notification message with seizure details
File: GCX016E.cbl
GIVEN: All clear action has been logged successfully
WHEN: The system generates notifications
THEN:
  • A merlin notification message is created containing train details
  • All clear status information
File: GCX016E.cbl
GIVEN: Equipment seizure release action has been logged
WHEN: The system prepares external notifications
THEN: A Merlin notification message is generated with seizure release details
βœ“ Consolidated Acceptance Criteria
  • The system is ready to send notifications → the hold release notification is transmitted to the designated 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_SendHoldReleaseNotification(["Start Step"]) E_SendHoldReleaseNotification(["End Step"]) N_SendHoldReleaseNotification_Node0{"The system is ready to send
notifications"}:::decision N_SendHoldReleaseNotification_Node0_action["The hold release notification is
transmitted to the designated
recipients"]:::main N_SendHoldReleaseNotification_Node0 -- Yes --> N_SendHoldReleaseNotification_Node0_action N_SendHoldReleaseNotification_Node0_action --> E_SendHoldReleaseNotification S_SendHoldReleaseNotification --> N_SendHoldReleaseNotification_Node0 N_SendHoldReleaseNotification_Node0 -- No --> E_SendHoldReleaseNotification
File: GCX016E.cbl
GIVEN: A Merlin notification message has been generated
WHEN: The system is ready to send notifications
THEN: The hold release notification is transmitted to the designated recipients
βœ“ Consolidated Acceptance Criteria
  • The system examines the train ID suffix → if the train ID ends with suffix 'T', classify as export manifest train, otherwise classify as import manifest train
  • The system checks the train ID suffix → if train ID ends with suffix 'T', route to export manifest processing, otherwise route to import manifest processing
  • The system checks the train ID suffix → if train ID ends with 'T', classify as export manifest train, otherwise classify as import manifest 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_TrainIDSuffixCheck(["Start Step"]) E_TrainIDSuffixCheck(["End Step"]) N_TrainIDSuffixCheck_Node0{"The system examines the train ID
suffix"}:::decision N_TrainIDSuffixCheck_Node0_action["If the train ID ends with suffix T
, classify as export manifest train,
otherwise classify as import
manifest train"]:::main N_TrainIDSuffixCheck_Node0 -- Yes --> N_TrainIDSuffixCheck_Node0_action N_TrainIDSuffixCheck_Node0_action --> E_TrainIDSuffixCheck S_TrainIDSuffixCheck --> N_TrainIDSuffixCheck_Node0 N_TrainIDSuffixCheck_Node1{"The system checks the train ID
suffix"}:::decision N_TrainIDSuffixCheck_Node1_action["If train ID ends with suffix T ,
route to export manifest processing,
otherwise route to import manifest
processing"]:::main N_TrainIDSuffixCheck_Node1 -- Yes --> N_TrainIDSuffixCheck_Node1_action N_TrainIDSuffixCheck_Node1_action --> E_TrainIDSuffixCheck N_TrainIDSuffixCheck_Node0 -- No --> N_TrainIDSuffixCheck_Node1 N_TrainIDSuffixCheck_Node2{"The system checks the train ID
suffix"}:::decision N_TrainIDSuffixCheck_Node2_action["If train ID ends with T , classify
as export manifest train, otherwise
classify as import manifest train"]:::main N_TrainIDSuffixCheck_Node2 -- Yes --> N_TrainIDSuffixCheck_Node2_action N_TrainIDSuffixCheck_Node2_action --> E_TrainIDSuffixCheck N_TrainIDSuffixCheck_Node1 -- No --> N_TrainIDSuffixCheck_Node2 N_TrainIDSuffixCheck_Node2 -- No --> E_TrainIDSuffixCheck
File: GCX016E.cbl
GIVEN: A train arrival event (POD/AAD disposition code) is being processed
WHEN: The system examines the train ID suffix
THEN: If the train ID ends with suffix 'T', classify as export manifest train, otherwise classify as import manifest train
File: GCX016E.cbl
GIVEN: A train arrival event (POD/AAD disposition code) is being processed
WHEN: The system checks the train ID suffix
THEN: If train ID ends with suffix 'T', route to export manifest processing, otherwise route to import manifest processing
File: GCX016E.cbl
GIVEN: A train arrival processing event (POD/AAD disposition) is being processed
WHEN: The system checks the train ID suffix
THEN: If train ID ends with 'T', classify as export manifest train, otherwise classify as import manifest train
βœ“ Consolidated Acceptance Criteria
  • The train arrival processing begins → execute export manifest pre-arrival processing 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_ExportManifestTrainSuffixT(["Start Step"]) E_ExportManifestTrainSuffixT(["End Step"]) N_ExportManifestTrainSuffixT_Node0{"The train arrival processing begins"}:::decision N_ExportManifestTrainSuffixT_Node0_action["Execute export manifest pre-arrival
processing procedures"]:::main N_ExportManifestTrainSuffixT_Node0 -- Yes --> N_ExportManifestTrainSuffixT_Node0_action N_ExportManifestTrainSuffixT_Node0_action --> E_ExportManifestTrainSuffixT S_ExportManifestTrainSuffixT --> N_ExportManifestTrainSuffixT_Node0 N_ExportManifestTrainSuffixT_Node0 -- No --> E_ExportManifestTrainSuffixT
File: GCX016E.cbl
GIVEN: A train has been classified as export manifest train (suffix 'T')
WHEN: The train arrival processing begins
THEN: Execute export manifest pre-arrival processing procedures
βœ“ Consolidated Acceptance Criteria
  • The train arrival processing begins → execute standard import manifest arrival processing 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_ImportManifestTrainNoSuffixT(["Start Step"]) E_ImportManifestTrainNoSuffixT(["End Step"]) N_ImportManifestTrainNoSuffixT_Node0{"The train arrival processing begins"}:::decision N_ImportManifestTrainNoSuffixT_Node0_action["Execute standard import manifest
arrival processing procedures"]:::main N_ImportManifestTrainNoSuffixT_Node0 -- Yes --> N_ImportManifestTrainNoSuffixT_Node0_action N_ImportManifestTrainNoSuffixT_Node0_action --> E_ImportManifestTrainNoSuffixT S_ImportManifestTrainNoSuffixT --> N_ImportManifestTrainNoSuffixT_Node0 N_ImportManifestTrainNoSuffixT_Node0 -- No --> E_ImportManifestTrainNoSuffixT
File: GCX016E.cbl
GIVEN: A train has been classified as import manifest train (no suffix 'T')
WHEN: The train arrival processing begins
THEN: Execute standard import manifest arrival processing procedures
βœ“ Consolidated Acceptance Criteria
  • The system validates the port location → if the port is valid for export operations, proceed with export manifest arrival flag setting, otherwise redirect to import manifest processing
  • The system validates the arrival port against export port configuration → if port is designated for export, allow export manifest processing, otherwise generate validation 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_ExportManifestPortValidation(["Start Step"]) E_ExportManifestPortValidation(["End Step"]) N_ExportManifestPortValidation_Node0{"The system validates the port
location"}:::decision N_ExportManifestPortValidation_Node0_action["If the port is valid for export
operations, proceed with export
manifest arrival flag setting,
otherwise redirect to import
manifest processing"]:::main N_ExportManifestPortValidation_Node0 -- Yes --> N_ExportManifestPortValidation_Node0_action N_ExportManifestPortValidation_Node0_action --> E_ExportManifestPortValidation S_ExportManifestPortValidation --> N_ExportManifestPortValidation_Node0 N_ExportManifestPortValidation_Node1{"The system validates the arrival
port against export port
configuration"}:::decision N_ExportManifestPortValidation_Node1_action["If port is designated for export,
allow export manifest processing,
otherwise generate validation
message"]:::main N_ExportManifestPortValidation_Node1 -- Yes --> N_ExportManifestPortValidation_Node1_action N_ExportManifestPortValidation_Node1_action --> E_ExportManifestPortValidation N_ExportManifestPortValidation_Node0 -- No --> N_ExportManifestPortValidation_Node1 N_ExportManifestPortValidation_Node1 -- No --> E_ExportManifestPortValidation
File: GCX016E.cbl
GIVEN: An export manifest train is being processed for arrival
WHEN: The system validates the port location
THEN: If the port is valid for export operations, proceed with export manifest arrival flag setting, otherwise redirect to import manifest processing
File: GCX016E.cbl
GIVEN: An export manifest train (suffix 'T') is arriving at a port
WHEN: The system validates the arrival port against export port configuration
THEN: If port is designated for export, allow export manifest processing, otherwise generate validation message
βœ“ Consolidated Acceptance Criteria
  • The arrival processing continues → set the export manifest arrival flag to indicate successful export arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetExportManifestArrivalFlag(["Start Step"]) E_SetExportManifestArrivalFlag(["End Step"]) N_SetExportManifestArrivalFlag_Node0{"The arrival processing continues"}:::decision N_SetExportManifestArrivalFlag_Node0_action["Set the export manifest arrival
flag to indicate successful export
arrival"]:::main N_SetExportManifestArrivalFlag_Node0 -- Yes --> N_SetExportManifestArrivalFlag_Node0_action N_SetExportManifestArrivalFlag_Node0_action --> E_SetExportManifestArrivalFlag S_SetExportManifestArrivalFlag --> N_SetExportManifestArrivalFlag_Node0 N_SetExportManifestArrivalFlag_Node0 -- No --> E_SetExportManifestArrivalFlag
File: GCX016E.cbl
GIVEN: An export manifest train has passed port validation
WHEN: The arrival processing continues
THEN: Set the export manifest arrival flag to indicate successful export arrival
βœ“ Consolidated Acceptance Criteria
  • The arrival processing continues → set the standard arrival flag to indicate train arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetStandardArrivalFlag(["Start Step"]) E_SetStandardArrivalFlag(["End Step"]) N_SetStandardArrivalFlag_Node0{"The arrival processing continues"}:::decision N_SetStandardArrivalFlag_Node0_action["Set the standard arrival flag to
indicate train arrival"]:::main N_SetStandardArrivalFlag_Node0 -- Yes --> N_SetStandardArrivalFlag_Node0_action N_SetStandardArrivalFlag_Node0_action --> E_SetStandardArrivalFlag S_SetStandardArrivalFlag --> N_SetStandardArrivalFlag_Node0 N_SetStandardArrivalFlag_Node0 -- No --> E_SetStandardArrivalFlag
File: GCX016E.cbl
GIVEN: A train is either an import manifest train or an export train that failed port validation
WHEN: The arrival processing continues
THEN: Set the standard arrival flag to indicate train arrival
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment containing arrival information → extract the arrival date from the V9 segment and assign it as the train's official 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_SetTrainArrivalDatefromV9Segment(["Start Step"]) E_SetTrainArrivalDatefromV9Segment(["End Step"]) N_SetTrainArrivalDatefromV9Segment_Node0{"The system processes the V9 segment
containing arrival information"}:::decision N_SetTrainArrivalDatefromV9Segment_Node0_action["Extract the arrival date from the
V9 segment and assign it as the
train s official arrival date"]:::main N_SetTrainArrivalDatefromV9Segment_Node0 -- Yes --> N_SetTrainArrivalDatefromV9Segment_Node0_action N_SetTrainArrivalDatefromV9Segment_Node0_action --> E_SetTrainArrivalDatefromV9Segment S_SetTrainArrivalDatefromV9Segment --> N_SetTrainArrivalDatefromV9Segment_Node0 N_SetTrainArrivalDatefromV9Segment_Node0 -- No --> E_SetTrainArrivalDatefromV9Segment
File: GCX016E.cbl
GIVEN: A train arrival flag has been set (either export or standard)
WHEN: The system processes the V9 segment containing arrival information
THEN:
  • Extract the arrival date from the v9 segment
  • Assign it as the train's official arrival date
βœ“ Consolidated Acceptance Criteria
  • The system updates train status information → set the train arrived status flag to indicate the train has completed 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_SetTrainArrivedStatusFlag(["Start Step"]) E_SetTrainArrivedStatusFlag(["End Step"]) N_SetTrainArrivedStatusFlag_Node0{"The system updates train status
information"}:::decision N_SetTrainArrivedStatusFlag_Node0_action["Set the train arrived status flag
to indicate the train has completed
arrival processing"]:::main N_SetTrainArrivedStatusFlag_Node0 -- Yes --> N_SetTrainArrivedStatusFlag_Node0_action N_SetTrainArrivedStatusFlag_Node0_action --> E_SetTrainArrivedStatusFlag S_SetTrainArrivedStatusFlag --> N_SetTrainArrivedStatusFlag_Node0 N_SetTrainArrivedStatusFlag_Node0 -- No --> E_SetTrainArrivedStatusFlag
File: GCX016E.cbl
GIVEN: The train arrival date has been successfully assigned
WHEN: The system updates train status information
THEN: Set the train arrived status flag to indicate the train has completed arrival processing
βœ“ Consolidated Acceptance Criteria
  • The system continues with cargo processing → initiate arrival processing for all US cargo manifests associated with this 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_USCargoArrivalProcessing(["Start Step"]) E_USCargoArrivalProcessing(["End Step"]) N_USCargoArrivalProcessing_Node0{"The system continues with cargo
processing"}:::decision N_USCargoArrivalProcessing_Node0_action["Initiate arrival processing for all
US cargo manifests associated with
this train"]:::main N_USCargoArrivalProcessing_Node0 -- Yes --> N_USCargoArrivalProcessing_Node0_action N_USCargoArrivalProcessing_Node0_action --> E_USCargoArrivalProcessing S_USCargoArrivalProcessing --> N_USCargoArrivalProcessing_Node0 N_USCargoArrivalProcessing_Node0 -- No --> E_USCargoArrivalProcessing
File: GCX016E.cbl
GIVEN: The train arrived status flag has been set
WHEN: The system continues with cargo processing
THEN: Initiate arrival processing for all US cargo manifests associated with this train
βœ“ Consolidated Acceptance Criteria
  • The system processes AEI notification requirements → generate and send AEI arrival messages to notify relevant parties of train arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendAEIArrivalMessages(["Start Step"]) E_SendAEIArrivalMessages(["End Step"]) N_SendAEIArrivalMessages_Node0{"The system processes AEI
notification requirements"}:::decision N_SendAEIArrivalMessages_Node0_action["Generate and send AEI arrival
messages to notify relevant parties
of train arrival"]:::main N_SendAEIArrivalMessages_Node0 -- Yes --> N_SendAEIArrivalMessages_Node0_action N_SendAEIArrivalMessages_Node0_action --> E_SendAEIArrivalMessages S_SendAEIArrivalMessages --> N_SendAEIArrivalMessages_Node0 N_SendAEIArrivalMessages_Node0 -- No --> E_SendAEIArrivalMessages
File: GCX016E.cbl
GIVEN: US cargo arrival processing has been initiated
WHEN: The system processes AEI notification requirements
THEN:
  • Generate
  • Send aei arrival messages to notify relevant parties of train arrival
βœ“ Consolidated Acceptance Criteria
  • The system processes notification distribution → send email notifications to configured recipients about the train 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_SendEmailNotifications(["Start Step"]) E_SendEmailNotifications(["End Step"]) N_SendEmailNotifications_Node0{"The system processes notification
distribution"}:::decision N_SendEmailNotifications_Node0_action["Send email notifications to
configured recipients about the
train arrival event"]:::main N_SendEmailNotifications_Node0 -- Yes --> N_SendEmailNotifications_Node0_action N_SendEmailNotifications_Node0_action --> E_SendEmailNotifications S_SendEmailNotifications --> N_SendEmailNotifications_Node0 N_SendEmailNotifications_Node0 -- No --> E_SendEmailNotifications
File: GCX016E.cbl
GIVEN: AEI arrival messages have been sent
WHEN: The system processes notification distribution
THEN: Send email notifications to configured recipients about the train arrival event
βœ“ Consolidated Acceptance Criteria
  • The system finalizes arrival processing → create a log entry documenting the train arrival action with relevant details
  • System audit trail needs to be maintained → create log entry documenting the train arrival action with timestamp and relevant details
  • The system completes arrival processing → log the train arrival action with relevant details for audit and tracking purposes
  • The system logs the arrival event → record the train arrival action in system logs with timestamp and 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_LogTrainArrivalAction(["Start Step"]) E_LogTrainArrivalAction(["End Step"]) N_LogTrainArrivalAction_Node0{"The system finalizes arrival
processing"}:::decision N_LogTrainArrivalAction_Node0_action["Create a log entry documenting the
train arrival action with relevant
details"]:::main N_LogTrainArrivalAction_Node0 -- Yes --> N_LogTrainArrivalAction_Node0_action N_LogTrainArrivalAction_Node0_action --> E_LogTrainArrivalAction S_LogTrainArrivalAction --> N_LogTrainArrivalAction_Node0 N_LogTrainArrivalAction_Node1{"System audit trail needs to be
maintained"}:::decision N_LogTrainArrivalAction_Node1_action["Create log entry documenting the
train arrival action with timestamp
and relevant details"]:::main N_LogTrainArrivalAction_Node1 -- Yes --> N_LogTrainArrivalAction_Node1_action N_LogTrainArrivalAction_Node1_action --> E_LogTrainArrivalAction N_LogTrainArrivalAction_Node0 -- No --> N_LogTrainArrivalAction_Node1 N_LogTrainArrivalAction_Node2{"The system completes arrival
processing"}:::decision N_LogTrainArrivalAction_Node2_action["Log the train arrival action with
relevant details for audit and
tracking purposes"]:::main N_LogTrainArrivalAction_Node2 -- Yes --> N_LogTrainArrivalAction_Node2_action N_LogTrainArrivalAction_Node2_action --> E_LogTrainArrivalAction N_LogTrainArrivalAction_Node1 -- No --> N_LogTrainArrivalAction_Node2 N_LogTrainArrivalAction_Node3{"The system logs the arrival event"}:::decision N_LogTrainArrivalAction_Node3_action["Record the train arrival action in
system logs with timestamp and
details"]:::main N_LogTrainArrivalAction_Node3 -- Yes --> N_LogTrainArrivalAction_Node3_action N_LogTrainArrivalAction_Node3_action --> E_LogTrainArrivalAction N_LogTrainArrivalAction_Node2 -- No --> N_LogTrainArrivalAction_Node3 N_LogTrainArrivalAction_Node3 -- No --> E_LogTrainArrivalAction
File: GCX016E.cbl
GIVEN: K1 remark message processing for trains has been completed
WHEN: The system finalizes arrival processing
THEN: Create a log entry documenting the train arrival action with relevant details
File: GCX016E.cbl
GIVEN: A train arrival has been successfully processed
WHEN: System audit trail needs to be maintained
THEN:
  • Create log entry documenting the train arrival action with timestamp
  • Relevant details
File: GCX016E.cbl
GIVEN: Merlin messages have been generated for an import manifest train arrival
WHEN: The system completes arrival processing
THEN:
  • Log the train arrival action with relevant details for audit
  • Tracking purposes
File: GCX016E.cbl
GIVEN: Arrival notification message has been created
WHEN: The system logs the arrival event
THEN:
  • Record the train arrival action in system logs with timestamp
  • Details
βœ“ Consolidated Acceptance Criteria
  • The system generates external notifications → create and send a Merlin arrival notification message to inform the Merlin system of the train arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateMerlinArrivalNotification(["Start Step"]) E_GenerateMerlinArrivalNotification(["End Step"]) N_GenerateMerlinArrivalNotification_Node0{"The system generates external
notifications"}:::decision N_GenerateMerlinArrivalNotification_Node0_action["Create and send a Merlin arrival
notification message to inform the
Merlin system of the train arrival"]:::main N_GenerateMerlinArrivalNotification_Node0 -- Yes --> N_GenerateMerlinArrivalNotification_Node0_action N_GenerateMerlinArrivalNotification_Node0_action --> E_GenerateMerlinArrivalNotification S_GenerateMerlinArrivalNotification --> N_GenerateMerlinArrivalNotification_Node0 N_GenerateMerlinArrivalNotification_Node0 -- No --> E_GenerateMerlinArrivalNotification
File: GCX016E.cbl
GIVEN: The train status has been updated in the database
WHEN: The system generates external notifications
THEN:
  • Create
  • Send a merlin arrival notification message to inform the merlin system of the train arrival
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment → the disposition code must be 'RC' to proceed with 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_ValidateRCDispositionCode(["Start Step"]) E_ValidateRCDispositionCode(["End Step"]) N_ValidateRCDispositionCode_Node0{"The system processes the V9 segment"}:::decision N_ValidateRCDispositionCode_Node0_action["The disposition code must be RC to
proceed with review complete
processing"]:::main N_ValidateRCDispositionCode_Node0 -- Yes --> N_ValidateRCDispositionCode_Node0_action N_ValidateRCDispositionCode_Node0_action --> E_ValidateRCDispositionCode S_ValidateRCDispositionCode --> N_ValidateRCDispositionCode_Node0 N_ValidateRCDispositionCode_Node0 -- No --> E_ValidateRCDispositionCode
File: GCX016E.cbl
GIVEN: A V9 segment is received with a disposition code
WHEN: The system processes the V9 segment
THEN: The disposition code must be 'RC' to proceed with review complete processing
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine if it's an export manifest train → the system checks the train ID suffix to identify export manifest 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_IsTrainExportManifest(["Start Step"]) E_IsTrainExportManifest(["End Step"]) N_IsTrainExportManifest_Node0{"The system needs to determine if it
s an export manifest train"}:::decision N_IsTrainExportManifest_Node0_action["The system checks the train ID
suffix to identify export manifest
trains"]:::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: GCX016E.cbl
GIVEN: A train record exists in the system
WHEN: The system needs to determine if it's an export manifest train
THEN: The system checks the train ID suffix to identify export manifest trains
βœ“ Consolidated Acceptance Criteria
  • The system checks the train ID suffix → if the train ID ends with 'T', it is classified as an export manifest train, otherwise it is processed as a regular train
  • The system checks the last character of the train ID → if the train ID ends with 'T', identify as export manifest train, otherwise identify as import manifest train
  • If the train ID suffix → if train ID ends with 'T', classify as export manifest train, otherwise process as standard import 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_TrainIDendswithT(["Start Step"]) E_TrainIDendswithT(["End Step"]) N_TrainIDendswithT_Node0{"The system checks the train ID
suffix"}:::decision N_TrainIDendswithT_Node0_action["If the train ID ends with T , it is
classified as an export manifest
train, otherwise it is processed as
a regular train"]:::main N_TrainIDendswithT_Node0 -- Yes --> N_TrainIDendswithT_Node0_action N_TrainIDendswithT_Node0_action --> E_TrainIDendswithT S_TrainIDendswithT --> N_TrainIDendswithT_Node0 N_TrainIDendswithT_Node1{"The system checks the last
character of the train ID"}:::decision N_TrainIDendswithT_Node1_action["If the train ID ends with T ,
identify as export manifest train,
otherwise identify as import
manifest train"]:::main N_TrainIDendswithT_Node1 -- Yes --> N_TrainIDendswithT_Node1_action N_TrainIDendswithT_Node1_action --> E_TrainIDendswithT N_TrainIDendswithT_Node0 -- No --> N_TrainIDendswithT_Node1 N_TrainIDendswithT_Node2{"The system evaluates the train ID
suffix"}:::decision N_TrainIDendswithT_Node2_action["If train ID ends with T , classify
as export manifest train, otherwise
process as standard import train"]:::main N_TrainIDendswithT_Node2 -- Yes --> N_TrainIDendswithT_Node2_action N_TrainIDendswithT_Node2_action --> E_TrainIDendswithT N_TrainIDendswithT_Node1 -- No --> N_TrainIDendswithT_Node2 N_TrainIDendswithT_Node2 -- No --> E_TrainIDendswithT
File: GCX016E.cbl
GIVEN: A train ID is available for processing
WHEN: The system checks the train ID suffix
THEN: If the train ID ends with 'T', it is classified as an export manifest train, otherwise it is processed as a regular train
File: GCX016E.cbl
GIVEN: A train arrival event is received with POD or AAD disposition code and train ID has been extracted from M10 vessel name segment
WHEN: The system checks the last character of the train ID
THEN: If the train ID ends with 'T', identify as export manifest train, otherwise identify as import manifest train
File: GCX016E.cbl
GIVEN: A train arrival event (POD/AAD disposition) is being processed
WHEN: The system evaluates the train ID suffix
THEN: If train ID ends with 'T', classify as export manifest train, otherwise process as standard import train
βœ“ Consolidated Acceptance Criteria
  • The system processes the train classification → the train is marked with export manifest status 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_MarkasExportManifestTrain(["Start Step"]) E_MarkasExportManifestTrain(["End Step"]) N_MarkasExportManifestTrain_Node0{"The system processes the train
classification"}:::decision N_MarkasExportManifestTrain_Node0_action["The train is marked with export
manifest status for subsequent
processing"]:::main N_MarkasExportManifestTrain_Node0 -- Yes --> N_MarkasExportManifestTrain_Node0_action N_MarkasExportManifestTrain_Node0_action --> E_MarkasExportManifestTrain S_MarkasExportManifestTrain --> N_MarkasExportManifestTrain_Node0 N_MarkasExportManifestTrain_Node0 -- No --> E_MarkasExportManifestTrain
File: GCX016E.cbl
GIVEN: A train has been identified as an export manifest train
WHEN: The system processes the train classification
THEN: The train is marked with export manifest status for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The system updates the train status → the review complete flag is set to indicate completion of the review 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_SetReviewCompleteFlag(["Start Step"]) E_SetReviewCompleteFlag(["End Step"]) N_SetReviewCompleteFlag_Node0{"The system updates the train status"}:::decision N_SetReviewCompleteFlag_Node0_action["The review complete flag is set to
indicate completion of the review
process"]:::main N_SetReviewCompleteFlag_Node0 -- Yes --> N_SetReviewCompleteFlag_Node0_action N_SetReviewCompleteFlag_Node0_action --> E_SetReviewCompleteFlag S_SetReviewCompleteFlag --> N_SetReviewCompleteFlag_Node0 N_SetReviewCompleteFlag_Node0 -- No --> E_SetReviewCompleteFlag
File: GCX016E.cbl
GIVEN: A valid RC disposition code has been processed for a train
WHEN: The system updates the train status
THEN: The review complete flag is set to indicate completion of the review process
βœ“ Consolidated Acceptance Criteria
  • The system updates the train records → the train status is updated in the GCWTL train list segments with the new review complete 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_UpdateTrainStatusinGCWTL(["Start Step"]) E_UpdateTrainStatusinGCWTL(["End Step"]) N_UpdateTrainStatusinGCWTL_Node0{"The system updates the train
records"}:::decision N_UpdateTrainStatusinGCWTL_Node0_action["The train status is updated in the
GCWTL train list segments with the
new review complete status"]:::main N_UpdateTrainStatusinGCWTL_Node0 -- Yes --> N_UpdateTrainStatusinGCWTL_Node0_action N_UpdateTrainStatusinGCWTL_Node0_action --> E_UpdateTrainStatusinGCWTL S_UpdateTrainStatusinGCWTL --> N_UpdateTrainStatusinGCWTL_Node0 N_UpdateTrainStatusinGCWTL_Node0 -- No --> E_UpdateTrainStatusinGCWTL
File: GCX016E.cbl
GIVEN: The review complete flag has been set for a train
WHEN: The system updates the train records
THEN: The train status is updated in the GCWTL train list segments with the new review complete status
βœ“ Consolidated Acceptance Criteria
  • The system completes the status update → the review complete action is logged with appropriate 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_LogReviewCompleteAction(["Start Step"]) E_LogReviewCompleteAction(["End Step"]) N_LogReviewCompleteAction_Node0{"The system completes the status
update"}:::decision N_LogReviewCompleteAction_Node0_action["The review complete action is
logged with appropriate details for
audit purposes"]:::main N_LogReviewCompleteAction_Node0 -- Yes --> N_LogReviewCompleteAction_Node0_action N_LogReviewCompleteAction_Node0_action --> E_LogReviewCompleteAction S_LogReviewCompleteAction --> N_LogReviewCompleteAction_Node0 N_LogReviewCompleteAction_Node0 -- No --> E_LogReviewCompleteAction
File: GCX016E.cbl
GIVEN: A train review complete action has been processed
WHEN: The system completes the status update
THEN: The review complete action is logged with appropriate details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional remark information → if K1 remark messages are present, they are processed for inclusion in the notification, otherwise the notification proceeds without remarks
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_K1RemarkMessagePresent(["Start Step"]) E_K1RemarkMessagePresent(["End Step"]) N_K1RemarkMessagePresent_Node0{"The system checks for additional
remark information"}:::decision N_K1RemarkMessagePresent_Node0_action["If K1 remark messages are present,
they are processed for inclusion in
the notification, otherwise the
notification proceeds without
remarks"]:::main N_K1RemarkMessagePresent_Node0 -- Yes --> N_K1RemarkMessagePresent_Node0_action N_K1RemarkMessagePresent_Node0_action --> E_K1RemarkMessagePresent S_K1RemarkMessagePresent --> N_K1RemarkMessagePresent_Node0 N_K1RemarkMessagePresent_Node0 -- No --> E_K1RemarkMessagePresent
File: GCX016E.cbl
GIVEN: A review complete notification is being prepared
WHEN: The system checks for additional remark information
THEN: If K1 remark messages are present, they are processed for inclusion in the notification, otherwise the notification proceeds without remarks
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segments → the free-form text from K1 segments is extracted and formatted for inclusion in 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_ProcessK1FreeFormText(["Start Step"]) E_ProcessK1FreeFormText(["End Step"]) N_ProcessK1FreeFormText_Node0{"The system processes the K1
segments"}:::decision N_ProcessK1FreeFormText_Node0_action["The free-form text from K1 segments
is extracted and formatted for
inclusion in notifications"]:::main N_ProcessK1FreeFormText_Node0 -- Yes --> N_ProcessK1FreeFormText_Node0_action N_ProcessK1FreeFormText_Node0_action --> E_ProcessK1FreeFormText S_ProcessK1FreeFormText --> N_ProcessK1FreeFormText_Node0 N_ProcessK1FreeFormText_Node0 -- No --> E_ProcessK1FreeFormText
File: GCX016E.cbl
GIVEN: K1 remark messages are present in the transaction
WHEN: The system processes the K1 segments
THEN:
  • The free-form text from k1 segments is extracted
  • Formatted for inclusion in notifications
βœ“ Consolidated Acceptance Criteria
  • The system builds the notification message → the processed K1 comments are added to the notification 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_AddK1CommentstoNotification(["Start Step"]) E_AddK1CommentstoNotification(["End Step"]) N_AddK1CommentstoNotification_Node0{"The system builds the notification
message"}:::decision N_AddK1CommentstoNotification_Node0_action["The processed K1 comments are added
to the notification message content"]:::main N_AddK1CommentstoNotification_Node0 -- Yes --> N_AddK1CommentstoNotification_Node0_action N_AddK1CommentstoNotification_Node0_action --> E_AddK1CommentstoNotification S_AddK1CommentstoNotification --> N_AddK1CommentstoNotification_Node0 N_AddK1CommentstoNotification_Node0 -- No --> E_AddK1CommentstoNotification
File: GCX016E.cbl
GIVEN: K1 free-form text has been processed
WHEN: The system builds the notification message
THEN: The processed K1 comments are added to the notification message content
βœ“ Consolidated Acceptance Criteria
  • The system sends the notification → the notification is transmitted through the Merlin messaging system 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_SendReviewCompleteNotification(["Start Step"]) E_SendReviewCompleteNotification(["End Step"]) N_SendReviewCompleteNotification_Node0{"The system sends the notification"}:::decision N_SendReviewCompleteNotification_Node0_action["The notification is transmitted
through the Merlin messaging system
to appropriate recipients"]:::main N_SendReviewCompleteNotification_Node0 -- Yes --> N_SendReviewCompleteNotification_Node0_action N_SendReviewCompleteNotification_Node0_action --> E_SendReviewCompleteNotification S_SendReviewCompleteNotification --> N_SendReviewCompleteNotification_Node0 N_SendReviewCompleteNotification_Node0 -- No --> E_SendReviewCompleteNotification
File: GCX016E.cbl
GIVEN: A complete review complete notification message has been prepared
WHEN: The system sends the notification
THEN: The notification is transmitted through the Merlin messaging system to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the review complete processing → the train processing status is updated to indicate successful completion of 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_UpdateTrainProcessingStatus(["Start Step"]) E_UpdateTrainProcessingStatus(["End Step"]) N_UpdateTrainProcessingStatus_Node0{"The system finalizes the review
complete processing"}:::decision N_UpdateTrainProcessingStatus_Node0_action["The train processing status is
updated to indicate successful
completion of review complete
processing"]:::main N_UpdateTrainProcessingStatus_Node0 -- Yes --> N_UpdateTrainProcessingStatus_Node0_action N_UpdateTrainProcessingStatus_Node0_action --> E_UpdateTrainProcessingStatus S_UpdateTrainProcessingStatus --> N_UpdateTrainProcessingStatus_Node0 N_UpdateTrainProcessingStatus_Node0 -- No --> E_UpdateTrainProcessingStatus
File: GCX016E.cbl
GIVEN: The review complete notification has been sent
WHEN: The system finalizes the review complete processing
THEN: The train processing status is updated to indicate successful completion of review complete processing
βœ“ Consolidated Acceptance Criteria
  • The system accesses the train status information → the current train status must be retrieved for arrival status evaluation
  • The system checks the train's current status → the system retrieves current train status information for cancellation decision making
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 accesses the train
status information"}:::decision N_CheckCurrentTrainStatus_Node0_action["The current train status must be
retrieved for arrival status
evaluation"]:::main N_CheckCurrentTrainStatus_Node0 -- Yes --> N_CheckCurrentTrainStatus_Node0_action N_CheckCurrentTrainStatus_Node0_action --> E_CheckCurrentTrainStatus S_CheckCurrentTrainStatus --> N_CheckCurrentTrainStatus_Node0 N_CheckCurrentTrainStatus_Node1{"The system checks the train s
current status"}:::decision N_CheckCurrentTrainStatus_Node1_action["The system retrieves current train
status information for cancellation
decision making"]:::main N_CheckCurrentTrainStatus_Node1 -- Yes --> N_CheckCurrentTrainStatus_Node1_action N_CheckCurrentTrainStatus_Node1_action --> E_CheckCurrentTrainStatus N_CheckCurrentTrainStatus_Node0 -- No --> N_CheckCurrentTrainStatus_Node1 N_CheckCurrentTrainStatus_Node1 -- No --> E_CheckCurrentTrainStatus
File: GCX016E.cbl
GIVEN: A valid train ID exists in the system
WHEN: The system accesses the train status information
THEN: The current train status must be retrieved for arrival status evaluation
File: GCX016E.cbl
GIVEN: A valid train has been found in the system
WHEN: The system checks the train's current status
THEN: The system retrieves current train status information for cancellation decision making
βœ“ Consolidated Acceptance Criteria
  • If the train's arrival status → if the train has already arrived, generate a warning; if not arrived, proceed with OCA disposition processing
  • If if the train status indicates it has already arrived → if train has already arrived, end OCA processing OR if train has not arrived, generate train not arrived 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_TrainAlreadyArrived(["Start Step"]) E_TrainAlreadyArrived(["End Step"]) N_TrainAlreadyArrived_Node0{"The system evaluates the train s
arrival status"}:::decision N_TrainAlreadyArrived_Node0_action["If the train has already arrived,
generate a warning if not arrived,
proceed with OCA disposition
processing"]:::main N_TrainAlreadyArrived_Node0 -- Yes --> N_TrainAlreadyArrived_Node0_action N_TrainAlreadyArrived_Node0_action --> E_TrainAlreadyArrived S_TrainAlreadyArrived --> N_TrainAlreadyArrived_Node0 N_TrainAlreadyArrived_Node1{"The system evaluates if the train
status indicates it has already
arrived"}:::decision N_TrainAlreadyArrived_Node1_action["If train has already arrived, end
OCA processing OR if train has not
arrived, generate train not arrived
warning"]:::main N_TrainAlreadyArrived_Node1 -- Yes --> N_TrainAlreadyArrived_Node1_action N_TrainAlreadyArrived_Node1_action --> E_TrainAlreadyArrived N_TrainAlreadyArrived_Node0 -- No --> N_TrainAlreadyArrived_Node1 N_TrainAlreadyArrived_Node1 -- No --> E_TrainAlreadyArrived
File: GCX016E.cbl
GIVEN: The current train status has been retrieved
WHEN: The system evaluates the train's arrival status
THEN: If the train has already arrived, generate a warning; if not arrived, proceed with OCA disposition processing
File: GCX016E.cbl
GIVEN: Train arrival status information is available
WHEN: The system evaluates if the train status indicates it has already arrived
THEN: If train has already arrived, end OCA processing OR if train has not arrived, generate train not arrived warning
βœ“ Consolidated Acceptance Criteria
  • An OCA disposition code is processed → a train not arrived warning message must be generated and logged
  • The system processes OCA disposition code for the train → a train not arrived warning is generated 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_GenerateTrainNotArrivedWarning(["Start Step"]) E_GenerateTrainNotArrivedWarning(["End Step"]) N_GenerateTrainNotArrivedWarning_Node0{"An OCA disposition code is
processed"}:::decision N_GenerateTrainNotArrivedWarning_Node0_action["A train not arrived warning message
must be generated and logged"]:::main N_GenerateTrainNotArrivedWarning_Node0 -- Yes --> N_GenerateTrainNotArrivedWarning_Node0_action N_GenerateTrainNotArrivedWarning_Node0_action --> E_GenerateTrainNotArrivedWarning S_GenerateTrainNotArrivedWarning --> N_GenerateTrainNotArrivedWarning_Node0 N_GenerateTrainNotArrivedWarning_Node1{"The system processes OCA
disposition code for the train"}:::decision N_GenerateTrainNotArrivedWarning_Node1_action["A train not arrived warning is
generated for further processing"]:::main N_GenerateTrainNotArrivedWarning_Node1 -- Yes --> N_GenerateTrainNotArrivedWarning_Node1_action N_GenerateTrainNotArrivedWarning_Node1_action --> E_GenerateTrainNotArrivedWarning N_GenerateTrainNotArrivedWarning_Node0 -- No --> N_GenerateTrainNotArrivedWarning_Node1 N_GenerateTrainNotArrivedWarning_Node1 -- No --> E_GenerateTrainNotArrivedWarning
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Either the train is not found in the system OR the train has already arrived
WHEN: An OCA disposition code is processed
THEN:
  • A train not arrived warning message must be generated
  • Logged
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Train is not found in USCS system OR train exists but has not arrived
WHEN: The system processes OCA disposition code for the train
THEN: A train not arrived warning is generated for further processing
βœ“ Consolidated Acceptance Criteria
  • An OCA disposition code is processed → the OCA disposition action must be logged in the system 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_LogOCADispositionAction(["Start Step"]) E_LogOCADispositionAction(["End Step"]) N_LogOCADispositionAction_Node0{"An OCA disposition code is
processed"}:::decision N_LogOCADispositionAction_Node0_action["The OCA disposition action must be
logged in the system audit trail"]:::main N_LogOCADispositionAction_Node0 -- Yes --> N_LogOCADispositionAction_Node0_action N_LogOCADispositionAction_Node0_action --> E_LogOCADispositionAction S_LogOCADispositionAction --> N_LogOCADispositionAction_Node0 N_LogOCADispositionAction_Node0 -- No --> E_LogOCADispositionAction
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train exists in the system and has not yet arrived
WHEN: An OCA disposition code is processed
THEN: The OCA disposition action must be logged in the system audit trail
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival cancellation → a re-arrival flag must be set to enable future arrival processing for this 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_SetTrainReArrivalFlag(["Start Step"]) E_SetTrainReArrivalFlag(["End Step"]) N_SetTrainReArrivalFlag_Node0{"The system processes the arrival
cancellation"}:::decision N_SetTrainReArrivalFlag_Node0_action["A re-arrival flag must be set to
enable future arrival processing for
this train"]:::main N_SetTrainReArrivalFlag_Node0 -- Yes --> N_SetTrainReArrivalFlag_Node0_action N_SetTrainReArrivalFlag_Node0_action --> E_SetTrainReArrivalFlag S_SetTrainReArrivalFlag --> N_SetTrainReArrivalFlag_Node0 N_SetTrainReArrivalFlag_Node0 -- No --> E_SetTrainReArrivalFlag
File: GCX016E.cbl
GIVEN: An OCA disposition has been successfully logged for a non-arrived train
WHEN: The system processes the arrival cancellation
THEN: A re-arrival flag must be set to enable future arrival processing for this train
βœ“ Consolidated Acceptance Criteria
  • The system updates the train status database → the train status must be changed to 'Not Arrived' to reflect the cancelled arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateTrainStatustoNotArrived(["Start Step"]) E_UpdateTrainStatustoNotArrived(["End Step"]) N_UpdateTrainStatustoNotArrived_Node0{"The system updates the train status
database"}:::decision N_UpdateTrainStatustoNotArrived_Node0_action["The train status must be changed to
Not Arrived to reflect the cancelled
arrival"]:::main N_UpdateTrainStatustoNotArrived_Node0 -- Yes --> N_UpdateTrainStatustoNotArrived_Node0_action N_UpdateTrainStatustoNotArrived_Node0_action --> E_UpdateTrainStatustoNotArrived S_UpdateTrainStatustoNotArrived --> N_UpdateTrainStatustoNotArrived_Node0 N_UpdateTrainStatustoNotArrived_Node0 -- No --> E_UpdateTrainStatustoNotArrived
File: GCX016E.cbl
GIVEN: The re-arrival flag has been set for the train
WHEN: The system updates the train status database
THEN: The train status must be changed to 'Not Arrived' to reflect the cancelled arrival
βœ“ Consolidated Acceptance Criteria
  • The system prepares notifications → a Merlin notification message must be created with appropriate train and disposition information
  • The system prepares business notifications → the system creates a formatted Merlin 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_CreateMerlinNotificationMessage(["Start Step"]) E_CreateMerlinNotificationMessage(["End Step"]) N_CreateMerlinNotificationMessage_Node0{"The system prepares notifications"}:::decision N_CreateMerlinNotificationMessage_Node0_action["A Merlin notification message must
be created with appropriate train
and disposition information"]:::main N_CreateMerlinNotificationMessage_Node0 -- Yes --> N_CreateMerlinNotificationMessage_Node0_action N_CreateMerlinNotificationMessage_Node0_action --> E_CreateMerlinNotificationMessage S_CreateMerlinNotificationMessage --> N_CreateMerlinNotificationMessage_Node0 N_CreateMerlinNotificationMessage_Node1{"The system prepares business
notifications"}:::decision N_CreateMerlinNotificationMessage_Node1_action["The system creates a formatted
Merlin notification message"]:::main N_CreateMerlinNotificationMessage_Node1 -- Yes --> N_CreateMerlinNotificationMessage_Node1_action N_CreateMerlinNotificationMessage_Node1_action --> E_CreateMerlinNotificationMessage N_CreateMerlinNotificationMessage_Node0 -- No --> N_CreateMerlinNotificationMessage_Node1 N_CreateMerlinNotificationMessage_Node1 -- No --> E_CreateMerlinNotificationMessage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Either a warning condition exists OR the train status has been updated to not arrived
WHEN: The system prepares notifications
THEN:
  • A merlin notification message must be created with appropriate train
  • Disposition information
File: GCX016E.cbl
GIVEN: Train arrival cancellation warning has been generated or non-arrived warning has been logged
WHEN: The system prepares business notifications
THEN: The system creates a formatted Merlin notification message
βœ“ Consolidated Acceptance Criteria
  • K1 segment remark messages exist in the current transaction → the K1 remark messages must be included in the Merlin 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_IncludeK1RemarkMessagesifPresent(["Start Step"]) E_IncludeK1RemarkMessagesifPresent(["End Step"]) N_IncludeK1RemarkMessagesifPresent_Node0{"K1 segment remark messages exist in
the current transaction"}:::decision N_IncludeK1RemarkMessagesifPresent_Node0_action["The K1 remark messages must be
included in the Merlin notification
message"]:::main N_IncludeK1RemarkMessagesifPresent_Node0 -- Yes --> N_IncludeK1RemarkMessagesifPresent_Node0_action N_IncludeK1RemarkMessagesifPresent_Node0_action --> E_IncludeK1RemarkMessagesifPresent S_IncludeK1RemarkMessagesifPresent --> N_IncludeK1RemarkMessagesifPresent_Node0 N_IncludeK1RemarkMessagesifPresent_Node0 -- No --> E_IncludeK1RemarkMessagesifPresent
File: GCX016E.cbl
GIVEN: A Merlin notification message is being created
WHEN: K1 segment remark messages exist in the current transaction
THEN: The K1 remark messages must be included in the Merlin notification message
βœ“ Consolidated Acceptance Criteria
  • The system delivers the notification → the warning message must be sent to the operations team via the Merlin messaging system
  • The system sends the warning to operations team → warning notification is successfully delivered to operations team for immediate attention
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendWarningtoOperationsTeam(["Start Step"]) E_SendWarningtoOperationsTeam(["End Step"]) N_SendWarningtoOperationsTeam_Node0{"The system delivers the
notification"}:::decision N_SendWarningtoOperationsTeam_Node0_action["The warning message must be sent to
the operations team via the Merlin
messaging system"]:::main N_SendWarningtoOperationsTeam_Node0 -- Yes --> N_SendWarningtoOperationsTeam_Node0_action N_SendWarningtoOperationsTeam_Node0_action --> E_SendWarningtoOperationsTeam S_SendWarningtoOperationsTeam --> N_SendWarningtoOperationsTeam_Node0 N_SendWarningtoOperationsTeam_Node1{"The system sends the warning to
operations team"}:::decision N_SendWarningtoOperationsTeam_Node1_action["Warning notification is
successfully delivered to operations
team for immediate attention"]:::main N_SendWarningtoOperationsTeam_Node1 -- Yes --> N_SendWarningtoOperationsTeam_Node1_action N_SendWarningtoOperationsTeam_Node1_action --> E_SendWarningtoOperationsTeam N_SendWarningtoOperationsTeam_Node0 -- No --> N_SendWarningtoOperationsTeam_Node1 N_SendWarningtoOperationsTeam_Node1 -- No --> E_SendWarningtoOperationsTeam
File: GCX016E.cbl
GIVEN: A Merlin notification message has been created with or without K1 remarks
WHEN: The system delivers the notification
THEN: The warning message must be sent to the operations team via the Merlin messaging system
File: GCX016E.cbl
GIVEN: Warning notification is complete with train details and re-arrival flag is set
WHEN: The system sends the warning to operations team
THEN: Warning notification is successfully delivered to operations team for immediate attention
βœ“ Consolidated Acceptance Criteria
  • The system completes the OCA processing → the re-arrival process must be triggered to allow the train to be processed for arrival again in the future
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_TriggerReArrivalProcess(["Start Step"]) E_TriggerReArrivalProcess(["End Step"]) N_TriggerReArrivalProcess_Node0{"The system completes the OCA
processing"}:::decision N_TriggerReArrivalProcess_Node0_action["The re-arrival process must be
triggered to allow the train to be
processed for arrival again in the
future"]:::main N_TriggerReArrivalProcess_Node0 -- Yes --> N_TriggerReArrivalProcess_Node0_action N_TriggerReArrivalProcess_Node0_action --> E_TriggerReArrivalProcess S_TriggerReArrivalProcess --> N_TriggerReArrivalProcess_Node0 N_TriggerReArrivalProcess_Node0 -- No --> E_TriggerReArrivalProcess
File: GCX016E.cbl
GIVEN: The warning has been sent to the operations team
WHEN: The system completes the OCA processing
THEN: The re-arrival process must be triggered to allow the train to be processed for arrival again in the future
βœ“ Consolidated Acceptance Criteria
  • All OCA processing steps are completed → a processing complete log entry must be created to document the successful completion of OCA 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_LogProcessingComplete(["Start Step"]) E_LogProcessingComplete(["End Step"]) N_LogProcessingComplete_Node0{"All OCA processing steps are
completed"}:::decision N_LogProcessingComplete_Node0_action["A processing complete log entry
must be created to document the
successful completion of OCA
handling"]:::main N_LogProcessingComplete_Node0 -- Yes --> N_LogProcessingComplete_Node0_action N_LogProcessingComplete_Node0_action --> E_LogProcessingComplete S_LogProcessingComplete --> N_LogProcessingComplete_Node0 N_LogProcessingComplete_Node0 -- No --> E_LogProcessingComplete
File: GCX016E.cbl
GIVEN: The re-arrival process has been triggered
WHEN: All OCA processing steps are completed
THEN: A processing complete log entry must be created to document the successful completion of OCA handling
βœ“ Consolidated Acceptance Criteria
  • The system finishes the current segment processing → processing must continue to the next message segment in the transaction
  • The system finishes K1 segment processing → the system should continue to process the next message 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_ContinuetoNextMessageSegment(["Start Step"]) E_ContinuetoNextMessageSegment(["End Step"]) N_ContinuetoNextMessageSegment_Node0{"The system finishes the current
segment processing"}:::decision N_ContinuetoNextMessageSegment_Node0_action["Processing must continue to the
next message segment in the
transaction"]:::main N_ContinuetoNextMessageSegment_Node0 -- Yes --> N_ContinuetoNextMessageSegment_Node0_action N_ContinuetoNextMessageSegment_Node0_action --> E_ContinuetoNextMessageSegment S_ContinuetoNextMessageSegment --> N_ContinuetoNextMessageSegment_Node0 N_ContinuetoNextMessageSegment_Node1{"The system finishes K1 segment
processing"}:::decision N_ContinuetoNextMessageSegment_Node1_action["The system should continue to
process the next message segment"]:::main N_ContinuetoNextMessageSegment_Node1 -- Yes --> N_ContinuetoNextMessageSegment_Node1_action N_ContinuetoNextMessageSegment_Node1_action --> E_ContinuetoNextMessageSegment N_ContinuetoNextMessageSegment_Node0 -- No --> N_ContinuetoNextMessageSegment_Node1 N_ContinuetoNextMessageSegment_Node1 -- No --> E_ContinuetoNextMessageSegment
File: GCX016E.cbl
GIVEN: OCA processing has been completed and logged
WHEN: The system finishes the current segment processing
THEN: Processing must continue to the next message segment in the transaction
File: GCX016E.cbl
GIVEN: K1 processing is complete (either with train context or without)
WHEN: The system finishes K1 segment processing
THEN: The system should continue to process the next message segment
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment → the system initiates train arrival 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_V9SegmentwithCOCDispositionCodeReceived(["Start Step"]) E_V9SegmentwithCOCDispositionCodeReceived(["End Step"]) N_V9SegmentwithCOCDispositionCodeReceived_Node0{"The system processes the V9 segment"}:::decision N_V9SegmentwithCOCDispositionCodeReceived_Node0_action["The system initiates train arrival
cancellation processing"]:::main N_V9SegmentwithCOCDispositionCodeReceived_Node0 -- Yes --> N_V9SegmentwithCOCDispositionCodeReceived_Node0_action N_V9SegmentwithCOCDispositionCodeReceived_Node0_action --> E_V9SegmentwithCOCDispositionCodeReceived S_V9SegmentwithCOCDispositionCodeReceived --> N_V9SegmentwithCOCDispositionCodeReceived_Node0 N_V9SegmentwithCOCDispositionCodeReceived_Node0 -- No --> E_V9SegmentwithCOCDispositionCodeReceived
File: GCX016E.cbl
GIVEN: A V9 segment is received with COC disposition code
WHEN: The system processes the V9 segment
THEN: The system initiates train arrival cancellation processing
βœ“ Consolidated Acceptance Criteria
  • The system attempts to process train arrival cancellation → the system logs a train not found error and terminates the cancellation 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_LogTrainNotFoundError(["Start Step"]) E_LogTrainNotFoundError(["End Step"]) N_LogTrainNotFoundError_Node0{"The system attempts to process
train arrival cancellation"}:::decision N_LogTrainNotFoundError_Node0_action["The system logs a train not found
error and terminates the
cancellation process"]:::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: GCX016E.cbl
GIVEN: A train ID cannot be found in the train management system
WHEN: The system attempts to process train arrival cancellation
THEN:
  • The system logs a train not found error
  • Terminates the cancellation process
βœ“ Consolidated Acceptance Criteria
  • If if the train is currently in arrived status → the system determines whether to proceed with arrival cancellation or log a warning for non-arrived 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_TrainCurrentlyArrived(["Start Step"]) E_TrainCurrentlyArrived(["End Step"]) N_TrainCurrentlyArrived_Node0{"The system evaluates if the train
is currently in arrived status"}:::decision N_TrainCurrentlyArrived_Node0_action["The system determines whether to
proceed with arrival cancellation or
log a warning for non-arrived trains"]:::main N_TrainCurrentlyArrived_Node0 -- Yes --> N_TrainCurrentlyArrived_Node0_action N_TrainCurrentlyArrived_Node0_action --> E_TrainCurrentlyArrived S_TrainCurrentlyArrived --> N_TrainCurrentlyArrived_Node0 N_TrainCurrentlyArrived_Node0 -- No --> E_TrainCurrentlyArrived
File: GCX016E.cbl
GIVEN: The current train status has been retrieved
WHEN: The system evaluates if the train is currently in arrived status
THEN: The system determines whether to proceed with arrival cancellation or log a warning for non-arrived trains
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival cancellation → the system removes the arrival status from the train 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_CancelTrainArrivalStatus(["Start Step"]) E_CancelTrainArrivalStatus(["End Step"]) N_CancelTrainArrivalStatus_Node0{"The system processes the arrival
cancellation"}:::decision N_CancelTrainArrivalStatus_Node0_action["The system removes the arrival
status from the train record"]:::main N_CancelTrainArrivalStatus_Node0 -- Yes --> N_CancelTrainArrivalStatus_Node0_action N_CancelTrainArrivalStatus_Node0_action --> E_CancelTrainArrivalStatus S_CancelTrainArrivalStatus --> N_CancelTrainArrivalStatus_Node0 N_CancelTrainArrivalStatus_Node0 -- No --> E_CancelTrainArrivalStatus
File: GCX016E.cbl
GIVEN: A train is currently in arrived status and cancellation is requested
WHEN: The system processes the arrival cancellation
THEN: The system removes the arrival status from the train record
βœ“ Consolidated Acceptance Criteria
  • The system updates train arrival information → the system sets the train arrival date to null
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateTrainArrivalDatetoNull(["Start Step"]) E_UpdateTrainArrivalDatetoNull(["End Step"]) N_UpdateTrainArrivalDatetoNull_Node0{"The system updates train arrival
information"}:::decision N_UpdateTrainArrivalDatetoNull_Node0_action["The system sets the train arrival
date to null"]:::main N_UpdateTrainArrivalDatetoNull_Node0 -- Yes --> N_UpdateTrainArrivalDatetoNull_Node0_action N_UpdateTrainArrivalDatetoNull_Node0_action --> E_UpdateTrainArrivalDatetoNull S_UpdateTrainArrivalDatetoNull --> N_UpdateTrainArrivalDatetoNull_Node0 N_UpdateTrainArrivalDatetoNull_Node0 -- No --> E_UpdateTrainArrivalDatetoNull
File: GCX016E.cbl
GIVEN: Train arrival status has been cancelled
WHEN: The system updates train arrival information
THEN: The system sets the train arrival date to null
βœ“ Consolidated Acceptance Criteria
  • The system completes arrival cancellation processing → the system clears all train arrival flags and 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_ClearTrainArrivalFlags(["Start Step"]) E_ClearTrainArrivalFlags(["End Step"]) N_ClearTrainArrivalFlags_Node0{"The system completes arrival
cancellation processing"}:::decision N_ClearTrainArrivalFlags_Node0_action["The system clears all train arrival
flags and indicators"]:::main N_ClearTrainArrivalFlags_Node0 -- Yes --> N_ClearTrainArrivalFlags_Node0_action N_ClearTrainArrivalFlags_Node0_action --> E_ClearTrainArrivalFlags S_ClearTrainArrivalFlags --> N_ClearTrainArrivalFlags_Node0 N_ClearTrainArrivalFlags_Node0 -- No --> E_ClearTrainArrivalFlags
File: GCX016E.cbl
GIVEN: Train arrival date has been nullified
WHEN: The system completes arrival cancellation processing
THEN:
  • The system clears all train arrival flags
  • Indicators
βœ“ Consolidated Acceptance Criteria
  • The system completes the cancellation process → the system logs the COC arrival cancellation 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_LogCOCArrivalCancellationAction(["Start Step"]) E_LogCOCArrivalCancellationAction(["End Step"]) N_LogCOCArrivalCancellationAction_Node0{"The system completes the
cancellation process"}:::decision N_LogCOCArrivalCancellationAction_Node0_action["The system logs the COC arrival
cancellation action for audit
purposes"]:::main N_LogCOCArrivalCancellationAction_Node0 -- Yes --> N_LogCOCArrivalCancellationAction_Node0_action N_LogCOCArrivalCancellationAction_Node0_action --> E_LogCOCArrivalCancellationAction S_LogCOCArrivalCancellationAction --> N_LogCOCArrivalCancellationAction_Node0 N_LogCOCArrivalCancellationAction_Node0 -- No --> E_LogCOCArrivalCancellationAction
File: GCX016E.cbl
GIVEN: Train arrival flags have been cleared
WHEN: The system completes the cancellation process
THEN: The system logs the COC arrival cancellation action for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system generates operational notifications → the system creates a train arrival cancellation warning 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_GenerateTrainArrivalCancellationWarning(["Start Step"]) E_GenerateTrainArrivalCancellationWarning(["End Step"]) N_GenerateTrainArrivalCancellationWarning_Node0{"The system generates operational
notifications"}:::decision N_GenerateTrainArrivalCancellationWarning_Node0_action["The system creates a train arrival
cancellation warning message"]:::main N_GenerateTrainArrivalCancellationWarning_Node0 -- Yes --> N_GenerateTrainArrivalCancellationWarning_Node0_action N_GenerateTrainArrivalCancellationWarning_Node0_action --> E_GenerateTrainArrivalCancellationWarning S_GenerateTrainArrivalCancellationWarning --> N_GenerateTrainArrivalCancellationWarning_Node0 N_GenerateTrainArrivalCancellationWarning_Node0 -- No --> E_GenerateTrainArrivalCancellationWarning
File: GCX016E.cbl
GIVEN: COC arrival cancellation action has been logged
WHEN: The system generates operational notifications
THEN: The system creates a train arrival cancellation warning message
βœ“ Consolidated Acceptance Criteria
  • The system processes a COC cancellation request → the system logs a warning that the train was not previously 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_LogWarningTrainNotPreviouslyArrived(["Start Step"]) E_LogWarningTrainNotPreviouslyArrived(["End Step"]) N_LogWarningTrainNotPreviouslyArrived_Node0{"The system processes a COC
cancellation request"}:::decision N_LogWarningTrainNotPreviouslyArrived_Node0_action["The system logs a warning that the
train was not previously arrived"]:::main N_LogWarningTrainNotPreviouslyArrived_Node0 -- Yes --> N_LogWarningTrainNotPreviouslyArrived_Node0_action N_LogWarningTrainNotPreviouslyArrived_Node0_action --> E_LogWarningTrainNotPreviouslyArrived S_LogWarningTrainNotPreviouslyArrived --> N_LogWarningTrainNotPreviouslyArrived_Node0 N_LogWarningTrainNotPreviouslyArrived_Node0 -- No --> E_LogWarningTrainNotPreviouslyArrived
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train is not currently in arrived status
WHEN: The system processes a COC cancellation request
THEN: The system logs a warning that the train was not previously arrived
βœ“ Consolidated Acceptance Criteria
  • The system sends business notifications → the system delivers the notification to appropriate business users
  • The notification is ready for distribution → the notification is sent to appropriate business users
  • The system sends notifications to business users → export cancellation notifications are sent to brokers, freight forwarders, and other relevant parties via Merlin messaging system or email
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendNotificationtoBusinessUsers(["Start Step"]) E_SendNotificationtoBusinessUsers(["End Step"]) N_SendNotificationtoBusinessUsers_Node0{"The system sends business
notifications"}:::decision N_SendNotificationtoBusinessUsers_Node0_action["The system delivers the
notification to appropriate business
users"]:::main N_SendNotificationtoBusinessUsers_Node0 -- Yes --> N_SendNotificationtoBusinessUsers_Node0_action N_SendNotificationtoBusinessUsers_Node0_action --> E_SendNotificationtoBusinessUsers S_SendNotificationtoBusinessUsers --> N_SendNotificationtoBusinessUsers_Node0 N_SendNotificationtoBusinessUsers_Node1{"The notification is ready for
distribution"}:::decision N_SendNotificationtoBusinessUsers_Node1_action["The notification is sent to
appropriate business users"]:::main N_SendNotificationtoBusinessUsers_Node1 -- Yes --> N_SendNotificationtoBusinessUsers_Node1_action N_SendNotificationtoBusinessUsers_Node1_action --> E_SendNotificationtoBusinessUsers N_SendNotificationtoBusinessUsers_Node0 -- No --> N_SendNotificationtoBusinessUsers_Node1 N_SendNotificationtoBusinessUsers_Node2{"The system sends notifications to
business users"}:::decision N_SendNotificationtoBusinessUsers_Node2_action["Export cancellation notifications
are sent to brokers, freight
forwarders, and other relevant
parties via Merlin messaging system
or email"]:::main N_SendNotificationtoBusinessUsers_Node2 -- Yes --> N_SendNotificationtoBusinessUsers_Node2_action N_SendNotificationtoBusinessUsers_Node2_action --> E_SendNotificationtoBusinessUsers N_SendNotificationtoBusinessUsers_Node1 -- No --> N_SendNotificationtoBusinessUsers_Node2 N_SendNotificationtoBusinessUsers_Node2 -- No --> E_SendNotificationtoBusinessUsers
File: GCX016E.cbl
GIVEN: A Merlin notification message has been created
WHEN: The system sends business notifications
THEN: The system delivers the notification to appropriate business users
File: GCX016E.cbl
GIVEN: A train seizure release notification has been generated
WHEN: The notification is ready for distribution
THEN: The notification is sent to appropriate business users
File: GCX016E.cbl
GIVEN: An export cancellation has been logged and notification prepared
WHEN: The system sends notifications to business users
THEN: Export cancellation notifications are sent to brokers, freight forwarders, and other relevant parties via Merlin messaging system or email
βœ“ Consolidated Acceptance Criteria
  • The system finishes all cancellation processing steps → the system marks the train arrival cancellation process as complete
  • The processing workflow reaches completion → the CAE all clear processing is marked as complete and control returns to main processing flow
  • The system finalizes the notification process → the system marks the freight forwarder notification process 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_ProcessComplete(["Start Step"]) E_ProcessComplete(["End Step"]) N_ProcessComplete_Node0{"The system finishes all
cancellation processing steps"}:::decision N_ProcessComplete_Node0_action["The system marks the train arrival
cancellation process as complete"]:::main N_ProcessComplete_Node0 -- Yes --> N_ProcessComplete_Node0_action N_ProcessComplete_Node0_action --> E_ProcessComplete S_ProcessComplete --> N_ProcessComplete_Node0 N_ProcessComplete_Node1{"The processing workflow reaches
completion"}:::decision N_ProcessComplete_Node1_action["The CAE all clear processing is
marked as complete and control
returns to main processing flow"]:::main N_ProcessComplete_Node1 -- Yes --> N_ProcessComplete_Node1_action N_ProcessComplete_Node1_action --> E_ProcessComplete N_ProcessComplete_Node0 -- No --> N_ProcessComplete_Node1 N_ProcessComplete_Node2{"The system finalizes the
notification process"}:::decision N_ProcessComplete_Node2_action["The system marks the freight
forwarder notification process as
complete and returns control to the
calling process"]:::main N_ProcessComplete_Node2 -- Yes --> N_ProcessComplete_Node2_action N_ProcessComplete_Node2_action --> E_ProcessComplete N_ProcessComplete_Node1 -- No --> N_ProcessComplete_Node2 N_ProcessComplete_Node2 -- No --> E_ProcessComplete
File: GCX016E.cbl
GIVEN: Train status has been updated in the database or error has been logged
WHEN: The system finishes all cancellation processing steps
THEN: The system marks the train arrival cancellation process as complete
File: GCX016E.cbl
GIVEN: Either all clear confirmation has been sent or error message has been transmitted
WHEN: The processing workflow reaches completion
THEN:
  • The cae all clear processing is marked as complete
  • Control returns to main processing flow
File: GCX016E.cbl
GIVEN: Email notification process has reached a terminal state (success, failure, or no freight forwarder found)
WHEN: The system finalizes the notification process
THEN:
  • The system marks the freight forwarder notification process as complete
  • Returns control to the calling process
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment with LCK event code → 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_ReceiveLCKDispositionCodeforTrain(["Start Step"]) E_ReceiveLCKDispositionCodeforTrain(["End Step"]) N_ReceiveLCKDispositionCodeforTrain_Node0{"The system processes the V9 segment
with LCK event code"}:::decision N_ReceiveLCKDispositionCodeforTrain_Node0_action["The system initiates train lock
processing workflow"]:::main N_ReceiveLCKDispositionCodeforTrain_Node0 -- Yes --> N_ReceiveLCKDispositionCodeforTrain_Node0_action N_ReceiveLCKDispositionCodeforTrain_Node0_action --> E_ReceiveLCKDispositionCodeforTrain S_ReceiveLCKDispositionCodeforTrain --> N_ReceiveLCKDispositionCodeforTrain_Node0 N_ReceiveLCKDispositionCodeforTrain_Node0 -- No --> E_ReceiveLCKDispositionCodeforTrain
File: GCX016E.cbl
GIVEN: A V9 segment contains event code LCK for train lock processing
WHEN: The system processes the V9 segment with LCK event code
THEN: The system initiates train lock processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system needs to process a lock request for the train → the system retrieves the current status information for the train
  • The system needs to process an unlock request → the system retrieves the current lock status of the train
  • The system needs to process a seizure request → the system retrieves the current train status including seizure 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_RetrieveCurrentTrainStatus(["Start Step"]) E_RetrieveCurrentTrainStatus(["End Step"]) N_RetrieveCurrentTrainStatus_Node0{"The system needs to process a lock
request for the train"}:::decision N_RetrieveCurrentTrainStatus_Node0_action["The system retrieves the current
status information for the train"]:::main N_RetrieveCurrentTrainStatus_Node0 -- Yes --> N_RetrieveCurrentTrainStatus_Node0_action N_RetrieveCurrentTrainStatus_Node0_action --> E_RetrieveCurrentTrainStatus S_RetrieveCurrentTrainStatus --> N_RetrieveCurrentTrainStatus_Node0 N_RetrieveCurrentTrainStatus_Node1{"The system needs to process an
unlock request"}:::decision N_RetrieveCurrentTrainStatus_Node1_action["The system retrieves the current
lock status of the train"]:::main N_RetrieveCurrentTrainStatus_Node1 -- Yes --> N_RetrieveCurrentTrainStatus_Node1_action N_RetrieveCurrentTrainStatus_Node1_action --> E_RetrieveCurrentTrainStatus N_RetrieveCurrentTrainStatus_Node0 -- No --> N_RetrieveCurrentTrainStatus_Node1 N_RetrieveCurrentTrainStatus_Node2{"The system needs to process a
seizure request"}:::decision N_RetrieveCurrentTrainStatus_Node2_action["The system retrieves the current
train status including seizure flag"]:::main N_RetrieveCurrentTrainStatus_Node2 -- Yes --> N_RetrieveCurrentTrainStatus_Node2_action N_RetrieveCurrentTrainStatus_Node2_action --> E_RetrieveCurrentTrainStatus N_RetrieveCurrentTrainStatus_Node1 -- No --> N_RetrieveCurrentTrainStatus_Node2 N_RetrieveCurrentTrainStatus_Node2 -- No --> E_RetrieveCurrentTrainStatus
File: GCX016E.cbl
GIVEN: A train has been found in the system
WHEN: The system needs to process a lock request for the train
THEN: The system retrieves the current status information for the train
File: GCX016E.cbl
GIVEN: A valid train has been identified in the system
WHEN: The system needs to process an unlock request
THEN: The system retrieves the current lock status of the train
File: GCX016E.cbl
GIVEN: A valid train has been found in the system
WHEN: The system needs to process a seizure request
THEN: The system retrieves the current train status including seizure flag
βœ“ Consolidated Acceptance Criteria
  • If the train's current lock status → the system determines if the train is already locked OR proceeds with lock processing if not already locked
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_TrainAlreadyLocked(["Start Step"]) E_TrainAlreadyLocked(["End Step"]) N_TrainAlreadyLocked_Node0{"The system evaluates the train s
current lock status"}:::decision N_TrainAlreadyLocked_Node0_action["The system determines if the train
is already locked OR proceeds with
lock processing if not already
locked"]:::main N_TrainAlreadyLocked_Node0 -- Yes --> N_TrainAlreadyLocked_Node0_action N_TrainAlreadyLocked_Node0_action --> E_TrainAlreadyLocked S_TrainAlreadyLocked --> N_TrainAlreadyLocked_Node0 N_TrainAlreadyLocked_Node0 -- No --> E_TrainAlreadyLocked
File: GCX016E.cbl
GIVEN: Current train status has been retrieved
WHEN: The system evaluates the train's current lock status
THEN: The system determines if the train is already locked OR proceeds with lock processing if not already locked
βœ“ Consolidated Acceptance Criteria
  • The system processes a LCK disposition code for the train → the system sets the train locked 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_SetTrainLockStatusFlag(["Start Step"]) E_SetTrainLockStatusFlag(["End Step"]) N_SetTrainLockStatusFlag_Node0{"The system processes a LCK
disposition code for the train"}:::decision N_SetTrainLockStatusFlag_Node0_action["The system sets the train locked
status flag"]:::main N_SetTrainLockStatusFlag_Node0 -- Yes --> N_SetTrainLockStatusFlag_Node0_action N_SetTrainLockStatusFlag_Node0_action --> E_SetTrainLockStatusFlag S_SetTrainLockStatusFlag --> N_SetTrainLockStatusFlag_Node0 N_SetTrainLockStatusFlag_Node0 -- No --> E_SetTrainLockStatusFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train is not currently locked
WHEN: The system processes a LCK disposition code for the train
THEN: The system sets the train locked status flag
βœ“ Consolidated Acceptance Criteria
  • The system commits the lock status change → the system updates the train record in the database with the new lock 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_UpdateTrainRecordinDatabase(["Start Step"]) E_UpdateTrainRecordinDatabase(["End Step"]) N_UpdateTrainRecordinDatabase_Node0{"The system commits the lock status
change"}:::decision N_UpdateTrainRecordinDatabase_Node0_action["The system updates the train record
in the database with the new lock
status"]:::main N_UpdateTrainRecordinDatabase_Node0 -- Yes --> N_UpdateTrainRecordinDatabase_Node0_action N_UpdateTrainRecordinDatabase_Node0_action --> E_UpdateTrainRecordinDatabase S_UpdateTrainRecordinDatabase --> N_UpdateTrainRecordinDatabase_Node0 N_UpdateTrainRecordinDatabase_Node0 -- No --> E_UpdateTrainRecordinDatabase
File: GCX016E.cbl
GIVEN: Train lock status flag has been set
WHEN: The system commits the lock status change
THEN: The system updates the train record in the database with the new lock status
βœ“ Consolidated Acceptance Criteria
  • The system completes the lock processing → the system logs the train lock action 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_LogTrainLockAction(["Start Step"]) E_LogTrainLockAction(["End Step"]) N_LogTrainLockAction_Node0{"The system completes the lock
processing"}:::decision N_LogTrainLockAction_Node0_action["The system logs the train lock
action with relevant details"]:::main N_LogTrainLockAction_Node0 -- Yes --> N_LogTrainLockAction_Node0_action N_LogTrainLockAction_Node0_action --> E_LogTrainLockAction S_LogTrainLockAction --> N_LogTrainLockAction_Node0 N_LogTrainLockAction_Node0 -- No --> E_LogTrainLockAction
File: GCX016E.cbl
GIVEN: Train record has been updated with lock status
WHEN: The system completes the lock processing
THEN: The system logs the train lock action with relevant details
βœ“ Consolidated Acceptance Criteria
  • The system processes user notification requirements → the system sends lock confirmation to appropriate business 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_SendLockConfirmationtoBusinessUsers(["Start Step"]) E_SendLockConfirmationtoBusinessUsers(["End Step"]) N_SendLockConfirmationtoBusinessUsers_Node0{"The system processes user
notification requirements"}:::decision N_SendLockConfirmationtoBusinessUsers_Node0_action["The system sends lock confirmation
to appropriate business users"]:::main N_SendLockConfirmationtoBusinessUsers_Node0 -- Yes --> N_SendLockConfirmationtoBusinessUsers_Node0_action N_SendLockConfirmationtoBusinessUsers_Node0_action --> E_SendLockConfirmationtoBusinessUsers S_SendLockConfirmationtoBusinessUsers --> N_SendLockConfirmationtoBusinessUsers_Node0 N_SendLockConfirmationtoBusinessUsers_Node0 -- No --> E_SendLockConfirmationtoBusinessUsers
File: GCX016E.cbl
GIVEN: Merlin notification message has been generated
WHEN: The system processes user notification requirements
THEN: The system sends lock confirmation to appropriate business users
βœ“ Consolidated Acceptance Criteria
  • The system attempts to process a lock request for non-existent train → the system generates an error message indicating train not found
  • The train cannot be found in the system → the system generates an error message indicating train not found
  • The system cannot locate the train for seizure processing → the system generates an error message indicating train 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 attempts to process a
lock request for non-existent train"}:::decision N_GenerateErrorMessageTrainNotFound_Node0_action["The system generates an error
message indicating train not found"]:::main N_GenerateErrorMessageTrainNotFound_Node0 -- Yes --> N_GenerateErrorMessageTrainNotFound_Node0_action N_GenerateErrorMessageTrainNotFound_Node0_action --> E_GenerateErrorMessageTrainNotFound S_GenerateErrorMessageTrainNotFound --> N_GenerateErrorMessageTrainNotFound_Node0 N_GenerateErrorMessageTrainNotFound_Node1{"The train cannot be found in the
system"}:::decision N_GenerateErrorMessageTrainNotFound_Node1_action["The system generates an error
message indicating train not found"]:::main N_GenerateErrorMessageTrainNotFound_Node1 -- Yes --> N_GenerateErrorMessageTrainNotFound_Node1_action N_GenerateErrorMessageTrainNotFound_Node1_action --> E_GenerateErrorMessageTrainNotFound N_GenerateErrorMessageTrainNotFound_Node0 -- No --> N_GenerateErrorMessageTrainNotFound_Node1 N_GenerateErrorMessageTrainNotFound_Node2{"The system cannot locate the train
for seizure processing"}:::decision N_GenerateErrorMessageTrainNotFound_Node2_action["The system generates an error
message indicating train not found"]:::main N_GenerateErrorMessageTrainNotFound_Node2 -- Yes --> N_GenerateErrorMessageTrainNotFound_Node2_action N_GenerateErrorMessageTrainNotFound_Node2_action --> E_GenerateErrorMessageTrainNotFound N_GenerateErrorMessageTrainNotFound_Node1 -- No --> N_GenerateErrorMessageTrainNotFound_Node2 N_GenerateErrorMessageTrainNotFound_Node2 -- No --> E_GenerateErrorMessageTrainNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID has been validated AND the train does not exist in the train list
WHEN: The system attempts to process a lock request for non-existent train
THEN: The system generates an error message indicating train not found
File: GCX016E.cbl
GIVEN: A train ID has been provided for unlock processing
WHEN: The train cannot be found in the system
THEN: The system generates an error message indicating train not found
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID has been extracted but the train is not found in the system
WHEN: The system cannot locate the train for seizure processing
THEN: The system generates an error message indicating train not found
βœ“ Consolidated Acceptance Criteria
  • The system processes a LCK disposition code for the already locked train → the system generates a warning message indicating the train is already locked
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateWarningTrainAlreadyLocked(["Start Step"]) E_GenerateWarningTrainAlreadyLocked(["End Step"]) N_GenerateWarningTrainAlreadyLocked_Node0{"The system processes a LCK
disposition code for the already
locked train"}:::decision N_GenerateWarningTrainAlreadyLocked_Node0_action["The system generates a warning
message indicating the train is
already locked"]:::main N_GenerateWarningTrainAlreadyLocked_Node0 -- Yes --> N_GenerateWarningTrainAlreadyLocked_Node0_action N_GenerateWarningTrainAlreadyLocked_Node0_action --> E_GenerateWarningTrainAlreadyLocked S_GenerateWarningTrainAlreadyLocked --> N_GenerateWarningTrainAlreadyLocked_Node0 N_GenerateWarningTrainAlreadyLocked_Node0 -- No --> E_GenerateWarningTrainAlreadyLocked
File: GCX016E.cbl
GIVEN: A train's current status shows it is already locked
WHEN: The system processes a LCK disposition code for the already locked train
THEN: The system generates a warning message indicating the train is already locked
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment → the system initiates train unlock 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_ReceiveULCDispositionCodeinV9Segment(["Start Step"]) E_ReceiveULCDispositionCodeinV9Segment(["End Step"]) N_ReceiveULCDispositionCodeinV9Segment_Node0{"The system processes the V9 segment"}:::decision N_ReceiveULCDispositionCodeinV9Segment_Node0_action["The system initiates train unlock
processing workflow"]:::main N_ReceiveULCDispositionCodeinV9Segment_Node0 -- Yes --> N_ReceiveULCDispositionCodeinV9Segment_Node0_action N_ReceiveULCDispositionCodeinV9Segment_Node0_action --> E_ReceiveULCDispositionCodeinV9Segment S_ReceiveULCDispositionCodeinV9Segment --> N_ReceiveULCDispositionCodeinV9Segment_Node0 N_ReceiveULCDispositionCodeinV9Segment_Node0 -- No --> E_ReceiveULCDispositionCodeinV9Segment
File: GCX016E.cbl
GIVEN: A V9 segment is received with event code ULC
WHEN: The system processes the V9 segment
THEN: The system initiates train unlock processing workflow
βœ“ Consolidated Acceptance Criteria
  • If whether unlock operation should proceed → if train is locked, unlock proceeds; if not locked, a warning 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_TrainCurrentlyLocked(["Start Step"]) E_TrainCurrentlyLocked(["End Step"]) N_TrainCurrentlyLocked_Node0{"The system evaluates whether unlock
operation should proceed"}:::decision N_TrainCurrentlyLocked_Node0_action["If train is locked, unlock proceeds
if not locked, a warning is
generated"]:::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: GCX016E.cbl
GIVEN: The current train status has been retrieved
WHEN: The system evaluates whether unlock operation should proceed
THEN: If train is locked, unlock proceeds; if not locked, a warning is generated
βœ“ Consolidated Acceptance Criteria
  • A valid unlock request is processed → the system updates the train status to unlocked
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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{"A valid unlock request is processed"}:::decision N_UpdateTrainStatustoUnlocked_Node0_action["The system updates the train status
to unlocked"]:::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: GCX016E.cbl
GIVEN: A train is currently in locked status
WHEN: A valid unlock request is processed
THEN: The system updates the train status to unlocked
βœ“ Consolidated Acceptance Criteria
  • The unlock operation completes → the system logs the unlock action 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_LogTrainUnlockAction(["Start Step"]) E_LogTrainUnlockAction(["End Step"]) N_LogTrainUnlockAction_Node0{"The unlock operation completes"}:::decision N_LogTrainUnlockAction_Node0_action["The system logs the unlock action
with timestamp and train details"]:::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: GCX016E.cbl
GIVEN: A train status has been successfully updated to unlocked
WHEN: The unlock operation completes
THEN:
  • The system logs the unlock action with timestamp
  • Train details
βœ“ Consolidated Acceptance Criteria
  • The system completes unlock processing → the system sends unlock confirmation to the requesting party
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendTrainUnlockConfirmation(["Start Step"]) E_SendTrainUnlockConfirmation(["End Step"]) N_SendTrainUnlockConfirmation_Node0{"The system completes unlock
processing"}:::decision N_SendTrainUnlockConfirmation_Node0_action["The system sends unlock
confirmation to the requesting party"]:::main N_SendTrainUnlockConfirmation_Node0 -- Yes --> N_SendTrainUnlockConfirmation_Node0_action N_SendTrainUnlockConfirmation_Node0_action --> E_SendTrainUnlockConfirmation S_SendTrainUnlockConfirmation --> N_SendTrainUnlockConfirmation_Node0 N_SendTrainUnlockConfirmation_Node0 -- No --> E_SendTrainUnlockConfirmation
File: GCX016E.cbl
GIVEN: A Merlin notification message has been generated
WHEN: The system completes unlock processing
THEN: The system sends unlock confirmation to the requesting party
βœ“ Consolidated Acceptance Criteria
  • The train is not currently in locked status → the system generates a warning message indicating train is not locked
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateWarningTrainNotLocked(["Start Step"]) E_GenerateWarningTrainNotLocked(["End Step"]) N_GenerateWarningTrainNotLocked_Node0{"The train is not currently in
locked status"}:::decision N_GenerateWarningTrainNotLocked_Node0_action["The system generates a warning
message indicating train is not
locked"]:::main N_GenerateWarningTrainNotLocked_Node0 -- Yes --> N_GenerateWarningTrainNotLocked_Node0_action N_GenerateWarningTrainNotLocked_Node0_action --> E_GenerateWarningTrainNotLocked S_GenerateWarningTrainNotLocked --> N_GenerateWarningTrainNotLocked_Node0 N_GenerateWarningTrainNotLocked_Node0 -- No --> E_GenerateWarningTrainNotLocked
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A valid train has been identified for unlock processing
WHEN: The train is not currently in locked status
THEN: The system generates a warning message indicating train is not locked
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment with SEI event code → the system initiates train seizure 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_SEIDispositionCodeReceivedforTrain(["Start Step"]) E_SEIDispositionCodeReceivedforTrain(["End Step"]) N_SEIDispositionCodeReceivedforTrain_Node0{"The system processes the V9 segment
with SEI event code"}:::decision N_SEIDispositionCodeReceivedforTrain_Node0_action["The system initiates train seizure
processing workflow"]:::main N_SEIDispositionCodeReceivedforTrain_Node0 -- Yes --> N_SEIDispositionCodeReceivedforTrain_Node0_action N_SEIDispositionCodeReceivedforTrain_Node0_action --> E_SEIDispositionCodeReceivedforTrain S_SEIDispositionCodeReceivedforTrain --> N_SEIDispositionCodeReceivedforTrain_Node0 N_SEIDispositionCodeReceivedforTrain_Node0 -- No --> E_SEIDispositionCodeReceivedforTrain
File: GCX016E.cbl
GIVEN: A V9 segment contains event code 'SEI' for train seizure
WHEN: The system processes the V9 segment with SEI event code
THEN: The system initiates train seizure processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system checks if the train is already seized → if train seizure flag is 'Y', skip processing; otherwise proceed with 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_TrainAlreadySeized(["Start Step"]) E_TrainAlreadySeized(["End Step"]) N_TrainAlreadySeized_Node0{"The system checks if the train is
already seized"}:::decision N_TrainAlreadySeized_Node0_action["If train seizure flag is Y , skip
processing otherwise proceed with
seizure"]:::main N_TrainAlreadySeized_Node0 -- Yes --> N_TrainAlreadySeized_Node0_action N_TrainAlreadySeized_Node0_action --> E_TrainAlreadySeized S_TrainAlreadySeized --> N_TrainAlreadySeized_Node0 N_TrainAlreadySeized_Node0 -- No --> E_TrainAlreadySeized
File: GCX016E.cbl
GIVEN: The current train status has been retrieved
WHEN: The system checks if the train is already seized
THEN: If train seizure flag is 'Y', skip processing; otherwise proceed with seizure
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure request → the system sets the train seizure flag to 'Y'
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetTrainSeizureFlagtoY(["Start Step"]) E_SetTrainSeizureFlagtoY(["End Step"]) N_SetTrainSeizureFlagtoY_Node0{"The system processes the seizure
request"}:::decision N_SetTrainSeizureFlagtoY_Node0_action["The system sets the train seizure
flag to Y"]:::main N_SetTrainSeizureFlagtoY_Node0 -- Yes --> N_SetTrainSeizureFlagtoY_Node0_action N_SetTrainSeizureFlagtoY_Node0_action --> E_SetTrainSeizureFlagtoY S_SetTrainSeizureFlagtoY --> N_SetTrainSeizureFlagtoY_Node0 N_SetTrainSeizureFlagtoY_Node0 -- No --> E_SetTrainSeizureFlagtoY
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train is not currently seized and seizure processing is required
WHEN: The system processes the seizure request
THEN: The system sets the train seizure flag to 'Y'
βœ“ Consolidated Acceptance Criteria
  • The system completes the seizure status update → the system logs the seizure action 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_LogSeizureActionwithTimestamp(["Start Step"]) E_LogSeizureActionwithTimestamp(["End Step"]) N_LogSeizureActionwithTimestamp_Node0{"The system completes the seizure
status update"}:::decision N_LogSeizureActionwithTimestamp_Node0_action["The system logs the seizure action
with current date and time"]:::main N_LogSeizureActionwithTimestamp_Node0 -- Yes --> N_LogSeizureActionwithTimestamp_Node0_action N_LogSeizureActionwithTimestamp_Node0_action --> E_LogSeizureActionwithTimestamp S_LogSeizureActionwithTimestamp --> N_LogSeizureActionwithTimestamp_Node0 N_LogSeizureActionwithTimestamp_Node0 -- No --> E_LogSeizureActionwithTimestamp
File: GCX016E.cbl
GIVEN: A train has been successfully seized
WHEN: The system completes the seizure status update
THEN:
  • The system logs the seizure action with current date
  • Time
βœ“ Consolidated Acceptance Criteria
  • The system sends notifications to relevant parties → the system sends the seizure notification to 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_SendSeizureNotificationtoCustoms(["Start Step"]) E_SendSeizureNotificationtoCustoms(["End Step"]) N_SendSeizureNotificationtoCustoms_Node0{"The system sends notifications to
relevant parties"}:::decision N_SendSeizureNotificationtoCustoms_Node0_action["The system sends the seizure
notification to customs authorities"]:::main N_SendSeizureNotificationtoCustoms_Node0 -- Yes --> N_SendSeizureNotificationtoCustoms_Node0_action N_SendSeizureNotificationtoCustoms_Node0_action --> E_SendSeizureNotificationtoCustoms S_SendSeizureNotificationtoCustoms --> N_SendSeizureNotificationtoCustoms_Node0 N_SendSeizureNotificationtoCustoms_Node0 -- No --> E_SendSeizureNotificationtoCustoms
File: GCX016E.cbl
GIVEN: A Merlin notification message has been generated for train seizure
WHEN: The system sends notifications to relevant parties
THEN: The system sends the seizure notification to customs authorities
βœ“ Consolidated Acceptance Criteria
  • The system processes equipment associated with the train → the system updates the equipment list status to reflect the 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_UpdateTrainEquipmentListStatus(["Start Step"]) E_UpdateTrainEquipmentListStatus(["End Step"]) N_UpdateTrainEquipmentListStatus_Node0{"The system processes equipment
associated with the train"}:::decision N_UpdateTrainEquipmentListStatus_Node0_action["The system updates the equipment
list status to reflect the train
seizure"]:::main N_UpdateTrainEquipmentListStatus_Node0 -- Yes --> N_UpdateTrainEquipmentListStatus_Node0_action N_UpdateTrainEquipmentListStatus_Node0_action --> E_UpdateTrainEquipmentListStatus S_UpdateTrainEquipmentListStatus --> N_UpdateTrainEquipmentListStatus_Node0 N_UpdateTrainEquipmentListStatus_Node0 -- No --> E_UpdateTrainEquipmentListStatus
File: GCX016E.cbl
GIVEN: A train has been seized and notifications sent
WHEN: The system processes equipment associated with the train
THEN: The system updates the equipment list status to reflect the train seizure
βœ“ Consolidated Acceptance Criteria
  • The system processes individual equipment items → the system marks each equipment item in the train 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_MarkAllEquipmentinTrainasSeized(["Start Step"]) E_MarkAllEquipmentinTrainasSeized(["End Step"]) N_MarkAllEquipmentinTrainasSeized_Node0{"The system processes individual
equipment items"}:::decision N_MarkAllEquipmentinTrainasSeized_Node0_action["The system marks each equipment
item in the train as seized"]:::main N_MarkAllEquipmentinTrainasSeized_Node0 -- Yes --> N_MarkAllEquipmentinTrainasSeized_Node0_action N_MarkAllEquipmentinTrainasSeized_Node0_action --> E_MarkAllEquipmentinTrainasSeized S_MarkAllEquipmentinTrainasSeized --> N_MarkAllEquipmentinTrainasSeized_Node0 N_MarkAllEquipmentinTrainasSeized_Node0 -- No --> E_MarkAllEquipmentinTrainasSeized
File: GCX016E.cbl
GIVEN: The train equipment list has been updated
WHEN: The system processes individual equipment items
THEN: The system marks each equipment item in the train as seized
βœ“ Consolidated Acceptance Criteria
  • The system checks for K1 remark segments → if K1 segments exist, the system processes the remark messages and includes them in seizure 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_ProcessK1RemarkMessagesifPresent(["Start Step"]) E_ProcessK1RemarkMessagesifPresent(["End Step"]) N_ProcessK1RemarkMessagesifPresent_Node0{"The system checks for K1 remark
segments"}:::decision N_ProcessK1RemarkMessagesifPresent_Node0_action["If K1 segments exist, the system
processes the remark messages and
includes them in seizure
documentation"]:::main N_ProcessK1RemarkMessagesifPresent_Node0 -- Yes --> N_ProcessK1RemarkMessagesifPresent_Node0_action N_ProcessK1RemarkMessagesifPresent_Node0_action --> E_ProcessK1RemarkMessagesifPresent S_ProcessK1RemarkMessagesifPresent --> N_ProcessK1RemarkMessagesifPresent_Node0 N_ProcessK1RemarkMessagesifPresent_Node0 -- No --> E_ProcessK1RemarkMessagesifPresent
File: GCX016E.cbl
GIVEN: Train seizure processing is in progress and K1 segments may be present
WHEN: The system checks for K1 remark segments
THEN:
  • If k1 segments exist, the system processes the remark messages
  • Includes them in seizure documentation
βœ“ Consolidated Acceptance Criteria
  • The system checks the current seizure status → the system skips seizure processing and 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_SkipProcessingAlreadySeized(["Start Step"]) E_SkipProcessingAlreadySeized(["End Step"]) N_SkipProcessingAlreadySeized_Node0{"The system checks the current
seizure status"}:::decision N_SkipProcessingAlreadySeized_Node0_action["The system skips seizure processing
and continues to completion"]:::main N_SkipProcessingAlreadySeized_Node0 -- Yes --> N_SkipProcessingAlreadySeized_Node0_action N_SkipProcessingAlreadySeized_Node0_action --> E_SkipProcessingAlreadySeized S_SkipProcessingAlreadySeized --> N_SkipProcessingAlreadySeized_Node0 N_SkipProcessingAlreadySeized_Node0 -- No --> E_SkipProcessingAlreadySeized
File: GCX016E.cbl
GIVEN: A train is found in the system but is already seized
WHEN: The system checks the current seizure status
THEN:
  • The system skips seizure processing
  • Continues to completion
βœ“ Consolidated Acceptance Criteria
  • The system reaches the end of seizure processing → the system completes the train seizure processing and returns control to the main 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_CompleteTrainSeizureProcessing(["Start Step"]) E_CompleteTrainSeizureProcessing(["End Step"]) N_CompleteTrainSeizureProcessing_Node0{"The system reaches the end of
seizure processing"}:::decision N_CompleteTrainSeizureProcessing_Node0_action["The system completes the train
seizure processing and returns
control to the main workflow"]:::main N_CompleteTrainSeizureProcessing_Node0 -- Yes --> N_CompleteTrainSeizureProcessing_Node0_action N_CompleteTrainSeizureProcessing_Node0_action --> E_CompleteTrainSeizureProcessing S_CompleteTrainSeizureProcessing --> N_CompleteTrainSeizureProcessing_Node0 N_CompleteTrainSeizureProcessing_Node0 -- No --> E_CompleteTrainSeizureProcessing
File: GCX016E.cbl
GIVEN: All seizure processing steps have been completed or skipped appropriately
WHEN: The system reaches the end of seizure processing
THEN:
  • The system completes the train seizure processing
  • Returns control to the main workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the SER disposition code → the train seizure 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_ReceiveSERDispositionCodeforTrain(["Start Step"]) E_ReceiveSERDispositionCodeforTrain(["End Step"]) N_ReceiveSERDispositionCodeforTrain_Node0{"The system processes the SER
disposition code"}:::decision N_ReceiveSERDispositionCodeforTrain_Node0_action["The train seizure release workflow
is initiated"]:::main N_ReceiveSERDispositionCodeforTrain_Node0 -- Yes --> N_ReceiveSERDispositionCodeforTrain_Node0_action N_ReceiveSERDispositionCodeforTrain_Node0_action --> E_ReceiveSERDispositionCodeforTrain S_ReceiveSERDispositionCodeforTrain --> N_ReceiveSERDispositionCodeforTrain_Node0 N_ReceiveSERDispositionCodeforTrain_Node0 -- No --> E_ReceiveSERDispositionCodeforTrain
File: GCX016E.cbl
GIVEN: A V9 segment with event code SER is received for a train
WHEN: The system processes the SER disposition code
THEN: The train seizure release workflow is initiated
βœ“ Consolidated Acceptance Criteria
  • The system processes a seizure release request → the current seizure status of the train is retrieved and 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_CheckCurrentTrainSeizureStatus(["Start Step"]) E_CheckCurrentTrainSeizureStatus(["End Step"]) N_CheckCurrentTrainSeizureStatus_Node0{"The system processes a seizure
release request"}:::decision N_CheckCurrentTrainSeizureStatus_Node0_action["The current seizure status of the
train is retrieved and evaluated"]:::main N_CheckCurrentTrainSeizureStatus_Node0 -- Yes --> N_CheckCurrentTrainSeizureStatus_Node0_action N_CheckCurrentTrainSeizureStatus_Node0_action --> E_CheckCurrentTrainSeizureStatus S_CheckCurrentTrainSeizureStatus --> N_CheckCurrentTrainSeizureStatus_Node0 N_CheckCurrentTrainSeizureStatus_Node0 -- No --> E_CheckCurrentTrainSeizureStatus
File: GCX016E.cbl
GIVEN: A valid train exists in the system
WHEN: The system processes a seizure release request
THEN:
  • The current seizure status of the train is retrieved
  • Evaluated
βœ“ Consolidated Acceptance Criteria
  • If if seizure release is applicable → the system determines if the train is currently seized and can be 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_TrainCurrentlySeized(["Start Step"]) E_TrainCurrentlySeized(["End Step"]) N_TrainCurrentlySeized_Node0{"The system evaluates if seizure
release is applicable"}:::decision N_TrainCurrentlySeized_Node0_action["The system determines if the train
is currently seized and can be
released"]:::main N_TrainCurrentlySeized_Node0 -- Yes --> N_TrainCurrentlySeized_Node0_action N_TrainCurrentlySeized_Node0_action --> E_TrainCurrentlySeized S_TrainCurrentlySeized --> N_TrainCurrentlySeized_Node0 N_TrainCurrentlySeized_Node0 -- No --> E_TrainCurrentlySeized
File: GCX016E.cbl
GIVEN: A train's current seizure status has been retrieved
WHEN: The system evaluates if seizure release is applicable
THEN:
  • The system determines if the train is currently seized
  • Can be released
βœ“ Consolidated Acceptance Criteria
  • A valid seizure release request is processed → the train's seizure status is cleared and the train is 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_ReleaseTrainfromSeizureStatus(["Start Step"]) E_ReleaseTrainfromSeizureStatus(["End Step"]) N_ReleaseTrainfromSeizureStatus_Node0{"A valid seizure release request is
processed"}:::decision N_ReleaseTrainfromSeizureStatus_Node0_action["The train s seizure status is
cleared and the train is released"]:::main N_ReleaseTrainfromSeizureStatus_Node0 -- Yes --> N_ReleaseTrainfromSeizureStatus_Node0_action N_ReleaseTrainfromSeizureStatus_Node0_action --> E_ReleaseTrainfromSeizureStatus S_ReleaseTrainfromSeizureStatus --> N_ReleaseTrainfromSeizureStatus_Node0 N_ReleaseTrainfromSeizureStatus_Node0 -- No --> E_ReleaseTrainfromSeizureStatus
File: GCX016E.cbl
GIVEN: A train is currently in seized status
WHEN: A valid seizure release request is processed
THEN:
  • The train's seizure status is cleared
  • The train is released
βœ“ Consolidated Acceptance Criteria
  • The seizure release processing continues → all relevant train status flags are updated to reflect the new status
  • Train status information needs to be updated in the system → update all relevant train status flags including arrival status, hold status, and operational flags
  • The system updates train status information → update train status flags in train records to reflect export manifest 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_UpdateTrainStatusFlags(["Start Step"]) E_UpdateTrainStatusFlags(["End Step"]) N_UpdateTrainStatusFlags_Node0{"The seizure release processing
continues"}:::decision N_UpdateTrainStatusFlags_Node0_action["All relevant train status flags are
updated to reflect the new status"]:::main N_UpdateTrainStatusFlags_Node0 -- Yes --> N_UpdateTrainStatusFlags_Node0_action N_UpdateTrainStatusFlags_Node0_action --> E_UpdateTrainStatusFlags S_UpdateTrainStatusFlags --> N_UpdateTrainStatusFlags_Node0 N_UpdateTrainStatusFlags_Node1{"Train status information needs to
be updated in the system"}:::decision N_UpdateTrainStatusFlags_Node1_action["Update all relevant train status
flags including arrival status, hold
status, and operational flags"]:::main N_UpdateTrainStatusFlags_Node1 -- Yes --> N_UpdateTrainStatusFlags_Node1_action N_UpdateTrainStatusFlags_Node1_action --> E_UpdateTrainStatusFlags N_UpdateTrainStatusFlags_Node0 -- No --> N_UpdateTrainStatusFlags_Node1 N_UpdateTrainStatusFlags_Node2{"The system updates train status
information"}:::decision N_UpdateTrainStatusFlags_Node2_action["Update train status flags in train
records to reflect export manifest
pre-arrival state"]:::main N_UpdateTrainStatusFlags_Node2 -- Yes --> N_UpdateTrainStatusFlags_Node2_action N_UpdateTrainStatusFlags_Node2_action --> E_UpdateTrainStatusFlags N_UpdateTrainStatusFlags_Node1 -- No --> N_UpdateTrainStatusFlags_Node2 N_UpdateTrainStatusFlags_Node2 -- No --> E_UpdateTrainStatusFlags
File: GCX016E.cbl
GIVEN: A train has been released from seizure status
WHEN: The seizure release processing continues
THEN: All relevant train status flags are updated to reflect the new status
File: GCX016E.cbl
GIVEN: A train arrival has been processed
WHEN: Train status information needs to be updated in the system
THEN: Update all relevant train status flags including arrival status, hold status, and operational flags
File: GCX016E.cbl
GIVEN: Export manifest pre-arrival status has been set for a train
WHEN: The system updates train status information
THEN: Update train status flags in train records to reflect export manifest pre-arrival state
βœ“ Consolidated Acceptance Criteria
  • The system completes the status update → the seizure release action is logged with relevant details
  • The system performs audit logging → a log entry must be created documenting the seizure release action with equipment 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_LogSeizureReleaseAction(["Start Step"]) E_LogSeizureReleaseAction(["End Step"]) N_LogSeizureReleaseAction_Node0{"The system completes the status
update"}:::decision N_LogSeizureReleaseAction_Node0_action["The seizure release action is
logged with relevant details"]:::main N_LogSeizureReleaseAction_Node0 -- Yes --> N_LogSeizureReleaseAction_Node0_action N_LogSeizureReleaseAction_Node0_action --> E_LogSeizureReleaseAction S_LogSeizureReleaseAction --> N_LogSeizureReleaseAction_Node0 N_LogSeizureReleaseAction_Node1{"The system performs audit logging"}:::decision N_LogSeizureReleaseAction_Node1_action["A log entry must be created
documenting the seizure release
action with equipment details and
timestamp"]:::main N_LogSeizureReleaseAction_Node1 -- Yes --> N_LogSeizureReleaseAction_Node1_action N_LogSeizureReleaseAction_Node1_action --> E_LogSeizureReleaseAction N_LogSeizureReleaseAction_Node0 -- No --> N_LogSeizureReleaseAction_Node1 N_LogSeizureReleaseAction_Node1 -- No --> E_LogSeizureReleaseAction
File: GCX016E.cbl
GIVEN: A train seizure release has been successfully processed
WHEN: The system completes the status update
THEN: The seizure release action is logged with relevant details
File: GCX016E.cbl
GIVEN: Equipment seizure release has been processed successfully
WHEN: The system performs audit logging
THEN:
  • A log entry must be created documenting the seizure release action with equipment details
  • Timestamp
βœ“ Consolidated Acceptance Criteria
  • The system processes associated equipment → each piece of equipment in the train is individually evaluated for 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_ProcessIndividualEquipmentinTrain(["Start Step"]) E_ProcessIndividualEquipmentinTrain(["End Step"]) N_ProcessIndividualEquipmentinTrain_Node0{"The system processes associated
equipment"}:::decision N_ProcessIndividualEquipmentinTrain_Node0_action["Each piece of equipment in the
train is individually evaluated for
seizure release"]:::main N_ProcessIndividualEquipmentinTrain_Node0 -- Yes --> N_ProcessIndividualEquipmentinTrain_Node0_action N_ProcessIndividualEquipmentinTrain_Node0_action --> E_ProcessIndividualEquipmentinTrain S_ProcessIndividualEquipmentinTrain --> N_ProcessIndividualEquipmentinTrain_Node0 N_ProcessIndividualEquipmentinTrain_Node0 -- No --> E_ProcessIndividualEquipmentinTrain
File: GCX016E.cbl
GIVEN: A train seizure release has been processed
WHEN: The system processes associated equipment
THEN: Each piece of equipment in the train is individually evaluated for seizure release
βœ“ Consolidated Acceptance Criteria
  • If each piece of equipment → the system determines if the equipment is currently in 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_EquipmentSeized(["Start Step"]) E_EquipmentSeized(["End Step"]) N_EquipmentSeized_Node0{"The system evaluates each piece of
equipment"}:::decision N_EquipmentSeized_Node0_action["The system determines if the
equipment is currently in seized
status"]:::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: GCX016E.cbl
GIVEN: Individual equipment is being processed for seizure release
WHEN: The system evaluates each piece of equipment
THEN: The system determines if the equipment is currently in seized status
βœ“ Consolidated Acceptance Criteria
  • The train seizure release is processed → the individual equipment is released from 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_ReleaseEquipmentfromSeizure(["Start Step"]) E_ReleaseEquipmentfromSeizure(["End Step"]) N_ReleaseEquipmentfromSeizure_Node0{"The train seizure release is
processed"}:::decision N_ReleaseEquipmentfromSeizure_Node0_action["The individual equipment is
released from seizure status"]:::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: GCX016E.cbl
GIVEN: Equipment is currently in seized status
WHEN: The train seizure release is processed
THEN: The individual equipment is released from seizure status
βœ“ Consolidated Acceptance Criteria
  • The seizure release processing continues → the equipment seizure counter is updated to reflect the release
  • The system processes the seizure action → the system increments the equipment seizure counter to track the number of seizures applied
  • The system updates equipment tracking counters → the equipment seizure counter is incremented to reflect the additional seizure 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_UpdateEquipmentSeizureCounter(["Start Step"]) E_UpdateEquipmentSeizureCounter(["End Step"]) N_UpdateEquipmentSeizureCounter_Node0{"The seizure release processing
continues"}:::decision N_UpdateEquipmentSeizureCounter_Node0_action["The equipment seizure counter is
updated to reflect the release"]:::main N_UpdateEquipmentSeizureCounter_Node0 -- Yes --> N_UpdateEquipmentSeizureCounter_Node0_action N_UpdateEquipmentSeizureCounter_Node0_action --> E_UpdateEquipmentSeizureCounter S_UpdateEquipmentSeizureCounter --> N_UpdateEquipmentSeizureCounter_Node0 N_UpdateEquipmentSeizureCounter_Node1{"The system processes the seizure
action"}:::decision N_UpdateEquipmentSeizureCounter_Node1_action["The system increments the equipment
seizure counter to track the number
of seizures applied"]:::main N_UpdateEquipmentSeizureCounter_Node1 -- Yes --> N_UpdateEquipmentSeizureCounter_Node1_action N_UpdateEquipmentSeizureCounter_Node1_action --> E_UpdateEquipmentSeizureCounter N_UpdateEquipmentSeizureCounter_Node0 -- No --> N_UpdateEquipmentSeizureCounter_Node1 N_UpdateEquipmentSeizureCounter_Node2{"The system updates equipment
tracking counters"}:::decision N_UpdateEquipmentSeizureCounter_Node2_action["The equipment seizure counter is
incremented to reflect the
additional seizure action"]:::main N_UpdateEquipmentSeizureCounter_Node2 -- Yes --> N_UpdateEquipmentSeizureCounter_Node2_action N_UpdateEquipmentSeizureCounter_Node2_action --> E_UpdateEquipmentSeizureCounter N_UpdateEquipmentSeizureCounter_Node1 -- No --> N_UpdateEquipmentSeizureCounter_Node2 N_UpdateEquipmentSeizureCounter_Node2 -- No --> E_UpdateEquipmentSeizureCounter
File: GCX016E.cbl
GIVEN: Equipment has been released from seizure
WHEN: The seizure release processing continues
THEN: The equipment seizure counter is updated to reflect the release
File: GCX016E.cbl
GIVEN: Equipment seizure status flag has been updated
WHEN: The system processes the seizure action
THEN: The system increments the equipment seizure counter to track the number of seizures applied
File: GCX016E.cbl
GIVEN: Equipment seizure status flag has been updated for specific equipment
WHEN: The system updates equipment tracking counters
THEN: The equipment seizure counter is incremented to reflect the additional seizure action
βœ“ Consolidated Acceptance Criteria
  • More equipment exists in the train → the system moves to process the next piece of equipment
  • There are additional equipment items to process in the VID segment → the system continues to process the next equipment item in 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_ContinuetoNextEquipment(["Start Step"]) E_ContinuetoNextEquipment(["End Step"]) N_ContinuetoNextEquipment_Node0{"More equipment exists in the train"}:::decision N_ContinuetoNextEquipment_Node0_action["The system moves to process the
next piece of equipment"]:::main N_ContinuetoNextEquipment_Node0 -- Yes --> N_ContinuetoNextEquipment_Node0_action N_ContinuetoNextEquipment_Node0_action --> E_ContinuetoNextEquipment S_ContinuetoNextEquipment --> N_ContinuetoNextEquipment_Node0 N_ContinuetoNextEquipment_Node1{"There are additional equipment
items to process in the VID segment"}:::decision N_ContinuetoNextEquipment_Node1_action["The system continues to process the
next equipment item in the list"]:::main N_ContinuetoNextEquipment_Node1 -- Yes --> N_ContinuetoNextEquipment_Node1_action N_ContinuetoNextEquipment_Node1_action --> E_ContinuetoNextEquipment N_ContinuetoNextEquipment_Node0 -- No --> N_ContinuetoNextEquipment_Node1 N_ContinuetoNextEquipment_Node1 -- No --> E_ContinuetoNextEquipment
File: GCX016E.cbl
GIVEN: Current equipment processing is complete
WHEN: More equipment exists in the train
THEN: The system moves to process the next piece of equipment
File: GCX016E.cbl
GIVEN: Current equipment status change has been logged
WHEN: There are additional equipment items to process in the VID segment
THEN: The system continues to process the next equipment item in the list
βœ“ Consolidated Acceptance Criteria
  • The seizure release processing is complete → a train seizure release notification 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_GenerateTrainSeizureReleaseNotification(["Start Step"]) E_GenerateTrainSeizureReleaseNotification(["End Step"]) N_GenerateTrainSeizureReleaseNotification_Node0{"The seizure release processing is
complete"}:::decision N_GenerateTrainSeizureReleaseNotification_Node0_action["A train seizure release
notification is generated"]:::main N_GenerateTrainSeizureReleaseNotification_Node0 -- Yes --> N_GenerateTrainSeizureReleaseNotification_Node0_action N_GenerateTrainSeizureReleaseNotification_Node0_action --> E_GenerateTrainSeizureReleaseNotification S_GenerateTrainSeizureReleaseNotification --> N_GenerateTrainSeizureReleaseNotification_Node0 N_GenerateTrainSeizureReleaseNotification_Node0 -- No --> E_GenerateTrainSeizureReleaseNotification
File: GCX016E.cbl
GIVEN: All equipment in the train has been processed for seizure release
WHEN: The seizure release processing is complete
THEN: A train seizure release notification is generated
βœ“ Consolidated Acceptance Criteria
  • A seizure release request is processed → a warning is logged indicating the train is not seized 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_LogWarningTrainNotSeized(["Start Step"]) E_LogWarningTrainNotSeized(["End Step"]) N_LogWarningTrainNotSeized_Node0{"A seizure release request is
processed"}:::decision N_LogWarningTrainNotSeized_Node0_action["A warning is logged indicating the
train is not seized and processing
continues"]:::main N_LogWarningTrainNotSeized_Node0 -- Yes --> N_LogWarningTrainNotSeized_Node0_action N_LogWarningTrainNotSeized_Node0_action --> E_LogWarningTrainNotSeized S_LogWarningTrainNotSeized --> N_LogWarningTrainNotSeized_Node0 N_LogWarningTrainNotSeized_Node0 -- No --> E_LogWarningTrainNotSeized
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train exists but is not currently in seized status
WHEN: A seizure release request is processed
THEN:
  • A warning is logged indicating the train is not seized
  • Processing continues
βœ“ Consolidated Acceptance Criteria
  • The workflow reaches completion → the seizure 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_CompleteSeizureReleaseProcessing(["Start Step"]) E_CompleteSeizureReleaseProcessing(["End Step"]) N_CompleteSeizureReleaseProcessing_Node0{"The workflow reaches completion"}:::decision N_CompleteSeizureReleaseProcessing_Node0_action["The seizure release processing is
marked as complete"]:::main N_CompleteSeizureReleaseProcessing_Node0 -- Yes --> N_CompleteSeizureReleaseProcessing_Node0_action N_CompleteSeizureReleaseProcessing_Node0_action --> E_CompleteSeizureReleaseProcessing S_CompleteSeizureReleaseProcessing --> N_CompleteSeizureReleaseProcessing_Node0 N_CompleteSeizureReleaseProcessing_Node0 -- No --> E_CompleteSeizureReleaseProcessing
File: GCX016E.cbl
GIVEN: All seizure release processing steps have been executed
WHEN: The workflow reaches completion
THEN: The seizure release processing is marked as complete
βœ“ Consolidated Acceptance Criteria
  • The system processes the CAE event code → the train all clear 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_ReceiveCAEDispositionCodeforTrain(["Start Step"]) E_ReceiveCAEDispositionCodeforTrain(["End Step"]) N_ReceiveCAEDispositionCodeforTrain_Node0{"The system processes the CAE event
code"}:::decision N_ReceiveCAEDispositionCodeforTrain_Node0_action["The train all clear processing is
initiated"]:::main N_ReceiveCAEDispositionCodeforTrain_Node0 -- Yes --> N_ReceiveCAEDispositionCodeforTrain_Node0_action N_ReceiveCAEDispositionCodeforTrain_Node0_action --> E_ReceiveCAEDispositionCodeforTrain S_ReceiveCAEDispositionCodeforTrain --> N_ReceiveCAEDispositionCodeforTrain_Node0 N_ReceiveCAEDispositionCodeforTrain_Node0 -- No --> E_ReceiveCAEDispositionCodeforTrain
File: GCX016E.cbl
GIVEN: A CAE disposition code is received for a specific train
WHEN: The system processes the CAE event code
THEN: The train all clear processing is initiated
βœ“ Consolidated Acceptance Criteria
  • The system checks the train list segments → the train existence is validated against the 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_ValidateTrainExistsinSystem(["Start Step"]) E_ValidateTrainExistsinSystem(["End Step"]) N_ValidateTrainExistsinSystem_Node0{"The system checks the train list
segments"}:::decision N_ValidateTrainExistsinSystem_Node0_action["The train existence is validated
against the GCWTL train list"]:::main N_ValidateTrainExistsinSystem_Node0 -- Yes --> N_ValidateTrainExistsinSystem_Node0_action N_ValidateTrainExistsinSystem_Node0_action --> E_ValidateTrainExistsinSystem S_ValidateTrainExistsinSystem --> N_ValidateTrainExistsinSystem_Node0 N_ValidateTrainExistsinSystem_Node0 -- No --> E_ValidateTrainExistsinSystem
File: GCX016E.cbl
GIVEN: A CAE disposition code is being processed for a train
WHEN: The system checks the train list segments
THEN: The train existence is validated against the GCWTL train list
βœ“ Consolidated Acceptance Criteria
  • If if the train was found in the train list → processing continues to set all clear status if train exists, otherwise error 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_TrainFound(["Start Step"]) E_TrainFound(["End Step"]) N_TrainFound_Node0{"The system evaluates if the train
was found in the train list"}:::decision N_TrainFound_Node0_action["Processing continues to set all
clear status if train exists,
otherwise error processing is
initiated"]:::main N_TrainFound_Node0 -- Yes --> N_TrainFound_Node0_action N_TrainFound_Node0_action --> E_TrainFound S_TrainFound --> N_TrainFound_Node0 N_TrainFound_Node0 -- No --> E_TrainFound
File: GCX016E.cbl
GIVEN: Train existence validation has been completed
WHEN: The system evaluates if the train was found in the train list
THEN: Processing continues to set all clear status if train exists, otherwise error processing is initiated
βœ“ Consolidated Acceptance Criteria
  • The CAE disposition code is processed → the train all clear status flag is set to indicate the train is cleared for 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_SetTrainAllClearStatusFlag(["Start Step"]) E_SetTrainAllClearStatusFlag(["End Step"]) N_SetTrainAllClearStatusFlag_Node0{"The CAE disposition code is
processed"}:::decision N_SetTrainAllClearStatusFlag_Node0_action["The train all clear status flag is
set to indicate the train is cleared
for export"]:::main N_SetTrainAllClearStatusFlag_Node0 -- Yes --> N_SetTrainAllClearStatusFlag_Node0_action N_SetTrainAllClearStatusFlag_Node0_action --> E_SetTrainAllClearStatusFlag S_SetTrainAllClearStatusFlag --> N_SetTrainAllClearStatusFlag_Node0 N_SetTrainAllClearStatusFlag_Node0 -- No --> E_SetTrainAllClearStatusFlag
File: GCX016E.cbl
GIVEN: A valid train has been found in the system
WHEN: The CAE disposition code is processed
THEN: The train all clear status flag is set to indicate the train is cleared for export
βœ“ Consolidated Acceptance Criteria
  • The system processes the all clear action → any previous hold status flags are cleared to ensure clean all clear 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_ClearAnyPreviousHoldStatus(["Start Step"]) E_ClearAnyPreviousHoldStatus(["End Step"]) N_ClearAnyPreviousHoldStatus_Node0{"The system processes the all clear
action"}:::decision N_ClearAnyPreviousHoldStatus_Node0_action["Any previous hold status flags are
cleared to ensure clean all clear
state"]:::main N_ClearAnyPreviousHoldStatus_Node0 -- Yes --> N_ClearAnyPreviousHoldStatus_Node0_action N_ClearAnyPreviousHoldStatus_Node0_action --> E_ClearAnyPreviousHoldStatus S_ClearAnyPreviousHoldStatus --> N_ClearAnyPreviousHoldStatus_Node0 N_ClearAnyPreviousHoldStatus_Node0 -- No --> E_ClearAnyPreviousHoldStatus
File: GCX016E.cbl
GIVEN: A train all clear status flag has been set
WHEN: The system processes the all clear action
THEN: Any previous hold status flags are cleared to ensure clean all clear state
βœ“ Consolidated Acceptance Criteria
  • The all clear processing is completed → an audit log entry is created documenting the all clear action 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_LogAllClearAction(["Start Step"]) E_LogAllClearAction(["End Step"]) N_LogAllClearAction_Node0{"The all clear processing is
completed"}:::decision N_LogAllClearAction_Node0_action["An audit log entry is created
documenting the all clear action
with timestamp and train details"]:::main N_LogAllClearAction_Node0 -- Yes --> N_LogAllClearAction_Node0_action N_LogAllClearAction_Node0_action --> E_LogAllClearAction S_LogAllClearAction --> N_LogAllClearAction_Node0 N_LogAllClearAction_Node0 -- No --> E_LogAllClearAction
File: GCX016E.cbl
GIVEN: Train status has been successfully updated in the database
WHEN: The all clear processing is completed
THEN:
  • An audit log entry is created documenting the all clear action with timestamp
  • Train details
βœ“ Consolidated Acceptance Criteria
  • The system sends the notification → the all clear confirmation is transmitted to the Merlin system 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_SendAllClearConfirmation(["Start Step"]) E_SendAllClearConfirmation(["End Step"]) N_SendAllClearConfirmation_Node0{"The system sends the notification"}:::decision N_SendAllClearConfirmation_Node0_action["The all clear confirmation is
transmitted to the Merlin system for
distribution"]:::main N_SendAllClearConfirmation_Node0 -- Yes --> N_SendAllClearConfirmation_Node0_action N_SendAllClearConfirmation_Node0_action --> E_SendAllClearConfirmation S_SendAllClearConfirmation --> N_SendAllClearConfirmation_Node0 N_SendAllClearConfirmation_Node0 -- No --> E_SendAllClearConfirmation
File: GCX016E.cbl
GIVEN: Merlin notification message has been generated
WHEN: The system sends the notification
THEN: The all clear confirmation is transmitted to the Merlin system for distribution
βœ“ Consolidated Acceptance Criteria
  • The system transmits the error notification → the error message is sent to Merlin system to notify relevant parties of the 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_SendErrorMessagetoMerlin(["Start Step"]) E_SendErrorMessagetoMerlin(["End Step"]) N_SendErrorMessagetoMerlin_Node0{"The system transmits the error
notification"}:::decision N_SendErrorMessagetoMerlin_Node0_action["The error message is sent to Merlin
system to notify relevant parties of
the processing failure"]:::exclusion N_SendErrorMessagetoMerlin_Node0 -- Yes -->|Alternative| N_SendErrorMessagetoMerlin_Node0_action N_SendErrorMessagetoMerlin_Node0_action --> E_SendErrorMessagetoMerlin S_SendErrorMessagetoMerlin --> N_SendErrorMessagetoMerlin_Node0 N_SendErrorMessagetoMerlin_Node0 -- No --> E_SendErrorMessagetoMerlin
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Train not found error has been generated
WHEN: The system transmits the error notification
THEN: The error message is sent to Merlin system to notify relevant parties of the processing failure
βœ“ Consolidated Acceptance Criteria
  • The system processes the VID segment equipment ID field → the equipment ID must contain non-blank, valid alphanumeric data to proceed with hold release processing
  • The system processes the VID segment equipment ID field → the equipment ID must be validated for proper format and non-blank 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_ValidateEquipmentIDinVIDSegment(["Start Step"]) E_ValidateEquipmentIDinVIDSegment(["End Step"]) N_ValidateEquipmentIDinVIDSegment_Node0{"The system processes the VID
segment equipment ID field"}:::decision N_ValidateEquipmentIDinVIDSegment_Node0_action["The equipment ID must contain
non-blank, valid alphanumeric data
to proceed with hold release
processing"]:::main N_ValidateEquipmentIDinVIDSegment_Node0 -- Yes --> N_ValidateEquipmentIDinVIDSegment_Node0_action N_ValidateEquipmentIDinVIDSegment_Node0_action --> E_ValidateEquipmentIDinVIDSegment S_ValidateEquipmentIDinVIDSegment --> N_ValidateEquipmentIDinVIDSegment_Node0 N_ValidateEquipmentIDinVIDSegment_Node1{"The system processes the VID
segment equipment ID field"}:::decision N_ValidateEquipmentIDinVIDSegment_Node1_action["The equipment ID must be validated
for proper format and non-blank
content"]:::main N_ValidateEquipmentIDinVIDSegment_Node1 -- Yes --> N_ValidateEquipmentIDinVIDSegment_Node1_action N_ValidateEquipmentIDinVIDSegment_Node1_action --> E_ValidateEquipmentIDinVIDSegment N_ValidateEquipmentIDinVIDSegment_Node0 -- No --> N_ValidateEquipmentIDinVIDSegment_Node1 N_ValidateEquipmentIDinVIDSegment_Node1 -- No --> E_ValidateEquipmentIDinVIDSegment
File: GCX016E.cbl
GIVEN: A VID segment is received with HRE disposition code
WHEN: The system processes the VID segment equipment ID field
THEN: The equipment ID must contain non-blank, valid alphanumeric data to proceed with hold release processing
File: GCX016E.cbl
GIVEN: A VID segment is received with SER disposition code
WHEN: The system processes the VID segment equipment ID field
THEN:
  • The equipment id must be validated for proper format
  • Non-blank content
βœ“ Consolidated Acceptance Criteria
  • The system searches the train consist list for the equipment → the equipment must be found in the train consist to proceed with hold 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_LookupEquipmentinTrainConsist(["Start Step"]) E_LookupEquipmentinTrainConsist(["End Step"]) N_LookupEquipmentinTrainConsist_Node0{"The system searches the train
consist list for the equipment"}:::decision N_LookupEquipmentinTrainConsist_Node0_action["The equipment must be found in the
train consist to proceed with hold
release processing"]:::main N_LookupEquipmentinTrainConsist_Node0 -- Yes --> N_LookupEquipmentinTrainConsist_Node0_action N_LookupEquipmentinTrainConsist_Node0_action --> E_LookupEquipmentinTrainConsist S_LookupEquipmentinTrainConsist --> N_LookupEquipmentinTrainConsist_Node0 N_LookupEquipmentinTrainConsist_Node0 -- No --> E_LookupEquipmentinTrainConsist
File: GCX016E.cbl
GIVEN: A valid equipment ID from VID segment
WHEN: The system searches the train consist list for the equipment
THEN: The equipment must be found in the train consist to proceed with hold release processing
βœ“ Consolidated Acceptance Criteria
  • The system checks the equipment's current hold status → the equipment must currently have a hold flag set to proceed with hold 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_CheckCurrentEquipmentHoldStatus(["Start Step"]) E_CheckCurrentEquipmentHoldStatus(["End Step"]) N_CheckCurrentEquipmentHoldStatus_Node0{"The system checks the equipment s
current hold status"}:::decision N_CheckCurrentEquipmentHoldStatus_Node0_action["The equipment must currently have a
hold flag set to proceed with hold
release"]:::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: GCX016E.cbl
GIVEN: Equipment exists in the train consist
WHEN: The system checks the equipment's current hold status
THEN: The equipment must currently have a hold flag set to proceed with hold release
βœ“ Consolidated Acceptance Criteria
  • The system updates the train list → the equipment status in the train list is updated to reflect the released status
  • The system updates the train consist information → update the equipment status in the train list to show seized status
  • The system updates the train equipment list → the equipment status is updated in the train list
  • The system updates train records → the equipment status in the train list is updated to reflect 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_UpdateEquipmentStatusinTrainList(["Start Step"]) E_UpdateEquipmentStatusinTrainList(["End Step"]) N_UpdateEquipmentStatusinTrainList_Node0{"The system updates the train list"}:::decision N_UpdateEquipmentStatusinTrainList_Node0_action["The equipment status in the train
list is updated to reflect the
released status"]:::main N_UpdateEquipmentStatusinTrainList_Node0 -- Yes --> N_UpdateEquipmentStatusinTrainList_Node0_action N_UpdateEquipmentStatusinTrainList_Node0_action --> E_UpdateEquipmentStatusinTrainList S_UpdateEquipmentStatusinTrainList --> N_UpdateEquipmentStatusinTrainList_Node0 N_UpdateEquipmentStatusinTrainList_Node1{"The system updates the train
consist information"}:::decision N_UpdateEquipmentStatusinTrainList_Node1_action["Update the equipment status in the
train list to show seized status"]:::main N_UpdateEquipmentStatusinTrainList_Node1 -- Yes --> N_UpdateEquipmentStatusinTrainList_Node1_action N_UpdateEquipmentStatusinTrainList_Node1_action --> E_UpdateEquipmentStatusinTrainList N_UpdateEquipmentStatusinTrainList_Node0 -- No --> N_UpdateEquipmentStatusinTrainList_Node1 N_UpdateEquipmentStatusinTrainList_Node2{"The system updates the train
equipment list"}:::decision N_UpdateEquipmentStatusinTrainList_Node2_action["The equipment status is updated in
the train list"]:::main N_UpdateEquipmentStatusinTrainList_Node2 -- Yes --> N_UpdateEquipmentStatusinTrainList_Node2_action N_UpdateEquipmentStatusinTrainList_Node2_action --> E_UpdateEquipmentStatusinTrainList N_UpdateEquipmentStatusinTrainList_Node1 -- No --> N_UpdateEquipmentStatusinTrainList_Node2 N_UpdateEquipmentStatusinTrainList_Node3{"The system updates train records"}:::decision N_UpdateEquipmentStatusinTrainList_Node3_action["The equipment status in the train
list is updated to reflect seized
status"]:::main N_UpdateEquipmentStatusinTrainList_Node3 -- Yes --> N_UpdateEquipmentStatusinTrainList_Node3_action N_UpdateEquipmentStatusinTrainList_Node3_action --> E_UpdateEquipmentStatusinTrainList N_UpdateEquipmentStatusinTrainList_Node2 -- No --> N_UpdateEquipmentStatusinTrainList_Node3 N_UpdateEquipmentStatusinTrainList_Node3 -- No --> E_UpdateEquipmentStatusinTrainList
File: GCX016E.cbl
GIVEN: Equipment hold flag has been removed
WHEN: The system updates the train list
THEN: The equipment status in the train list is updated to reflect the released status
File: GCX016E.cbl
GIVEN: Equipment seizure flag has been set
WHEN: The system updates the train consist information
THEN: Update the equipment status in the train list to show seized status
File: GCX016E.cbl
GIVEN: Equipment status has been processed for release
WHEN: The system updates the train equipment list
THEN: The equipment status is updated in the train list
File: GCX016E.cbl
GIVEN: Equipment seizure flag has been set
WHEN: The system updates train records
THEN: The equipment status in the train list is updated to reflect seized status
βœ“ Consolidated Acceptance Criteria
  • The system updates train-level counters → the train hold counter is decremented by one to reflect the 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_DecrementTrainHoldCounter(["Start Step"]) E_DecrementTrainHoldCounter(["End Step"]) N_DecrementTrainHoldCounter_Node0{"The system updates train-level
counters"}:::decision N_DecrementTrainHoldCounter_Node0_action["The train hold counter is
decremented by one to reflect the
equipment release"]:::main N_DecrementTrainHoldCounter_Node0 -- Yes --> N_DecrementTrainHoldCounter_Node0_action N_DecrementTrainHoldCounter_Node0_action --> E_DecrementTrainHoldCounter S_DecrementTrainHoldCounter --> N_DecrementTrainHoldCounter_Node0 N_DecrementTrainHoldCounter_Node0 -- No --> E_DecrementTrainHoldCounter
File: GCX016E.cbl
GIVEN: Equipment hold has been successfully released
WHEN: The system updates train-level counters
THEN: The train hold counter is decremented by one to reflect the equipment release
βœ“ Consolidated Acceptance Criteria
  • The system checks if any equipment remains held → if train hold counter equals zero, all equipment is considered released; otherwise 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_AllEquipmentReleased(["Start Step"]) E_AllEquipmentReleased(["End Step"]) N_AllEquipmentReleased_Node0{"The system checks if any equipment
remains held"}:::decision N_AllEquipmentReleased_Node0_action["If train hold counter equals zero,
all equipment is considered released
otherwise equipment remains held"]:::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: GCX016E.cbl
GIVEN: Train hold counter has been decremented
WHEN: The system checks if any equipment remains held
THEN: If train hold counter equals zero, all equipment is considered released; otherwise equipment remains held
βœ“ Consolidated Acceptance Criteria
  • The system updates the train status → the train hold 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_UpdateTrainHoldStatustoReleased(["Start Step"]) E_UpdateTrainHoldStatustoReleased(["End Step"]) N_UpdateTrainHoldStatustoReleased_Node0{"The system updates the train status"}:::decision N_UpdateTrainHoldStatustoReleased_Node0_action["The train hold status is set to
released"]:::main N_UpdateTrainHoldStatustoReleased_Node0 -- Yes --> N_UpdateTrainHoldStatustoReleased_Node0_action N_UpdateTrainHoldStatustoReleased_Node0_action --> E_UpdateTrainHoldStatustoReleased S_UpdateTrainHoldStatustoReleased --> N_UpdateTrainHoldStatustoReleased_Node0 N_UpdateTrainHoldStatustoReleased_Node0 -- No --> E_UpdateTrainHoldStatustoReleased
File: GCX016E.cbl
GIVEN: All equipment in the train has been released from hold
WHEN: The system updates the train status
THEN: The train hold status is set to released
βœ“ Consolidated Acceptance Criteria
  • The system performs logging operations → an audit record is created documenting the equipment hold release action with timestamp 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_LogEquipmentHoldReleaseAction(["Start Step"]) E_LogEquipmentHoldReleaseAction(["End Step"]) N_LogEquipmentHoldReleaseAction_Node0{"The system performs logging
operations"}:::decision N_LogEquipmentHoldReleaseAction_Node0_action["An audit record is created
documenting the equipment hold
release action with timestamp and
equipment details"]:::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: GCX016E.cbl
GIVEN: Equipment hold has been successfully released
WHEN: The system performs logging operations
THEN:
  • An audit record is created documenting the equipment hold release action with timestamp
  • Equipment details
βœ“ Consolidated Acceptance Criteria
  • The system generates notifications → internal notifications are created to inform relevant parties of the equipment release
  • The system generates release notification → an equipment release notification is generated
  • The system generates notifications → a release notification must be created containing equipment identification 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_GenerateEquipmentReleaseNotification(["Start Step"]) E_GenerateEquipmentReleaseNotification(["End Step"]) N_GenerateEquipmentReleaseNotification_Node0{"The system generates notifications"}:::decision N_GenerateEquipmentReleaseNotification_Node0_action["Internal notifications are created
to inform relevant parties of the
equipment release"]:::main N_GenerateEquipmentReleaseNotification_Node0 -- Yes --> N_GenerateEquipmentReleaseNotification_Node0_action N_GenerateEquipmentReleaseNotification_Node0_action --> E_GenerateEquipmentReleaseNotification S_GenerateEquipmentReleaseNotification --> N_GenerateEquipmentReleaseNotification_Node0 N_GenerateEquipmentReleaseNotification_Node1{"The system generates release
notification"}:::decision N_GenerateEquipmentReleaseNotification_Node1_action["An equipment release notification
is generated"]:::main N_GenerateEquipmentReleaseNotification_Node1 -- Yes --> N_GenerateEquipmentReleaseNotification_Node1_action N_GenerateEquipmentReleaseNotification_Node1_action --> E_GenerateEquipmentReleaseNotification N_GenerateEquipmentReleaseNotification_Node0 -- No --> N_GenerateEquipmentReleaseNotification_Node1 N_GenerateEquipmentReleaseNotification_Node2{"The system generates notifications"}:::decision N_GenerateEquipmentReleaseNotification_Node2_action["A release notification must be
created containing equipment
identification and release details"]:::main N_GenerateEquipmentReleaseNotification_Node2 -- Yes --> N_GenerateEquipmentReleaseNotification_Node2_action N_GenerateEquipmentReleaseNotification_Node2_action --> E_GenerateEquipmentReleaseNotification N_GenerateEquipmentReleaseNotification_Node1 -- No --> N_GenerateEquipmentReleaseNotification_Node2 N_GenerateEquipmentReleaseNotification_Node2 -- No --> E_GenerateEquipmentReleaseNotification
File: GCX016E.cbl
GIVEN: Equipment hold release has been logged
WHEN: The system generates notifications
THEN: Internal notifications are created to inform relevant parties of the equipment release
File: GCX016E.cbl
GIVEN: Equipment release action has been logged
WHEN: The system generates release notification
THEN: An equipment release notification is generated
File: GCX016E.cbl
GIVEN: Equipment seizure release action has been logged
WHEN: The system generates notifications
THEN:
  • A release notification must be created containing equipment identification
  • Release details
βœ“ Consolidated Acceptance Criteria
  • The system sends external notifications → a Merlin message is sent containing equipment release details 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_SendMerlinMessageforEquipmentRelease(["Start Step"]) E_SendMerlinMessageforEquipmentRelease(["End Step"]) N_SendMerlinMessageforEquipmentRelease_Node0{"The system sends external
notifications"}:::decision N_SendMerlinMessageforEquipmentRelease_Node0_action["A Merlin message is sent containing
equipment release details to
external systems"]:::main N_SendMerlinMessageforEquipmentRelease_Node0 -- Yes --> N_SendMerlinMessageforEquipmentRelease_Node0_action N_SendMerlinMessageforEquipmentRelease_Node0_action --> E_SendMerlinMessageforEquipmentRelease S_SendMerlinMessageforEquipmentRelease --> N_SendMerlinMessageforEquipmentRelease_Node0 N_SendMerlinMessageforEquipmentRelease_Node0 -- No --> E_SendMerlinMessageforEquipmentRelease
File: GCX016E.cbl
GIVEN: Equipment release notification has been generated
WHEN: The system sends external notifications
THEN: A Merlin message is sent containing equipment release details to external systems
βœ“ Consolidated Acceptance Criteria
  • Equipment ID validation fails → an error is generated indicating invalid equipment ID and processing stops
  • The system handles validation failure → an error message is generated indicating invalid equipment ID format
  • The equipment ID validation fails due to invalid format or blank content → an error must be generated indicating 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_GenerateErrorInvalidEquipmentID(["Start Step"]) E_GenerateErrorInvalidEquipmentID(["End Step"]) N_GenerateErrorInvalidEquipmentID_Node0{"Equipment ID validation fails"}:::decision N_GenerateErrorInvalidEquipmentID_Node0_action["An error is generated indicating
invalid equipment ID and processing
stops"]:::main N_GenerateErrorInvalidEquipmentID_Node0 -- Yes --> N_GenerateErrorInvalidEquipmentID_Node0_action N_GenerateErrorInvalidEquipmentID_Node0_action --> E_GenerateErrorInvalidEquipmentID S_GenerateErrorInvalidEquipmentID --> N_GenerateErrorInvalidEquipmentID_Node0 N_GenerateErrorInvalidEquipmentID_Node1{"The system handles validation
failure"}:::decision N_GenerateErrorInvalidEquipmentID_Node1_action["An error message is generated
indicating invalid equipment ID
format"]:::main N_GenerateErrorInvalidEquipmentID_Node1 -- Yes --> N_GenerateErrorInvalidEquipmentID_Node1_action N_GenerateErrorInvalidEquipmentID_Node1_action --> E_GenerateErrorInvalidEquipmentID N_GenerateErrorInvalidEquipmentID_Node0 -- No --> N_GenerateErrorInvalidEquipmentID_Node1 N_GenerateErrorInvalidEquipmentID_Node2{"The equipment ID validation fails
due to invalid format or blank
content"}:::decision N_GenerateErrorInvalidEquipmentID_Node2_action["An error must be generated
indicating invalid equipment ID"]:::exclusion N_GenerateErrorInvalidEquipmentID_Node2 -- Yes -->|Alternative| N_GenerateErrorInvalidEquipmentID_Node2_action N_GenerateErrorInvalidEquipmentID_Node2_action --> E_GenerateErrorInvalidEquipmentID N_GenerateErrorInvalidEquipmentID_Node1 -- No --> N_GenerateErrorInvalidEquipmentID_Node2 N_GenerateErrorInvalidEquipmentID_Node2 -- No --> E_GenerateErrorInvalidEquipmentID
File: GCX016E.cbl
GIVEN: VID segment contains invalid or blank equipment ID
WHEN: Equipment ID validation fails
THEN:
  • An error is generated indicating invalid equipment id
  • Processing stops
File: GCX016E.cbl
GIVEN: Equipment ID format validation has failed
WHEN: The system handles validation failure
THEN: An error message is generated indicating invalid equipment ID format
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A VID segment with SER disposition is received
WHEN: The equipment ID validation fails due to invalid format or blank content
THEN: An error must be generated indicating invalid equipment ID
βœ“ Consolidated Acceptance Criteria
  • Equipment lookup in train consist fails → an error is generated indicating equipment not found in train and processing stops
  • The equipment cannot be found in the train equipment list → an equipment not found error is generated and processing terminates
  • Equipment is not found in the train equipment list → an equipment not found error is generated
  • The system handles search failure → an error message is generated indicating equipment not found in train
  • The equipment is not found in the train equipment consist → an error must be generated indicating equipment not found in 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_GenerateErrorEquipmentNotFound(["Start Step"]) E_GenerateErrorEquipmentNotFound(["End Step"]) N_GenerateErrorEquipmentNotFound_Node0{"Equipment lookup in train consist
fails"}:::decision N_GenerateErrorEquipmentNotFound_Node0_action["An error is generated indicating
equipment not found in train and
processing stops"]:::main N_GenerateErrorEquipmentNotFound_Node0 -- Yes --> N_GenerateErrorEquipmentNotFound_Node0_action N_GenerateErrorEquipmentNotFound_Node0_action --> E_GenerateErrorEquipmentNotFound S_GenerateErrorEquipmentNotFound --> N_GenerateErrorEquipmentNotFound_Node0 N_GenerateErrorEquipmentNotFound_Node1{"The equipment cannot be found in
the train equipment list"}:::decision N_GenerateErrorEquipmentNotFound_Node1_action["An equipment not found error is
generated and processing terminates"]:::main N_GenerateErrorEquipmentNotFound_Node1 -- Yes --> N_GenerateErrorEquipmentNotFound_Node1_action N_GenerateErrorEquipmentNotFound_Node1_action --> E_GenerateErrorEquipmentNotFound N_GenerateErrorEquipmentNotFound_Node0 -- No --> N_GenerateErrorEquipmentNotFound_Node1 N_GenerateErrorEquipmentNotFound_Node2{"Equipment is not found in the train
equipment list"}:::decision N_GenerateErrorEquipmentNotFound_Node2_action["An equipment not found error is
generated"]:::main N_GenerateErrorEquipmentNotFound_Node2 -- Yes --> N_GenerateErrorEquipmentNotFound_Node2_action N_GenerateErrorEquipmentNotFound_Node2_action --> E_GenerateErrorEquipmentNotFound N_GenerateErrorEquipmentNotFound_Node1 -- No --> N_GenerateErrorEquipmentNotFound_Node2 N_GenerateErrorEquipmentNotFound_Node3{"The system handles search failure"}:::decision N_GenerateErrorEquipmentNotFound_Node3_action["An error message is generated
indicating equipment not found in
train"]:::main N_GenerateErrorEquipmentNotFound_Node3 -- Yes --> N_GenerateErrorEquipmentNotFound_Node3_action N_GenerateErrorEquipmentNotFound_Node3_action --> E_GenerateErrorEquipmentNotFound N_GenerateErrorEquipmentNotFound_Node2 -- No --> N_GenerateErrorEquipmentNotFound_Node3 N_GenerateErrorEquipmentNotFound_Node4{"The equipment is not found in the
train equipment consist"}:::decision N_GenerateErrorEquipmentNotFound_Node4_action["An error must be generated
indicating equipment not found in
train"]:::main N_GenerateErrorEquipmentNotFound_Node4 -- Yes --> N_GenerateErrorEquipmentNotFound_Node4_action N_GenerateErrorEquipmentNotFound_Node4_action --> E_GenerateErrorEquipmentNotFound N_GenerateErrorEquipmentNotFound_Node3 -- No --> N_GenerateErrorEquipmentNotFound_Node4 N_GenerateErrorEquipmentNotFound_Node4 -- No --> E_GenerateErrorEquipmentNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Valid equipment ID that does not exist in train consist
WHEN: Equipment lookup in train consist fails
THEN:
  • An error is generated indicating equipment not found in train
  • Processing stops
File: GCX016E.cbl
GIVEN: Equipment ID is provided for seizure release
WHEN: The equipment cannot be found in the train equipment list
THEN:
  • An equipment not found error is generated
  • Processing terminates
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment ID has been extracted from VID segment
WHEN: Equipment is not found in the train equipment list
THEN: An equipment not found error is generated
File: GCX016E.cbl
GIVEN: Equipment search in train consist has failed to locate the specified equipment
WHEN: The system handles search failure
THEN: An error message is generated indicating equipment not found in train
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A valid equipment ID from VID segment
WHEN: The equipment is not found in the train equipment consist
THEN: An error must be generated indicating equipment not found in train
βœ“ Consolidated Acceptance Criteria
  • Hold release is attempted on non-held equipment → a warning is generated indicating equipment is not held and processing continues
  • Equipment is not currently in held status → a warning is generated indicating equipment is not 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_GenerateWarningEquipmentNotHeld(["Start Step"]) E_GenerateWarningEquipmentNotHeld(["End Step"]) N_GenerateWarningEquipmentNotHeld_Node0{"Hold release is attempted on
non-held equipment"}:::decision N_GenerateWarningEquipmentNotHeld_Node0_action["A warning is generated indicating
equipment is not held and processing
continues"]:::main N_GenerateWarningEquipmentNotHeld_Node0 -- Yes --> N_GenerateWarningEquipmentNotHeld_Node0_action N_GenerateWarningEquipmentNotHeld_Node0_action --> E_GenerateWarningEquipmentNotHeld S_GenerateWarningEquipmentNotHeld --> N_GenerateWarningEquipmentNotHeld_Node0 N_GenerateWarningEquipmentNotHeld_Node1{"Equipment is not currently in held
status"}:::decision N_GenerateWarningEquipmentNotHeld_Node1_action["A warning is generated indicating
equipment is not held"]:::main N_GenerateWarningEquipmentNotHeld_Node1 -- Yes --> N_GenerateWarningEquipmentNotHeld_Node1_action N_GenerateWarningEquipmentNotHeld_Node1_action --> E_GenerateWarningEquipmentNotHeld N_GenerateWarningEquipmentNotHeld_Node0 -- No --> N_GenerateWarningEquipmentNotHeld_Node1 N_GenerateWarningEquipmentNotHeld_Node1 -- No --> E_GenerateWarningEquipmentNotHeld
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment exists in train but is not currently held
WHEN: Hold release is attempted on non-held equipment
THEN:
  • A warning is generated indicating equipment is not held
  • Processing continues
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Valid release request exists for equipment found in train
WHEN: Equipment is not currently in held status
THEN: A warning is generated indicating equipment is not held
βœ“ Consolidated Acceptance Criteria
  • The system checks the disposition code from the previous X4 segment → processing continues only if the disposition code equals SEI, otherwise the equipment seizure process is skipped
  • The system checks the disposition code → if disposition code equals SEI, proceed with seizure processing, otherwise complete processing without 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_DispositionCodeSEI(["Start Step"]) E_DispositionCodeSEI(["End Step"]) N_DispositionCodeSEI_Node0{"The system checks the disposition
code from the previous X4 segment"}:::decision N_DispositionCodeSEI_Node0_action["Processing continues only if the
disposition code equals SEI,
otherwise the equipment seizure
process is skipped"]:::main N_DispositionCodeSEI_Node0 -- Yes --> N_DispositionCodeSEI_Node0_action N_DispositionCodeSEI_Node0_action --> E_DispositionCodeSEI S_DispositionCodeSEI --> N_DispositionCodeSEI_Node0 N_DispositionCodeSEI_Node1{"The system checks the disposition
code"}:::decision N_DispositionCodeSEI_Node1_action["If disposition code equals SEI,
proceed with seizure processing,
otherwise complete processing
without seizure"]:::main N_DispositionCodeSEI_Node1 -- Yes --> N_DispositionCodeSEI_Node1_action N_DispositionCodeSEI_Node1_action --> E_DispositionCodeSEI N_DispositionCodeSEI_Node0 -- No --> N_DispositionCodeSEI_Node1 N_DispositionCodeSEI_Node1 -- No --> E_DispositionCodeSEI
File: GCX016E.cbl
GIVEN: A VID segment is received for equipment processing
WHEN: The system checks the disposition code from the previous X4 segment
THEN: Processing continues only if the disposition code equals SEI, otherwise the equipment seizure process is skipped
File: GCX016E.cbl
GIVEN: A VID segment has been processed and disposition code is available
WHEN: The system checks the disposition code
THEN: If disposition code equals SEI, proceed with seizure processing, otherwise complete processing without seizure
βœ“ Consolidated Acceptance Criteria
  • The system validates the equipment ID format → the equipment ID must be in valid format with proper initial and number components, otherwise generate invalid equipment ID error
  • The system checks equipment ID validity → if equipment ID is invalid, generate invalid equipment ID error, otherwise proceed to locate equipment in train
  • If validation results → if equipment ID is valid, proceed to locate equipment in train, otherwise generate invalid equipment ID error
  • The system validates the equipment ID format and content → the equipment ID is accepted if valid or rejected if invalid with appropriate 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_EquipmentIDValid(["Start Step"]) E_EquipmentIDValid(["End Step"]) N_EquipmentIDValid_Node0{"The system validates the equipment
ID format"}:::decision N_EquipmentIDValid_Node0_action["The equipment ID must be in valid
format with proper initial and
number components, otherwise
generate invalid equipment ID error"]:::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 checks equipment ID
validity"}:::decision N_EquipmentIDValid_Node1_action["If equipment ID is invalid,
generate invalid equipment ID error,
otherwise proceed to locate
equipment in train"]:::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 validation
results"}:::decision N_EquipmentIDValid_Node2_action["If equipment ID is valid, proceed
to locate equipment in train,
otherwise generate invalid equipment
ID error"]:::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 format and content"}:::decision N_EquipmentIDValid_Node3_action["The 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_Node3 -- No --> E_EquipmentIDValid
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from the VID segment
WHEN: The system validates the equipment ID format
THEN:
  • The equipment id must be in valid format with proper initial
  • Number components, otherwise generate invalid equipment id error
File: GCX016E.cbl
GIVEN: An equipment ID format has been validated
WHEN: The system checks equipment ID validity
THEN: If equipment ID is invalid, generate invalid equipment ID error, otherwise proceed to locate equipment in train
File: GCX016E.cbl
GIVEN: Equipment ID format validation has been performed
WHEN: The system evaluates validation results
THEN: If equipment ID is valid, proceed to locate equipment in train, otherwise generate invalid equipment ID error
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from a VID segment
WHEN:
  • The system validates the equipment id format
  • Content
THEN: The equipment ID is accepted if valid or rejected if invalid with appropriate error handling
βœ“ Consolidated Acceptance Criteria
  • The system searches the train consist for the equipment → the equipment must exist in the train list, otherwise generate equipment not found error
  • The system searches for the equipment in the train equipment list → the system determines if the equipment exists in the train and proceeds accordingly or generates equipment not found error
  • The equipment search is completed → if equipment is not found in train, generate equipment not found error, otherwise check current equipment status
  • The system searches for the equipment in the train equipment list → the system determines if the equipment exists in the train or generates equipment not found error
  • If search results → if equipment is found in train, proceed to check current status, otherwise generate equipment not found error
  • If the search results → if equipment is not found, it is added to the train list; if found, disposition processing continues
  • The search results are evaluated → the system confirms equipment exists in train or generates equipment 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_EquipmentFoundinTrain(["Start Step"]) E_EquipmentFoundinTrain(["End Step"]) N_EquipmentFoundinTrain_Node0{"The system searches the train
consist for the equipment"}:::decision N_EquipmentFoundinTrain_Node0_action["The equipment must exist in the
train list, otherwise generate
equipment not found error"]:::main N_EquipmentFoundinTrain_Node0 -- Yes --> N_EquipmentFoundinTrain_Node0_action N_EquipmentFoundinTrain_Node0_action --> E_EquipmentFoundinTrain S_EquipmentFoundinTrain --> N_EquipmentFoundinTrain_Node0 N_EquipmentFoundinTrain_Node1{"The system searches for the
equipment in the train equipment
list"}:::decision N_EquipmentFoundinTrain_Node1_action["The system determines if the
equipment exists in the train and
proceeds accordingly or generates
equipment not found error"]:::main N_EquipmentFoundinTrain_Node1 -- Yes --> N_EquipmentFoundinTrain_Node1_action N_EquipmentFoundinTrain_Node1_action --> E_EquipmentFoundinTrain N_EquipmentFoundinTrain_Node0 -- No --> N_EquipmentFoundinTrain_Node1 N_EquipmentFoundinTrain_Node2{"The equipment search is completed"}:::decision N_EquipmentFoundinTrain_Node2_action["If equipment is not found in train,
generate equipment not found error,
otherwise check current equipment
status"]:::main N_EquipmentFoundinTrain_Node2 -- Yes --> N_EquipmentFoundinTrain_Node2_action N_EquipmentFoundinTrain_Node2_action --> E_EquipmentFoundinTrain N_EquipmentFoundinTrain_Node1 -- No --> N_EquipmentFoundinTrain_Node2 N_EquipmentFoundinTrain_Node3{"The system searches for the
equipment in the train equipment
list"}:::decision N_EquipmentFoundinTrain_Node3_action["The system determines if the
equipment exists in the train or
generates equipment not found error"]:::main N_EquipmentFoundinTrain_Node3 -- Yes --> N_EquipmentFoundinTrain_Node3_action N_EquipmentFoundinTrain_Node3_action --> E_EquipmentFoundinTrain N_EquipmentFoundinTrain_Node2 -- No --> N_EquipmentFoundinTrain_Node3 N_EquipmentFoundinTrain_Node4{"The system evaluates search results"}:::decision N_EquipmentFoundinTrain_Node4_action["If equipment is found in train,
proceed to check current status,
otherwise generate equipment not
found error"]:::main N_EquipmentFoundinTrain_Node4 -- Yes --> N_EquipmentFoundinTrain_Node4_action N_EquipmentFoundinTrain_Node4_action --> E_EquipmentFoundinTrain N_EquipmentFoundinTrain_Node3 -- No --> N_EquipmentFoundinTrain_Node4 N_EquipmentFoundinTrain_Node5{"The system evaluates the search
results"}:::decision N_EquipmentFoundinTrain_Node5_action["If equipment is not found, it is
added to the train list if found,
disposition processing continues"]:::main N_EquipmentFoundinTrain_Node5 -- Yes --> N_EquipmentFoundinTrain_Node5_action N_EquipmentFoundinTrain_Node5_action --> E_EquipmentFoundinTrain N_EquipmentFoundinTrain_Node4 -- No --> N_EquipmentFoundinTrain_Node5 N_EquipmentFoundinTrain_Node6{"The search results are evaluated"}:::decision N_EquipmentFoundinTrain_Node6_action["The system confirms equipment
exists in train or generates
equipment not found condition"]:::main N_EquipmentFoundinTrain_Node6 -- Yes --> N_EquipmentFoundinTrain_Node6_action N_EquipmentFoundinTrain_Node6_action --> E_EquipmentFoundinTrain N_EquipmentFoundinTrain_Node5 -- No --> N_EquipmentFoundinTrain_Node6 N_EquipmentFoundinTrain_Node6 -- No --> E_EquipmentFoundinTrain
File: GCX016E.cbl
GIVEN: A valid equipment ID has been provided for seizure
WHEN: The system searches the train consist for the equipment
THEN: The equipment must exist in the train list, otherwise generate equipment not found error
File: GCX016E.cbl
GIVEN: An equipment ID is provided for seizure release
WHEN: The system searches for the equipment in the train equipment list
THEN:
  • The system determines if the equipment exists in the train
  • Proceeds accordingly or generates equipment not found error
File: GCX016E.cbl
GIVEN: The system has searched for equipment in the train consist
WHEN: The equipment search is completed
THEN: If equipment is not found in train, generate equipment not found error, otherwise check current equipment status
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from VID segment
WHEN: The system searches for the equipment in the train equipment list
THEN: The system determines if the equipment exists in the train or generates equipment not found error
File: GCX016E.cbl
GIVEN: Equipment location search has been completed
WHEN: The system evaluates search results
THEN: If equipment is found in train, proceed to check current status, otherwise generate equipment not found error
File: GCX016E.cbl
GIVEN: Equipment has been searched in the train consist
WHEN: The system evaluates the search results
THEN: If equipment is not found, it is added to the train list; if found, disposition processing continues
File: GCX016E.cbl
GIVEN: The system has searched for equipment in the train consist
WHEN: The search results are evaluated
THEN: The system confirms equipment exists in train or generates equipment not found condition
βœ“ Consolidated Acceptance Criteria
  • The system checks the current seizure status of the equipment → if equipment is already seized, generate equipment already seized error, otherwise proceed with seizure
  • If seizure status → if equipment is not already seized, proceed with seizure, otherwise generate already seized 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_EquipmentAlreadySeized(["Start Step"]) E_EquipmentAlreadySeized(["End Step"]) N_EquipmentAlreadySeized_Node0{"The system checks the current
seizure status of the equipment"}:::decision N_EquipmentAlreadySeized_Node0_action["If equipment is already seized,
generate equipment already seized
error, otherwise proceed with
seizure"]:::main N_EquipmentAlreadySeized_Node0 -- Yes --> N_EquipmentAlreadySeized_Node0_action N_EquipmentAlreadySeized_Node0_action --> E_EquipmentAlreadySeized S_EquipmentAlreadySeized --> N_EquipmentAlreadySeized_Node0 N_EquipmentAlreadySeized_Node1{"The system evaluates seizure status"}:::decision N_EquipmentAlreadySeized_Node1_action["If equipment is not already seized,
proceed with seizure, otherwise
generate already seized warning"]:::main N_EquipmentAlreadySeized_Node1 -- Yes --> N_EquipmentAlreadySeized_Node1_action N_EquipmentAlreadySeized_Node1_action --> E_EquipmentAlreadySeized N_EquipmentAlreadySeized_Node0 -- No --> N_EquipmentAlreadySeized_Node1 N_EquipmentAlreadySeized_Node1 -- No --> E_EquipmentAlreadySeized
File: GCX016E.cbl
GIVEN: Equipment exists in the train and seizure is requested
WHEN: The system checks the current seizure status of the equipment
THEN: If equipment is already seized, generate equipment already seized error, otherwise proceed with seizure
File: GCX016E.cbl
GIVEN: Current equipment status has been retrieved
WHEN: The system evaluates seizure status
THEN: If equipment is not already seized, proceed with seizure, otherwise generate already seized warning
βœ“ Consolidated Acceptance Criteria
  • The seizure request is processed → set the equipment seizure flag to indicate the equipment is now seized
  • The system processes seizure request → the equipment seizure flag is set to indicate 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_SetEquipmentSeizureFlag(["Start Step"]) E_SetEquipmentSeizureFlag(["End Step"]) N_SetEquipmentSeizureFlag_Node0{"The seizure request is processed"}:::decision N_SetEquipmentSeizureFlag_Node0_action["Set the equipment seizure flag to
indicate the equipment is now seized"]:::main N_SetEquipmentSeizureFlag_Node0 -- Yes --> N_SetEquipmentSeizureFlag_Node0_action N_SetEquipmentSeizureFlag_Node0_action --> E_SetEquipmentSeizureFlag S_SetEquipmentSeizureFlag --> N_SetEquipmentSeizureFlag_Node0 N_SetEquipmentSeizureFlag_Node1{"The system processes seizure
request"}:::decision N_SetEquipmentSeizureFlag_Node1_action["The equipment seizure flag is set
to indicate seized status"]:::main N_SetEquipmentSeizureFlag_Node1 -- Yes --> N_SetEquipmentSeizureFlag_Node1_action N_SetEquipmentSeizureFlag_Node1_action --> E_SetEquipmentSeizureFlag N_SetEquipmentSeizureFlag_Node0 -- No --> N_SetEquipmentSeizureFlag_Node1 N_SetEquipmentSeizureFlag_Node1 -- No --> E_SetEquipmentSeizureFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment is found in train and is not currently seized
WHEN: The seizure request is processed
THEN: Set the equipment seizure flag to indicate the equipment is now seized
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment is found in train and not already seized
WHEN: The system processes seizure request
THEN: The equipment seizure flag is set to indicate seized status
βœ“ Consolidated Acceptance Criteria
  • The system updates train-level seizure tracking → increment the train seizure counter by one to reflect the additional seized 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_IncrementTrainSeizureCounter(["Start Step"]) E_IncrementTrainSeizureCounter(["End Step"]) N_IncrementTrainSeizureCounter_Node0{"The system updates train-level
seizure tracking"}:::decision N_IncrementTrainSeizureCounter_Node0_action["Increment the train seizure counter
by one to reflect the additional
seized equipment"]:::main N_IncrementTrainSeizureCounter_Node0 -- Yes --> N_IncrementTrainSeizureCounter_Node0_action N_IncrementTrainSeizureCounter_Node0_action --> E_IncrementTrainSeizureCounter S_IncrementTrainSeizureCounter --> N_IncrementTrainSeizureCounter_Node0 N_IncrementTrainSeizureCounter_Node0 -- No --> E_IncrementTrainSeizureCounter
File: GCX016E.cbl
GIVEN: Equipment status has been updated to seized in the train list
WHEN: The system updates train-level seizure tracking
THEN: Increment the train seizure counter by one to reflect the additional seized equipment
βœ“ Consolidated Acceptance Criteria
  • The system logs the seizure action → create a log entry with equipment ID, seizure timestamp, and action details for audit purposes
  • The system performs logging → a log entry is created documenting the equipment seizure action 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_LogEquipmentSeizureAction(["Start Step"]) E_LogEquipmentSeizureAction(["End Step"]) N_LogEquipmentSeizureAction_Node0{"The system logs the seizure action"}:::decision N_LogEquipmentSeizureAction_Node0_action["Create a log entry with equipment
ID, seizure timestamp, and action
details for audit purposes"]:::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 performs logging"}:::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_Node1 -- No --> E_LogEquipmentSeizureAction
File: GCX016E.cbl
GIVEN: Equipment has been successfully seized and counters updated
WHEN: The system logs the seizure action
THEN: Create a log entry with equipment ID, seizure timestamp, and action details for audit purposes
File: GCX016E.cbl
GIVEN: Equipment status has been updated in train list
WHEN: The system performs logging
THEN: A log entry is created documenting the equipment seizure action with relevant details
βœ“ Consolidated Acceptance Criteria
  • The system generates confirmation messaging → create a seizure confirmation message with equipment details and 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_GenerateSeizureConfirmationMessage(["Start Step"]) E_GenerateSeizureConfirmationMessage(["End Step"]) N_GenerateSeizureConfirmationMessage_Node0{"The system generates confirmation
messaging"}:::decision N_GenerateSeizureConfirmationMessage_Node0_action["Create a seizure confirmation
message with equipment details and
seizure status"]:::main N_GenerateSeizureConfirmationMessage_Node0 -- Yes --> N_GenerateSeizureConfirmationMessage_Node0_action N_GenerateSeizureConfirmationMessage_Node0_action --> E_GenerateSeizureConfirmationMessage S_GenerateSeizureConfirmationMessage --> N_GenerateSeizureConfirmationMessage_Node0 N_GenerateSeizureConfirmationMessage_Node0 -- No --> E_GenerateSeizureConfirmationMessage
File: GCX016E.cbl
GIVEN: Equipment seizure has been logged successfully
WHEN: The system generates confirmation messaging
THEN:
  • Create a seizure confirmation message with equipment details
  • Seizure status
βœ“ Consolidated Acceptance Criteria
  • If overall train seizure status → if all equipment in the train is now seized, update the train status to fully seized, otherwise maintain partial 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_UpdateTrainStatusifAllEquipmentSeized(["Start Step"]) E_UpdateTrainStatusifAllEquipmentSeized(["End Step"]) N_UpdateTrainStatusifAllEquipmentSeized_Node0{"The system evaluates overall train
seizure status"}:::decision N_UpdateTrainStatusifAllEquipmentSeized_Node0_action["If all equipment in the train is
now seized, update the train status
to fully seized, otherwise maintain
partial seizure status"]:::main N_UpdateTrainStatusifAllEquipmentSeized_Node0 -- Yes --> N_UpdateTrainStatusifAllEquipmentSeized_Node0_action N_UpdateTrainStatusifAllEquipmentSeized_Node0_action --> E_UpdateTrainStatusifAllEquipmentSeized S_UpdateTrainStatusifAllEquipmentSeized --> N_UpdateTrainStatusifAllEquipmentSeized_Node0 N_UpdateTrainStatusifAllEquipmentSeized_Node0 -- No --> E_UpdateTrainStatusifAllEquipmentSeized
File: GCX016E.cbl
GIVEN: Individual equipment has been seized and confirmation message generated
WHEN: The system evaluates overall train seizure status
THEN: If all equipment in the train is now seized, update the train status to fully seized, otherwise maintain partial seizure status
βœ“ Consolidated Acceptance Criteria
  • The system dispatches seizure notifications → send equipment seizure notification to appropriate recipients including equipment details and seizure 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_SendEquipmentSeizureNotification(["Start Step"]) E_SendEquipmentSeizureNotification(["End Step"]) N_SendEquipmentSeizureNotification_Node0{"The system dispatches seizure
notifications"}:::decision N_SendEquipmentSeizureNotification_Node0_action["Send equipment seizure notification
to appropriate recipients including
equipment details and seizure
confirmation"]:::main N_SendEquipmentSeizureNotification_Node0 -- Yes --> N_SendEquipmentSeizureNotification_Node0_action N_SendEquipmentSeizureNotification_Node0_action --> E_SendEquipmentSeizureNotification S_SendEquipmentSeizureNotification --> N_SendEquipmentSeizureNotification_Node0 N_SendEquipmentSeizureNotification_Node0 -- No --> E_SendEquipmentSeizureNotification
File: GCX016E.cbl
GIVEN: Train status has been evaluated and updated as needed
WHEN: The system dispatches seizure notifications
THEN:
  • Send equipment seizure notification to appropriate recipients including equipment details
  • Seizure confirmation
βœ“ Consolidated Acceptance Criteria
  • The system processes the disposition code request → the system initiates equipment seizure 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_ReceiveSERDispositionCodeforEquipment(["Start Step"]) E_ReceiveSERDispositionCodeforEquipment(["End Step"]) N_ReceiveSERDispositionCodeforEquipment_Node0{"The system processes the
disposition code request"}:::decision N_ReceiveSERDispositionCodeforEquipment_Node0_action["The system initiates equipment
seizure release processing workflow"]:::main N_ReceiveSERDispositionCodeforEquipment_Node0 -- Yes --> N_ReceiveSERDispositionCodeforEquipment_Node0_action N_ReceiveSERDispositionCodeforEquipment_Node0_action --> E_ReceiveSERDispositionCodeforEquipment S_ReceiveSERDispositionCodeforEquipment --> N_ReceiveSERDispositionCodeforEquipment_Node0 N_ReceiveSERDispositionCodeforEquipment_Node0 -- No --> E_ReceiveSERDispositionCodeforEquipment
File: GCX016E.cbl
GIVEN: A SER disposition code is received for equipment seizure release
WHEN: The system processes the disposition code request
THEN: The system initiates equipment seizure release processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the VID segment → the equipment ID is extracted and prepared for seizure 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_ProcessVIDSegmentforEquipmentID(["Start Step"]) E_ProcessVIDSegmentforEquipmentID(["End Step"]) N_ProcessVIDSegmentforEquipmentID_Node0{"The system processes the VID
segment"}:::decision N_ProcessVIDSegmentforEquipmentID_Node0_action["The equipment ID is extracted and
prepared for seizure release
validation"]:::main N_ProcessVIDSegmentforEquipmentID_Node0 -- Yes --> N_ProcessVIDSegmentforEquipmentID_Node0_action N_ProcessVIDSegmentforEquipmentID_Node0_action --> E_ProcessVIDSegmentforEquipmentID S_ProcessVIDSegmentforEquipmentID --> N_ProcessVIDSegmentforEquipmentID_Node0 N_ProcessVIDSegmentforEquipmentID_Node0 -- No --> E_ProcessVIDSegmentforEquipmentID
File: GCX016E.cbl
GIVEN: A VID segment contains equipment identification data
WHEN: The system processes the VID segment
THEN:
  • The equipment id is extracted
  • Prepared for seizure release validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the equipment's current seizure status → the system determines if the equipment is currently seized and 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_ValidateEquipmentSeizureStatus(["Start Step"]) E_ValidateEquipmentSeizureStatus(["End Step"]) N_ValidateEquipmentSeizureStatus_Node0{"The system validates the equipment
s current seizure status"}:::decision N_ValidateEquipmentSeizureStatus_Node0_action["The system determines if the
equipment is currently seized and
eligible for release"]:::main N_ValidateEquipmentSeizureStatus_Node0 -- Yes --> N_ValidateEquipmentSeizureStatus_Node0_action N_ValidateEquipmentSeizureStatus_Node0_action --> E_ValidateEquipmentSeizureStatus S_ValidateEquipmentSeizureStatus --> N_ValidateEquipmentSeizureStatus_Node0 N_ValidateEquipmentSeizureStatus_Node0 -- No --> E_ValidateEquipmentSeizureStatus
File: GCX016E.cbl
GIVEN: Equipment exists in the train consist
WHEN: The system validates the equipment's current seizure status
THEN:
  • The system determines if the equipment is currently seized
  • Eligible for release
βœ“ Consolidated Acceptance Criteria
  • The system checks if the equipment is currently seized → the system proceeds with seizure release if equipment is seized or generates warning if equipment is 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_EquipmentCurrentlySeized(["Start Step"]) E_EquipmentCurrentlySeized(["End Step"]) N_EquipmentCurrentlySeized_Node0{"The system checks if the equipment
is currently seized"}:::decision N_EquipmentCurrentlySeized_Node0_action["The system proceeds with seizure
release if equipment is seized or
generates warning if equipment is
not seized"]:::main N_EquipmentCurrentlySeized_Node0 -- Yes --> N_EquipmentCurrentlySeized_Node0_action N_EquipmentCurrentlySeized_Node0_action --> E_EquipmentCurrentlySeized S_EquipmentCurrentlySeized --> N_EquipmentCurrentlySeized_Node0 N_EquipmentCurrentlySeized_Node0 -- No --> E_EquipmentCurrentlySeized
File: GCX016E.cbl
GIVEN: Equipment seizure status has been validated
WHEN: The system checks if the equipment is currently seized
THEN: The system proceeds with seizure release if equipment is seized or generates warning if equipment is not seized
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure release request → the seizure flag is removed from the equipment 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_RemoveEquipmentSeizureFlag(["Start Step"]) E_RemoveEquipmentSeizureFlag(["End Step"]) N_RemoveEquipmentSeizureFlag_Node0{"The system processes the seizure
release request"}:::decision N_RemoveEquipmentSeizureFlag_Node0_action["The seizure flag is removed from
the equipment record"]:::main N_RemoveEquipmentSeizureFlag_Node0 -- Yes --> N_RemoveEquipmentSeizureFlag_Node0_action N_RemoveEquipmentSeizureFlag_Node0_action --> E_RemoveEquipmentSeizureFlag S_RemoveEquipmentSeizureFlag --> N_RemoveEquipmentSeizureFlag_Node0 N_RemoveEquipmentSeizureFlag_Node0 -- No --> E_RemoveEquipmentSeizureFlag
File: GCX016E.cbl
GIVEN: Equipment is currently seized and eligible for release
WHEN: The system processes the seizure release request
THEN: The seizure flag is removed from the equipment record
βœ“ Consolidated Acceptance Criteria
  • The system updates the train equipment list → the equipment status is updated to reflect the seizure release in the train consist
  • The system updates equipment records → update the status of all equipment in the train to reflect arrival 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_UpdateEquipmentStatusinTrain(["Start Step"]) E_UpdateEquipmentStatusinTrain(["End Step"]) N_UpdateEquipmentStatusinTrain_Node0{"The system updates the train
equipment list"}:::decision N_UpdateEquipmentStatusinTrain_Node0_action["The equipment status is updated to
reflect the seizure release in the
train consist"]:::main N_UpdateEquipmentStatusinTrain_Node0 -- Yes --> N_UpdateEquipmentStatusinTrain_Node0_action N_UpdateEquipmentStatusinTrain_Node0_action --> E_UpdateEquipmentStatusinTrain S_UpdateEquipmentStatusinTrain --> N_UpdateEquipmentStatusinTrain_Node0 N_UpdateEquipmentStatusinTrain_Node1{"The system updates equipment
records"}:::decision N_UpdateEquipmentStatusinTrain_Node1_action["Update the status of all equipment
in the train to reflect arrival at
destination"]:::main N_UpdateEquipmentStatusinTrain_Node1 -- Yes --> N_UpdateEquipmentStatusinTrain_Node1_action N_UpdateEquipmentStatusinTrain_Node1_action --> E_UpdateEquipmentStatusinTrain N_UpdateEquipmentStatusinTrain_Node0 -- No --> N_UpdateEquipmentStatusinTrain_Node1 N_UpdateEquipmentStatusinTrain_Node1 -- No --> E_UpdateEquipmentStatusinTrain
File: GCX016E.cbl
GIVEN: Equipment seizure flag has been removed
WHEN: The system updates the train equipment list
THEN: The equipment status is updated to reflect the seizure release in the train consist
File: GCX016E.cbl
GIVEN: Train arrival action has been logged
WHEN: The system updates equipment records
THEN: Update the status of all equipment in the train to reflect arrival at destination
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure release → the train seizure counter is decremented by one
  • The system updates train-level seizure tracking → the train seizure counter must be 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_DecrementTrainSeizureCounter(["Start Step"]) E_DecrementTrainSeizureCounter(["End Step"]) N_DecrementTrainSeizureCounter_Node0{"The system processes the seizure
release"}:::decision N_DecrementTrainSeizureCounter_Node0_action["The train seizure counter is
decremented by one"]:::main N_DecrementTrainSeizureCounter_Node0 -- Yes --> N_DecrementTrainSeizureCounter_Node0_action N_DecrementTrainSeizureCounter_Node0_action --> E_DecrementTrainSeizureCounter S_DecrementTrainSeizureCounter --> N_DecrementTrainSeizureCounter_Node0 N_DecrementTrainSeizureCounter_Node1{"The system updates train-level
seizure tracking"}:::decision N_DecrementTrainSeizureCounter_Node1_action["The train seizure counter must be
decremented by one"]:::main N_DecrementTrainSeizureCounter_Node1 -- Yes --> N_DecrementTrainSeizureCounter_Node1_action N_DecrementTrainSeizureCounter_Node1_action --> E_DecrementTrainSeizureCounter N_DecrementTrainSeizureCounter_Node0 -- No --> N_DecrementTrainSeizureCounter_Node1 N_DecrementTrainSeizureCounter_Node1 -- No --> E_DecrementTrainSeizureCounter
File: GCX016E.cbl
GIVEN: Equipment status has been updated in the train
WHEN: The system processes the seizure release
THEN: The train seizure counter is decremented by one
File: GCX016E.cbl
GIVEN: Equipment seizure status has been successfully removed
WHEN: The system updates train-level seizure tracking
THEN: The train seizure counter must be decremented by one
βœ“ Consolidated Acceptance Criteria
  • The system checks if any equipment remains seized in the train → the system determines if all equipment is released from seizure and proceeds accordingly
  • If the remaining seizure counter value → if seizure counter equals zero, then all equipment is released from seizure, otherwise some equipment remains 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_AllEquipmentReleasedfromSeizure(["Start Step"]) E_AllEquipmentReleasedfromSeizure(["End Step"]) N_AllEquipmentReleasedfromSeizure_Node0{"The system checks if any equipment
remains seized in the train"}:::decision N_AllEquipmentReleasedfromSeizure_Node0_action["The system determines if all
equipment is released from seizure
and proceeds accordingly"]:::main N_AllEquipmentReleasedfromSeizure_Node0 -- Yes --> N_AllEquipmentReleasedfromSeizure_Node0_action N_AllEquipmentReleasedfromSeizure_Node0_action --> E_AllEquipmentReleasedfromSeizure S_AllEquipmentReleasedfromSeizure --> N_AllEquipmentReleasedfromSeizure_Node0 N_AllEquipmentReleasedfromSeizure_Node1{"The system evaluates the remaining
seizure counter value"}:::decision N_AllEquipmentReleasedfromSeizure_Node1_action["If seizure counter equals zero,
then all equipment is released from
seizure, otherwise some equipment
remains seized"]:::main N_AllEquipmentReleasedfromSeizure_Node1 -- Yes --> N_AllEquipmentReleasedfromSeizure_Node1_action N_AllEquipmentReleasedfromSeizure_Node1_action --> E_AllEquipmentReleasedfromSeizure N_AllEquipmentReleasedfromSeizure_Node0 -- No --> N_AllEquipmentReleasedfromSeizure_Node1 N_AllEquipmentReleasedfromSeizure_Node1 -- No --> E_AllEquipmentReleasedfromSeizure
File: GCX016E.cbl
GIVEN: Train seizure counter has been decremented
WHEN: The system checks if any equipment remains seized in the train
THEN:
  • The system determines if all equipment is released from seizure
  • Proceeds accordingly
File: GCX016E.cbl
GIVEN: Train seizure counter has been decremented
WHEN: The system evaluates the remaining seizure counter value
THEN: If seizure counter equals zero, then all equipment is released from seizure, otherwise some equipment remains seized
βœ“ Consolidated Acceptance Criteria
  • The system processes the final seizure release → the train seizure status is cleared and the train is no longer considered 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_ClearTrainSeizureStatus(["Start Step"]) E_ClearTrainSeizureStatus(["End Step"]) N_ClearTrainSeizureStatus_Node0{"The system processes the final
seizure release"}:::decision N_ClearTrainSeizureStatus_Node0_action["The train seizure status is cleared
and the train is no longer
considered seized"]:::main N_ClearTrainSeizureStatus_Node0 -- Yes --> N_ClearTrainSeizureStatus_Node0_action N_ClearTrainSeizureStatus_Node0_action --> E_ClearTrainSeizureStatus S_ClearTrainSeizureStatus --> N_ClearTrainSeizureStatus_Node0 N_ClearTrainSeizureStatus_Node0 -- No --> E_ClearTrainSeizureStatus
File: GCX016E.cbl
GIVEN: All equipment in the train has been released from seizure
WHEN: The system processes the final seizure release
THEN:
  • The train seizure status is cleared
  • The train is no longer considered seized
βœ“ Consolidated Acceptance Criteria
  • The system completes the seizure release action → the seizure release action is logged with equipment 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_LogEquipmentSeizureReleaseAction(["Start Step"]) E_LogEquipmentSeizureReleaseAction(["End Step"]) N_LogEquipmentSeizureReleaseAction_Node0{"The system completes the seizure
release action"}:::decision N_LogEquipmentSeizureReleaseAction_Node0_action["The seizure release action is
logged with equipment details and
timestamp"]:::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: GCX016E.cbl
GIVEN: Equipment seizure release has been processed
WHEN: The system completes the seizure release action
THEN:
  • The seizure release action is logged with equipment details
  • Timestamp
βœ“ Consolidated Acceptance Criteria
  • The system sends external notifications → the equipment seizure release notification is transmitted to relevant 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_SendEquipmentReleaseNotification(["Start Step"]) E_SendEquipmentReleaseNotification(["End Step"]) N_SendEquipmentReleaseNotification_Node0{"The system sends external
notifications"}:::decision N_SendEquipmentReleaseNotification_Node0_action["The equipment seizure release
notification is transmitted to
relevant external systems"]:::main N_SendEquipmentReleaseNotification_Node0 -- Yes --> N_SendEquipmentReleaseNotification_Node0_action N_SendEquipmentReleaseNotification_Node0_action --> E_SendEquipmentReleaseNotification S_SendEquipmentReleaseNotification --> N_SendEquipmentReleaseNotification_Node0 N_SendEquipmentReleaseNotification_Node0 -- No --> E_SendEquipmentReleaseNotification
File: GCX016E.cbl
GIVEN: Merlin notification message has been generated
WHEN: The system sends external notifications
THEN: The equipment seizure release notification is transmitted to relevant external systems
βœ“ Consolidated Acceptance Criteria
  • A seizure release request is processed for non-seized equipment → a warning is generated indicating equipment is not seized 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_GenerateWarningEquipmentNotSeized(["Start Step"]) E_GenerateWarningEquipmentNotSeized(["End Step"]) N_GenerateWarningEquipmentNotSeized_Node0{"A seizure release request is
processed for non-seized equipment"}:::decision N_GenerateWarningEquipmentNotSeized_Node0_action["A warning is generated indicating
equipment is not seized and
processing continues"]:::main N_GenerateWarningEquipmentNotSeized_Node0 -- Yes --> N_GenerateWarningEquipmentNotSeized_Node0_action N_GenerateWarningEquipmentNotSeized_Node0_action --> E_GenerateWarningEquipmentNotSeized S_GenerateWarningEquipmentNotSeized --> N_GenerateWarningEquipmentNotSeized_Node0 N_GenerateWarningEquipmentNotSeized_Node0 -- No --> E_GenerateWarningEquipmentNotSeized
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment exists in the train but is not currently seized
WHEN: A seizure release request is processed for non-seized equipment
THEN:
  • A warning is generated indicating equipment is not seized
  • Processing continues
βœ“ Consolidated Acceptance Criteria
  • The system processes the train identification → set train type as export manifest and proceed to port validation for export processing
  • The system processes the train classification → the train is identified and flagged as an export manifest train for export-specific business rule application
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IdentifyasExportManifestTrain(["Start Step"]) E_IdentifyasExportManifestTrain(["End Step"]) N_IdentifyasExportManifestTrain_Node0{"The system processes the train
identification"}:::decision N_IdentifyasExportManifestTrain_Node0_action["Set train type as export manifest
and proceed to port validation for
export processing"]:::main N_IdentifyasExportManifestTrain_Node0 -- Yes --> N_IdentifyasExportManifestTrain_Node0_action N_IdentifyasExportManifestTrain_Node0_action --> E_IdentifyasExportManifestTrain S_IdentifyasExportManifestTrain --> N_IdentifyasExportManifestTrain_Node0 N_IdentifyasExportManifestTrain_Node1{"The system processes the train
classification"}:::decision N_IdentifyasExportManifestTrain_Node1_action["The train is identified and flagged
as an export manifest train for
export-specific business rule
application"]:::main N_IdentifyasExportManifestTrain_Node1 -- Yes --> N_IdentifyasExportManifestTrain_Node1_action N_IdentifyasExportManifestTrain_Node1_action --> E_IdentifyasExportManifestTrain N_IdentifyasExportManifestTrain_Node0 -- No --> N_IdentifyasExportManifestTrain_Node1 N_IdentifyasExportManifestTrain_Node1 -- No --> E_IdentifyasExportManifestTrain
File: GCX016E.cbl
GIVEN: Train ID ends with 'T' indicating export manifest train
WHEN: The system processes the train identification
THEN:
  • Set train type as export manifest
  • Proceed to port validation for export processing
File: GCX016E.cbl
GIVEN: A train ID has been validated to contain a 'T' suffix
WHEN: The system processes the train classification
THEN:
  • The train is identified
  • Flagged as an export manifest train for export-specific business rule application
βœ“ Consolidated Acceptance Criteria
  • The system processes the train identification → set train type as import manifest and route to standard import 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_IdentifyasImportManifestTrain(["Start Step"]) E_IdentifyasImportManifestTrain(["End Step"]) N_IdentifyasImportManifestTrain_Node0{"The system processes the train
identification"}:::decision N_IdentifyasImportManifestTrain_Node0_action["Set train type as import manifest
and route to standard import
processing workflow"]:::main N_IdentifyasImportManifestTrain_Node0 -- Yes --> N_IdentifyasImportManifestTrain_Node0_action N_IdentifyasImportManifestTrain_Node0_action --> E_IdentifyasImportManifestTrain S_IdentifyasImportManifestTrain --> N_IdentifyasImportManifestTrain_Node0 N_IdentifyasImportManifestTrain_Node0 -- No --> E_IdentifyasImportManifestTrain
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Train ID does not end with 'T'
WHEN: The system processes the train identification
THEN:
  • Set train type as import manifest
  • Route to standard import processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system validates the port designation → if port is designated for export manifests, proceed with export processing, otherwise route to standard import processing
  • The system looks up the port in the export manifest port configuration table → the port is validated as authorized for export manifests if found in the table, otherwise validation fails
  • The system checks if the port is designated for export manifests → if port is designated for export manifests, proceed with export processing, otherwise generate port 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_PortDesignatedforExportManifests(["Start Step"]) E_PortDesignatedforExportManifests(["End Step"]) N_PortDesignatedforExportManifests_Node0{"The system validates the port
designation"}:::decision N_PortDesignatedforExportManifests_Node0_action["If port is designated for export
manifests, proceed with export
processing, otherwise route to
standard import processing"]:::main N_PortDesignatedforExportManifests_Node0 -- Yes --> N_PortDesignatedforExportManifests_Node0_action N_PortDesignatedforExportManifests_Node0_action --> E_PortDesignatedforExportManifests S_PortDesignatedforExportManifests --> N_PortDesignatedforExportManifests_Node0 N_PortDesignatedforExportManifests_Node1{"The system looks up the port in the
export manifest port configuration
table"}:::decision N_PortDesignatedforExportManifests_Node1_action["The port is validated as authorized
for export manifests if found in the
table, otherwise validation fails"]:::main N_PortDesignatedforExportManifests_Node1 -- Yes --> N_PortDesignatedforExportManifests_Node1_action N_PortDesignatedforExportManifests_Node1_action --> E_PortDesignatedforExportManifests N_PortDesignatedforExportManifests_Node0 -- No --> N_PortDesignatedforExportManifests_Node1 N_PortDesignatedforExportManifests_Node2{"The system checks if the port is
designated for export manifests"}:::decision N_PortDesignatedforExportManifests_Node2_action["If port is designated for export
manifests, proceed with export
processing, otherwise generate port
validation error"]:::main N_PortDesignatedforExportManifests_Node2 -- Yes --> N_PortDesignatedforExportManifests_Node2_action N_PortDesignatedforExportManifests_Node2_action --> E_PortDesignatedforExportManifests N_PortDesignatedforExportManifests_Node1 -- No --> N_PortDesignatedforExportManifests_Node2 N_PortDesignatedforExportManifests_Node2 -- No --> E_PortDesignatedforExportManifests
File: GCX016E.cbl
GIVEN: Export manifest train has been identified and arrival port has been extracted from P4 location segment
WHEN: The system validates the port designation
THEN: If port is designated for export manifests, proceed with export processing, otherwise route to standard import processing
File: GCX016E.cbl
GIVEN: An export manifest train arrives at a specific port AND the port code is extracted from P4 location segment
WHEN: The system looks up the port in the export manifest port configuration table
THEN: The port is validated as authorized for export manifests if found in the table, otherwise validation fails
File: GCX016E.cbl
GIVEN: Port configuration data has been retrieved from system tables
WHEN: The system checks if the port is designated for export manifests
THEN: If port is designated for export manifests, proceed with export processing, otherwise generate port validation error
βœ“ Consolidated Acceptance Criteria
  • The system processes the export manifest train arrival → set train status to export manifest arrived and prepare for 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_SetExportManifestTrainStatus(["Start Step"]) E_SetExportManifestTrainStatus(["End Step"]) N_SetExportManifestTrainStatus_Node0{"The system processes the export
manifest train arrival"}:::decision N_SetExportManifestTrainStatus_Node0_action["Set train status to export manifest
arrived and prepare for subsequent
processing steps"]:::main N_SetExportManifestTrainStatus_Node0 -- Yes --> N_SetExportManifestTrainStatus_Node0_action N_SetExportManifestTrainStatus_Node0_action --> E_SetExportManifestTrainStatus S_SetExportManifestTrainStatus --> N_SetExportManifestTrainStatus_Node0 N_SetExportManifestTrainStatus_Node0 -- No --> E_SetExportManifestTrainStatus
File: GCX016E.cbl
GIVEN: Export manifest train has been validated and port is designated for export processing
WHEN: The system processes the export manifest train arrival
THEN:
  • Set train status to export manifest arrived
  • Prepare for subsequent processing steps
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival date update → extract and record the arrival date and time from V9 segment into the train record
  • The train arrival date needs to be recorded → extract and set the train arrival date from the V9 segment timestamp
  • The system processes the V9 segment containing arrival date and time → update the train arrival date with the date and time from the V9 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_UpdateTrainArrivalDatefromV9Segment(["Start Step"]) E_UpdateTrainArrivalDatefromV9Segment(["End Step"]) N_UpdateTrainArrivalDatefromV9Segment_Node0{"The system processes the arrival
date update"}:::decision N_UpdateTrainArrivalDatefromV9Segment_Node0_action["Extract and record the arrival date
and time from V9 segment into the
train record"]:::main N_UpdateTrainArrivalDatefromV9Segment_Node0 -- Yes --> N_UpdateTrainArrivalDatefromV9Segment_Node0_action N_UpdateTrainArrivalDatefromV9Segment_Node0_action --> E_UpdateTrainArrivalDatefromV9Segment S_UpdateTrainArrivalDatefromV9Segment --> N_UpdateTrainArrivalDatefromV9Segment_Node0 N_UpdateTrainArrivalDatefromV9Segment_Node1{"The train arrival date needs to be
recorded"}:::decision N_UpdateTrainArrivalDatefromV9Segment_Node1_action["Extract and set the train arrival
date from the V9 segment timestamp"]:::main N_UpdateTrainArrivalDatefromV9Segment_Node1 -- Yes --> N_UpdateTrainArrivalDatefromV9Segment_Node1_action N_UpdateTrainArrivalDatefromV9Segment_Node1_action --> E_UpdateTrainArrivalDatefromV9Segment N_UpdateTrainArrivalDatefromV9Segment_Node0 -- No --> N_UpdateTrainArrivalDatefromV9Segment_Node1 N_UpdateTrainArrivalDatefromV9Segment_Node2{"The system processes the V9 segment
containing arrival date and time"}:::decision N_UpdateTrainArrivalDatefromV9Segment_Node2_action["Update the train arrival date with
the date and time from the V9
segment"]:::main N_UpdateTrainArrivalDatefromV9Segment_Node2 -- Yes --> N_UpdateTrainArrivalDatefromV9Segment_Node2_action N_UpdateTrainArrivalDatefromV9Segment_Node2_action --> E_UpdateTrainArrivalDatefromV9Segment N_UpdateTrainArrivalDatefromV9Segment_Node1 -- No --> N_UpdateTrainArrivalDatefromV9Segment_Node2 N_UpdateTrainArrivalDatefromV9Segment_Node2 -- No --> E_UpdateTrainArrivalDatefromV9Segment
File: GCX016E.cbl
GIVEN: Export manifest train status has been set and V9 segment contains arrival date/time information
WHEN: The system processes the arrival date update
THEN:
  • Extract
  • Record the arrival date
  • Time from v9 segment into the train record
File: GCX016E.cbl
GIVEN: A train arrival is being processed and V9 segment contains date/time information
WHEN: The train arrival date needs to be recorded
THEN:
  • Extract
  • Set the train arrival date from the v9 segment timestamp
File: GCX016E.cbl
GIVEN: A train arrival status has been set
WHEN:
  • The system processes the v9 segment containing arrival date
  • Time
THEN:
  • Update the train arrival date with the date
  • Time from the v9 segment
βœ“ Consolidated Acceptance Criteria
  • The system completes the arrival processing → create audit log entry recording the export manifest train arrival with train ID, port, and arrival 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_LogExportManifestTrainArrival(["Start Step"]) E_LogExportManifestTrainArrival(["End Step"]) N_LogExportManifestTrainArrival_Node0{"The system completes the arrival
processing"}:::decision N_LogExportManifestTrainArrival_Node0_action["Create audit log entry recording
the export manifest train arrival
with train ID, port, and arrival
timestamp"]:::main N_LogExportManifestTrainArrival_Node0 -- Yes --> N_LogExportManifestTrainArrival_Node0_action N_LogExportManifestTrainArrival_Node0_action --> E_LogExportManifestTrainArrival S_LogExportManifestTrainArrival --> N_LogExportManifestTrainArrival_Node0 N_LogExportManifestTrainArrival_Node0 -- No --> E_LogExportManifestTrainArrival
File: GCX016E.cbl
GIVEN: Export manifest train arrival date has been updated successfully
WHEN: The system completes the arrival processing
THEN: Create audit log entry recording the export manifest train arrival with train ID, port, and arrival timestamp
βœ“ Consolidated Acceptance Criteria
  • The system generates arrival notifications → create and send export manifest arrival notification containing train details, arrival information, and routing 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_GenerateExportManifestArrivalNotification(["Start Step"]) E_GenerateExportManifestArrivalNotification(["End Step"]) N_GenerateExportManifestArrivalNotification_Node0{"The system generates arrival
notifications"}:::decision N_GenerateExportManifestArrivalNotification_Node0_action["Create and send export manifest
arrival notification containing
train details, arrival information,
and routing to appropriate
recipients"]:::main N_GenerateExportManifestArrivalNotification_Node0 -- Yes --> N_GenerateExportManifestArrivalNotification_Node0_action N_GenerateExportManifestArrivalNotification_Node0_action --> E_GenerateExportManifestArrivalNotification S_GenerateExportManifestArrivalNotification --> N_GenerateExportManifestArrivalNotification_Node0 N_GenerateExportManifestArrivalNotification_Node0 -- No --> E_GenerateExportManifestArrivalNotification
File: GCX016E.cbl
GIVEN: Export manifest train arrival has been logged successfully
WHEN: The system generates arrival notifications
THEN:
  • Create
  • Send export manifest arrival notification containing train details, arrival information, and routing to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system determines processing route → route train to standard import processing workflow and complete processing according to import procedures
  • The train is classified as import manifest or export port validation fails → the system routes the train to standard import processing workflow
  • The system routes the processing → the train is routed to standard import processing workflow instead of 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_RoutetoStandardImportProcessing(["Start Step"]) E_RoutetoStandardImportProcessing(["End Step"]) N_RoutetoStandardImportProcessing_Node0{"The system determines processing
route"}:::decision N_RoutetoStandardImportProcessing_Node0_action["Route train to standard import
processing workflow and complete
processing according to import
procedures"]:::main N_RoutetoStandardImportProcessing_Node0 -- Yes --> N_RoutetoStandardImportProcessing_Node0_action N_RoutetoStandardImportProcessing_Node0_action --> E_RoutetoStandardImportProcessing S_RoutetoStandardImportProcessing --> N_RoutetoStandardImportProcessing_Node0 N_RoutetoStandardImportProcessing_Node1{"The train is classified as import
manifest or export port validation
fails"}:::decision N_RoutetoStandardImportProcessing_Node1_action["The system routes the train to
standard import processing workflow"]:::main N_RoutetoStandardImportProcessing_Node1 -- Yes --> N_RoutetoStandardImportProcessing_Node1_action N_RoutetoStandardImportProcessing_Node1_action --> E_RoutetoStandardImportProcessing N_RoutetoStandardImportProcessing_Node0 -- No --> N_RoutetoStandardImportProcessing_Node1 N_RoutetoStandardImportProcessing_Node2{"The system routes the processing"}:::decision N_RoutetoStandardImportProcessing_Node2_action["The train is routed to standard
import processing workflow instead
of export processing"]:::main N_RoutetoStandardImportProcessing_Node2 -- Yes --> N_RoutetoStandardImportProcessing_Node2_action N_RoutetoStandardImportProcessing_Node2_action --> E_RoutetoStandardImportProcessing N_RoutetoStandardImportProcessing_Node1 -- No --> N_RoutetoStandardImportProcessing_Node2 N_RoutetoStandardImportProcessing_Node2 -- No --> E_RoutetoStandardImportProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Train is identified as import type OR export train port is not designated for export processing
WHEN: The system determines processing route
THEN:
  • Route train to standard import processing workflow
  • Complete processing according to import procedures
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train arrival event is received AND either the train ID does not have 'T' suffix OR the export manifest port validation fails
WHEN: The train is classified as import manifest or export port validation fails
THEN: The system routes the train to standard import processing workflow
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train ID does not have a 'T' suffix
WHEN: The system routes the processing
THEN: The train is routed to standard import processing workflow instead of export processing
βœ“ Consolidated Acceptance Criteria
  • The train arrival status needs to be established → set the train arrival status flag to indicate the train has arrived for import processing
  • The system processes the arrival event → set the train arrival status flag to indicate the train has 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_SetTrainArrivalStatus(["Start Step"]) E_SetTrainArrivalStatus(["End Step"]) N_SetTrainArrivalStatus_Node0{"The train arrival status needs to
be established"}:::decision N_SetTrainArrivalStatus_Node0_action["Set the train arrival status flag
to indicate the train has arrived
for import processing"]:::main N_SetTrainArrivalStatus_Node0 -- Yes --> N_SetTrainArrivalStatus_Node0_action N_SetTrainArrivalStatus_Node0_action --> E_SetTrainArrivalStatus S_SetTrainArrivalStatus --> N_SetTrainArrivalStatus_Node0 N_SetTrainArrivalStatus_Node1{"The system processes the arrival
event"}:::decision N_SetTrainArrivalStatus_Node1_action["Set the train arrival status flag
to indicate the train has arrived"]:::main N_SetTrainArrivalStatus_Node1 -- Yes --> N_SetTrainArrivalStatus_Node1_action N_SetTrainArrivalStatus_Node1_action --> E_SetTrainArrivalStatus N_SetTrainArrivalStatus_Node0 -- No --> N_SetTrainArrivalStatus_Node1 N_SetTrainArrivalStatus_Node1 -- No --> E_SetTrainArrivalStatus
File: GCX016E.cbl
GIVEN: A train is being processed for import manifest arrival
WHEN: The train arrival status needs to be established
THEN: Set the train arrival status flag to indicate the train has arrived for import processing
File: GCX016E.cbl
GIVEN: A train has been validated for arrival processing
WHEN: The system processes the arrival event
THEN: Set the train arrival status flag to indicate the train has arrived
βœ“ Consolidated Acceptance Criteria
  • The train arrival is being processed → if the train is currently held, clear the hold status to allow 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_ClearTrainHoldStatusifHeld(["Start Step"]) E_ClearTrainHoldStatusifHeld(["End Step"]) N_ClearTrainHoldStatusifHeld_Node0{"The train arrival is being
processed"}:::decision N_ClearTrainHoldStatusifHeld_Node0_action["If the train is currently held,
clear the hold status to allow
normal processing"]:::main N_ClearTrainHoldStatusifHeld_Node0 -- Yes --> N_ClearTrainHoldStatusifHeld_Node0_action N_ClearTrainHoldStatusifHeld_Node0_action --> E_ClearTrainHoldStatusifHeld S_ClearTrainHoldStatusifHeld --> N_ClearTrainHoldStatusifHeld_Node0 N_ClearTrainHoldStatusifHeld_Node0 -- No --> E_ClearTrainHoldStatusifHeld
File: GCX016E.cbl
GIVEN: A train is arriving and may have an existing hold status
WHEN: The train arrival is being processed
THEN: If the train is currently held, clear the hold status to allow normal processing
βœ“ Consolidated Acceptance Criteria
  • The system needs to record the train's arrived status → set the system flag to indicate the train is now arrived and available for cargo 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_SetTrainasArrivedinSystem(["Start Step"]) E_SetTrainasArrivedinSystem(["End Step"]) N_SetTrainasArrivedinSystem_Node0{"The system needs to record the
train s arrived status"}:::decision N_SetTrainasArrivedinSystem_Node0_action["Set the system flag to indicate the
train is now arrived and available
for cargo operations"]:::main N_SetTrainasArrivedinSystem_Node0 -- Yes --> N_SetTrainasArrivedinSystem_Node0_action N_SetTrainasArrivedinSystem_Node0_action --> E_SetTrainasArrivedinSystem S_SetTrainasArrivedinSystem --> N_SetTrainasArrivedinSystem_Node0 N_SetTrainasArrivedinSystem_Node0 -- No --> E_SetTrainasArrivedinSystem
File: GCX016E.cbl
GIVEN: A train has completed arrival processing steps
WHEN: The system needs to record the train's arrived status
THEN:
  • Set the system flag to indicate the train is now arrived
  • Available for cargo operations
βœ“ Consolidated Acceptance Criteria
  • Cargo arrival notifications need to be processed → process arrival notifications for all US cargos associated with this train
  • The system processes associated cargo arrivals → process arrival notifications for all US cargos in GCSUSRT segments 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_ProcessUSCargoArrivalNotifications(["Start Step"]) E_ProcessUSCargoArrivalNotifications(["End Step"]) N_ProcessUSCargoArrivalNotifications_Node0{"Cargo arrival notifications need to
be processed"}:::decision N_ProcessUSCargoArrivalNotifications_Node0_action["Process arrival notifications for
all US cargos associated with this
train"]:::main N_ProcessUSCargoArrivalNotifications_Node0 -- Yes --> N_ProcessUSCargoArrivalNotifications_Node0_action N_ProcessUSCargoArrivalNotifications_Node0_action --> E_ProcessUSCargoArrivalNotifications S_ProcessUSCargoArrivalNotifications --> N_ProcessUSCargoArrivalNotifications_Node0 N_ProcessUSCargoArrivalNotifications_Node1{"The system processes associated
cargo arrivals"}:::decision N_ProcessUSCargoArrivalNotifications_Node1_action["Process arrival notifications for
all US cargos in GCSUSRT segments
associated with the train"]:::main N_ProcessUSCargoArrivalNotifications_Node1 -- Yes --> N_ProcessUSCargoArrivalNotifications_Node1_action N_ProcessUSCargoArrivalNotifications_Node1_action --> E_ProcessUSCargoArrivalNotifications N_ProcessUSCargoArrivalNotifications_Node0 -- No --> N_ProcessUSCargoArrivalNotifications_Node1 N_ProcessUSCargoArrivalNotifications_Node1 -- No --> E_ProcessUSCargoArrivalNotifications
File: GCX016E.cbl
GIVEN: A train has arrived and contains US cargo manifests
WHEN: Cargo arrival notifications need to be processed
THEN: Process arrival notifications for all US cargos associated with this train
File: GCX016E.cbl
GIVEN: An import manifest train status has been updated in the database
WHEN: The system processes associated cargo arrivals
THEN: Process arrival notifications for all US cargos in GCSUSRT segments associated with the train
βœ“ Consolidated Acceptance Criteria
  • External systems need to be notified of the train arrival → generate and send AEI messages containing train arrival information to configured recipients
  • The system generates external notifications → send AEI messages to notify external systems of the train 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_SendAEIMessagesforTrainArrival(["Start Step"]) E_SendAEIMessagesforTrainArrival(["End Step"]) N_SendAEIMessagesforTrainArrival_Node0{"External systems need to be
notified of the train arrival"}:::decision N_SendAEIMessagesforTrainArrival_Node0_action["Generate and send AEI messages
containing train arrival information
to configured recipients"]:::main N_SendAEIMessagesforTrainArrival_Node0 -- Yes --> N_SendAEIMessagesforTrainArrival_Node0_action N_SendAEIMessagesforTrainArrival_Node0_action --> E_SendAEIMessagesforTrainArrival S_SendAEIMessagesforTrainArrival --> N_SendAEIMessagesforTrainArrival_Node0 N_SendAEIMessagesforTrainArrival_Node1{"The system generates external
notifications"}:::decision N_SendAEIMessagesforTrainArrival_Node1_action["Send AEI messages to notify
external systems of the train
arrival event"]:::main N_SendAEIMessagesforTrainArrival_Node1 -- Yes --> N_SendAEIMessagesforTrainArrival_Node1_action N_SendAEIMessagesforTrainArrival_Node1_action --> E_SendAEIMessagesforTrainArrival N_SendAEIMessagesforTrainArrival_Node0 -- No --> N_SendAEIMessagesforTrainArrival_Node1 N_SendAEIMessagesforTrainArrival_Node1 -- No --> E_SendAEIMessagesforTrainArrival
File: GCX016E.cbl
GIVEN: A train has arrived and AEI notification is configured
WHEN: External systems need to be notified of the train arrival
THEN:
  • Generate
  • Send aei messages containing train arrival information to configured recipients
File: GCX016E.cbl
GIVEN: US cargo arrival notifications have been processed for an import manifest train
WHEN: The system generates external notifications
THEN: Send AEI messages to notify external systems of the train arrival event
βœ“ Consolidated Acceptance Criteria
  • Confirmation of successful processing is required → generate train arrival confirmation message with processing results and 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_GenerateTrainArrivalConfirmation(["Start Step"]) E_GenerateTrainArrivalConfirmation(["End Step"]) N_GenerateTrainArrivalConfirmation_Node0{"Confirmation of successful
processing is required"}:::decision N_GenerateTrainArrivalConfirmation_Node0_action["Generate train arrival confirmation
message with processing results and
status"]:::main N_GenerateTrainArrivalConfirmation_Node0 -- Yes --> N_GenerateTrainArrivalConfirmation_Node0_action N_GenerateTrainArrivalConfirmation_Node0_action --> E_GenerateTrainArrivalConfirmation S_GenerateTrainArrivalConfirmation --> N_GenerateTrainArrivalConfirmation_Node0 N_GenerateTrainArrivalConfirmation_Node0 -- No --> E_GenerateTrainArrivalConfirmation
File: GCX016E.cbl
GIVEN: A train arrival has been completely processed
WHEN: Confirmation of successful processing is required
THEN:
  • Generate train arrival confirmation message with processing results
  • Status
βœ“ Consolidated Acceptance Criteria
  • The system checks if the train ID has a 'T' suffix → the train is classified as export manifest if suffix is 'T', otherwise as import manifest
  • The system checks if the train ID has a 'T' suffix → if train ID has 'T' suffix, identify as export manifest train, otherwise route to standard import processing
  • The system checks the train ID for 'T' suffix → if train ID does not have 'T' suffix, classify as import manifest for 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_TrainIDhasTsuffix(["Start Step"]) E_TrainIDhasTsuffix(["End Step"]) N_TrainIDhasTsuffix_Node0{"The system checks if the train ID
has a T suffix"}:::decision N_TrainIDhasTsuffix_Node0_action["The train is classified as export
manifest if suffix is T , otherwise
as import manifest"]:::main N_TrainIDhasTsuffix_Node0 -- Yes --> N_TrainIDhasTsuffix_Node0_action N_TrainIDhasTsuffix_Node0_action --> E_TrainIDhasTsuffix S_TrainIDhasTsuffix --> N_TrainIDhasTsuffix_Node0 N_TrainIDhasTsuffix_Node1{"The system checks if the train ID
has a T suffix"}:::decision N_TrainIDhasTsuffix_Node1_action["If train ID has T suffix, identify
as export manifest train, otherwise
route to standard import processing"]:::main N_TrainIDhasTsuffix_Node1 -- Yes --> N_TrainIDhasTsuffix_Node1_action N_TrainIDhasTsuffix_Node1_action --> E_TrainIDhasTsuffix N_TrainIDhasTsuffix_Node0 -- No --> N_TrainIDhasTsuffix_Node1 N_TrainIDhasTsuffix_Node2{"The system checks the train ID for
T suffix"}:::decision N_TrainIDhasTsuffix_Node2_action["If train ID does not have T suffix,
classify as import manifest for
standard processing"]:::main N_TrainIDhasTsuffix_Node2 -- Yes --> N_TrainIDhasTsuffix_Node2_action N_TrainIDhasTsuffix_Node2_action --> E_TrainIDhasTsuffix N_TrainIDhasTsuffix_Node1 -- No --> N_TrainIDhasTsuffix_Node2 N_TrainIDhasTsuffix_Node2 -- No --> E_TrainIDhasTsuffix
File: GCX016E.cbl
GIVEN: A train arrival event is received with a train ID
WHEN: The system checks if the train ID has a 'T' suffix
THEN: The train is classified as export manifest if suffix is 'T', otherwise as import manifest
File: GCX016E.cbl
GIVEN: A train arrival event is received with a train ID
WHEN: The system checks if the train ID has a 'T' suffix
THEN: If train ID has 'T' suffix, identify as export manifest train, otherwise route to standard import processing
File: GCX016E.cbl
GIVEN: A train arrival event (POD/AAD) is being processed
WHEN: The system checks the train ID for 'T' suffix
THEN: If train ID does not have 'T' suffix, classify as import manifest for standard processing
βœ“ Consolidated Acceptance Criteria
  • The port validation succeeds → the system sets the export manifest port flag and continues with 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_SetExportManifestPortFlag(["Start Step"]) E_SetExportManifestPortFlag(["End Step"]) N_SetExportManifestPortFlag_Node0{"The port validation succeeds"}:::decision N_SetExportManifestPortFlag_Node0_action["The system sets the export manifest
port flag and continues with export
manifest processing"]:::main N_SetExportManifestPortFlag_Node0 -- Yes --> N_SetExportManifestPortFlag_Node0_action N_SetExportManifestPortFlag_Node0_action --> E_SetExportManifestPortFlag S_SetExportManifestPortFlag --> N_SetExportManifestPortFlag_Node0 N_SetExportManifestPortFlag_Node0 -- No --> E_SetExportManifestPortFlag
File: GCX016E.cbl
GIVEN: An export manifest train arrives at a port AND the port is validated as authorized for export manifests
WHEN: The port validation succeeds
THEN:
  • The system sets the export manifest port flag
  • Continues with export manifest processing
βœ“ Consolidated Acceptance Criteria
  • The port validation fails → the system generates a port validation error and logs the invalid port for export manifest incident
  • The system generates a port validation error → a port validation error is created indicating the port cannot process export manifests
  • The arrival port is not found in the export port validation table → generate port validation error message indicating the port is not authorized for export manifests
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GeneratePortValidationError(["Start Step"]) E_GeneratePortValidationError(["End Step"]) N_GeneratePortValidationError_Node0{"The port validation fails"}:::decision N_GeneratePortValidationError_Node0_action["The system generates a port
validation error and logs the
invalid port for export manifest
incident"]:::main N_GeneratePortValidationError_Node0 -- Yes --> N_GeneratePortValidationError_Node0_action N_GeneratePortValidationError_Node0_action --> E_GeneratePortValidationError S_GeneratePortValidationError --> N_GeneratePortValidationError_Node0 N_GeneratePortValidationError_Node1{"The system generates a port
validation error"}:::decision N_GeneratePortValidationError_Node1_action["A port validation error is created
indicating the port cannot process
export manifests"]:::exclusion N_GeneratePortValidationError_Node1 -- Yes -->|Alternative| N_GeneratePortValidationError_Node1_action N_GeneratePortValidationError_Node1_action --> E_GeneratePortValidationError N_GeneratePortValidationError_Node0 -- No --> N_GeneratePortValidationError_Node1 N_GeneratePortValidationError_Node2{"The arrival port is not found in
the export port validation table"}:::decision N_GeneratePortValidationError_Node2_action["Generate port validation error
message indicating the port is not
authorized for export manifests"]:::main N_GeneratePortValidationError_Node2 -- Yes --> N_GeneratePortValidationError_Node2_action N_GeneratePortValidationError_Node2_action --> E_GeneratePortValidationError N_GeneratePortValidationError_Node1 -- No --> N_GeneratePortValidationError_Node2 N_GeneratePortValidationError_Node2 -- No --> E_GeneratePortValidationError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An export manifest train arrives at a port AND the port is not found in the export manifest port configuration table
WHEN: The port validation fails
THEN:
  • The system generates a port validation error
  • Logs the invalid port for export manifest incident
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The arrival port is not designated for export manifests
WHEN: The system generates a port validation error
THEN: A port validation error is created indicating the port cannot process export manifests
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An export manifest train has been identified but port validation has failed
WHEN: The arrival port is not found in the export port validation table
THEN: Generate port validation error message indicating the port is not authorized for export manifests
βœ“ Consolidated Acceptance Criteria
  • If the train's manifest type → the train is classified as either export manifest train (suffix 'T') or import manifest train for appropriate AEI processing
  • If the train type based on manifest characteristics → the system classifies the train as either export manifest train (with 'T' suffix) or import manifest train for specialized processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_TrainType(["Start Step"]) E_TrainType(["End Step"]) N_TrainType_Node0{"The system evaluates the train s
manifest type"}:::decision N_TrainType_Node0_action["The train is classified as either
export manifest train suffix T or
import manifest train for
appropriate AEI processing"]:::main N_TrainType_Node0 -- Yes --> N_TrainType_Node0_action N_TrainType_Node0_action --> E_TrainType S_TrainType --> N_TrainType_Node0 N_TrainType_Node1{"The system evaluates the train type
based on manifest characteristics"}:::decision N_TrainType_Node1_action["The system classifies the train as
either export manifest train with T
suffix or import manifest train for
specialized processing"]:::main N_TrainType_Node1 -- Yes --> N_TrainType_Node1_action N_TrainType_Node1_action --> E_TrainType N_TrainType_Node0 -- No --> N_TrainType_Node1 N_TrainType_Node1 -- No --> E_TrainType
File: GCX016E.cbl
GIVEN: A train arrival event has been detected
WHEN: The system evaluates the train's manifest type
THEN: The train is classified as either export manifest train (suffix 'T') or import manifest train for appropriate AEI processing
File: GCX016E.cbl
GIVEN: A train arrival is being processed with a formatted arrival date
WHEN: The system evaluates the train type based on manifest characteristics
THEN: The system classifies the train as either export manifest train (with 'T' suffix) or import manifest train for specialized processing
βœ“ Consolidated Acceptance Criteria
  • The system validates the port's export processing capabilities → the port is either confirmed as valid for export processing or flagged as invalid, determining the processing path
  • The system validates the arrival port against authorized export ports → if the port is valid for export operations, continue with arrival processing, otherwise 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_PortValidforExport(["Start Step"]) E_PortValidforExport(["End Step"]) N_PortValidforExport_Node0{"The system validates the port s
export processing capabilities"}:::decision N_PortValidforExport_Node0_action["The port is either confirmed as
valid for export processing or
flagged as invalid, determining the
processing path"]:::main N_PortValidforExport_Node0 -- Yes --> N_PortValidforExport_Node0_action N_PortValidforExport_Node0_action --> E_PortValidforExport S_PortValidforExport --> N_PortValidforExport_Node0 N_PortValidforExport_Node1{"The system validates the arrival
port against authorized export ports"}:::decision N_PortValidforExport_Node1_action["If the port is valid for export
operations, continue with arrival
processing, otherwise terminate
processing"]:::exclusion N_PortValidforExport_Node1 -- Yes -->|Alternative| N_PortValidforExport_Node1_action N_PortValidforExport_Node1_action --> E_PortValidforExport N_PortValidforExport_Node0 -- No --> N_PortValidforExport_Node1 N_PortValidforExport_Node1 -- No --> E_PortValidforExport
File: GCX016E.cbl
GIVEN: An export manifest train has arrived at a port
WHEN: The system validates the port's export processing capabilities
THEN: The port is either confirmed as valid for export processing or flagged as invalid, determining the processing path
File: GCX016E.cbl
GIVEN: An export manifest train with 'T' suffix is being processed for arrival
WHEN: The system validates the arrival port against authorized export ports
THEN: If the port is valid for export operations, continue with arrival processing, otherwise terminate processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the export manifest arrival → export-specific AEI processing is initiated with appropriate export manifest 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_ProcessExportManifestArrival(["Start Step"]) E_ProcessExportManifestArrival(["End Step"]) N_ProcessExportManifestArrival_Node0{"The system processes the export
manifest arrival"}:::decision N_ProcessExportManifestArrival_Node0_action["Export-specific AEI processing is
initiated with appropriate export
manifest handling procedures"]:::main N_ProcessExportManifestArrival_Node0 -- Yes --> N_ProcessExportManifestArrival_Node0_action N_ProcessExportManifestArrival_Node0_action --> E_ProcessExportManifestArrival S_ProcessExportManifestArrival --> N_ProcessExportManifestArrival_Node0 N_ProcessExportManifestArrival_Node0 -- No --> E_ProcessExportManifestArrival
File: GCX016E.cbl
GIVEN: An export manifest train has arrived and the port is valid for export processing
WHEN: The system processes the export manifest arrival
THEN: Export-specific AEI processing is initiated with appropriate export manifest handling procedures
βœ“ Consolidated Acceptance Criteria
  • The system processes the manifest arrival → import-specific AEI processing is initiated with appropriate import manifest 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_ProcessImportManifestArrival(["Start Step"]) E_ProcessImportManifestArrival(["End Step"]) N_ProcessImportManifestArrival_Node0{"The system processes the manifest
arrival"}:::decision N_ProcessImportManifestArrival_Node0_action["Import-specific AEI processing is
initiated with appropriate import
manifest handling procedures"]:::main N_ProcessImportManifestArrival_Node0 -- Yes --> N_ProcessImportManifestArrival_Node0_action N_ProcessImportManifestArrival_Node0_action --> E_ProcessImportManifestArrival S_ProcessImportManifestArrival --> N_ProcessImportManifestArrival_Node0 N_ProcessImportManifestArrival_Node0 -- No --> E_ProcessImportManifestArrival
File: GCX016E.cbl
GIVEN: Either an import manifest train has arrived or an export train has arrived at a port invalid for export processing
WHEN: The system processes the manifest arrival
THEN: Import-specific AEI processing is initiated with appropriate import manifest handling procedures
βœ“ Consolidated Acceptance Criteria
  • The system scans the train's cargo manifest → all US cargo shipments on the train are identified and flagged for AEI 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_IdentifyUSCargoonTrain(["Start Step"]) E_IdentifyUSCargoonTrain(["End Step"]) N_IdentifyUSCargoonTrain_Node0{"The system scans the train s cargo
manifest"}:::decision N_IdentifyUSCargoonTrain_Node0_action["All US cargo shipments on the train
are identified and flagged for AEI
notification processing"]:::main N_IdentifyUSCargoonTrain_Node0 -- Yes --> N_IdentifyUSCargoonTrain_Node0_action N_IdentifyUSCargoonTrain_Node0_action --> E_IdentifyUSCargoonTrain S_IdentifyUSCargoonTrain --> N_IdentifyUSCargoonTrain_Node0 N_IdentifyUSCargoonTrain_Node0 -- No --> E_IdentifyUSCargoonTrain
File: GCX016E.cbl
GIVEN: A train arrival has been processed (either export or import)
WHEN: The system scans the train's cargo manifest
THEN:
  • All us cargo shipments on the train are identified
  • Flagged for aei notification processing
βœ“ Consolidated Acceptance Criteria
  • The system generates AEI arrival messages → automatic Equipment Identification messages are created containing arrival details for each US cargo 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_GenerateAEIArrivalMessages(["Start Step"]) E_GenerateAEIArrivalMessages(["End Step"]) N_GenerateAEIArrivalMessages_Node0{"The system generates AEI arrival
messages"}:::decision N_GenerateAEIArrivalMessages_Node0_action["Automatic Equipment Identification
messages are created containing
arrival details for each US cargo
shipment"]:::main N_GenerateAEIArrivalMessages_Node0 -- Yes --> N_GenerateAEIArrivalMessages_Node0_action N_GenerateAEIArrivalMessages_Node0_action --> E_GenerateAEIArrivalMessages S_GenerateAEIArrivalMessages --> N_GenerateAEIArrivalMessages_Node0 N_GenerateAEIArrivalMessages_Node0 -- No --> E_GenerateAEIArrivalMessages
File: GCX016E.cbl
GIVEN: US cargo has been identified on an arriving train
WHEN: The system generates AEI arrival messages
THEN: Automatic Equipment Identification messages are created containing arrival details for each US cargo shipment
βœ“ Consolidated Acceptance Criteria
  • The system sends equipment identification data → equipment identification information is transmitted to designated recipients 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_SendEquipmentIdentificationData(["Start Step"]) E_SendEquipmentIdentificationData(["End Step"]) N_SendEquipmentIdentificationData_Node0{"The system sends equipment
identification data"}:::decision N_SendEquipmentIdentificationData_Node0_action["Equipment identification
information is transmitted to
designated recipients and systems"]:::main N_SendEquipmentIdentificationData_Node0 -- Yes --> N_SendEquipmentIdentificationData_Node0_action N_SendEquipmentIdentificationData_Node0_action --> E_SendEquipmentIdentificationData S_SendEquipmentIdentificationData --> N_SendEquipmentIdentificationData_Node0 N_SendEquipmentIdentificationData_Node0 -- No --> E_SendEquipmentIdentificationData
File: GCX016E.cbl
GIVEN: AEI arrival messages have been generated
WHEN: The system sends equipment identification data
THEN:
  • Equipment identification information is transmitted to designated recipients
  • Systems
βœ“ Consolidated Acceptance Criteria
  • The system creates email notifications → email notifications are generated with AEI arrival details for appropriate 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_CreateEmailNotifications(["Start Step"]) E_CreateEmailNotifications(["End Step"]) N_CreateEmailNotifications_Node0{"The system creates email
notifications"}:::decision N_CreateEmailNotifications_Node0_action["Email notifications are generated
with AEI arrival details for
appropriate distribution"]:::main N_CreateEmailNotifications_Node0 -- Yes --> N_CreateEmailNotifications_Node0_action N_CreateEmailNotifications_Node0_action --> E_CreateEmailNotifications S_CreateEmailNotifications --> N_CreateEmailNotifications_Node0 N_CreateEmailNotifications_Node0 -- No --> E_CreateEmailNotifications
File: GCX016E.cbl
GIVEN: Equipment identification data has been sent
WHEN: The system creates email notifications
THEN: Email notifications are generated with AEI arrival details for appropriate distribution
βœ“ Consolidated Acceptance Criteria
  • The system distributes AEI messages → all AEI messages and notifications are sent to their designated recipients and integrated 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_DistributeAEIMessages(["Start Step"]) E_DistributeAEIMessages(["End Step"]) N_DistributeAEIMessages_Node0{"The system distributes AEI messages"}:::decision N_DistributeAEIMessages_Node0_action["All AEI messages and notifications
are sent to their designated
recipients and integrated systems"]:::main N_DistributeAEIMessages_Node0 -- Yes --> N_DistributeAEIMessages_Node0_action N_DistributeAEIMessages_Node0_action --> E_DistributeAEIMessages S_DistributeAEIMessages --> N_DistributeAEIMessages_Node0 N_DistributeAEIMessages_Node0 -- No --> E_DistributeAEIMessages
File: GCX016E.cbl
GIVEN: Email notifications have been created
WHEN: The system distributes AEI messages
THEN:
  • All aei messages
  • Notifications are sent to their designated recipients
  • Integrated systems
βœ“ Consolidated Acceptance Criteria
  • The system logs AEI processing actions → all AEI notification activities are recorded in the system log 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_LogAEIProcessingActions(["Start Step"]) E_LogAEIProcessingActions(["End Step"]) N_LogAEIProcessingActions_Node0{"The system logs AEI processing
actions"}:::decision N_LogAEIProcessingActions_Node0_action["All AEI notification activities are
recorded in the system log for audit
and tracking purposes"]:::main N_LogAEIProcessingActions_Node0 -- Yes --> N_LogAEIProcessingActions_Node0_action N_LogAEIProcessingActions_Node0_action --> E_LogAEIProcessingActions S_LogAEIProcessingActions --> N_LogAEIProcessingActions_Node0 N_LogAEIProcessingActions_Node0 -- No --> E_LogAEIProcessingActions
File: GCX016E.cbl
GIVEN: AEI messages have been distributed
WHEN: The system logs AEI processing actions
THEN:
  • All aei notification activities are recorded in the system log for audit
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system updates train arrival status → the train's status is updated to indicate successful completion of AEI notification processing
  • The system finalizes train arrival processing → update train arrival status to reflect completed processing and generate location validation 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_UpdateTrainArrivalStatus(["Start Step"]) E_UpdateTrainArrivalStatus(["End Step"]) N_UpdateTrainArrivalStatus_Node0{"The system updates train arrival
status"}:::decision N_UpdateTrainArrivalStatus_Node0_action["The train s status is updated to
indicate successful completion of
AEI notification processing"]:::main N_UpdateTrainArrivalStatus_Node0 -- Yes --> N_UpdateTrainArrivalStatus_Node0_action N_UpdateTrainArrivalStatus_Node0_action --> E_UpdateTrainArrivalStatus S_UpdateTrainArrivalStatus --> N_UpdateTrainArrivalStatus_Node0 N_UpdateTrainArrivalStatus_Node1{"The system finalizes train arrival
processing"}:::decision N_UpdateTrainArrivalStatus_Node1_action["Update train arrival status to
reflect completed processing and
generate location validation
messages"]:::main N_UpdateTrainArrivalStatus_Node1 -- Yes --> N_UpdateTrainArrivalStatus_Node1_action N_UpdateTrainArrivalStatus_Node1_action --> E_UpdateTrainArrivalStatus N_UpdateTrainArrivalStatus_Node0 -- No --> N_UpdateTrainArrivalStatus_Node1 N_UpdateTrainArrivalStatus_Node1 -- No --> E_UpdateTrainArrivalStatus
File: GCX016E.cbl
GIVEN: AEI processing actions have been logged
WHEN: The system updates train arrival status
THEN: The train's status is updated to indicate successful completion of AEI notification processing
File: GCX016E.cbl
GIVEN: Location-specific rules have been applied and manifest status has been set
WHEN: The system finalizes train arrival processing
THEN:
  • Update train arrival status to reflect completed processing
  • Generate location validation messages
βœ“ Consolidated Acceptance Criteria
  • The system completes AEI notification processing → all AEI notification processing activities are finalized and the workflow 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_CompleteAEINotificationProcessing(["Start Step"]) E_CompleteAEINotificationProcessing(["End Step"]) N_CompleteAEINotificationProcessing_Node0{"The system completes AEI
notification processing"}:::decision N_CompleteAEINotificationProcessing_Node0_action["All AEI notification processing
activities are finalized and the
workflow is marked as complete"]:::main N_CompleteAEINotificationProcessing_Node0 -- Yes --> N_CompleteAEINotificationProcessing_Node0_action N_CompleteAEINotificationProcessing_Node0_action --> E_CompleteAEINotificationProcessing S_CompleteAEINotificationProcessing --> N_CompleteAEINotificationProcessing_Node0 N_CompleteAEINotificationProcessing_Node0 -- No --> E_CompleteAEINotificationProcessing
File: GCX016E.cbl
GIVEN: Train arrival status has been updated
WHEN: The system completes AEI notification processing
THEN:
  • All aei notification processing activities are finalized
  • The workflow is marked as complete
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment for bond-based cargo processing → the bond number is extracted and stored for subsequent cargo 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_ExtractBondNumberfromX4Segment(["Start Step"]) E_ExtractBondNumberfromX4Segment(["End Step"]) N_ExtractBondNumberfromX4Segment_Node0{"The system processes the X4 segment
for bond-based cargo processing"}:::decision N_ExtractBondNumberfromX4Segment_Node0_action["The bond number is extracted and
stored for subsequent cargo lookup
operations"]:::main N_ExtractBondNumberfromX4Segment_Node0 -- Yes --> N_ExtractBondNumberfromX4Segment_Node0_action N_ExtractBondNumberfromX4Segment_Node0_action --> E_ExtractBondNumberfromX4Segment S_ExtractBondNumberfromX4Segment --> N_ExtractBondNumberfromX4Segment_Node0 N_ExtractBondNumberfromX4Segment_Node0 -- No --> E_ExtractBondNumberfromX4Segment
File: GCX016E.cbl
GIVEN: An X4 segment contains disposition code information with bond number data
WHEN: The system processes the X4 segment for bond-based cargo processing
THEN:
  • The bond number is extracted
  • Stored for subsequent cargo lookup operations
βœ“ Consolidated Acceptance Criteria
  • If the search results → if cargo records are found, processing continues with the first record; if no records are found, bond processing is terminated
  • If the search results → the system determines if cargo records were found 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_CargoRecordsFound(["Start Step"]) E_CargoRecordsFound(["End Step"]) N_CargoRecordsFound_Node0{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node0_action["If cargo records are found,
processing continues with the first
record if no records are found, bond
processing is terminated"]:::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["The system determines if cargo
records were found and routes
processing accordingly"]:::main N_CargoRecordsFound_Node1 -- Yes --> N_CargoRecordsFound_Node1_action N_CargoRecordsFound_Node1_action --> E_CargoRecordsFound N_CargoRecordsFound_Node0 -- No --> N_CargoRecordsFound_Node1 N_CargoRecordsFound_Node1 -- No --> E_CargoRecordsFound
File: GCX016E.cbl
GIVEN: A database lookup has been performed using a customs bond number
WHEN: The system evaluates the search results
THEN: If cargo records are found, processing continues with the first record; if no records are found, bond processing is terminated
File: GCX016E.cbl
GIVEN: A search has been performed on the cargo database using car ID and waybill
WHEN: The system evaluates the search results
THEN:
  • The system determines if cargo records were found
  • Routes processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system begins processing cargo records for the bond → the first cargo record is retrieved and prepared for individual 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_RetrieveFirstCargoRecordbyBond(["Start Step"]) E_RetrieveFirstCargoRecordbyBond(["End Step"]) N_RetrieveFirstCargoRecordbyBond_Node0{"The system begins processing cargo
records for the bond"}:::decision N_RetrieveFirstCargoRecordbyBond_Node0_action["The first cargo record is retrieved
and prepared for individual cargo
processing"]:::main N_RetrieveFirstCargoRecordbyBond_Node0 -- Yes --> N_RetrieveFirstCargoRecordbyBond_Node0_action N_RetrieveFirstCargoRecordbyBond_Node0_action --> E_RetrieveFirstCargoRecordbyBond S_RetrieveFirstCargoRecordbyBond --> N_RetrieveFirstCargoRecordbyBond_Node0 N_RetrieveFirstCargoRecordbyBond_Node0 -- No --> E_RetrieveFirstCargoRecordbyBond
File: GCX016E.cbl
GIVEN: Cargo records exist for the specified bond number
WHEN: The system begins processing cargo records for the bond
THEN:
  • The first cargo record is retrieved
  • Prepared for individual cargo processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the individual cargo record → the cargo record is prepared for disposition code application and status updates
  • The system processes the cargo record → the cargo record is processed with applicable disposition codes, status updates, and business rule validations
  • Individual cargo processing is initiated → cargo record is processed according to disposition codes and status rules
  • The system processes the individual cargo record → the system applies the current disposition code processing logic to the cargo record
  • The record processing begins → the cargo record is prepared for hold status 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_ProcessIndividualCargoRecord(["Start Step"]) E_ProcessIndividualCargoRecord(["End Step"]) N_ProcessIndividualCargoRecord_Node0{"The system processes the individual
cargo record"}:::decision N_ProcessIndividualCargoRecord_Node0_action["The cargo record is prepared for
disposition code application and
status updates"]:::main N_ProcessIndividualCargoRecord_Node0 -- Yes --> N_ProcessIndividualCargoRecord_Node0_action N_ProcessIndividualCargoRecord_Node0_action --> E_ProcessIndividualCargoRecord S_ProcessIndividualCargoRecord --> N_ProcessIndividualCargoRecord_Node0 N_ProcessIndividualCargoRecord_Node1{"The system processes the cargo
record"}:::decision N_ProcessIndividualCargoRecord_Node1_action["The cargo record is processed with
applicable disposition codes, status
updates, and business rule
validations"]:::main N_ProcessIndividualCargoRecord_Node1 -- Yes --> N_ProcessIndividualCargoRecord_Node1_action N_ProcessIndividualCargoRecord_Node1_action --> E_ProcessIndividualCargoRecord N_ProcessIndividualCargoRecord_Node0 -- No --> N_ProcessIndividualCargoRecord_Node1 N_ProcessIndividualCargoRecord_Node2{"Individual cargo processing is
initiated"}:::decision N_ProcessIndividualCargoRecord_Node2_action["Cargo record is processed according
to disposition codes and status
rules"]:::main N_ProcessIndividualCargoRecord_Node2 -- Yes --> N_ProcessIndividualCargoRecord_Node2_action N_ProcessIndividualCargoRecord_Node2_action --> E_ProcessIndividualCargoRecord N_ProcessIndividualCargoRecord_Node1 -- No --> N_ProcessIndividualCargoRecord_Node2 N_ProcessIndividualCargoRecord_Node3{"The system processes the individual
cargo record"}:::decision N_ProcessIndividualCargoRecord_Node3_action["The system applies the current
disposition code processing logic to
the cargo record"]:::main N_ProcessIndividualCargoRecord_Node3 -- Yes --> N_ProcessIndividualCargoRecord_Node3_action N_ProcessIndividualCargoRecord_Node3_action --> E_ProcessIndividualCargoRecord N_ProcessIndividualCargoRecord_Node2 -- No --> N_ProcessIndividualCargoRecord_Node3 N_ProcessIndividualCargoRecord_Node4{"The record processing begins"}:::decision N_ProcessIndividualCargoRecord_Node4_action["The cargo record is prepared for
hold status analysis"]:::main N_ProcessIndividualCargoRecord_Node4 -- Yes --> N_ProcessIndividualCargoRecord_Node4_action N_ProcessIndividualCargoRecord_Node4_action --> E_ProcessIndividualCargoRecord N_ProcessIndividualCargoRecord_Node3 -- No --> N_ProcessIndividualCargoRecord_Node4 N_ProcessIndividualCargoRecord_Node4 -- No --> E_ProcessIndividualCargoRecord
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved for processing
WHEN: The system processes the individual cargo record
THEN:
  • The cargo record is prepared for disposition code application
  • Status updates
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved for processing
WHEN: The system processes the cargo record
THEN: The cargo record is processed with applicable disposition codes, status updates, and business rule validations
File: GCX016E.cbl
GIVEN: A valid cargo record exists for processing
WHEN: Individual cargo processing is initiated
THEN:
  • Cargo record is processed according to disposition codes
  • Status rules
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved with matching car ID and waybill
WHEN: The system processes the individual cargo record
THEN: The system applies the current disposition code processing logic to the cargo record
File: GCX016E.cbl
GIVEN: An individual cargo record is selected for processing
WHEN: The record processing begins
THEN: The cargo record is prepared for hold status analysis
βœ“ Consolidated Acceptance Criteria
  • The system applies the disposition code to the cargo → the disposition code is processed according to its type (hold, release, proceed, etc.) 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_ApplyDispositionCodetoCargo(["Start Step"]) E_ApplyDispositionCodetoCargo(["End Step"]) N_ApplyDispositionCodetoCargo_Node0{"The system applies the disposition
code to the cargo"}:::decision N_ApplyDispositionCodetoCargo_Node0_action["The disposition code is processed
according to its type hold, release,
proceed, etc. and appropriate cargo
actions are determined"]:::main N_ApplyDispositionCodetoCargo_Node0 -- Yes --> N_ApplyDispositionCodetoCargo_Node0_action N_ApplyDispositionCodetoCargo_Node0_action --> E_ApplyDispositionCodetoCargo S_ApplyDispositionCodetoCargo --> N_ApplyDispositionCodetoCargo_Node0 N_ApplyDispositionCodetoCargo_Node0 -- No --> E_ApplyDispositionCodetoCargo
File: GCX016E.cbl
GIVEN: A cargo record is being processed and a disposition code exists from the X4 segment
WHEN: The system applies the disposition code to the cargo
THEN: The disposition code is processed according to its type (hold, release, proceed, etc.) and appropriate cargo actions are determined
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo status → the cargo status is modified according to the disposition code requirements and status change records are created
  • The system updates the cargo record → the cargo record must be updated with the new status array and any derived status changes resulting from the removal
  • The system updates cargo status → the cargo status should be updated to reflect that bond information has been cleared
  • The system updates the cargo status → the cargo status must be recalculated based on the remaining disposition codes in the status array
  • Updating cargo information → the cargo record is updated with the 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_UpdateCargoStatus(["Start Step"]) E_UpdateCargoStatus(["End Step"]) N_UpdateCargoStatus_Node0{"The system updates the cargo status"}:::decision N_UpdateCargoStatus_Node0_action["The cargo status is modified
according to the disposition code
requirements and status change
records are created"]:::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["The cargo record must be updated
with the new status array and any
derived status changes resulting
from the removal"]:::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 cargo status"}:::decision N_UpdateCargoStatus_Node2_action["The cargo status should be updated
to reflect that bond information has
been cleared"]:::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 the cargo status"}:::decision N_UpdateCargoStatus_Node3_action["The cargo status must be
recalculated based on the remaining
disposition codes in the status
array"]:::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{"Updating cargo information"}:::decision N_UpdateCargoStatus_Node4_action["The cargo record is updated with
the new status"]:::main N_UpdateCargoStatus_Node4 -- Yes --> N_UpdateCargoStatus_Node4_action N_UpdateCargoStatus_Node4_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node3 -- No --> N_UpdateCargoStatus_Node4 N_UpdateCargoStatus_Node4 -- No --> E_UpdateCargoStatus
File: GCX016E.cbl
GIVEN: A disposition code has been applied to a cargo record
WHEN: The system updates the cargo status
THEN:
  • The cargo status is modified according to the disposition code requirements
  • Status change records are created
File: GCX016E.cbl
GIVEN: A cargo with updated status array after disposition code removal
WHEN: The system updates the cargo record
THEN:
  • The cargo record must be updated with the new status array
  • Any derived status changes resulting from the removal
File: GCX016E.cbl
GIVEN: Bond clearing action has been logged
WHEN: The system updates cargo status
THEN: The cargo status should be updated to reflect that bond information has been cleared
File: GCX016E.cbl
GIVEN: A disposition code has been removed and confirmation generated
WHEN: The system updates the cargo status
THEN: The cargo status must be recalculated based on the remaining disposition codes in the status array
File: GCX016E.cbl
GIVEN: Final cargo status has been determined
WHEN: Updating cargo information
THEN: The cargo record is updated with the new status
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional cargo records with the same bond → the system identifies whether more cargo records 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_CheckforAdditionalCargoRecords(["Start Step"]) E_CheckforAdditionalCargoRecords(["End Step"]) N_CheckforAdditionalCargoRecords_Node0{"The system checks for additional
cargo records with the same bond"}:::decision N_CheckforAdditionalCargoRecords_Node0_action["The system identifies whether more
cargo records exist for continued
processing"]:::main N_CheckforAdditionalCargoRecords_Node0 -- Yes --> N_CheckforAdditionalCargoRecords_Node0_action N_CheckforAdditionalCargoRecords_Node0_action --> E_CheckforAdditionalCargoRecords S_CheckforAdditionalCargoRecords --> N_CheckforAdditionalCargoRecords_Node0 N_CheckforAdditionalCargoRecords_Node0 -- No --> E_CheckforAdditionalCargoRecords
File: GCX016E.cbl
GIVEN: One cargo record has been processed for a bond number
WHEN: The system checks for additional cargo records with the same bond
THEN: The system identifies whether more cargo records exist for continued processing
βœ“ Consolidated Acceptance Criteria
  • The evaluation determines if more records exist → if more records exist, processing continues with the next record; if no more records exist, bond processing summary 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_MoreCargowithSameBond(["Start Step"]) E_MoreCargowithSameBond(["End Step"]) N_MoreCargowithSameBond_Node0{"The evaluation determines if more
records exist"}:::decision N_MoreCargowithSameBond_Node0_action["If more records exist, processing
continues with the next record if no
more records exist, bond processing
summary is generated"]:::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: GCX016E.cbl
GIVEN: The system has checked for additional cargo records with the same bond number
WHEN: The evaluation determines if more records exist
THEN: If more records exist, processing continues with the next record; if no more records exist, bond processing summary is generated
βœ“ Consolidated Acceptance Criteria
  • The system retrieves the next cargo record → the next cargo record is obtained and prepared for individual cargo processing
  • The system continues processing multiple records → the next cargo record in the sequence is retrieved for processing
  • The system retrieves the next cargo record → the next matching cargo record is retrieved and prepared for processing
  • System retrieves next matching cargo record → system loads additional cargo record data for processing
  • The system processes the next record in sequence → the complete cargo record data must be retrieved and prepared for validation
  • The system retrieves the next cargo record → the next matching cargo record is loaded and available for processing
  • The system continues processing multiple bond records → the next cargo record in the sequence must be retrieved from the database
  • The system retrieves the next record → the system fetches the next cargo record from the US cargo root segments 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_RetrieveNextCargoRecord(["Start Step"]) E_RetrieveNextCargoRecord(["End Step"]) N_RetrieveNextCargoRecord_Node0{"The system retrieves the next cargo
record"}:::decision N_RetrieveNextCargoRecord_Node0_action["The next cargo record is obtained
and prepared for individual cargo
processing"]:::main N_RetrieveNextCargoRecord_Node0 -- Yes --> N_RetrieveNextCargoRecord_Node0_action N_RetrieveNextCargoRecord_Node0_action --> E_RetrieveNextCargoRecord S_RetrieveNextCargoRecord --> N_RetrieveNextCargoRecord_Node0 N_RetrieveNextCargoRecord_Node1{"The system continues processing
multiple records"}:::decision N_RetrieveNextCargoRecord_Node1_action["The next cargo record in the
sequence is retrieved for processing"]:::main N_RetrieveNextCargoRecord_Node1 -- Yes --> N_RetrieveNextCargoRecord_Node1_action N_RetrieveNextCargoRecord_Node1_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node0 -- No --> N_RetrieveNextCargoRecord_Node1 N_RetrieveNextCargoRecord_Node2{"The system retrieves the next cargo
record"}:::decision N_RetrieveNextCargoRecord_Node2_action["The next matching cargo record is
retrieved and prepared for
processing"]:::main N_RetrieveNextCargoRecord_Node2 -- Yes --> N_RetrieveNextCargoRecord_Node2_action N_RetrieveNextCargoRecord_Node2_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node1 -- No --> N_RetrieveNextCargoRecord_Node2 N_RetrieveNextCargoRecord_Node3{"System retrieves next matching
cargo record"}:::decision N_RetrieveNextCargoRecord_Node3_action["System loads additional cargo
record data for processing"]:::main N_RetrieveNextCargoRecord_Node3 -- Yes --> N_RetrieveNextCargoRecord_Node3_action N_RetrieveNextCargoRecord_Node3_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node2 -- No --> N_RetrieveNextCargoRecord_Node3 N_RetrieveNextCargoRecord_Node4{"The system processes the next
record in sequence"}:::decision N_RetrieveNextCargoRecord_Node4_action["The complete cargo record data must
be retrieved and prepared for
validation"]:::main N_RetrieveNextCargoRecord_Node4 -- Yes --> N_RetrieveNextCargoRecord_Node4_action N_RetrieveNextCargoRecord_Node4_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node3 -- No --> N_RetrieveNextCargoRecord_Node4 N_RetrieveNextCargoRecord_Node5{"The system retrieves the next cargo
record"}:::decision N_RetrieveNextCargoRecord_Node5_action["The next matching cargo record is
loaded and available for processing"]:::main N_RetrieveNextCargoRecord_Node5 -- Yes --> N_RetrieveNextCargoRecord_Node5_action N_RetrieveNextCargoRecord_Node5_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node4 -- No --> N_RetrieveNextCargoRecord_Node5 N_RetrieveNextCargoRecord_Node6{"The system continues processing
multiple bond records"}:::decision N_RetrieveNextCargoRecord_Node6_action["The next cargo record in the
sequence must be retrieved from the
database"]:::main N_RetrieveNextCargoRecord_Node6 -- Yes --> N_RetrieveNextCargoRecord_Node6_action N_RetrieveNextCargoRecord_Node6_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node5 -- No --> N_RetrieveNextCargoRecord_Node6 N_RetrieveNextCargoRecord_Node7{"The system retrieves the next
record"}:::decision N_RetrieveNextCargoRecord_Node7_action["The system fetches the next cargo
record from the US cargo root
segments for processing"]:::main N_RetrieveNextCargoRecord_Node7 -- Yes --> N_RetrieveNextCargoRecord_Node7_action N_RetrieveNextCargoRecord_Node7_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node6 -- No --> N_RetrieveNextCargoRecord_Node7 N_RetrieveNextCargoRecord_Node7 -- No --> E_RetrieveNextCargoRecord
File: GCX016E.cbl
GIVEN: Additional cargo records exist for the same bond number
WHEN: The system retrieves the next cargo record
THEN:
  • The next cargo record is obtained
  • Prepared for individual cargo processing
File: GCX016E.cbl
GIVEN: Additional cargo records exist for the same car ID and waybill combination
WHEN: The system continues processing multiple records
THEN: The next cargo record in the sequence is retrieved for processing
File: GCX016E.cbl
GIVEN: Additional cargo records exist with the same bond number
WHEN: The system retrieves the next cargo record
THEN:
  • The next matching cargo record is retrieved
  • Prepared for processing
File: GCX016E.cbl
GIVEN: Additional cargo records exist for car/waybill combination
WHEN: System retrieves next matching cargo record
THEN: System loads additional cargo record data for processing
File: GCX016E.cbl
GIVEN: Additional cargo records exist with the same bond number
WHEN: The system processes the next record in sequence
THEN:
  • The complete cargo record data must be retrieved
  • Prepared for validation
File: GCX016E.cbl
GIVEN: Additional matching cargo records have been identified
WHEN: The system retrieves the next cargo record
THEN:
  • The next matching cargo record is loaded
  • Available for processing
File: GCX016E.cbl
GIVEN: Additional cargo records exist for the current bond number
WHEN: The system continues processing multiple bond records
THEN: The next cargo record in the sequence must be retrieved from the database
File: GCX016E.cbl
GIVEN: Additional cargo records exist with the same car ID and waybill combination
WHEN: The system retrieves the next record
THEN: The system fetches the next cargo record from the US cargo root segments for processing
βœ“ Consolidated Acceptance Criteria
  • The system generates a bond processing summary → a summary report is created containing details of 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_GenerateBondProcessingSummary(["Start Step"]) E_GenerateBondProcessingSummary(["End Step"]) N_GenerateBondProcessingSummary_Node0{"The system generates a bond
processing summary"}:::decision N_GenerateBondProcessingSummary_Node0_action["A summary report is created
containing details of all cargo
records processed and their final
status"]:::main N_GenerateBondProcessingSummary_Node0 -- Yes --> N_GenerateBondProcessingSummary_Node0_action N_GenerateBondProcessingSummary_Node0_action --> E_GenerateBondProcessingSummary S_GenerateBondProcessingSummary --> N_GenerateBondProcessingSummary_Node0 N_GenerateBondProcessingSummary_Node0 -- No --> E_GenerateBondProcessingSummary
File: GCX016E.cbl
GIVEN: All cargo records associated with a bond number have been processed
WHEN: The system generates a bond processing summary
THEN:
  • A summary report is created containing details of all cargo records processed
  • Their final status
βœ“ Consolidated Acceptance Criteria
  • The system creates Merlin notifications for the bond processing → appropriate Merlin messages are generated and routed to relevant parties regarding the bond 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_CreateMerlinNotificationforBond(["Start Step"]) E_CreateMerlinNotificationforBond(["End Step"]) N_CreateMerlinNotificationforBond_Node0{"The system creates Merlin
notifications for the bond
processing"}:::decision N_CreateMerlinNotificationforBond_Node0_action["Appropriate Merlin messages are
generated and routed to relevant
parties regarding the bond
processing results"]:::main N_CreateMerlinNotificationforBond_Node0 -- Yes --> N_CreateMerlinNotificationforBond_Node0_action N_CreateMerlinNotificationforBond_Node0_action --> E_CreateMerlinNotificationforBond S_CreateMerlinNotificationforBond --> N_CreateMerlinNotificationforBond_Node0 N_CreateMerlinNotificationforBond_Node0 -- No --> E_CreateMerlinNotificationforBond
File: GCX016E.cbl
GIVEN: Bond processing summary has been generated
WHEN: The system creates Merlin notifications for the bond processing
THEN:
  • Appropriate merlin messages are generated
  • Routed to relevant parties regarding the bond processing results
βœ“ Consolidated Acceptance Criteria
  • The system processes the message to extract the bond number → the bond number is extracted and validated for proper format
  • The system processes the message to extract the bond number → the bond number is extracted from the message and made available 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_ExtractBondNumberfromMessage(["Start Step"]) E_ExtractBondNumberfromMessage(["End Step"]) N_ExtractBondNumberfromMessage_Node0{"The system processes the message to
extract the bond number"}:::decision N_ExtractBondNumberfromMessage_Node0_action["The bond number is extracted and
validated for proper format"]:::main N_ExtractBondNumberfromMessage_Node0 -- Yes --> N_ExtractBondNumberfromMessage_Node0_action N_ExtractBondNumberfromMessage_Node0_action --> E_ExtractBondNumberfromMessage S_ExtractBondNumberfromMessage --> N_ExtractBondNumberfromMessage_Node0 N_ExtractBondNumberfromMessage_Node1{"The system processes the message to
extract the bond number"}:::decision N_ExtractBondNumberfromMessage_Node1_action["The bond number is extracted from
the message and made available for
validation"]:::main N_ExtractBondNumberfromMessage_Node1 -- Yes --> N_ExtractBondNumberfromMessage_Node1_action N_ExtractBondNumberfromMessage_Node1_action --> E_ExtractBondNumberfromMessage N_ExtractBondNumberfromMessage_Node0 -- No --> N_ExtractBondNumberfromMessage_Node1 N_ExtractBondNumberfromMessage_Node1 -- No --> E_ExtractBondNumberfromMessage
File: GCX016E.cbl
GIVEN: An incoming message contains bond number information
WHEN: The system processes the message to extract the bond number
THEN:
  • The bond number is extracted
  • Validated for proper format
File: GCX016E.cbl
GIVEN: An incoming message contains bond number information in the message structure
WHEN: The system processes the message to extract the bond number
THEN:
  • The bond number is extracted from the message
  • Made available for validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the bond number format → the bond number is accepted if it meets format requirements, otherwise processing is terminated with error
  • The system validates the bond number format and content → if the bond number is valid, processing continues; if invalid, 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_BondNumberValid(["Start Step"]) E_BondNumberValid(["End Step"]) N_BondNumberValid_Node0{"The system validates the bond
number format"}:::decision N_BondNumberValid_Node0_action["The bond number is accepted if it
meets format requirements, otherwise
processing is terminated with 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 format and content"}:::decision N_BondNumberValid_Node1_action["If the bond number is valid,
processing continues if invalid, an
error is generated"]:::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: GCX016E.cbl
GIVEN: A bond number has been extracted from the message
WHEN: The system validates the bond number format
THEN: The bond number is accepted if it meets format requirements, otherwise processing is terminated with error
File: GCX016E.cbl
GIVEN: A bond number has been extracted from the message
WHEN:
  • The system validates the bond number format
  • Content
THEN: If the bond number is valid, processing continues; if invalid, an error is generated
βœ“ Consolidated Acceptance Criteria
  • The system prepares to search for cargo records → the bond number is set as the primary search key for database operations
  • The system prepares for cargo database lookup → the bond number is set as the search key for cargo record 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_SetBondNumberasSearchKey(["Start Step"]) E_SetBondNumberasSearchKey(["End Step"]) N_SetBondNumberasSearchKey_Node0{"The system prepares to search for
cargo records"}:::decision N_SetBondNumberasSearchKey_Node0_action["The bond number is set as the
primary search key for database
operations"]:::main N_SetBondNumberasSearchKey_Node0 -- Yes --> N_SetBondNumberasSearchKey_Node0_action N_SetBondNumberasSearchKey_Node0_action --> E_SetBondNumberasSearchKey S_SetBondNumberasSearchKey --> N_SetBondNumberasSearchKey_Node0 N_SetBondNumberasSearchKey_Node1{"The system prepares for cargo
database lookup"}:::decision N_SetBondNumberasSearchKey_Node1_action["The bond number is set as the
search key for cargo record
retrieval"]:::main N_SetBondNumberasSearchKey_Node1 -- Yes --> N_SetBondNumberasSearchKey_Node1_action N_SetBondNumberasSearchKey_Node1_action --> E_SetBondNumberasSearchKey N_SetBondNumberasSearchKey_Node0 -- No --> N_SetBondNumberasSearchKey_Node1 N_SetBondNumberasSearchKey_Node1 -- No --> E_SetBondNumberasSearchKey
File: GCX016E.cbl
GIVEN: A valid bond number has been extracted and validated
WHEN: The system prepares to search for cargo records
THEN: The bond number is set as the primary search key for database operations
File: GCX016E.cbl
GIVEN: A valid bond number has been extracted and validated
WHEN: The system prepares for cargo database lookup
THEN: The bond number is set as the search key for cargo record retrieval
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve cargo records for the bond → the GCCUSIO2 database service is called to perform the lookup 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_CallDatabaseLookupGCCUSIO2(["Start Step"]) E_CallDatabaseLookupGCCUSIO2(["End Step"]) N_CallDatabaseLookupGCCUSIO2_Node0{"The system needs to retrieve cargo
records for the bond"}:::decision N_CallDatabaseLookupGCCUSIO2_Node0_action["The GCCUSIO2 database service is
called to perform the lookup
operation"]:::main N_CallDatabaseLookupGCCUSIO2_Node0 -- Yes --> N_CallDatabaseLookupGCCUSIO2_Node0_action N_CallDatabaseLookupGCCUSIO2_Node0_action --> E_CallDatabaseLookupGCCUSIO2 S_CallDatabaseLookupGCCUSIO2 --> N_CallDatabaseLookupGCCUSIO2_Node0 N_CallDatabaseLookupGCCUSIO2_Node0 -- No --> E_CallDatabaseLookupGCCUSIO2
File: GCX016E.cbl
GIVEN: A bond number search key has been established
WHEN: The system needs to retrieve cargo records for the bond
THEN: The GCCUSIO2 database service is called to perform the lookup operation
βœ“ Consolidated Acceptance Criteria
  • The system processes the database response → the first cargo record associated with the bond number is retrieved for processing
  • The system needs to begin processing cargo records → the first cargo record matching the criteria is retrieved for processing
  • The system needs to process the cargo → the first cargo record is retrieved and prepared for processing
  • The system retrieves cargo records → the first matching cargo record is retrieved and made available for processing
  • System retrieves the first matching cargo record → system loads cargo record data for processing
  • The system processes the first matching record → the complete cargo record data must be retrieved and made available for processing
  • The system retrieves the first cargo record → the first matching cargo record is loaded and available for processing
  • The system begins cargo record processing → the first cargo record associated with the bond must be retrieved and made available for processing
  • The system begins processing the found records → the system retrieves and loads the first cargo record from the result 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_RetrieveFirstCargoRecord(["Start Step"]) E_RetrieveFirstCargoRecord(["End Step"]) N_RetrieveFirstCargoRecord_Node0{"The system processes the database
response"}:::decision N_RetrieveFirstCargoRecord_Node0_action["The first cargo record associated
with the bond number is retrieved
for processing"]:::main N_RetrieveFirstCargoRecord_Node0 -- Yes --> N_RetrieveFirstCargoRecord_Node0_action N_RetrieveFirstCargoRecord_Node0_action --> E_RetrieveFirstCargoRecord S_RetrieveFirstCargoRecord --> N_RetrieveFirstCargoRecord_Node0 N_RetrieveFirstCargoRecord_Node1{"The system needs to begin
processing cargo records"}:::decision N_RetrieveFirstCargoRecord_Node1_action["The first cargo record matching the
criteria is retrieved for processing"]:::main N_RetrieveFirstCargoRecord_Node1 -- Yes --> N_RetrieveFirstCargoRecord_Node1_action N_RetrieveFirstCargoRecord_Node1_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node0 -- No --> N_RetrieveFirstCargoRecord_Node1 N_RetrieveFirstCargoRecord_Node2{"The system needs to process the
cargo"}:::decision N_RetrieveFirstCargoRecord_Node2_action["The first cargo record is retrieved
and prepared for processing"]:::main N_RetrieveFirstCargoRecord_Node2 -- Yes --> N_RetrieveFirstCargoRecord_Node2_action N_RetrieveFirstCargoRecord_Node2_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node1 -- No --> N_RetrieveFirstCargoRecord_Node2 N_RetrieveFirstCargoRecord_Node3{"The system retrieves cargo records"}:::decision N_RetrieveFirstCargoRecord_Node3_action["The first matching cargo record is
retrieved and made available for
processing"]:::main N_RetrieveFirstCargoRecord_Node3 -- Yes --> N_RetrieveFirstCargoRecord_Node3_action N_RetrieveFirstCargoRecord_Node3_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node2 -- No --> N_RetrieveFirstCargoRecord_Node3 N_RetrieveFirstCargoRecord_Node4{"System retrieves the first matching
cargo record"}:::decision N_RetrieveFirstCargoRecord_Node4_action["System loads cargo record data for
processing"]:::main N_RetrieveFirstCargoRecord_Node4 -- Yes --> N_RetrieveFirstCargoRecord_Node4_action N_RetrieveFirstCargoRecord_Node4_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node3 -- No --> N_RetrieveFirstCargoRecord_Node4 N_RetrieveFirstCargoRecord_Node5{"The system processes the first
matching record"}:::decision N_RetrieveFirstCargoRecord_Node5_action["The complete cargo record data must
be retrieved and made available for
processing"]:::main N_RetrieveFirstCargoRecord_Node5 -- Yes --> N_RetrieveFirstCargoRecord_Node5_action N_RetrieveFirstCargoRecord_Node5_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node4 -- No --> N_RetrieveFirstCargoRecord_Node5 N_RetrieveFirstCargoRecord_Node6{"The system retrieves the first
cargo record"}:::decision N_RetrieveFirstCargoRecord_Node6_action["The first matching cargo record is
loaded and available for processing"]:::main N_RetrieveFirstCargoRecord_Node6 -- Yes --> N_RetrieveFirstCargoRecord_Node6_action N_RetrieveFirstCargoRecord_Node6_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node5 -- No --> N_RetrieveFirstCargoRecord_Node6 N_RetrieveFirstCargoRecord_Node7{"The system begins cargo record
processing"}:::decision N_RetrieveFirstCargoRecord_Node7_action["The first cargo record associated
with the bond must be retrieved and
made available for processing"]:::main N_RetrieveFirstCargoRecord_Node7 -- Yes --> N_RetrieveFirstCargoRecord_Node7_action N_RetrieveFirstCargoRecord_Node7_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node6 -- No --> N_RetrieveFirstCargoRecord_Node7 N_RetrieveFirstCargoRecord_Node8{"The system begins processing the
found records"}:::decision N_RetrieveFirstCargoRecord_Node8_action["The system retrieves and loads the
first cargo record from the result
set"]:::main N_RetrieveFirstCargoRecord_Node8 -- Yes --> N_RetrieveFirstCargoRecord_Node8_action N_RetrieveFirstCargoRecord_Node8_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node7 -- No --> N_RetrieveFirstCargoRecord_Node8 N_RetrieveFirstCargoRecord_Node8 -- No --> E_RetrieveFirstCargoRecord
File: GCX016E.cbl
GIVEN: Database lookup has been initiated for a specific bond number
WHEN: The system processes the database response
THEN: The first cargo record associated with the bond number is retrieved for processing
File: GCX016E.cbl
GIVEN: Cargo records exist for the car ID and waybill combination
WHEN: The system needs to begin processing cargo records
THEN: The first cargo record matching the criteria is retrieved for processing
File: GCX016E.cbl
GIVEN: Cargo records exist for the car ID and waybill combination
WHEN: The system needs to process the cargo
THEN:
  • The first cargo record is retrieved
  • Prepared for processing
File: GCX016E.cbl
GIVEN: At least one cargo record exists with the specified bond number
WHEN: The system retrieves cargo records
THEN:
  • The first matching cargo record is retrieved
  • Made available for processing
File: GCX016E.cbl
GIVEN: First cargo record exists for car/waybill combination
WHEN: System retrieves the first matching cargo record
THEN: System loads cargo record data for processing
File: GCX016E.cbl
GIVEN: At least one cargo record exists for the specified bond number
WHEN: The system processes the first matching record
THEN:
  • The complete cargo record data must be retrieved
  • Made available for processing
File: GCX016E.cbl
GIVEN: A matching cargo record has been found in the database
WHEN: The system retrieves the first cargo record
THEN:
  • The first matching cargo record is loaded
  • Available for processing
File: GCX016E.cbl
GIVEN: At least one cargo record exists for the bond number
WHEN: The system begins cargo record processing
THEN:
  • The first cargo record associated with the bond must be retrieved
  • Made available for processing
File: GCX016E.cbl
GIVEN: Database lookup has returned one or more matching cargo records
WHEN: The system begins processing the found records
THEN:
  • The system retrieves
  • Loads the first cargo record from the result set
βœ“ Consolidated Acceptance Criteria
  • The system checks the lookup results → processing continues if records are found, otherwise a bond not found 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_RecordFound(["Start Step"]) E_RecordFound(["End Step"]) N_RecordFound_Node0{"The system checks the lookup
results"}:::decision N_RecordFound_Node0_action["Processing continues if records are
found, otherwise a bond not found
error is generated"]:::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: GCX016E.cbl
GIVEN: A database lookup has been performed for a bond number
WHEN: The system checks the lookup results
THEN: Processing continues if records are found, otherwise a bond not found error is generated
βœ“ Consolidated Acceptance Criteria
  • The system examines the cargo record status code → the record is validated to ensure it has an acceptable status for bond processing
  • The system examines the record's status code → the status code must be validated against business rules to determine if the record should be included in processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateStatusCode(["Start Step"]) E_ValidateStatusCode(["End Step"]) N_ValidateStatusCode_Node0{"The system examines the cargo
record status code"}:::decision N_ValidateStatusCode_Node0_action["The record is validated to ensure
it has an acceptable status for bond
processing"]:::main N_ValidateStatusCode_Node0 -- Yes --> N_ValidateStatusCode_Node0_action N_ValidateStatusCode_Node0_action --> E_ValidateStatusCode S_ValidateStatusCode --> N_ValidateStatusCode_Node0 N_ValidateStatusCode_Node1{"The system examines the record s
status code"}:::decision N_ValidateStatusCode_Node1_action["The status code must be validated
against business rules to determine
if the record should be included in
processing"]:::main N_ValidateStatusCode_Node1 -- Yes --> N_ValidateStatusCode_Node1_action N_ValidateStatusCode_Node1_action --> E_ValidateStatusCode N_ValidateStatusCode_Node0 -- No --> N_ValidateStatusCode_Node1 N_ValidateStatusCode_Node1 -- No --> E_ValidateStatusCode
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved from the database
WHEN: The system examines the cargo record status code
THEN: The record is validated to ensure it has an acceptable status for bond processing
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved from the database
WHEN: The system examines the record's status code
THEN: The status code must be validated against business rules to determine if the record should be included in processing
βœ“ Consolidated Acceptance Criteria
  • If the status code against business rules → the record is accepted for processing if status is valid, otherwise it is skipped
  • If the validation results → if the status code is valid, the record must be considered for inclusion in the cargo processing list, otherwise the record must be excluded and the search must continue
  • The status code is invalid or indicates an inactive record → return 'Invalid Status' error and do not process the record 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_StatusCodeValid(["Start Step"]) E_StatusCodeValid(["End Step"]) N_StatusCodeValid_Node0{"The system evaluates the status
code against business rules"}:::decision N_StatusCodeValid_Node0_action["The record is accepted for
processing if status is valid,
otherwise it is skipped"]:::main N_StatusCodeValid_Node0 -- Yes --> N_StatusCodeValid_Node0_action N_StatusCodeValid_Node0_action --> E_StatusCodeValid S_StatusCodeValid --> N_StatusCodeValid_Node0 N_StatusCodeValid_Node1{"The system evaluates the validation
results"}:::decision N_StatusCodeValid_Node1_action["If the status code is valid, the
record must be considered for
inclusion in the cargo processing
list, otherwise the record must be
excluded and the search must
continue"]:::main N_StatusCodeValid_Node1 -- Yes --> N_StatusCodeValid_Node1_action N_StatusCodeValid_Node1_action --> E_StatusCodeValid N_StatusCodeValid_Node0 -- No --> N_StatusCodeValid_Node1 N_StatusCodeValid_Node2{"The status code is invalid or
indicates an inactive record"}:::decision N_StatusCodeValid_Node2_action["Return Invalid Status error and do
not process the record further"]:::exclusion N_StatusCodeValid_Node2 -- Yes -->|Alternative| N_StatusCodeValid_Node2_action N_StatusCodeValid_Node2_action --> E_StatusCodeValid N_StatusCodeValid_Node1 -- No --> N_StatusCodeValid_Node2 N_StatusCodeValid_Node2 -- No --> E_StatusCodeValid
File: GCX016E.cbl
GIVEN: A cargo record status code has been validated
WHEN: The system evaluates the status code against business rules
THEN: The record is accepted for processing if status is valid, otherwise it is skipped
File: GCX016E.cbl
GIVEN: A cargo record's status code has been validated
WHEN: The system evaluates the validation results
THEN:
  • If the status code is valid, the record must be considered for inclusion in the cargo processing list, otherwise the record must be excluded
  • The search must continue
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record has been retrieved and status code checked
WHEN: The status code is invalid or indicates an inactive record
THEN:
  • Return 'invalid status' error
  • Do not process the record further
βœ“ Consolidated Acceptance Criteria
  • The system processes the valid record → the cargo record is stored in the processing collection for bond 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_StoreCargoRecord(["Start Step"]) E_StoreCargoRecord(["End Step"]) N_StoreCargoRecord_Node0{"The system processes the valid
record"}:::decision N_StoreCargoRecord_Node0_action["The cargo record is stored in the
processing collection for bond
operations"]:::main N_StoreCargoRecord_Node0 -- Yes --> N_StoreCargoRecord_Node0_action N_StoreCargoRecord_Node0_action --> E_StoreCargoRecord S_StoreCargoRecord --> N_StoreCargoRecord_Node0 N_StoreCargoRecord_Node0 -- No --> E_StoreCargoRecord
File: GCX016E.cbl
GIVEN: A cargo record has passed status code validation
WHEN: The system processes the valid record
THEN: The cargo record is stored in the processing collection for bond operations
βœ“ Consolidated Acceptance Criteria
  • The system searches for additional records with the same bond → all remaining cargo records associated with the bond number are retrieved sequentially
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 searches for additional
records with the same bond"}:::decision N_GetNextCargoRecordwithSameBond_Node0_action["All remaining cargo records
associated with the bond number are
retrieved sequentially"]:::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: GCX016E.cbl
GIVEN: At least one cargo record has been found for a bond number
WHEN: The system searches for additional records with the same bond
THEN: All remaining cargo records associated with the bond number are retrieved sequentially
βœ“ Consolidated Acceptance Criteria
  • Each record retrieval operation completes → processing continues if more records exist, otherwise the bond collection is considered 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_MoreRecords(["Start Step"]) E_MoreRecords(["End Step"]) N_MoreRecords_Node0{"Each record retrieval operation
completes"}:::decision N_MoreRecords_Node0_action["Processing continues if more
records exist, otherwise the bond
collection is considered complete"]:::main N_MoreRecords_Node0 -- Yes --> N_MoreRecords_Node0_action N_MoreRecords_Node0_action --> E_MoreRecords S_MoreRecords --> N_MoreRecords_Node0 N_MoreRecords_Node0 -- No --> E_MoreRecords
File: GCX016E.cbl
GIVEN: The system is retrieving cargo records for a bond number
WHEN: Each record retrieval operation completes
THEN: Processing continues if more records exist, otherwise the bond collection is considered complete
βœ“ Consolidated Acceptance Criteria
  • The system completes the bond record collection process → all valid cargo records in the bond collection are processed according to 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_ProcessAllBondCargoRecords(["Start Step"]) E_ProcessAllBondCargoRecords(["End Step"]) N_ProcessAllBondCargoRecords_Node0{"The system completes the bond
record collection process"}:::decision N_ProcessAllBondCargoRecords_Node0_action["All valid cargo records in the bond
collection are processed according
to business rules"]:::main N_ProcessAllBondCargoRecords_Node0 -- Yes --> N_ProcessAllBondCargoRecords_Node0_action N_ProcessAllBondCargoRecords_Node0_action --> E_ProcessAllBondCargoRecords S_ProcessAllBondCargoRecords --> N_ProcessAllBondCargoRecords_Node0 N_ProcessAllBondCargoRecords_Node0 -- No --> E_ProcessAllBondCargoRecords
File: GCX016E.cbl
GIVEN: All cargo records for a bond number have been collected and validated
WHEN: The system completes the bond record collection process
THEN: All valid cargo records in the bond collection are processed according to business rules
βœ“ Consolidated Acceptance Criteria
  • No valid cargo records are found for the bond number → a bond not found error is generated and appropriate error handling is initiated
  • The system processes the empty search result → a bond not found error is generated 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_GenerateBondNotFoundError(["Start Step"]) E_GenerateBondNotFoundError(["End Step"]) N_GenerateBondNotFoundError_Node0{"No valid cargo records are found
for the bond number"}:::decision N_GenerateBondNotFoundError_Node0_action["A bond not found error is generated
and appropriate error handling is
initiated"]:::main N_GenerateBondNotFoundError_Node0 -- Yes --> N_GenerateBondNotFoundError_Node0_action N_GenerateBondNotFoundError_Node0_action --> E_GenerateBondNotFoundError S_GenerateBondNotFoundError --> N_GenerateBondNotFoundError_Node0 N_GenerateBondNotFoundError_Node1{"The system processes the empty
search result"}:::decision N_GenerateBondNotFoundError_Node1_action["A bond not found error is generated
for the specified bond number"]:::main N_GenerateBondNotFoundError_Node1 -- Yes --> N_GenerateBondNotFoundError_Node1_action N_GenerateBondNotFoundError_Node1_action --> E_GenerateBondNotFoundError N_GenerateBondNotFoundError_Node0 -- No --> N_GenerateBondNotFoundError_Node1 N_GenerateBondNotFoundError_Node1 -- No --> E_GenerateBondNotFoundError
File: GCX016E.cbl
GIVEN: A bond number search has been performed
WHEN: No valid cargo records are found for the bond number
THEN:
  • A bond not found error is generated
  • Appropriate error handling is initiated
File: GCX016E.cbl
GIVEN: A bond number search has been performed and no cargo records were found
WHEN: The system processes the empty search result
THEN: A bond not found error is generated for the specified bond number
βœ“ Consolidated Acceptance Criteria
  • If the record for processing eligibility → the record is skipped and the system continues to search for additional 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_SkipInvalidStatusRecord(["Start Step"]) E_SkipInvalidStatusRecord(["End Step"]) N_SkipInvalidStatusRecord_Node0{"The system evaluates the record for
processing eligibility"}:::decision N_SkipInvalidStatusRecord_Node0_action["The record is skipped and the
system continues to search for
additional valid records"]:::main N_SkipInvalidStatusRecord_Node0 -- Yes --> N_SkipInvalidStatusRecord_Node0_action N_SkipInvalidStatusRecord_Node0_action --> E_SkipInvalidStatusRecord S_SkipInvalidStatusRecord --> N_SkipInvalidStatusRecord_Node0 N_SkipInvalidStatusRecord_Node0 -- No --> E_SkipInvalidStatusRecord
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved but has an invalid status code
WHEN: The system evaluates the record for processing eligibility
THEN:
  • The record is skipped
  • The system continues to search for additional valid records
βœ“ Consolidated Acceptance Criteria
  • The system needs to validate cargo status → the cargo record is retrieved from the US Cargo Root database
  • The system retrieves the cargo record from GCSUSRT → complete cargo record is loaded 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 needs to validate cargo
status"}:::decision N_RetrieveCargoRecord_Node0_action["The cargo record is retrieved from
the US Cargo Root database"]:::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 retrieves the cargo
record from GCSUSRT"}:::decision N_RetrieveCargoRecord_Node1_action["Complete cargo record is loaded for
further processing"]:::main N_RetrieveCargoRecord_Node1 -- Yes --> N_RetrieveCargoRecord_Node1_action N_RetrieveCargoRecord_Node1_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node0 -- No --> N_RetrieveCargoRecord_Node1 N_RetrieveCargoRecord_Node1 -- No --> E_RetrieveCargoRecord
File: GCX016E.cbl
GIVEN: A cargo identification number is provided for processing
WHEN: The system needs to validate cargo status
THEN: The cargo record is retrieved from the US Cargo Root database
File: GCX016E.cbl
GIVEN: Cargo has been found by US CCN search
WHEN: The system retrieves the cargo record from GCSUSRT
THEN: Complete cargo record is loaded for further processing
βœ“ Consolidated Acceptance Criteria
  • The system examines the cargo status code field → the status code is validated against acceptable values for 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_CargoStatusCodeCheck(["Start Step"]) E_CargoStatusCodeCheck(["End Step"]) N_CargoStatusCodeCheck_Node0{"The system examines the cargo
status code field"}:::decision N_CargoStatusCodeCheck_Node0_action["The status code is validated
against acceptable values for
processing eligibility"]:::main N_CargoStatusCodeCheck_Node0 -- Yes --> N_CargoStatusCodeCheck_Node0_action N_CargoStatusCodeCheck_Node0_action --> E_CargoStatusCodeCheck S_CargoStatusCodeCheck --> N_CargoStatusCodeCheck_Node0 N_CargoStatusCodeCheck_Node0 -- No --> E_CargoStatusCodeCheck
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved from the database
WHEN: The system examines the cargo status code field
THEN: The status code is validated against acceptable values for processing eligibility
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo deletion status indicator → the cargo is identified as deleted or active based on the 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_CheckDeletedStatus(["Start Step"]) E_CheckDeletedStatus(["End Step"]) N_CheckDeletedStatus_Node0{"The system checks the cargo
deletion status indicator"}:::decision N_CheckDeletedStatus_Node0_action["The cargo is identified as deleted
or active based on the status flag"]:::main N_CheckDeletedStatus_Node0 -- Yes --> N_CheckDeletedStatus_Node0_action N_CheckDeletedStatus_Node0_action --> E_CheckDeletedStatus S_CheckDeletedStatus --> N_CheckDeletedStatus_Node0 N_CheckDeletedStatus_Node0 -- No --> E_CheckDeletedStatus
File: GCX016E.cbl
GIVEN: A cargo record with status code information is available
WHEN: The system checks the cargo deletion status indicator
THEN: The cargo is identified as deleted or active based on the status flag
βœ“ Consolidated Acceptance Criteria
  • The cargo is marked as deleted → the cargo is excluded from processing and marked as invalid for 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_IsCargoDeleted(["Start Step"]) E_IsCargoDeleted(["End Step"]) N_IsCargoDeleted_Node0{"The cargo is marked as deleted"}:::decision N_IsCargoDeleted_Node0_action["The cargo is excluded from
processing and marked as invalid for
operations"]:::main N_IsCargoDeleted_Node0 -- Yes --> N_IsCargoDeleted_Node0_action N_IsCargoDeleted_Node0_action --> E_IsCargoDeleted S_IsCargoDeleted --> N_IsCargoDeleted_Node0 N_IsCargoDeleted_Node0 -- No --> E_IsCargoDeleted
File: GCX016E.cbl
GIVEN: A cargo record has been checked for deletion status
WHEN: The cargo is marked as deleted
THEN:
  • The cargo is excluded from processing
  • Marked as invalid for operations
βœ“ Consolidated Acceptance Criteria
  • The system examines the bond creation status → the new bond creation flag is evaluated to determine 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_CheckNewBondCreationStatus(["Start Step"]) E_CheckNewBondCreationStatus(["End Step"]) N_CheckNewBondCreationStatus_Node0{"The system examines the bond
creation status"}:::decision N_CheckNewBondCreationStatus_Node0_action["The new bond creation flag is
evaluated to determine processing
eligibility"]:::main N_CheckNewBondCreationStatus_Node0 -- Yes --> N_CheckNewBondCreationStatus_Node0_action N_CheckNewBondCreationStatus_Node0_action --> E_CheckNewBondCreationStatus S_CheckNewBondCreationStatus --> N_CheckNewBondCreationStatus_Node0 N_CheckNewBondCreationStatus_Node0 -- No --> E_CheckNewBondCreationStatus
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record is not marked as deleted
WHEN: The system examines the bond creation status
THEN: The new bond creation flag is evaluated to determine processing eligibility
βœ“ Consolidated Acceptance Criteria
  • The cargo is associated with a newly created bond → the cargo is excluded from processing to prevent conflicts with bond creation 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_NewBondCreated(["Start Step"]) E_NewBondCreated(["End Step"]) N_NewBondCreated_Node0{"The cargo is associated with a
newly created bond"}:::decision N_NewBondCreated_Node0_action["The cargo is excluded from
processing to prevent conflicts with
bond creation procedures"]:::main N_NewBondCreated_Node0 -- Yes --> N_NewBondCreated_Node0_action N_NewBondCreated_Node0_action --> E_NewBondCreated S_NewBondCreated --> N_NewBondCreated_Node0 N_NewBondCreated_Node0 -- No --> E_NewBondCreated
File: GCX016E.cbl
GIVEN: A cargo record has been checked for new bond creation status
WHEN: The cargo is associated with a newly created bond
THEN: The cargo is excluded from processing to prevent conflicts with bond creation procedures
βœ“ Consolidated Acceptance Criteria
  • The system verifies the active status of the cargo → the cargo active status is confirmed against business rules for 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_VerifyActiveStatus(["Start Step"]) E_VerifyActiveStatus(["End Step"]) N_VerifyActiveStatus_Node0{"The system verifies the active
status of the cargo"}:::decision N_VerifyActiveStatus_Node0_action["The cargo active status is
confirmed against business rules for
processing eligibility"]:::main N_VerifyActiveStatus_Node0 -- Yes --> N_VerifyActiveStatus_Node0_action N_VerifyActiveStatus_Node0_action --> E_VerifyActiveStatus S_VerifyActiveStatus --> N_VerifyActiveStatus_Node0 N_VerifyActiveStatus_Node0 -- No --> E_VerifyActiveStatus
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record is not deleted and not associated with a new bond creation
WHEN: The system verifies the active status of the cargo
THEN: The cargo active status is confirmed against business rules for processing eligibility
βœ“ Consolidated Acceptance Criteria
  • The cargo status is confirmed as active → the cargo is marked as valid for 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_IsStatusActive(["Start Step"]) E_IsStatusActive(["End Step"]) N_IsStatusActive_Node0{"The cargo status is confirmed as
active"}:::decision N_IsStatusActive_Node0_action["The cargo is marked as valid for
processing operations"]:::main N_IsStatusActive_Node0 -- Yes --> N_IsStatusActive_Node0_action N_IsStatusActive_Node0_action --> E_IsStatusActive S_IsStatusActive --> N_IsStatusActive_Node0 N_IsStatusActive_Node0 -- No --> E_IsStatusActive
File: GCX016E.cbl
GIVEN: A cargo record has been verified for active status
WHEN: The cargo status is confirmed as active
THEN: The cargo is marked as valid for processing operations
βœ“ Consolidated Acceptance Criteria
  • All validation criteria are met → the cargo is marked as valid and approved 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_MarkasValidforProcessing(["Start Step"]) E_MarkasValidforProcessing(["End Step"]) N_MarkasValidforProcessing_Node0{"All validation criteria are met"}:::decision N_MarkasValidforProcessing_Node0_action["The cargo is marked as valid and
approved for subsequent processing
operations"]:::main N_MarkasValidforProcessing_Node0 -- Yes --> N_MarkasValidforProcessing_Node0_action N_MarkasValidforProcessing_Node0_action --> E_MarkasValidforProcessing S_MarkasValidforProcessing --> N_MarkasValidforProcessing_Node0 N_MarkasValidforProcessing_Node0 -- No --> E_MarkasValidforProcessing
File: GCX016E.cbl
GIVEN: A cargo record has passed all validation checks including deletion status, bond creation status, and active status
WHEN: All validation criteria are met
THEN:
  • The cargo is marked as valid
  • Approved for subsequent processing operations
βœ“ Consolidated Acceptance Criteria
  • The validation process concludes → the validation result is logged with cargo identification and validation outcome 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_LogValidationResult(["Start Step"]) E_LogValidationResult(["End Step"]) N_LogValidationResult_Node0{"The validation process concludes"}:::decision N_LogValidationResult_Node0_action["The validation result is logged
with cargo identification and
validation outcome details"]:::main N_LogValidationResult_Node0 -- Yes --> N_LogValidationResult_Node0_action N_LogValidationResult_Node0_action --> E_LogValidationResult S_LogValidationResult --> N_LogValidationResult_Node0 N_LogValidationResult_Node0 -- No --> E_LogValidationResult
File: GCX016E.cbl
GIVEN: Cargo status validation has been completed with either valid or invalid result
WHEN: The validation process concludes
THEN:
  • The validation result is logged with cargo identification
  • Validation outcome details
βœ“ Consolidated Acceptance Criteria
  • The cargo is marked as valid for processing → the system continues with the next phase of cargo 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_ContinuewithCargoProcessing(["Start Step"]) E_ContinuewithCargoProcessing(["End Step"]) N_ContinuewithCargoProcessing_Node0{"The cargo is marked as valid for
processing"}:::decision N_ContinuewithCargoProcessing_Node0_action["The system continues with the next
phase of cargo processing operations"]:::main N_ContinuewithCargoProcessing_Node0 -- Yes --> N_ContinuewithCargoProcessing_Node0_action N_ContinuewithCargoProcessing_Node0_action --> E_ContinuewithCargoProcessing S_ContinuewithCargoProcessing --> N_ContinuewithCargoProcessing_Node0 N_ContinuewithCargoProcessing_Node0 -- No --> E_ContinuewithCargoProcessing
File: GCX016E.cbl
GIVEN: Cargo status validation has been completed and results have been logged
WHEN: The cargo is marked as valid for processing
THEN: The system continues with the next phase of cargo processing operations
βœ“ Consolidated Acceptance Criteria
  • The system processes the N7 segment to extract equipment information → the equipment initial and equipment number are extracted and combined to form 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_ExtractEquipmentIDfromN7Segment(["Start Step"]) E_ExtractEquipmentIDfromN7Segment(["End Step"]) N_ExtractEquipmentIDfromN7Segment_Node0{"The system processes the N7 segment
to extract equipment information"}:::decision N_ExtractEquipmentIDfromN7Segment_Node0_action["The equipment initial and equipment
number are extracted and combined to
form the equipment ID"]:::main N_ExtractEquipmentIDfromN7Segment_Node0 -- Yes --> N_ExtractEquipmentIDfromN7Segment_Node0_action N_ExtractEquipmentIDfromN7Segment_Node0_action --> E_ExtractEquipmentIDfromN7Segment S_ExtractEquipmentIDfromN7Segment --> N_ExtractEquipmentIDfromN7Segment_Node0 N_ExtractEquipmentIDfromN7Segment_Node0 -- No --> E_ExtractEquipmentIDfromN7Segment
File: GCX016E.cbl
GIVEN: An N7 equipment segment is available for processing
WHEN: The system processes the N7 segment to extract equipment information
THEN:
  • The equipment initial
  • Equipment number are extracted
  • Combined to form the equipment id
βœ“ Consolidated Acceptance Criteria
  • The system processes the N7 segment for waybill data → the waybill number is extracted 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_ExtractWaybillNumberfromN7Segment(["Start Step"]) E_ExtractWaybillNumberfromN7Segment(["End Step"]) N_ExtractWaybillNumberfromN7Segment_Node0{"The system processes the N7 segment
for waybill data"}:::decision N_ExtractWaybillNumberfromN7Segment_Node0_action["The waybill number is extracted
from the N7 segment"]:::main N_ExtractWaybillNumberfromN7Segment_Node0 -- Yes --> N_ExtractWaybillNumberfromN7Segment_Node0_action N_ExtractWaybillNumberfromN7Segment_Node0_action --> E_ExtractWaybillNumberfromN7Segment S_ExtractWaybillNumberfromN7Segment --> N_ExtractWaybillNumberfromN7Segment_Node0 N_ExtractWaybillNumberfromN7Segment_Node0 -- No --> E_ExtractWaybillNumberfromN7Segment
File: GCX016E.cbl
GIVEN: An N7 equipment segment contains waybill information
WHEN: The system processes the N7 segment for waybill data
THEN: The waybill number is extracted from the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a standardized car ID → the car ID is formatted by combining equipment initial and equipment number according to standard formatting rules
  • The system prepares the car ID for database search → car ID is formatted according to standard business formatting rules for consistent lookup
  • The system processes the car information for CPRS cargo creation → the system formats the car ID by combining equipment initial and number according to standard formatting 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_FormatCarIDUsingStandardRules(["Start Step"]) E_FormatCarIDUsingStandardRules(["End Step"]) N_FormatCarIDUsingStandardRules_Node0{"The system needs to create a
standardized car ID"}:::decision N_FormatCarIDUsingStandardRules_Node0_action["The car ID is formatted by
combining equipment initial and
equipment number according to
standard formatting rules"]:::main N_FormatCarIDUsingStandardRules_Node0 -- Yes --> N_FormatCarIDUsingStandardRules_Node0_action N_FormatCarIDUsingStandardRules_Node0_action --> E_FormatCarIDUsingStandardRules S_FormatCarIDUsingStandardRules --> N_FormatCarIDUsingStandardRules_Node0 N_FormatCarIDUsingStandardRules_Node1{"The system prepares the car ID for
database search"}:::decision N_FormatCarIDUsingStandardRules_Node1_action["Car ID is formatted according to
standard business formatting rules
for consistent lookup"]:::main N_FormatCarIDUsingStandardRules_Node1 -- Yes --> N_FormatCarIDUsingStandardRules_Node1_action N_FormatCarIDUsingStandardRules_Node1_action --> E_FormatCarIDUsingStandardRules N_FormatCarIDUsingStandardRules_Node0 -- No --> N_FormatCarIDUsingStandardRules_Node1 N_FormatCarIDUsingStandardRules_Node2{"The system processes the car
information for CPRS cargo creation"}:::decision N_FormatCarIDUsingStandardRules_Node2_action["The system formats the car ID by
combining equipment initial and
number according to standard
formatting rules"]:::main N_FormatCarIDUsingStandardRules_Node2 -- Yes --> N_FormatCarIDUsingStandardRules_Node2_action N_FormatCarIDUsingStandardRules_Node2_action --> E_FormatCarIDUsingStandardRules N_FormatCarIDUsingStandardRules_Node1 -- No --> N_FormatCarIDUsingStandardRules_Node2 N_FormatCarIDUsingStandardRules_Node2 -- No --> E_FormatCarIDUsingStandardRules
File: GCX016E.cbl
GIVEN: Equipment initial and equipment number have been extracted from N7 segment
WHEN: The system needs to create a standardized car ID
THEN:
  • The car id is formatted by combining equipment initial
  • Equipment number according to standard formatting rules
File: GCX016E.cbl
GIVEN: A raw car ID has been extracted from the X4 segment
WHEN: The system prepares the car ID for database search
THEN: Car ID is formatted according to standard business formatting rules for consistent lookup
File: GCX016E.cbl
GIVEN: Raw car equipment initial and number from N7 segment data
WHEN: The system processes the car information for CPRS cargo creation
THEN:
  • The system formats the car id by combining equipment initial
  • Number according to standard formatting rules
βœ“ Consolidated Acceptance Criteria
  • The system searches for existing cargo records → the system queries the cargo database using the car/waybill index to find matching records
  • The system searches the cargo database → database is searched using car/waybill index to locate existing 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 for existing
cargo records"}:::decision N_SearchCargoDatabasebyCarWaybillIndex_Node0_action["The system queries the cargo
database using the carwaybill index
to find matching records"]:::main N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarWaybillIndex_Node0_action N_SearchCargoDatabasebyCarWaybillIndex_Node0_action --> E_SearchCargoDatabasebyCarWaybillIndex S_SearchCargoDatabasebyCarWaybillIndex --> N_SearchCargoDatabasebyCarWaybillIndex_Node0 N_SearchCargoDatabasebyCarWaybillIndex_Node1{"The system searches the cargo
database"}:::decision N_SearchCargoDatabasebyCarWaybillIndex_Node1_action["Database is searched using
carwaybill index to locate existing
cargo records"]:::main N_SearchCargoDatabasebyCarWaybillIndex_Node1 -- Yes --> N_SearchCargoDatabasebyCarWaybillIndex_Node1_action N_SearchCargoDatabasebyCarWaybillIndex_Node1_action --> E_SearchCargoDatabasebyCarWaybillIndex N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- No --> N_SearchCargoDatabasebyCarWaybillIndex_Node1 N_SearchCargoDatabasebyCarWaybillIndex_Node1 -- No --> E_SearchCargoDatabasebyCarWaybillIndex
File: GCX016E.cbl
GIVEN: A formatted car ID and waybill number are available
WHEN: The system searches for existing cargo records
THEN: The system queries the cargo database using the car/waybill index to find matching records
File: GCX016E.cbl
GIVEN: A formatted car ID and waybill number are available for search
WHEN: The system searches the cargo database
THEN: Database is searched using car/waybill index to locate existing cargo records
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional matching records → the system determines if more cargo records exist with the same car ID and waybill and continues processing 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_MoreRecordsExist(["Start Step"]) E_MoreRecordsExist(["End Step"]) N_MoreRecordsExist_Node0{"The system checks for additional
matching records"}:::decision N_MoreRecordsExist_Node0_action["The system determines if more cargo
records exist with the same car ID
and waybill and continues processing
if found"]:::main N_MoreRecordsExist_Node0 -- Yes --> N_MoreRecordsExist_Node0_action N_MoreRecordsExist_Node0_action --> E_MoreRecordsExist S_MoreRecordsExist --> N_MoreRecordsExist_Node0 N_MoreRecordsExist_Node0 -- No --> E_MoreRecordsExist
File: GCX016E.cbl
GIVEN: One cargo record has been processed for a car/waybill combination
WHEN: The system checks for additional matching records
THEN:
  • The system determines if more cargo records exist with the same car id
  • Waybill
  • Continues processing if found
βœ“ Consolidated Acceptance Criteria
  • The system processes this additional cargo record → the cargo record is processed with the same disposition codes, status updates, and business rule validations as previous 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_ProcessNextIndividualCargoRecord(["Start Step"]) E_ProcessNextIndividualCargoRecord(["End Step"]) N_ProcessNextIndividualCargoRecord_Node0{"The system processes this
additional cargo record"}:::decision N_ProcessNextIndividualCargoRecord_Node0_action["The cargo record is processed with
the same disposition codes, status
updates, and business rule
validations as previous records"]:::main N_ProcessNextIndividualCargoRecord_Node0 -- Yes --> N_ProcessNextIndividualCargoRecord_Node0_action N_ProcessNextIndividualCargoRecord_Node0_action --> E_ProcessNextIndividualCargoRecord S_ProcessNextIndividualCargoRecord --> N_ProcessNextIndividualCargoRecord_Node0 N_ProcessNextIndividualCargoRecord_Node0 -- No --> E_ProcessNextIndividualCargoRecord
File: GCX016E.cbl
GIVEN: A subsequent cargo record has been retrieved for the same car/waybill combination
WHEN: The system processes this additional cargo record
THEN: The cargo record is processed with the same disposition codes, status updates, and business rule validations as previous records
βœ“ Consolidated Acceptance Criteria
  • If the traffic type → the system determines if this is CPRS traffic and routes to appropriate processing
  • If the traffic type → system determines if this is CPRS traffic requiring special processing rules
  • System checks cargo characteristics for CPRS traffic indicators → system determines if CPRS special handling rules should be applied
  • The system checks if the cargo is CPRS traffic → the system identifies whether CPRS-specific formatting rules should be applied
  • If the cargo type for CPRS classification → the system identifies whether the cargo is CPRS traffic or standard traffic based on predefined CPRS 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_CPRSTraffic(["Start Step"]) E_CPRSTraffic(["End Step"]) N_CPRSTraffic_Node0{"The system evaluates the traffic
type"}:::decision N_CPRSTraffic_Node0_action["The system determines if this is
CPRS traffic and routes to
appropriate processing"]:::main N_CPRSTraffic_Node0 -- Yes --> N_CPRSTraffic_Node0_action N_CPRSTraffic_Node0_action --> E_CPRSTraffic S_CPRSTraffic --> N_CPRSTraffic_Node0 N_CPRSTraffic_Node1{"The system evaluates the traffic
type"}:::decision N_CPRSTraffic_Node1_action["System determines if this is CPRS
traffic requiring special processing
rules"]:::main N_CPRSTraffic_Node1 -- Yes --> N_CPRSTraffic_Node1_action N_CPRSTraffic_Node1_action --> E_CPRSTraffic N_CPRSTraffic_Node0 -- No --> N_CPRSTraffic_Node1 N_CPRSTraffic_Node2{"System checks cargo characteristics
for CPRS traffic indicators"}:::decision N_CPRSTraffic_Node2_action["System determines if CPRS special
handling rules should be applied"]:::main N_CPRSTraffic_Node2 -- Yes --> N_CPRSTraffic_Node2_action N_CPRSTraffic_Node2_action --> E_CPRSTraffic N_CPRSTraffic_Node1 -- No --> N_CPRSTraffic_Node2 N_CPRSTraffic_Node3{"The system checks if the cargo is
CPRS traffic"}:::decision N_CPRSTraffic_Node3_action["The system identifies whether
CPRS-specific formatting rules
should be applied"]:::main N_CPRSTraffic_Node3 -- Yes --> N_CPRSTraffic_Node3_action N_CPRSTraffic_Node3_action --> E_CPRSTraffic N_CPRSTraffic_Node2 -- No --> N_CPRSTraffic_Node3 N_CPRSTraffic_Node4{"The system evaluates the cargo type
for CPRS classification"}:::decision N_CPRSTraffic_Node4_action["The system identifies whether the
cargo is CPRS traffic or standard
traffic based on predefined CPRS
indicators"]:::main N_CPRSTraffic_Node4 -- Yes --> N_CPRSTraffic_Node4_action N_CPRSTraffic_Node4_action --> E_CPRSTraffic N_CPRSTraffic_Node3 -- No --> N_CPRSTraffic_Node4 N_CPRSTraffic_Node4 -- No --> E_CPRSTraffic
File: GCX016E.cbl
GIVEN: No existing cargo records were found for the car/waybill combination
WHEN: The system evaluates the traffic type
THEN:
  • The system determines if this is cprs traffic
  • Routes to appropriate processing
File: GCX016E.cbl
GIVEN: No existing cargo records are found for the car ID and waybill
WHEN: The system evaluates the traffic type
THEN: System determines if this is CPRS traffic requiring special processing rules
File: GCX016E.cbl
GIVEN: All cargo records for car/waybill combination are collected
WHEN: System checks cargo characteristics for CPRS traffic indicators
THEN: System determines if CPRS special handling rules should be applied
File: GCX016E.cbl
GIVEN: A cargo record with traffic type information
WHEN: The system checks if the cargo is CPRS traffic
THEN: The system identifies whether CPRS-specific formatting rules should be applied
File: GCX016E.cbl
GIVEN: A cargo record with equipment and routing information is being processed
WHEN: The system evaluates the cargo type for CPRS classification
THEN: The system identifies whether the cargo is CPRS traffic or standard traffic based on predefined CPRS indicators
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the processing step → the processing actions and results are logged for audit trail and business 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_LogCarWaybillProcessingAction(["Start Step"]) E_LogCarWaybillProcessingAction(["End Step"]) N_LogCarWaybillProcessingAction_Node0{"The system finalizes the processing
step"}:::decision N_LogCarWaybillProcessingAction_Node0_action["The processing actions and results
are logged for audit trail and
business tracking purposes"]:::main N_LogCarWaybillProcessingAction_Node0 -- Yes --> N_LogCarWaybillProcessingAction_Node0_action N_LogCarWaybillProcessingAction_Node0_action --> E_LogCarWaybillProcessingAction S_LogCarWaybillProcessingAction --> N_LogCarWaybillProcessingAction_Node0 N_LogCarWaybillProcessingAction_Node0 -- No --> E_LogCarWaybillProcessingAction
File: GCX016E.cbl
GIVEN: Car/waybill processing has been completed
WHEN: The system finalizes the processing step
THEN:
  • The processing actions
  • Results are logged for audit trail
  • Business tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment for car/waybill search → car ID and waybill number are extracted and prepared for database 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_ExtractCarIDandWaybillfromX4Segment(["Start Step"]) E_ExtractCarIDandWaybillfromX4Segment(["End Step"]) N_ExtractCarIDandWaybillfromX4Segment_Node0{"The system processes the X4 segment
for carwaybill search"}:::decision N_ExtractCarIDandWaybillfromX4Segment_Node0_action["Car ID and waybill number are
extracted and prepared for database
search"]:::main N_ExtractCarIDandWaybillfromX4Segment_Node0 -- Yes --> N_ExtractCarIDandWaybillfromX4Segment_Node0_action N_ExtractCarIDandWaybillfromX4Segment_Node0_action --> E_ExtractCarIDandWaybillfromX4Segment S_ExtractCarIDandWaybillfromX4Segment --> N_ExtractCarIDandWaybillfromX4Segment_Node0 N_ExtractCarIDandWaybillfromX4Segment_Node0 -- No --> E_ExtractCarIDandWaybillfromX4Segment
File: GCX016E.cbl
GIVEN: An X4 segment contains equipment and waybill information
WHEN: The system processes the X4 segment for car/waybill search
THEN:
  • Car id
  • Waybill number are extracted
  • Prepared for database search
βœ“ Consolidated Acceptance Criteria
  • If the search results → system determines if cargo records exist and routes processing accordingly
  • If search results → if cargo record is found, use existing cargo record, otherwise proceed to US-CCN key requirements check
  • If the search results → the system determines if a cargo 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_CargoFound(["Start Step"]) E_CargoFound(["End Step"]) N_CargoFound_Node0{"The system evaluates the search
results"}:::decision N_CargoFound_Node0_action["System determines if cargo records
exist and routes processing
accordingly"]:::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["if cargo record is found, use
existing cargo record, otherwise
proceed to US-CCN key requirements
check"]:::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 the search
results"}:::decision N_CargoFound_Node2_action["The system determines if a cargo
record was found or not found"]:::main N_CargoFound_Node2 -- Yes --> N_CargoFound_Node2_action N_CargoFound_Node2_action --> E_CargoFound N_CargoFound_Node1 -- No --> N_CargoFound_Node2 N_CargoFound_Node2 -- No --> E_CargoFound
File: GCX016E.cbl
GIVEN: A database search has been performed using car ID and waybill
WHEN: The system evaluates the search results
THEN:
  • System determines if cargo records exist
  • Routes processing accordingly
File: GCX016E.cbl
GIVEN: car ID search has been performed for CPRS cargo
WHEN: the system evaluates search results
THEN: if cargo record is found, use existing cargo record, otherwise proceed to US-CCN key requirements check
File: GCX016E.cbl
GIVEN: A cargo search has been performed using car ID
WHEN: The system evaluates the search results
THEN: The system determines if a cargo record was found or not found
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional records → all cargo records with the same car ID and waybill are 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_CheckforAdditionalRecordswithSameCarWaybill(["Start Step"]) E_CheckforAdditionalRecordswithSameCarWaybill(["End Step"]) N_CheckforAdditionalRecordswithSameCarWaybill_Node0{"The system checks for additional
records"}:::decision N_CheckforAdditionalRecordswithSameCarWaybill_Node0_action["All cargo records with the same car
ID and waybill are identified for
processing"]:::main N_CheckforAdditionalRecordswithSameCarWaybill_Node0 -- Yes --> N_CheckforAdditionalRecordswithSameCarWaybill_Node0_action N_CheckforAdditionalRecordswithSameCarWaybill_Node0_action --> E_CheckforAdditionalRecordswithSameCarWaybill S_CheckforAdditionalRecordswithSameCarWaybill --> N_CheckforAdditionalRecordswithSameCarWaybill_Node0 N_CheckforAdditionalRecordswithSameCarWaybill_Node0 -- No --> E_CheckforAdditionalRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: A first cargo record has been retrieved for a car ID and waybill
WHEN: The system checks for additional records
THEN:
  • All cargo records with the same car id
  • Waybill are identified for processing
βœ“ Consolidated Acceptance Criteria
  • The system processes CPRS cargo → special CPRS business rules are applied including carrier validation and record creation 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_HandleCPRSSpecialProcessing(["Start Step"]) E_HandleCPRSSpecialProcessing(["End Step"]) N_HandleCPRSSpecialProcessing_Node0{"The system processes CPRS cargo"}:::decision N_HandleCPRSSpecialProcessing_Node0_action["Special CPRS business rules are
applied including carrier validation
and record creation logic"]:::main N_HandleCPRSSpecialProcessing_Node0 -- Yes --> N_HandleCPRSSpecialProcessing_Node0_action N_HandleCPRSSpecialProcessing_Node0_action --> E_HandleCPRSSpecialProcessing S_HandleCPRSSpecialProcessing --> N_HandleCPRSSpecialProcessing_Node0 N_HandleCPRSSpecialProcessing_Node0 -- No --> E_HandleCPRSSpecialProcessing
File: GCX016E.cbl
GIVEN: Traffic has been identified as CPRS type
WHEN: The system processes CPRS cargo
THEN:
  • Special cprs business rules are applied including carrier validation
  • Record creation logic
βœ“ Consolidated Acceptance Criteria
  • The system validates the carrier information → sCAC is validated against carrier database and unknown scenarios are handled 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_CheckSCACUnknownScenarios(["Start Step"]) E_CheckSCACUnknownScenarios(["End Step"]) N_CheckSCACUnknownScenarios_Node0{"The system validates the carrier
information"}:::decision N_CheckSCACUnknownScenarios_Node0_action["SCAC is validated against carrier
database and unknown scenarios are
handled appropriately"]:::main N_CheckSCACUnknownScenarios_Node0 -- Yes --> N_CheckSCACUnknownScenarios_Node0_action N_CheckSCACUnknownScenarios_Node0_action --> E_CheckSCACUnknownScenarios S_CheckSCACUnknownScenarios --> N_CheckSCACUnknownScenarios_Node0 N_CheckSCACUnknownScenarios_Node0 -- No --> E_CheckSCACUnknownScenarios
File: GCX016E.cbl
GIVEN: CPRS traffic is being processed
WHEN: The system validates the carrier information
THEN:
  • Scac is validated against carrier database
  • Unknown scenarios are handled appropriately
βœ“ Consolidated Acceptance Criteria
  • The system processes the CCN key → uS-CCN key is renumbered according to CPRS business rules to ensure unique identification
  • US-CCN key renumbering is performed → the system creates an updated lookup key using CPRS-specific numbering rules
  • The system performs US-CCN key renumbering process → the cargo records are updated with proper CCN keys for accurate cargo tracking
  • The system performs US-CCN key renumbering → the system updates the US-CCN key index to create a new searchable 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_PerformUSCCNKeyRenumbering(["Start Step"]) E_PerformUSCCNKeyRenumbering(["End Step"]) N_PerformUSCCNKeyRenumbering_Node0{"The system processes the CCN key"}:::decision N_PerformUSCCNKeyRenumbering_Node0_action["US-CCN key is renumbered according
to CPRS business rules to ensure
unique identification"]:::main N_PerformUSCCNKeyRenumbering_Node0 -- Yes --> N_PerformUSCCNKeyRenumbering_Node0_action N_PerformUSCCNKeyRenumbering_Node0_action --> E_PerformUSCCNKeyRenumbering S_PerformUSCCNKeyRenumbering --> N_PerformUSCCNKeyRenumbering_Node0 N_PerformUSCCNKeyRenumbering_Node1{"US-CCN key renumbering is performed"}:::decision N_PerformUSCCNKeyRenumbering_Node1_action["The system creates an updated
lookup key using CPRS-specific
numbering rules"]:::main N_PerformUSCCNKeyRenumbering_Node1 -- Yes --> N_PerformUSCCNKeyRenumbering_Node1_action N_PerformUSCCNKeyRenumbering_Node1_action --> E_PerformUSCCNKeyRenumbering N_PerformUSCCNKeyRenumbering_Node0 -- No --> N_PerformUSCCNKeyRenumbering_Node1 N_PerformUSCCNKeyRenumbering_Node2{"The system performs US-CCN key
renumbering process"}:::decision N_PerformUSCCNKeyRenumbering_Node2_action["The cargo records are updated with
proper CCN keys for accurate cargo
tracking"]:::main N_PerformUSCCNKeyRenumbering_Node2 -- Yes --> N_PerformUSCCNKeyRenumbering_Node2_action N_PerformUSCCNKeyRenumbering_Node2_action --> E_PerformUSCCNKeyRenumbering N_PerformUSCCNKeyRenumbering_Node1 -- No --> N_PerformUSCCNKeyRenumbering_Node2 N_PerformUSCCNKeyRenumbering_Node3{"The system performs US-CCN key
renumbering"}:::decision N_PerformUSCCNKeyRenumbering_Node3_action["The system updates the US-CCN key
index to create a new searchable key"]:::main N_PerformUSCCNKeyRenumbering_Node3 -- Yes --> N_PerformUSCCNKeyRenumbering_Node3_action N_PerformUSCCNKeyRenumbering_Node3_action --> E_PerformUSCCNKeyRenumbering N_PerformUSCCNKeyRenumbering_Node2 -- No --> N_PerformUSCCNKeyRenumbering_Node3 N_PerformUSCCNKeyRenumbering_Node3 -- No --> E_PerformUSCCNKeyRenumbering
File: GCX016E.cbl
GIVEN: CPRS cargo requires key renumbering due to SCAC validation results
WHEN: The system processes the CCN key
THEN: US-CCN key is renumbered according to CPRS business rules to ensure unique identification
File: GCX016E.cbl
GIVEN: CPRS traffic requires special key handling
WHEN: US-CCN key renumbering is performed
THEN: The system creates an updated lookup key using CPRS-specific numbering rules
File: GCX016E.cbl
GIVEN: Cargo records require CCN key renumbering due to SCAC unknown scenarios
WHEN: The system performs US-CCN key renumbering process
THEN: The cargo records are updated with proper CCN keys for accurate cargo tracking
File: GCX016E.cbl
GIVEN: A cargo record has been found but SCAC is marked as unknown
WHEN: The system performs US-CCN key renumbering
THEN: The system updates the US-CCN key index to create a new searchable key
βœ“ Consolidated Acceptance Criteria
  • If record creation requirements → system determines if a new cargo record should be created based on 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_CreateNewRecord(["Start Step"]) E_CreateNewRecord(["End Step"]) N_CreateNewRecord_Node0{"The system evaluates record
creation requirements"}:::decision N_CreateNewRecord_Node0_action["System determines if a new cargo
record should be created based on
business rules"]:::main N_CreateNewRecord_Node0 -- Yes --> N_CreateNewRecord_Node0_action N_CreateNewRecord_Node0_action --> E_CreateNewRecord S_CreateNewRecord --> N_CreateNewRecord_Node0 N_CreateNewRecord_Node0 -- No --> E_CreateNewRecord
File: GCX016E.cbl
GIVEN: No existing cargo records were found and traffic type has been determined
WHEN: The system evaluates record creation requirements
THEN: System determines if a new cargo record should be created based on business rules
βœ“ Consolidated Acceptance Criteria
  • The system creates the cargo record → new foreign cargo record is created with standard business attributes 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_CreateNewForeignCargoRecord(["Start Step"]) E_CreateNewForeignCargoRecord(["End Step"]) N_CreateNewForeignCargoRecord_Node0{"The system creates the cargo record"}:::decision N_CreateNewForeignCargoRecord_Node0_action["New foreign cargo record is created
with standard business attributes
and processing rules"]:::main N_CreateNewForeignCargoRecord_Node0 -- Yes --> N_CreateNewForeignCargoRecord_Node0_action N_CreateNewForeignCargoRecord_Node0_action --> E_CreateNewForeignCargoRecord S_CreateNewForeignCargoRecord --> N_CreateNewForeignCargoRecord_Node0 N_CreateNewForeignCargoRecord_Node0 -- No --> E_CreateNewForeignCargoRecord
File: GCX016E.cbl
GIVEN: A new record is required for non-CPRS foreign traffic
WHEN: The system creates the cargo record
THEN:
  • New foreign cargo record is created with standard business attributes
  • Processing rules
βœ“ Consolidated Acceptance Criteria
  • The system initializes the record with segment data → record is populated with disposition codes from X4 segment and equipment data 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_InitializeNewRecordwithX4N7Data(["Start Step"]) E_InitializeNewRecordwithX4N7Data(["End Step"]) N_InitializeNewRecordwithX4N7Data_Node0{"The system initializes the record
with segment data"}:::decision N_InitializeNewRecordwithX4N7Data_Node0_action["Record is populated with
disposition codes from X4 segment
and equipment data from N7 segment"]:::main N_InitializeNewRecordwithX4N7Data_Node0 -- Yes --> N_InitializeNewRecordwithX4N7Data_Node0_action N_InitializeNewRecordwithX4N7Data_Node0_action --> E_InitializeNewRecordwithX4N7Data S_InitializeNewRecordwithX4N7Data --> N_InitializeNewRecordwithX4N7Data_Node0 N_InitializeNewRecordwithX4N7Data_Node0 -- No --> E_InitializeNewRecordwithX4N7Data
File: GCX016E.cbl
GIVEN: A new cargo record has been created
WHEN: The system initializes the record with segment data
THEN:
  • Record is populated with disposition codes from x4 segment
  • Equipment data from n7 segment
βœ“ Consolidated Acceptance Criteria
  • The system saves the record → new cargo record is inserted into the cargo database and becomes available for processing
  • The record is ready for database storage → the system inserts the new record into the US cargo root 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_InsertNewRecordintoDatabase(["Start Step"]) E_InsertNewRecordintoDatabase(["End Step"]) N_InsertNewRecordintoDatabase_Node0{"The system saves the record"}:::decision N_InsertNewRecordintoDatabase_Node0_action["New cargo record is inserted into
the cargo database and becomes
available for processing"]:::main N_InsertNewRecordintoDatabase_Node0 -- Yes --> N_InsertNewRecordintoDatabase_Node0_action N_InsertNewRecordintoDatabase_Node0_action --> E_InsertNewRecordintoDatabase S_InsertNewRecordintoDatabase --> N_InsertNewRecordintoDatabase_Node0 N_InsertNewRecordintoDatabase_Node1{"The record is ready for database
storage"}:::decision N_InsertNewRecordintoDatabase_Node1_action["The system inserts the new record
into the US cargo root segments
database"]:::main N_InsertNewRecordintoDatabase_Node1 -- Yes --> N_InsertNewRecordintoDatabase_Node1_action N_InsertNewRecordintoDatabase_Node1_action --> E_InsertNewRecordintoDatabase N_InsertNewRecordintoDatabase_Node0 -- No --> N_InsertNewRecordintoDatabase_Node1 N_InsertNewRecordintoDatabase_Node1 -- No --> E_InsertNewRecordintoDatabase
File: GCX016E.cbl
GIVEN: A new cargo record has been created and initialized with segment data
WHEN: The system saves the record
THEN:
  • New cargo record is inserted into the cargo database
  • Becomes available for processing
File: GCX016E.cbl
GIVEN: A new CPRS cargo record has been fully initialized
WHEN: The record is ready for database storage
THEN: The system inserts the new record into the US cargo root segments database
βœ“ Consolidated Acceptance Criteria
  • The system completes the creation process → cargo creation action is logged with relevant business details for audit and tracking purposes
  • The system logs the creation activity → the system should record cargo creation action with timestamp, user information, and cargo details for audit trail purposes
  • The insertion operation completes successfully → the system should log the cargo creation action with relevant details and timestamps
  • The system completes cargo record creation → the cargo creation action is logged with appropriate details for audit trail and processing history 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_LogCargoCreationAction(["Start Step"]) E_LogCargoCreationAction(["End Step"]) N_LogCargoCreationAction_Node0{"The system completes the creation
process"}:::decision N_LogCargoCreationAction_Node0_action["Cargo creation action is logged
with relevant business details for
audit and tracking purposes"]:::main N_LogCargoCreationAction_Node0 -- Yes --> N_LogCargoCreationAction_Node0_action N_LogCargoCreationAction_Node0_action --> E_LogCargoCreationAction S_LogCargoCreationAction --> N_LogCargoCreationAction_Node0 N_LogCargoCreationAction_Node1{"the system logs the creation
activity"}:::decision N_LogCargoCreationAction_Node1_action["the system should record cargo
creation action with timestamp, user
information, and cargo details for
audit trail purposes"]:::main N_LogCargoCreationAction_Node1 -- Yes --> N_LogCargoCreationAction_Node1_action N_LogCargoCreationAction_Node1_action --> E_LogCargoCreationAction N_LogCargoCreationAction_Node0 -- No --> N_LogCargoCreationAction_Node1 N_LogCargoCreationAction_Node2{"The insertion operation completes
successfully"}:::decision N_LogCargoCreationAction_Node2_action["The system should log the cargo
creation action with relevant
details and timestamps"]:::main N_LogCargoCreationAction_Node2 -- Yes --> N_LogCargoCreationAction_Node2_action N_LogCargoCreationAction_Node2_action --> E_LogCargoCreationAction N_LogCargoCreationAction_Node1 -- No --> N_LogCargoCreationAction_Node2 N_LogCargoCreationAction_Node3{"The system completes cargo record
creation"}:::decision N_LogCargoCreationAction_Node3_action["The cargo creation action is logged
with appropriate details for audit
trail and processing history
tracking"]:::main N_LogCargoCreationAction_Node3 -- Yes --> N_LogCargoCreationAction_Node3_action N_LogCargoCreationAction_Node3_action --> E_LogCargoCreationAction N_LogCargoCreationAction_Node2 -- No --> N_LogCargoCreationAction_Node3 N_LogCargoCreationAction_Node3 -- No --> E_LogCargoCreationAction
File: GCX016E.cbl
GIVEN: A new cargo record has been successfully inserted into the database
WHEN: The system completes the creation process
THEN:
  • Cargo creation action is logged with relevant business details for audit
  • Tracking purposes
File: GCX016E.cbl
GIVEN: new cargo record has been successfully inserted into database
WHEN: the system logs the creation activity
THEN: the system should record cargo creation action with timestamp, user information, and cargo details for audit trail purposes
File: GCX016E.cbl
GIVEN: A new cargo record has been successfully inserted into the database
WHEN: The insertion operation completes successfully
THEN:
  • The system should log the cargo creation action with relevant details
  • Timestamps
File: GCX016E.cbl
GIVEN: A new foreign cargo record has been successfully inserted into the database
WHEN: The system completes cargo record creation
THEN:
  • The cargo creation action is logged with appropriate details for audit trail
  • Processing history tracking
βœ“ Consolidated Acceptance Criteria
  • The system completes the car/waybill database search → cargo record is returned to the calling process for disposition code processing and status updates
  • The lookup process is complete → the system returns the cargo record to the calling process for further 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_ReturnCargoRecordforProcessing(["Start Step"]) E_ReturnCargoRecordforProcessing(["End Step"]) N_ReturnCargoRecordforProcessing_Node0{"The system completes the carwaybill
database search"}:::decision N_ReturnCargoRecordforProcessing_Node0_action["Cargo record is returned to the
calling process for disposition code
processing and status updates"]:::main N_ReturnCargoRecordforProcessing_Node0 -- Yes --> N_ReturnCargoRecordforProcessing_Node0_action N_ReturnCargoRecordforProcessing_Node0_action --> E_ReturnCargoRecordforProcessing S_ReturnCargoRecordforProcessing --> N_ReturnCargoRecordforProcessing_Node0 N_ReturnCargoRecordforProcessing_Node1{"The lookup process is complete"}:::decision N_ReturnCargoRecordforProcessing_Node1_action["The system returns the cargo record
to the calling process for further
business operations"]:::main N_ReturnCargoRecordforProcessing_Node1 -- Yes --> N_ReturnCargoRecordforProcessing_Node1_action N_ReturnCargoRecordforProcessing_Node1_action --> E_ReturnCargoRecordforProcessing N_ReturnCargoRecordforProcessing_Node0 -- No --> N_ReturnCargoRecordforProcessing_Node1 N_ReturnCargoRecordforProcessing_Node1 -- No --> E_ReturnCargoRecordforProcessing
File: GCX016E.cbl
GIVEN: A cargo record has been found or created through the search process
WHEN: The system completes the car/waybill database search
THEN:
  • Cargo record is returned to the calling process for disposition code processing
  • Status updates
File: GCX016E.cbl
GIVEN: A cargo record has been found or created successfully
WHEN: The lookup process is complete
THEN: The system returns the cargo record to the calling process for further business operations
βœ“ Consolidated Acceptance Criteria
  • The system checks for SCAC code availability → if SCAC code is available, use existing SCAC code, otherwise set SCAC as unknown
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SCACCodeAvailable(["Start Step"]) E_SCACCodeAvailable(["End Step"]) N_SCACCodeAvailable_Node0{"the system checks for SCAC code
availability"}:::decision N_SCACCodeAvailable_Node0_action["if SCAC code is available, use
existing SCAC code, otherwise set
SCAC as unknown"]:::main N_SCACCodeAvailable_Node0 -- Yes --> N_SCACCodeAvailable_Node0_action N_SCACCodeAvailable_Node0_action --> E_SCACCodeAvailable S_SCACCodeAvailable --> N_SCACCodeAvailable_Node0 N_SCACCodeAvailable_Node0 -- No --> E_SCACCodeAvailable
File: GCX016E.cbl
GIVEN: CPRS traffic has been identified for processing
WHEN: the system checks for SCAC code availability
THEN: if SCAC code is available, use existing SCAC code, otherwise set SCAC as unknown
βœ“ Consolidated Acceptance Criteria
  • The system searches for cargo records using car ID → retrieve matching cargo records based on car identification number
  • The system performs initial cargo search using the car ID → the system queries the cargo database 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_SearchCargobyCarID(["Start Step"]) E_SearchCargobyCarID(["End Step"]) N_SearchCargobyCarID_Node0{"the system searches for cargo
records using car ID"}:::decision N_SearchCargobyCarID_Node0_action["retrieve matching cargo records
based on car identification number"]:::main N_SearchCargobyCarID_Node0 -- Yes --> N_SearchCargobyCarID_Node0_action N_SearchCargobyCarID_Node0_action --> E_SearchCargobyCarID S_SearchCargobyCarID --> N_SearchCargobyCarID_Node0 N_SearchCargobyCarID_Node1{"The system performs initial cargo
search using the car ID"}:::decision N_SearchCargobyCarID_Node1_action["The system queries the cargo
database to find matching cargo
records"]:::main N_SearchCargobyCarID_Node1 -- Yes --> N_SearchCargobyCarID_Node1_action N_SearchCargobyCarID_Node1_action --> E_SearchCargobyCarID N_SearchCargobyCarID_Node0 -- No --> N_SearchCargobyCarID_Node1 N_SearchCargobyCarID_Node1 -- No --> E_SearchCargobyCarID
File: GCX016E.cbl
GIVEN: CPRS traffic processing is initiated and SCAC code status is determined
WHEN: the system searches for cargo records using car ID
THEN: retrieve matching cargo records based on car identification number
File: GCX016E.cbl
GIVEN: A car ID is provided for cargo lookup
WHEN: The system performs initial cargo search using the car ID
THEN: The system queries the cargo database to find matching cargo records
βœ“ Consolidated Acceptance Criteria
  • If US-CCN key renumbering requirements → if renumbering is needed, renumber US-CCN key, otherwise keep original 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_USCCNKeyRenumberingNeeded(["Start Step"]) E_USCCNKeyRenumberingNeeded(["End Step"]) N_USCCNKeyRenumberingNeeded_Node0{"the system evaluates US-CCN key
renumbering requirements"}:::decision N_USCCNKeyRenumberingNeeded_Node0_action["if renumbering is needed, renumber
US-CCN key, otherwise keep original
US-CCN key"]:::main N_USCCNKeyRenumberingNeeded_Node0 -- Yes --> N_USCCNKeyRenumberingNeeded_Node0_action N_USCCNKeyRenumberingNeeded_Node0_action --> E_USCCNKeyRenumberingNeeded S_USCCNKeyRenumberingNeeded --> N_USCCNKeyRenumberingNeeded_Node0 N_USCCNKeyRenumberingNeeded_Node0 -- No --> E_USCCNKeyRenumberingNeeded
File: GCX016E.cbl
GIVEN: no existing cargo record was found and US-CCN key requirements are being checked
WHEN: the system evaluates US-CCN key renumbering requirements
THEN: if renumbering is needed, renumber US-CCN key, otherwise keep original US-CCN key
βœ“ Consolidated Acceptance Criteria
  • The system performs key renumbering → generate new US-CCN key value and update 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_RenumberUSCCNKey(["Start Step"]) E_RenumberUSCCNKey(["End Step"]) N_RenumberUSCCNKey_Node0{"the system performs key renumbering"}:::decision N_RenumberUSCCNKey_Node0_action["generate new US-CCN key value and
update cargo identification"]:::main N_RenumberUSCCNKey_Node0 -- Yes --> N_RenumberUSCCNKey_Node0_action N_RenumberUSCCNKey_Node0_action --> E_RenumberUSCCNKey S_RenumberUSCCNKey --> N_RenumberUSCCNKey_Node0 N_RenumberUSCCNKey_Node0 -- No --> E_RenumberUSCCNKey
File: GCX016E.cbl
GIVEN: US-CCN key renumbering has been determined as necessary
WHEN: the system performs key renumbering
THEN:
  • Generate new us-ccn key value
  • Update cargo identification
βœ“ Consolidated Acceptance Criteria
  • The system applies CPRS-specific cargo creation rules → enforce CPRS business rules and validation requirements for cargo 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_ApplyCPRSCargoCreationRules(["Start Step"]) E_ApplyCPRSCargoCreationRules(["End Step"]) N_ApplyCPRSCargoCreationRules_Node0{"the system applies CPRS-specific
cargo creation rules"}:::decision N_ApplyCPRSCargoCreationRules_Node0_action["enforce CPRS business rules and
validation requirements for cargo
creation"]:::main N_ApplyCPRSCargoCreationRules_Node0 -- Yes --> N_ApplyCPRSCargoCreationRules_Node0_action N_ApplyCPRSCargoCreationRules_Node0_action --> E_ApplyCPRSCargoCreationRules S_ApplyCPRSCargoCreationRules --> N_ApplyCPRSCargoCreationRules_Node0 N_ApplyCPRSCargoCreationRules_Node0 -- No --> E_ApplyCPRSCargoCreationRules
File: GCX016E.cbl
GIVEN: US-CCN key processing is complete for new CPRS cargo
WHEN: the system applies CPRS-specific cargo creation rules
THEN:
  • Enforce cprs business rules
  • Validation requirements for cargo creation
βœ“ Consolidated Acceptance Criteria
  • The system initializes CPRS-specific fields → set default values and initialize all CPRS-required 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_InitializeCPRSSpecificFields(["Start Step"]) E_InitializeCPRSSpecificFields(["End Step"]) N_InitializeCPRSSpecificFields_Node0{"the system initializes
CPRS-specific fields"}:::decision N_InitializeCPRSSpecificFields_Node0_action["set default values and initialize
all CPRS-required data fields"]:::main N_InitializeCPRSSpecificFields_Node0 -- Yes --> N_InitializeCPRSSpecificFields_Node0_action N_InitializeCPRSSpecificFields_Node0_action --> E_InitializeCPRSSpecificFields S_InitializeCPRSSpecificFields --> N_InitializeCPRSSpecificFields_Node0 N_InitializeCPRSSpecificFields_Node0 -- No --> E_InitializeCPRSSpecificFields
File: GCX016E.cbl
GIVEN: new CPRS cargo record has been created
WHEN: the system initializes CPRS-specific fields
THEN:
  • Set default values
  • Initialize all cprs-required data fields
βœ“ Consolidated Acceptance Criteria
  • The system sets CPRS processing flags → activate flags that control CPRS-specific processing behavior throughout 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_SetCPRSProcessingFlags(["Start Step"]) E_SetCPRSProcessingFlags(["End Step"]) N_SetCPRSProcessingFlags_Node0{"the system sets CPRS processing
flags"}:::decision N_SetCPRSProcessingFlags_Node0_action["activate flags that control
CPRS-specific processing behavior
throughout the system"]:::main N_SetCPRSProcessingFlags_Node0 -- Yes --> N_SetCPRSProcessingFlags_Node0_action N_SetCPRSProcessingFlags_Node0_action --> E_SetCPRSProcessingFlags S_SetCPRSProcessingFlags --> N_SetCPRSProcessingFlags_Node0 N_SetCPRSProcessingFlags_Node0 -- No --> E_SetCPRSProcessingFlags
File: GCX016E.cbl
GIVEN: CPRS-specific fields have been initialized
WHEN: the system sets CPRS processing flags
THEN: activate flags that control CPRS-specific processing behavior throughout the system
βœ“ Consolidated Acceptance Criteria
  • The system logs CPRS special processing → create audit trail entries documenting CPRS-specific processing actions and 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_LogCPRSSpecialProcessing(["Start Step"]) E_LogCPRSSpecialProcessing(["End Step"]) N_LogCPRSSpecialProcessing_Node0{"the system logs CPRS special
processing"}:::decision N_LogCPRSSpecialProcessing_Node0_action["create audit trail entries
documenting CPRS-specific processing
actions and decisions"]:::main N_LogCPRSSpecialProcessing_Node0 -- Yes --> N_LogCPRSSpecialProcessing_Node0_action N_LogCPRSSpecialProcessing_Node0_action --> E_LogCPRSSpecialProcessing S_LogCPRSSpecialProcessing --> N_LogCPRSSpecialProcessing_Node0 N_LogCPRSSpecialProcessing_Node0 -- No --> E_LogCPRSSpecialProcessing
File: GCX016E.cbl
GIVEN: CPRS processing flags have been configured
WHEN: the system logs CPRS special processing
THEN:
  • Create audit trail entries documenting cprs-specific processing actions
  • Decisions
βœ“ Consolidated Acceptance Criteria
  • The system searches for the cargo record in the database → if the cargo record is found, proceed with processing; if not found, generate an error message indicating cargo not available
  • The system searches for the cargo in the database → the system determines if the cargo 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_CargoFoundinSystem(["Start Step"]) E_CargoFoundinSystem(["End Step"]) N_CargoFoundinSystem_Node0{"The system searches for the cargo
record in the database"}:::decision N_CargoFoundinSystem_Node0_action["If the cargo record is found,
proceed with processing if not
found, generate an error message
indicating cargo not available"]:::main N_CargoFoundinSystem_Node0 -- Yes --> N_CargoFoundinSystem_Node0_action N_CargoFoundinSystem_Node0_action --> E_CargoFoundinSystem S_CargoFoundinSystem --> N_CargoFoundinSystem_Node0 N_CargoFoundinSystem_Node1{"The system searches for the cargo
in the database"}:::decision N_CargoFoundinSystem_Node1_action["The system determines if the cargo
exists and routes to appropriate
processing path"]:::main N_CargoFoundinSystem_Node1 -- Yes --> N_CargoFoundinSystem_Node1_action N_CargoFoundinSystem_Node1_action --> E_CargoFoundinSystem N_CargoFoundinSystem_Node0 -- No --> N_CargoFoundinSystem_Node1 N_CargoFoundinSystem_Node1 -- No --> E_CargoFoundinSystem
File: GCX016E.cbl
GIVEN: A cargo CCN (Container Control Number) is provided for processing
WHEN: The system searches for the cargo record in the database
THEN: If the cargo record is found, proceed with processing; if not found, generate an error message indicating cargo not available
File: GCX016E.cbl
GIVEN: A CPRS cargo lookup request is initiated
WHEN: The system searches for the cargo in the database
THEN:
  • The system determines if the cargo exists
  • Routes to appropriate processing path
βœ“ Consolidated Acceptance Criteria
  • The system validates the disposition code against the DC table → if the disposition code exists in the DC table, continue processing; if not found, generate an error message for invalid 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_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 exists in
the DC table, continue processing if
not found, generate an error message
for invalid disposition code"]:::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: GCX016E.cbl
GIVEN: A disposition code is received for cargo processing
WHEN: The system validates the disposition code against the DC table
THEN: If the disposition code exists in the DC table, continue processing; if not found, generate an error message for invalid disposition code
βœ“ Consolidated Acceptance Criteria
  • The system searches the existing status array for the same disposition code with matching entry number and quantity → if an exact duplicate is found, skip processing and continue; if no duplicate exists, proceed with adding the disposition code
  • If whether any duplicate conditions were identified during the search → if any duplicate was found (exact or temporal), set duplicate detection flag and prepare duplicate handling, otherwise return no duplicate 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_DuplicateFound(["Start Step"]) E_DuplicateFound(["End Step"]) N_DuplicateFound_Node0{"The system searches the existing
status array for the same
disposition code with matching entry
number and quantity"}:::decision N_DuplicateFound_Node0_action["If an exact duplicate is found,
skip processing and continue if no
duplicate exists, proceed with
adding the disposition code"]:::main N_DuplicateFound_Node0 -- Yes --> N_DuplicateFound_Node0_action N_DuplicateFound_Node0_action --> E_DuplicateFound S_DuplicateFound --> N_DuplicateFound_Node0 N_DuplicateFound_Node1{"The system evaluates whether any
duplicate conditions were identified
during the search"}:::decision N_DuplicateFound_Node1_action["If any duplicate was found exact or
temporal, set duplicate detection
flag and prepare duplicate handling,
otherwise return no duplicate status"]:::main N_DuplicateFound_Node1 -- Yes --> N_DuplicateFound_Node1_action N_DuplicateFound_Node1_action --> E_DuplicateFound N_DuplicateFound_Node0 -- No --> N_DuplicateFound_Node1 N_DuplicateFound_Node1 -- No --> E_DuplicateFound
File: GCX016E.cbl
GIVEN: A disposition code is being added to a cargo's status array
WHEN:
  • The system searches the existing status array for the same disposition code with matching entry number
  • Quantity
THEN:
  • If an exact duplicate is found, skip processing
  • Continue; if no duplicate exists, proceed with adding the disposition code
File: GCX016E.cbl
GIVEN: Completed search through status array with duplicate detection flags
WHEN: The system evaluates whether any duplicate conditions were identified during the search
THEN:
  • If any duplicate was found (exact or temporal), set duplicate detection flag
  • Prepare duplicate handling, otherwise return no duplicate status
βœ“ Consolidated Acceptance Criteria
  • The system processes the counterpart removal logic → remove all counterpart disposition codes from the status array before adding the new disposition code
  • The system identifies counterpart codes that conflict with the new code → all conflicting counterpart codes are 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 the
counterpart removal logic"}:::decision N_RemoveCounterpartCodes_Node0_action["Remove all counterpart disposition
codes from the status array before
adding the new disposition code"]:::main N_RemoveCounterpartCodes_Node0 -- Yes --> N_RemoveCounterpartCodes_Node0_action N_RemoveCounterpartCodes_Node0_action --> E_RemoveCounterpartCodes S_RemoveCounterpartCodes --> N_RemoveCounterpartCodes_Node0 N_RemoveCounterpartCodes_Node1{"The system identifies counterpart
codes that conflict with the new
code"}:::decision N_RemoveCounterpartCodes_Node1_action["All conflicting counterpart codes
are 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: GCX016E.cbl
GIVEN: A new disposition code is being added that has defined counterpart codes in the DC table
WHEN: The system processes the counterpart removal logic
THEN: Remove all counterpart disposition codes from the status array before adding the new disposition code
File: GCX016E.cbl
GIVEN: A new hold or release code is being added to the status array
WHEN: The system identifies counterpart codes that conflict with the new code
THEN: All conflicting counterpart codes are removed from the status array before adding the new code
βœ“ Consolidated Acceptance Criteria
  • If all disposition codes in the status array to determine the final cargo status → if the evaluated status differs from the current cargo status, proceed with status update; otherwise, complete processing without 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_StatusChangeRequired(["Start Step"]) E_StatusChangeRequired(["End Step"]) N_StatusChangeRequired_Node0{"The system evaluates all
disposition codes in the status
array to determine the final cargo
status"}:::decision N_StatusChangeRequired_Node0_action["If the evaluated status differs
from the current cargo status,
proceed with status update
otherwise, complete processing
without changes"]:::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: GCX016E.cbl
GIVEN: Disposition codes have been processed and the status array is updated
WHEN: The system evaluates all disposition codes in the status array to determine the final cargo status
THEN: If the evaluated status differs from the current cargo status, proceed with status update; otherwise, complete processing without changes
βœ“ Consolidated Acceptance Criteria
  • The system calculates the total released quantity by summing all release quantities from disposition codes → update the cargo's released quantity field with the calculated total and determine if the cargo is fully released, partially released, or held
  • The system calculates release quantities → the system computes total cargo quantity, currently released quantity, remaining hold quantity, and validates quantity consistency across all disposition codes
  • The system calculates release quantities → release quantities are calculated based on the disposition code quantity, existing released quantities, and total cargo quantities with validation that release does not exceed available quantities
  • Release quantity calculation occurs → all release quantities from disposition codes are summed to determine total released amount
  • The system prepares release notification details → the system calculates and formats the total released quantities for inclusion in the notification message
  • The system processes the release quantities → the system calculates the total released quantity based on the manual release disposition and updates the cargo record with the new released 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_CalculateReleaseQuantities(["Start Step"]) E_CalculateReleaseQuantities(["End Step"]) N_CalculateReleaseQuantities_Node0{"The system calculates the total
released quantity by summing all
release quantities from disposition
codes"}:::decision N_CalculateReleaseQuantities_Node0_action["Update the cargo s released
quantity field with the calculated
total and determine if the cargo is
fully released, partially released,
or held"]:::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 calculates release
quantities"}:::decision N_CalculateReleaseQuantities_Node1_action["The system computes total cargo
quantity, currently released
quantity, remaining hold quantity,
and validates quantity consistency
across all disposition codes"]:::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{"The system calculates release
quantities"}:::decision N_CalculateReleaseQuantities_Node2_action["Release quantities are calculated
based on the disposition code
quantity, existing released
quantities, and total cargo
quantities with validation that
release does not exceed available
quantities"]:::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 quantity calculation occurs"}:::decision N_CalculateReleaseQuantities_Node3_action["All release quantities from
disposition codes are summed to
determine total released amount"]:::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 prepares release
notification details"}:::decision N_CalculateReleaseQuantities_Node4_action["The system calculates and formats
the total released quantities for
inclusion in the notification
message"]:::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 the release
quantities"}:::decision N_CalculateReleaseQuantities_Node5_action["The system calculates the total
released quantity based on the
manual release disposition and
updates the cargo record with the
new released amount"]:::main N_CalculateReleaseQuantities_Node5 -- Yes --> N_CalculateReleaseQuantities_Node5_action N_CalculateReleaseQuantities_Node5_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node4 -- No --> N_CalculateReleaseQuantities_Node5 N_CalculateReleaseQuantities_Node5 -- No --> E_CalculateReleaseQuantities
File: GCX016E.cbl
GIVEN: The cargo has release disposition codes in its status array
WHEN: The system calculates the total released quantity by summing all release quantities from disposition codes
THEN:
  • Update the cargo's released quantity field with the calculated total
  • Determine if the cargo is fully released, partially released, or held
File: GCX016E.cbl
GIVEN: A cargo with disposition codes containing quantity information
WHEN: The system calculates release quantities
THEN: The system computes total cargo quantity, currently released quantity, remaining hold quantity, and validates quantity consistency across all disposition codes
File: GCX016E.cbl
GIVEN: A release disposition code is being processed
WHEN: The system calculates release quantities
THEN: Release quantities are calculated based on the disposition code quantity, existing released quantities, and total cargo quantities with validation that release does not exceed available quantities
File: GCX016E.cbl
GIVEN: Final status has been determined
WHEN: Release quantity calculation occurs
THEN: All release quantities from disposition codes are summed to determine total released amount
File: GCX016E.cbl
GIVEN: Cargo records are confirmed as released
WHEN: The system prepares release notification details
THEN:
  • The system calculates
  • Formats the total released quantities for inclusion in the notification message
File: GCX016E.cbl
GIVEN: A cargo has been set to released status through manual release
WHEN: The system processes the release quantities
THEN:
  • The system calculates the total released quantity based on the manual release disposition
  • Updates the cargo record with the new released amount
βœ“ Consolidated Acceptance Criteria
  • If hold codes for border holds, destination holds, or FDA holds → set the corresponding hold flags (held at border, held at destination, held for FDA) and update the cargo status to reflect the 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_SetHoldFlags(["Start Step"]) E_SetHoldFlags(["End Step"]) N_SetHoldFlags_Node0{"The system evaluates hold codes for
border holds, destination holds, or
FDA holds"}:::decision N_SetHoldFlags_Node0_action["Set the corresponding hold flags
held at border, held at destination,
held for FDA and update the cargo
status to reflect the hold condition"]:::main N_SetHoldFlags_Node0 -- Yes --> N_SetHoldFlags_Node0_action N_SetHoldFlags_Node0_action --> E_SetHoldFlags S_SetHoldFlags --> N_SetHoldFlags_Node0 N_SetHoldFlags_Node0 -- No --> E_SetHoldFlags
File: GCX016E.cbl
GIVEN: The cargo has hold disposition codes in its status array
WHEN: The system evaluates hold codes for border holds, destination holds, or FDA holds
THEN: Set the corresponding hold flags (held at border, held at destination, held for FDA) and update the cargo status to reflect the hold condition
βœ“ Consolidated Acceptance Criteria
  • The system validates that the release quantity meets or exceeds the cargo quantity → set the released flag to true and update the cargo status to RELSD (Released) or HOLDPCS (Hold Pieces) based on partial release 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_SetReleaseFlags(["Start Step"]) E_SetReleaseFlags(["End Step"]) N_SetReleaseFlags_Node0{"The system validates that the
release quantity meets or exceeds
the cargo quantity"}:::decision N_SetReleaseFlags_Node0_action["Set the released flag to true and
update the cargo status to RELSD
Released or HOLDPCS Hold Pieces
based on partial release conditions"]:::main N_SetReleaseFlags_Node0 -- Yes --> N_SetReleaseFlags_Node0_action N_SetReleaseFlags_Node0_action --> E_SetReleaseFlags S_SetReleaseFlags --> N_SetReleaseFlags_Node0 N_SetReleaseFlags_Node0 -- No --> E_SetReleaseFlags
File: GCX016E.cbl
GIVEN: The cargo has release disposition codes in its status array
WHEN: The system validates that the release quantity meets or exceeds the cargo quantity
THEN:
  • Set the released flag to true
  • Update the cargo status to relsd (released) or holdpcs (hold pieces) based on partial release conditions
βœ“ Consolidated Acceptance Criteria
  • The system processes the proceed status → update the cargo's in-bond information including broker details, bond numbers, and entry information, and set the cargo status to 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_ProcessInBondEntry(["Start Step"]) E_ProcessInBondEntry(["End Step"]) N_ProcessInBondEntry_Node0{"The system processes the proceed
status"}:::decision N_ProcessInBondEntry_Node0_action["Update the cargo s in-bond
information including broker
details, bond numbers, and entry
information, and set the cargo
status to PROCEED"]:::main N_ProcessInBondEntry_Node0 -- Yes --> N_ProcessInBondEntry_Node0_action N_ProcessInBondEntry_Node0_action --> E_ProcessInBondEntry S_ProcessInBondEntry --> N_ProcessInBondEntry_Node0 N_ProcessInBondEntry_Node0 -- No --> E_ProcessInBondEntry
File: GCX016E.cbl
GIVEN: The cargo has a proceed disposition code and entry type is 61, 62, 63, or 69
WHEN: The system processes the proceed status
THEN: Update the cargo's in-bond information including broker details, bond numbers, and entry information, and set the cargo status to PROCEED
βœ“ Consolidated Acceptance Criteria
  • The system processes arrival or export status changes → for arrival codes, set arrival flag and update arrival date; for export codes, set export flag and clear destination index; update cargo status to ARRIVAL or EXPORT 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_UpdateArrivalExportFlags(["Start Step"]) E_UpdateArrivalExportFlags(["End Step"]) N_UpdateArrivalExportFlags_Node0{"The system processes arrival or
export status changes"}:::decision N_UpdateArrivalExportFlags_Node0_action["For arrival codes, set arrival flag
and update arrival date for export
codes, set export flag and clear
destination index update cargo
status to ARRIVAL or EXPORT
accordingly"]:::main N_UpdateArrivalExportFlags_Node0 -- Yes --> N_UpdateArrivalExportFlags_Node0_action N_UpdateArrivalExportFlags_Node0_action --> E_UpdateArrivalExportFlags S_UpdateArrivalExportFlags --> N_UpdateArrivalExportFlags_Node0 N_UpdateArrivalExportFlags_Node0 -- No --> E_UpdateArrivalExportFlags
File: GCX016E.cbl
GIVEN: The cargo has arrival or export disposition codes in its status array
WHEN: The system processes arrival or export status changes
THEN:
  • For arrival codes, set arrival flag
  • Update arrival date; for export codes, set export flag
  • Clear destination index; update cargo status to arrival or export accordingly
βœ“ Consolidated Acceptance Criteria
  • The system determines notification requirements based on the status change and freight forwarder setup → generate Merlin messages for brokers, send email notifications to freight forwarders if configured, and make IIS calls for equipment tracking as appropriate
  • The system generates status notifications → the system creates Merlin messages, email notifications, or system alerts based on the status change and notification 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_GenerateStatusNotifications(["Start Step"]) E_GenerateStatusNotifications(["End Step"]) N_GenerateStatusNotifications_Node0{"The system determines notification
requirements based on the status
change and freight forwarder setup"}:::decision N_GenerateStatusNotifications_Node0_action["Generate Merlin messages for
brokers, send email notifications to
freight forwarders if configured,
and make IIS calls for equipment
tracking as appropriate"]:::main N_GenerateStatusNotifications_Node0 -- Yes --> N_GenerateStatusNotifications_Node0_action N_GenerateStatusNotifications_Node0_action --> E_GenerateStatusNotifications S_GenerateStatusNotifications --> N_GenerateStatusNotifications_Node0 N_GenerateStatusNotifications_Node1{"The system generates status
notifications"}:::decision N_GenerateStatusNotifications_Node1_action["The system creates Merlin messages,
email notifications, or system
alerts based on the status change
and notification requirements"]:::main N_GenerateStatusNotifications_Node1 -- Yes --> N_GenerateStatusNotifications_Node1_action N_GenerateStatusNotifications_Node1_action --> E_GenerateStatusNotifications N_GenerateStatusNotifications_Node0 -- No --> N_GenerateStatusNotifications_Node1 N_GenerateStatusNotifications_Node1 -- No --> E_GenerateStatusNotifications
File: GCX016E.cbl
GIVEN: A cargo status has been updated with new disposition codes
WHEN:
  • The system determines notification requirements based on the status change
  • Freight forwarder setup
THEN: Generate Merlin messages for brokers, send email notifications to freight forwarders if configured, and make IIS calls for equipment tracking as appropriate
File: GCX016E.cbl
GIVEN: A cargo with updated status information
WHEN: The system generates status notifications
THEN:
  • The system creates merlin messages, email notifications, or system alerts based on the status change
  • Notification requirements
βœ“ Consolidated Acceptance Criteria
  • The counterpart removal process is initiated → the system prepares to search the existing status array for conflicting 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_StartCounterpartDispositionCodeRemoval(["Start Step"]) E_StartCounterpartDispositionCodeRemoval(["End Step"]) N_StartCounterpartDispositionCodeRemoval_Node0{"The counterpart removal process is
initiated"}:::decision N_StartCounterpartDispositionCodeRemoval_Node0_action["The system prepares to search the
existing status array for
conflicting codes"]:::main N_StartCounterpartDispositionCodeRemoval_Node0 -- Yes --> N_StartCounterpartDispositionCodeRemoval_Node0_action N_StartCounterpartDispositionCodeRemoval_Node0_action --> E_StartCounterpartDispositionCodeRemoval S_StartCounterpartDispositionCodeRemoval --> N_StartCounterpartDispositionCodeRemoval_Node0 N_StartCounterpartDispositionCodeRemoval_Node0 -- No --> E_StartCounterpartDispositionCodeRemoval
File: GCX016E.cbl
GIVEN: A new disposition code needs to be processed
WHEN: The counterpart removal process is initiated
THEN: The system prepares to search the existing status array for conflicting codes
βœ“ Consolidated Acceptance Criteria
  • The new disposition code is provided to the system → the system accepts the disposition code for counterpart 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_ReceiveNewDispositionCode(["Start Step"]) E_ReceiveNewDispositionCode(["End Step"]) N_ReceiveNewDispositionCode_Node0{"The new disposition code is
provided to the system"}:::decision N_ReceiveNewDispositionCode_Node0_action["The system accepts the disposition
code for counterpart analysis"]:::main N_ReceiveNewDispositionCode_Node0 -- Yes --> N_ReceiveNewDispositionCode_Node0_action N_ReceiveNewDispositionCode_Node0_action --> E_ReceiveNewDispositionCode S_ReceiveNewDispositionCode --> N_ReceiveNewDispositionCode_Node0 N_ReceiveNewDispositionCode_Node0 -- No --> E_ReceiveNewDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code processing request is received
WHEN: The new disposition code is provided to the system
THEN: The system accepts the disposition code for counterpart analysis
βœ“ Consolidated Acceptance Criteria
  • The system searches for existing disposition codes in the status array → all existing disposition codes in the array are identified and made available for conflict 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_SearchS09AStatusArrayforExistingCodes(["Start Step"]) E_SearchS09AStatusArrayforExistingCodes(["End Step"]) N_SearchS09AStatusArrayforExistingCodes_Node0{"The system searches for existing
disposition codes in the status
array"}:::decision N_SearchS09AStatusArrayforExistingCodes_Node0_action["All existing disposition codes in
the array are identified and made
available for conflict analysis"]:::main N_SearchS09AStatusArrayforExistingCodes_Node0 -- Yes --> N_SearchS09AStatusArrayforExistingCodes_Node0_action N_SearchS09AStatusArrayforExistingCodes_Node0_action --> E_SearchS09AStatusArrayforExistingCodes S_SearchS09AStatusArrayforExistingCodes --> N_SearchS09AStatusArrayforExistingCodes_Node0 N_SearchS09AStatusArrayforExistingCodes_Node0 -- No --> E_SearchS09AStatusArrayforExistingCodes
File: GCX016E.cbl
GIVEN: A new disposition code is received and the S09A status array exists
WHEN: The system searches for existing disposition codes in the status array
THEN:
  • All existing disposition codes in the array are identified
  • Made available for conflict analysis
βœ“ Consolidated Acceptance Criteria
  • The system compares the new disposition code against existing codes → the system determines whether conflicting codes exist and proceeds accordingly
  • A manual release request is processed and the system searches for conflicting hold or restriction codes → the system identifies any existing codes that must be removed before applying 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_ConflictingCodesFound(["Start Step"]) E_ConflictingCodesFound(["End Step"]) N_ConflictingCodesFound_Node0{"The system compares the new
disposition code against existing
codes"}:::decision N_ConflictingCodesFound_Node0_action["The system determines whether
conflicting codes exist and proceeds
accordingly"]:::main N_ConflictingCodesFound_Node0 -- Yes --> N_ConflictingCodesFound_Node0_action N_ConflictingCodesFound_Node0_action --> E_ConflictingCodesFound S_ConflictingCodesFound --> N_ConflictingCodesFound_Node0 N_ConflictingCodesFound_Node1{"A manual release request is
processed and the system searches
for conflicting hold or restriction
codes"}:::decision N_ConflictingCodesFound_Node1_action["The system identifies any existing
codes that must be removed before
applying the manual release"]:::main N_ConflictingCodesFound_Node1 -- Yes --> N_ConflictingCodesFound_Node1_action N_ConflictingCodesFound_Node1_action --> E_ConflictingCodesFound N_ConflictingCodesFound_Node0 -- No --> N_ConflictingCodesFound_Node1 N_ConflictingCodesFound_Node1 -- No --> E_ConflictingCodesFound
File: GCX016E.cbl
GIVEN: The status array has been searched and existing codes are identified
WHEN: The system compares the new disposition code against existing codes
THEN:
  • The system determines whether conflicting codes exist
  • Proceeds accordingly
File: GCX016E.cbl
GIVEN: A cargo has an existing status array with disposition codes
WHEN:
  • A manual release request is processed
  • The system searches for conflicting hold or restriction codes
THEN: The system identifies any existing codes that must be removed before applying the manual release
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the conflicting codes → each conflicting code is classified by type (hold, release, proceed, cancel, arrival, export) for targeted 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_IdentifyCounterpartCodeTypes(["Start Step"]) E_IdentifyCounterpartCodeTypes(["End Step"]) N_IdentifyCounterpartCodeTypes_Node0{"The system analyzes the conflicting
codes"}:::decision N_IdentifyCounterpartCodeTypes_Node0_action["Each conflicting code is classified
by type hold, release, proceed,
cancel, arrival, export for targeted
removal"]:::main N_IdentifyCounterpartCodeTypes_Node0 -- Yes --> N_IdentifyCounterpartCodeTypes_Node0_action N_IdentifyCounterpartCodeTypes_Node0_action --> E_IdentifyCounterpartCodeTypes S_IdentifyCounterpartCodeTypes --> N_IdentifyCounterpartCodeTypes_Node0 N_IdentifyCounterpartCodeTypes_Node0 -- No --> E_IdentifyCounterpartCodeTypes
File: GCX016E.cbl
GIVEN: Conflicting disposition codes have been found in the status array
WHEN: The system analyzes the conflicting codes
THEN: Each conflicting code is classified by type (hold, release, proceed, cancel, arrival, export) for targeted removal
βœ“ Consolidated Acceptance Criteria
  • The system performs code type analysis → the system determines the specific removal action based on code type relationships
  • The system analyzes the disposition code characteristics from the DC table → the system categorizes the code as Hold Code, Release Code, Status Info Code, or Removal Code based on its 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_CodeTypeAnalysis(["Start Step"]) E_CodeTypeAnalysis(["End Step"]) N_CodeTypeAnalysis_Node0{"The system performs code type
analysis"}:::decision N_CodeTypeAnalysis_Node0_action["The system determines the specific
removal action based on code type
relationships"]:::main N_CodeTypeAnalysis_Node0 -- Yes --> N_CodeTypeAnalysis_Node0_action N_CodeTypeAnalysis_Node0_action --> E_CodeTypeAnalysis S_CodeTypeAnalysis --> N_CodeTypeAnalysis_Node0 N_CodeTypeAnalysis_Node1{"The system analyzes the disposition
code characteristics from the DC
table"}:::decision N_CodeTypeAnalysis_Node1_action["The system categorizes the code as
Hold Code, Release Code, Status Info
Code, or Removal Code based on its
processing requirements"]:::main N_CodeTypeAnalysis_Node1 -- Yes --> N_CodeTypeAnalysis_Node1_action N_CodeTypeAnalysis_Node1_action --> E_CodeTypeAnalysis N_CodeTypeAnalysis_Node0 -- No --> N_CodeTypeAnalysis_Node1 N_CodeTypeAnalysis_Node1 -- No --> E_CodeTypeAnalysis
File: GCX016E.cbl
GIVEN: Counterpart code types have been identified
WHEN: The system performs code type analysis
THEN: The system determines the specific removal action based on code type relationships
File: GCX016E.cbl
GIVEN: A duplicate disposition code has been detected
WHEN: The system analyzes the disposition code characteristics from the DC table
THEN: The system categorizes the code as Hold Code, Release Code, Status Info Code, or Removal Code based on its processing requirements
βœ“ Consolidated Acceptance Criteria
  • The system processes the release code addition → all conflicting hold disposition 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_RemoveHoldCodesifReleaseCodeAdded(["Start Step"]) E_RemoveHoldCodesifReleaseCodeAdded(["End Step"]) N_RemoveHoldCodesifReleaseCodeAdded_Node0{"The system processes the release
code addition"}:::decision N_RemoveHoldCodesifReleaseCodeAdded_Node0_action["All conflicting hold disposition
codes are removed from the status
array"]:::main N_RemoveHoldCodesifReleaseCodeAdded_Node0 -- Yes --> N_RemoveHoldCodesifReleaseCodeAdded_Node0_action N_RemoveHoldCodesifReleaseCodeAdded_Node0_action --> E_RemoveHoldCodesifReleaseCodeAdded S_RemoveHoldCodesifReleaseCodeAdded --> N_RemoveHoldCodesifReleaseCodeAdded_Node0 N_RemoveHoldCodesifReleaseCodeAdded_Node0 -- No --> E_RemoveHoldCodesifReleaseCodeAdded
File: GCX016E.cbl
GIVEN: A release disposition code is being added and hold codes exist in the status array
WHEN: The system processes the release code addition
THEN: All conflicting hold disposition codes are removed from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold code addition → all conflicting release disposition 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_RemoveReleaseCodesifHoldCodeAdded(["Start Step"]) E_RemoveReleaseCodesifHoldCodeAdded(["End Step"]) N_RemoveReleaseCodesifHoldCodeAdded_Node0{"The system processes the hold code
addition"}:::decision N_RemoveReleaseCodesifHoldCodeAdded_Node0_action["All conflicting release disposition
codes are removed from the status
array"]:::main N_RemoveReleaseCodesifHoldCodeAdded_Node0 -- Yes --> N_RemoveReleaseCodesifHoldCodeAdded_Node0_action N_RemoveReleaseCodesifHoldCodeAdded_Node0_action --> E_RemoveReleaseCodesifHoldCodeAdded S_RemoveReleaseCodesifHoldCodeAdded --> N_RemoveReleaseCodesifHoldCodeAdded_Node0 N_RemoveReleaseCodesifHoldCodeAdded_Node0 -- No --> E_RemoveReleaseCodesifHoldCodeAdded
File: GCX016E.cbl
GIVEN: A hold disposition code is being added and release codes exist in the status array
WHEN: The system processes the hold code addition
THEN: All conflicting release disposition codes are removed from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancel code addition → all conflicting proceed disposition 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_RemoveProceedCodesifCancelCodeAdded(["Start Step"]) E_RemoveProceedCodesifCancelCodeAdded(["End Step"]) N_RemoveProceedCodesifCancelCodeAdded_Node0{"The system processes the cancel
code addition"}:::decision N_RemoveProceedCodesifCancelCodeAdded_Node0_action["All conflicting proceed disposition
codes are removed from the status
array"]:::main N_RemoveProceedCodesifCancelCodeAdded_Node0 -- Yes --> N_RemoveProceedCodesifCancelCodeAdded_Node0_action N_RemoveProceedCodesifCancelCodeAdded_Node0_action --> E_RemoveProceedCodesifCancelCodeAdded S_RemoveProceedCodesifCancelCodeAdded --> N_RemoveProceedCodesifCancelCodeAdded_Node0 N_RemoveProceedCodesifCancelCodeAdded_Node0 -- No --> E_RemoveProceedCodesifCancelCodeAdded
File: GCX016E.cbl
GIVEN: A cancel disposition code is being added and proceed codes exist in the status array
WHEN: The system processes the cancel code addition
THEN: All conflicting proceed disposition codes are removed from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancel arrival code addition → all conflicting arrival disposition 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_RemoveArrivalCodesifCancelArrivalAdded(["Start Step"]) E_RemoveArrivalCodesifCancelArrivalAdded(["End Step"]) N_RemoveArrivalCodesifCancelArrivalAdded_Node0{"The system processes the cancel
arrival code addition"}:::decision N_RemoveArrivalCodesifCancelArrivalAdded_Node0_action["All conflicting arrival disposition
codes are removed from the status
array"]:::main N_RemoveArrivalCodesifCancelArrivalAdded_Node0 -- Yes --> N_RemoveArrivalCodesifCancelArrivalAdded_Node0_action N_RemoveArrivalCodesifCancelArrivalAdded_Node0_action --> E_RemoveArrivalCodesifCancelArrivalAdded S_RemoveArrivalCodesifCancelArrivalAdded --> N_RemoveArrivalCodesifCancelArrivalAdded_Node0 N_RemoveArrivalCodesifCancelArrivalAdded_Node0 -- No --> E_RemoveArrivalCodesifCancelArrivalAdded
File: GCX016E.cbl
GIVEN: A cancel arrival disposition code is being added and arrival codes exist in the status array
WHEN: The system processes the cancel arrival code addition
THEN: All conflicting arrival disposition codes are removed from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancel export code addition → all conflicting export disposition 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_RemoveExportCodesifCancelExportAdded(["Start Step"]) E_RemoveExportCodesifCancelExportAdded(["End Step"]) N_RemoveExportCodesifCancelExportAdded_Node0{"The system processes the cancel
export code addition"}:::decision N_RemoveExportCodesifCancelExportAdded_Node0_action["All conflicting export disposition
codes are removed from the status
array"]:::main N_RemoveExportCodesifCancelExportAdded_Node0 -- Yes --> N_RemoveExportCodesifCancelExportAdded_Node0_action N_RemoveExportCodesifCancelExportAdded_Node0_action --> E_RemoveExportCodesifCancelExportAdded S_RemoveExportCodesifCancelExportAdded --> N_RemoveExportCodesifCancelExportAdded_Node0 N_RemoveExportCodesifCancelExportAdded_Node0 -- No --> E_RemoveExportCodesifCancelExportAdded
File: GCX016E.cbl
GIVEN: A cancel export disposition code is being added and export codes exist in the status array
WHEN: The system processes the cancel export code addition
THEN: All conflicting export disposition codes are removed from the status array
βœ“ Consolidated Acceptance Criteria
  • The system compresses the status array → all remaining disposition codes are moved 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_CompressStatusArray(["Start Step"]) E_CompressStatusArray(["End Step"]) N_CompressStatusArray_Node0{"The system compresses the status
array"}:::decision N_CompressStatusArray_Node0_action["All remaining disposition codes are
moved to eliminate gaps and maintain
array continuity"]:::main N_CompressStatusArray_Node0 -- Yes --> N_CompressStatusArray_Node0_action N_CompressStatusArray_Node0_action --> E_CompressStatusArray S_CompressStatusArray --> N_CompressStatusArray_Node0 N_CompressStatusArray_Node0 -- No --> E_CompressStatusArray
File: GCX016E.cbl
GIVEN: Disposition codes have been removed from the status array creating gaps
WHEN: The system compresses the status array
THEN:
  • All remaining disposition codes are moved to eliminate gaps
  • Maintain array continuity
βœ“ Consolidated Acceptance Criteria
  • The system updates sequence numbers → all remaining disposition codes are assigned sequential numbers starting from 1
  • The system updates the array structure → all remaining disposition codes must have their sequence numbers updated to maintain proper ordering
  • The system updates sequence numbers → the system assigns consecutive sequence numbers to all remaining disposition codes in the array starting from 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_UpdateArraySequenceNumbers(["Start Step"]) E_UpdateArraySequenceNumbers(["End Step"]) N_UpdateArraySequenceNumbers_Node0{"The system updates sequence numbers"}:::decision N_UpdateArraySequenceNumbers_Node0_action["All remaining disposition codes are
assigned sequential numbers starting
from 1"]:::main N_UpdateArraySequenceNumbers_Node0 -- Yes --> N_UpdateArraySequenceNumbers_Node0_action N_UpdateArraySequenceNumbers_Node0_action --> E_UpdateArraySequenceNumbers S_UpdateArraySequenceNumbers --> N_UpdateArraySequenceNumbers_Node0 N_UpdateArraySequenceNumbers_Node1{"The system updates the array
structure"}:::decision N_UpdateArraySequenceNumbers_Node1_action["All remaining disposition codes
must have their sequence numbers
updated to maintain proper ordering"]:::main N_UpdateArraySequenceNumbers_Node1 -- Yes --> N_UpdateArraySequenceNumbers_Node1_action N_UpdateArraySequenceNumbers_Node1_action --> E_UpdateArraySequenceNumbers N_UpdateArraySequenceNumbers_Node0 -- No --> N_UpdateArraySequenceNumbers_Node1 N_UpdateArraySequenceNumbers_Node2{"The system updates sequence numbers"}:::decision N_UpdateArraySequenceNumbers_Node2_action["The system assigns consecutive
sequence numbers to all remaining
disposition codes in the array
starting from 1"]:::main N_UpdateArraySequenceNumbers_Node2 -- Yes --> N_UpdateArraySequenceNumbers_Node2_action N_UpdateArraySequenceNumbers_Node2_action --> E_UpdateArraySequenceNumbers N_UpdateArraySequenceNumbers_Node1 -- No --> N_UpdateArraySequenceNumbers_Node2 N_UpdateArraySequenceNumbers_Node2 -- No --> E_UpdateArraySequenceNumbers
File: GCX016E.cbl
GIVEN: The status array has been compressed after code removal
WHEN: The system updates sequence numbers
THEN: All remaining disposition codes are assigned sequential numbers starting from 1
File: GCX016E.cbl
GIVEN: A disposition code has been removed from the status array
WHEN: The system updates the array structure
THEN: All remaining disposition codes must have their sequence numbers updated to maintain proper ordering
File: GCX016E.cbl
GIVEN: The cargo status array has been reorganized after removing conflicting codes
WHEN: The system updates sequence numbers
THEN: The system assigns consecutive sequence numbers to all remaining disposition codes in the array starting from 1
βœ“ Consolidated Acceptance Criteria
  • The system validates array integrity → the array structure is verified for proper sequence numbers, valid codes, and data consistency
  • The system validates array integrity → the system confirms that all remaining disposition codes are valid AND sequence numbers are consecutive AND no business rule conflicts remain 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_ValidateArrayIntegrity(["Start Step"]) E_ValidateArrayIntegrity(["End Step"]) N_ValidateArrayIntegrity_Node0{"The system validates array
integrity"}:::decision N_ValidateArrayIntegrity_Node0_action["The array structure is verified for
proper sequence numbers, valid
codes, and data consistency"]:::main N_ValidateArrayIntegrity_Node0 -- Yes --> N_ValidateArrayIntegrity_Node0_action N_ValidateArrayIntegrity_Node0_action --> E_ValidateArrayIntegrity S_ValidateArrayIntegrity --> N_ValidateArrayIntegrity_Node0 N_ValidateArrayIntegrity_Node1{"The system validates array
integrity"}:::decision N_ValidateArrayIntegrity_Node1_action["The system confirms that all
remaining disposition codes are
valid AND sequence numbers are
consecutive AND no business rule
conflicts remain in the array"]:::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: GCX016E.cbl
GIVEN: The status array has been modified through code removal and compression
WHEN: The system validates array integrity
THEN: The array structure is verified for proper sequence numbers, valid codes, and data consistency
File: GCX016E.cbl
GIVEN: The cargo status array has been modified through counterpart code removal and reorganization
WHEN: The system validates array integrity
THEN:
  • The system confirms that all remaining disposition codes are valid
  • Sequence numbers are consecutive
  • No business rule conflicts remain in the array
βœ“ Consolidated Acceptance Criteria
  • The system checks array validity → the system determines whether the array is valid and proceeds with success 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_ArrayValid(["Start Step"]) E_ArrayValid(["End Step"]) N_ArrayValid_Node0{"The system checks array validity"}:::decision N_ArrayValid_Node0_action["The system determines whether the
array is valid and proceeds with
success or error handling"]:::main N_ArrayValid_Node0 -- Yes --> N_ArrayValid_Node0_action N_ArrayValid_Node0_action --> E_ArrayValid S_ArrayValid --> N_ArrayValid_Node0 N_ArrayValid_Node0 -- No --> E_ArrayValid
File: GCX016E.cbl
GIVEN: Array integrity validation has been performed
WHEN: The system checks array validity
THEN:
  • The system determines whether the array is valid
  • Proceeds with success or error handling
βœ“ Consolidated Acceptance Criteria
  • The system logs the removal action → a record of the removed codes and the removal reason is created for audit purposes
  • The system logs the removal action → an audit entry must be created containing cargo identifier, removed disposition code, removal timestamp, and user information
  • The removal action is completed → the system logs the removal action including details of which code was removed and why
  • The system logs the removal action → an audit log entry must be created with removal details including code, timestamp, and requesting entity
  • The system logs the removal action → the system records the removed disposition code details AND the reason for removal AND the timestamp of the action 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_LogRemovalAction(["Start Step"]) E_LogRemovalAction(["End Step"]) N_LogRemovalAction_Node0{"The system logs the removal action"}:::decision N_LogRemovalAction_Node0_action["A record of the removed codes and
the removal reason is created for
audit purposes"]:::main N_LogRemovalAction_Node0 -- Yes --> N_LogRemovalAction_Node0_action N_LogRemovalAction_Node0_action --> E_LogRemovalAction S_LogRemovalAction --> N_LogRemovalAction_Node0 N_LogRemovalAction_Node1{"The system logs the removal action"}:::decision N_LogRemovalAction_Node1_action["An audit entry must be created
containing cargo identifier, removed
disposition code, removal timestamp,
and user information"]:::main N_LogRemovalAction_Node1 -- Yes --> N_LogRemovalAction_Node1_action N_LogRemovalAction_Node1_action --> E_LogRemovalAction N_LogRemovalAction_Node0 -- No --> N_LogRemovalAction_Node1 N_LogRemovalAction_Node2{"The removal action is completed"}:::decision N_LogRemovalAction_Node2_action["The system logs the removal action
including details of which code was
removed and why"]:::main N_LogRemovalAction_Node2 -- Yes --> N_LogRemovalAction_Node2_action N_LogRemovalAction_Node2_action --> E_LogRemovalAction N_LogRemovalAction_Node1 -- No --> N_LogRemovalAction_Node2 N_LogRemovalAction_Node3{"The system logs the removal action"}:::decision N_LogRemovalAction_Node3_action["An audit log entry must be created
with removal details including code,
timestamp, and requesting entity"]:::main N_LogRemovalAction_Node3 -- Yes --> N_LogRemovalAction_Node3_action N_LogRemovalAction_Node3_action --> E_LogRemovalAction N_LogRemovalAction_Node2 -- No --> N_LogRemovalAction_Node3 N_LogRemovalAction_Node4{"The system logs the removal action"}:::decision N_LogRemovalAction_Node4_action["The system records the removed
disposition code details AND the
reason for removal AND the timestamp
of the action for audit trail
purposes"]:::main N_LogRemovalAction_Node4 -- Yes --> N_LogRemovalAction_Node4_action N_LogRemovalAction_Node4_action --> E_LogRemovalAction N_LogRemovalAction_Node3 -- No --> N_LogRemovalAction_Node4 N_LogRemovalAction_Node4 -- No --> E_LogRemovalAction
File: GCX016E.cbl
GIVEN: Counterpart disposition codes have been successfully removed and the array is valid
WHEN: The system logs the removal action
THEN:
  • A record of the removed codes
  • The removal reason is created for audit purposes
File: GCX016E.cbl
GIVEN: A successfully removed disposition code from cargo status array
WHEN: The system logs the removal action
THEN: An audit entry must be created containing cargo identifier, removed disposition code, removal timestamp, and user information
File: GCX016E.cbl
GIVEN: A disposition code has been removed from the status array
WHEN: The removal action is completed
THEN:
  • The system logs the removal action including details of which code was removed
  • Why
File: GCX016E.cbl
GIVEN: A disposition code has been successfully removed from the status array
WHEN: The system logs the removal action
THEN: An audit log entry must be created with removal details including code, timestamp, and requesting entity
File: GCX016E.cbl
GIVEN: A conflicting disposition code has been removed from the cargo status array
WHEN: The system logs the removal action
THEN:
  • The system records the removed disposition code details
  • The reason for removal
  • The timestamp of the action for audit trail purposes
βœ“ Consolidated Acceptance Criteria
  • The system returns success status → control is returned to the calling process with a successful completion indicator
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 system returns success status"}:::decision N_ReturnSuccessStatus_Node0_action["Control is returned to the calling
process with a successful completion
indicator"]:::main N_ReturnSuccessStatus_Node0 -- Yes --> N_ReturnSuccessStatus_Node0_action N_ReturnSuccessStatus_Node0_action --> E_ReturnSuccessStatus S_ReturnSuccessStatus --> N_ReturnSuccessStatus_Node0 N_ReturnSuccessStatus_Node0 -- No --> E_ReturnSuccessStatus
File: GCX016E.cbl
GIVEN: The counterpart disposition code removal process has completed successfully
WHEN: The system returns success status
THEN: Control is returned to the calling process with a successful completion indicator
βœ“ Consolidated Acceptance Criteria
  • The system generates an error message → an appropriate error message is created describing the validation failure
  • The system processes the validation failure → an appropriate error message is generated describing the validation failure
  • The system encounters an invalid format or unknown code → generate appropriate error message indicating the nature of the entry type processing failure
  • The disposition code validation fails → an error message is generated indicating the invalid code and processing is terminated
  • The system generates an error message → an error message must be created explaining why the removal failed and what corrective action is needed
  • The system cannot proceed with export processing → the system generates an appropriate error message describing the export processing failure
  • The system generates error notifications → appropriate error messages are created and sent to relevant parties or systems with failure details
  • The system encounters a validation error → an error message is generated indicating the specific validation failure
  • The system encounters an error during CPRS cargo creation → the system should generate an appropriate error message describing the failure reason and route it to the appropriate destination
  • The system processes the invalid code → an appropriate error message is generated indicating the code is invalid
  • The code is not found in the disposition code table or is not a valid release code → the system must generate an error message indicating the invalid release disposition code
  • The system encounters an error condition → the system generates a specific error message describing the failure reason and routes it to the appropriate error handling system
  • The disposition code validation fails → the system generates an error message indicating invalid disposition code and stops auto release processing
  • Export location validation fails → an error message is generated indicating invalid export location and export processing is not completed
  • The database operation returns an error status → the system should generate an error message indicating the insertion failure
  • The system generates an error message → a descriptive error message is created indicating the specific validation failure and the manifest is marked as invalid
  • The system generates an error response → an appropriate error message is created indicating the specific validation failure or processing issue for troubleshooting and correction
  • The system processes the validation failure outcome → an appropriate error message is generated describing 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_GenerateErrorMessage(["Start Step"]) E_GenerateErrorMessage(["End Step"]) N_GenerateErrorMessage_Node0{"The system generates an error
message"}:::decision N_GenerateErrorMessage_Node0_action["An appropriate error message is
created describing the validation
failure"]:::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 processes the validation
failure"}:::decision N_GenerateErrorMessage_Node1_action["An appropriate error message is
generated describing the validation
failure"]:::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 encounters an invalid
format or unknown code"}:::decision N_GenerateErrorMessage_Node2_action["Generate appropriate error message
indicating the nature of the entry
type processing failure"]:::exclusion N_GenerateErrorMessage_Node2 -- Yes -->|Alternative| N_GenerateErrorMessage_Node2_action N_GenerateErrorMessage_Node2_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node1 -- No --> N_GenerateErrorMessage_Node2 N_GenerateErrorMessage_Node3{"The disposition code validation
fails"}:::decision N_GenerateErrorMessage_Node3_action["An error message is generated
indicating the invalid code and
processing is terminated"]:::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{"The system generates an error
message"}:::decision N_GenerateErrorMessage_Node4_action["An error message must be created
explaining why the removal failed
and what corrective action is needed"]:::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 cannot proceed with
export processing"}:::decision N_GenerateErrorMessage_Node5_action["The system generates an appropriate
error message describing the export
processing failure"]:::main N_GenerateErrorMessage_Node5 -- Yes --> 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["Appropriate error messages are
created and sent to relevant parties
or systems with failure details"]:::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{"The system encounters a validation
error"}:::decision N_GenerateErrorMessage_Node7_action["An error message is generated
indicating the specific validation
failure"]:::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_Node8{"The system encounters an error
during CPRS cargo creation"}:::decision N_GenerateErrorMessage_Node8_action["The system should generate an
appropriate error message describing
the failure reason and route it to
the appropriate destination"]:::exclusion N_GenerateErrorMessage_Node8 -- Yes -->|Alternative| N_GenerateErrorMessage_Node8_action N_GenerateErrorMessage_Node8_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node7 -- No --> N_GenerateErrorMessage_Node8 N_GenerateErrorMessage_Node9{"The system processes the invalid
code"}:::decision N_GenerateErrorMessage_Node9_action["An appropriate error message is
generated indicating the code is
invalid"]:::exclusion N_GenerateErrorMessage_Node9 -- Yes -->|Alternative| N_GenerateErrorMessage_Node9_action N_GenerateErrorMessage_Node9_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node8 -- No --> N_GenerateErrorMessage_Node9 N_GenerateErrorMessage_Node10{"The code is not found in the
disposition code table or is not a
valid release code"}:::decision N_GenerateErrorMessage_Node10_action["The system must generate an error
message indicating the invalid
release disposition code"]:::main N_GenerateErrorMessage_Node10 -- Yes --> N_GenerateErrorMessage_Node10_action N_GenerateErrorMessage_Node10_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node9 -- No --> N_GenerateErrorMessage_Node10 N_GenerateErrorMessage_Node11{"The system encounters an error
condition"}:::decision N_GenerateErrorMessage_Node11_action["The system generates a specific
error message describing the failure
reason and routes it to the
appropriate error handling system"]:::exclusion N_GenerateErrorMessage_Node11 -- Yes -->|Alternative| N_GenerateErrorMessage_Node11_action N_GenerateErrorMessage_Node11_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node10 -- No --> N_GenerateErrorMessage_Node11 N_GenerateErrorMessage_Node12{"The disposition code validation
fails"}:::decision N_GenerateErrorMessage_Node12_action["The system generates an error
message indicating invalid
disposition code and stops auto
release processing"]:::main N_GenerateErrorMessage_Node12 -- Yes --> N_GenerateErrorMessage_Node12_action N_GenerateErrorMessage_Node12_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node11 -- No --> N_GenerateErrorMessage_Node12 N_GenerateErrorMessage_Node13{"Export location validation fails"}:::decision N_GenerateErrorMessage_Node13_action["An error message is generated
indicating invalid export location
and export processing is not
completed"]:::main N_GenerateErrorMessage_Node13 -- Yes --> N_GenerateErrorMessage_Node13_action N_GenerateErrorMessage_Node13_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node12 -- No --> N_GenerateErrorMessage_Node13 N_GenerateErrorMessage_Node14{"The database operation returns an
error status"}:::decision N_GenerateErrorMessage_Node14_action["The system should generate an error
message indicating the insertion
failure"]:::exclusion N_GenerateErrorMessage_Node14 -- Yes -->|Alternative| N_GenerateErrorMessage_Node14_action N_GenerateErrorMessage_Node14_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node13 -- No --> N_GenerateErrorMessage_Node14 N_GenerateErrorMessage_Node15{"The system generates an error
message"}:::decision N_GenerateErrorMessage_Node15_action["A descriptive error message is
created indicating the specific
validation failure and the manifest
is marked as invalid"]:::exclusion N_GenerateErrorMessage_Node15 -- Yes -->|Alternative| N_GenerateErrorMessage_Node15_action N_GenerateErrorMessage_Node15_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node14 -- No --> N_GenerateErrorMessage_Node15 N_GenerateErrorMessage_Node16{"The system generates an error
response"}:::decision N_GenerateErrorMessage_Node16_action["An appropriate error message is
created indicating the specific
validation failure or processing
issue for troubleshooting and
correction"]:::exclusion N_GenerateErrorMessage_Node16 -- Yes -->|Alternative| N_GenerateErrorMessage_Node16_action N_GenerateErrorMessage_Node16_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node15 -- No --> N_GenerateErrorMessage_Node16 N_GenerateErrorMessage_Node17{"The system processes the validation
failure outcome"}:::decision N_GenerateErrorMessage_Node17_action["An appropriate error message is
generated describing the validation
failure"]:::main N_GenerateErrorMessage_Node17 -- Yes --> N_GenerateErrorMessage_Node17_action N_GenerateErrorMessage_Node17_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node16 -- No --> N_GenerateErrorMessage_Node17 N_GenerateErrorMessage_Node17 -- No --> E_GenerateErrorMessage
File: GCX016E.cbl
GIVEN: Array validation has failed during the counterpart removal process
WHEN: The system generates an error message
THEN: An appropriate error message is created describing the validation failure
File: GCX016E.cbl
GIVEN: Entry number validation has failed
WHEN: The system processes the validation failure
THEN: An appropriate error message is generated describing the validation failure
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Entry type validation or conversion has failed
WHEN: The system encounters an invalid format or unknown code
THEN: Generate appropriate error message indicating the nature of the entry type processing failure
File: GCX016E.cbl
GIVEN: A manual release request contains an invalid disposition code
WHEN: The disposition code validation fails
THEN:
  • An error message is generated indicating the invalid code
  • Processing is terminated
File: GCX016E.cbl
GIVEN: A disposition code removal request that cannot be processed due to validation failure or authorization denial
WHEN: The system generates an error message
THEN:
  • An error message must be created explaining why the removal failed
  • What corrective action is needed
File: GCX016E.cbl
GIVEN: An invalid export port has been detected or other validation has failed
WHEN: The system cannot proceed with export processing
THEN: The system generates an appropriate error message describing the export processing failure
File: GCX016E.cbl
GIVEN: A cargo record insert operation has failed and been logged
WHEN: The system generates error notifications
THEN:
  • Appropriate error messages are created
  • Sent to relevant parties or systems with failure details
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in DC table OR calculated quantity is invalid
WHEN: The system encounters a validation error
THEN: An error message is generated indicating the specific validation failure
File: GCX016E.cbl
GIVEN: CPRS traffic validation failed or database insert operation failed
WHEN: The system encounters an error during CPRS cargo creation
THEN:
  • The system should generate an appropriate error message describing the failure reason
  • Route it to the appropriate destination
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A status information code that fails validation
WHEN: The system processes the invalid code
THEN: An appropriate error message is generated indicating the code is invalid
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A release disposition code has failed validation
WHEN: The code is not found in the disposition code table or is not a valid release code
THEN: The system must generate an error message indicating the invalid release disposition code
File: GCX016E.cbl
GIVEN: A manual release request fails validation or processing
WHEN: The system encounters an error condition
THEN:
  • The system generates a specific error message describing the failure reason
  • Routes it to the appropriate error handling system
File: GCX016E.cbl
GIVEN: An auto release request is received with an invalid disposition code
WHEN: The disposition code validation fails
THEN:
  • The system generates an error message indicating invalid disposition code
  • Stops auto release processing
File: GCX016E.cbl
GIVEN: A cargo has an invalid export location
WHEN: Export location validation fails
THEN:
  • An error message is generated indicating invalid export location
  • Export processing is not completed
File: GCX016E.cbl
GIVEN: A new cargo record insertion has failed
WHEN: The database operation returns an error status
THEN: The system should generate an error message indicating the insertion failure
File: GCX016E.cbl
GIVEN: Manifest validation has failed for any required field
WHEN: The system generates an error message
THEN:
  • A descriptive error message is created indicating the specific validation failure
  • The manifest is marked as invalid
File: GCX016E.cbl
GIVEN: CPR bond creation validation has failed or processing errors occurred
WHEN: The system generates an error response
THEN:
  • An appropriate error message is created indicating the specific validation failure or processing issue for troubleshooting
  • Correction
File: GCX016E.cbl
GIVEN: Segment data validation has failed
WHEN: The system processes the validation failure outcome
THEN: An appropriate error message is generated describing the validation failure
βœ“ Consolidated Acceptance Criteria
  • The system restores the previous array state → the status array is returned to its state before the counterpart removal attempt began
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RestorePreviousArrayState(["Start Step"]) E_RestorePreviousArrayState(["End Step"]) N_RestorePreviousArrayState_Node0{"The system restores the previous
array state"}:::decision N_RestorePreviousArrayState_Node0_action["The status array is returned to its
state before the counterpart removal
attempt began"]:::main N_RestorePreviousArrayState_Node0 -- Yes --> N_RestorePreviousArrayState_Node0_action N_RestorePreviousArrayState_Node0_action --> E_RestorePreviousArrayState S_RestorePreviousArrayState --> N_RestorePreviousArrayState_Node0 N_RestorePreviousArrayState_Node0 -- No --> E_RestorePreviousArrayState
File: GCX016E.cbl
GIVEN: An error has occurred during counterpart code removal and an error message has been generated
WHEN: The system restores the previous array state
THEN: The status array is returned to its state before the counterpart removal attempt began
βœ“ Consolidated Acceptance Criteria
  • The search process begins → all search parameters are initialized including duplicate flags, conflict flags, position counters, and removal lists 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_InitializeSearchParameters(["Start Step"]) E_InitializeSearchParameters(["End Step"]) N_InitializeSearchParameters_Node0{"The search process begins"}:::decision N_InitializeSearchParameters_Node0_action["All search parameters are
initialized including duplicate
flags, conflict flags, position
counters, and removal lists are
cleared"]:::main N_InitializeSearchParameters_Node0 -- Yes --> N_InitializeSearchParameters_Node0_action N_InitializeSearchParameters_Node0_action --> E_InitializeSearchParameters S_InitializeSearchParameters --> N_InitializeSearchParameters_Node0 N_InitializeSearchParameters_Node0 -- No --> E_InitializeSearchParameters
File: GCX016E.cbl
GIVEN: A status array search operation is initiated
WHEN: The search process begins
THEN: All search parameters are initialized including duplicate flags, conflict flags, position counters, and removal lists are cleared
βœ“ Consolidated Acceptance Criteria
  • The status array loading process is executed → the current S09A status array is loaded into working storage 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_LoadCurrentS09AStatusArray(["Start Step"]) E_LoadCurrentS09AStatusArray(["End Step"]) N_LoadCurrentS09AStatusArray_Node0{"The status array loading process is
executed"}:::decision N_LoadCurrentS09AStatusArray_Node0_action["The current S09A status array is
loaded into working storage for
analysis"]:::main N_LoadCurrentS09AStatusArray_Node0 -- Yes --> N_LoadCurrentS09AStatusArray_Node0_action N_LoadCurrentS09AStatusArray_Node0_action --> E_LoadCurrentS09AStatusArray S_LoadCurrentS09AStatusArray --> N_LoadCurrentS09AStatusArray_Node0 N_LoadCurrentS09AStatusArray_Node0 -- No --> E_LoadCurrentS09AStatusArray
File: GCX016E.cbl
GIVEN: A cargo record exists with potential S09A status array data
WHEN: The status array loading process is executed
THEN: The current S09A status array is loaded into working storage for analysis
βœ“ Consolidated Acceptance Criteria
  • The array is examined for content → if the array contains no entries, set array empty flag and terminate search; otherwise proceed with sequential search
  • The system accesses the status array to determine if it contains any entries → if the status array is empty, set no duplicates found flag and skip duplicate detection 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_StatusArrayEmpty(["Start Step"]) E_StatusArrayEmpty(["End Step"]) N_StatusArrayEmpty_Node0{"The array is examined for content"}:::decision N_StatusArrayEmpty_Node0_action["If the array contains no entries,
set array empty flag and terminate
search otherwise proceed with
sequential search"]:::exclusion N_StatusArrayEmpty_Node0 -- Yes -->|Alternative| N_StatusArrayEmpty_Node0_action N_StatusArrayEmpty_Node0_action --> E_StatusArrayEmpty S_StatusArrayEmpty --> N_StatusArrayEmpty_Node0 N_StatusArrayEmpty_Node1{"The system accesses the status
array to determine if it contains
any entries"}:::decision N_StatusArrayEmpty_Node1_action["If the status array is empty, set
no duplicates found flag and skip
duplicate detection process"]:::main N_StatusArrayEmpty_Node1 -- Yes --> N_StatusArrayEmpty_Node1_action N_StatusArrayEmpty_Node1_action --> E_StatusArrayEmpty N_StatusArrayEmpty_Node0 -- No --> N_StatusArrayEmpty_Node1 N_StatusArrayEmpty_Node1 -- No --> E_StatusArrayEmpty
File: GCX016E.cbl
GIVEN: The S09A status array has been loaded
WHEN: The array is examined for content
THEN:
  • If the array contains no entries, set array empty flag
  • Terminate search; otherwise proceed with sequential search
File: GCX016E.cbl
GIVEN: A cargo status array (S09A) needs to be checked for existing disposition codes
WHEN: The system accesses the status array to determine if it contains any entries
THEN:
  • If the status array is empty, set no duplicates found flag
  • Skip duplicate detection process
βœ“ Consolidated Acceptance Criteria
  • The empty condition is confirmed → set the array empty flag to indicate no disposition codes 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_SetArrayEmptyFlag(["Start Step"]) E_SetArrayEmptyFlag(["End Step"]) N_SetArrayEmptyFlag_Node0{"The empty condition is confirmed"}:::decision N_SetArrayEmptyFlag_Node0_action["Set the array empty flag to
indicate no disposition codes exist
for processing"]:::main N_SetArrayEmptyFlag_Node0 -- Yes --> N_SetArrayEmptyFlag_Node0_action N_SetArrayEmptyFlag_Node0_action --> E_SetArrayEmptyFlag S_SetArrayEmptyFlag --> N_SetArrayEmptyFlag_Node0 N_SetArrayEmptyFlag_Node0 -- No --> E_SetArrayEmptyFlag
File: GCX016E.cbl
GIVEN: The S09A status array has been examined and found to contain no entries
WHEN: The empty condition is confirmed
THEN: Set the array empty flag to indicate no disposition codes exist for processing
βœ“ Consolidated Acceptance Criteria
  • The sequential search process is initiated → begin iterating through each status array entry starting from the first 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_BeginSequentialArraySearch(["Start Step"]) E_BeginSequentialArraySearch(["End Step"]) N_BeginSequentialArraySearch_Node0{"The sequential search process is
initiated"}:::decision N_BeginSequentialArraySearch_Node0_action["Begin iterating through each status
array entry starting from the first
position"]:::main N_BeginSequentialArraySearch_Node0 -- Yes --> N_BeginSequentialArraySearch_Node0_action N_BeginSequentialArraySearch_Node0_action --> E_BeginSequentialArraySearch S_BeginSequentialArraySearch --> N_BeginSequentialArraySearch_Node0 N_BeginSequentialArraySearch_Node0 -- No --> E_BeginSequentialArraySearch
File: GCX016E.cbl
GIVEN: The S09A status array contains one or more entries
WHEN: The sequential search process is initiated
THEN: Begin iterating through each status array entry starting from the first position
βœ“ Consolidated Acceptance Criteria
  • The current position in the array is evaluated → if more entries exist, continue to next entry; otherwise complete the array analysis
  • The system checks if there are remaining entries to process in the array → if more entries exist, get next status entry for comparison, otherwise proceed to duplicate 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_MoreArrayEntries(["Start Step"]) E_MoreArrayEntries(["End Step"]) N_MoreArrayEntries_Node0{"The current position in the array
is evaluated"}:::decision N_MoreArrayEntries_Node0_action["If more entries exist, continue to
next entry otherwise complete the
array analysis"]:::main N_MoreArrayEntries_Node0 -- Yes --> N_MoreArrayEntries_Node0_action N_MoreArrayEntries_Node0_action --> E_MoreArrayEntries S_MoreArrayEntries --> N_MoreArrayEntries_Node0 N_MoreArrayEntries_Node1{"The system checks if there are
remaining entries to process in the
array"}:::decision N_MoreArrayEntries_Node1_action["If more entries exist, get next
status entry for comparison,
otherwise proceed to duplicate
evaluation"]:::main N_MoreArrayEntries_Node1 -- Yes --> N_MoreArrayEntries_Node1_action N_MoreArrayEntries_Node1_action --> E_MoreArrayEntries N_MoreArrayEntries_Node0 -- No --> N_MoreArrayEntries_Node1 N_MoreArrayEntries_Node1 -- No --> E_MoreArrayEntries
File: GCX016E.cbl
GIVEN: A sequential search through the status array is in progress
WHEN: The current position in the array is evaluated
THEN: If more entries exist, continue to next entry; otherwise complete the array analysis
File: GCX016E.cbl
GIVEN: A status array with multiple entries and current search position
WHEN: The system checks if there are remaining entries to process in the array
THEN: If more entries exist, get next status entry for comparison, otherwise proceed to duplicate evaluation
βœ“ Consolidated Acceptance Criteria
  • The next entry retrieval is executed → the next status array entry is loaded 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_GetNextStatusEntry(["Start Step"]) E_GetNextStatusEntry(["End Step"]) N_GetNextStatusEntry_Node0{"The next entry retrieval is
executed"}:::decision N_GetNextStatusEntry_Node0_action["The next status array entry is
loaded for disposition code analysis"]:::main N_GetNextStatusEntry_Node0 -- Yes --> N_GetNextStatusEntry_Node0_action N_GetNextStatusEntry_Node0_action --> E_GetNextStatusEntry S_GetNextStatusEntry --> N_GetNextStatusEntry_Node0 N_GetNextStatusEntry_Node0 -- No --> E_GetNextStatusEntry
File: GCX016E.cbl
GIVEN: More entries exist in the status array to examine
WHEN: The next entry retrieval is executed
THEN: The next status array entry is loaded for disposition code analysis
βœ“ Consolidated Acceptance Criteria
  • The disposition code extraction is performed → the disposition code is extracted from the entry for comparison purposes
  • The system processes the entry for database conversion → the disposition code is extracted and prepared for database segment 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_ExtractDispositionCode(["Start Step"]) E_ExtractDispositionCode(["End Step"]) N_ExtractDispositionCode_Node0{"The disposition code extraction is
performed"}:::decision N_ExtractDispositionCode_Node0_action["The disposition code is extracted
from the entry for comparison
purposes"]:::main N_ExtractDispositionCode_Node0 -- Yes --> N_ExtractDispositionCode_Node0_action N_ExtractDispositionCode_Node0_action --> E_ExtractDispositionCode S_ExtractDispositionCode --> N_ExtractDispositionCode_Node0 N_ExtractDispositionCode_Node1{"The system processes the entry for
database conversion"}:::decision N_ExtractDispositionCode_Node1_action["The disposition code is extracted
and prepared for database segment
formatting"]:::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: GCX016E.cbl
GIVEN: A status array entry has been retrieved
WHEN: The disposition code extraction is performed
THEN: The disposition code is extracted from the entry for comparison purposes
File: GCX016E.cbl
GIVEN: A status array entry contains disposition code information
WHEN: The system processes the entry for database conversion
THEN:
  • The disposition code is extracted
  • Prepared for database segment formatting
βœ“ Consolidated Acceptance Criteria
  • The code comparison is performed → if the extracted code matches the target code, mark as duplicate found; otherwise check for 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_CodeMatchesTarget(["Start Step"]) E_CodeMatchesTarget(["End Step"]) N_CodeMatchesTarget_Node0{"The code comparison is performed"}:::decision N_CodeMatchesTarget_Node0_action["If the extracted code matches the
target code, mark as duplicate found
otherwise check for counterpart
codes"]:::main N_CodeMatchesTarget_Node0 -- Yes --> N_CodeMatchesTarget_Node0_action N_CodeMatchesTarget_Node0_action --> E_CodeMatchesTarget S_CodeMatchesTarget --> N_CodeMatchesTarget_Node0 N_CodeMatchesTarget_Node0 -- No --> E_CodeMatchesTarget
File: GCX016E.cbl
GIVEN: A disposition code has been extracted from the current status entry and a target code is defined
WHEN: The code comparison is performed
THEN: If the extracted code matches the target code, mark as duplicate found; otherwise check for counterpart codes
βœ“ Consolidated Acceptance Criteria
  • The duplicate marking process is executed → set the duplicate found flag to indicate an existing matching 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_MarkDuplicateFound(["Start Step"]) E_MarkDuplicateFound(["End Step"]) N_MarkDuplicateFound_Node0{"The duplicate marking process is
executed"}:::decision N_MarkDuplicateFound_Node0_action["Set the duplicate found flag to
indicate an existing matching
disposition code"]:::main N_MarkDuplicateFound_Node0 -- Yes --> N_MarkDuplicateFound_Node0_action N_MarkDuplicateFound_Node0_action --> E_MarkDuplicateFound S_MarkDuplicateFound --> N_MarkDuplicateFound_Node0 N_MarkDuplicateFound_Node0 -- No --> E_MarkDuplicateFound
File: GCX016E.cbl
GIVEN: The extracted disposition code matches the target code being searched
WHEN: The duplicate marking process is executed
THEN: Set the duplicate found flag to indicate an existing matching disposition code
βœ“ Consolidated Acceptance Criteria
  • The position recording is performed → record the current array position for potential future reference or removal 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_RecordEntryPosition(["Start Step"]) E_RecordEntryPosition(["End Step"]) N_RecordEntryPosition_Node0{"The position recording is performed"}:::decision N_RecordEntryPosition_Node0_action["Record the current array position
for potential future reference or
removal operations"]:::main N_RecordEntryPosition_Node0 -- Yes --> N_RecordEntryPosition_Node0_action N_RecordEntryPosition_Node0_action --> E_RecordEntryPosition S_RecordEntryPosition --> N_RecordEntryPosition_Node0 N_RecordEntryPosition_Node0 -- No --> E_RecordEntryPosition
File: GCX016E.cbl
GIVEN: A duplicate disposition code has been identified in the status array
WHEN: The position recording is performed
THEN: Record the current array position for potential future reference or removal operations
βœ“ Consolidated Acceptance Criteria
  • The counterpart code analysis is performed → determine if the current code conflicts with existing codes and requires 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_CheckforCounterpartCodes(["Start Step"]) E_CheckforCounterpartCodes(["End Step"]) N_CheckforCounterpartCodes_Node0{"The counterpart code analysis is
performed"}:::decision N_CheckforCounterpartCodes_Node0_action["Determine if the current code
conflicts with existing codes and
requires counterpart removal"]:::main N_CheckforCounterpartCodes_Node0 -- Yes --> N_CheckforCounterpartCodes_Node0_action N_CheckforCounterpartCodes_Node0_action --> E_CheckforCounterpartCodes S_CheckforCounterpartCodes --> N_CheckforCounterpartCodes_Node0 N_CheckforCounterpartCodes_Node0 -- No --> E_CheckforCounterpartCodes
File: GCX016E.cbl
GIVEN: A disposition code has been extracted from the status array entry
WHEN: The counterpart code analysis is performed
THEN:
  • Determine if the current code conflicts with existing codes
  • Requires counterpart removal
βœ“ Consolidated Acceptance Criteria
  • The counterpart detection results are evaluated → if counterpart codes are found, mark for removal; otherwise continue with the search 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_CounterpartCodeFound(["Start Step"]) E_CounterpartCodeFound(["End Step"]) N_CounterpartCodeFound_Node0{"The counterpart detection results
are evaluated"}:::decision N_CounterpartCodeFound_Node0_action["If counterpart codes are found,
mark for removal otherwise continue
with the search process"]:::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: GCX016E.cbl
GIVEN: The counterpart code analysis has been completed for the current disposition code
WHEN: The counterpart detection results are evaluated
THEN: If counterpart codes are found, mark for removal; otherwise continue with the search process
βœ“ Consolidated Acceptance Criteria
  • The removal marking process is executed → mark the conflicting codes 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_MarkforRemoval(["Start Step"]) E_MarkforRemoval(["End Step"]) N_MarkforRemoval_Node0{"The removal marking process is
executed"}:::decision N_MarkforRemoval_Node0_action["Mark the conflicting codes for
removal from the status array"]:::main N_MarkforRemoval_Node0 -- Yes --> N_MarkforRemoval_Node0_action N_MarkforRemoval_Node0_action --> E_MarkforRemoval S_MarkforRemoval --> N_MarkforRemoval_Node0 N_MarkforRemoval_Node0 -- No --> E_MarkforRemoval
File: GCX016E.cbl
GIVEN: Counterpart disposition codes have been identified that conflict with the current processing
WHEN: The removal marking process is executed
THEN: Mark the conflicting codes for removal from the status array
βœ“ Consolidated Acceptance Criteria
  • The removal list update is performed → add the conflicting codes and their positions to the removal list 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_AddtoRemovalList(["Start Step"]) E_AddtoRemovalList(["End Step"]) N_AddtoRemovalList_Node0{"The removal list update is
performed"}:::decision N_AddtoRemovalList_Node0_action["Add the conflicting codes and their
positions to the removal list for
subsequent processing"]:::main N_AddtoRemovalList_Node0 -- Yes --> N_AddtoRemovalList_Node0_action N_AddtoRemovalList_Node0_action --> E_AddtoRemovalList S_AddtoRemovalList --> N_AddtoRemovalList_Node0 N_AddtoRemovalList_Node0 -- No --> E_AddtoRemovalList
File: GCX016E.cbl
GIVEN: Disposition codes have been marked for removal due to conflicts
WHEN: The removal list update is performed
THEN:
  • Add the conflicting codes
  • Their positions to the removal list for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The search continuation is executed → move to the next array position to continue the sequential search 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_ContinueSearch(["Start Step"]) E_ContinueSearch(["End Step"]) N_ContinueSearch_Node0{"The search continuation is executed"}:::decision N_ContinueSearch_Node0_action["Move to the next array position to
continue the sequential search
process"]:::main N_ContinueSearch_Node0 -- Yes --> N_ContinueSearch_Node0_action N_ContinueSearch_Node0_action --> E_ContinueSearch S_ContinueSearch --> N_ContinueSearch_Node0 N_ContinueSearch_Node0 -- No --> E_ContinueSearch
File: GCX016E.cbl
GIVEN: The current status array entry has been processed for duplicates and conflicts
WHEN: The search continuation is executed
THEN: Move to the next array position to continue the sequential search process
βœ“ Consolidated Acceptance Criteria
  • The array analysis completion is executed → prepare to evaluate the search results for duplicates and 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_CompleteArrayAnalysis(["Start Step"]) E_CompleteArrayAnalysis(["End Step"]) N_CompleteArrayAnalysis_Node0{"The array analysis completion is
executed"}:::decision N_CompleteArrayAnalysis_Node0_action["Prepare to evaluate the search
results for duplicates and conflicts"]:::main N_CompleteArrayAnalysis_Node0 -- Yes --> N_CompleteArrayAnalysis_Node0_action N_CompleteArrayAnalysis_Node0_action --> E_CompleteArrayAnalysis S_CompleteArrayAnalysis --> N_CompleteArrayAnalysis_Node0 N_CompleteArrayAnalysis_Node0 -- No --> E_CompleteArrayAnalysis
File: GCX016E.cbl
GIVEN: All entries in the S09A status array have been examined
WHEN: The array analysis completion is executed
THEN:
  • Prepare to evaluate the search results for duplicates
  • Conflicts
βœ“ Consolidated Acceptance Criteria
  • The duplicate detection results are evaluated → if duplicates were found, set duplicate flag; otherwise proceed to check for 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_DuplicatesFound(["Start Step"]) E_DuplicatesFound(["End Step"]) N_DuplicatesFound_Node0{"The duplicate detection results are
evaluated"}:::decision N_DuplicatesFound_Node0_action["If duplicates were found, set
duplicate flag otherwise proceed to
check for conflicts"]:::main N_DuplicatesFound_Node0 -- Yes --> N_DuplicatesFound_Node0_action N_DuplicatesFound_Node0_action --> E_DuplicatesFound S_DuplicatesFound --> N_DuplicatesFound_Node0 N_DuplicatesFound_Node0 -- No --> E_DuplicatesFound
File: GCX016E.cbl
GIVEN: The complete status array has been searched for disposition codes
WHEN: The duplicate detection results are evaluated
THEN: If duplicates were found, set duplicate flag; otherwise proceed to check for conflicts
βœ“ Consolidated Acceptance Criteria
  • The duplicate flag setting is executed → set the duplicate flag to indicate that matching disposition codes already 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_SetDuplicateFlag(["Start Step"]) E_SetDuplicateFlag(["End Step"]) N_SetDuplicateFlag_Node0{"The duplicate flag setting is
executed"}:::decision N_SetDuplicateFlag_Node0_action["Set the duplicate flag to indicate
that matching disposition codes
already exist"]:::main N_SetDuplicateFlag_Node0 -- Yes --> N_SetDuplicateFlag_Node0_action N_SetDuplicateFlag_Node0_action --> E_SetDuplicateFlag S_SetDuplicateFlag --> N_SetDuplicateFlag_Node0 N_SetDuplicateFlag_Node0 -- No --> E_SetDuplicateFlag
File: GCX016E.cbl
GIVEN: Duplicate disposition codes have been identified during the array search
WHEN: The duplicate flag setting is executed
THEN: Set the duplicate flag to indicate that matching disposition codes already exist
βœ“ Consolidated Acceptance Criteria
  • The conflict detection results are evaluated → if conflicts were found, set conflict flag; otherwise prepare 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_ConflictsFound(["Start Step"]) E_ConflictsFound(["End Step"]) N_ConflictsFound_Node0{"The conflict detection results are
evaluated"}:::decision N_ConflictsFound_Node0_action["If conflicts were found, set
conflict flag otherwise prepare
search results"]:::main N_ConflictsFound_Node0 -- Yes --> N_ConflictsFound_Node0_action N_ConflictsFound_Node0_action --> E_ConflictsFound S_ConflictsFound --> N_ConflictsFound_Node0 N_ConflictsFound_Node0 -- No --> E_ConflictsFound
File: GCX016E.cbl
GIVEN: The status array search has been completed and duplicate analysis is done
WHEN: The conflict detection results are evaluated
THEN: If conflicts were found, set conflict flag; otherwise prepare search results
βœ“ Consolidated Acceptance Criteria
  • The conflict flag setting is executed → set the conflict flag to indicate that counterpart codes need 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_SetConflictFlag(["Start Step"]) E_SetConflictFlag(["End Step"]) N_SetConflictFlag_Node0{"The conflict flag setting is
executed"}:::decision N_SetConflictFlag_Node0_action["Set the conflict flag to indicate
that counterpart codes need removal"]:::main N_SetConflictFlag_Node0 -- Yes --> N_SetConflictFlag_Node0_action N_SetConflictFlag_Node0_action --> E_SetConflictFlag S_SetConflictFlag --> N_SetConflictFlag_Node0 N_SetConflictFlag_Node0 -- No --> E_SetConflictFlag
File: GCX016E.cbl
GIVEN: Conflicting counterpart disposition codes have been identified during the search
WHEN: The conflict flag setting is executed
THEN: Set the conflict flag to indicate that counterpart codes need removal
βœ“ Consolidated Acceptance Criteria
  • The search results preparation is executed → compile all search findings including duplicate flags, conflict flags, positions, and removal lists
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_PrepareSearchResults(["Start Step"]) E_PrepareSearchResults(["End Step"]) N_PrepareSearchResults_Node0{"The search results preparation is
executed"}:::decision N_PrepareSearchResults_Node0_action["Compile all search findings
including duplicate flags, conflict
flags, positions, and removal lists"]:::main N_PrepareSearchResults_Node0 -- Yes --> N_PrepareSearchResults_Node0_action N_PrepareSearchResults_Node0_action --> E_PrepareSearchResults S_PrepareSearchResults --> N_PrepareSearchResults_Node0 N_PrepareSearchResults_Node0 -- No --> E_PrepareSearchResults
File: GCX016E.cbl
GIVEN: The status array search has been completed with duplicate and conflict analysis
WHEN: The search results preparation is executed
THEN: Compile all search findings including duplicate flags, conflict flags, positions, and removal lists
βœ“ Consolidated Acceptance Criteria
  • The search status return is executed → return the complete search status including duplicate indicators, conflict indicators, and removal 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_ReturnSearchStatus(["Start Step"]) E_ReturnSearchStatus(["End Step"]) N_ReturnSearchStatus_Node0{"The search status return is
executed"}:::decision N_ReturnSearchStatus_Node0_action["Return the complete search status
including duplicate indicators,
conflict indicators, and removal
requirements"]:::main N_ReturnSearchStatus_Node0 -- Yes --> N_ReturnSearchStatus_Node0_action N_ReturnSearchStatus_Node0_action --> E_ReturnSearchStatus S_ReturnSearchStatus --> N_ReturnSearchStatus_Node0 N_ReturnSearchStatus_Node0 -- No --> E_ReturnSearchStatus
File: GCX016E.cbl
GIVEN: The search results have been prepared with all findings compiled
WHEN: The search status return is executed
THEN: Return the complete search status including duplicate indicators, conflict indicators, and removal requirements
βœ“ Consolidated Acceptance Criteria
  • The search process termination is executed → end the status array search operation and return control to the disposition code 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_EndSearchProcess(["Start Step"]) E_EndSearchProcess(["End Step"]) N_EndSearchProcess_Node0{"The search process termination is
executed"}:::decision N_EndSearchProcess_Node0_action["End the status array search
operation and return control to the
disposition code processing logic"]:::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: GCX016E.cbl
GIVEN: The search status has been returned to the calling process
WHEN: The search process termination is executed
THEN:
  • End the status array search operation
  • Return control to the disposition code processing logic
βœ“ Consolidated Acceptance Criteria
  • The system checks the disposition code table for counterpart relationships → the system identifies if the code has any defined counterpart codes that require 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_DoesCodeHaveCounterparts(["Start Step"]) E_DoesCodeHaveCounterparts(["End Step"]) N_DoesCodeHaveCounterparts_Node0{"The system checks the disposition
code table for counterpart
relationships"}:::decision N_DoesCodeHaveCounterparts_Node0_action["The system identifies if the code
has any defined counterpart codes
that require evaluation"]:::main N_DoesCodeHaveCounterparts_Node0 -- Yes --> N_DoesCodeHaveCounterparts_Node0_action N_DoesCodeHaveCounterparts_Node0_action --> E_DoesCodeHaveCounterparts S_DoesCodeHaveCounterparts --> N_DoesCodeHaveCounterparts_Node0 N_DoesCodeHaveCounterparts_Node0 -- No --> E_DoesCodeHaveCounterparts
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo status update
WHEN: The system checks the disposition code table for counterpart relationships
THEN: The system identifies if the code has any defined counterpart codes that require evaluation
βœ“ Consolidated Acceptance Criteria
  • The system accesses the disposition code table counterpart fields → the system retrieves all defined counterpart codes for the current 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_GetCounterpartCodeList(["Start Step"]) E_GetCounterpartCodeList(["End Step"]) N_GetCounterpartCodeList_Node0{"The system accesses the disposition
code table counterpart fields"}:::decision N_GetCounterpartCodeList_Node0_action["The system retrieves all defined
counterpart codes for the current
disposition code"]:::main N_GetCounterpartCodeList_Node0 -- Yes --> N_GetCounterpartCodeList_Node0_action N_GetCounterpartCodeList_Node0_action --> E_GetCounterpartCodeList S_GetCounterpartCodeList --> N_GetCounterpartCodeList_Node0 N_GetCounterpartCodeList_Node0 -- No --> E_GetCounterpartCodeList
File: GCX016E.cbl
GIVEN: A disposition code has been confirmed to have counterparts
WHEN: The system accesses the disposition code table counterpart fields
THEN: The system retrieves all defined counterpart codes for the current disposition code
βœ“ Consolidated Acceptance Criteria
  • The system searches through the cargo's S09A status array → the system identifies any existing counterpart codes in the current 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_SearchStatusArrayforCounterparts(["Start Step"]) E_SearchStatusArrayforCounterparts(["End Step"]) N_SearchStatusArrayforCounterparts_Node0{"The system searches through the
cargo s S09A status array"}:::decision N_SearchStatusArrayforCounterparts_Node0_action["The system identifies any existing
counterpart codes in the current
status array"]:::main N_SearchStatusArrayforCounterparts_Node0 -- Yes --> N_SearchStatusArrayforCounterparts_Node0_action N_SearchStatusArrayforCounterparts_Node0_action --> E_SearchStatusArrayforCounterparts S_SearchStatusArrayforCounterparts --> N_SearchStatusArrayforCounterparts_Node0 N_SearchStatusArrayforCounterparts_Node0 -- No --> E_SearchStatusArrayforCounterparts
File: GCX016E.cbl
GIVEN: A list of counterpart codes has been retrieved from the disposition code table
WHEN: The system searches through the cargo's S09A status array
THEN: The system identifies any existing counterpart codes in the current status array
βœ“ Consolidated Acceptance Criteria
  • The search results are evaluated → the system determines whether any counterpart codes were found 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_CounterpartFoundinArray(["Start Step"]) E_CounterpartFoundinArray(["End Step"]) N_CounterpartFoundinArray_Node0{"The search results are evaluated"}:::decision N_CounterpartFoundinArray_Node0_action["The system determines whether any
counterpart codes were found in the
status array"]:::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: GCX016E.cbl
GIVEN: The system has searched the status array for counterpart codes
WHEN: The search results are evaluated
THEN: The system determines whether any counterpart codes were found in the status array
βœ“ Consolidated Acceptance Criteria
  • If the regulatory hierarchy rules between codes → the system determines which code takes precedence based on 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_EvaluateRegulatoryHierarchy(["Start Step"]) E_EvaluateRegulatoryHierarchy(["End Step"]) N_EvaluateRegulatoryHierarchy_Node0{"The system evaluates the regulatory
hierarchy rules between codes"}:::decision N_EvaluateRegulatoryHierarchy_Node0_action["The system determines which code
takes precedence based on regulatory
requirements"]:::main N_EvaluateRegulatoryHierarchy_Node0 -- Yes --> N_EvaluateRegulatoryHierarchy_Node0_action N_EvaluateRegulatoryHierarchy_Node0_action --> E_EvaluateRegulatoryHierarchy S_EvaluateRegulatoryHierarchy --> N_EvaluateRegulatoryHierarchy_Node0 N_EvaluateRegulatoryHierarchy_Node0 -- No --> E_EvaluateRegulatoryHierarchy
File: GCX016E.cbl
GIVEN: Counterpart codes have been found in the cargo status array
WHEN: The system evaluates the regulatory hierarchy rules between codes
THEN: The system determines which code takes precedence based on regulatory requirements
βœ“ Consolidated Acceptance Criteria
  • The system applies supersession rules → the system determines if the current code supersedes the counterpart code requiring its 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_CurrentCodeSupersedesCounterpart(["Start Step"]) E_CurrentCodeSupersedesCounterpart(["End Step"]) N_CurrentCodeSupersedesCounterpart_Node0{"The system applies supersession
rules"}:::decision N_CurrentCodeSupersedesCounterpart_Node0_action["The system determines if the
current code supersedes the
counterpart code requiring its
removal"]:::main N_CurrentCodeSupersedesCounterpart_Node0 -- Yes --> N_CurrentCodeSupersedesCounterpart_Node0_action N_CurrentCodeSupersedesCounterpart_Node0_action --> E_CurrentCodeSupersedesCounterpart S_CurrentCodeSupersedesCounterpart --> N_CurrentCodeSupersedesCounterpart_Node0 N_CurrentCodeSupersedesCounterpart_Node0 -- No --> E_CurrentCodeSupersedesCounterpart
File: GCX016E.cbl
GIVEN: Regulatory hierarchy has been evaluated between current and counterpart codes
WHEN: The system applies supersession rules
THEN: The system determines if the current code supersedes the counterpart code requiring its removal
βœ“ Consolidated Acceptance Criteria
  • The system processes the supersession rule → the system marks the counterpart code 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_MarkCounterpartforRemoval(["Start Step"]) E_MarkCounterpartforRemoval(["End Step"]) N_MarkCounterpartforRemoval_Node0{"The system processes the
supersession rule"}:::decision N_MarkCounterpartforRemoval_Node0_action["The system marks the counterpart
code for removal from the status
array"]:::main N_MarkCounterpartforRemoval_Node0 -- Yes --> N_MarkCounterpartforRemoval_Node0_action N_MarkCounterpartforRemoval_Node0_action --> E_MarkCounterpartforRemoval S_MarkCounterpartforRemoval --> N_MarkCounterpartforRemoval_Node0 N_MarkCounterpartforRemoval_Node0 -- No --> E_MarkCounterpartforRemoval
File: GCX016E.cbl
GIVEN: The current disposition code supersedes a counterpart code
WHEN: The system processes the supersession rule
THEN: The system marks the counterpart code for removal from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the removal action → the system logs the counterpart removal action 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_LogCounterpartRemovalAction(["Start Step"]) E_LogCounterpartRemovalAction(["End Step"]) N_LogCounterpartRemovalAction_Node0{"The system processes the removal
action"}:::decision N_LogCounterpartRemovalAction_Node0_action["The system logs the counterpart
removal action with relevant details"]:::main N_LogCounterpartRemovalAction_Node0 -- Yes --> N_LogCounterpartRemovalAction_Node0_action N_LogCounterpartRemovalAction_Node0_action --> E_LogCounterpartRemovalAction S_LogCounterpartRemovalAction --> N_LogCounterpartRemovalAction_Node0 N_LogCounterpartRemovalAction_Node0 -- No --> E_LogCounterpartRemovalAction
File: GCX016E.cbl
GIVEN: A counterpart code has been marked for removal
WHEN: The system processes the removal action
THEN: The system logs the counterpart removal action with relevant details
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo status array → the system removes the counterpart code from 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_RemoveCounterpartfromStatusArray(["Start Step"]) E_RemoveCounterpartfromStatusArray(["End Step"]) N_RemoveCounterpartfromStatusArray_Node0{"The system updates the cargo status
array"}:::decision N_RemoveCounterpartfromStatusArray_Node0_action["The system removes the counterpart
code from the S09A status array"]:::main N_RemoveCounterpartfromStatusArray_Node0 -- Yes --> N_RemoveCounterpartfromStatusArray_Node0_action N_RemoveCounterpartfromStatusArray_Node0_action --> E_RemoveCounterpartfromStatusArray S_RemoveCounterpartfromStatusArray --> N_RemoveCounterpartfromStatusArray_Node0 N_RemoveCounterpartfromStatusArray_Node0 -- No --> E_RemoveCounterpartfromStatusArray
File: GCX016E.cbl
GIVEN: A counterpart code has been marked for removal and logged
WHEN: The system updates the cargo status array
THEN: The system removes the counterpart code from the S09A status array
βœ“ Consolidated Acceptance Criteria
  • The system checks the remaining counterpart code list → the system determines if more counterpart codes require processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_MoreCounterpartstoCheck(["Start Step"]) E_MoreCounterpartstoCheck(["End Step"]) N_MoreCounterpartstoCheck_Node0{"The system checks the remaining
counterpart code list"}:::decision N_MoreCounterpartstoCheck_Node0_action["The system determines if more
counterpart codes require processing"]:::main N_MoreCounterpartstoCheck_Node0 -- Yes --> N_MoreCounterpartstoCheck_Node0_action N_MoreCounterpartstoCheck_Node0_action --> E_MoreCounterpartstoCheck S_MoreCounterpartstoCheck --> N_MoreCounterpartstoCheck_Node0 N_MoreCounterpartstoCheck_Node0 -- No --> E_MoreCounterpartstoCheck
File: GCX016E.cbl
GIVEN: One counterpart code has been processed
WHEN: The system checks the remaining counterpart code list
THEN: The system determines if more counterpart codes require processing
βœ“ Consolidated Acceptance Criteria
  • The system reorganizes the status array → the system resequences the remaining status codes to eliminate gaps
  • The system reorganizes the array structure → all remaining disposition codes must be resequenced to eliminate gaps and maintain proper chronological 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_ReorganizeStatusArraySequence(["Start Step"]) E_ReorganizeStatusArraySequence(["End Step"]) N_ReorganizeStatusArraySequence_Node0{"The system reorganizes the status
array"}:::decision N_ReorganizeStatusArraySequence_Node0_action["The system resequences the
remaining status codes to eliminate
gaps"]:::main N_ReorganizeStatusArraySequence_Node0 -- Yes --> N_ReorganizeStatusArraySequence_Node0_action N_ReorganizeStatusArraySequence_Node0_action --> E_ReorganizeStatusArraySequence S_ReorganizeStatusArraySequence --> N_ReorganizeStatusArraySequence_Node0 N_ReorganizeStatusArraySequence_Node1{"The system reorganizes the array
structure"}:::decision N_ReorganizeStatusArraySequence_Node1_action["All remaining disposition codes
must be resequenced to eliminate
gaps and maintain proper
chronological order"]:::main N_ReorganizeStatusArraySequence_Node1 -- Yes --> N_ReorganizeStatusArraySequence_Node1_action N_ReorganizeStatusArraySequence_Node1_action --> E_ReorganizeStatusArraySequence N_ReorganizeStatusArraySequence_Node0 -- No --> N_ReorganizeStatusArraySequence_Node1 N_ReorganizeStatusArraySequence_Node1 -- No --> E_ReorganizeStatusArraySequence
File: GCX016E.cbl
GIVEN: All counterpart codes have been processed and removed
WHEN: The system reorganizes the status array
THEN: The system resequences the remaining status codes to eliminate gaps
File: GCX016E.cbl
GIVEN: A status array with a removed disposition code creating a gap in sequence
WHEN: The system reorganizes the array structure
THEN:
  • All remaining disposition codes must be resequenced to eliminate gaps
  • Maintain proper chronological order
βœ“ Consolidated Acceptance Criteria
  • The system updates array management fields → the system updates status array indexes and occurrence counters to reflect the current array 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_UpdateStatusArrayIndexes(["Start Step"]) E_UpdateStatusArrayIndexes(["End Step"]) N_UpdateStatusArrayIndexes_Node0{"The system updates array management
fields"}:::decision N_UpdateStatusArrayIndexes_Node0_action["The system updates status array
indexes and occurrence counters to
reflect the current array state"]:::main N_UpdateStatusArrayIndexes_Node0 -- Yes --> N_UpdateStatusArrayIndexes_Node0_action N_UpdateStatusArrayIndexes_Node0_action --> E_UpdateStatusArrayIndexes S_UpdateStatusArrayIndexes --> N_UpdateStatusArrayIndexes_Node0 N_UpdateStatusArrayIndexes_Node0 -- No --> E_UpdateStatusArrayIndexes
File: GCX016E.cbl
GIVEN: The status array has been reorganized after counterpart removals
WHEN: The system updates array management fields
THEN:
  • The system updates status array indexes
  • Occurrence counters to reflect the current array state
βœ“ Consolidated Acceptance Criteria
  • The system needs to evaluate cargo status → the current cargo status, hold flags, release quantities, and processing flags are retrieved from the cargo record
  • The system needs to process the cancellation → the system retrieves the current cargo status from the cargo root record
  • The system needs to preserve cargo status for audit purposes → the current cargo status is retrieved from the cargo root record including all status flags 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_RetrieveCurrentCargoStatus(["Start Step"]) E_RetrieveCurrentCargoStatus(["End Step"]) N_RetrieveCurrentCargoStatus_Node0{"The system needs to evaluate cargo
status"}:::decision N_RetrieveCurrentCargoStatus_Node0_action["The current cargo status, hold
flags, release quantities, and
processing flags are retrieved from
the cargo record"]:::main N_RetrieveCurrentCargoStatus_Node0 -- Yes --> N_RetrieveCurrentCargoStatus_Node0_action N_RetrieveCurrentCargoStatus_Node0_action --> E_RetrieveCurrentCargoStatus S_RetrieveCurrentCargoStatus --> N_RetrieveCurrentCargoStatus_Node0 N_RetrieveCurrentCargoStatus_Node1{"The system needs to process the
cancellation"}:::decision N_RetrieveCurrentCargoStatus_Node1_action["The system retrieves the current
cargo status from the cargo root
record"]:::main N_RetrieveCurrentCargoStatus_Node1 -- Yes --> N_RetrieveCurrentCargoStatus_Node1_action N_RetrieveCurrentCargoStatus_Node1_action --> E_RetrieveCurrentCargoStatus N_RetrieveCurrentCargoStatus_Node0 -- No --> N_RetrieveCurrentCargoStatus_Node1 N_RetrieveCurrentCargoStatus_Node2{"The system needs to preserve cargo
status for audit purposes"}:::decision N_RetrieveCurrentCargoStatus_Node2_action["The current cargo status is
retrieved from the cargo root record
including all status flags and
values"]:::main N_RetrieveCurrentCargoStatus_Node2 -- Yes --> N_RetrieveCurrentCargoStatus_Node2_action N_RetrieveCurrentCargoStatus_Node2_action --> E_RetrieveCurrentCargoStatus N_RetrieveCurrentCargoStatus_Node1 -- No --> N_RetrieveCurrentCargoStatus_Node2 N_RetrieveCurrentCargoStatus_Node2 -- No --> E_RetrieveCurrentCargoStatus
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The system needs to evaluate cargo status
THEN: The current cargo status, hold flags, release quantities, and processing flags are retrieved from the cargo record
File: GCX016E.cbl
GIVEN: A cancellation request is being processed for a cargo
WHEN: The system needs to process the cancellation
THEN: The system retrieves the current cargo status from the cargo root record
File: GCX016E.cbl
GIVEN: A cargo record exists in the system with current status information
WHEN: The system needs to preserve cargo status for audit purposes
THEN:
  • The current cargo status is retrieved from the cargo root record including all status flags
  • Values
βœ“ Consolidated Acceptance Criteria
  • If cargo status → all disposition codes in the status arrays are analyzed for hold conditions, release conditions, and quantity impacts
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AnalyzeS09AStatusArrays(["Start Step"]) E_AnalyzeS09AStatusArrays(["End Step"]) N_AnalyzeS09AStatusArrays_Node0{"The system evaluates cargo status"}:::decision N_AnalyzeS09AStatusArrays_Node0_action["All disposition codes in the status
arrays are analyzed for hold
conditions, release conditions, and
quantity impacts"]:::main N_AnalyzeS09AStatusArrays_Node0 -- Yes --> N_AnalyzeS09AStatusArrays_Node0_action N_AnalyzeS09AStatusArrays_Node0_action --> E_AnalyzeS09AStatusArrays S_AnalyzeS09AStatusArrays --> N_AnalyzeS09AStatusArrays_Node0 N_AnalyzeS09AStatusArrays_Node0 -- No --> E_AnalyzeS09AStatusArrays
File: GCX016E.cbl
GIVEN: A cargo has S09A status arrays with disposition codes
WHEN: The system evaluates cargo status
THEN: All disposition codes in the status arrays are analyzed for hold conditions, release conditions, and quantity impacts
βœ“ Consolidated Acceptance Criteria
  • The system checks for hold conditions → the system identifies if border holds, destination holds, FDA holds, or piece count holds are active
  • The system checks for hold conditions including border holds, destination holds, or FDA holds → the system identifies if any hold disposition codes are present and sets hold priority flag 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_HoldConditionsPresent(["Start Step"]) E_HoldConditionsPresent(["End Step"]) N_HoldConditionsPresent_Node0{"The system checks for hold
conditions"}:::decision N_HoldConditionsPresent_Node0_action["The system identifies if border
holds, destination holds, FDA holds,
or piece count holds are active"]:::main N_HoldConditionsPresent_Node0 -- Yes --> N_HoldConditionsPresent_Node0_action N_HoldConditionsPresent_Node0_action --> E_HoldConditionsPresent S_HoldConditionsPresent --> N_HoldConditionsPresent_Node0 N_HoldConditionsPresent_Node1{"The system checks for hold
conditions including border holds,
destination holds, or FDA holds"}:::decision N_HoldConditionsPresent_Node1_action["The system identifies if any hold
disposition codes are present and
sets hold priority flag accordingly"]:::main N_HoldConditionsPresent_Node1 -- Yes --> N_HoldConditionsPresent_Node1_action N_HoldConditionsPresent_Node1_action --> E_HoldConditionsPresent N_HoldConditionsPresent_Node0 -- No --> N_HoldConditionsPresent_Node1 N_HoldConditionsPresent_Node1 -- No --> E_HoldConditionsPresent
File: GCX016E.cbl
GIVEN: A cargo with status arrays containing disposition codes
WHEN: The system checks for hold conditions
THEN: The system identifies if border holds, destination holds, FDA holds, or piece count holds are active
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system checks for hold conditions including border holds, destination holds, or FDA holds
THEN:
  • The system identifies if any hold disposition codes are present
  • Sets hold priority flag accordingly
βœ“ Consolidated Acceptance Criteria
  • If border hold conditions → the system determines if cargo is held at border based on specific disposition codes and location information
  • The system checks for border hold status → the system searches the status array for border hold disposition codes and identifies if border hold is 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_CheckBorderHoldStatus(["Start Step"]) E_CheckBorderHoldStatus(["End Step"]) N_CheckBorderHoldStatus_Node0{"The system evaluates border hold
conditions"}:::decision N_CheckBorderHoldStatus_Node0_action["The system determines if cargo is
held at border based on specific
disposition codes and location
information"]:::main N_CheckBorderHoldStatus_Node0 -- Yes --> N_CheckBorderHoldStatus_Node0_action N_CheckBorderHoldStatus_Node0_action --> E_CheckBorderHoldStatus S_CheckBorderHoldStatus --> N_CheckBorderHoldStatus_Node0 N_CheckBorderHoldStatus_Node1{"The system checks for border hold
status"}:::decision N_CheckBorderHoldStatus_Node1_action["The system searches the status
array for border hold disposition
codes and identifies if border hold
is active"]:::main N_CheckBorderHoldStatus_Node1 -- Yes --> N_CheckBorderHoldStatus_Node1_action N_CheckBorderHoldStatus_Node1_action --> E_CheckBorderHoldStatus N_CheckBorderHoldStatus_Node0 -- No --> N_CheckBorderHoldStatus_Node1 N_CheckBorderHoldStatus_Node1 -- No --> E_CheckBorderHoldStatus
File: GCX016E.cbl
GIVEN: A cargo with disposition codes in status arrays
WHEN: The system evaluates border hold conditions
THEN:
  • The system determines if cargo is held at border based on specific disposition codes
  • Location information
File: GCX016E.cbl
GIVEN: A cargo has a status array with disposition codes
WHEN: The system checks for border hold status
THEN:
  • The system searches the status array for border hold disposition codes
  • Identifies if border hold is active
βœ“ Consolidated Acceptance Criteria
  • If destination hold conditions → the system determines if cargo is held at destination based on disposition codes and destination location
  • The system checks for destination hold status → the system searches the status array for destination hold disposition codes and identifies if destination hold is 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_CheckDestinationHoldStatus(["Start Step"]) E_CheckDestinationHoldStatus(["End Step"]) N_CheckDestinationHoldStatus_Node0{"The system evaluates destination
hold conditions"}:::decision N_CheckDestinationHoldStatus_Node0_action["The system determines if cargo is
held at destination based on
disposition codes and destination
location"]:::main N_CheckDestinationHoldStatus_Node0 -- Yes --> N_CheckDestinationHoldStatus_Node0_action N_CheckDestinationHoldStatus_Node0_action --> E_CheckDestinationHoldStatus S_CheckDestinationHoldStatus --> N_CheckDestinationHoldStatus_Node0 N_CheckDestinationHoldStatus_Node1{"The system checks for destination
hold status"}:::decision N_CheckDestinationHoldStatus_Node1_action["The system searches the status
array for destination hold
disposition codes and identifies if
destination hold is active"]:::main N_CheckDestinationHoldStatus_Node1 -- Yes --> N_CheckDestinationHoldStatus_Node1_action N_CheckDestinationHoldStatus_Node1_action --> E_CheckDestinationHoldStatus N_CheckDestinationHoldStatus_Node0 -- No --> N_CheckDestinationHoldStatus_Node1 N_CheckDestinationHoldStatus_Node1 -- No --> E_CheckDestinationHoldStatus
File: GCX016E.cbl
GIVEN: A cargo with disposition codes and destination information
WHEN: The system evaluates destination hold conditions
THEN:
  • The system determines if cargo is held at destination based on disposition codes
  • Destination location
File: GCX016E.cbl
GIVEN: A cargo has a status array with disposition codes
WHEN: The system checks for destination hold status
THEN:
  • The system searches the status array for destination hold disposition codes
  • Identifies if destination hold is active
βœ“ Consolidated Acceptance Criteria
  • If FDA hold conditions → the system determines if cargo requires FDA clearance and sets HOLDFDA status if applicable
  • The system checks for FDA hold status → the system searches the status array for FDA hold disposition codes and identifies if FDA hold is 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_CheckFDAHoldStatus(["Start Step"]) E_CheckFDAHoldStatus(["End Step"]) N_CheckFDAHoldStatus_Node0{"The system evaluates FDA hold
conditions"}:::decision N_CheckFDAHoldStatus_Node0_action["The system determines if cargo
requires FDA clearance and sets
HOLDFDA status if applicable"]:::main N_CheckFDAHoldStatus_Node0 -- Yes --> N_CheckFDAHoldStatus_Node0_action N_CheckFDAHoldStatus_Node0_action --> E_CheckFDAHoldStatus S_CheckFDAHoldStatus --> N_CheckFDAHoldStatus_Node0 N_CheckFDAHoldStatus_Node1{"The system checks for FDA hold
status"}:::decision N_CheckFDAHoldStatus_Node1_action["The system searches the status
array for FDA hold disposition codes
and identifies if FDA hold is active"]:::main N_CheckFDAHoldStatus_Node1 -- Yes --> N_CheckFDAHoldStatus_Node1_action N_CheckFDAHoldStatus_Node1_action --> E_CheckFDAHoldStatus N_CheckFDAHoldStatus_Node0 -- No --> N_CheckFDAHoldStatus_Node1 N_CheckFDAHoldStatus_Node1 -- No --> E_CheckFDAHoldStatus
File: GCX016E.cbl
GIVEN: A cargo with disposition codes that may include FDA-related holds
WHEN: The system evaluates FDA hold conditions
THEN:
  • The system determines if cargo requires fda clearance
  • Sets holdfda status if applicable
File: GCX016E.cbl
GIVEN: A cargo has a status array with disposition codes
WHEN: The system checks for FDA hold status
THEN:
  • The system searches the status array for fda hold disposition codes
  • Identifies if fda hold is active
βœ“ Consolidated Acceptance Criteria
  • If piece count hold conditions → the system determines if cargo has piece count holds based on quantity discrepancies or partial release conditions
  • The system checks for piece count hold status → the system evaluates release quantities against total quantities to identify if piece count hold is 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_CheckPieceCountHoldStatus(["Start Step"]) E_CheckPieceCountHoldStatus(["End Step"]) N_CheckPieceCountHoldStatus_Node0{"The system evaluates piece count
hold conditions"}:::decision N_CheckPieceCountHoldStatus_Node0_action["The system determines if cargo has
piece count holds based on quantity
discrepancies or partial release
conditions"]:::main N_CheckPieceCountHoldStatus_Node0 -- Yes --> N_CheckPieceCountHoldStatus_Node0_action N_CheckPieceCountHoldStatus_Node0_action --> E_CheckPieceCountHoldStatus S_CheckPieceCountHoldStatus --> N_CheckPieceCountHoldStatus_Node0 N_CheckPieceCountHoldStatus_Node1{"The system checks for piece count
hold status"}:::decision N_CheckPieceCountHoldStatus_Node1_action["The system evaluates release
quantities against total quantities
to identify if piece count hold is
active"]:::main N_CheckPieceCountHoldStatus_Node1 -- Yes --> N_CheckPieceCountHoldStatus_Node1_action N_CheckPieceCountHoldStatus_Node1_action --> E_CheckPieceCountHoldStatus N_CheckPieceCountHoldStatus_Node0 -- No --> N_CheckPieceCountHoldStatus_Node1 N_CheckPieceCountHoldStatus_Node1 -- No --> E_CheckPieceCountHoldStatus
File: GCX016E.cbl
GIVEN: A cargo with quantity information and release history
WHEN: The system evaluates piece count hold conditions
THEN: The system determines if cargo has piece count holds based on quantity discrepancies or partial release conditions
File: GCX016E.cbl
GIVEN: A cargo has a status array with disposition codes and quantity information
WHEN: The system checks for piece count hold status
THEN: The system evaluates release quantities against total quantities to identify if piece count hold is active
βœ“ Consolidated Acceptance Criteria
  • The system checks for manual release authorization → the system identifies if manual release (MRL) disposition codes are present and takes precedence over other status conditions
  • The system analyzes the cargo's release status indicators → the cargo is classified as either having manual release or no manual release based on release status flags
  • The system checks for manual release indicators → if manual release is found, skip other hold checks and mark as released, otherwise continue with hold type evaluation
  • The system checks the cargo's release status indicators → the manual release status is determined and recorded for subsequent processing
  • The system checks for manual release authorization → the system determines if manual release disposition codes or authorizations have been 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_CheckManualReleaseStatus(["Start Step"]) E_CheckManualReleaseStatus(["End Step"]) N_CheckManualReleaseStatus_Node0{"The system checks for manual
release authorization"}:::decision N_CheckManualReleaseStatus_Node0_action["The system identifies if manual
release MRL disposition codes are
present and takes precedence over
other status conditions"]:::main N_CheckManualReleaseStatus_Node0 -- Yes --> N_CheckManualReleaseStatus_Node0_action N_CheckManualReleaseStatus_Node0_action --> E_CheckManualReleaseStatus S_CheckManualReleaseStatus --> N_CheckManualReleaseStatus_Node0 N_CheckManualReleaseStatus_Node1{"The system analyzes the cargo s
release status indicators"}:::decision N_CheckManualReleaseStatus_Node1_action["The cargo is classified as either
having manual release or no manual
release based on release status
flags"]:::main N_CheckManualReleaseStatus_Node1 -- Yes --> N_CheckManualReleaseStatus_Node1_action N_CheckManualReleaseStatus_Node1_action --> E_CheckManualReleaseStatus N_CheckManualReleaseStatus_Node0 -- No --> N_CheckManualReleaseStatus_Node1 N_CheckManualReleaseStatus_Node2{"The system checks for manual
release indicators"}:::decision N_CheckManualReleaseStatus_Node2_action["If manual release is found, skip
other hold checks and mark as
released, otherwise continue with
hold type evaluation"]:::main N_CheckManualReleaseStatus_Node2 -- Yes --> N_CheckManualReleaseStatus_Node2_action N_CheckManualReleaseStatus_Node2_action --> E_CheckManualReleaseStatus N_CheckManualReleaseStatus_Node1 -- No --> N_CheckManualReleaseStatus_Node2 N_CheckManualReleaseStatus_Node3{"The system checks the cargo s
release status indicators"}:::decision N_CheckManualReleaseStatus_Node3_action["The manual release status is
determined and recorded for
subsequent processing"]:::main N_CheckManualReleaseStatus_Node3 -- Yes --> N_CheckManualReleaseStatus_Node3_action N_CheckManualReleaseStatus_Node3_action --> E_CheckManualReleaseStatus N_CheckManualReleaseStatus_Node2 -- No --> N_CheckManualReleaseStatus_Node3 N_CheckManualReleaseStatus_Node4{"The system checks for manual
release authorization"}:::decision N_CheckManualReleaseStatus_Node4_action["The system determines if manual
release disposition codes or
authorizations have been applied to
the cargo"]:::main N_CheckManualReleaseStatus_Node4 -- Yes --> N_CheckManualReleaseStatus_Node4_action N_CheckManualReleaseStatus_Node4_action --> E_CheckManualReleaseStatus N_CheckManualReleaseStatus_Node3 -- No --> N_CheckManualReleaseStatus_Node4 N_CheckManualReleaseStatus_Node4 -- No --> E_CheckManualReleaseStatus
File: GCX016E.cbl
GIVEN: A cargo with disposition codes that may include manual release codes
WHEN: The system checks for manual release authorization
THEN:
  • The system identifies if manual release (mrl) disposition codes are present
  • Takes precedence over other status conditions
File: GCX016E.cbl
GIVEN: An active cargo record exists in the system
WHEN: The system analyzes the cargo's release status indicators
THEN: The cargo is classified as either having manual release or no manual release based on release status flags
File: GCX016E.cbl
GIVEN: A cargo record is being analyzed for release status
WHEN: The system checks for manual release indicators
THEN:
  • If manual release is found, skip other hold checks
  • Mark as released, otherwise continue with hold type evaluation
File: GCX016E.cbl
GIVEN: A non-deleted cargo record is being analyzed
WHEN: The system checks the cargo's release status indicators
THEN:
  • The manual release status is determined
  • Recorded for subsequent processing
File: GCX016E.cbl
GIVEN: A cargo record with identified hold status
WHEN: The system checks for manual release authorization
THEN: The system determines if manual release disposition codes or authorizations have been applied to the cargo
βœ“ Consolidated Acceptance Criteria
  • If overall release eligibility → the system determines if cargo can be released based on absence of active holds and presence of valid release authorization
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 overall
release eligibility"}:::decision N_ReleaseConditionsMet_Node0_action["The system determines if cargo can
be released based on absence of
active holds and presence of valid
release authorization"]:::main N_ReleaseConditionsMet_Node0 -- Yes --> N_ReleaseConditionsMet_Node0_action N_ReleaseConditionsMet_Node0_action --> E_ReleaseConditionsMet S_ReleaseConditionsMet --> N_ReleaseConditionsMet_Node0 N_ReleaseConditionsMet_Node0 -- No --> E_ReleaseConditionsMet
File: GCX016E.cbl
GIVEN: A cargo with analyzed hold and release conditions
WHEN: The system evaluates overall release eligibility
THEN:
  • The system determines if cargo can be released based on absence of active holds
  • Presence of valid release authorization
βœ“ Consolidated Acceptance Criteria
  • If proceed eligibility → the system determines if cargo can proceed based on release status, hold conditions, and processing requirements
  • If proceed-specific business conditions (in-bond requirements, entry type validation) → proceed conditions are assessed to determine if in-bond proceed business flag should be 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_EvaluateProceedConditions(["Start Step"]) E_EvaluateProceedConditions(["End Step"]) N_EvaluateProceedConditions_Node0{"The system evaluates proceed
eligibility"}:::decision N_EvaluateProceedConditions_Node0_action["The system determines if cargo can
proceed based on release status,
hold conditions, and processing
requirements"]:::main N_EvaluateProceedConditions_Node0 -- Yes --> N_EvaluateProceedConditions_Node0_action N_EvaluateProceedConditions_Node0_action --> E_EvaluateProceedConditions S_EvaluateProceedConditions --> N_EvaluateProceedConditions_Node0 N_EvaluateProceedConditions_Node1{"The system evaluates
proceed-specific business conditions
in-bond requirements, entry type
validation"}:::decision N_EvaluateProceedConditions_Node1_action["Proceed conditions are assessed to
determine if in-bond proceed
business flag should be activated"]:::main N_EvaluateProceedConditions_Node1 -- Yes --> N_EvaluateProceedConditions_Node1_action N_EvaluateProceedConditions_Node1_action --> E_EvaluateProceedConditions N_EvaluateProceedConditions_Node0 -- No --> N_EvaluateProceedConditions_Node1 N_EvaluateProceedConditions_Node1 -- No --> E_EvaluateProceedConditions
File: GCX016E.cbl
GIVEN: A cargo with analyzed status and release conditions
WHEN: The system evaluates proceed eligibility
THEN: The system determines if cargo can proceed based on release status, hold conditions, and processing requirements
File: GCX016E.cbl
GIVEN: A proceed status flag has been set or release evaluation is complete
WHEN: The system evaluates proceed-specific business conditions (in-bond requirements, entry type validation)
THEN: Proceed conditions are assessed to determine if in-bond proceed business flag should be activated
βœ“ Consolidated Acceptance Criteria
  • The system checks for in-bond entry classification → the system identifies if cargo has entry types 61, 62, 63, or 69 indicating in-bond processing requirements
  • If entry types 61, 62, 63, or 69 for in-bond classification → the system sets in-bond processing flags and enables customs 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_InBondEntry(["Start Step"]) E_InBondEntry(["End Step"]) N_InBondEntry_Node0{"The system checks for in-bond entry
classification"}:::decision N_InBondEntry_Node0_action["The system identifies if cargo has
entry types 61, 62, 63, or 69
indicating in-bond processing
requirements"]:::main N_InBondEntry_Node0 -- Yes --> N_InBondEntry_Node0_action N_InBondEntry_Node0_action --> E_InBondEntry S_InBondEntry --> N_InBondEntry_Node0 N_InBondEntry_Node1{"The system evaluates entry types
61, 62, 63, or 69 for in-bond
classification"}:::decision N_InBondEntry_Node1_action["The system sets in-bond processing
flags and enables customs movement
tracking"]:::main N_InBondEntry_Node1 -- Yes --> N_InBondEntry_Node1_action N_InBondEntry_Node1_action --> E_InBondEntry N_InBondEntry_Node0 -- No --> N_InBondEntry_Node1 N_InBondEntry_Node1 -- No --> E_InBondEntry
File: GCX016E.cbl
GIVEN: A cargo with entry type information
WHEN: The system checks for in-bond entry classification
THEN: The system identifies if cargo has entry types 61, 62, 63, or 69 indicating in-bond processing requirements
File: GCX016E.cbl
GIVEN: A cargo record with entry type and customs information
WHEN: The system evaluates entry types 61, 62, 63, or 69 for in-bond classification
THEN:
  • The system sets in-bond processing flags
  • Enables customs movement tracking
βœ“ Consolidated Acceptance Criteria
  • The system processes in-bond logic → the system sets in-bond information, updates broker details, handles bond numbers, and applies Canadian border crossing vessel swap rules if 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_ProcessInBondLogic(["Start Step"]) E_ProcessInBondLogic(["End Step"]) N_ProcessInBondLogic_Node0{"The system processes in-bond logic"}:::decision N_ProcessInBondLogic_Node0_action["The system sets in-bond
information, updates broker details,
handles bond numbers, and applies
Canadian border crossing vessel swap
rules if applicable"]:::main N_ProcessInBondLogic_Node0 -- Yes --> N_ProcessInBondLogic_Node0_action N_ProcessInBondLogic_Node0_action --> E_ProcessInBondLogic S_ProcessInBondLogic --> N_ProcessInBondLogic_Node0 N_ProcessInBondLogic_Node0 -- No --> E_ProcessInBondLogic
File: GCX016E.cbl
GIVEN: A cargo identified as in-bond entry type
WHEN: The system processes in-bond logic
THEN: The system sets in-bond information, updates broker details, handles bond numbers, and applies Canadian border crossing vessel swap rules if applicable
βœ“ Consolidated Acceptance Criteria
  • The system sets master in-bond flags → the system establishes master-level in-bond indicators that control downstream processing and reporting
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetMasterInBondFlags(["Start Step"]) E_SetMasterInBondFlags(["End Step"]) N_SetMasterInBondFlags_Node0{"The system sets master in-bond
flags"}:::decision N_SetMasterInBondFlags_Node0_action["The system establishes master-level
in-bond indicators that control
downstream processing and reporting"]:::main N_SetMasterInBondFlags_Node0 -- Yes --> N_SetMasterInBondFlags_Node0_action N_SetMasterInBondFlags_Node0_action --> E_SetMasterInBondFlags S_SetMasterInBondFlags --> N_SetMasterInBondFlags_Node0 N_SetMasterInBondFlags_Node0 -- No --> E_SetMasterInBondFlags
File: GCX016E.cbl
GIVEN: A cargo requiring in-bond processing
WHEN: The system sets master in-bond flags
THEN:
  • The system establishes master-level in-bond indicators that control downstream processing
  • Reporting
βœ“ Consolidated Acceptance Criteria
  • If arrival status requirements → the system determines if cargo needs arrival status based on disposition codes indicating arrival events (POD, AAD) or arrival-related processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 system evaluates arrival status
requirements"}:::decision N_ArrivalStatusRequired_Node0_action["The system determines if cargo
needs arrival status based on
disposition codes indicating arrival
events POD, AAD or arrival-related
processing"]:::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: GCX016E.cbl
GIVEN: A cargo with disposition codes and location information
WHEN: The system evaluates arrival status requirements
THEN: The system determines if cargo needs arrival status based on disposition codes indicating arrival events (POD, AAD) or arrival-related processing
βœ“ Consolidated Acceptance Criteria
  • The system validates arrival location → the system confirms the arrival location is valid and matches expected destination or border crossing points
  • The system validates the arrival location → the system confirms the location is valid for arrival processing and matches cargo routing requirements
  • The system validates the location code against valid arrival locations → the system confirms the location is authorized for arrival processing or rejects invalid 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_ValidateArrivalLocation(["Start Step"]) E_ValidateArrivalLocation(["End Step"]) N_ValidateArrivalLocation_Node0{"The system validates arrival
location"}:::decision N_ValidateArrivalLocation_Node0_action["The system confirms the arrival
location is valid and matches
expected destination or border
crossing points"]:::main N_ValidateArrivalLocation_Node0 -- Yes --> N_ValidateArrivalLocation_Node0_action N_ValidateArrivalLocation_Node0_action --> E_ValidateArrivalLocation S_ValidateArrivalLocation --> N_ValidateArrivalLocation_Node0 N_ValidateArrivalLocation_Node1{"The system validates the arrival
location"}:::decision N_ValidateArrivalLocation_Node1_action["The system confirms the location is
valid for arrival processing and
matches cargo routing requirements"]:::main N_ValidateArrivalLocation_Node1 -- Yes --> N_ValidateArrivalLocation_Node1_action N_ValidateArrivalLocation_Node1_action --> E_ValidateArrivalLocation N_ValidateArrivalLocation_Node0 -- No --> N_ValidateArrivalLocation_Node1 N_ValidateArrivalLocation_Node2{"The system validates the location
code against valid arrival locations"}:::decision N_ValidateArrivalLocation_Node2_action["The system confirms the location is
authorized for arrival processing or
rejects invalid locations"]:::main N_ValidateArrivalLocation_Node2 -- Yes --> N_ValidateArrivalLocation_Node2_action N_ValidateArrivalLocation_Node2_action --> E_ValidateArrivalLocation N_ValidateArrivalLocation_Node1 -- No --> N_ValidateArrivalLocation_Node2 N_ValidateArrivalLocation_Node2 -- No --> E_ValidateArrivalLocation
File: GCX016E.cbl
GIVEN: A cargo requiring arrival status with location information
WHEN: The system validates arrival location
THEN:
  • The system confirms the arrival location is valid
  • Matches expected destination or border crossing points
File: GCX016E.cbl
GIVEN: A cargo has an arrival disposition code and location information
WHEN: The system validates the arrival location
THEN:
  • The system confirms the location is valid for arrival processing
  • Matches cargo routing requirements
File: GCX016E.cbl
GIVEN: An arrival disposition code (AAD or POD) has been identified
WHEN: The system validates the location code against valid arrival locations
THEN: The system confirms the location is authorized for arrival processing or rejects invalid locations
βœ“ Consolidated Acceptance Criteria
  • The system sets arrival status flags → the system sets arrival status flags, updates arrival dates, and establishes arrival processing indicators
  • The system processes the arrival event → the system sets arrival status flags including arrival date, arrival location, and arrival type 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_SetArrivalStatusFlags(["Start Step"]) E_SetArrivalStatusFlags(["End Step"]) N_SetArrivalStatusFlags_Node0{"The system sets arrival status
flags"}:::decision N_SetArrivalStatusFlags_Node0_action["The system sets arrival status
flags, updates arrival dates, and
establishes arrival processing
indicators"]:::main N_SetArrivalStatusFlags_Node0 -- Yes --> N_SetArrivalStatusFlags_Node0_action N_SetArrivalStatusFlags_Node0_action --> E_SetArrivalStatusFlags S_SetArrivalStatusFlags --> N_SetArrivalStatusFlags_Node0 N_SetArrivalStatusFlags_Node1{"The system processes the arrival
event"}:::decision N_SetArrivalStatusFlags_Node1_action["The system sets arrival status
flags including arrival date,
arrival location, and arrival type
indicators"]:::main N_SetArrivalStatusFlags_Node1 -- Yes --> N_SetArrivalStatusFlags_Node1_action N_SetArrivalStatusFlags_Node1_action --> E_SetArrivalStatusFlags N_SetArrivalStatusFlags_Node0 -- No --> N_SetArrivalStatusFlags_Node1 N_SetArrivalStatusFlags_Node1 -- No --> E_SetArrivalStatusFlags
File: GCX016E.cbl
GIVEN: A cargo with validated arrival location
WHEN: The system sets arrival status flags
THEN: The system sets arrival status flags, updates arrival dates, and establishes arrival processing indicators
File: GCX016E.cbl
GIVEN: A cargo has a validated arrival disposition code
WHEN: The system processes the arrival event
THEN: The system sets arrival status flags including arrival date, arrival location, and arrival type indicators
βœ“ Consolidated Acceptance Criteria
  • If export status requirements → the system determines if cargo needs export status based on disposition codes or processing flags indicating export 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_ExportStatusRequired(["Start Step"]) E_ExportStatusRequired(["End Step"]) N_ExportStatusRequired_Node0{"The system evaluates export status
requirements"}:::decision N_ExportStatusRequired_Node0_action["The system determines if cargo
needs export status based on
disposition codes or processing
flags indicating export operations"]:::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: GCX016E.cbl
GIVEN: A cargo with disposition codes and processing history
WHEN: The system evaluates export status requirements
THEN: The system determines if cargo needs export status based on disposition codes or processing flags indicating export operations
βœ“ Consolidated Acceptance Criteria
  • The system validates export location → the system confirms the export location is valid and appropriate for export processing
  • The system validates the export location against valid export ports → the system confirms the location is valid for export processing
  • The system validates the location code against authorized export locations → the system confirms the location is authorized for export processing or rejects invalid locations
  • Export processing validation is performed → the system verifies the export location exists in the valid location 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_ValidateExportLocation(["Start Step"]) E_ValidateExportLocation(["End Step"]) N_ValidateExportLocation_Node0{"The system validates export
location"}:::decision N_ValidateExportLocation_Node0_action["The system confirms the export
location is valid and appropriate
for export processing"]:::main N_ValidateExportLocation_Node0 -- Yes --> N_ValidateExportLocation_Node0_action N_ValidateExportLocation_Node0_action --> E_ValidateExportLocation S_ValidateExportLocation --> N_ValidateExportLocation_Node0 N_ValidateExportLocation_Node1{"The system validates the export
location against valid export ports"}:::decision N_ValidateExportLocation_Node1_action["The system confirms the location is
valid for export processing"]:::main N_ValidateExportLocation_Node1 -- Yes --> N_ValidateExportLocation_Node1_action N_ValidateExportLocation_Node1_action --> E_ValidateExportLocation N_ValidateExportLocation_Node0 -- No --> N_ValidateExportLocation_Node1 N_ValidateExportLocation_Node2{"The system validates the location
code against authorized export
locations"}:::decision N_ValidateExportLocation_Node2_action["The system confirms the location is
authorized for export processing or
rejects invalid locations"]:::main N_ValidateExportLocation_Node2 -- Yes --> N_ValidateExportLocation_Node2_action N_ValidateExportLocation_Node2_action --> E_ValidateExportLocation N_ValidateExportLocation_Node1 -- No --> N_ValidateExportLocation_Node2 N_ValidateExportLocation_Node3{"Export processing validation is
performed"}:::decision N_ValidateExportLocation_Node3_action["The system verifies the export
location exists in the valid
location table"]:::main N_ValidateExportLocation_Node3 -- Yes --> N_ValidateExportLocation_Node3_action N_ValidateExportLocation_Node3_action --> E_ValidateExportLocation N_ValidateExportLocation_Node2 -- No --> N_ValidateExportLocation_Node3 N_ValidateExportLocation_Node3 -- No --> E_ValidateExportLocation
File: GCX016E.cbl
GIVEN: A cargo requiring export status with location information
WHEN: The system validates export location
THEN:
  • The system confirms the export location is valid
  • Appropriate for export processing
File: GCX016E.cbl
GIVEN: An export disposition code has been received with location information
WHEN: The system validates the export location against valid export ports
THEN: The system confirms the location is valid for export processing
File: GCX016E.cbl
GIVEN: An export disposition code has been identified
WHEN: The system validates the location code against authorized export locations
THEN: The system confirms the location is authorized for export processing or rejects invalid locations
File: GCX016E.cbl
GIVEN: A cargo has a specified export location
WHEN: Export processing validation is performed
THEN: The system verifies the export location exists in the valid location table
βœ“ Consolidated Acceptance Criteria
  • The system sets export status flags → the system sets export status flags, clears destination index, and establishes export processing 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_SetExportStatusFlags(["Start Step"]) E_SetExportStatusFlags(["End Step"]) N_SetExportStatusFlags_Node0{"The system sets export status flags"}:::decision N_SetExportStatusFlags_Node0_action["The system sets export status
flags, clears destination index, and
establishes export processing
indicators"]:::main N_SetExportStatusFlags_Node0 -- Yes --> N_SetExportStatusFlags_Node0_action N_SetExportStatusFlags_Node0_action --> E_SetExportStatusFlags S_SetExportStatusFlags --> N_SetExportStatusFlags_Node0 N_SetExportStatusFlags_Node0 -- No --> E_SetExportStatusFlags
File: GCX016E.cbl
GIVEN: A cargo with validated export location
WHEN: The system sets export status flags
THEN: The system sets export status flags, clears destination index, and establishes export processing indicators
βœ“ Consolidated Acceptance Criteria
  • The system determines final cargo status → the system applies status hierarchy: Manual Release β†’ Released, FDA Hold β†’ HOLDFDA, PTT conditions β†’ PTT/PTT-EX, Hold combinations β†’ various hold statuses, Release with quantity β†’ RELSD/HOLDPCS, Export/Arrival β†’ respective status, Default β†’ ACK/PROCEED
  • Final cargo status is determined → the definitive cargo status is established considering all disposition codes, quantities, 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_DetermineFinalCargoStatus(["Start Step"]) E_DetermineFinalCargoStatus(["End Step"]) N_DetermineFinalCargoStatus_Node0{"The system determines final cargo
status"}:::decision N_DetermineFinalCargoStatus_Node0_action["The system applies status
hierarchy: Manual Release Released,
FDA Hold HOLDFDA, PTT conditions
PTTPTT-EX, Hold combinations various
hold statuses, Release with quantity
RELSDHOLDPCS, ExportArrival
respective status, Default
ACKPROCEED"]:::main N_DetermineFinalCargoStatus_Node0 -- Yes --> N_DetermineFinalCargoStatus_Node0_action N_DetermineFinalCargoStatus_Node0_action --> E_DetermineFinalCargoStatus S_DetermineFinalCargoStatus --> N_DetermineFinalCargoStatus_Node0 N_DetermineFinalCargoStatus_Node1{"Final cargo status is determined"}:::decision N_DetermineFinalCargoStatus_Node1_action["The definitive cargo status is
established considering all
disposition codes, quantities, and
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_Node1 -- No --> E_DetermineFinalCargoStatus
File: GCX016E.cbl
GIVEN: A cargo with analyzed hold conditions, release conditions, and processing flags
WHEN: The system determines final cargo status
THEN: The system applies status hierarchy: Manual Release β†’ Released, FDA Hold β†’ HOLDFDA, PTT conditions β†’ PTT/PTT-EX, Hold combinations β†’ various hold statuses, Release with quantity β†’ RELSD/HOLDPCS, Export/Arrival β†’ respective status, Default β†’ ACK/PROCEED
File: GCX016E.cbl
GIVEN: Status evaluation and quantity calculations are complete
WHEN: Final cargo status is determined
THEN: The definitive cargo status is established considering all disposition codes, quantities, and business rules
βœ“ Consolidated Acceptance Criteria
  • The system checks for status changes → the system compares the new status with the previous status to determine if a change has 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_StatusChanged(["Start Step"]) E_StatusChanged(["End Step"]) N_StatusChanged_Node0{"The system checks for status
changes"}:::decision N_StatusChanged_Node0_action["The system compares the new status
with the previous status to
determine if a change has occurred"]:::main N_StatusChanged_Node0 -- Yes --> N_StatusChanged_Node0_action N_StatusChanged_Node0_action --> E_StatusChanged S_StatusChanged --> N_StatusChanged_Node0 N_StatusChanged_Node0 -- No --> E_StatusChanged
File: GCX016E.cbl
GIVEN: A cargo with newly determined status and previous status information
WHEN: The system checks for status changes
THEN: The system compares the new status with the previous status to determine if a change has occurred
βœ“ Consolidated Acceptance Criteria
  • The system preserves previous status for audit → the system saves the previous status information for audit trail and compliance tracking
  • Processing the cancellation event → the system preserves previous status information in audit 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_PreservePreviousStatusforAudit(["Start Step"]) E_PreservePreviousStatusforAudit(["End Step"]) N_PreservePreviousStatusforAudit_Node0{"The system preserves previous
status for audit"}:::decision N_PreservePreviousStatusforAudit_Node0_action["The system saves the previous
status information for audit trail
and compliance tracking"]:::main N_PreservePreviousStatusforAudit_Node0 -- Yes --> N_PreservePreviousStatusforAudit_Node0_action N_PreservePreviousStatusforAudit_Node0_action --> E_PreservePreviousStatusforAudit S_PreservePreviousStatusforAudit --> N_PreservePreviousStatusforAudit_Node0 N_PreservePreviousStatusforAudit_Node1{"Processing the cancellation event"}:::decision N_PreservePreviousStatusforAudit_Node1_action["The system preserves previous
status information in audit records"]:::main N_PreservePreviousStatusforAudit_Node1 -- Yes --> N_PreservePreviousStatusforAudit_Node1_action N_PreservePreviousStatusforAudit_Node1_action --> E_PreservePreviousStatusforAudit N_PreservePreviousStatusforAudit_Node0 -- No --> N_PreservePreviousStatusforAudit_Node1 N_PreservePreviousStatusforAudit_Node1 -- No --> E_PreservePreviousStatusforAudit
File: GCX016E.cbl
GIVEN: A cargo with changed status
WHEN: The system preserves previous status for audit
THEN:
  • The system saves the previous status information for audit trail
  • Compliance tracking
File: GCX016E.cbl
GIVEN: Release cancellation has been detected
WHEN: Processing the cancellation event
THEN: The system preserves previous status information in audit records
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo status flags → the system updates all cargo status flags, processing indicators, and related status information in the cargo record
  • The system updates the cargo record → all relevant status flags are updated to reflect the current release state of the cargo
  • Cargo status flags are updated → the cargo record is updated with the new status, quantities, and any status-related data
  • The system updates cargo records with new status flags and processing indicators → the system commits status changes to cargo database, updates status timestamps, and triggers downstream processing notifications
  • Status flags need to be updated to reflect the new cargo state → update arrival status, release status, hold status, and any other relevant cargo status indicators based on the final disposition code array
  • The system finalizes the cargo status changes → the system updates all cargo status flags including hold indicators, release flags, and processing status markers to reflect the current state
  • The system updates cargo status flags → all relevant status flags are updated including hold flags, release flags, export flags, arrival flags, and processing flags
  • The system updates the cargo record status information → all status flags are updated to reflect the current cargo state
  • The system updates cargo status flags → all relevant status flags (hold flags, release flags, processing flags) are updated to reflect the final 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_UpdateCargoStatusFlags(["Start Step"]) E_UpdateCargoStatusFlags(["End Step"]) N_UpdateCargoStatusFlags_Node0{"The system updates cargo status
flags"}:::decision N_UpdateCargoStatusFlags_Node0_action["The system updates all cargo status
flags, processing indicators, and
related status information in the
cargo record"]:::main N_UpdateCargoStatusFlags_Node0 -- Yes --> N_UpdateCargoStatusFlags_Node0_action N_UpdateCargoStatusFlags_Node0_action --> E_UpdateCargoStatusFlags S_UpdateCargoStatusFlags --> N_UpdateCargoStatusFlags_Node0 N_UpdateCargoStatusFlags_Node1{"The system updates the cargo record"}:::decision N_UpdateCargoStatusFlags_Node1_action["All relevant status flags are
updated to reflect the current
release state of the cargo"]:::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{"Cargo status flags are updated"}:::decision N_UpdateCargoStatusFlags_Node2_action["The cargo record is updated with
the new status, quantities, and any
status-related data"]:::main N_UpdateCargoStatusFlags_Node2 -- Yes --> N_UpdateCargoStatusFlags_Node2_action N_UpdateCargoStatusFlags_Node2_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node1 -- No --> N_UpdateCargoStatusFlags_Node2 N_UpdateCargoStatusFlags_Node3{"The system updates cargo records
with new status flags and processing
indicators"}:::decision N_UpdateCargoStatusFlags_Node3_action["The system commits status changes
to cargo database, updates status
timestamps, and triggers downstream
processing notifications"]:::main N_UpdateCargoStatusFlags_Node3 -- Yes --> N_UpdateCargoStatusFlags_Node3_action N_UpdateCargoStatusFlags_Node3_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node2 -- No --> N_UpdateCargoStatusFlags_Node3 N_UpdateCargoStatusFlags_Node4{"Status flags need to be updated to
reflect the new cargo state"}:::decision N_UpdateCargoStatusFlags_Node4_action["Update arrival status, release
status, hold status, and any other
relevant cargo status indicators
based on the final disposition code
array"]:::main N_UpdateCargoStatusFlags_Node4 -- Yes --> N_UpdateCargoStatusFlags_Node4_action N_UpdateCargoStatusFlags_Node4_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node3 -- No --> N_UpdateCargoStatusFlags_Node4 N_UpdateCargoStatusFlags_Node5{"The system finalizes the cargo
status changes"}:::decision N_UpdateCargoStatusFlags_Node5_action["The system updates all cargo status
flags including hold indicators,
release flags, and processing status
markers to reflect the current state"]:::main N_UpdateCargoStatusFlags_Node5 -- Yes --> N_UpdateCargoStatusFlags_Node5_action N_UpdateCargoStatusFlags_Node5_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node4 -- No --> N_UpdateCargoStatusFlags_Node5 N_UpdateCargoStatusFlags_Node6{"The system updates cargo status
flags"}:::decision N_UpdateCargoStatusFlags_Node6_action["All relevant status flags are
updated including hold flags,
release flags, export flags, arrival
flags, and processing flags"]:::main N_UpdateCargoStatusFlags_Node6 -- Yes --> N_UpdateCargoStatusFlags_Node6_action N_UpdateCargoStatusFlags_Node6_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node5 -- No --> N_UpdateCargoStatusFlags_Node6 N_UpdateCargoStatusFlags_Node7{"The system updates the cargo record
status information"}:::decision N_UpdateCargoStatusFlags_Node7_action["All status flags are updated to
reflect the current cargo state"]:::main N_UpdateCargoStatusFlags_Node7 -- Yes --> N_UpdateCargoStatusFlags_Node7_action N_UpdateCargoStatusFlags_Node7_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node6 -- No --> N_UpdateCargoStatusFlags_Node7 N_UpdateCargoStatusFlags_Node8{"The system updates cargo status
flags"}:::decision N_UpdateCargoStatusFlags_Node8_action["All relevant status flags hold
flags, release flags, processing
flags are updated to reflect the
final cargo status"]:::main N_UpdateCargoStatusFlags_Node8 -- Yes --> N_UpdateCargoStatusFlags_Node8_action N_UpdateCargoStatusFlags_Node8_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node7 -- No --> N_UpdateCargoStatusFlags_Node8 N_UpdateCargoStatusFlags_Node8 -- No --> E_UpdateCargoStatusFlags
File: GCX016E.cbl
GIVEN: A cargo with determined final status
WHEN: The system updates cargo status flags
THEN: The system updates all cargo status flags, processing indicators, and related status information in the cargo record
File: GCX016E.cbl
GIVEN: Release notification has been generated or cargo is partially released
WHEN: The system updates the cargo record
THEN: All relevant status flags are updated to reflect the current release state of the cargo
File: GCX016E.cbl
GIVEN: Final cargo status has been determined
WHEN: Cargo status flags are updated
THEN: The cargo record is updated with the new status, quantities, and any status-related data
File: GCX016E.cbl
GIVEN: The system has determined final cargo status through disposition code evaluation
WHEN:
  • The system updates cargo records with new status flags
  • Processing indicators
THEN: The system commits status changes to cargo database, updates status timestamps, and triggers downstream processing notifications
File: GCX016E.cbl
GIVEN: Cargo status has changed as a result of disposition code re-processing
WHEN: Status flags need to be updated to reflect the new cargo state
THEN: Update arrival status, release status, hold status, and any other relevant cargo status indicators based on the final disposition code array
File: GCX016E.cbl
GIVEN: Manual release processing has been completed for a cargo
WHEN: The system finalizes the cargo status changes
THEN: The system updates all cargo status flags including hold indicators, release flags, and processing status markers to reflect the current state
File: GCX016E.cbl
GIVEN: Final cargo status has been determined (RELEASED, HELD, EXPORTED, or ARRIVED)
WHEN: The system updates cargo status flags
THEN: All relevant status flags are updated including hold flags, release flags, export flags, arrival flags, and processing flags
File: GCX016E.cbl
GIVEN: Individual cargo record analysis has completed with all flags determined
WHEN: The system updates the cargo record status information
THEN: All status flags are updated to reflect the current cargo state
File: GCX016E.cbl
GIVEN: A cargo with final status determination completed
WHEN: The system updates cargo status flags
THEN: All relevant status flags (hold flags, release flags, processing flags) are updated to reflect the final cargo status
βœ“ Consolidated Acceptance Criteria
  • The system calculates cargo age → the system computes the number of days since cargo arrival or initial processing for aging analysis and reporting
  • The system calculates cargo timing information → cargo age is calculated based on arrival date and relevant timing factors
  • The system processes the arrival event → the system calculates the cargo age from entry date to arrival date for reporting and compliance purposes
  • The system calculates cargo transit time → calculate the age of cargo based on the difference between current date and original shipment date
  • The system calculates cargo aging metrics → the cargo age is computed as the difference between arrival date and original entry date
  • Cargo age calculation is required during arrival processing → the system should calculate the number of days between the bond start date and current date
  • The age calculation is complete and valid → the cargo age field should be updated with the calculated number of days
  • Export processing is being performed → the cargo age is calculated as the difference between current date and 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_CalculateCargoAge(["Start Step"]) E_CalculateCargoAge(["End Step"]) N_CalculateCargoAge_Node0{"The system calculates cargo age"}:::decision N_CalculateCargoAge_Node0_action["The system computes the number of
days since cargo arrival or initial
processing for aging analysis and
reporting"]:::main N_CalculateCargoAge_Node0 -- Yes --> N_CalculateCargoAge_Node0_action N_CalculateCargoAge_Node0_action --> E_CalculateCargoAge S_CalculateCargoAge --> N_CalculateCargoAge_Node0 N_CalculateCargoAge_Node1{"The system calculates cargo timing
information"}:::decision N_CalculateCargoAge_Node1_action["Cargo age is calculated based on
arrival date and relevant timing
factors"]:::main N_CalculateCargoAge_Node1 -- Yes --> N_CalculateCargoAge_Node1_action N_CalculateCargoAge_Node1_action --> E_CalculateCargoAge N_CalculateCargoAge_Node0 -- No --> N_CalculateCargoAge_Node1 N_CalculateCargoAge_Node2{"The system processes the arrival
event"}:::decision N_CalculateCargoAge_Node2_action["The system calculates the cargo age
from entry date to arrival date for
reporting and compliance purposes"]:::main N_CalculateCargoAge_Node2 -- Yes --> N_CalculateCargoAge_Node2_action N_CalculateCargoAge_Node2_action --> E_CalculateCargoAge N_CalculateCargoAge_Node1 -- No --> N_CalculateCargoAge_Node2 N_CalculateCargoAge_Node3{"The system calculates cargo transit
time"}:::decision N_CalculateCargoAge_Node3_action["Calculate the age of cargo based on
the difference between current date
and original shipment date"]:::main N_CalculateCargoAge_Node3 -- Yes --> N_CalculateCargoAge_Node3_action N_CalculateCargoAge_Node3_action --> E_CalculateCargoAge N_CalculateCargoAge_Node2 -- No --> N_CalculateCargoAge_Node3 N_CalculateCargoAge_Node4{"The system calculates cargo aging
metrics"}:::decision N_CalculateCargoAge_Node4_action["The cargo age is computed as the
difference between arrival date and
original entry date"]:::main N_CalculateCargoAge_Node4 -- Yes --> N_CalculateCargoAge_Node4_action N_CalculateCargoAge_Node4_action --> E_CalculateCargoAge N_CalculateCargoAge_Node3 -- No --> N_CalculateCargoAge_Node4 N_CalculateCargoAge_Node5{"Cargo age calculation is required
during arrival processing"}:::decision N_CalculateCargoAge_Node5_action["The system should calculate the
number of days between the bond
start date and current date"]:::main N_CalculateCargoAge_Node5 -- Yes --> N_CalculateCargoAge_Node5_action N_CalculateCargoAge_Node5_action --> E_CalculateCargoAge N_CalculateCargoAge_Node4 -- No --> N_CalculateCargoAge_Node5 N_CalculateCargoAge_Node6{"The age calculation is complete and
valid"}:::decision N_CalculateCargoAge_Node6_action["The cargo age field should be
updated with the calculated number
of days"]:::main N_CalculateCargoAge_Node6 -- Yes --> N_CalculateCargoAge_Node6_action N_CalculateCargoAge_Node6_action --> E_CalculateCargoAge N_CalculateCargoAge_Node5 -- No --> N_CalculateCargoAge_Node6 N_CalculateCargoAge_Node7{"Export processing is being
performed"}:::decision N_CalculateCargoAge_Node7_action["The cargo age is calculated as the
difference between current date and
arrival date"]:::main N_CalculateCargoAge_Node7 -- Yes --> N_CalculateCargoAge_Node7_action N_CalculateCargoAge_Node7_action --> E_CalculateCargoAge N_CalculateCargoAge_Node6 -- No --> N_CalculateCargoAge_Node7 N_CalculateCargoAge_Node7 -- No --> E_CalculateCargoAge
File: GCX016E.cbl
GIVEN: A cargo with arrival date or initial processing date
WHEN: The system calculates cargo age
THEN:
  • The system computes the number of days since cargo arrival or initial processing for aging analysis
  • Reporting
File: GCX016E.cbl
GIVEN: Arrival index has been set for the cargo
WHEN: The system calculates cargo timing information
THEN:
  • Cargo age is calculated based on arrival date
  • Relevant timing factors
File: GCX016E.cbl
GIVEN: A cargo has arrival date and time information
WHEN: The system processes the arrival event
THEN:
  • The system calculates the cargo age from entry date to arrival date for reporting
  • Compliance purposes
File: GCX016E.cbl
GIVEN: Cargo arrival flag has been set
WHEN: The system calculates cargo transit time
THEN:
  • Calculate the age of cargo based on the difference between current date
  • Original shipment date
File: GCX016E.cbl
GIVEN: Cargo has arrived and arrival date is recorded
WHEN: The system calculates cargo aging metrics
THEN:
  • The cargo age is computed as the difference between arrival date
  • Original entry date
File: GCX016E.cbl
GIVEN: A cargo has a valid bond start date
WHEN: Cargo age calculation is required during arrival processing
THEN:
  • The system should calculate the number of days between the bond start date
  • Current date
File: GCX016E.cbl
GIVEN: The cargo age has been successfully calculated
WHEN:
  • The age calculation is complete
  • Valid
THEN: The cargo age field should be updated with the calculated number of days
File: GCX016E.cbl
GIVEN: A cargo has an arrival date and current processing date
WHEN: Export processing is being performed
THEN:
  • The cargo age is calculated as the difference between current date
  • Arrival date
βœ“ Consolidated Acceptance Criteria
  • The system checks if all holds are released → the system determines if no active hold conditions remain (no border holds, destination holds, FDA holds, or piece count 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_AllHoldsReleased(["Start Step"]) E_AllHoldsReleased(["End Step"]) N_AllHoldsReleased_Node0{"The system checks if all holds are
released"}:::decision N_AllHoldsReleased_Node0_action["The system determines if no active
hold conditions remain no border
holds, destination holds, FDA holds,
or piece count holds"]:::main N_AllHoldsReleased_Node0 -- Yes --> N_AllHoldsReleased_Node0_action N_AllHoldsReleased_Node0_action --> E_AllHoldsReleased S_AllHoldsReleased --> N_AllHoldsReleased_Node0 N_AllHoldsReleased_Node0 -- No --> E_AllHoldsReleased
File: GCX016E.cbl
GIVEN: A cargo with analyzed hold conditions
WHEN: The system checks if all holds are released
THEN: The system determines if no active hold conditions remain (no border holds, destination holds, FDA holds, or piece count holds)
βœ“ Consolidated Acceptance Criteria
  • The system checks for partial release status → the system determines if some cargo quantity has been released while other quantities remain 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_PartialRelease(["Start Step"]) E_PartialRelease(["End Step"]) N_PartialRelease_Node0{"The system checks for partial
release status"}:::decision N_PartialRelease_Node0_action["The system determines if some cargo
quantity has been released while
other quantities remain held"]:::main N_PartialRelease_Node0 -- Yes --> N_PartialRelease_Node0_action N_PartialRelease_Node0_action --> E_PartialRelease S_PartialRelease --> N_PartialRelease_Node0 N_PartialRelease_Node0 -- No --> E_PartialRelease
File: GCX016E.cbl
GIVEN: A cargo with calculated release quantities and remaining holds
WHEN: The system checks for partial release status
THEN: The system determines if some cargo quantity has been released while other quantities remain held
βœ“ Consolidated Acceptance Criteria
  • The system checks for full hold status → the system determines if the entire cargo quantity is held with no released 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_FullHoldStatus(["Start Step"]) E_FullHoldStatus(["End Step"]) N_FullHoldStatus_Node0{"The system checks for full hold
status"}:::decision N_FullHoldStatus_Node0_action["The system determines if the entire
cargo quantity is held with no
released portions"]:::main N_FullHoldStatus_Node0 -- Yes --> N_FullHoldStatus_Node0_action N_FullHoldStatus_Node0_action --> E_FullHoldStatus S_FullHoldStatus --> N_FullHoldStatus_Node0 N_FullHoldStatus_Node0 -- No --> E_FullHoldStatus
File: GCX016E.cbl
GIVEN: A cargo with active hold conditions and no partial releases
WHEN: The system checks for full hold status
THEN: The system determines if the entire cargo quantity is held with no released portions
βœ“ Consolidated Acceptance Criteria
  • The system sets released status → the system assigns RELEASED status and updates all related release flags and processing 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_SetRELEASEDStatus(["Start Step"]) E_SetRELEASEDStatus(["End Step"]) N_SetRELEASEDStatus_Node0{"The system sets released status"}:::decision N_SetRELEASEDStatus_Node0_action["The system assigns RELEASED status
and updates all related release
flags and processing indicators"]:::main N_SetRELEASEDStatus_Node0 -- Yes --> N_SetRELEASEDStatus_Node0_action N_SetRELEASEDStatus_Node0_action --> E_SetRELEASEDStatus S_SetRELEASEDStatus --> N_SetRELEASEDStatus_Node0 N_SetRELEASEDStatus_Node0 -- No --> E_SetRELEASEDStatus
File: GCX016E.cbl
GIVEN: A cargo with all holds released and no remaining hold conditions
WHEN: The system sets released status
THEN:
  • The system assigns released status
  • Updates all related release flags
  • Processing indicators
βœ“ Consolidated Acceptance Criteria
  • The system sets partial release status → the system assigns HOLDPCS or similar partial release status indicating mixed release/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_SetPARTIALRELEASEStatus(["Start Step"]) E_SetPARTIALRELEASEStatus(["End Step"]) N_SetPARTIALRELEASEStatus_Node0{"The system sets partial release
status"}:::decision N_SetPARTIALRELEASEStatus_Node0_action["The system assigns HOLDPCS or
similar partial release status
indicating mixed releasehold
condition"]:::main N_SetPARTIALRELEASEStatus_Node0 -- Yes --> N_SetPARTIALRELEASEStatus_Node0_action N_SetPARTIALRELEASEStatus_Node0_action --> E_SetPARTIALRELEASEStatus S_SetPARTIALRELEASEStatus --> N_SetPARTIALRELEASEStatus_Node0 N_SetPARTIALRELEASEStatus_Node0 -- No --> E_SetPARTIALRELEASEStatus
File: GCX016E.cbl
GIVEN: A cargo with partial quantity released and remaining holds
WHEN: The system sets partial release status
THEN: The system assigns HOLDPCS or similar partial release status indicating mixed release/hold condition
βœ“ Consolidated Acceptance Criteria
  • The system sets hold status → the system assigns appropriate hold status (HOLD, HOLD-B for border, HOLD-D for destination, HOLDFDA for FDA) based on the type and location of 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_SetHOLDStatus(["Start Step"]) E_SetHOLDStatus(["End Step"]) N_SetHOLDStatus_Node0{"The system sets hold status"}:::decision N_SetHOLDStatus_Node0_action["The system assigns appropriate hold
status HOLD, HOLD-B for border,
HOLD-D for destination, HOLDFDA for
FDA based on the type and location
of holds"]:::main N_SetHOLDStatus_Node0 -- Yes --> N_SetHOLDStatus_Node0_action N_SetHOLDStatus_Node0_action --> E_SetHOLDStatus S_SetHOLDStatus --> N_SetHOLDStatus_Node0 N_SetHOLDStatus_Node0 -- No --> E_SetHOLDStatus
File: GCX016E.cbl
GIVEN: A cargo with active hold conditions and no releases
WHEN: The system sets hold status
THEN:
  • The system assigns appropriate hold status (hold, hold-b for border, hold-d for destination, holdfda for fda) based on the type
  • Location of holds
βœ“ Consolidated Acceptance Criteria
  • The system checks for entry number presence → if entry number is present, proceed to validation; if not present, complete processing without 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_EntryNumberPresent(["Start Step"]) E_EntryNumberPresent(["End Step"]) N_EntryNumberPresent_Node0{"The system checks for entry number
presence"}:::decision N_EntryNumberPresent_Node0_action["If entry number is present, proceed
to validation if not present,
complete processing without further
validation"]:::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: GCX016E.cbl
GIVEN: A cargo record is being processed for in-bond entry
WHEN: The system checks for entry number presence
THEN: If entry number is present, proceed to validation; if not present, complete processing without further validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the entry number against broker entry numbers → the entry number must match an existing broker entry number to be considered 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_ValidateAgainstBrokerEntryNumbers(["Start Step"]) E_ValidateAgainstBrokerEntryNumbers(["End Step"]) N_ValidateAgainstBrokerEntryNumbers_Node0{"The system validates the entry
number against broker entry numbers"}:::decision N_ValidateAgainstBrokerEntryNumbers_Node0_action["The entry number must match an
existing broker entry number to be
considered valid"]:::main N_ValidateAgainstBrokerEntryNumbers_Node0 -- Yes --> N_ValidateAgainstBrokerEntryNumbers_Node0_action N_ValidateAgainstBrokerEntryNumbers_Node0_action --> E_ValidateAgainstBrokerEntryNumbers S_ValidateAgainstBrokerEntryNumbers --> N_ValidateAgainstBrokerEntryNumbers_Node0 N_ValidateAgainstBrokerEntryNumbers_Node0 -- No --> E_ValidateAgainstBrokerEntryNumbers
File: GCX016E.cbl
GIVEN: An entry number is present in the cargo record
WHEN: The system validates the entry number against broker entry numbers
THEN: The entry number must match an existing broker entry number to be considered valid
βœ“ Consolidated Acceptance Criteria
  • The system validates against in-bond control numbers → the entry number must also be valid against in-bond control number records
  • The system validates against in-bond control numbers → the entry number is confirmed to match in-bond control number 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_ValidateAgainstInBondControlNumbers(["Start Step"]) E_ValidateAgainstInBondControlNumbers(["End Step"]) N_ValidateAgainstInBondControlNumbers_Node0{"The system validates against
in-bond control numbers"}:::decision N_ValidateAgainstInBondControlNumbers_Node0_action["The entry number must also be valid
against in-bond control number
records"]:::main N_ValidateAgainstInBondControlNumbers_Node0 -- Yes --> N_ValidateAgainstInBondControlNumbers_Node0_action N_ValidateAgainstInBondControlNumbers_Node0_action --> E_ValidateAgainstInBondControlNumbers S_ValidateAgainstInBondControlNumbers --> N_ValidateAgainstInBondControlNumbers_Node0 N_ValidateAgainstInBondControlNumbers_Node1{"The system validates against
in-bond control numbers"}:::decision N_ValidateAgainstInBondControlNumbers_Node1_action["The entry number is confirmed to
match in-bond control number
requirements"]:::main N_ValidateAgainstInBondControlNumbers_Node1 -- Yes --> N_ValidateAgainstInBondControlNumbers_Node1_action N_ValidateAgainstInBondControlNumbers_Node1_action --> E_ValidateAgainstInBondControlNumbers N_ValidateAgainstInBondControlNumbers_Node0 -- No --> N_ValidateAgainstInBondControlNumbers_Node1 N_ValidateAgainstInBondControlNumbers_Node1 -- No --> E_ValidateAgainstInBondControlNumbers
File: GCX016E.cbl
GIVEN: An entry number has passed broker entry validation
WHEN: The system validates against in-bond control numbers
THEN: The entry number must also be valid against in-bond control number records
File: GCX016E.cbl
GIVEN: The entry number has passed broker validation
WHEN: The system validates against in-bond control numbers
THEN: The entry number is confirmed to match in-bond control number requirements
βœ“ Consolidated Acceptance Criteria
  • The system checks for special V37 entry requirements → v37 entries must meet additional validation criteria specific to this entry type
  • The system checks for special V37 entry requirements → special V37 validation rules are applied if 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_CheckSpecialV37Entries(["Start Step"]) E_CheckSpecialV37Entries(["End Step"]) N_CheckSpecialV37Entries_Node0{"The system checks for special V37
entry requirements"}:::decision N_CheckSpecialV37Entries_Node0_action["V37 entries must meet additional
validation criteria specific to this
entry type"]:::main N_CheckSpecialV37Entries_Node0 -- Yes --> N_CheckSpecialV37Entries_Node0_action N_CheckSpecialV37Entries_Node0_action --> E_CheckSpecialV37Entries S_CheckSpecialV37Entries --> N_CheckSpecialV37Entries_Node0 N_CheckSpecialV37Entries_Node1{"The system checks for special V37
entry requirements"}:::decision N_CheckSpecialV37Entries_Node1_action["Special V37 validation rules are
applied if applicable"]:::main N_CheckSpecialV37Entries_Node1 -- Yes --> N_CheckSpecialV37Entries_Node1_action N_CheckSpecialV37Entries_Node1_action --> E_CheckSpecialV37Entries N_CheckSpecialV37Entries_Node0 -- No --> N_CheckSpecialV37Entries_Node1 N_CheckSpecialV37Entries_Node1 -- No --> E_CheckSpecialV37Entries
File: GCX016E.cbl
GIVEN: An entry number has passed standard validations
WHEN: The system checks for special V37 entry requirements
THEN: V37 entries must meet additional validation criteria specific to this entry type
File: GCX016E.cbl
GIVEN: The entry number has passed standard validations
WHEN: The system checks for special V37 entry requirements
THEN: Special V37 validation rules are applied if applicable
βœ“ Consolidated Acceptance Criteria
  • If overall entry number validity → if all validations pass, proceed with entry type processing; if any validation fails, generate error
  • The validation process completes → the system either accepts the entry number for further processing or rejects it 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_EntryNumberValid(["Start Step"]) E_EntryNumberValid(["End Step"]) N_EntryNumberValid_Node0{"The system evaluates overall entry
number validity"}:::decision N_EntryNumberValid_Node0_action["If all validations pass, proceed
with entry type processing if any
validation fails, generate error"]:::main N_EntryNumberValid_Node0 -- Yes --> N_EntryNumberValid_Node0_action N_EntryNumberValid_Node0_action --> E_EntryNumberValid S_EntryNumberValid --> N_EntryNumberValid_Node0 N_EntryNumberValid_Node1{"The validation process completes"}:::decision N_EntryNumberValid_Node1_action["The system either accepts the entry
number for further processing or
rejects it with error handling"]:::main N_EntryNumberValid_Node1 -- Yes --> N_EntryNumberValid_Node1_action N_EntryNumberValid_Node1_action --> E_EntryNumberValid N_EntryNumberValid_Node0 -- No --> N_EntryNumberValid_Node1 N_EntryNumberValid_Node1 -- No --> E_EntryNumberValid
File: GCX016E.cbl
GIVEN: All entry number validations have been completed
WHEN: The system evaluates overall entry number validity
THEN: If all validations pass, proceed with entry type processing; if any validation fails, generate error
File: GCX016E.cbl
GIVEN: An in-bond entry number has been submitted for validation
WHEN: The validation process completes
THEN: The system either accepts the entry number for further processing or rejects it with error handling
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code → convert EDI entry type code to internal system 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_ConvertEDIEntryTypeCode(["Start Step"]) E_ConvertEDIEntryTypeCode(["End Step"]) N_ConvertEDIEntryTypeCode_Node0{"The system processes the entry type
code"}:::decision N_ConvertEDIEntryTypeCode_Node0_action["Convert EDI entry type code to
internal system format for further
processing"]:::main N_ConvertEDIEntryTypeCode_Node0 -- Yes --> N_ConvertEDIEntryTypeCode_Node0_action N_ConvertEDIEntryTypeCode_Node0_action --> E_ConvertEDIEntryTypeCode S_ConvertEDIEntryTypeCode --> N_ConvertEDIEntryTypeCode_Node0 N_ConvertEDIEntryTypeCode_Node0 -- No --> E_ConvertEDIEntryTypeCode
File: GCX016E.cbl
GIVEN: A valid entry number with EDI entry type code
WHEN: The system processes the entry type code
THEN: Convert EDI entry type code to internal system format for further processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code → set the master in-bond flag to indicate this is a master in-bond entry
  • The entry type code value is 61 → the master in-bond flag is set for entry type code 61 and the cargo record is updated with master in-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_SetMasterInBondFlagforCode61(["Start Step"]) E_SetMasterInBondFlagforCode61(["End Step"]) N_SetMasterInBondFlagforCode61_Node0{"The system processes the entry type
code"}:::decision N_SetMasterInBondFlagforCode61_Node0_action["Set the master in-bond flag to
indicate this is a master in-bond
entry"]:::main N_SetMasterInBondFlagforCode61_Node0 -- Yes --> N_SetMasterInBondFlagforCode61_Node0_action N_SetMasterInBondFlagforCode61_Node0_action --> E_SetMasterInBondFlagforCode61 S_SetMasterInBondFlagforCode61 --> N_SetMasterInBondFlagforCode61_Node0 N_SetMasterInBondFlagforCode61_Node1{"The entry type code value is 61"}:::decision N_SetMasterInBondFlagforCode61_Node1_action["The master in-bond flag is set for
entry type code 61 and the cargo
record is updated with master
in-bond status"]:::main N_SetMasterInBondFlagforCode61_Node1 -- Yes --> N_SetMasterInBondFlagforCode61_Node1_action N_SetMasterInBondFlagforCode61_Node1_action --> E_SetMasterInBondFlagforCode61 N_SetMasterInBondFlagforCode61_Node0 -- No --> N_SetMasterInBondFlagforCode61_Node1 N_SetMasterInBondFlagforCode61_Node1 -- No --> E_SetMasterInBondFlagforCode61
File: GCX016E.cbl
GIVEN: A valid entry with entry type code 61
WHEN: The system processes the entry type code
THEN: Set the master in-bond flag to indicate this is a master in-bond entry
File: GCX016E.cbl
GIVEN: An X4 segment is being processed and contains an entry type code
WHEN: The entry type code value is 61
THEN:
  • The master in-bond flag is set for entry type code 61
  • The cargo record is updated with master in-bond status
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code → set the master in-bond flag to indicate this is a master in-bond entry
  • The entry type code value is 62 → the master in-bond flag is set for entry type code 62 and the cargo record is updated with master in-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_SetMasterInBondFlagforCode62(["Start Step"]) E_SetMasterInBondFlagforCode62(["End Step"]) N_SetMasterInBondFlagforCode62_Node0{"The system processes the entry type
code"}:::decision N_SetMasterInBondFlagforCode62_Node0_action["Set the master in-bond flag to
indicate this is a master in-bond
entry"]:::main N_SetMasterInBondFlagforCode62_Node0 -- Yes --> N_SetMasterInBondFlagforCode62_Node0_action N_SetMasterInBondFlagforCode62_Node0_action --> E_SetMasterInBondFlagforCode62 S_SetMasterInBondFlagforCode62 --> N_SetMasterInBondFlagforCode62_Node0 N_SetMasterInBondFlagforCode62_Node1{"The entry type code value is 62"}:::decision N_SetMasterInBondFlagforCode62_Node1_action["The master in-bond flag is set for
entry type code 62 and the cargo
record is updated with master
in-bond status"]:::main N_SetMasterInBondFlagforCode62_Node1 -- Yes --> N_SetMasterInBondFlagforCode62_Node1_action N_SetMasterInBondFlagforCode62_Node1_action --> E_SetMasterInBondFlagforCode62 N_SetMasterInBondFlagforCode62_Node0 -- No --> N_SetMasterInBondFlagforCode62_Node1 N_SetMasterInBondFlagforCode62_Node1 -- No --> E_SetMasterInBondFlagforCode62
File: GCX016E.cbl
GIVEN: A valid entry with entry type code 62
WHEN: The system processes the entry type code
THEN: Set the master in-bond flag to indicate this is a master in-bond entry
File: GCX016E.cbl
GIVEN: An X4 segment is being processed and contains an entry type code
WHEN: The entry type code value is 62
THEN:
  • The master in-bond flag is set for entry type code 62
  • The cargo record is updated with master in-bond status
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code → set the master in-bond flag to indicate this is a master in-bond entry
  • The entry type code value is 63 → the master in-bond flag is set for entry type code 63 and the cargo record is updated with master in-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_SetMasterInBondFlagforCode63(["Start Step"]) E_SetMasterInBondFlagforCode63(["End Step"]) N_SetMasterInBondFlagforCode63_Node0{"The system processes the entry type
code"}:::decision N_SetMasterInBondFlagforCode63_Node0_action["Set the master in-bond flag to
indicate this is a master in-bond
entry"]:::main N_SetMasterInBondFlagforCode63_Node0 -- Yes --> N_SetMasterInBondFlagforCode63_Node0_action N_SetMasterInBondFlagforCode63_Node0_action --> E_SetMasterInBondFlagforCode63 S_SetMasterInBondFlagforCode63 --> N_SetMasterInBondFlagforCode63_Node0 N_SetMasterInBondFlagforCode63_Node1{"The entry type code value is 63"}:::decision N_SetMasterInBondFlagforCode63_Node1_action["The master in-bond flag is set for
entry type code 63 and the cargo
record is updated with master
in-bond status"]:::main N_SetMasterInBondFlagforCode63_Node1 -- Yes --> N_SetMasterInBondFlagforCode63_Node1_action N_SetMasterInBondFlagforCode63_Node1_action --> E_SetMasterInBondFlagforCode63 N_SetMasterInBondFlagforCode63_Node0 -- No --> N_SetMasterInBondFlagforCode63_Node1 N_SetMasterInBondFlagforCode63_Node1 -- No --> E_SetMasterInBondFlagforCode63
File: GCX016E.cbl
GIVEN: A valid entry with entry type code 63
WHEN: The system processes the entry type code
THEN: Set the master in-bond flag to indicate this is a master in-bond entry
File: GCX016E.cbl
GIVEN: An X4 segment is being processed and contains an entry type code
WHEN: The entry type code value is 63
THEN:
  • The master in-bond flag is set for entry type code 63
  • The cargo record is updated with master in-bond status
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code → set the master in-bond flag to indicate this is a master in-bond entry
  • The entry type code value is 69 → the master in-bond flag is set for entry type code 69 and the cargo record is updated with master in-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_SetMasterInBondFlagforCode69(["Start Step"]) E_SetMasterInBondFlagforCode69(["End Step"]) N_SetMasterInBondFlagforCode69_Node0{"The system processes the entry type
code"}:::decision N_SetMasterInBondFlagforCode69_Node0_action["Set the master in-bond flag to
indicate this is a master in-bond
entry"]:::main N_SetMasterInBondFlagforCode69_Node0 -- Yes --> N_SetMasterInBondFlagforCode69_Node0_action N_SetMasterInBondFlagforCode69_Node0_action --> E_SetMasterInBondFlagforCode69 S_SetMasterInBondFlagforCode69 --> N_SetMasterInBondFlagforCode69_Node0 N_SetMasterInBondFlagforCode69_Node1{"The entry type code value is 69"}:::decision N_SetMasterInBondFlagforCode69_Node1_action["The master in-bond flag is set for
entry type code 69 and the cargo
record is updated with master
in-bond status"]:::main N_SetMasterInBondFlagforCode69_Node1 -- Yes --> N_SetMasterInBondFlagforCode69_Node1_action N_SetMasterInBondFlagforCode69_Node1_action --> E_SetMasterInBondFlagforCode69 N_SetMasterInBondFlagforCode69_Node0 -- No --> N_SetMasterInBondFlagforCode69_Node1 N_SetMasterInBondFlagforCode69_Node1 -- No --> E_SetMasterInBondFlagforCode69
File: GCX016E.cbl
GIVEN: A valid entry with entry type code 69
WHEN: The system processes the entry type code
THEN: Set the master in-bond flag to indicate this is a master in-bond entry
File: GCX016E.cbl
GIVEN: An X4 segment is being processed and contains an entry type code
WHEN: The entry type code value is 69
THEN:
  • The master in-bond flag is set for entry type code 69
  • The cargo record is updated with master in-bond status
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code → apply standard entry type processing without setting master in-bond 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_ProcessStandardEntryType(["Start Step"]) E_ProcessStandardEntryType(["End Step"]) N_ProcessStandardEntryType_Node0{"The system processes the entry type
code"}:::decision N_ProcessStandardEntryType_Node0_action["Apply standard entry type
processing without setting master
in-bond flags"]:::main N_ProcessStandardEntryType_Node0 -- Yes --> N_ProcessStandardEntryType_Node0_action N_ProcessStandardEntryType_Node0_action --> E_ProcessStandardEntryType S_ProcessStandardEntryType --> N_ProcessStandardEntryType_Node0 N_ProcessStandardEntryType_Node0 -- No --> E_ProcessStandardEntryType
File: GCX016E.cbl
GIVEN: A valid entry with entry type code other than 61, 62, 63, or 69
WHEN: The system processes the entry type code
THEN: Apply standard entry type processing without setting master in-bond flags
βœ“ Consolidated Acceptance Criteria
  • The system updates broker bond information → update broker bond records with current entry information and 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_UpdateBrokerBondInformation(["Start Step"]) E_UpdateBrokerBondInformation(["End Step"]) N_UpdateBrokerBondInformation_Node0{"The system updates broker bond
information"}:::decision N_UpdateBrokerBondInformation_Node0_action["Update broker bond records with
current entry information and bond
details"]:::main N_UpdateBrokerBondInformation_Node0 -- Yes --> N_UpdateBrokerBondInformation_Node0_action N_UpdateBrokerBondInformation_Node0_action --> E_UpdateBrokerBondInformation S_UpdateBrokerBondInformation --> N_UpdateBrokerBondInformation_Node0 N_UpdateBrokerBondInformation_Node0 -- No --> E_UpdateBrokerBondInformation
File: GCX016E.cbl
GIVEN: Entry type processing has been completed
WHEN: The system updates broker bond information
THEN:
  • Update broker bond records with current entry information
  • Bond details
βœ“ Consolidated Acceptance Criteria
  • The system checks for CPRS bond processing requirements → if CPRS bond processing is required, proceed with CPRS bond assignment; otherwise, proceed to bond owner 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_CPRSBondProcessingRequired(["Start Step"]) E_CPRSBondProcessingRequired(["End Step"]) N_CPRSBondProcessingRequired_Node0{"The system checks for CPRS bond
processing requirements"}:::decision N_CPRSBondProcessingRequired_Node0_action["If CPRS bond processing is
required, proceed with CPRS bond
assignment otherwise, proceed to
bond owner information"]:::main N_CPRSBondProcessingRequired_Node0 -- Yes --> N_CPRSBondProcessingRequired_Node0_action N_CPRSBondProcessingRequired_Node0_action --> E_CPRSBondProcessingRequired S_CPRSBondProcessingRequired --> N_CPRSBondProcessingRequired_Node0 N_CPRSBondProcessingRequired_Node0 -- No --> E_CPRSBondProcessingRequired
File: GCX016E.cbl
GIVEN: Broker bond information has been updated
WHEN: The system checks for CPRS bond processing requirements
THEN: If CPRS bond processing is required, proceed with CPRS bond assignment; otherwise, proceed to bond owner information
βœ“ Consolidated Acceptance Criteria
  • The system processes CPRS bond assignment → assign appropriate CPRS bond information and update bond records 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_HandleCPRSBondAssignment(["Start Step"]) E_HandleCPRSBondAssignment(["End Step"]) N_HandleCPRSBondAssignment_Node0{"The system processes CPRS bond
assignment"}:::decision N_HandleCPRSBondAssignment_Node0_action["Assign appropriate CPRS bond
information and update bond records
accordingly"]:::main N_HandleCPRSBondAssignment_Node0 -- Yes --> N_HandleCPRSBondAssignment_Node0_action N_HandleCPRSBondAssignment_Node0_action --> E_HandleCPRSBondAssignment S_HandleCPRSBondAssignment --> N_HandleCPRSBondAssignment_Node0 N_HandleCPRSBondAssignment_Node0 -- No --> E_HandleCPRSBondAssignment
File: GCX016E.cbl
GIVEN: CPRS bond processing is required
WHEN: The system processes CPRS bond assignment
THEN:
  • Assign appropriate cprs bond information
  • Update bond records accordingly
βœ“ Consolidated Acceptance Criteria
  • The system updates broker QP information → update broker qualified person information with current bond and entry 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_UpdateBrokerQPInformation(["Start Step"]) E_UpdateBrokerQPInformation(["End Step"]) N_UpdateBrokerQPInformation_Node0{"The system updates broker QP
information"}:::decision N_UpdateBrokerQPInformation_Node0_action["Update broker qualified person
information with current bond and
entry details"]:::main N_UpdateBrokerQPInformation_Node0 -- Yes --> N_UpdateBrokerQPInformation_Node0_action N_UpdateBrokerQPInformation_Node0_action --> E_UpdateBrokerQPInformation S_UpdateBrokerQPInformation --> N_UpdateBrokerQPInformation_Node0 N_UpdateBrokerQPInformation_Node0 -- No --> E_UpdateBrokerQPInformation
File: GCX016E.cbl
GIVEN: CPRS bond assignment has been completed
WHEN: The system updates broker QP information
THEN:
  • Update broker qualified person information with current bond
  • Entry details
βœ“ Consolidated Acceptance Criteria
  • The system sets bond owner information → establish bond ownership details and finalize bond assignment for the 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_SetBondOwnerInformation(["Start Step"]) E_SetBondOwnerInformation(["End Step"]) N_SetBondOwnerInformation_Node0{"The system sets bond owner
information"}:::decision N_SetBondOwnerInformation_Node0_action["Establish bond ownership details
and finalize bond assignment for the
entry"]:::main N_SetBondOwnerInformation_Node0 -- Yes --> N_SetBondOwnerInformation_Node0_action N_SetBondOwnerInformation_Node0_action --> E_SetBondOwnerInformation S_SetBondOwnerInformation --> N_SetBondOwnerInformation_Node0 N_SetBondOwnerInformation_Node0 -- No --> E_SetBondOwnerInformation
File: GCX016E.cbl
GIVEN: All bond processing steps have been completed
WHEN: The system sets bond owner information
THEN:
  • Establish bond ownership details
  • Finalize bond assignment for the entry
βœ“ Consolidated Acceptance Criteria
  • The system processes the validation failure → generate appropriate error message indicating invalid entry number and halt processing
  • The entry number is found to be invalid or does not exist → an error is generated indicating the entry number is invalid and processing cannot 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_GenerateErrorInvalidEntryNumber(["Start Step"]) E_GenerateErrorInvalidEntryNumber(["End Step"]) N_GenerateErrorInvalidEntryNumber_Node0{"The system processes the validation
failure"}:::decision N_GenerateErrorInvalidEntryNumber_Node0_action["Generate appropriate error message
indicating invalid entry number and
halt processing"]:::main N_GenerateErrorInvalidEntryNumber_Node0 -- Yes --> N_GenerateErrorInvalidEntryNumber_Node0_action N_GenerateErrorInvalidEntryNumber_Node0_action --> E_GenerateErrorInvalidEntryNumber S_GenerateErrorInvalidEntryNumber --> N_GenerateErrorInvalidEntryNumber_Node0 N_GenerateErrorInvalidEntryNumber_Node1{"The entry number is found to be
invalid or does not exist"}:::decision N_GenerateErrorInvalidEntryNumber_Node1_action["An error is generated indicating
the entry number is invalid and
processing cannot continue"]:::exclusion N_GenerateErrorInvalidEntryNumber_Node1 -- Yes -->|Alternative| N_GenerateErrorInvalidEntryNumber_Node1_action N_GenerateErrorInvalidEntryNumber_Node1_action --> E_GenerateErrorInvalidEntryNumber N_GenerateErrorInvalidEntryNumber_Node0 -- No --> N_GenerateErrorInvalidEntryNumber_Node1 N_GenerateErrorInvalidEntryNumber_Node1 -- No --> E_GenerateErrorInvalidEntryNumber
File: GCX016E.cbl
GIVEN: Entry number validation has failed
WHEN: The system processes the validation failure
THEN:
  • Generate appropriate error message indicating invalid entry number
  • Halt processing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Entry number validation is performed against existing records
WHEN: The entry number is found to be invalid or does not exist
THEN:
  • An error is generated indicating the entry number is invalid
  • Processing cannot continue
βœ“ Consolidated Acceptance Criteria
  • The system finalizes in-bond entry processing → complete the in-bond entry processing and proceed to next processing stage
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CompleteInBondEntryProcessing(["Start Step"]) E_CompleteInBondEntryProcessing(["End Step"]) N_CompleteInBondEntryProcessing_Node0{"The system finalizes in-bond entry
processing"}:::decision N_CompleteInBondEntryProcessing_Node0_action["Complete the in-bond entry
processing and proceed to next
processing stage"]:::main N_CompleteInBondEntryProcessing_Node0 -- Yes --> N_CompleteInBondEntryProcessing_Node0_action N_CompleteInBondEntryProcessing_Node0_action --> E_CompleteInBondEntryProcessing S_CompleteInBondEntryProcessing --> N_CompleteInBondEntryProcessing_Node0 N_CompleteInBondEntryProcessing_Node0 -- No --> E_CompleteInBondEntryProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: All in-bond entry processing steps have been completed successfully or entry number was not present
WHEN: The system finalizes in-bond entry processing
THEN:
  • Complete the in-bond entry processing
  • Proceed to next processing stage
βœ“ Consolidated Acceptance Criteria
  • The system checks for the presence of an entry type code in the segment → if entry type code is present, continue with conversion process, otherwise skip entry type processing and continue with other segment processing
  • The system checks for the presence of an entry type code in the message → if entry type code is present, proceed to validation; if not present, skip entry type processing
  • The system checks for the presence of an entry type code in the segment → if entry type code is present, continue with conversion processing, otherwise skip entry type processing and continue with cargo processing
  • The system checks for the presence of an entry type code in the segment → if entry type code is present, proceed to lookup conversion; if not present, skip entry type processing
  • The system checks for the presence of an entry type code → if entry type code is present, retrieve and evaluate the code value, otherwise continue with standard 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_EntryTypeCodePresent(["Start Step"]) E_EntryTypeCodePresent(["End Step"]) N_EntryTypeCodePresent_Node0{"The system checks for the presence
of an entry type code in the segment"}:::decision N_EntryTypeCodePresent_Node0_action["If entry type code is present,
continue with conversion process,
otherwise skip entry type processing
and continue with other segment
processing"]:::main N_EntryTypeCodePresent_Node0 -- Yes --> N_EntryTypeCodePresent_Node0_action N_EntryTypeCodePresent_Node0_action --> E_EntryTypeCodePresent S_EntryTypeCodePresent --> N_EntryTypeCodePresent_Node0 N_EntryTypeCodePresent_Node1{"The system checks for the presence
of an entry type code in the message"}:::decision N_EntryTypeCodePresent_Node1_action["If entry type code is present,
proceed to validation if not
present, skip entry type processing"]:::main N_EntryTypeCodePresent_Node1 -- Yes --> N_EntryTypeCodePresent_Node1_action N_EntryTypeCodePresent_Node1_action --> E_EntryTypeCodePresent N_EntryTypeCodePresent_Node0 -- No --> N_EntryTypeCodePresent_Node1 N_EntryTypeCodePresent_Node2{"The system checks for the presence
of an entry type code in the segment"}:::decision N_EntryTypeCodePresent_Node2_action["If entry type code is present,
continue with conversion processing,
otherwise skip entry type processing
and continue with cargo processing"]:::main N_EntryTypeCodePresent_Node2 -- Yes --> N_EntryTypeCodePresent_Node2_action N_EntryTypeCodePresent_Node2_action --> E_EntryTypeCodePresent N_EntryTypeCodePresent_Node1 -- No --> N_EntryTypeCodePresent_Node2 N_EntryTypeCodePresent_Node3{"The system checks for the presence
of an entry type code in the segment"}:::decision N_EntryTypeCodePresent_Node3_action["If entry type code is present,
proceed to lookup conversion if not
present, skip entry type processing"]:::main N_EntryTypeCodePresent_Node3 -- Yes --> N_EntryTypeCodePresent_Node3_action N_EntryTypeCodePresent_Node3_action --> E_EntryTypeCodePresent N_EntryTypeCodePresent_Node2 -- No --> N_EntryTypeCodePresent_Node3 N_EntryTypeCodePresent_Node4{"The system checks for the presence
of an entry type code"}:::decision N_EntryTypeCodePresent_Node4_action["If entry type code is present,
retrieve and evaluate the code
value, otherwise continue with
standard entry processing"]:::main N_EntryTypeCodePresent_Node4 -- Yes --> N_EntryTypeCodePresent_Node4_action N_EntryTypeCodePresent_Node4_action --> E_EntryTypeCodePresent N_EntryTypeCodePresent_Node3 -- No --> N_EntryTypeCodePresent_Node4 N_EntryTypeCodePresent_Node4 -- No --> E_EntryTypeCodePresent
File: GCX016E.cbl
GIVEN: An X4 segment is being processed for cargo disposition
WHEN: The system checks for the presence of an entry type code in the segment
THEN:
  • If entry type code is present, continue with conversion process, otherwise skip entry type processing
  • Continue with other segment processing
File: GCX016E.cbl
GIVEN: An EDI message is received for SNP processing
WHEN: The system checks for the presence of an entry type code in the message
THEN: If entry type code is present, proceed to validation; if not present, skip entry type processing
File: GCX016E.cbl
GIVEN: An X4 segment is being processed for cargo disposition
WHEN: The system checks for the presence of an entry type code in the segment
THEN:
  • If entry type code is present, continue with conversion processing, otherwise skip entry type processing
  • Continue with cargo processing
File: GCX016E.cbl
GIVEN: An X4 segment is being processed for cargo disposition
WHEN: The system checks for the presence of an entry type code in the segment
THEN: If entry type code is present, proceed to lookup conversion; if not present, skip entry type processing
File: GCX016E.cbl
GIVEN: An X4 segment is being processed for master in-bond flag setting
WHEN: The system checks for the presence of an entry type code
THEN:
  • If entry type code is present, retrieve
  • Evaluate the code value, otherwise continue with standard entry processing
βœ“ Consolidated Acceptance Criteria
  • The system searches the EDI entry type code conversion table for a matching code → the system locates the position of the EDI code in the lookup array 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_LookupEDICodeinConversionTable(["Start Step"]) E_LookupEDICodeinConversionTable(["End Step"]) N_LookupEDICodeinConversionTable_Node0{"The system searches the EDI entry
type code conversion table for a
matching code"}:::decision N_LookupEDICodeinConversionTable_Node0_action["The system locates the position of
the EDI code in the lookup array for
further processing"]:::main N_LookupEDICodeinConversionTable_Node0 -- Yes --> N_LookupEDICodeinConversionTable_Node0_action N_LookupEDICodeinConversionTable_Node0_action --> E_LookupEDICodeinConversionTable S_LookupEDICodeinConversionTable --> N_LookupEDICodeinConversionTable_Node0 N_LookupEDICodeinConversionTable_Node0 -- No --> E_LookupEDICodeinConversionTable
File: GCX016E.cbl
GIVEN: An EDI entry type code is present in the X4 segment and conversion arrays are initialized
WHEN: The system searches the EDI entry type code conversion table for a matching code
THEN: The system locates the position of the EDI code in the lookup array for further processing
βœ“ Consolidated Acceptance Criteria
  • If whether the code was found in the lookup table → if code is found, retrieve the internal system value, otherwise generate an error message for invalid code
  • The disposition code is not found in the table → the system generates an error message for the unknown 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_CodeFoundinTable(["Start Step"]) E_CodeFoundinTable(["End Step"]) N_CodeFoundinTable_Node0{"The system evaluates whether the
code was found in the lookup table"}:::decision N_CodeFoundinTable_Node0_action["If code is found, retrieve the
internal system value, otherwise
generate an error message for
invalid code"]:::main N_CodeFoundinTable_Node0 -- Yes --> N_CodeFoundinTable_Node0_action N_CodeFoundinTable_Node0_action --> E_CodeFoundinTable S_CodeFoundinTable --> N_CodeFoundinTable_Node0 N_CodeFoundinTable_Node1{"The disposition code is not found
in the table"}:::decision N_CodeFoundinTable_Node1_action["The system generates an error
message for the unknown disposition
code"]:::main N_CodeFoundinTable_Node1 -- Yes --> N_CodeFoundinTable_Node1_action N_CodeFoundinTable_Node1_action --> E_CodeFoundinTable N_CodeFoundinTable_Node0 -- No --> N_CodeFoundinTable_Node1 N_CodeFoundinTable_Node1 -- No --> E_CodeFoundinTable
File: GCX016E.cbl
GIVEN: An EDI entry type code has been searched in the conversion table
WHEN: The system evaluates whether the code was found in the lookup table
THEN: If code is found, retrieve the internal system value, otherwise generate an error message for invalid code
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code lookup has been performed in the DC table
WHEN: The disposition code is not found in the table
THEN: The system generates an error message for the unknown disposition code
βœ“ Consolidated Acceptance Criteria
  • The system retrieves the corresponding internal value from the same array position → the internal system entry type value is obtained 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_RetrieveInternalSystemValue(["Start Step"]) E_RetrieveInternalSystemValue(["End Step"]) N_RetrieveInternalSystemValue_Node0{"The system retrieves the
corresponding internal value from
the same array position"}:::decision N_RetrieveInternalSystemValue_Node0_action["The internal system entry type
value is obtained for further
processing"]:::main N_RetrieveInternalSystemValue_Node0 -- Yes --> N_RetrieveInternalSystemValue_Node0_action N_RetrieveInternalSystemValue_Node0_action --> E_RetrieveInternalSystemValue S_RetrieveInternalSystemValue --> N_RetrieveInternalSystemValue_Node0 N_RetrieveInternalSystemValue_Node0 -- No --> E_RetrieveInternalSystemValue
File: GCX016E.cbl
GIVEN: The EDI entry type code is found in the conversion lookup table
WHEN: The system retrieves the corresponding internal value from the same array position
THEN: The internal system entry type value is obtained for further processing
βœ“ Consolidated Acceptance Criteria
  • If whether the entry type code indicates a border crossing → if it is a border crossing code, apply special border crossing logic, otherwise proceed with standard in-bond flag processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_BorderCrossingCode(["Start Step"]) E_BorderCrossingCode(["End Step"]) N_BorderCrossingCode_Node0{"The system evaluates whether the
entry type code indicates a border
crossing"}:::decision N_BorderCrossingCode_Node0_action["If it is a border crossing code,
apply special border crossing logic,
otherwise proceed with standard
in-bond flag processing"]:::main N_BorderCrossingCode_Node0 -- Yes --> N_BorderCrossingCode_Node0_action N_BorderCrossingCode_Node0_action --> E_BorderCrossingCode S_BorderCrossingCode --> N_BorderCrossingCode_Node0 N_BorderCrossingCode_Node0 -- No --> E_BorderCrossingCode
File: GCX016E.cbl
GIVEN: An internal system entry type value has been retrieved from the conversion table
WHEN: The system evaluates whether the entry type code indicates a border crossing
THEN: If it is a border crossing code, apply special border crossing logic, otherwise proceed with standard in-bond flag processing
βœ“ Consolidated Acceptance Criteria
  • The system applies border crossing specific processing rules → special border crossing logic is applied including Canadian border 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_ApplySpecialBorderCrossingLogic(["Start Step"]) E_ApplySpecialBorderCrossingLogic(["End Step"]) N_ApplySpecialBorderCrossingLogic_Node0{"The system applies border crossing
specific processing rules"}:::decision N_ApplySpecialBorderCrossingLogic_Node0_action["Special border crossing logic is
applied including Canadian border
location mapping"]:::main N_ApplySpecialBorderCrossingLogic_Node0 -- Yes --> N_ApplySpecialBorderCrossingLogic_Node0_action N_ApplySpecialBorderCrossingLogic_Node0_action --> E_ApplySpecialBorderCrossingLogic S_ApplySpecialBorderCrossingLogic --> N_ApplySpecialBorderCrossingLogic_Node0 N_ApplySpecialBorderCrossingLogic_Node0 -- No --> E_ApplySpecialBorderCrossingLogic
File: GCX016E.cbl
GIVEN: The entry type code is identified as a border crossing code
WHEN: The system applies border crossing specific processing rules
THEN: Special border crossing logic is applied including Canadian border location mapping
βœ“ Consolidated Acceptance Criteria
  • The system maps the code to Canadian border crossing locations → the appropriate Canadian border location identifier is assigned 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_MaptoCanadianBorderLocation(["Start Step"]) E_MaptoCanadianBorderLocation(["End Step"]) N_MaptoCanadianBorderLocation_Node0{"The system maps the code to
Canadian border crossing locations"}:::decision N_MaptoCanadianBorderLocation_Node0_action["The appropriate Canadian border
location identifier is assigned to
the cargo record"]:::main N_MaptoCanadianBorderLocation_Node0 -- Yes --> N_MaptoCanadianBorderLocation_Node0_action N_MaptoCanadianBorderLocation_Node0_action --> E_MaptoCanadianBorderLocation S_MaptoCanadianBorderLocation --> N_MaptoCanadianBorderLocation_Node0 N_MaptoCanadianBorderLocation_Node0 -- No --> E_MaptoCanadianBorderLocation
File: GCX016E.cbl
GIVEN: A border crossing entry type code requires location mapping
WHEN: The system maps the code to Canadian border crossing locations
THEN: The appropriate Canadian border location identifier is assigned to the cargo record
βœ“ Consolidated Acceptance Criteria
  • The entry type code is 61, 62, 63, or 69 → the master in-bond flag is set to indicate this cargo requires 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_SetMasterInBondFlagforCodes61626369(["Start Step"]) E_SetMasterInBondFlagforCodes61626369(["End Step"]) N_SetMasterInBondFlagforCodes61626369_Node0{"The entry type code is 61, 62, 63,
or 69"}:::decision N_SetMasterInBondFlagforCodes61626369_Node0_action["The master in-bond flag is set to
indicate this cargo requires in-bond
processing"]:::main N_SetMasterInBondFlagforCodes61626369_Node0 -- Yes --> N_SetMasterInBondFlagforCodes61626369_Node0_action N_SetMasterInBondFlagforCodes61626369_Node0_action --> E_SetMasterInBondFlagforCodes61626369 S_SetMasterInBondFlagforCodes61626369 --> N_SetMasterInBondFlagforCodes61626369_Node0 N_SetMasterInBondFlagforCodes61626369_Node0 -- No --> E_SetMasterInBondFlagforCodes61626369
File: GCX016E.cbl
GIVEN: An entry type code has been processed (either border crossing or standard)
WHEN: The entry type code is 61, 62, 63, or 69
THEN: The master in-bond flag is set to indicate this cargo requires in-bond processing
βœ“ Consolidated Acceptance Criteria
  • If whether all validation steps were successful → if validation is successful, update the cargo record with the internal code, otherwise generate an 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_CodeValidationSuccessful(["Start Step"]) E_CodeValidationSuccessful(["End Step"]) N_CodeValidationSuccessful_Node0{"The system evaluates whether all
validation steps were successful"}:::decision N_CodeValidationSuccessful_Node0_action["If validation is successful, update
the cargo record with the internal
code, otherwise generate an error
message"]:::main N_CodeValidationSuccessful_Node0 -- Yes --> N_CodeValidationSuccessful_Node0_action N_CodeValidationSuccessful_Node0_action --> E_CodeValidationSuccessful S_CodeValidationSuccessful --> N_CodeValidationSuccessful_Node0 N_CodeValidationSuccessful_Node0 -- No --> E_CodeValidationSuccessful
File: GCX016E.cbl
GIVEN: Entry type code processing including border crossing logic and in-bond flag setting has been completed
WHEN: The system evaluates whether all validation steps were successful
THEN: If validation is successful, update the cargo record with the internal code, otherwise generate an error message
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record with the converted entry type information → the cargo record is updated with the internal entry type code, border crossing information, and in-bond flags as 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_UpdateCargoRecordwithInternalCode(["Start Step"]) E_UpdateCargoRecordwithInternalCode(["End Step"]) N_UpdateCargoRecordwithInternalCode_Node0{"The system updates the cargo record
with the converted entry type
information"}:::decision N_UpdateCargoRecordwithInternalCode_Node0_action["The cargo record is updated with
the internal entry type code, border
crossing information, and in-bond
flags as applicable"]:::main N_UpdateCargoRecordwithInternalCode_Node0 -- Yes --> N_UpdateCargoRecordwithInternalCode_Node0_action N_UpdateCargoRecordwithInternalCode_Node0_action --> E_UpdateCargoRecordwithInternalCode S_UpdateCargoRecordwithInternalCode --> N_UpdateCargoRecordwithInternalCode_Node0 N_UpdateCargoRecordwithInternalCode_Node0 -- No --> E_UpdateCargoRecordwithInternalCode
File: GCX016E.cbl
GIVEN: Entry type code validation has been successful
WHEN: The system updates the cargo record with the converted entry type information
THEN: The cargo record is updated with the internal entry type code, border crossing information, and in-bond flags as applicable
βœ“ Consolidated Acceptance Criteria
  • The system logs the code conversion action → an audit log entry is created documenting the entry type code conversion from EDI format to internal system 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_LogCodeConversionAction(["Start Step"]) E_LogCodeConversionAction(["End Step"]) N_LogCodeConversionAction_Node0{"The system logs the code conversion
action"}:::decision N_LogCodeConversionAction_Node0_action["An audit log entry is created
documenting the entry type code
conversion from EDI format to
internal system format"]:::main N_LogCodeConversionAction_Node0 -- Yes --> N_LogCodeConversionAction_Node0_action N_LogCodeConversionAction_Node0_action --> E_LogCodeConversionAction S_LogCodeConversionAction --> N_LogCodeConversionAction_Node0 N_LogCodeConversionAction_Node0 -- No --> E_LogCodeConversionAction
File: GCX016E.cbl
GIVEN: The cargo record has been successfully updated with the converted entry type code
WHEN: The system logs the code conversion action
THEN: An audit log entry is created documenting the entry type code conversion from EDI format to internal system format
βœ“ Consolidated Acceptance Criteria
  • The system generates an error message for the invalid entry type code → an error message is created indicating the entry type code is invalid and cannot 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_GenerateErrorMessageforInvalidCode(["Start Step"]) E_GenerateErrorMessageforInvalidCode(["End Step"]) N_GenerateErrorMessageforInvalidCode_Node0{"The system generates an error
message for the invalid entry type
code"}:::decision N_GenerateErrorMessageforInvalidCode_Node0_action["An error message is created
indicating the entry type code is
invalid and cannot be processed"]:::exclusion N_GenerateErrorMessageforInvalidCode_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidCode_Node0_action N_GenerateErrorMessageforInvalidCode_Node0_action --> E_GenerateErrorMessageforInvalidCode S_GenerateErrorMessageforInvalidCode --> N_GenerateErrorMessageforInvalidCode_Node0 N_GenerateErrorMessageforInvalidCode_Node0 -- No --> E_GenerateErrorMessageforInvalidCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An entry type code cannot be found in the conversion table or validation fails
WHEN: The system generates an error message for the invalid entry type code
THEN:
  • An error message is created indicating the entry type code is invalid
  • Cannot be processed
βœ“ Consolidated Acceptance Criteria
  • If the cargo movement pattern for border crossing processing → the system classifies the movement as US to Canada Transit, Canada to US Transit, or US-Canada-US Transit based on origin 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_CargoMovementType(["Start Step"]) E_CargoMovementType(["End Step"]) N_CargoMovementType_Node0{"The system evaluates the cargo
movement pattern for border crossing
processing"}:::decision N_CargoMovementType_Node0_action["The system classifies the movement
as US to Canada Transit, Canada to
US Transit, or US-Canada-US Transit
based on origin and destination
locations"]:::main N_CargoMovementType_Node0 -- Yes --> N_CargoMovementType_Node0_action N_CargoMovementType_Node0_action --> E_CargoMovementType S_CargoMovementType --> N_CargoMovementType_Node0 N_CargoMovementType_Node0 -- No --> E_CargoMovementType
File: GCX016E.cbl
GIVEN: A cargo record with origin and destination location information
WHEN: The system evaluates the cargo movement pattern for border crossing processing
THEN:
  • The system classifies the movement as us to canada transit, canada to us transit, or us-canada-us transit based on origin
  • Destination locations
βœ“ Consolidated Acceptance Criteria
  • The system needs to identify the corresponding Canadian border location → the system retrieves the mapped Canadian border location code from the 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_MapUSPortCodetoCanadianBorderLocation(["Start Step"]) E_MapUSPortCodetoCanadianBorderLocation(["End Step"]) N_MapUSPortCodetoCanadianBorderLocation_Node0{"The system needs to identify the
corresponding Canadian border
location"}:::decision N_MapUSPortCodetoCanadianBorderLocation_Node0_action["The system retrieves the mapped
Canadian border location code from
the mapping table"]:::main N_MapUSPortCodetoCanadianBorderLocation_Node0 -- Yes --> N_MapUSPortCodetoCanadianBorderLocation_Node0_action N_MapUSPortCodetoCanadianBorderLocation_Node0_action --> E_MapUSPortCodetoCanadianBorderLocation S_MapUSPortCodetoCanadianBorderLocation --> N_MapUSPortCodetoCanadianBorderLocation_Node0 N_MapUSPortCodetoCanadianBorderLocation_Node0 -- No --> E_MapUSPortCodetoCanadianBorderLocation
File: GCX016E.cbl
GIVEN: A US port code from cargo location information and a US Port to Canadian Border Mapping table
WHEN: The system needs to identify the corresponding Canadian border location
THEN: The system retrieves the mapped Canadian border location code from the mapping table
βœ“ Consolidated Acceptance Criteria
  • The system validates the Canadian border location → the system confirms whether the Canadian location 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_ValidateCanadianBorderLocation(["Start Step"]) E_ValidateCanadianBorderLocation(["End Step"]) N_ValidateCanadianBorderLocation_Node0{"The system validates the Canadian
border location"}:::decision N_ValidateCanadianBorderLocation_Node0_action["The system confirms whether the
Canadian location exists in the
reference table"]:::main N_ValidateCanadianBorderLocation_Node0 -- Yes --> N_ValidateCanadianBorderLocation_Node0_action N_ValidateCanadianBorderLocation_Node0_action --> E_ValidateCanadianBorderLocation S_ValidateCanadianBorderLocation --> N_ValidateCanadianBorderLocation_Node0 N_ValidateCanadianBorderLocation_Node0 -- No --> E_ValidateCanadianBorderLocation
File: GCX016E.cbl
GIVEN: A mapped Canadian border location code and the Canadian Border Location Table
WHEN: The system validates the Canadian border location
THEN: The system confirms whether the Canadian location exists in the reference table
βœ“ Consolidated Acceptance Criteria
  • The Canadian location is confirmed to exist → the system sets the Canadian border port name 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_SetCanadianBorderPortName(["Start Step"]) E_SetCanadianBorderPortName(["End Step"]) N_SetCanadianBorderPortName_Node0{"The Canadian location is confirmed
to exist"}:::decision N_SetCanadianBorderPortName_Node0_action["The system sets the Canadian border
port name for the cargo record"]:::main N_SetCanadianBorderPortName_Node0 -- Yes --> N_SetCanadianBorderPortName_Node0_action N_SetCanadianBorderPortName_Node0_action --> E_SetCanadianBorderPortName S_SetCanadianBorderPortName --> N_SetCanadianBorderPortName_Node0 N_SetCanadianBorderPortName_Node0 -- No --> E_SetCanadianBorderPortName
File: GCX016E.cbl
GIVEN: A validated Canadian border location code from the Canadian Border Location Table
WHEN: The Canadian location is confirmed to exist
THEN: The system sets the Canadian border port name for the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system needs to find corresponding Canadian manifest records → the system searches the Canadian manifest database using equipment identification 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_SearchCanadianManifestDatabase(["Start Step"]) E_SearchCanadianManifestDatabase(["End Step"]) N_SearchCanadianManifestDatabase_Node0{"The system needs to find
corresponding Canadian manifest
records"}:::decision N_SearchCanadianManifestDatabase_Node0_action["The system searches the Canadian
manifest database using equipment
identification criteria"]:::main N_SearchCanadianManifestDatabase_Node0 -- Yes --> N_SearchCanadianManifestDatabase_Node0_action N_SearchCanadianManifestDatabase_Node0_action --> E_SearchCanadianManifestDatabase S_SearchCanadianManifestDatabase --> N_SearchCanadianManifestDatabase_Node0 N_SearchCanadianManifestDatabase_Node0 -- No --> E_SearchCanadianManifestDatabase
File: GCX016E.cbl
GIVEN: Cargo equipment information and access to GCCC-CARGO-ROOT Canadian Cargo database
WHEN: The system needs to find corresponding Canadian manifest records
THEN: The system searches the Canadian manifest database using equipment identification criteria
βœ“ Consolidated Acceptance Criteria
  • The system compares equipment IDs for cross-border record linking → the system confirms whether the equipment IDs match exactly between the US and Canadian records
  • If the match results → cross-border tracking link is created if equipment IDs match, otherwise error is generated for no Canadian 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_EquipmentIDMatches(["Start Step"]) E_EquipmentIDMatches(["End Step"]) N_EquipmentIDMatches_Node0{"The system compares equipment IDs
for cross-border record linking"}:::decision N_EquipmentIDMatches_Node0_action["The system confirms whether the
equipment IDs match exactly between
the US and Canadian records"]:::main N_EquipmentIDMatches_Node0 -- Yes --> N_EquipmentIDMatches_Node0_action N_EquipmentIDMatches_Node0_action --> E_EquipmentIDMatches S_EquipmentIDMatches --> N_EquipmentIDMatches_Node0 N_EquipmentIDMatches_Node1{"The system evaluates the match
results"}:::decision N_EquipmentIDMatches_Node1_action["Cross-border tracking link is
created if equipment IDs match,
otherwise error is generated for no
Canadian match"]:::main N_EquipmentIDMatches_Node1 -- Yes --> N_EquipmentIDMatches_Node1_action N_EquipmentIDMatches_Node1_action --> E_EquipmentIDMatches N_EquipmentIDMatches_Node0 -- No --> N_EquipmentIDMatches_Node1 N_EquipmentIDMatches_Node1 -- No --> E_EquipmentIDMatches
File: GCX016E.cbl
GIVEN: A US cargo record with equipment ID and a Canadian manifest record with equipment ID
WHEN: The system compares equipment IDs for cross-border record linking
THEN:
  • The system confirms whether the equipment ids match exactly between the us
  • Canadian records
File: GCX016E.cbl
GIVEN: Equipment ID validation has been performed
WHEN: The system evaluates the match results
THEN: Cross-border tracking link is created if equipment IDs match, otherwise error is generated for no Canadian match
βœ“ Consolidated Acceptance Criteria
  • Equipment IDs match between the records → the system establishes a cross-border linkage between the 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_LinkUSandCanadianRecords(["Start Step"]) E_LinkUSandCanadianRecords(["End Step"]) N_LinkUSandCanadianRecords_Node0{"Equipment IDs match between the
records"}:::decision N_LinkUSandCanadianRecords_Node0_action["The system establishes a
cross-border linkage between the US
and Canadian cargo records"]:::main N_LinkUSandCanadianRecords_Node0 -- Yes --> N_LinkUSandCanadianRecords_Node0_action N_LinkUSandCanadianRecords_Node0_action --> E_LinkUSandCanadianRecords S_LinkUSandCanadianRecords --> N_LinkUSandCanadianRecords_Node0 N_LinkUSandCanadianRecords_Node0 -- No --> E_LinkUSandCanadianRecords
File: GCX016E.cbl
GIVEN: Matching US and Canadian cargo records with validated equipment IDs
WHEN: Equipment IDs match between the records
THEN:
  • The system establishes a cross-border linkage between the us
  • Canadian cargo records
βœ“ Consolidated Acceptance Criteria
  • Cross-border record linkage is established → the system sets cross-border transit flags on both 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_SetCrossBorderTransitFlags(["Start Step"]) E_SetCrossBorderTransitFlags(["End Step"]) N_SetCrossBorderTransitFlags_Node0{"Cross-border record linkage is
established"}:::decision N_SetCrossBorderTransitFlags_Node0_action["The system sets cross-border
transit flags on both US and
Canadian cargo records"]:::main N_SetCrossBorderTransitFlags_Node0 -- Yes --> N_SetCrossBorderTransitFlags_Node0_action N_SetCrossBorderTransitFlags_Node0_action --> E_SetCrossBorderTransitFlags S_SetCrossBorderTransitFlags --> N_SetCrossBorderTransitFlags_Node0 N_SetCrossBorderTransitFlags_Node0 -- No --> E_SetCrossBorderTransitFlags
File: GCX016E.cbl
GIVEN: Successfully linked US and Canadian cargo records
WHEN: Cross-border record linkage is established
THEN:
  • The system sets cross-border transit flags on both us
  • Canadian cargo records
βœ“ Consolidated Acceptance Criteria
  • The cargo movement type is US-Canada-US Transit → the system applies special transit processing rules specific to round-trip cross-border movements
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ApplySpecialTransitRules(["Start Step"]) E_ApplySpecialTransitRules(["End Step"]) N_ApplySpecialTransitRules_Node0{"The cargo movement type is
US-Canada-US Transit"}:::decision N_ApplySpecialTransitRules_Node0_action["The system applies special transit
processing rules specific to
round-trip cross-border movements"]:::main N_ApplySpecialTransitRules_Node0 -- Yes --> N_ApplySpecialTransitRules_Node0_action N_ApplySpecialTransitRules_Node0_action --> E_ApplySpecialTransitRules S_ApplySpecialTransitRules --> N_ApplySpecialTransitRules_Node0 N_ApplySpecialTransitRules_Node0 -- No --> E_ApplySpecialTransitRules
File: GCX016E.cbl
GIVEN: A cargo record identified as US-Canada-US transit movement
WHEN: The cargo movement type is US-Canada-US Transit
THEN: The system applies special transit processing rules specific to round-trip cross-border movements
βœ“ Consolidated Acceptance Criteria
  • Canadian manifest is successfully located → the system creates audit trail records documenting the cross-border cargo movement
  • Cross-border audit trail creation is initiated → system creates audit record linking US and Canadian 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_CreateCrossBorderAuditTrail(["Start Step"]) E_CreateCrossBorderAuditTrail(["End Step"]) N_CreateCrossBorderAuditTrail_Node0{"Canadian manifest is successfully
located"}:::decision N_CreateCrossBorderAuditTrail_Node0_action["The system creates audit trail
records documenting the cross-border
cargo movement"]:::main N_CreateCrossBorderAuditTrail_Node0 -- Yes --> N_CreateCrossBorderAuditTrail_Node0_action N_CreateCrossBorderAuditTrail_Node0_action --> E_CreateCrossBorderAuditTrail S_CreateCrossBorderAuditTrail --> N_CreateCrossBorderAuditTrail_Node0 N_CreateCrossBorderAuditTrail_Node1{"Cross-border audit trail creation
is initiated"}:::decision N_CreateCrossBorderAuditTrail_Node1_action["System creates audit record linking
US and Canadian manifest information"]:::main N_CreateCrossBorderAuditTrail_Node1 -- Yes --> N_CreateCrossBorderAuditTrail_Node1_action N_CreateCrossBorderAuditTrail_Node1_action --> E_CreateCrossBorderAuditTrail N_CreateCrossBorderAuditTrail_Node0 -- No --> N_CreateCrossBorderAuditTrail_Node1 N_CreateCrossBorderAuditTrail_Node1 -- No --> E_CreateCrossBorderAuditTrail
File: GCX016E.cbl
GIVEN: A Canadian manifest record found for cross-border cargo movement
WHEN: Canadian manifest is successfully located
THEN: The system creates audit trail records documenting the cross-border cargo movement
File: GCX016E.cbl
GIVEN: Canadian cargo has valid status for processing
WHEN: Cross-border audit trail creation is initiated
THEN:
  • System creates audit record linking us
  • Canadian manifest information
βœ“ Consolidated Acceptance Criteria
  • The Canadian location is not found in the reference table → the system generates a border crossing error indicating the location 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_GenerateBorderCrossingError(["Start Step"]) E_GenerateBorderCrossingError(["End Step"]) N_GenerateBorderCrossingError_Node0{"The Canadian location is not found
in the reference table"}:::decision N_GenerateBorderCrossingError_Node0_action["The system generates a border
crossing error indicating the
location validation failure"]:::main N_GenerateBorderCrossingError_Node0 -- Yes --> N_GenerateBorderCrossingError_Node0_action N_GenerateBorderCrossingError_Node0_action --> E_GenerateBorderCrossingError S_GenerateBorderCrossingError --> N_GenerateBorderCrossingError_Node0 N_GenerateBorderCrossingError_Node0 -- No --> E_GenerateBorderCrossingError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record requiring border crossing processing and Canadian Border Location Table
WHEN: The Canadian location is not found in the reference table
THEN: The system generates a border crossing error indicating the location validation failure
βœ“ Consolidated Acceptance Criteria
  • No Canadian manifest is found OR equipment IDs do not match → the system continues with standard cargo processing without cross-border linkage
  • The system determines standard processing should continue → standard cargo processing procedures are followed without transit-specific 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_ContinueStandardProcessing(["Start Step"]) E_ContinueStandardProcessing(["End Step"]) N_ContinueStandardProcessing_Node0{"No Canadian manifest is found OR
equipment IDs do not match"}:::decision N_ContinueStandardProcessing_Node0_action["The system continues with standard
cargo processing without
cross-border linkage"]:::main N_ContinueStandardProcessing_Node0 -- Yes --> N_ContinueStandardProcessing_Node0_action N_ContinueStandardProcessing_Node0_action --> E_ContinueStandardProcessing S_ContinueStandardProcessing --> N_ContinueStandardProcessing_Node0 N_ContinueStandardProcessing_Node1{"The system determines standard
processing should continue"}:::decision N_ContinueStandardProcessing_Node1_action["Standard cargo processing
procedures are followed without
transit-specific handling"]:::main N_ContinueStandardProcessing_Node1 -- Yes --> N_ContinueStandardProcessing_Node1_action N_ContinueStandardProcessing_Node1_action --> E_ContinueStandardProcessing N_ContinueStandardProcessing_Node0 -- No --> N_ContinueStandardProcessing_Node1 N_ContinueStandardProcessing_Node1 -- No --> E_ContinueStandardProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record undergoing border crossing logic where Canadian manifest search fails or equipment ID validation fails
WHEN: No Canadian manifest is found OR equipment IDs do not match
THEN: The system continues with standard cargo processing without cross-border linkage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo does not require Canadian transit processing or transit processing has failed
WHEN: The system determines standard processing should continue
THEN: Standard cargo processing procedures are followed without transit-specific handling
βœ“ Consolidated Acceptance Criteria
  • Border crossing logic is complete (whether successful linkage, error, or standard processing) → the system updates the cargo status to reflect the border transit 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_UpdateCargoStatusforBorderTransit(["Start Step"]) E_UpdateCargoStatusforBorderTransit(["End Step"]) N_UpdateCargoStatusforBorderTransit_Node0{"Border crossing logic is complete
whether successful linkage, error,
or standard processing"}:::decision N_UpdateCargoStatusforBorderTransit_Node0_action["The system updates the cargo status
to reflect the border transit
processing results"]:::exclusion N_UpdateCargoStatusforBorderTransit_Node0 -- Yes -->|Alternative| N_UpdateCargoStatusforBorderTransit_Node0_action N_UpdateCargoStatusforBorderTransit_Node0_action --> E_UpdateCargoStatusforBorderTransit S_UpdateCargoStatusforBorderTransit --> N_UpdateCargoStatusforBorderTransit_Node0 N_UpdateCargoStatusforBorderTransit_Node0 -- No --> E_UpdateCargoStatusforBorderTransit
File: GCX016E.cbl
GIVEN: A cargo record that has completed border crossing logic processing
WHEN: Border crossing logic is complete (whether successful linkage, error, or standard processing)
THEN: The system updates the cargo status to reflect the border transit processing results
βœ“ Consolidated Acceptance Criteria
  • The system checks if the arrival port is designated for export processing → if port is designated for export, proceed with export manifest business rules, otherwise generate location validation 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_ArrivalPortDesignatedforExport(["Start Step"]) E_ArrivalPortDesignatedforExport(["End Step"]) N_ArrivalPortDesignatedforExport_Node0{"The system checks if the arrival
port is designated for export
processing"}:::decision N_ArrivalPortDesignatedforExport_Node0_action["If port is designated for export,
proceed with export manifest
business rules, otherwise generate
location validation messages"]:::main N_ArrivalPortDesignatedforExport_Node0 -- Yes --> N_ArrivalPortDesignatedforExport_Node0_action N_ArrivalPortDesignatedforExport_Node0_action --> E_ArrivalPortDesignatedforExport S_ArrivalPortDesignatedforExport --> N_ArrivalPortDesignatedforExport_Node0 N_ArrivalPortDesignatedforExport_Node0 -- No --> E_ArrivalPortDesignatedforExport
File: GCX016E.cbl
GIVEN: An export manifest train is processed and arrival port information is available from P4 location segments
WHEN: The system checks if the arrival port is designated for export processing
THEN: If port is designated for export, proceed with export manifest business rules, otherwise generate location validation messages
βœ“ Consolidated Acceptance Criteria
  • The system processes the export manifest → apply export-specific processing rules including location validation and status updates
  • The system applies export manifest business rules → export-specific business rules are applied to the 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_ApplyExportManifestBusinessRules(["Start Step"]) E_ApplyExportManifestBusinessRules(["End Step"]) N_ApplyExportManifestBusinessRules_Node0{"The system processes the export
manifest"}:::decision N_ApplyExportManifestBusinessRules_Node0_action["Apply export-specific processing
rules including location validation
and status updates"]:::main N_ApplyExportManifestBusinessRules_Node0 -- Yes --> N_ApplyExportManifestBusinessRules_Node0_action N_ApplyExportManifestBusinessRules_Node0_action --> E_ApplyExportManifestBusinessRules S_ApplyExportManifestBusinessRules --> N_ApplyExportManifestBusinessRules_Node0 N_ApplyExportManifestBusinessRules_Node1{"The system applies export manifest
business rules"}:::decision N_ApplyExportManifestBusinessRules_Node1_action["Export-specific business rules are
applied to the manifest processing
workflow"]:::main N_ApplyExportManifestBusinessRules_Node1 -- Yes --> N_ApplyExportManifestBusinessRules_Node1_action N_ApplyExportManifestBusinessRules_Node1_action --> E_ApplyExportManifestBusinessRules N_ApplyExportManifestBusinessRules_Node0 -- No --> N_ApplyExportManifestBusinessRules_Node1 N_ApplyExportManifestBusinessRules_Node1 -- No --> E_ApplyExportManifestBusinessRules
File: GCX016E.cbl
GIVEN: A train is identified as export manifest and arrival port is validated for export
WHEN: The system processes the export manifest
THEN:
  • Apply export-specific processing rules including location validation
  • Status updates
File: GCX016E.cbl
GIVEN: The arrival port has been validated as designated for export manifests
WHEN: The system applies export manifest business rules
THEN: Export-specific business rules are applied to the manifest processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the import manifest → apply standard import processing rules and proceed to location 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_StandardImportProcessingRules(["Start Step"]) E_StandardImportProcessingRules(["End Step"]) N_StandardImportProcessingRules_Node0{"The system processes the import
manifest"}:::decision N_StandardImportProcessingRules_Node0_action["Apply standard import processing
rules and proceed to location
validation"]:::main N_StandardImportProcessingRules_Node0 -- Yes --> N_StandardImportProcessingRules_Node0_action N_StandardImportProcessingRules_Node0_action --> E_StandardImportProcessingRules S_StandardImportProcessingRules --> N_StandardImportProcessingRules_Node0 N_StandardImportProcessingRules_Node0 -- No --> E_StandardImportProcessingRules
File: GCX016E.cbl
GIVEN: A train is identified as import manifest (no 'T' suffix)
WHEN: The system processes the import manifest
THEN:
  • Apply standard import processing rules
  • Proceed to location validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the destination location against destination station table → if destination location is valid, proceed with location-specific rule application, otherwise generate location validation 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_ValidDestinationLocation(["Start Step"]) E_ValidDestinationLocation(["End Step"]) N_ValidDestinationLocation_Node0{"The system validates the
destination location against
destination station table"}:::decision N_ValidDestinationLocation_Node0_action["If destination location is valid,
proceed with location-specific rule
application, otherwise generate
location validation messages"]:::main N_ValidDestinationLocation_Node0 -- Yes --> N_ValidDestinationLocation_Node0_action N_ValidDestinationLocation_Node0_action --> E_ValidDestinationLocation S_ValidDestinationLocation --> N_ValidDestinationLocation_Node0 N_ValidDestinationLocation_Node0 -- No --> E_ValidDestinationLocation
File: GCX016E.cbl
GIVEN: Location identifier information is available from P4 location segments
WHEN: The system validates the destination location against destination station table
THEN: If destination location is valid, proceed with location-specific rule application, otherwise generate location validation messages
βœ“ Consolidated Acceptance Criteria
  • The system checks if the location is a border crossing point → if location is border crossing, apply border crossing rules, otherwise apply standard location 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_BorderCrossingLocation(["Start Step"]) E_BorderCrossingLocation(["End Step"]) N_BorderCrossingLocation_Node0{"The system checks if the location
is a border crossing point"}:::decision N_BorderCrossingLocation_Node0_action["If location is border crossing,
apply border crossing rules,
otherwise apply standard location
rules"]:::main N_BorderCrossingLocation_Node0 -- Yes --> N_BorderCrossingLocation_Node0_action N_BorderCrossingLocation_Node0_action --> E_BorderCrossingLocation S_BorderCrossingLocation --> N_BorderCrossingLocation_Node0 N_BorderCrossingLocation_Node0 -- No --> E_BorderCrossingLocation
File: GCX016E.cbl
GIVEN: A valid destination location is confirmed
WHEN: The system checks if the location is a border crossing point
THEN: If location is border crossing, apply border crossing rules, otherwise apply standard location rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the border crossing location → apply border-specific processing rules including vessel information swapping and special 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_ApplyBorderCrossingRules(["Start Step"]) E_ApplyBorderCrossingRules(["End Step"]) N_ApplyBorderCrossingRules_Node0{"The system processes the border
crossing location"}:::decision N_ApplyBorderCrossingRules_Node0_action["Apply border-specific processing
rules including vessel information
swapping and special status handling"]:::main N_ApplyBorderCrossingRules_Node0 -- Yes --> N_ApplyBorderCrossingRules_Node0_action N_ApplyBorderCrossingRules_Node0_action --> E_ApplyBorderCrossingRules S_ApplyBorderCrossingRules --> N_ApplyBorderCrossingRules_Node0 N_ApplyBorderCrossingRules_Node0 -- No --> E_ApplyBorderCrossingRules
File: GCX016E.cbl
GIVEN: A location is identified as a border crossing point
WHEN: The system processes the border crossing location
THEN:
  • Apply border-specific processing rules including vessel information swapping
  • Special status handling
βœ“ Consolidated Acceptance Criteria
  • The system processes the standard location → apply standard location processing rules without special border crossing 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_ApplyStandardLocationRules(["Start Step"]) E_ApplyStandardLocationRules(["End Step"]) N_ApplyStandardLocationRules_Node0{"The system processes the standard
location"}:::decision N_ApplyStandardLocationRules_Node0_action["Apply standard location processing
rules without special border
crossing handling"]:::main N_ApplyStandardLocationRules_Node0 -- Yes --> N_ApplyStandardLocationRules_Node0_action N_ApplyStandardLocationRules_Node0_action --> E_ApplyStandardLocationRules S_ApplyStandardLocationRules --> N_ApplyStandardLocationRules_Node0 N_ApplyStandardLocationRules_Node0 -- No --> E_ApplyStandardLocationRules
File: GCX016E.cbl
GIVEN: A location is identified as non-border crossing
WHEN: The system processes the standard location
THEN: Apply standard location processing rules without special border crossing handling
βœ“ Consolidated Acceptance Criteria
  • The system updates the manifest status → set export manifest status and proceed to train arrival 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_SetExportManifestStatus(["Start Step"]) E_SetExportManifestStatus(["End Step"]) N_SetExportManifestStatus_Node0{"The system updates the manifest
status"}:::decision N_SetExportManifestStatus_Node0_action["Set export manifest status and
proceed to train arrival status
update"]:::main N_SetExportManifestStatus_Node0 -- Yes --> N_SetExportManifestStatus_Node0_action N_SetExportManifestStatus_Node0_action --> E_SetExportManifestStatus S_SetExportManifestStatus --> N_SetExportManifestStatus_Node0 N_SetExportManifestStatus_Node0 -- No --> E_SetExportManifestStatus
File: GCX016E.cbl
GIVEN: Export manifest business rules have been applied successfully
WHEN: The system updates the manifest status
THEN:
  • Set export manifest status
  • Proceed to train arrival status update
βœ“ Consolidated Acceptance Criteria
  • The system updates the manifest status → set import manifest status and proceed to train arrival 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_SetImportManifestStatus(["Start Step"]) E_SetImportManifestStatus(["End Step"]) N_SetImportManifestStatus_Node0{"The system updates the manifest
status"}:::decision N_SetImportManifestStatus_Node0_action["Set import manifest status and
proceed to train arrival status
update"]:::main N_SetImportManifestStatus_Node0 -- Yes --> N_SetImportManifestStatus_Node0_action N_SetImportManifestStatus_Node0_action --> E_SetImportManifestStatus S_SetImportManifestStatus --> N_SetImportManifestStatus_Node0 N_SetImportManifestStatus_Node0 -- No --> E_SetImportManifestStatus
File: GCX016E.cbl
GIVEN: Import manifest processing rules have been applied successfully
WHEN: The system updates the manifest status
THEN:
  • Set import manifest status
  • Proceed to train arrival status update
βœ“ Consolidated Acceptance Criteria
  • The system generates validation messages → create appropriate messages for successful processing or validation failures including invalid ports or 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_GenerateLocationValidationMessages(["Start Step"]) E_GenerateLocationValidationMessages(["End Step"]) N_GenerateLocationValidationMessages_Node0{"The system generates validation
messages"}:::decision N_GenerateLocationValidationMessages_Node0_action["Create appropriate messages for
successful processing or validation
failures including invalid ports or
destinations"]:::main N_GenerateLocationValidationMessages_Node0 -- Yes --> N_GenerateLocationValidationMessages_Node0_action N_GenerateLocationValidationMessages_Node0_action --> E_GenerateLocationValidationMessages S_GenerateLocationValidationMessages --> N_GenerateLocationValidationMessages_Node0 N_GenerateLocationValidationMessages_Node0 -- No --> E_GenerateLocationValidationMessages
File: GCX016E.cbl
GIVEN: Train arrival processing is complete or validation errors occurred
WHEN: The system generates validation messages
THEN: Create appropriate messages for successful processing or validation failures including invalid ports or destinations
βœ“ Consolidated Acceptance Criteria
  • The system processes the P4 location segment → the arrival port information is extracted from the P4 segment 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_ExtractArrivalPortfromP4Segment(["Start Step"]) E_ExtractArrivalPortfromP4Segment(["End Step"]) N_ExtractArrivalPortfromP4Segment_Node0{"The system processes the P4
location segment"}:::decision N_ExtractArrivalPortfromP4Segment_Node0_action["The arrival port information is
extracted from the P4 segment for
further validation"]:::main N_ExtractArrivalPortfromP4Segment_Node0 -- Yes --> N_ExtractArrivalPortfromP4Segment_Node0_action N_ExtractArrivalPortfromP4Segment_Node0_action --> E_ExtractArrivalPortfromP4Segment S_ExtractArrivalPortfromP4Segment --> N_ExtractArrivalPortfromP4Segment_Node0 N_ExtractArrivalPortfromP4Segment_Node0 -- No --> E_ExtractArrivalPortfromP4Segment
File: GCX016E.cbl
GIVEN: An export manifest train has been identified
WHEN: The system processes the P4 location segment
THEN: The arrival port information is extracted from the P4 segment for further validation
βœ“ Consolidated Acceptance Criteria
  • The system looks up the port configuration in system tables → port configuration data is retrieved to determine export manifest 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_LookupPortConfigurationinSystemTables(["Start Step"]) E_LookupPortConfigurationinSystemTables(["End Step"]) N_LookupPortConfigurationinSystemTables_Node0{"The system looks up the port
configuration in system tables"}:::decision N_LookupPortConfigurationinSystemTables_Node0_action["Port configuration data is
retrieved to determine export
manifest processing eligibility"]:::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: GCX016E.cbl
GIVEN: An arrival port has been extracted from the P4 segment
WHEN: The system looks up the port configuration in system tables
THEN: Port configuration data is retrieved to determine export manifest processing eligibility
βœ“ Consolidated Acceptance Criteria
  • The system processes the export manifest arrival → the train arrival is processed using export manifest specific procedures 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_ProcessasExportManifestArrival(["Start Step"]) E_ProcessasExportManifestArrival(["End Step"]) N_ProcessasExportManifestArrival_Node0{"The system processes the export
manifest arrival"}:::decision N_ProcessasExportManifestArrival_Node0_action["The train arrival is processed
using export manifest specific
procedures and status updates"]:::main N_ProcessasExportManifestArrival_Node0 -- Yes --> N_ProcessasExportManifestArrival_Node0_action N_ProcessasExportManifestArrival_Node0_action --> E_ProcessasExportManifestArrival S_ProcessasExportManifestArrival --> N_ProcessasExportManifestArrival_Node0 N_ProcessasExportManifestArrival_Node0 -- No --> E_ProcessasExportManifestArrival
File: GCX016E.cbl
GIVEN: Export manifest business rules have been applied successfully
WHEN: The system processes the export manifest arrival
THEN:
  • The train arrival is processed using export manifest specific procedures
  • Status updates
βœ“ Consolidated Acceptance Criteria
  • The system logs the validation result → the port validation result and processing outcome are logged for audit trail and 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_LogPortValidationResult(["Start Step"]) E_LogPortValidationResult(["End Step"]) N_LogPortValidationResult_Node0{"The system logs the validation
result"}:::decision N_LogPortValidationResult_Node0_action["The port validation result and
processing outcome are logged for
audit trail and system monitoring"]:::main N_LogPortValidationResult_Node0 -- Yes --> N_LogPortValidationResult_Node0_action N_LogPortValidationResult_Node0_action --> E_LogPortValidationResult S_LogPortValidationResult --> N_LogPortValidationResult_Node0 N_LogPortValidationResult_Node0 -- No --> E_LogPortValidationResult
File: GCX016E.cbl
GIVEN: Port validation processing has been completed (either successful export processing, error generation, or import routing)
WHEN: The system logs the validation result
THEN:
  • The port validation result
  • Processing outcome are logged for audit trail
  • System monitoring
βœ“ Consolidated Acceptance Criteria
  • The system looks up DC95 in the disposition code table → the system confirms DC95 is a valid disposition code or generates an error if not found
  • The system looks up disposition code 95 in the disposition code table → if DC95 is not found in the table, generate an error message and stop processing, otherwise continue with 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_ValidateDC95inDispositionCodeTable(["Start Step"]) E_ValidateDC95inDispositionCodeTable(["End Step"]) N_ValidateDC95inDispositionCodeTable_Node0{"The system looks up DC95 in the
disposition code table"}:::decision N_ValidateDC95inDispositionCodeTable_Node0_action["The system confirms DC95 is a valid
disposition code or generates an
error if not found"]:::main N_ValidateDC95inDispositionCodeTable_Node0 -- Yes --> N_ValidateDC95inDispositionCodeTable_Node0_action N_ValidateDC95inDispositionCodeTable_Node0_action --> E_ValidateDC95inDispositionCodeTable S_ValidateDC95inDispositionCodeTable --> N_ValidateDC95inDispositionCodeTable_Node0 N_ValidateDC95inDispositionCodeTable_Node1{"The system looks up disposition
code 95 in the disposition code
table"}:::decision N_ValidateDC95inDispositionCodeTable_Node1_action["If DC95 is not found in the table,
generate an error message and stop
processing, otherwise continue with
bond clearing process"]:::main N_ValidateDC95inDispositionCodeTable_Node1 -- Yes --> N_ValidateDC95inDispositionCodeTable_Node1_action N_ValidateDC95inDispositionCodeTable_Node1_action --> E_ValidateDC95inDispositionCodeTable N_ValidateDC95inDispositionCodeTable_Node0 -- No --> N_ValidateDC95inDispositionCodeTable_Node1 N_ValidateDC95inDispositionCodeTable_Node1 -- No --> E_ValidateDC95inDispositionCodeTable
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed for bond cancellation
WHEN: The system looks up DC95 in the disposition code table
THEN: The system confirms DC95 is a valid disposition code or generates an error if not found
File: GCX016E.cbl
GIVEN: A disposition code 95 is received for processing
WHEN: The system looks up disposition code 95 in the disposition code table
THEN:
  • If dc95 is not found in the table, generate an error message
  • Stop processing, otherwise continue with bond clearing process
βœ“ Consolidated Acceptance Criteria
  • The system processes the bond cancellation → the BOL type code is cleared from the cargo record
  • The system processes the bond information clearing → the BOL type code field in the cargo record is cleared to spaces
  • The system processes bond information clearing → the BOL type code field should be cleared or set to blank
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ClearBOLTypeCode(["Start Step"]) E_ClearBOLTypeCode(["End Step"]) N_ClearBOLTypeCode_Node0{"The system processes the bond
cancellation"}:::decision N_ClearBOLTypeCode_Node0_action["The BOL type code is cleared from
the cargo record"]:::main N_ClearBOLTypeCode_Node0 -- Yes --> N_ClearBOLTypeCode_Node0_action N_ClearBOLTypeCode_Node0_action --> E_ClearBOLTypeCode S_ClearBOLTypeCode --> N_ClearBOLTypeCode_Node0 N_ClearBOLTypeCode_Node1{"The system processes the bond
information clearing"}:::decision N_ClearBOLTypeCode_Node1_action["The BOL type code field in the
cargo record is cleared to spaces"]:::main N_ClearBOLTypeCode_Node1 -- Yes --> N_ClearBOLTypeCode_Node1_action N_ClearBOLTypeCode_Node1_action --> E_ClearBOLTypeCode N_ClearBOLTypeCode_Node0 -- No --> N_ClearBOLTypeCode_Node1 N_ClearBOLTypeCode_Node2{"The system processes bond
information clearing"}:::decision N_ClearBOLTypeCode_Node2_action["The BOL type code field should be
cleared or set to blank"]:::main N_ClearBOLTypeCode_Node2 -- Yes --> N_ClearBOLTypeCode_Node2_action N_ClearBOLTypeCode_Node2_action --> E_ClearBOLTypeCode N_ClearBOLTypeCode_Node1 -- No --> N_ClearBOLTypeCode_Node2 N_ClearBOLTypeCode_Node2 -- No --> E_ClearBOLTypeCode
File: GCX016E.cbl
GIVEN: A valid disposition code 95 is being processed
WHEN: The system processes the bond cancellation
THEN: The BOL type code is cleared from the cargo record
File: GCX016E.cbl
GIVEN: Disposition code 95 has been validated and bond cancellation is being processed
WHEN: The system processes the bond information clearing
THEN: The BOL type code field in the cargo record is cleared to spaces
File: GCX016E.cbl
GIVEN: DC95 authorization has been validated
WHEN: The system processes bond information clearing
THEN: The BOL type code field should be cleared or set to blank
βœ“ Consolidated Acceptance Criteria
  • The system clears bond information → all M12 bond segment data is removed from the cargo record
  • The system processes M12 bond data clearing → all M12 segment bond-related fields are cleared 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_ClearM12BondData(["Start Step"]) E_ClearM12BondData(["End Step"]) N_ClearM12BondData_Node0{"The system clears bond information"}:::decision N_ClearM12BondData_Node0_action["All M12 bond segment data is
removed from the cargo record"]:::main N_ClearM12BondData_Node0 -- Yes --> N_ClearM12BondData_Node0_action N_ClearM12BondData_Node0_action --> E_ClearM12BondData S_ClearM12BondData --> N_ClearM12BondData_Node0 N_ClearM12BondData_Node1{"The system processes M12 bond data
clearing"}:::decision N_ClearM12BondData_Node1_action["All M12 segment bond-related fields
are cleared to their default values"]:::main N_ClearM12BondData_Node1 -- Yes --> N_ClearM12BondData_Node1_action N_ClearM12BondData_Node1_action --> E_ClearM12BondData N_ClearM12BondData_Node0 -- No --> N_ClearM12BondData_Node1 N_ClearM12BondData_Node1 -- No --> E_ClearM12BondData
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed for bond cancellation
WHEN: The system clears bond information
THEN: All M12 bond segment data is removed from the cargo record
File: GCX016E.cbl
GIVEN: BOL type code has been cleared and bond cancellation is in progress
WHEN: The system processes M12 bond data clearing
THEN: All M12 segment bond-related fields are cleared to their default values
βœ“ Consolidated Acceptance Criteria
  • The system processes bond cancellation → the bond number index is cleared from the cargo record
  • The system processes bond number index clearing → the bond number index field is set to zero to remove the bond reference
  • The system processes bond number clearing → the bond number index field should be cleared or 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_ClearBondNumberIndex(["Start Step"]) E_ClearBondNumberIndex(["End Step"]) N_ClearBondNumberIndex_Node0{"The system processes bond
cancellation"}:::decision N_ClearBondNumberIndex_Node0_action["The bond number index is cleared
from the cargo record"]:::main N_ClearBondNumberIndex_Node0 -- Yes --> N_ClearBondNumberIndex_Node0_action N_ClearBondNumberIndex_Node0_action --> E_ClearBondNumberIndex S_ClearBondNumberIndex --> N_ClearBondNumberIndex_Node0 N_ClearBondNumberIndex_Node1{"The system processes bond number
index clearing"}:::decision N_ClearBondNumberIndex_Node1_action["The bond number index field is set
to zero to remove the bond reference"]:::main N_ClearBondNumberIndex_Node1 -- Yes --> N_ClearBondNumberIndex_Node1_action N_ClearBondNumberIndex_Node1_action --> E_ClearBondNumberIndex N_ClearBondNumberIndex_Node0 -- No --> N_ClearBondNumberIndex_Node1 N_ClearBondNumberIndex_Node2{"The system processes bond number
clearing"}:::decision N_ClearBondNumberIndex_Node2_action["The bond number index field should
be cleared or set to zero"]:::main N_ClearBondNumberIndex_Node2 -- Yes --> N_ClearBondNumberIndex_Node2_action N_ClearBondNumberIndex_Node2_action --> E_ClearBondNumberIndex N_ClearBondNumberIndex_Node1 -- No --> N_ClearBondNumberIndex_Node2 N_ClearBondNumberIndex_Node2 -- No --> E_ClearBondNumberIndex
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed
WHEN: The system processes bond cancellation
THEN: The bond number index is cleared from the cargo record
File: GCX016E.cbl
GIVEN: M12 bond data has been cleared and bond cancellation continues
WHEN: The system processes bond number index clearing
THEN: The bond number index field is set to zero to remove the bond reference
File: GCX016E.cbl
GIVEN: M12 data has been cleared
WHEN: The system processes bond number clearing
THEN: The bond number index field should be cleared or set to zero
βœ“ Consolidated Acceptance Criteria
  • The system clears bond-related information → all broker QP (Qualified Person) information is removed from the cargo record
  • The system processes broker QP information clearing → all broker qualification and permit fields are cleared to spaces or zero values
  • The system processes broker information clearing → all broker QP (Qualified Person) information fields should be 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_ClearBrokerQPInformation(["Start Step"]) E_ClearBrokerQPInformation(["End Step"]) N_ClearBrokerQPInformation_Node0{"The system clears bond-related
information"}:::decision N_ClearBrokerQPInformation_Node0_action["All broker QP Qualified Person
information is removed from the
cargo record"]:::main N_ClearBrokerQPInformation_Node0 -- Yes --> N_ClearBrokerQPInformation_Node0_action N_ClearBrokerQPInformation_Node0_action --> E_ClearBrokerQPInformation S_ClearBrokerQPInformation --> N_ClearBrokerQPInformation_Node0 N_ClearBrokerQPInformation_Node1{"The system processes broker QP
information clearing"}:::decision N_ClearBrokerQPInformation_Node1_action["All broker qualification and permit
fields are cleared to spaces or zero
values"]:::main N_ClearBrokerQPInformation_Node1 -- Yes --> N_ClearBrokerQPInformation_Node1_action N_ClearBrokerQPInformation_Node1_action --> E_ClearBrokerQPInformation N_ClearBrokerQPInformation_Node0 -- No --> N_ClearBrokerQPInformation_Node1 N_ClearBrokerQPInformation_Node2{"The system processes broker
information clearing"}:::decision N_ClearBrokerQPInformation_Node2_action["All broker QP Qualified Person
information fields should be cleared"]:::main N_ClearBrokerQPInformation_Node2 -- Yes --> N_ClearBrokerQPInformation_Node2_action N_ClearBrokerQPInformation_Node2_action --> E_ClearBrokerQPInformation N_ClearBrokerQPInformation_Node1 -- No --> N_ClearBrokerQPInformation_Node2 N_ClearBrokerQPInformation_Node2 -- No --> E_ClearBrokerQPInformation
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed for bond cancellation
WHEN: The system clears bond-related information
THEN: All broker QP (Qualified Person) information is removed from the cargo record
File: GCX016E.cbl
GIVEN: Bond number index has been cleared and bond cancellation processing continues
WHEN: The system processes broker QP information clearing
THEN:
  • All broker qualification
  • Permit fields are cleared to spaces or zero values
File: GCX016E.cbl
GIVEN: Bond number index has been cleared
WHEN: The system processes broker information clearing
THEN: All broker QP (Qualified Person) information fields should be cleared
βœ“ Consolidated Acceptance Criteria
  • The system processes bond cancellation → bond owner information is cleared from the cargo record
  • The system processes bond owner information clearing → bond owner identification fields are cleared to remove ownership references
  • The system processes bond owner clearing → all bond owner information fields should be cleared or 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_ClearBondOwnerInformation(["Start Step"]) E_ClearBondOwnerInformation(["End Step"]) N_ClearBondOwnerInformation_Node0{"The system processes bond
cancellation"}:::decision N_ClearBondOwnerInformation_Node0_action["Bond owner information is cleared
from the cargo record"]:::main N_ClearBondOwnerInformation_Node0 -- Yes --> N_ClearBondOwnerInformation_Node0_action N_ClearBondOwnerInformation_Node0_action --> E_ClearBondOwnerInformation S_ClearBondOwnerInformation --> N_ClearBondOwnerInformation_Node0 N_ClearBondOwnerInformation_Node1{"The system processes bond owner
information clearing"}:::decision N_ClearBondOwnerInformation_Node1_action["Bond owner identification fields
are cleared to remove ownership
references"]:::main N_ClearBondOwnerInformation_Node1 -- Yes --> N_ClearBondOwnerInformation_Node1_action N_ClearBondOwnerInformation_Node1_action --> E_ClearBondOwnerInformation N_ClearBondOwnerInformation_Node0 -- No --> N_ClearBondOwnerInformation_Node1 N_ClearBondOwnerInformation_Node2{"The system processes bond owner
clearing"}:::decision N_ClearBondOwnerInformation_Node2_action["All bond owner information fields
should be cleared or reset"]:::main N_ClearBondOwnerInformation_Node2 -- Yes --> N_ClearBondOwnerInformation_Node2_action N_ClearBondOwnerInformation_Node2_action --> E_ClearBondOwnerInformation N_ClearBondOwnerInformation_Node1 -- No --> N_ClearBondOwnerInformation_Node2 N_ClearBondOwnerInformation_Node2 -- No --> E_ClearBondOwnerInformation
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed
WHEN: The system processes bond cancellation
THEN: Bond owner information is cleared from the cargo record
File: GCX016E.cbl
GIVEN: Broker QP information has been cleared and bond cancellation is proceeding
WHEN: The system processes bond owner information clearing
THEN: Bond owner identification fields are cleared to remove ownership references
File: GCX016E.cbl
GIVEN: Broker QP information has been cleared
WHEN: The system processes bond owner clearing
THEN: All bond owner information fields should be cleared or reset
βœ“ Consolidated Acceptance Criteria
  • The system resets bond information → the in-bond entry status is reset to indicate no active 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_ResetInBondEntryStatus(["Start Step"]) E_ResetInBondEntryStatus(["End Step"]) N_ResetInBondEntryStatus_Node0{"The system resets bond information"}:::decision N_ResetInBondEntryStatus_Node0_action["The in-bond entry status is reset
to indicate no active bond"]:::main N_ResetInBondEntryStatus_Node0 -- Yes --> N_ResetInBondEntryStatus_Node0_action N_ResetInBondEntryStatus_Node0_action --> E_ResetInBondEntryStatus S_ResetInBondEntryStatus --> N_ResetInBondEntryStatus_Node0 N_ResetInBondEntryStatus_Node0 -- No --> E_ResetInBondEntryStatus
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed for bond cancellation
WHEN: The system resets bond information
THEN: The in-bond entry status is reset to indicate no active bond
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo status → the cargo status array is updated to reflect the bond cancellation with appropriate 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_UpdateCargoStatusArray(["Start Step"]) E_UpdateCargoStatusArray(["End Step"]) N_UpdateCargoStatusArray_Node0{"The system updates cargo status"}:::decision N_UpdateCargoStatusArray_Node0_action["The cargo status array is updated
to reflect the bond cancellation
with appropriate status codes"]:::main N_UpdateCargoStatusArray_Node0 -- Yes --> N_UpdateCargoStatusArray_Node0_action N_UpdateCargoStatusArray_Node0_action --> E_UpdateCargoStatusArray S_UpdateCargoStatusArray --> N_UpdateCargoStatusArray_Node0 N_UpdateCargoStatusArray_Node0 -- No --> E_UpdateCargoStatusArray
File: GCX016E.cbl
GIVEN: A disposition code 95 has been processed and bond information cleared
WHEN: The system updates cargo status
THEN: The cargo status array is updated to reflect the bond cancellation with appropriate status codes
βœ“ Consolidated Acceptance Criteria
  • The system completes bond cancellation processing → the bond cancellation action is logged with relevant cargo and 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_LogBondCancellationAction(["Start Step"]) E_LogBondCancellationAction(["End Step"]) N_LogBondCancellationAction_Node0{"The system completes bond
cancellation processing"}:::decision N_LogBondCancellationAction_Node0_action["The bond cancellation action is
logged with relevant cargo and bond
details"]:::main N_LogBondCancellationAction_Node0 -- Yes --> N_LogBondCancellationAction_Node0_action N_LogBondCancellationAction_Node0_action --> E_LogBondCancellationAction S_LogBondCancellationAction --> N_LogBondCancellationAction_Node0 N_LogBondCancellationAction_Node0 -- No --> E_LogBondCancellationAction
File: GCX016E.cbl
GIVEN: A disposition code 95 has been processed and bond information cleared
WHEN: The system completes bond cancellation processing
THEN:
  • The bond cancellation action is logged with relevant cargo
  • Bond details
βœ“ Consolidated Acceptance Criteria
  • The system generates notifications → a Merlin notification is generated to inform relevant parties of the bond cancellation
  • The system generates Merlin notifications → a Merlin message is created and sent to appropriate recipients containing cargo details and bond cancellation information
  • Merlin notification is generated → a notification is sent to the Merlin system to inform stakeholders of the 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_GenerateMerlinNotification(["Start Step"]) E_GenerateMerlinNotification(["End Step"]) N_GenerateMerlinNotification_Node0{"The system generates notifications"}:::decision N_GenerateMerlinNotification_Node0_action["A Merlin notification is generated
to inform relevant parties of the
bond cancellation"]:::main N_GenerateMerlinNotification_Node0 -- Yes --> N_GenerateMerlinNotification_Node0_action N_GenerateMerlinNotification_Node0_action --> E_GenerateMerlinNotification S_GenerateMerlinNotification --> N_GenerateMerlinNotification_Node0 N_GenerateMerlinNotification_Node1{"The system generates Merlin
notifications"}:::decision N_GenerateMerlinNotification_Node1_action["A Merlin message is created and
sent to appropriate recipients
containing cargo details and bond
cancellation information"]:::main N_GenerateMerlinNotification_Node1 -- Yes --> N_GenerateMerlinNotification_Node1_action N_GenerateMerlinNotification_Node1_action --> E_GenerateMerlinNotification N_GenerateMerlinNotification_Node0 -- No --> N_GenerateMerlinNotification_Node1 N_GenerateMerlinNotification_Node2{"Merlin notification is generated"}:::decision N_GenerateMerlinNotification_Node2_action["A notification is sent to the
Merlin system to inform stakeholders
of the proceed status"]:::main N_GenerateMerlinNotification_Node2 -- Yes --> N_GenerateMerlinNotification_Node2_action N_GenerateMerlinNotification_Node2_action --> E_GenerateMerlinNotification N_GenerateMerlinNotification_Node1 -- No --> N_GenerateMerlinNotification_Node2 N_GenerateMerlinNotification_Node2 -- No --> E_GenerateMerlinNotification
File: GCX016E.cbl
GIVEN: A disposition code 95 has been processed and bond cancellation completed
WHEN: The system generates notifications
THEN: A Merlin notification is generated to inform relevant parties of the bond cancellation
File: GCX016E.cbl
GIVEN: Bond clearing action has been logged and all updates are complete
WHEN: The system generates Merlin notifications
THEN:
  • A merlin message is created
  • Sent to appropriate recipients containing cargo details
  • Bond cancellation information
File: GCX016E.cbl
GIVEN: The proceed action has been logged
WHEN: Merlin notification is generated
THEN: A notification is sent to the Merlin system to inform stakeholders of the proceed status
βœ“ Consolidated Acceptance Criteria
  • The system updates the database → the cargo database is updated with all cleared bond fields and updated 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_UpdateDatabasewithClearedBondInfo(["Start Step"]) E_UpdateDatabasewithClearedBondInfo(["End Step"]) N_UpdateDatabasewithClearedBondInfo_Node0{"The system updates the database"}:::decision N_UpdateDatabasewithClearedBondInfo_Node0_action["The cargo database is updated with
all cleared bond fields and updated
status information"]:::main N_UpdateDatabasewithClearedBondInfo_Node0 -- Yes --> N_UpdateDatabasewithClearedBondInfo_Node0_action N_UpdateDatabasewithClearedBondInfo_Node0_action --> E_UpdateDatabasewithClearedBondInfo S_UpdateDatabasewithClearedBondInfo --> N_UpdateDatabasewithClearedBondInfo_Node0 N_UpdateDatabasewithClearedBondInfo_Node0 -- No --> E_UpdateDatabasewithClearedBondInfo
File: GCX016E.cbl
GIVEN: All bond information has been cleared for disposition code 95
WHEN: The system updates the database
THEN:
  • The cargo database is updated with all cleared bond fields
  • Updated status information
βœ“ Consolidated Acceptance Criteria
  • The system cannot find DC95 in the disposition code table → an error message is generated indicating invalid disposition code 95
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateErrorMessageInvalidDC95(["Start Step"]) E_GenerateErrorMessageInvalidDC95(["End Step"]) N_GenerateErrorMessageInvalidDC95_Node0{"The system cannot find DC95 in the
disposition code table"}:::decision N_GenerateErrorMessageInvalidDC95_Node0_action["An error message is generated
indicating invalid disposition code
95"]:::main N_GenerateErrorMessageInvalidDC95_Node0 -- Yes --> N_GenerateErrorMessageInvalidDC95_Node0_action N_GenerateErrorMessageInvalidDC95_Node0_action --> E_GenerateErrorMessageInvalidDC95 S_GenerateErrorMessageInvalidDC95 --> N_GenerateErrorMessageInvalidDC95_Node0 N_GenerateErrorMessageInvalidDC95_Node0 -- No --> E_GenerateErrorMessageInvalidDC95
File: GCX016E.cbl
GIVEN: A disposition code 95 is being processed
WHEN: The system cannot find DC95 in the disposition code table
THEN: An error message is generated indicating invalid disposition code 95
βœ“ Consolidated Acceptance Criteria
  • The system checks against existing broker entry numbers → the entry number is validated for consistency with broker 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_ValidateAgainstExistingBrokerEntryNumbers(["Start Step"]) E_ValidateAgainstExistingBrokerEntryNumbers(["End Step"]) N_ValidateAgainstExistingBrokerEntryNumbers_Node0{"The system checks against existing
broker entry numbers"}:::decision N_ValidateAgainstExistingBrokerEntryNumbers_Node0_action["The entry number is validated for
consistency with broker records"]:::main N_ValidateAgainstExistingBrokerEntryNumbers_Node0 -- Yes --> N_ValidateAgainstExistingBrokerEntryNumbers_Node0_action N_ValidateAgainstExistingBrokerEntryNumbers_Node0_action --> E_ValidateAgainstExistingBrokerEntryNumbers S_ValidateAgainstExistingBrokerEntryNumbers --> N_ValidateAgainstExistingBrokerEntryNumbers_Node0 N_ValidateAgainstExistingBrokerEntryNumbers_Node0 -- No --> E_ValidateAgainstExistingBrokerEntryNumbers
File: GCX016E.cbl
GIVEN: A valid entry number format has been confirmed
WHEN: The system checks against existing broker entry numbers
THEN: The entry number is validated for consistency with broker records
βœ“ Consolidated Acceptance Criteria
  • If the entry type code → the appropriate entry type specific processing path is selected (61, 62, 63, 69, or Other)
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 system evaluates the entry type
code"}:::decision N_EntryTypeCode_Node0_action["The appropriate entry type specific
processing path is selected 61, 62,
63, 69, or Other"]:::main N_EntryTypeCode_Node0 -- Yes --> N_EntryTypeCode_Node0_action N_EntryTypeCode_Node0_action --> E_EntryTypeCode S_EntryTypeCode --> N_EntryTypeCode_Node0 N_EntryTypeCode_Node0 -- No --> E_EntryTypeCode
File: GCX016E.cbl
GIVEN: All validations have been completed successfully
WHEN: The system evaluates the entry type code
THEN: The appropriate entry type specific processing path is selected (61, 62, 63, 69, or Other)
βœ“ Consolidated Acceptance Criteria
  • The system processes the other entry type → standard in-bond processing rules are applied for the non-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_ProcessOtherEntryTypeCodes(["Start Step"]) E_ProcessOtherEntryTypeCodes(["End Step"]) N_ProcessOtherEntryTypeCodes_Node0{"The system processes the other
entry type"}:::decision N_ProcessOtherEntryTypeCodes_Node0_action["Standard in-bond processing rules
are applied for the non-specific
entry type"]:::main N_ProcessOtherEntryTypeCodes_Node0 -- Yes --> N_ProcessOtherEntryTypeCodes_Node0_action N_ProcessOtherEntryTypeCodes_Node0_action --> E_ProcessOtherEntryTypeCodes S_ProcessOtherEntryTypeCodes --> N_ProcessOtherEntryTypeCodes_Node0 N_ProcessOtherEntryTypeCodes_Node0 -- No --> E_ProcessOtherEntryTypeCodes
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The entry type code is not 61, 62, 63, or 69
WHEN: The system processes the other entry type
THEN: Standard in-bond processing rules are applied for the non-specific entry type
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → broker information and in-bond details are stored 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_UpdateCargowithBrokerInformation(["Start Step"]) E_UpdateCargowithBrokerInformation(["End Step"]) N_UpdateCargowithBrokerInformation_Node0{"The system updates the cargo record"}:::decision N_UpdateCargowithBrokerInformation_Node0_action["Broker information and in-bond
details are stored in the cargo
record"]:::main N_UpdateCargowithBrokerInformation_Node0 -- Yes --> N_UpdateCargowithBrokerInformation_Node0_action N_UpdateCargowithBrokerInformation_Node0_action --> E_UpdateCargowithBrokerInformation S_UpdateCargowithBrokerInformation --> N_UpdateCargowithBrokerInformation_Node0 N_UpdateCargowithBrokerInformation_Node0 -- No --> E_UpdateCargowithBrokerInformation
File: GCX016E.cbl
GIVEN: In-bond flag setting has been completed for the entry type
WHEN: The system updates the cargo record
THEN:
  • Broker information
  • In-bond details are stored in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system logs the processing action → in-bond processing details 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_LogInBondProcessingAction(["Start Step"]) E_LogInBondProcessingAction(["End Step"]) N_LogInBondProcessingAction_Node0{"The system logs the processing
action"}:::decision N_LogInBondProcessingAction_Node0_action["In-bond processing details are
recorded in the system log"]:::main N_LogInBondProcessingAction_Node0 -- Yes --> N_LogInBondProcessingAction_Node0_action N_LogInBondProcessingAction_Node0_action --> E_LogInBondProcessingAction S_LogInBondProcessingAction --> N_LogInBondProcessingAction_Node0 N_LogInBondProcessingAction_Node0 -- No --> E_LogInBondProcessingAction
File: GCX016E.cbl
GIVEN: Cargo has been updated with broker information
WHEN: The system logs the processing action
THEN: In-bond processing details are recorded in the system log
βœ“ Consolidated Acceptance Criteria
  • The system continues with cargo processing → standard cargo processing workflow resumes
  • The system continues cargo processing → normal cargo processing workflow should continue with the next processing steps
  • Border location processing is complete → the system 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_ContinueCargoProcessing(["Start Step"]) E_ContinueCargoProcessing(["End Step"]) N_ContinueCargoProcessing_Node0{"The system continues with cargo
processing"}:::decision N_ContinueCargoProcessing_Node0_action["Standard cargo processing workflow
resumes"]:::main N_ContinueCargoProcessing_Node0 -- Yes --> N_ContinueCargoProcessing_Node0_action N_ContinueCargoProcessing_Node0_action --> E_ContinueCargoProcessing S_ContinueCargoProcessing --> N_ContinueCargoProcessing_Node0 N_ContinueCargoProcessing_Node1{"The system continues cargo
processing"}:::decision N_ContinueCargoProcessing_Node1_action["Normal cargo processing workflow
should continue with the next
processing steps"]:::main N_ContinueCargoProcessing_Node1 -- Yes --> N_ContinueCargoProcessing_Node1_action N_ContinueCargoProcessing_Node1_action --> E_ContinueCargoProcessing N_ContinueCargoProcessing_Node0 -- No --> N_ContinueCargoProcessing_Node1 N_ContinueCargoProcessing_Node2{"Border location processing is
complete"}:::decision N_ContinueCargoProcessing_Node2_action["The system continues with normal
cargo processing workflow"]:::main N_ContinueCargoProcessing_Node2 -- Yes --> N_ContinueCargoProcessing_Node2_action N_ContinueCargoProcessing_Node2_action --> E_ContinueCargoProcessing N_ContinueCargoProcessing_Node1 -- No --> N_ContinueCargoProcessing_Node2 N_ContinueCargoProcessing_Node2 -- No --> E_ContinueCargoProcessing
File: GCX016E.cbl
GIVEN: In-bond processing has completed (either successfully or with error handling)
WHEN: The system continues with cargo processing
THEN: Standard cargo processing workflow resumes
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Bond clearing operations have been completed OR disposition code is not 95
WHEN: The system continues cargo processing
THEN: Normal cargo processing workflow should continue with the next processing steps
File: GCX016E.cbl
GIVEN: Cargo with either mapped Canadian border location or default border location assigned
WHEN: Border location processing is complete
THEN: The system continues with normal cargo processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system validates the format of the entry type code → if format is valid, proceed to conversion; if invalid, generate 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_ValidEDIFormat(["Start Step"]) E_ValidEDIFormat(["End Step"]) N_ValidEDIFormat_Node0{"The system validates the format of
the entry type code"}:::decision N_ValidEDIFormat_Node0_action["If format is valid, proceed to
conversion if invalid, generate
error message"]:::main N_ValidEDIFormat_Node0 -- Yes --> N_ValidEDIFormat_Node0_action N_ValidEDIFormat_Node0_action --> E_ValidEDIFormat S_ValidEDIFormat --> N_ValidEDIFormat_Node0 N_ValidEDIFormat_Node0 -- No --> E_ValidEDIFormat
File: GCX016E.cbl
GIVEN: An entry type code is present in the EDI message
WHEN: The system validates the format of the entry type code
THEN: If format is valid, proceed to conversion; if invalid, generate error message
βœ“ Consolidated Acceptance Criteria
  • The system searches the conversion array for the EDI code → if code is found in array, set internal entry type code; if not found, generate 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_CodeFoundinArray(["Start Step"]) E_CodeFoundinArray(["End Step"]) N_CodeFoundinArray_Node0{"The system searches the conversion
array for the EDI code"}:::decision N_CodeFoundinArray_Node0_action["If code is found in array, set
internal entry type code if not
found, generate error message"]:::main N_CodeFoundinArray_Node0 -- Yes --> N_CodeFoundinArray_Node0_action N_CodeFoundinArray_Node0_action --> E_CodeFoundinArray S_CodeFoundinArray --> N_CodeFoundinArray_Node0 N_CodeFoundinArray_Node0 -- No --> E_CodeFoundinArray
File: GCX016E.cbl
GIVEN: A valid EDI entry type code needs to be converted to internal format
WHEN: The system searches the conversion array for the EDI code
THEN: If code is found in array, set internal entry type code; if not found, generate error message
βœ“ Consolidated Acceptance Criteria
  • The system checks if the entry type is 61, 62, 63, or 69 → if entry type matches in-bond codes, set master in-bond flag; otherwise proceed to border crossing check
  • The system checks if the entry type is 61, 62, 63, or 69 → if entry type matches any of these values, set master in-bond flag; otherwise continue to border crossing 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_EntryType616263or69(["Start Step"]) E_EntryType616263or69(["End Step"]) N_EntryType616263or69_Node0{"The system checks if the entry type
is 61, 62, 63, or 69"}:::decision N_EntryType616263or69_Node0_action["If entry type matches in-bond
codes, set master in-bond flag
otherwise proceed to border crossing
check"]:::main N_EntryType616263or69_Node0 -- Yes --> N_EntryType616263or69_Node0_action N_EntryType616263or69_Node0_action --> E_EntryType616263or69 S_EntryType616263or69 --> N_EntryType616263or69_Node0 N_EntryType616263or69_Node1{"The system checks if the entry type
is 61, 62, 63, or 69"}:::decision N_EntryType616263or69_Node1_action["If entry type matches any of these
values, set master in-bond flag
otherwise continue to border
crossing check"]:::main N_EntryType616263or69_Node1 -- Yes --> N_EntryType616263or69_Node1_action N_EntryType616263or69_Node1_action --> E_EntryType616263or69 N_EntryType616263or69_Node0 -- No --> N_EntryType616263or69_Node1 N_EntryType616263or69_Node1 -- No --> E_EntryType616263or69
File: GCX016E.cbl
GIVEN: An internal entry type code has been successfully set
WHEN: The system checks if the entry type is 61, 62, 63, or 69
THEN: If entry type matches in-bond codes, set master in-bond flag; otherwise proceed to border crossing check
File: GCX016E.cbl
GIVEN: An entry type code has been successfully converted to internal system value
WHEN: The system checks if the entry type is 61, 62, 63, or 69
THEN: If entry type matches any of these values, set master in-bond flag; otherwise continue to border crossing check
βœ“ Consolidated Acceptance Criteria
  • The system processes the in-bond entry type → set the master in-bond flag to indicate special in-bond processing is required
  • The system processes in-bond entry type classification → set the master in-bond flag to indicate this cargo requires in-bond processing
  • The system processes the in-bond entry type → set the master in-bond flag to indicate special 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{"The system processes the in-bond
entry type"}:::decision N_SetMasterInBondFlag_Node0_action["Set the master in-bond flag to
indicate special 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 in-bond entry
type classification"}:::decision N_SetMasterInBondFlag_Node1_action["Set the master in-bond flag to
indicate this cargo requires in-bond
processing"]:::main N_SetMasterInBondFlag_Node1 -- Yes --> N_SetMasterInBondFlag_Node1_action N_SetMasterInBondFlag_Node1_action --> E_SetMasterInBondFlag N_SetMasterInBondFlag_Node0 -- No --> N_SetMasterInBondFlag_Node1 N_SetMasterInBondFlag_Node2{"The system processes the in-bond
entry type"}:::decision N_SetMasterInBondFlag_Node2_action["Set the master in-bond flag to
indicate special in-bond processing
is required"]:::main N_SetMasterInBondFlag_Node2 -- Yes --> N_SetMasterInBondFlag_Node2_action N_SetMasterInBondFlag_Node2_action --> E_SetMasterInBondFlag N_SetMasterInBondFlag_Node1 -- No --> N_SetMasterInBondFlag_Node2 N_SetMasterInBondFlag_Node2 -- No --> E_SetMasterInBondFlag
File: GCX016E.cbl
GIVEN: The entry type code is identified as 61, 62, 63, or 69
WHEN: The system processes the in-bond entry type
THEN: Set the master in-bond flag to indicate special in-bond processing is required
File: GCX016E.cbl
GIVEN: The entry type code is classified as in-bond (61, 62, 63, or 69)
WHEN: The system processes in-bond entry type classification
THEN: Set the master in-bond flag to indicate this cargo requires in-bond processing
File: GCX016E.cbl
GIVEN: The entry type is identified as 61, 62, 63, or 69
WHEN: The system processes the in-bond entry type
THEN: Set the master in-bond flag to indicate special in-bond processing is required
βœ“ Consolidated Acceptance Criteria
  • If if this is a border crossing scenario → if border crossing is detected, apply border crossing logic; otherwise update cargo record directly
  • If processing context for special scenarios → if the cargo involves a border crossing scenario, apply special border crossing rules, otherwise proceed with standard validation
  • If if this is a border crossing scenario → if border crossing scenario detected, apply special border crossing rules; 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_BorderCrossingScenario(["Start Step"]) E_BorderCrossingScenario(["End Step"]) N_BorderCrossingScenario_Node0{"The system evaluates if this is a
border crossing scenario"}:::decision N_BorderCrossingScenario_Node0_action["If border crossing is detected,
apply border crossing logic
otherwise update cargo record
directly"]:::main N_BorderCrossingScenario_Node0 -- Yes --> N_BorderCrossingScenario_Node0_action N_BorderCrossingScenario_Node0_action --> E_BorderCrossingScenario S_BorderCrossingScenario --> N_BorderCrossingScenario_Node0 N_BorderCrossingScenario_Node1{"The system evaluates processing
context for special scenarios"}:::decision N_BorderCrossingScenario_Node1_action["If the cargo involves a border
crossing scenario, apply special
border crossing rules, otherwise
proceed with standard validation"]:::main N_BorderCrossingScenario_Node1 -- Yes --> N_BorderCrossingScenario_Node1_action N_BorderCrossingScenario_Node1_action --> E_BorderCrossingScenario N_BorderCrossingScenario_Node0 -- No --> N_BorderCrossingScenario_Node1 N_BorderCrossingScenario_Node2{"The system evaluates if this is a
border crossing scenario"}:::decision N_BorderCrossingScenario_Node2_action["If border crossing scenario
detected, apply special border
crossing rules otherwise update
cargo record directly"]:::main N_BorderCrossingScenario_Node2 -- Yes --> N_BorderCrossingScenario_Node2_action N_BorderCrossingScenario_Node2_action --> E_BorderCrossingScenario N_BorderCrossingScenario_Node1 -- No --> N_BorderCrossingScenario_Node2 N_BorderCrossingScenario_Node2 -- No --> E_BorderCrossingScenario
File: GCX016E.cbl
GIVEN: Entry type processing is in progress
WHEN: The system evaluates if this is a border crossing scenario
THEN: If border crossing is detected, apply border crossing logic; otherwise update cargo record directly
File: GCX016E.cbl
GIVEN: Entry type code has been updated in the cargo record
WHEN: The system evaluates processing context for special scenarios
THEN: If the cargo involves a border crossing scenario, apply special border crossing rules, otherwise proceed with standard validation
File: GCX016E.cbl
GIVEN: Entry type conversion has been completed
WHEN: The system evaluates if this is a border crossing scenario
THEN: If border crossing scenario detected, apply special border crossing rules; otherwise update cargo record directly
βœ“ Consolidated Acceptance Criteria
  • The system applies border crossing logic → execute special border crossing processing rules and update cargo 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_ApplyBorderCrossingLogic(["Start Step"]) E_ApplyBorderCrossingLogic(["End Step"]) N_ApplyBorderCrossingLogic_Node0{"The system applies border crossing
logic"}:::decision N_ApplyBorderCrossingLogic_Node0_action["Execute special border crossing
processing rules and update cargo
accordingly"]:::main N_ApplyBorderCrossingLogic_Node0 -- Yes --> N_ApplyBorderCrossingLogic_Node0_action N_ApplyBorderCrossingLogic_Node0_action --> E_ApplyBorderCrossingLogic S_ApplyBorderCrossingLogic --> N_ApplyBorderCrossingLogic_Node0 N_ApplyBorderCrossingLogic_Node0 -- No --> E_ApplyBorderCrossingLogic
File: GCX016E.cbl
GIVEN: A border crossing scenario has been identified
WHEN: The system applies border crossing logic
THEN:
  • Execute special border crossing processing rules
  • Update cargo accordingly
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → store the internal entry type code and any associated flags 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_UpdateCargoRecordwithEntryType(["Start Step"]) E_UpdateCargoRecordwithEntryType(["End Step"]) N_UpdateCargoRecordwithEntryType_Node0{"The system updates the cargo record"}:::decision N_UpdateCargoRecordwithEntryType_Node0_action["Store the internal entry type code
and any associated flags in the
cargo record"]:::main N_UpdateCargoRecordwithEntryType_Node0 -- Yes --> N_UpdateCargoRecordwithEntryType_Node0_action N_UpdateCargoRecordwithEntryType_Node0_action --> E_UpdateCargoRecordwithEntryType S_UpdateCargoRecordwithEntryType --> N_UpdateCargoRecordwithEntryType_Node0 N_UpdateCargoRecordwithEntryType_Node0 -- No --> E_UpdateCargoRecordwithEntryType
File: GCX016E.cbl
GIVEN: Entry type has been successfully processed and validated
WHEN: The system updates the cargo record
THEN:
  • Store the internal entry type code
  • Any associated flags in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system logs the conversion activity → create audit log entry showing original EDI code, converted internal code, 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_LogEntryTypeConversion(["Start Step"]) E_LogEntryTypeConversion(["End Step"]) N_LogEntryTypeConversion_Node0{"The system logs the conversion
activity"}:::decision N_LogEntryTypeConversion_Node0_action["Create audit log entry showing
original EDI code, converted
internal code, and processing
timestamp"]:::main N_LogEntryTypeConversion_Node0 -- Yes --> N_LogEntryTypeConversion_Node0_action N_LogEntryTypeConversion_Node0_action --> E_LogEntryTypeConversion S_LogEntryTypeConversion --> N_LogEntryTypeConversion_Node0 N_LogEntryTypeConversion_Node0 -- No --> E_LogEntryTypeConversion
File: GCX016E.cbl
GIVEN: Entry type conversion has been completed successfully
WHEN: The system logs the conversion activity
THEN: Create audit log entry showing original EDI code, converted internal code, and processing timestamp
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo data → the US port code is extracted from the cargo record for border location mapping
  • The system processes cargo for cross-border movement → the US port code is extracted from the cargo data for mapping 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_ExtractUSPortCodefromCargoData(["Start Step"]) E_ExtractUSPortCodefromCargoData(["End Step"]) N_ExtractUSPortCodefromCargoData_Node0{"The system processes the cargo data"}:::decision N_ExtractUSPortCodefromCargoData_Node0_action["The US port code is extracted from
the cargo record for border location
mapping"]:::main N_ExtractUSPortCodefromCargoData_Node0 -- Yes --> N_ExtractUSPortCodefromCargoData_Node0_action N_ExtractUSPortCodefromCargoData_Node0_action --> E_ExtractUSPortCodefromCargoData S_ExtractUSPortCodefromCargoData --> N_ExtractUSPortCodefromCargoData_Node0 N_ExtractUSPortCodefromCargoData_Node1{"The system processes cargo for
cross-border movement"}:::decision N_ExtractUSPortCodefromCargoData_Node1_action["The US port code is extracted from
the cargo data for mapping purposes"]:::main N_ExtractUSPortCodefromCargoData_Node1 -- Yes --> N_ExtractUSPortCodefromCargoData_Node1_action N_ExtractUSPortCodefromCargoData_Node1_action --> E_ExtractUSPortCodefromCargoData N_ExtractUSPortCodefromCargoData_Node0 -- No --> N_ExtractUSPortCodefromCargoData_Node1 N_ExtractUSPortCodefromCargoData_Node1 -- No --> E_ExtractUSPortCodefromCargoData
File: GCX016E.cbl
GIVEN: A cross-border cargo record is received for processing
WHEN: The system processes the cargo data
THEN: The US port code is extracted from the cargo record for border location mapping
File: GCX016E.cbl
GIVEN: A cargo record contains cross-border movement information
WHEN: The system processes cargo for cross-border movement
THEN: The US port code is extracted from the cargo data for mapping purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine the corresponding Canadian border location → the Canadian border location mapping table is accessed for 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_AccessCanadianBorderLocationMappingTable(["Start Step"]) E_AccessCanadianBorderLocationMappingTable(["End Step"]) N_AccessCanadianBorderLocationMappingTable_Node0{"The system needs to determine the
corresponding Canadian border
location"}:::decision N_AccessCanadianBorderLocationMappingTable_Node0_action["The Canadian border location
mapping table is accessed for lookup"]:::main N_AccessCanadianBorderLocationMappingTable_Node0 -- Yes --> N_AccessCanadianBorderLocationMappingTable_Node0_action N_AccessCanadianBorderLocationMappingTable_Node0_action --> E_AccessCanadianBorderLocationMappingTable S_AccessCanadianBorderLocationMappingTable --> N_AccessCanadianBorderLocationMappingTable_Node0 N_AccessCanadianBorderLocationMappingTable_Node0 -- No --> E_AccessCanadianBorderLocationMappingTable
File: GCX016E.cbl
GIVEN: A US port code has been extracted from cargo data
WHEN: The system needs to determine the corresponding Canadian border location
THEN: The Canadian border location mapping table is accessed for lookup
βœ“ Consolidated Acceptance Criteria
  • The system searches for the US port code in the mapping table → the system determines if a corresponding Canadian border location mapping exists
  • The system searches for the US port code in the mapping table → the system determines if a valid mapping exists for the 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_USPortCodeFoundinMapping(["Start Step"]) E_USPortCodeFoundinMapping(["End Step"]) N_USPortCodeFoundinMapping_Node0{"The system searches for the US port
code in the mapping table"}:::decision N_USPortCodeFoundinMapping_Node0_action["The system determines if a
corresponding Canadian border
location mapping exists"]:::main N_USPortCodeFoundinMapping_Node0 -- Yes --> N_USPortCodeFoundinMapping_Node0_action N_USPortCodeFoundinMapping_Node0_action --> E_USPortCodeFoundinMapping S_USPortCodeFoundinMapping --> N_USPortCodeFoundinMapping_Node0 N_USPortCodeFoundinMapping_Node1{"The system searches for the US port
code in the mapping table"}:::decision N_USPortCodeFoundinMapping_Node1_action["The system determines if a valid
mapping exists for the port code"]:::main N_USPortCodeFoundinMapping_Node1 -- Yes --> N_USPortCodeFoundinMapping_Node1_action N_USPortCodeFoundinMapping_Node1_action --> E_USPortCodeFoundinMapping N_USPortCodeFoundinMapping_Node0 -- No --> N_USPortCodeFoundinMapping_Node1 N_USPortCodeFoundinMapping_Node1 -- No --> E_USPortCodeFoundinMapping
File: GCX016E.cbl
GIVEN: A US port code has been extracted from cargo data and the mapping table is accessed
WHEN: The system searches for the US port code in the mapping table
THEN: The system determines if a corresponding Canadian border location mapping exists
File: GCX016E.cbl
GIVEN: A US port code and access to the Canadian border mapping table
WHEN: The system searches for the US port code in the mapping table
THEN: The system determines if a valid mapping exists for the port code
βœ“ Consolidated Acceptance Criteria
  • The system finds a valid mapping entry → the corresponding Canadian border location name is retrieved from the 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_RetrieveCorrespondingCanadianBorderLocationName(["Start Step"]) E_RetrieveCorrespondingCanadianBorderLocationName(["End Step"]) N_RetrieveCorrespondingCanadianBorderLocationName_Node0{"The system finds a valid mapping
entry"}:::decision N_RetrieveCorrespondingCanadianBorderLocationName_Node0_action["The corresponding Canadian border
location name is retrieved from the
mapping table"]:::main N_RetrieveCorrespondingCanadianBorderLocationName_Node0 -- Yes --> N_RetrieveCorrespondingCanadianBorderLocationName_Node0_action N_RetrieveCorrespondingCanadianBorderLocationName_Node0_action --> E_RetrieveCorrespondingCanadianBorderLocationName S_RetrieveCorrespondingCanadianBorderLocationName --> N_RetrieveCorrespondingCanadianBorderLocationName_Node0 N_RetrieveCorrespondingCanadianBorderLocationName_Node0 -- No --> E_RetrieveCorrespondingCanadianBorderLocationName
File: GCX016E.cbl
GIVEN: A US port code exists in the Canadian border location mapping table
WHEN: The system finds a valid mapping entry
THEN: The corresponding Canadian border location name is retrieved from the mapping table
βœ“ Consolidated Acceptance Criteria
  • The system processes the mapping result → the cargo record is updated with the Canadian border 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_UpdateCargoRecordwithCanadianBorderLocation(["Start Step"]) E_UpdateCargoRecordwithCanadianBorderLocation(["End Step"]) N_UpdateCargoRecordwithCanadianBorderLocation_Node0{"The system processes the mapping
result"}:::decision N_UpdateCargoRecordwithCanadianBorderLocation_Node0_action["The cargo record is updated with
the Canadian border location
information"]:::main N_UpdateCargoRecordwithCanadianBorderLocation_Node0 -- Yes --> N_UpdateCargoRecordwithCanadianBorderLocation_Node0_action N_UpdateCargoRecordwithCanadianBorderLocation_Node0_action --> E_UpdateCargoRecordwithCanadianBorderLocation S_UpdateCargoRecordwithCanadianBorderLocation --> N_UpdateCargoRecordwithCanadianBorderLocation_Node0 N_UpdateCargoRecordwithCanadianBorderLocation_Node0 -- No --> E_UpdateCargoRecordwithCanadianBorderLocation
File: GCX016E.cbl
GIVEN: A Canadian border location name has been successfully retrieved from the mapping table
WHEN: The system processes the mapping result
THEN: The cargo record is updated with the Canadian border location information
βœ“ Consolidated Acceptance Criteria
  • The border location mapping is completed → an audit log entry is created documenting the border location mapping 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_LogBorderLocationMapping(["Start Step"]) E_LogBorderLocationMapping(["End Step"]) N_LogBorderLocationMapping_Node0{"The border location mapping is
completed"}:::decision N_LogBorderLocationMapping_Node0_action["An audit log entry is created
documenting the border location
mapping operation"]:::main N_LogBorderLocationMapping_Node0 -- Yes --> N_LogBorderLocationMapping_Node0_action N_LogBorderLocationMapping_Node0_action --> E_LogBorderLocationMapping S_LogBorderLocationMapping --> N_LogBorderLocationMapping_Node0 N_LogBorderLocationMapping_Node0 -- No --> E_LogBorderLocationMapping
File: GCX016E.cbl
GIVEN: A cargo record has been updated with Canadian border location information
WHEN: The border location mapping is completed
THEN: An audit log entry is created documenting the border location mapping operation
βœ“ Consolidated Acceptance Criteria
  • The US port code is not found in the Canadian border location mapping table → an error is generated indicating the port code cannot be mapped to a Canadian border 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_GenerateErrorforUnmappedPortCode(["Start Step"]) E_GenerateErrorforUnmappedPortCode(["End Step"]) N_GenerateErrorforUnmappedPortCode_Node0{"The US port code is not found in
the Canadian border location mapping
table"}:::decision N_GenerateErrorforUnmappedPortCode_Node0_action["An error is generated indicating
the port code cannot be mapped to a
Canadian border location"]:::main N_GenerateErrorforUnmappedPortCode_Node0 -- Yes --> N_GenerateErrorforUnmappedPortCode_Node0_action N_GenerateErrorforUnmappedPortCode_Node0_action --> E_GenerateErrorforUnmappedPortCode S_GenerateErrorforUnmappedPortCode --> N_GenerateErrorforUnmappedPortCode_Node0 N_GenerateErrorforUnmappedPortCode_Node0 -- No --> E_GenerateErrorforUnmappedPortCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A US port code has been extracted from cargo data
WHEN: The US port code is not found in the Canadian border location mapping table
THEN: An error is generated indicating the port code cannot be mapped to a Canadian border location
βœ“ Consolidated Acceptance Criteria
  • The border location processing step is finished → the system continues with the next step in the 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_ContinueCargoProcessingwithBorderLocation(["Start Step"]) E_ContinueCargoProcessingwithBorderLocation(["End Step"]) N_ContinueCargoProcessingwithBorderLocation_Node0{"The border location processing step
is finished"}:::decision N_ContinueCargoProcessingwithBorderLocation_Node0_action["The system continues with the next
step in the cargo processing
workflow"]:::main N_ContinueCargoProcessingwithBorderLocation_Node0 -- Yes --> N_ContinueCargoProcessingwithBorderLocation_Node0_action N_ContinueCargoProcessingwithBorderLocation_Node0_action --> E_ContinueCargoProcessingwithBorderLocation S_ContinueCargoProcessingwithBorderLocation --> N_ContinueCargoProcessingwithBorderLocation_Node0 N_ContinueCargoProcessingwithBorderLocation_Node0 -- No --> E_ContinueCargoProcessingwithBorderLocation
File: GCX016E.cbl
GIVEN: Border location mapping has been completed successfully or an error has been generated for unmapped port code
WHEN: The border location processing step is finished
THEN: The system continues with the next step in the cargo processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the A1 disposition code → the system retrieves the N9 reference number segment and formats the FDA reference number with FDA PN prefix
  • The system processes the A1 disposition code → the FDA reference number is formatted and processed for A1 specific requirements
  • The system processes the FDA reference number formatting → the FDA reference number should be prefixed with 'FDA PN' and properly formatted
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_A1DispositionCodeProcessing(["Start Step"]) E_A1DispositionCodeProcessing(["End Step"]) N_A1DispositionCodeProcessing_Node0{"The system processes the A1
disposition code"}:::decision N_A1DispositionCodeProcessing_Node0_action["The system retrieves the N9
reference number segment and formats
the FDA reference number with FDA PN
prefix"]:::main N_A1DispositionCodeProcessing_Node0 -- Yes --> N_A1DispositionCodeProcessing_Node0_action N_A1DispositionCodeProcessing_Node0_action --> E_A1DispositionCodeProcessing S_A1DispositionCodeProcessing --> N_A1DispositionCodeProcessing_Node0 N_A1DispositionCodeProcessing_Node1{"The system processes the A1
disposition code"}:::decision N_A1DispositionCodeProcessing_Node1_action["The FDA reference number is
formatted and processed for A1
specific requirements"]:::main N_A1DispositionCodeProcessing_Node1 -- Yes --> N_A1DispositionCodeProcessing_Node1_action N_A1DispositionCodeProcessing_Node1_action --> E_A1DispositionCodeProcessing N_A1DispositionCodeProcessing_Node0 -- No --> N_A1DispositionCodeProcessing_Node1 N_A1DispositionCodeProcessing_Node2{"The system processes the FDA
reference number formatting"}:::decision N_A1DispositionCodeProcessing_Node2_action["The FDA reference number should be
prefixed with FDA PN and properly
formatted"]:::main N_A1DispositionCodeProcessing_Node2 -- Yes --> N_A1DispositionCodeProcessing_Node2_action N_A1DispositionCodeProcessing_Node2_action --> E_A1DispositionCodeProcessing N_A1DispositionCodeProcessing_Node1 -- No --> N_A1DispositionCodeProcessing_Node2 N_A1DispositionCodeProcessing_Node2 -- No --> E_A1DispositionCodeProcessing
File: GCX016E.cbl
GIVEN: A cargo has an A1 disposition code for FDA processing
WHEN: The system processes the A1 disposition code
THEN:
  • The system retrieves the n9 reference number segment
  • Formats the fda reference number with fda pn prefix
File: GCX016E.cbl
GIVEN: A cargo has an A1 disposition code requiring FDA reference number processing
WHEN: The system processes the A1 disposition code
THEN:
  • The fda reference number is formatted
  • Processed for a1 specific requirements
File: GCX016E.cbl
GIVEN: An N9 reference segment is received with A1 disposition code
WHEN: The system processes the FDA reference number formatting
THEN: The FDA reference number should be prefixed with 'FDA PN' and properly formatted
βœ“ Consolidated Acceptance Criteria
  • The system processes the A3 disposition code → the system retrieves the N9 reference number segment and formats the FDA reference number with FDA prefix
  • The system processes the A3 disposition code → the FDA reference number is formatted and processed for A3 specific requirements
  • The system processes the FDA reference number formatting → the FDA reference number should be prefixed with 'FDA' and properly formatted
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_A3DispositionCodeProcessing(["Start Step"]) E_A3DispositionCodeProcessing(["End Step"]) N_A3DispositionCodeProcessing_Node0{"The system processes the A3
disposition code"}:::decision N_A3DispositionCodeProcessing_Node0_action["The system retrieves the N9
reference number segment and formats
the FDA reference number with FDA
prefix"]:::main N_A3DispositionCodeProcessing_Node0 -- Yes --> N_A3DispositionCodeProcessing_Node0_action N_A3DispositionCodeProcessing_Node0_action --> E_A3DispositionCodeProcessing S_A3DispositionCodeProcessing --> N_A3DispositionCodeProcessing_Node0 N_A3DispositionCodeProcessing_Node1{"The system processes the A3
disposition code"}:::decision N_A3DispositionCodeProcessing_Node1_action["The FDA reference number is
formatted and processed for A3
specific requirements"]:::main N_A3DispositionCodeProcessing_Node1 -- Yes --> N_A3DispositionCodeProcessing_Node1_action N_A3DispositionCodeProcessing_Node1_action --> E_A3DispositionCodeProcessing N_A3DispositionCodeProcessing_Node0 -- No --> N_A3DispositionCodeProcessing_Node1 N_A3DispositionCodeProcessing_Node2{"The system processes the FDA
reference number formatting"}:::decision N_A3DispositionCodeProcessing_Node2_action["The FDA reference number should be
prefixed with FDA and properly
formatted"]:::main N_A3DispositionCodeProcessing_Node2 -- Yes --> N_A3DispositionCodeProcessing_Node2_action N_A3DispositionCodeProcessing_Node2_action --> E_A3DispositionCodeProcessing N_A3DispositionCodeProcessing_Node1 -- No --> N_A3DispositionCodeProcessing_Node2 N_A3DispositionCodeProcessing_Node2 -- No --> E_A3DispositionCodeProcessing
File: GCX016E.cbl
GIVEN: A cargo has an A3 disposition code for FDA processing
WHEN: The system processes the A3 disposition code
THEN:
  • The system retrieves the n9 reference number segment
  • Formats the fda reference number with fda prefix
File: GCX016E.cbl
GIVEN: A cargo has an A3 disposition code requiring FDA reference number processing
WHEN: The system processes the A3 disposition code
THEN:
  • The fda reference number is formatted
  • Processed for a3 specific requirements
File: GCX016E.cbl
GIVEN: An N9 reference segment is received with A3 disposition code
WHEN: The system processes the FDA reference number formatting
THEN: The FDA reference number should be prefixed with 'FDA' and properly formatted
βœ“ Consolidated Acceptance Criteria
  • The system needs to process FDA reference numbers → the system retrieves the N9 reference number segment 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_RetrieveN9ReferenceNumberSegment(["Start Step"]) E_RetrieveN9ReferenceNumberSegment(["End Step"]) N_RetrieveN9ReferenceNumberSegment_Node0{"The system needs to process FDA
reference numbers"}:::decision N_RetrieveN9ReferenceNumberSegment_Node0_action["The system retrieves the N9
reference number segment from the
cargo database"]:::main N_RetrieveN9ReferenceNumberSegment_Node0 -- Yes --> N_RetrieveN9ReferenceNumberSegment_Node0_action N_RetrieveN9ReferenceNumberSegment_Node0_action --> E_RetrieveN9ReferenceNumberSegment S_RetrieveN9ReferenceNumberSegment --> N_RetrieveN9ReferenceNumberSegment_Node0 N_RetrieveN9ReferenceNumberSegment_Node0 -- No --> E_RetrieveN9ReferenceNumberSegment
File: GCX016E.cbl
GIVEN: FDA disposition code processing is required
WHEN: The system needs to process FDA reference numbers
THEN: The system retrieves the N9 reference number segment from the cargo database
βœ“ Consolidated Acceptance Criteria
  • The system formats the FDA reference number → the system applies FDA PN prefix to the 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_FormatFDAReferenceNumberwithFDAPNPrefix(["Start Step"]) E_FormatFDAReferenceNumberwithFDAPNPrefix(["End Step"]) N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0{"The system formats the FDA
reference number"}:::decision N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0_action["The system applies FDA PN prefix to
the reference number"]:::main N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0 -- Yes --> N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0_action N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0_action --> E_FormatFDAReferenceNumberwithFDAPNPrefix S_FormatFDAReferenceNumberwithFDAPNPrefix --> N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0 N_FormatFDAReferenceNumberwithFDAPNPrefix_Node0 -- No --> E_FormatFDAReferenceNumberwithFDAPNPrefix
File: GCX016E.cbl
GIVEN: An A1 disposition code is being processed and N9 reference number segment is retrieved
WHEN: The system formats the FDA reference number
THEN: The system applies FDA PN prefix to the reference number
βœ“ Consolidated Acceptance Criteria
  • The system formats the FDA reference number → the system applies FDA prefix to the 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_FormatFDAReferenceNumberwithFDAPrefix(["Start Step"]) E_FormatFDAReferenceNumberwithFDAPrefix(["End Step"]) N_FormatFDAReferenceNumberwithFDAPrefix_Node0{"The system formats the FDA
reference number"}:::decision N_FormatFDAReferenceNumberwithFDAPrefix_Node0_action["The system applies FDA prefix to
the reference number"]:::main N_FormatFDAReferenceNumberwithFDAPrefix_Node0 -- Yes --> N_FormatFDAReferenceNumberwithFDAPrefix_Node0_action N_FormatFDAReferenceNumberwithFDAPrefix_Node0_action --> E_FormatFDAReferenceNumberwithFDAPrefix S_FormatFDAReferenceNumberwithFDAPrefix --> N_FormatFDAReferenceNumberwithFDAPrefix_Node0 N_FormatFDAReferenceNumberwithFDAPrefix_Node0 -- No --> E_FormatFDAReferenceNumberwithFDAPrefix
File: GCX016E.cbl
GIVEN: An A3 disposition code is being processed and N9 reference number segment is retrieved
WHEN: The system formats the FDA reference number
THEN: The system applies FDA prefix to the reference number
βœ“ Consolidated Acceptance Criteria
  • The system updates the N9 segment → the system repositions existing N9 data to maintain proper segment structure
  • The system repositions the existing N9 data → the existing data should be moved to appropriate positions to make room for FDA 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_RepositionExistingN9Data(["Start Step"]) E_RepositionExistingN9Data(["End Step"]) N_RepositionExistingN9Data_Node0{"The system updates the N9 segment"}:::decision N_RepositionExistingN9Data_Node0_action["The system repositions existing N9
data to maintain proper segment
structure"]:::main N_RepositionExistingN9Data_Node0 -- Yes --> N_RepositionExistingN9Data_Node0_action N_RepositionExistingN9Data_Node0_action --> E_RepositionExistingN9Data S_RepositionExistingN9Data --> N_RepositionExistingN9Data_Node0 N_RepositionExistingN9Data_Node1{"The system repositions the existing
N9 data"}:::decision N_RepositionExistingN9Data_Node1_action["The existing data should be moved
to appropriate positions to make
room for FDA prefix"]:::main N_RepositionExistingN9Data_Node1 -- Yes --> N_RepositionExistingN9Data_Node1_action N_RepositionExistingN9Data_Node1_action --> E_RepositionExistingN9Data N_RepositionExistingN9Data_Node0 -- No --> N_RepositionExistingN9Data_Node1 N_RepositionExistingN9Data_Node1 -- No --> E_RepositionExistingN9Data
File: GCX016E.cbl
GIVEN: FDA reference number has been formatted with appropriate prefix
WHEN: The system updates the N9 segment
THEN: The system repositions existing N9 data to maintain proper segment structure
File: GCX016E.cbl
GIVEN: An N9 segment contains existing data that needs FDA prefix formatting
WHEN: The system repositions the existing N9 data
THEN: The existing data should be moved to appropriate positions to make room for FDA prefix
βœ“ Consolidated Acceptance Criteria
  • The system updates the N9 reference segment → the system updates the N9 reference segment with the formatted FDA 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_UpdateN9ReferenceSegment(["Start Step"]) E_UpdateN9ReferenceSegment(["End Step"]) N_UpdateN9ReferenceSegment_Node0{"The system updates the N9 reference
segment"}:::decision N_UpdateN9ReferenceSegment_Node0_action["The system updates the N9 reference
segment with the formatted FDA
reference number"]:::main N_UpdateN9ReferenceSegment_Node0 -- Yes --> N_UpdateN9ReferenceSegment_Node0_action N_UpdateN9ReferenceSegment_Node0_action --> E_UpdateN9ReferenceSegment S_UpdateN9ReferenceSegment --> N_UpdateN9ReferenceSegment_Node0 N_UpdateN9ReferenceSegment_Node0 -- No --> E_UpdateN9ReferenceSegment
File: GCX016E.cbl
GIVEN: N9 data has been repositioned and FDA reference number is formatted
WHEN: The system updates the N9 reference segment
THEN: The system updates the N9 reference segment with the formatted FDA reference number
βœ“ Consolidated Acceptance Criteria
  • The system persists the changes → the system replaces the N9 segment in the cargo database with the updated information
  • The system performs database operations → the system replaces the N9 segment in the database with the updated 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_ReplaceN9SegmentinDatabase(["Start Step"]) E_ReplaceN9SegmentinDatabase(["End Step"]) N_ReplaceN9SegmentinDatabase_Node0{"The system persists the changes"}:::decision N_ReplaceN9SegmentinDatabase_Node0_action["The system replaces the N9 segment
in the cargo database with the
updated information"]:::main N_ReplaceN9SegmentinDatabase_Node0 -- Yes --> N_ReplaceN9SegmentinDatabase_Node0_action N_ReplaceN9SegmentinDatabase_Node0_action --> E_ReplaceN9SegmentinDatabase S_ReplaceN9SegmentinDatabase --> N_ReplaceN9SegmentinDatabase_Node0 N_ReplaceN9SegmentinDatabase_Node1{"The system performs database
operations"}:::decision N_ReplaceN9SegmentinDatabase_Node1_action["The system replaces the N9 segment
in the database with the updated
reference information"]:::main N_ReplaceN9SegmentinDatabase_Node1 -- Yes --> N_ReplaceN9SegmentinDatabase_Node1_action N_ReplaceN9SegmentinDatabase_Node1_action --> E_ReplaceN9SegmentinDatabase N_ReplaceN9SegmentinDatabase_Node0 -- No --> N_ReplaceN9SegmentinDatabase_Node1 N_ReplaceN9SegmentinDatabase_Node1 -- No --> E_ReplaceN9SegmentinDatabase
File: GCX016E.cbl
GIVEN: N9 reference segment has been updated with FDA reference number
WHEN: The system persists the changes
THEN: The system replaces the N9 segment in the cargo database with the updated information
File: GCX016E.cbl
GIVEN: The FDA reference information has been set in the N9 segment
WHEN: The system performs database operations
THEN: The system replaces the N9 segment in the database with the updated reference information
βœ“ Consolidated Acceptance Criteria
  • The system completes FDA processing → the system logs the FDA processing action 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_LogFDAProcessingAction(["Start Step"]) E_LogFDAProcessingAction(["End Step"]) N_LogFDAProcessingAction_Node0{"The system completes FDA processing"}:::decision N_LogFDAProcessingAction_Node0_action["The system logs the FDA processing
action for audit trail"]:::main N_LogFDAProcessingAction_Node0 -- Yes --> N_LogFDAProcessingAction_Node0_action N_LogFDAProcessingAction_Node0_action --> E_LogFDAProcessingAction S_LogFDAProcessingAction --> N_LogFDAProcessingAction_Node0 N_LogFDAProcessingAction_Node0 -- No --> E_LogFDAProcessingAction
File: GCX016E.cbl
GIVEN: FDA processing has been completed and N9 segment has been updated in database
WHEN: The system completes FDA processing
THEN: The system logs the FDA processing action for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system searches the broker name table for freight forwarder disposition codes → the system identifies whether freight forwarder disposition codes exist for the cargo
  • The system searches the broker table segments for freight forwarder disposition codes → the system identifies whether the disposition code is associated with a freight forwarder
  • The system searches the broker database for freight forwarder disposition codes → the system identifies whether the disposition code is associated with freight forwarder processing
  • The system searches the broker name table for freight forwarder disposition codes → the system identifies if the disposition code corresponds to a freight forwarder
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SearchBrokerDatabaseforFreightForwarderDispositionCodes(["Start Step"]) E_SearchBrokerDatabaseforFreightForwarderDispositionCodes(["End Step"]) N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0{"The system searches the broker name
table for freight forwarder
disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0_action["The system identifies whether
freight forwarder disposition codes
exist for the cargo"]:::main N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0_action N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0_action --> E_SearchBrokerDatabaseforFreightForwarderDispositionCodes S_SearchBrokerDatabaseforFreightForwarderDispositionCodes --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0 N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1{"The system searches the broker
table segments for freight forwarder
disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1_action["The system identifies whether the
disposition code is associated with
a freight forwarder"]:::main N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1_action N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1_action --> E_SearchBrokerDatabaseforFreightForwarderDispositionCodes N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node0 -- No --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1 N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2{"The system searches the broker
database for freight forwarder
disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2_action["The system identifies whether the
disposition code is associated with
freight forwarder processing"]:::main N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2_action N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2_action --> E_SearchBrokerDatabaseforFreightForwarderDispositionCodes N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node1 -- No --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2 N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3{"The system searches the broker name
table for freight forwarder
disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3_action["The system identifies if the
disposition code corresponds to a
freight forwarder"]:::main N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3_action N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3_action --> E_SearchBrokerDatabaseforFreightForwarderDispositionCodes N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node2 -- No --> N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3 N_SearchBrokerDatabaseforFreightForwarderDispositionCodes_Node3 -- No --> E_SearchBrokerDatabaseforFreightForwarderDispositionCodes
File: GCX016E.cbl
GIVEN: A CIH hold has been detected for a cargo
WHEN: The system searches the broker name table for freight forwarder disposition codes
THEN: The system identifies whether freight forwarder disposition codes exist for the cargo
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo
WHEN: The system searches the broker table segments for freight forwarder disposition codes
THEN: The system identifies whether the disposition code is associated with a freight forwarder
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo
WHEN: The system searches the broker database for freight forwarder disposition codes
THEN: The system identifies whether the disposition code is associated with freight forwarder processing
File: GCX016E.cbl
GIVEN: A cargo disposition code needs to be processed for CIH hold notification
WHEN: The system searches the broker name table for freight forwarder disposition codes
THEN: The system identifies if the disposition code corresponds to a freight forwarder
βœ“ Consolidated Acceptance Criteria
  • If the search results → if a freight forwarder is found, continue processing; otherwise, complete the process without further action
  • The search results are evaluated → if a freight forwarder is found, continue with cargo data retrieval, otherwise complete email notification process without sending email
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_FreightForwarderFound(["Start Step"]) E_FreightForwarderFound(["End Step"]) N_FreightForwarderFound_Node0{"The system evaluates the search
results"}:::decision N_FreightForwarderFound_Node0_action["If a freight forwarder is found,
continue processing otherwise,
complete the process without further
action"]:::main N_FreightForwarderFound_Node0 -- Yes --> N_FreightForwarderFound_Node0_action N_FreightForwarderFound_Node0_action --> E_FreightForwarderFound S_FreightForwarderFound --> N_FreightForwarderFound_Node0 N_FreightForwarderFound_Node1{"The search results are evaluated"}:::decision N_FreightForwarderFound_Node1_action["If a freight forwarder is found,
continue with cargo data retrieval,
otherwise complete email
notification process without sending
email"]:::main N_FreightForwarderFound_Node1 -- Yes --> N_FreightForwarderFound_Node1_action N_FreightForwarderFound_Node1_action --> E_FreightForwarderFound N_FreightForwarderFound_Node0 -- No --> N_FreightForwarderFound_Node1 N_FreightForwarderFound_Node1 -- No --> E_FreightForwarderFound
File: GCX016E.cbl
GIVEN: A search has been performed in the broker database for freight forwarder disposition codes
WHEN: The system evaluates the search results
THEN: If a freight forwarder is found, continue processing; otherwise, complete the process without further action
File: GCX016E.cbl
GIVEN: The system has searched the broker database for freight forwarder information
WHEN: The search results are evaluated
THEN: If a freight forwarder is found, continue with cargo data retrieval, otherwise complete email notification process without sending email
βœ“ Consolidated Acceptance Criteria
  • The system needs cargo segment information → the system retrieves cargo segment data from both GCSUSS03 and GCSUSS07 databases
  • The system accesses GCSUSS03 and GCSUSS07 cargo segments → the system retrieves forwarder and consignee information for email 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_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07(["Start Step"]) E_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07(["End Step"]) N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0{"The system needs cargo segment
information"}:::decision N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0_action["The system retrieves cargo segment
data from both GCSUSS03 and GCSUSS07
databases"]:::main N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0 -- Yes --> N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0_action N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0_action --> E_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07 S_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07 --> N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0 N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1{"The system accesses GCSUSS03 and
GCSUSS07 cargo segments"}:::decision N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1_action["The system retrieves forwarder and
consignee information for email
content"]:::main N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1 -- Yes --> N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1_action N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1_action --> E_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07 N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node0 -- No --> N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1 N_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07_Node1 -- No --> E_RetrieveCargoSegmentDatafromGCSUSS03GCSUSS07
File: GCX016E.cbl
GIVEN: A freight forwarder has been found in the broker database
WHEN: The system needs cargo segment information
THEN:
  • The system retrieves cargo segment data from both gcsuss03
  • Gcsuss07 databases
File: GCX016E.cbl
GIVEN: A valid freight forwarder disposition code has been identified
WHEN:
  • The system accesses gcsuss03
  • Gcsuss07 cargo segments
THEN:
  • The system retrieves forwarder
  • Consignee information for email content
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo segment data → the system extracts freight forwarder identification and contact information
  • The system processes the cargo segment information → the system extracts freight forwarder identification and contact details from the cargo segments
  • The system processes freight forwarder disposition codes → the system extracts freight forwarder identification and contact details from 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_ExtractFreightForwarderInformation(["Start Step"]) E_ExtractFreightForwarderInformation(["End Step"]) N_ExtractFreightForwarderInformation_Node0{"The system processes the cargo
segment data"}:::decision N_ExtractFreightForwarderInformation_Node0_action["The system extracts freight
forwarder identification and contact
information"]:::main N_ExtractFreightForwarderInformation_Node0 -- Yes --> N_ExtractFreightForwarderInformation_Node0_action N_ExtractFreightForwarderInformation_Node0_action --> E_ExtractFreightForwarderInformation S_ExtractFreightForwarderInformation --> N_ExtractFreightForwarderInformation_Node0 N_ExtractFreightForwarderInformation_Node1{"The system processes the cargo
segment information"}:::decision N_ExtractFreightForwarderInformation_Node1_action["The system extracts freight
forwarder identification and contact
details from the cargo segments"]:::main N_ExtractFreightForwarderInformation_Node1 -- Yes --> N_ExtractFreightForwarderInformation_Node1_action N_ExtractFreightForwarderInformation_Node1_action --> E_ExtractFreightForwarderInformation N_ExtractFreightForwarderInformation_Node0 -- No --> N_ExtractFreightForwarderInformation_Node1 N_ExtractFreightForwarderInformation_Node2{"The system processes freight
forwarder disposition codes"}:::decision N_ExtractFreightForwarderInformation_Node2_action["The system extracts freight
forwarder identification and contact
details from the cargo records"]:::main N_ExtractFreightForwarderInformation_Node2 -- Yes --> N_ExtractFreightForwarderInformation_Node2_action N_ExtractFreightForwarderInformation_Node2_action --> E_ExtractFreightForwarderInformation N_ExtractFreightForwarderInformation_Node1 -- No --> N_ExtractFreightForwarderInformation_Node2 N_ExtractFreightForwarderInformation_Node2 -- No --> E_ExtractFreightForwarderInformation
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved from GCSUSS03 and GCSUSS07
WHEN: The system processes the cargo segment data
THEN:
  • The system extracts freight forwarder identification
  • Contact information
File: GCX016E.cbl
GIVEN: Cargo segment data has been successfully retrieved
WHEN: The system processes the cargo segment information
THEN:
  • The system extracts freight forwarder identification
  • Contact details from the cargo segments
File: GCX016E.cbl
GIVEN: Cargo segment data and additional cargo data are available
WHEN: The system processes freight forwarder disposition codes
THEN:
  • The system extracts freight forwarder identification
  • Contact details from the cargo records
βœ“ Consolidated Acceptance Criteria
  • The system searches the broker name tables (GCST2RT) → the system retrieves the complete freight forwarder name and 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_LookupFreightForwarderNamefromBrokerTables(["Start Step"]) E_LookupFreightForwarderNamefromBrokerTables(["End Step"]) N_LookupFreightForwarderNamefromBrokerTables_Node0{"The system searches the broker name
tables GCST2RT"}:::decision N_LookupFreightForwarderNamefromBrokerTables_Node0_action["The system retrieves the complete
freight forwarder name and details"]:::main N_LookupFreightForwarderNamefromBrokerTables_Node0 -- Yes --> N_LookupFreightForwarderNamefromBrokerTables_Node0_action N_LookupFreightForwarderNamefromBrokerTables_Node0_action --> E_LookupFreightForwarderNamefromBrokerTables S_LookupFreightForwarderNamefromBrokerTables --> N_LookupFreightForwarderNamefromBrokerTables_Node0 N_LookupFreightForwarderNamefromBrokerTables_Node0 -- No --> E_LookupFreightForwarderNamefromBrokerTables
File: GCX016E.cbl
GIVEN: Freight forwarder information has been extracted from cargo segment data
WHEN: The system searches the broker name tables (GCST2RT)
THEN:
  • The system retrieves the complete freight forwarder name
  • Details
βœ“ Consolidated Acceptance Criteria
  • The system searches the broker email address table (GCSTBRT) → the system retrieves the freight forwarder's 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_RetrieveFreightForwarderEmailAddress(["Start Step"]) E_RetrieveFreightForwarderEmailAddress(["End Step"]) N_RetrieveFreightForwarderEmailAddress_Node0{"The system searches the broker
email address table GCSTBRT"}:::decision N_RetrieveFreightForwarderEmailAddress_Node0_action["The system retrieves the freight
forwarder s email address"]:::main N_RetrieveFreightForwarderEmailAddress_Node0 -- Yes --> N_RetrieveFreightForwarderEmailAddress_Node0_action N_RetrieveFreightForwarderEmailAddress_Node0_action --> E_RetrieveFreightForwarderEmailAddress S_RetrieveFreightForwarderEmailAddress --> N_RetrieveFreightForwarderEmailAddress_Node0 N_RetrieveFreightForwarderEmailAddress_Node0 -- No --> E_RetrieveFreightForwarderEmailAddress
File: GCX016E.cbl
GIVEN: The freight forwarder name has been successfully looked up
WHEN: The system searches the broker email address table (GCSTBRT)
THEN: The system retrieves the freight forwarder's email address
βœ“ Consolidated Acceptance Criteria
  • If the retrieved email address → if a valid email address exists, continue with email notification; otherwise, complete the process without sending email
  • If the retrieved email address for validity → the system determines whether to proceed with email content building or 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_ValidEmailAddress(["Start Step"]) E_ValidEmailAddress(["End Step"]) N_ValidEmailAddress_Node0{"The system evaluates the retrieved
email address"}:::decision N_ValidEmailAddress_Node0_action["If a valid email address exists,
continue with email notification
otherwise, complete the process
without sending email"]:::main N_ValidEmailAddress_Node0 -- Yes --> N_ValidEmailAddress_Node0_action N_ValidEmailAddress_Node0_action --> E_ValidEmailAddress S_ValidEmailAddress --> N_ValidEmailAddress_Node0 N_ValidEmailAddress_Node1{"The system evaluates the retrieved
email address for validity"}:::decision N_ValidEmailAddress_Node1_action["The system determines whether to
proceed with email content building
or terminate processing"]:::exclusion N_ValidEmailAddress_Node1 -- Yes -->|Alternative| N_ValidEmailAddress_Node1_action N_ValidEmailAddress_Node1_action --> E_ValidEmailAddress N_ValidEmailAddress_Node0 -- No --> N_ValidEmailAddress_Node1 N_ValidEmailAddress_Node1 -- No --> E_ValidEmailAddress
File: GCX016E.cbl
GIVEN: An email address lookup has been performed for the freight forwarder
WHEN: The system evaluates the retrieved email address
THEN: If a valid email address exists, continue with email notification; otherwise, complete the process without sending email
File: GCX016E.cbl
GIVEN: Email address retrieval from GCSTBRT table has been completed
WHEN: The system evaluates the retrieved email address for validity
THEN: The system determines whether to proceed with email content building or terminate processing
βœ“ Consolidated Acceptance Criteria
  • The system prepares the email notification → the system creates a structured email content framework ready for detailed information inclusion
  • The system builds the email notification content → the system creates comprehensive email content including equipment information, waybill details, CCN information, content description, origin/destination stations, CIH disposition information, and processing timestamps
  • The system builds the email notification content → the system creates comprehensive email content with cargo details, equipment information, and hold reasons
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_BuildComprehensiveEmailContent(["Start Step"]) E_BuildComprehensiveEmailContent(["End Step"]) N_BuildComprehensiveEmailContent_Node0{"The system prepares the email
notification"}:::decision N_BuildComprehensiveEmailContent_Node0_action["The system creates a structured
email content framework ready for
detailed information inclusion"]:::main N_BuildComprehensiveEmailContent_Node0 -- Yes --> N_BuildComprehensiveEmailContent_Node0_action N_BuildComprehensiveEmailContent_Node0_action --> E_BuildComprehensiveEmailContent S_BuildComprehensiveEmailContent --> N_BuildComprehensiveEmailContent_Node0 N_BuildComprehensiveEmailContent_Node1{"The system builds the email
notification content"}:::decision N_BuildComprehensiveEmailContent_Node1_action["The system creates comprehensive
email content including equipment
information, waybill details, CCN
information, content description,
origindestination stations, CIH
disposition information, and
processing timestamps"]:::main N_BuildComprehensiveEmailContent_Node1 -- Yes --> N_BuildComprehensiveEmailContent_Node1_action N_BuildComprehensiveEmailContent_Node1_action --> E_BuildComprehensiveEmailContent N_BuildComprehensiveEmailContent_Node0 -- No --> N_BuildComprehensiveEmailContent_Node1 N_BuildComprehensiveEmailContent_Node2{"The system builds the email
notification content"}:::decision N_BuildComprehensiveEmailContent_Node2_action["The system creates comprehensive
email content with cargo details,
equipment information, and hold
reasons"]:::main N_BuildComprehensiveEmailContent_Node2 -- Yes --> N_BuildComprehensiveEmailContent_Node2_action N_BuildComprehensiveEmailContent_Node2_action --> E_BuildComprehensiveEmailContent N_BuildComprehensiveEmailContent_Node1 -- No --> N_BuildComprehensiveEmailContent_Node2 N_BuildComprehensiveEmailContent_Node2 -- No --> E_BuildComprehensiveEmailContent
File: GCX016E.cbl
GIVEN: A valid email address has been found for the freight forwarder
WHEN: The system prepares the email notification
THEN: The system creates a structured email content framework ready for detailed information inclusion
File: GCX016E.cbl
GIVEN: A valid email address has been found for the freight forwarder
WHEN: The system builds the email notification content
THEN: The system creates comprehensive email content including equipment information, waybill details, CCN information, content description, origin/destination stations, CIH disposition information, and processing timestamps
File: GCX016E.cbl
GIVEN: A valid email address has been confirmed for the freight forwarder
WHEN: The system builds the email notification content
THEN: The system creates comprehensive email content with cargo details, equipment information, and hold reasons
βœ“ Consolidated Acceptance Criteria
  • The system adds equipment information to the email → the email includes equipment type, identification numbers, and related equipment details
  • The system accesses GCSUSRT cargo root for equipment details → car ID, waybill number, and equipment type information are included 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_IncludeEquipmentDetails(["Start Step"]) E_IncludeEquipmentDetails(["End Step"]) N_IncludeEquipmentDetails_Node0{"The system adds equipment
information to the email"}:::decision N_IncludeEquipmentDetails_Node0_action["The email includes equipment type,
identification numbers, and related
equipment details"]:::main N_IncludeEquipmentDetails_Node0 -- Yes --> N_IncludeEquipmentDetails_Node0_action N_IncludeEquipmentDetails_Node0_action --> E_IncludeEquipmentDetails S_IncludeEquipmentDetails --> N_IncludeEquipmentDetails_Node0 N_IncludeEquipmentDetails_Node1{"The system accesses GCSUSRT cargo
root for equipment details"}:::decision N_IncludeEquipmentDetails_Node1_action["Car ID, waybill number, and
equipment type information are
included in the notification"]:::main N_IncludeEquipmentDetails_Node1 -- Yes --> N_IncludeEquipmentDetails_Node1_action N_IncludeEquipmentDetails_Node1_action --> E_IncludeEquipmentDetails N_IncludeEquipmentDetails_Node0 -- No --> N_IncludeEquipmentDetails_Node1 N_IncludeEquipmentDetails_Node1 -- No --> E_IncludeEquipmentDetails
File: GCX016E.cbl
GIVEN: Email content structure has been built
WHEN: The system adds equipment information to the email
THEN: The email includes equipment type, identification numbers, and related equipment details
File: GCX016E.cbl
GIVEN: Hold notification message formatting has begun
WHEN: The system accesses GCSUSRT cargo root for equipment details
THEN: Car ID, waybill number, and equipment type information are included in the notification
βœ“ Consolidated Acceptance Criteria
  • The system adds waybill information to the email → the email includes waybill numbers and associated shipping documentation details
  • The system includes waybill information → the system adds waybill details from cargo data including waybill number, shipment references, and related shipping documentation information to the hold 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_IncludeWaybillInformation(["Start Step"]) E_IncludeWaybillInformation(["End Step"]) N_IncludeWaybillInformation_Node0{"The system adds waybill information
to the email"}:::decision N_IncludeWaybillInformation_Node0_action["The email includes waybill numbers
and associated shipping
documentation details"]:::main N_IncludeWaybillInformation_Node0 -- Yes --> N_IncludeWaybillInformation_Node0_action N_IncludeWaybillInformation_Node0_action --> E_IncludeWaybillInformation S_IncludeWaybillInformation --> N_IncludeWaybillInformation_Node0 N_IncludeWaybillInformation_Node1{"The system includes waybill
information"}:::decision N_IncludeWaybillInformation_Node1_action["The system adds waybill details
from cargo data including waybill
number, shipment references, and
related shipping documentation
information to the hold notification"]:::main N_IncludeWaybillInformation_Node1 -- Yes --> N_IncludeWaybillInformation_Node1_action N_IncludeWaybillInformation_Node1_action --> E_IncludeWaybillInformation N_IncludeWaybillInformation_Node0 -- No --> N_IncludeWaybillInformation_Node1 N_IncludeWaybillInformation_Node1 -- No --> E_IncludeWaybillInformation
File: GCX016E.cbl
GIVEN: Equipment details have been included in the email
WHEN: The system adds waybill information to the email
THEN:
  • The email includes waybill numbers
  • Associated shipping documentation details
File: GCX016E.cbl
GIVEN: Equipment information has been included in the hold notification
WHEN: The system includes waybill information
THEN: The system adds waybill details from cargo data including waybill number, shipment references, and related shipping documentation information to the hold notification
βœ“ Consolidated Acceptance Criteria
  • The system adds CCN and content information to the email → the email includes the Cargo Control Number and detailed description of cargo contents
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IncludeCCNandContentDescription(["Start Step"]) E_IncludeCCNandContentDescription(["End Step"]) N_IncludeCCNandContentDescription_Node0{"The system adds CCN and content
information to the email"}:::decision N_IncludeCCNandContentDescription_Node0_action["The email includes the Cargo
Control Number and detailed
description of cargo contents"]:::main N_IncludeCCNandContentDescription_Node0 -- Yes --> N_IncludeCCNandContentDescription_Node0_action N_IncludeCCNandContentDescription_Node0_action --> E_IncludeCCNandContentDescription S_IncludeCCNandContentDescription --> N_IncludeCCNandContentDescription_Node0 N_IncludeCCNandContentDescription_Node0 -- No --> E_IncludeCCNandContentDescription
File: GCX016E.cbl
GIVEN: Waybill information has been included in the email
WHEN:
  • The system adds ccn
  • Content information to the email
THEN:
  • The email includes the cargo control number
  • Detailed description of cargo contents
βœ“ Consolidated Acceptance Criteria
  • The system adds location information to the email → the email includes origin station, destination station, and routing information
  • The system processes origin and destination station data → the system includes origin and destination station names and codes in the email notification
  • The system processes origin and destination station information for email inclusion → the system adds origin and destination station details to the email notification 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_IncludeOriginDestinationStations(["Start Step"]) E_IncludeOriginDestinationStations(["End Step"]) N_IncludeOriginDestinationStations_Node0{"The system adds location
information to the email"}:::decision N_IncludeOriginDestinationStations_Node0_action["The email includes origin station,
destination station, and routing
information"]:::main N_IncludeOriginDestinationStations_Node0 -- Yes --> N_IncludeOriginDestinationStations_Node0_action N_IncludeOriginDestinationStations_Node0_action --> E_IncludeOriginDestinationStations S_IncludeOriginDestinationStations --> N_IncludeOriginDestinationStations_Node0 N_IncludeOriginDestinationStations_Node1{"The system processes origin and
destination station data"}:::decision N_IncludeOriginDestinationStations_Node1_action["The system includes origin and
destination station names and codes
in the email notification"]:::main N_IncludeOriginDestinationStations_Node1 -- Yes --> N_IncludeOriginDestinationStations_Node1_action N_IncludeOriginDestinationStations_Node1_action --> E_IncludeOriginDestinationStations N_IncludeOriginDestinationStations_Node0 -- No --> N_IncludeOriginDestinationStations_Node1 N_IncludeOriginDestinationStations_Node2{"The system processes origin and
destination station information for
email inclusion"}:::decision N_IncludeOriginDestinationStations_Node2_action["The system adds origin and
destination station details to the
email notification content"]:::main N_IncludeOriginDestinationStations_Node2 -- Yes --> N_IncludeOriginDestinationStations_Node2_action N_IncludeOriginDestinationStations_Node2_action --> E_IncludeOriginDestinationStations N_IncludeOriginDestinationStations_Node1 -- No --> N_IncludeOriginDestinationStations_Node2 N_IncludeOriginDestinationStations_Node2 -- No --> E_IncludeOriginDestinationStations
File: GCX016E.cbl
GIVEN: CCN and content description have been included in the email
WHEN: The system adds location information to the email
THEN: The email includes origin station, destination station, and routing information
File: GCX016E.cbl
GIVEN: Content description has been included in the email content
WHEN:
  • The system processes origin
  • Destination station data
THEN:
  • The system includes origin
  • Destination station names
  • Codes in the email notification
File: GCX016E.cbl
GIVEN: Content description has been included in the email content
WHEN:
  • The system processes origin
  • Destination station information for email inclusion
THEN:
  • The system adds origin
  • Destination station details to the email notification content
βœ“ Consolidated Acceptance Criteria
  • The system adds disposition information to the email → the email includes disposition codes, hold reasons, and any special handling 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_IncludeDispositionInformation(["Start Step"]) E_IncludeDispositionInformation(["End Step"]) N_IncludeDispositionInformation_Node0{"The system adds disposition
information to the email"}:::decision N_IncludeDispositionInformation_Node0_action["The email includes disposition
codes, hold reasons, and any special
handling instructions"]:::main N_IncludeDispositionInformation_Node0 -- Yes --> N_IncludeDispositionInformation_Node0_action N_IncludeDispositionInformation_Node0_action --> E_IncludeDispositionInformation S_IncludeDispositionInformation --> N_IncludeDispositionInformation_Node0 N_IncludeDispositionInformation_Node0 -- No --> E_IncludeDispositionInformation
File: GCX016E.cbl
GIVEN: Origin and destination station information has been included in the email
WHEN: The system adds disposition information to the email
THEN: The email includes disposition codes, hold reasons, and any special handling instructions
βœ“ Consolidated Acceptance Criteria
  • The system attempts to send the email notification → the system transmits the email to the freight forwarder's email address
  • The system attempts to send the email notification → the system transmits the email to the freight forwarder's email address and captures delivery status
  • The system initiates email delivery to the freight forwarder → the system sends the CIH hold notification email to the specified 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_SendEmailNotification(["Start Step"]) E_SendEmailNotification(["End Step"]) N_SendEmailNotification_Node0{"The system attempts to send the
email notification"}:::decision N_SendEmailNotification_Node0_action["The system transmits the email to
the freight forwarder s email
address"]:::main N_SendEmailNotification_Node0 -- Yes --> N_SendEmailNotification_Node0_action N_SendEmailNotification_Node0_action --> E_SendEmailNotification S_SendEmailNotification --> N_SendEmailNotification_Node0 N_SendEmailNotification_Node1{"The system attempts to send the
email notification"}:::decision N_SendEmailNotification_Node1_action["The system transmits the email to
the freight forwarder s email
address and captures delivery status"]:::main N_SendEmailNotification_Node1 -- Yes --> N_SendEmailNotification_Node1_action N_SendEmailNotification_Node1_action --> E_SendEmailNotification N_SendEmailNotification_Node0 -- No --> N_SendEmailNotification_Node1 N_SendEmailNotification_Node2{"The system initiates email delivery
to the freight forwarder"}:::decision N_SendEmailNotification_Node2_action["The system sends the CIH hold
notification email to the specified
recipient"]:::main N_SendEmailNotification_Node2 -- Yes --> N_SendEmailNotification_Node2_action N_SendEmailNotification_Node2_action --> E_SendEmailNotification N_SendEmailNotification_Node1 -- No --> N_SendEmailNotification_Node2 N_SendEmailNotification_Node2 -- No --> E_SendEmailNotification
File: GCX016E.cbl
GIVEN: Complete email content has been built with all required information
WHEN: The system attempts to send the email notification
THEN: The system transmits the email to the freight forwarder's email address
File: GCX016E.cbl
GIVEN: Comprehensive email content has been built with all required information
WHEN: The system attempts to send the email notification
THEN:
  • The system transmits the email to the freight forwarder's email address
  • Captures delivery status
File: GCX016E.cbl
GIVEN: Complete email content has been built with all required information
WHEN: The system initiates email delivery to the freight forwarder
THEN: The system sends the CIH hold notification email to the specified recipient
βœ“ Consolidated Acceptance Criteria
  • The system receives delivery confirmation or failure notification → if delivery is successful, log the success; otherwise, initiate retry process
  • If the email delivery status → if email delivery is successful, log successful delivery, otherwise initiate retry process
  • If the final delivery status of the email notification → the system determines whether the email was successfully delivered or requires alternative 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_EmailDeliverySuccessful(["Start Step"]) E_EmailDeliverySuccessful(["End Step"]) N_EmailDeliverySuccessful_Node0{"The system receives delivery
confirmation or failure notification"}:::decision N_EmailDeliverySuccessful_Node0_action["If delivery is successful, log the
success otherwise, initiate retry
process"]:::main N_EmailDeliverySuccessful_Node0 -- Yes --> N_EmailDeliverySuccessful_Node0_action N_EmailDeliverySuccessful_Node0_action --> E_EmailDeliverySuccessful S_EmailDeliverySuccessful --> N_EmailDeliverySuccessful_Node0 N_EmailDeliverySuccessful_Node1{"The system evaluates the email
delivery status"}:::decision N_EmailDeliverySuccessful_Node1_action["If email delivery is successful,
log successful delivery, otherwise
initiate retry process"]:::main N_EmailDeliverySuccessful_Node1 -- Yes --> N_EmailDeliverySuccessful_Node1_action N_EmailDeliverySuccessful_Node1_action --> E_EmailDeliverySuccessful N_EmailDeliverySuccessful_Node0 -- No --> N_EmailDeliverySuccessful_Node1 N_EmailDeliverySuccessful_Node2{"The system evaluates the final
delivery status of the email
notification"}:::decision N_EmailDeliverySuccessful_Node2_action["The system determines whether the
email was successfully delivered or
requires alternative handling"]:::main N_EmailDeliverySuccessful_Node2 -- Yes --> N_EmailDeliverySuccessful_Node2_action N_EmailDeliverySuccessful_Node2_action --> E_EmailDeliverySuccessful N_EmailDeliverySuccessful_Node1 -- No --> N_EmailDeliverySuccessful_Node2 N_EmailDeliverySuccessful_Node2 -- No --> E_EmailDeliverySuccessful
File: GCX016E.cbl
GIVEN: An email notification has been sent to the freight forwarder
WHEN: The system receives delivery confirmation or failure notification
THEN: If delivery is successful, log the success; otherwise, initiate retry process
File: GCX016E.cbl
GIVEN: An email notification has been sent to the freight forwarder
WHEN: The system evaluates the email delivery status
THEN: If email delivery is successful, log successful delivery, otherwise initiate retry process
File: GCX016E.cbl
GIVEN: Email delivery has been attempted with retry logic applied
WHEN: The system evaluates the final delivery status of the email notification
THEN: The system determines whether the email was successfully delivered or requires alternative handling
βœ“ Consolidated Acceptance Criteria
  • The system processes the successful delivery confirmation → the system creates a log entry recording the successful email delivery with timestamp and recipient information
  • The delivery is successful → the system logs successful delivery and completes the email distribution process
  • The logging process executes → the successful delivery is recorded with timestamp and recipient information
  • The system logs the successful delivery → a delivery success record is created with timestamp and recipient 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_LogSuccessfulDelivery(["Start Step"]) E_LogSuccessfulDelivery(["End Step"]) N_LogSuccessfulDelivery_Node0{"The system processes the successful
delivery confirmation"}:::decision N_LogSuccessfulDelivery_Node0_action["The system creates a log entry
recording the successful email
delivery with timestamp and
recipient information"]:::main N_LogSuccessfulDelivery_Node0 -- Yes --> N_LogSuccessfulDelivery_Node0_action N_LogSuccessfulDelivery_Node0_action --> E_LogSuccessfulDelivery S_LogSuccessfulDelivery --> N_LogSuccessfulDelivery_Node0 N_LogSuccessfulDelivery_Node1{"The delivery is successful"}:::decision N_LogSuccessfulDelivery_Node1_action["The system logs successful delivery
and completes the email distribution
process"]:::main N_LogSuccessfulDelivery_Node1 -- Yes --> N_LogSuccessfulDelivery_Node1_action N_LogSuccessfulDelivery_Node1_action --> E_LogSuccessfulDelivery N_LogSuccessfulDelivery_Node0 -- No --> N_LogSuccessfulDelivery_Node1 N_LogSuccessfulDelivery_Node2{"The logging process executes"}:::decision N_LogSuccessfulDelivery_Node2_action["The successful delivery is recorded
with timestamp and recipient
information"]:::main N_LogSuccessfulDelivery_Node2 -- Yes --> N_LogSuccessfulDelivery_Node2_action N_LogSuccessfulDelivery_Node2_action --> E_LogSuccessfulDelivery N_LogSuccessfulDelivery_Node1 -- No --> N_LogSuccessfulDelivery_Node2 N_LogSuccessfulDelivery_Node3{"The system logs the successful
delivery"}:::decision N_LogSuccessfulDelivery_Node3_action["A delivery success record is
created with timestamp and recipient
information for audit purposes"]:::main N_LogSuccessfulDelivery_Node3 -- Yes --> N_LogSuccessfulDelivery_Node3_action N_LogSuccessfulDelivery_Node3_action --> E_LogSuccessfulDelivery N_LogSuccessfulDelivery_Node2 -- No --> N_LogSuccessfulDelivery_Node3 N_LogSuccessfulDelivery_Node3 -- No --> E_LogSuccessfulDelivery
File: GCX016E.cbl
GIVEN: Email delivery has been confirmed as successful
WHEN: The system processes the successful delivery confirmation
THEN:
  • The system creates a log entry recording the successful email delivery with timestamp
  • Recipient information
File: GCX016E.cbl
GIVEN: Email delivery attempt was made
WHEN: The delivery is successful
THEN:
  • The system logs successful delivery
  • Completes the email distribution process
File: GCX016E.cbl
GIVEN: A message delivery was successful
WHEN: The logging process executes
THEN:
  • The successful delivery is recorded with timestamp
  • Recipient information
File: GCX016E.cbl
GIVEN: Email delivery has been confirmed as successful
WHEN: The system logs the successful delivery
THEN:
  • A delivery success record is created with timestamp
  • Recipient information for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system has not reached the retry limit → the system attempts to resend the email notification
  • The system initiates retry processing → the system attempts to resend the email notification and tracks retry attempts
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RetryEmailDelivery(["Start Step"]) E_RetryEmailDelivery(["End Step"]) N_RetryEmailDelivery_Node0{"The system has not reached the
retry limit"}:::decision N_RetryEmailDelivery_Node0_action["The system attempts to resend the
email notification"]:::main N_RetryEmailDelivery_Node0 -- Yes --> N_RetryEmailDelivery_Node0_action N_RetryEmailDelivery_Node0_action --> E_RetryEmailDelivery S_RetryEmailDelivery --> N_RetryEmailDelivery_Node0 N_RetryEmailDelivery_Node1{"The system initiates retry
processing"}:::decision N_RetryEmailDelivery_Node1_action["The system attempts to resend the
email notification and tracks retry
attempts"]:::main N_RetryEmailDelivery_Node1 -- Yes --> N_RetryEmailDelivery_Node1_action N_RetryEmailDelivery_Node1_action --> E_RetryEmailDelivery N_RetryEmailDelivery_Node0 -- No --> N_RetryEmailDelivery_Node1 N_RetryEmailDelivery_Node1 -- No --> E_RetryEmailDelivery
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Email delivery has failed
WHEN: The system has not reached the retry limit
THEN: The system attempts to resend the email notification
File: GCX016E.cbl
GIVEN: Email notification delivery has failed
WHEN: The system initiates retry processing
THEN:
  • The system attempts to resend the email notification
  • Tracks retry attempts
βœ“ Consolidated Acceptance Criteria
  • The system checks the current retry count against the maximum retry limit → if retry limit is not reached, continue retry attempts; otherwise, log delivery failure and complete process
  • The system checks the retry attempt count against the maximum limit → if retry limit has not been reached, attempt delivery again, otherwise log delivery failure and route to error handler
  • The system checks if retry limit is reached → the system determines whether to attempt another retry or log delivery failure based on retry limit 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_RetryLimitReached(["Start Step"]) E_RetryLimitReached(["End Step"]) N_RetryLimitReached_Node0{"The system checks the current retry
count against the maximum retry
limit"}:::decision N_RetryLimitReached_Node0_action["If retry limit is not reached,
continue retry attempts otherwise,
log delivery failure and complete
process"]:::main N_RetryLimitReached_Node0 -- Yes --> N_RetryLimitReached_Node0_action N_RetryLimitReached_Node0_action --> E_RetryLimitReached S_RetryLimitReached --> N_RetryLimitReached_Node0 N_RetryLimitReached_Node1{"The system checks the retry attempt
count against the maximum limit"}:::decision N_RetryLimitReached_Node1_action["If retry limit has not been
reached, attempt delivery again,
otherwise log delivery failure and
route to error handler"]:::main N_RetryLimitReached_Node1 -- Yes --> N_RetryLimitReached_Node1_action N_RetryLimitReached_Node1_action --> E_RetryLimitReached N_RetryLimitReached_Node0 -- No --> N_RetryLimitReached_Node1 N_RetryLimitReached_Node2{"The system checks if retry limit is
reached"}:::decision N_RetryLimitReached_Node2_action["The system determines whether to
attempt another retry or log
delivery failure based on retry
limit configuration"]:::main N_RetryLimitReached_Node2 -- Yes --> N_RetryLimitReached_Node2_action N_RetryLimitReached_Node2_action --> E_RetryLimitReached N_RetryLimitReached_Node1 -- No --> N_RetryLimitReached_Node2 N_RetryLimitReached_Node2 -- No --> E_RetryLimitReached
File: GCX016E.cbl
GIVEN: Email delivery has failed and a retry attempt is being considered
WHEN: The system checks the current retry count against the maximum retry limit
THEN:
  • If retry limit is not reached, continue retry attempts; otherwise, log delivery failure
  • Complete process
File: GCX016E.cbl
GIVEN: Email delivery retry has been attempted
WHEN: The system checks the retry attempt count against the maximum limit
THEN:
  • If retry limit has not been reached, attempt delivery again, otherwise log delivery failure
  • Route to error handler
File: GCX016E.cbl
GIVEN: Email delivery has failed and retry counter has been incremented
WHEN: The system checks if retry limit is reached
THEN: The system determines whether to attempt another retry or log delivery failure based on retry limit configuration
βœ“ Consolidated Acceptance Criteria
  • The system processes the final delivery failure → the system creates a log entry recording the email delivery failure with error details and attempted recipient information
  • The system processes the final delivery failure → the system logs the delivery failure for audit and troubleshooting purposes
  • The rerouting also fails → the delivery failure should be logged
  • The system logs the delivery failure → a delivery failure record is created with error details and retry attempt count for 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_LogDeliveryFailure(["Start Step"]) E_LogDeliveryFailure(["End Step"]) N_LogDeliveryFailure_Node0{"The system processes the final
delivery failure"}:::decision N_LogDeliveryFailure_Node0_action["The system creates a log entry
recording the email delivery failure
with error details and attempted
recipient information"]:::main N_LogDeliveryFailure_Node0 -- Yes --> N_LogDeliveryFailure_Node0_action N_LogDeliveryFailure_Node0_action --> E_LogDeliveryFailure S_LogDeliveryFailure --> N_LogDeliveryFailure_Node0 N_LogDeliveryFailure_Node1{"The system processes the final
delivery failure"}:::decision N_LogDeliveryFailure_Node1_action["The system logs the delivery
failure for audit and
troubleshooting purposes"]:::main N_LogDeliveryFailure_Node1 -- Yes --> N_LogDeliveryFailure_Node1_action N_LogDeliveryFailure_Node1_action --> E_LogDeliveryFailure N_LogDeliveryFailure_Node0 -- No --> N_LogDeliveryFailure_Node1 N_LogDeliveryFailure_Node2{"The rerouting also fails"}:::decision N_LogDeliveryFailure_Node2_action["The delivery failure should be
logged"]:::main N_LogDeliveryFailure_Node2 -- Yes --> N_LogDeliveryFailure_Node2_action N_LogDeliveryFailure_Node2_action --> E_LogDeliveryFailure N_LogDeliveryFailure_Node1 -- No --> N_LogDeliveryFailure_Node2 N_LogDeliveryFailure_Node3{"The system logs the delivery
failure"}:::decision N_LogDeliveryFailure_Node3_action["A delivery failure record is
created with error details and retry
attempt count for troubleshooting
purposes"]:::main N_LogDeliveryFailure_Node3 -- Yes --> N_LogDeliveryFailure_Node3_action N_LogDeliveryFailure_Node3_action --> E_LogDeliveryFailure N_LogDeliveryFailure_Node2 -- No --> N_LogDeliveryFailure_Node3 N_LogDeliveryFailure_Node3 -- No --> E_LogDeliveryFailure
File: GCX016E.cbl
GIVEN: Email delivery has failed and retry limit has been reached
WHEN: The system processes the final delivery failure
THEN:
  • The system creates a log entry recording the email delivery failure with error details
  • Attempted recipient information
File: GCX016E.cbl
GIVEN: Email delivery has failed and retry limit has been reached
WHEN: The system processes the final delivery failure
THEN:
  • The system logs the delivery failure for audit
  • Troubleshooting purposes
File: GCX016E.cbl
GIVEN: A message delivery has failed and rerouting has been attempted
WHEN: The rerouting also fails
THEN: The delivery failure should be logged
File: GCX016E.cbl
GIVEN: Maximum retry attempts have been reached without successful email delivery
WHEN: The system logs the delivery failure
THEN:
  • A delivery failure record is created with error details
  • Retry attempt count for troubleshooting purposes
βœ“ Consolidated Acceptance Criteria
  • No S09 status segments are found in the database for the cargo → the system initializes empty S09A status arrays with zero occurrence counts and clears all status tracking variables
  • The system initializes status processing → empty status arrays are created to prepare for new status information
  • The system needs to continue processing without existing status data → empty status arrays are initialized to allow new 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_InitializeEmptyStatusArrays(["Start Step"]) E_InitializeEmptyStatusArrays(["End Step"]) N_InitializeEmptyStatusArrays_Node0{"No S09 status segments are found in
the database for the cargo"}:::decision N_InitializeEmptyStatusArrays_Node0_action["The system initializes empty S09A
status arrays with zero occurrence
counts and clears all status
tracking variables"]:::main N_InitializeEmptyStatusArrays_Node0 -- Yes --> N_InitializeEmptyStatusArrays_Node0_action N_InitializeEmptyStatusArrays_Node0_action --> E_InitializeEmptyStatusArrays S_InitializeEmptyStatusArrays --> N_InitializeEmptyStatusArrays_Node0 N_InitializeEmptyStatusArrays_Node1{"The system initializes status
processing"}:::decision N_InitializeEmptyStatusArrays_Node1_action["Empty status arrays are created to
prepare for new status information"]:::main N_InitializeEmptyStatusArrays_Node1 -- Yes --> N_InitializeEmptyStatusArrays_Node1_action N_InitializeEmptyStatusArrays_Node1_action --> E_InitializeEmptyStatusArrays N_InitializeEmptyStatusArrays_Node0 -- No --> N_InitializeEmptyStatusArrays_Node1 N_InitializeEmptyStatusArrays_Node2{"The system needs to continue
processing without existing status
data"}:::decision N_InitializeEmptyStatusArrays_Node2_action["Empty status arrays are initialized
to allow new status processing"]:::main N_InitializeEmptyStatusArrays_Node2 -- Yes --> N_InitializeEmptyStatusArrays_Node2_action N_InitializeEmptyStatusArrays_Node2_action --> E_InitializeEmptyStatusArrays N_InitializeEmptyStatusArrays_Node1 -- No --> N_InitializeEmptyStatusArrays_Node2 N_InitializeEmptyStatusArrays_Node2 -- No --> E_InitializeEmptyStatusArrays
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: No S09 status segments are found in the database for the cargo
THEN:
  • The system initializes empty s09a status arrays with zero occurrence counts
  • Clears all status tracking variables
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: No status segments exist for the cargo OR cargo record not found
WHEN: The system initializes status processing
THEN: Empty status arrays are created to prepare for new status information
File: GCX016E.cbl
GIVEN: No S09 status segments were found or a database error occurred
WHEN: The system needs to continue processing without existing status data
THEN: Empty status arrays are initialized to allow new status processing
βœ“ Consolidated Acceptance Criteria
  • The system retrieves the status segments → the system populates the S09A status arrays with disposition codes, quantities, entry numbers, and sequence information from each database 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_PopulateS09AStatusArraysfromDatabase(["Start Step"]) E_PopulateS09AStatusArraysfromDatabase(["End Step"]) N_PopulateS09AStatusArraysfromDatabase_Node0{"The system retrieves the status
segments"}:::decision N_PopulateS09AStatusArraysfromDatabase_Node0_action["The system populates the S09A
status arrays with disposition
codes, quantities, entry numbers,
and sequence information from each
database segment"]:::main N_PopulateS09AStatusArraysfromDatabase_Node0 -- Yes --> N_PopulateS09AStatusArraysfromDatabase_Node0_action N_PopulateS09AStatusArraysfromDatabase_Node0_action --> E_PopulateS09AStatusArraysfromDatabase S_PopulateS09AStatusArraysfromDatabase --> N_PopulateS09AStatusArraysfromDatabase_Node0 N_PopulateS09AStatusArraysfromDatabase_Node0 -- No --> E_PopulateS09AStatusArraysfromDatabase
File: GCX016E.cbl
GIVEN: S09 status segments exist in the database for a cargo
WHEN: The system retrieves the status segments
THEN: The system populates the S09A status arrays with disposition codes, quantities, entry numbers, and sequence information from each database segment
βœ“ Consolidated Acceptance Criteria
  • Processing status array data → the system identifies and tracks the maximum sequence number for each status array type to determine the next available sequence number for new entries
  • The system processes sequence numbers → the maximum sequence number is tracked for future segment creation
  • The system encounters sequence numbers in the segments → the maximum sequence numbers are tracked and stored 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_TrackMaximumSequenceNumbers(["Start Step"]) E_TrackMaximumSequenceNumbers(["End Step"]) N_TrackMaximumSequenceNumbers_Node0{"Processing status array data"}:::decision N_TrackMaximumSequenceNumbers_Node0_action["The system identifies and tracks
the maximum sequence number for each
status array type to determine the
next available sequence number for
new entries"]:::main N_TrackMaximumSequenceNumbers_Node0 -- Yes --> N_TrackMaximumSequenceNumbers_Node0_action N_TrackMaximumSequenceNumbers_Node0_action --> E_TrackMaximumSequenceNumbers S_TrackMaximumSequenceNumbers --> N_TrackMaximumSequenceNumbers_Node0 N_TrackMaximumSequenceNumbers_Node1{"The system processes sequence
numbers"}:::decision N_TrackMaximumSequenceNumbers_Node1_action["The maximum sequence number is
tracked for future segment creation"]:::main N_TrackMaximumSequenceNumbers_Node1 -- Yes --> N_TrackMaximumSequenceNumbers_Node1_action N_TrackMaximumSequenceNumbers_Node1_action --> E_TrackMaximumSequenceNumbers N_TrackMaximumSequenceNumbers_Node0 -- No --> N_TrackMaximumSequenceNumbers_Node1 N_TrackMaximumSequenceNumbers_Node2{"The system encounters sequence
numbers in the segments"}:::decision N_TrackMaximumSequenceNumbers_Node2_action["The maximum sequence numbers are
tracked and stored for future
reference"]:::main N_TrackMaximumSequenceNumbers_Node2 -- Yes --> N_TrackMaximumSequenceNumbers_Node2_action N_TrackMaximumSequenceNumbers_Node2_action --> E_TrackMaximumSequenceNumbers N_TrackMaximumSequenceNumbers_Node1 -- No --> N_TrackMaximumSequenceNumbers_Node2 N_TrackMaximumSequenceNumbers_Node2 -- No --> E_TrackMaximumSequenceNumbers
File: GCX016E.cbl
GIVEN: Status arrays contain existing disposition code entries
WHEN: Processing status array data
THEN:
  • The system identifies
  • Tracks the maximum sequence number for each status array type to determine the next available sequence number for new entries
File: GCX016E.cbl
GIVEN: Status arrays are populated from database segments
WHEN: The system processes sequence numbers
THEN: The maximum sequence number is tracked for future segment creation
File: GCX016E.cbl
GIVEN: Status segments are being processed with sequence numbers
WHEN: The system encounters sequence numbers in the segments
THEN:
  • The maximum sequence numbers are tracked
  • Stored for future reference
βœ“ Consolidated Acceptance Criteria
  • The system searches existing status arrays → if a disposition code with identical code, entry number, and quantity already exists, the system flags it as a duplicate; otherwise, it is marked as a 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_DuplicateCodeCheck(["Start Step"]) E_DuplicateCodeCheck(["End Step"]) N_DuplicateCodeCheck_Node0{"The system searches existing status
arrays"}:::decision N_DuplicateCodeCheck_Node0_action["If a disposition code with
identical code, entry number, and
quantity already exists, the system
flags it as a duplicate otherwise,
it is marked as a new code"]:::main N_DuplicateCodeCheck_Node0 -- Yes --> N_DuplicateCodeCheck_Node0_action N_DuplicateCodeCheck_Node0_action --> E_DuplicateCodeCheck S_DuplicateCodeCheck --> N_DuplicateCodeCheck_Node0 N_DuplicateCodeCheck_Node0 -- No --> E_DuplicateCodeCheck
File: GCX016E.cbl
GIVEN: A new disposition code is being processed for a cargo
WHEN: The system searches existing status arrays
THEN: If a disposition code with identical code, entry number, and quantity already exists, the system flags it as a duplicate; otherwise, it is marked as a new code
βœ“ Consolidated Acceptance Criteria
  • Adding the code to the status array → the system creates a new status array entry with the disposition code, quantity, entry number, date/time, and assigns the next sequential number while incrementing the array occurrence 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_AddNewStatusEntrytoArray(["Start Step"]) E_AddNewStatusEntrytoArray(["End Step"]) N_AddNewStatusEntrytoArray_Node0{"Adding the code to the status array"}:::decision N_AddNewStatusEntrytoArray_Node0_action["The system creates a new status
array entry with the disposition
code, quantity, entry number,
datetime, and assigns the next
sequential number while incrementing
the array occurrence count"]:::main N_AddNewStatusEntrytoArray_Node0 -- Yes --> N_AddNewStatusEntrytoArray_Node0_action N_AddNewStatusEntrytoArray_Node0_action --> E_AddNewStatusEntrytoArray S_AddNewStatusEntrytoArray --> N_AddNewStatusEntrytoArray_Node0 N_AddNewStatusEntrytoArray_Node0 -- No --> E_AddNewStatusEntrytoArray
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is confirmed as new and not duplicate
WHEN: Adding the code to the status array
THEN: The system creates a new status array entry with the disposition code, quantity, entry number, date/time, and assigns the next sequential number while incrementing the array occurrence count
βœ“ Consolidated Acceptance Criteria
  • Processing the disposition code update → the system updates the existing status array entry with new quantity, date/time, and other relevant information while maintaining the original 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_UpdateExistingStatusEntry(["Start Step"]) E_UpdateExistingStatusEntry(["End Step"]) N_UpdateExistingStatusEntry_Node0{"Processing the disposition code
update"}:::decision N_UpdateExistingStatusEntry_Node0_action["The system updates the existing
status array entry with new
quantity, datetime, and other
relevant information while
maintaining the original sequence
number"]:::main N_UpdateExistingStatusEntry_Node0 -- Yes --> N_UpdateExistingStatusEntry_Node0_action N_UpdateExistingStatusEntry_Node0_action --> E_UpdateExistingStatusEntry S_UpdateExistingStatusEntry --> N_UpdateExistingStatusEntry_Node0 N_UpdateExistingStatusEntry_Node0 -- No --> E_UpdateExistingStatusEntry
File: GCX016E.cbl
GIVEN: A disposition code matches an existing entry in the status array
WHEN: Processing the disposition code update
THEN: The system updates the existing status array entry with new quantity, date/time, and other relevant information while maintaining the original sequence number
βœ“ Consolidated Acceptance Criteria
  • Adding the primary disposition code to the status array → the system identifies and removes any existing counterpart disposition codes from the status arrays and decrements the occurrence counts 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_RemoveCounterpartDispositionCodes(["Start Step"]) E_RemoveCounterpartDispositionCodes(["End Step"]) N_RemoveCounterpartDispositionCodes_Node0{"Adding the primary disposition code
to the status array"}:::decision N_RemoveCounterpartDispositionCodes_Node0_action["The system identifies and removes
any existing counterpart disposition
codes from the status arrays and
decrements the occurrence counts
accordingly"]:::main N_RemoveCounterpartDispositionCodes_Node0 -- Yes --> N_RemoveCounterpartDispositionCodes_Node0_action N_RemoveCounterpartDispositionCodes_Node0_action --> E_RemoveCounterpartDispositionCodes S_RemoveCounterpartDispositionCodes --> N_RemoveCounterpartDispositionCodes_Node0 N_RemoveCounterpartDispositionCodes_Node0 -- No --> E_RemoveCounterpartDispositionCodes
File: GCX016E.cbl
GIVEN: A disposition code has defined counterpart codes in the system
WHEN: Adding the primary disposition code to the status array
THEN:
  • The system identifies
  • Removes any existing counterpart disposition codes from the status arrays
  • Decrements the occurrence counts accordingly
βœ“ Consolidated Acceptance Criteria
  • Finalizing status array changes → the system reorganizes the arrays by reassigning sequential numbers starting from 1, compacting the arrays to eliminate empty slots, and updating occurrence 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_ReorganizeArraySequences(["Start Step"]) E_ReorganizeArraySequences(["End Step"]) N_ReorganizeArraySequences_Node0{"Finalizing status array changes"}:::decision N_ReorganizeArraySequences_Node0_action["The system reorganizes the arrays
by reassigning sequential numbers
starting from 1, compacting the
arrays to eliminate empty slots, and
updating occurrence counts"]:::main N_ReorganizeArraySequences_Node0 -- Yes --> N_ReorganizeArraySequences_Node0_action N_ReorganizeArraySequences_Node0_action --> E_ReorganizeArraySequences S_ReorganizeArraySequences --> N_ReorganizeArraySequences_Node0 N_ReorganizeArraySequences_Node0 -- No --> E_ReorganizeArraySequences
File: GCX016E.cbl
GIVEN: Status array entries have been added, updated, or removed
WHEN: Finalizing status array changes
THEN: The system reorganizes the arrays by reassigning sequential numbers starting from 1, compacting the arrays to eliminate empty slots, and updating occurrence counts
βœ“ Consolidated Acceptance Criteria
  • Calculating the impact of changes → the system determines how the changes affect release quantities, hold status, and overall cargo processing status based on the disposition code types 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_CalculateStatusArrayChanges(["Start Step"]) E_CalculateStatusArrayChanges(["End Step"]) N_CalculateStatusArrayChanges_Node0{"Calculating the impact of changes"}:::decision N_CalculateStatusArrayChanges_Node0_action["The system determines how the
changes affect release quantities,
hold status, and overall cargo
processing status based on the
disposition code types and
quantities"]:::main N_CalculateStatusArrayChanges_Node0 -- Yes --> N_CalculateStatusArrayChanges_Node0_action N_CalculateStatusArrayChanges_Node0_action --> E_CalculateStatusArrayChanges S_CalculateStatusArrayChanges --> N_CalculateStatusArrayChanges_Node0 N_CalculateStatusArrayChanges_Node0 -- No --> E_CalculateStatusArrayChanges
File: GCX016E.cbl
GIVEN: Status arrays have been modified with new or updated disposition codes
WHEN: Calculating the impact of changes
THEN:
  • The system determines how the changes affect release quantities, hold status, and overall cargo processing status based on the disposition code types
  • Quantities
βœ“ Consolidated Acceptance Criteria
  • Preparing to update the database → the system converts the S09A status arrays into S09 database segment format with proper field mapping, data formatting, and 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_ConvertArraystoDatabaseFormat(["Start Step"]) E_ConvertArraystoDatabaseFormat(["End Step"]) N_ConvertArraystoDatabaseFormat_Node0{"Preparing to update the database"}:::decision N_ConvertArraystoDatabaseFormat_Node0_action["The system converts the S09A status
arrays into S09 database segment
format with proper field mapping,
data formatting, and segment
structure"]:::main N_ConvertArraystoDatabaseFormat_Node0 -- Yes --> N_ConvertArraystoDatabaseFormat_Node0_action N_ConvertArraystoDatabaseFormat_Node0_action --> E_ConvertArraystoDatabaseFormat S_ConvertArraystoDatabaseFormat --> N_ConvertArraystoDatabaseFormat_Node0 N_ConvertArraystoDatabaseFormat_Node0 -- No --> E_ConvertArraystoDatabaseFormat
File: GCX016E.cbl
GIVEN: Status arrays have been processed and finalized in memory
WHEN: Preparing to update the database
THEN: The system converts the S09A status arrays into S09 database segment format with proper field mapping, data formatting, and segment structure
βœ“ Consolidated Acceptance Criteria
  • Updating the cargo record in the database → the system replaces the existing S09 status segments with the updated segments and commits the changes to maintain data integrity
  • The system replaces status segments in the database → all modified status information is persisted to the GCSUSS09 database
  • The system updates the cargo record → the system replaces the existing S09 status segments in the database with the updated segments containing current 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_ReplaceStatusSegmentsinDatabase(["Start Step"]) E_ReplaceStatusSegmentsinDatabase(["End Step"]) N_ReplaceStatusSegmentsinDatabase_Node0{"Updating the cargo record in the
database"}:::decision N_ReplaceStatusSegmentsinDatabase_Node0_action["The system replaces the existing
S09 status segments with the updated
segments and commits the changes to
maintain data integrity"]:::main N_ReplaceStatusSegmentsinDatabase_Node0 -- Yes --> N_ReplaceStatusSegmentsinDatabase_Node0_action N_ReplaceStatusSegmentsinDatabase_Node0_action --> E_ReplaceStatusSegmentsinDatabase S_ReplaceStatusSegmentsinDatabase --> N_ReplaceStatusSegmentsinDatabase_Node0 N_ReplaceStatusSegmentsinDatabase_Node1{"The system replaces status segments
in the database"}:::decision N_ReplaceStatusSegmentsinDatabase_Node1_action["All modified status information is
persisted to the GCSUSS09 database"]:::main N_ReplaceStatusSegmentsinDatabase_Node1 -- Yes --> N_ReplaceStatusSegmentsinDatabase_Node1_action N_ReplaceStatusSegmentsinDatabase_Node1_action --> E_ReplaceStatusSegmentsinDatabase N_ReplaceStatusSegmentsinDatabase_Node0 -- No --> N_ReplaceStatusSegmentsinDatabase_Node1 N_ReplaceStatusSegmentsinDatabase_Node2{"The system updates the cargo record"}:::decision N_ReplaceStatusSegmentsinDatabase_Node2_action["The system replaces the existing
S09 status segments in the database
with the updated segments containing
current disposition code information"]:::main N_ReplaceStatusSegmentsinDatabase_Node2 -- Yes --> N_ReplaceStatusSegmentsinDatabase_Node2_action N_ReplaceStatusSegmentsinDatabase_Node2_action --> E_ReplaceStatusSegmentsinDatabase N_ReplaceStatusSegmentsinDatabase_Node1 -- No --> N_ReplaceStatusSegmentsinDatabase_Node2 N_ReplaceStatusSegmentsinDatabase_Node2 -- No --> E_ReplaceStatusSegmentsinDatabase
File: GCX016E.cbl
GIVEN: Status segments have been converted to database format
WHEN: Updating the cargo record in the database
THEN:
  • The system replaces the existing s09 status segments with the updated segments
  • Commits the changes to maintain data integrity
File: GCX016E.cbl
GIVEN: Status segments have been formatted for database storage AND car ID has been updated
WHEN: The system replaces status segments in the database
THEN: All modified status information is persisted to the GCSUSS09 database
File: GCX016E.cbl
GIVEN: Status arrays have been converted to database format
WHEN: The system updates the cargo record
THEN: The system replaces the existing S09 status segments in the database with the updated segments containing current disposition code information
βœ“ Consolidated Acceptance Criteria
  • Processing car ID updates → the system updates the cargo record with car ID information from the N7 segment, including equipment initial and number, while preserving existing data for CPRS shipments
  • Car ID update is performed → current car identification data is added to database 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_UpdateCarIDInformation(["Start Step"]) E_UpdateCarIDInformation(["End Step"]) N_UpdateCarIDInformation_Node0{"Processing car ID updates"}:::decision N_UpdateCarIDInformation_Node0_action["The system updates the cargo record
with car ID information from the N7
segment, including equipment initial
and number, while preserving
existing data for CPRS shipments"]:::main N_UpdateCarIDInformation_Node0 -- Yes --> N_UpdateCarIDInformation_Node0_action N_UpdateCarIDInformation_Node0_action --> E_UpdateCarIDInformation S_UpdateCarIDInformation --> N_UpdateCarIDInformation_Node0 N_UpdateCarIDInformation_Node1{"Car ID update is performed"}:::decision N_UpdateCarIDInformation_Node1_action["Current car identification data is
added to database segment"]:::main N_UpdateCarIDInformation_Node1 -- Yes --> N_UpdateCarIDInformation_Node1_action N_UpdateCarIDInformation_Node1_action --> E_UpdateCarIDInformation N_UpdateCarIDInformation_Node0 -- No --> N_UpdateCarIDInformation_Node1 N_UpdateCarIDInformation_Node1 -- No --> E_UpdateCarIDInformation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo is not a CPRS shipment and N7 equipment data is available
WHEN: Processing car ID updates
THEN:
  • The system updates the cargo record with car id information from the n7 segment, including equipment initial
  • Number, while preserving existing data for cprs shipments
File: GCX016E.cbl
GIVEN: Database segment requires car ID information
WHEN: Car ID update is performed
THEN: Current car identification data is added to database segment
βœ“ Consolidated Acceptance Criteria
  • Completing status array processing → the system creates history records documenting the status changes, including timestamps, disposition codes added or removed, and the resulting 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_TrackStatusChangeHistory(["Start Step"]) E_TrackStatusChangeHistory(["End Step"]) N_TrackStatusChangeHistory_Node0{"Completing status array processing"}:::decision N_TrackStatusChangeHistory_Node0_action["The system creates history records
documenting the status changes,
including timestamps, disposition
codes added or removed, and the
resulting cargo status"]:::main N_TrackStatusChangeHistory_Node0 -- Yes --> N_TrackStatusChangeHistory_Node0_action N_TrackStatusChangeHistory_Node0_action --> E_TrackStatusChangeHistory S_TrackStatusChangeHistory --> N_TrackStatusChangeHistory_Node0 N_TrackStatusChangeHistory_Node0 -- No --> E_TrackStatusChangeHistory
File: GCX016E.cbl
GIVEN: Status arrays have been modified for a cargo
WHEN: Completing status array processing
THEN: The system creates history records documenting the status changes, including timestamps, disposition codes added or removed, and the resulting cargo status
βœ“ Consolidated Acceptance Criteria
  • The system checks for associated follower manifests → all linked follower manifests are identified and prepared 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_CheckforFollowerManifests(["Start Step"]) E_CheckforFollowerManifests(["End Step"]) N_CheckforFollowerManifests_Node0{"The system checks for associated
follower manifests"}:::decision N_CheckforFollowerManifests_Node0_action["All linked follower manifests are
identified and prepared for
processing"]:::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: GCX016E.cbl
GIVEN: A lead manifest is being processed
WHEN: The system checks for associated follower manifests
THEN:
  • All linked follower manifests are identified
  • Prepared for processing
βœ“ Consolidated Acceptance Criteria
  • The lead manifest CCN is compared to the current US CCN key → if the lead manifest CCN differs from the US CCN key, special action processing is initiated, otherwise standard follower processing continues
  • The system compares the lead manifest CCN with the US CCN key → if the lead manifest CCN differs from the US CCN key, proceed with follower manifest processing, otherwise complete multi-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_LeadManifestCCNdiffersfromUSCCNKey(["Start Step"]) E_LeadManifestCCNdiffersfromUSCCNKey(["End Step"]) N_LeadManifestCCNdiffersfromUSCCNKey_Node0{"The lead manifest CCN is compared
to the current US CCN key"}:::decision N_LeadManifestCCNdiffersfromUSCCNKey_Node0_action["If the lead manifest CCN differs
from the US CCN key, special action
processing is initiated, otherwise
standard follower processing
continues"]:::main N_LeadManifestCCNdiffersfromUSCCNKey_Node0 -- Yes --> N_LeadManifestCCNdiffersfromUSCCNKey_Node0_action N_LeadManifestCCNdiffersfromUSCCNKey_Node0_action --> E_LeadManifestCCNdiffersfromUSCCNKey S_LeadManifestCCNdiffersfromUSCCNKey --> N_LeadManifestCCNdiffersfromUSCCNKey_Node0 N_LeadManifestCCNdiffersfromUSCCNKey_Node1{"The system compares the lead
manifest CCN with the US CCN key"}:::decision N_LeadManifestCCNdiffersfromUSCCNKey_Node1_action["If the lead manifest CCN differs
from the US CCN key, proceed with
follower manifest processing,
otherwise complete multi-manifest
processing"]:::main N_LeadManifestCCNdiffersfromUSCCNKey_Node1 -- Yes --> N_LeadManifestCCNdiffersfromUSCCNKey_Node1_action N_LeadManifestCCNdiffersfromUSCCNKey_Node1_action --> E_LeadManifestCCNdiffersfromUSCCNKey N_LeadManifestCCNdiffersfromUSCCNKey_Node0 -- No --> N_LeadManifestCCNdiffersfromUSCCNKey_Node1 N_LeadManifestCCNdiffersfromUSCCNKey_Node1 -- No --> E_LeadManifestCCNdiffersfromUSCCNKey
File: GCX016E.cbl
GIVEN: A follower manifest is identified for processing AND a lead manifest CCN exists
WHEN: The lead manifest CCN is compared to the current US CCN key
THEN: If the lead manifest CCN differs from the US CCN key, special action processing is initiated, otherwise standard follower processing continues
File: GCX016E.cbl
GIVEN: A lead manifest with an associated CCN and a current US CCN key are available
WHEN: The system compares the lead manifest CCN with the US CCN key
THEN: If the lead manifest CCN differs from the US CCN key, proceed with follower manifest processing, otherwise complete multi-manifest processing
βœ“ Consolidated Acceptance Criteria
  • The system prepares the follower manifest message → a special action code of 350 is set in the message for proper 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_Prepare350SpecialActionMessages(["Start Step"]) E_Prepare350SpecialActionMessages(["End Step"]) N_Prepare350SpecialActionMessages_Node0{"The system prepares the follower
manifest message"}:::decision N_Prepare350SpecialActionMessages_Node0_action["A special action code of 350 is set
in the message for proper routing
and processing"]:::main N_Prepare350SpecialActionMessages_Node0 -- Yes --> N_Prepare350SpecialActionMessages_Node0_action N_Prepare350SpecialActionMessages_Node0_action --> E_Prepare350SpecialActionMessages S_Prepare350SpecialActionMessages --> N_Prepare350SpecialActionMessages_Node0 N_Prepare350SpecialActionMessages_Node0 -- No --> E_Prepare350SpecialActionMessages
File: GCX016E.cbl
GIVEN: A follower manifest requires processing AND the lead manifest CCN differs from US CCN AND the message type is GCW016
WHEN: The system prepares the follower manifest message
THEN:
  • A special action code of 350 is set in the message for proper routing
  • Processing
βœ“ Consolidated Acceptance Criteria
  • The message content is assembled → all relevant disposition codes are included in the follower manifest message
  • The system includes disposition codes in the message → all relevant disposition codes are included in the follower manifest message 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_IncludeDispositionCodesinMessage(["Start Step"]) E_IncludeDispositionCodesinMessage(["End Step"]) N_IncludeDispositionCodesinMessage_Node0{"The message content is assembled"}:::decision N_IncludeDispositionCodesinMessage_Node0_action["All relevant disposition codes are
included in the follower manifest
message"]:::main N_IncludeDispositionCodesinMessage_Node0 -- Yes --> N_IncludeDispositionCodesinMessage_Node0_action N_IncludeDispositionCodesinMessage_Node0_action --> E_IncludeDispositionCodesinMessage S_IncludeDispositionCodesinMessage --> N_IncludeDispositionCodesinMessage_Node0 N_IncludeDispositionCodesinMessage_Node1{"The system includes disposition
codes in the message"}:::decision N_IncludeDispositionCodesinMessage_Node1_action["All relevant disposition codes are
included in the follower manifest
message for downstream processing"]:::main N_IncludeDispositionCodesinMessage_Node1 -- Yes --> N_IncludeDispositionCodesinMessage_Node1_action N_IncludeDispositionCodesinMessage_Node1_action --> E_IncludeDispositionCodesinMessage N_IncludeDispositionCodesinMessage_Node0 -- No --> N_IncludeDispositionCodesinMessage_Node1 N_IncludeDispositionCodesinMessage_Node1 -- No --> E_IncludeDispositionCodesinMessage
File: GCX016E.cbl
GIVEN: A follower manifest message is being prepared AND disposition codes exist for the cargo
WHEN: The message content is assembled
THEN: All relevant disposition codes are included in the follower manifest message
File: GCX016E.cbl
GIVEN: A follower manifest message is being prepared and disposition codes exist
WHEN: The system includes disposition codes in the message
THEN: All relevant disposition codes are included in the follower manifest message for downstream processing
βœ“ Consolidated Acceptance Criteria
  • The message content is assembled → all relevant quantity information is included in the follower manifest 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_IncludeQuantitiesinMessage(["Start Step"]) E_IncludeQuantitiesinMessage(["End Step"]) N_IncludeQuantitiesinMessage_Node0{"The message content is assembled"}:::decision N_IncludeQuantitiesinMessage_Node0_action["All relevant quantity information
is included in the follower manifest
message"]:::main N_IncludeQuantitiesinMessage_Node0 -- Yes --> N_IncludeQuantitiesinMessage_Node0_action N_IncludeQuantitiesinMessage_Node0_action --> E_IncludeQuantitiesinMessage S_IncludeQuantitiesinMessage --> N_IncludeQuantitiesinMessage_Node0 N_IncludeQuantitiesinMessage_Node0 -- No --> E_IncludeQuantitiesinMessage
File: GCX016E.cbl
GIVEN: A follower manifest message is being prepared AND quantity information exists
WHEN: The message content is assembled
THEN: All relevant quantity information is included in the follower manifest message
βœ“ Consolidated Acceptance Criteria
  • The message content is assembled → all relevant entry numbers are included in the follower manifest message
  • The system includes entry numbers in the message → all relevant entry numbers are included in the follower manifest 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_IncludeEntryNumbersinMessage(["Start Step"]) E_IncludeEntryNumbersinMessage(["End Step"]) N_IncludeEntryNumbersinMessage_Node0{"The message content is assembled"}:::decision N_IncludeEntryNumbersinMessage_Node0_action["All relevant entry numbers are
included in the follower manifest
message"]:::main N_IncludeEntryNumbersinMessage_Node0 -- Yes --> N_IncludeEntryNumbersinMessage_Node0_action N_IncludeEntryNumbersinMessage_Node0_action --> E_IncludeEntryNumbersinMessage S_IncludeEntryNumbersinMessage --> N_IncludeEntryNumbersinMessage_Node0 N_IncludeEntryNumbersinMessage_Node1{"The system includes entry numbers
in the message"}:::decision N_IncludeEntryNumbersinMessage_Node1_action["All relevant entry numbers are
included in the follower manifest
message"]:::main N_IncludeEntryNumbersinMessage_Node1 -- Yes --> N_IncludeEntryNumbersinMessage_Node1_action N_IncludeEntryNumbersinMessage_Node1_action --> E_IncludeEntryNumbersinMessage N_IncludeEntryNumbersinMessage_Node0 -- No --> N_IncludeEntryNumbersinMessage_Node1 N_IncludeEntryNumbersinMessage_Node1 -- No --> E_IncludeEntryNumbersinMessage
File: GCX016E.cbl
GIVEN: A follower manifest message is being prepared AND entry numbers exist
WHEN: The message content is assembled
THEN: All relevant entry numbers are included in the follower manifest message
File: GCX016E.cbl
GIVEN: A follower manifest message is being prepared and entry numbers exist
WHEN: The system includes entry numbers in the message
THEN: All relevant entry numbers are included in the follower manifest message
βœ“ Consolidated Acceptance Criteria
  • The system is ready to process the follower manifest → a GCT0162E transaction is spawned with the prepared message content for follower manifest processing
  • The system spawns the GCT0162E transaction → the GCT0162E transaction is initiated with the prepared follower manifest message 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_SpawnGCT0162ETransactionforFollowerProcessing(["Start Step"]) E_SpawnGCT0162ETransactionforFollowerProcessing(["End Step"]) N_SpawnGCT0162ETransactionforFollowerProcessing_Node0{"The system is ready to process the
follower manifest"}:::decision N_SpawnGCT0162ETransactionforFollowerProcessing_Node0_action["A GCT0162E transaction is spawned
with the prepared message content
for follower manifest processing"]:::main N_SpawnGCT0162ETransactionforFollowerProcessing_Node0 -- Yes --> N_SpawnGCT0162ETransactionforFollowerProcessing_Node0_action N_SpawnGCT0162ETransactionforFollowerProcessing_Node0_action --> E_SpawnGCT0162ETransactionforFollowerProcessing S_SpawnGCT0162ETransactionforFollowerProcessing --> N_SpawnGCT0162ETransactionforFollowerProcessing_Node0 N_SpawnGCT0162ETransactionforFollowerProcessing_Node1{"The system spawns the GCT0162E
transaction"}:::decision N_SpawnGCT0162ETransactionforFollowerProcessing_Node1_action["The GCT0162E transaction is
initiated with the prepared follower
manifest message for processing"]:::main N_SpawnGCT0162ETransactionforFollowerProcessing_Node1 -- Yes --> N_SpawnGCT0162ETransactionforFollowerProcessing_Node1_action N_SpawnGCT0162ETransactionforFollowerProcessing_Node1_action --> E_SpawnGCT0162ETransactionforFollowerProcessing N_SpawnGCT0162ETransactionforFollowerProcessing_Node0 -- No --> N_SpawnGCT0162ETransactionforFollowerProcessing_Node1 N_SpawnGCT0162ETransactionforFollowerProcessing_Node1 -- No --> E_SpawnGCT0162ETransactionforFollowerProcessing
File: GCX016E.cbl
GIVEN: A follower manifest message has been prepared with all required information
WHEN: The system is ready to process the follower manifest
THEN: A GCT0162E transaction is spawned with the prepared message content for follower manifest processing
File: GCX016E.cbl
GIVEN: A follower manifest message has been prepared with all required data
WHEN: The system spawns the GCT0162E transaction
THEN: The GCT0162E transaction is initiated with the prepared follower manifest message for processing
βœ“ Consolidated Acceptance Criteria
  • The follower manifest processing is completed → the follower manifest is properly linked to its lead manifest for tracking and reporting 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_LinkFollowertoLeadManifest(["Start Step"]) E_LinkFollowertoLeadManifest(["End Step"]) N_LinkFollowertoLeadManifest_Node0{"The follower manifest processing is
completed"}:::decision N_LinkFollowertoLeadManifest_Node0_action["The follower manifest is properly
linked to its lead manifest for
tracking and reporting purposes"]:::main N_LinkFollowertoLeadManifest_Node0 -- Yes --> N_LinkFollowertoLeadManifest_Node0_action N_LinkFollowertoLeadManifest_Node0_action --> E_LinkFollowertoLeadManifest S_LinkFollowertoLeadManifest --> N_LinkFollowertoLeadManifest_Node0 N_LinkFollowertoLeadManifest_Node0 -- No --> E_LinkFollowertoLeadManifest
File: GCX016E.cbl
GIVEN: A follower manifest is being processed AND a lead manifest exists
WHEN: The follower manifest processing is completed
THEN:
  • The follower manifest is properly linked to its lead manifest for tracking
  • Reporting purposes
βœ“ Consolidated Acceptance Criteria
  • The multi-manifest processing is completing → the comprehensive cargo tracking system is updated with all manifest relationships and cargo status information
  • The system updates comprehensive cargo tracking → the cargo tracking system is updated with complete follower manifest information for full visibility
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateComprehensiveCargoTracking(["Start Step"]) E_UpdateComprehensiveCargoTracking(["End Step"]) N_UpdateComprehensiveCargoTracking_Node0{"The multi-manifest processing is
completing"}:::decision N_UpdateComprehensiveCargoTracking_Node0_action["The comprehensive cargo tracking
system is updated with all manifest
relationships and cargo status
information"]:::main N_UpdateComprehensiveCargoTracking_Node0 -- Yes --> N_UpdateComprehensiveCargoTracking_Node0_action N_UpdateComprehensiveCargoTracking_Node0_action --> E_UpdateComprehensiveCargoTracking S_UpdateComprehensiveCargoTracking --> N_UpdateComprehensiveCargoTracking_Node0 N_UpdateComprehensiveCargoTracking_Node1{"The system updates comprehensive
cargo tracking"}:::decision N_UpdateComprehensiveCargoTracking_Node1_action["The cargo tracking system is
updated with complete follower
manifest information for full
visibility"]:::main N_UpdateComprehensiveCargoTracking_Node1 -- Yes --> N_UpdateComprehensiveCargoTracking_Node1_action N_UpdateComprehensiveCargoTracking_Node1_action --> E_UpdateComprehensiveCargoTracking N_UpdateComprehensiveCargoTracking_Node0 -- No --> N_UpdateComprehensiveCargoTracking_Node1 N_UpdateComprehensiveCargoTracking_Node1 -- No --> E_UpdateComprehensiveCargoTracking
File: GCX016E.cbl
GIVEN: All follower manifests have been processed and linked to their lead manifest
WHEN: The multi-manifest processing is completing
THEN:
  • The comprehensive cargo tracking system is updated with all manifest relationships
  • Cargo status information
File: GCX016E.cbl
GIVEN: A follower manifest has been processed and linked to its lead manifest
WHEN: The system updates comprehensive cargo tracking
THEN: The cargo tracking system is updated with complete follower manifest information for full visibility
βœ“ Consolidated Acceptance Criteria
  • If cargo routing and destination information → the cargo is flagged for transit processing if it meets US-Canada-US movement 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_IdentifyTransitCargo(["Start Step"]) E_IdentifyTransitCargo(["End Step"]) N_IdentifyTransitCargo_Node0{"The system evaluates cargo routing
and destination information"}:::decision N_IdentifyTransitCargo_Node0_action["The cargo is flagged for transit
processing if it meets US-Canada-US
movement criteria"]:::main N_IdentifyTransitCargo_Node0 -- Yes --> N_IdentifyTransitCargo_Node0_action N_IdentifyTransitCargo_Node0_action --> E_IdentifyTransitCargo S_IdentifyTransitCargo --> N_IdentifyTransitCargo_Node0 N_IdentifyTransitCargo_Node0 -- No --> E_IdentifyTransitCargo
File: GCX016E.cbl
GIVEN: A cargo record is being processed
WHEN:
  • The system evaluates cargo routing
  • Destination information
THEN: The cargo is flagged for transit processing if it meets US-Canada-US movement criteria
βœ“ Consolidated Acceptance Criteria
  • The system checks if the cargo routing involves movement through Canadian territory → the cargo is processed for Canadian transit if routing goes through Canada, otherwise standard 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_CargoMovingThroughCanada(["Start Step"]) E_CargoMovingThroughCanada(["End Step"]) N_CargoMovingThroughCanada_Node0{"The system checks if the cargo
routing involves movement through
Canadian territory"}:::decision N_CargoMovingThroughCanada_Node0_action["The cargo is processed for Canadian
transit if routing goes through
Canada, otherwise standard
processing continues"]:::main N_CargoMovingThroughCanada_Node0 -- Yes --> N_CargoMovingThroughCanada_Node0_action N_CargoMovingThroughCanada_Node0_action --> E_CargoMovingThroughCanada S_CargoMovingThroughCanada --> N_CargoMovingThroughCanada_Node0 N_CargoMovingThroughCanada_Node0 -- No --> E_CargoMovingThroughCanada
File: GCX016E.cbl
GIVEN: A cargo has been identified for potential transit processing
WHEN: The system checks if the cargo routing involves movement through Canadian territory
THEN: The cargo is processed for Canadian transit if routing goes through Canada, otherwise standard processing continues
βœ“ Consolidated Acceptance Criteria
  • The system needs to identify the Canadian border location → the US port is mapped to the corresponding Canadian border crossing location using border location mapping 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_MapUSPorttoCanadianBorderLocation(["Start Step"]) E_MapUSPorttoCanadianBorderLocation(["End Step"]) N_MapUSPorttoCanadianBorderLocation_Node0{"The system needs to identify the
Canadian border location"}:::decision N_MapUSPorttoCanadianBorderLocation_Node0_action["The US port is mapped to the
corresponding Canadian border
crossing location using border
location mapping tables"]:::main N_MapUSPorttoCanadianBorderLocation_Node0 -- Yes --> N_MapUSPorttoCanadianBorderLocation_Node0_action N_MapUSPorttoCanadianBorderLocation_Node0_action --> E_MapUSPorttoCanadianBorderLocation S_MapUSPorttoCanadianBorderLocation --> N_MapUSPorttoCanadianBorderLocation_Node0 N_MapUSPorttoCanadianBorderLocation_Node0 -- No --> E_MapUSPorttoCanadianBorderLocation
File: GCX016E.cbl
GIVEN: A cargo requires Canadian transit processing
WHEN: The system needs to identify the Canadian border location
THEN: The US port is mapped to the corresponding Canadian border crossing location using border location mapping tables
βœ“ Consolidated Acceptance Criteria
  • The system searches the Canadian cargo database using cargo identifiers → the system retrieves matching Canadian cargo records from GCCC-CARGO-ROOT database
  • Canadian cargo database search is performed → system searches GCCC-CARGO-ROOT database for matching Canadian cargo records by equipment ID
  • The system searches the Canadian cargo database → all Canadian cargo records with matching 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_SearchCanadianCargoDatabase(["Start Step"]) E_SearchCanadianCargoDatabase(["End Step"]) N_SearchCanadianCargoDatabase_Node0{"The system searches the Canadian
cargo database using cargo
identifiers"}:::decision N_SearchCanadianCargoDatabase_Node0_action["The system retrieves matching
Canadian cargo records from
GCCC-CARGO-ROOT database"]:::main N_SearchCanadianCargoDatabase_Node0 -- Yes --> N_SearchCanadianCargoDatabase_Node0_action N_SearchCanadianCargoDatabase_Node0_action --> E_SearchCanadianCargoDatabase S_SearchCanadianCargoDatabase --> N_SearchCanadianCargoDatabase_Node0 N_SearchCanadianCargoDatabase_Node1{"Canadian cargo database search is
performed"}:::decision N_SearchCanadianCargoDatabase_Node1_action["System searches GCCC-CARGO-ROOT
database for matching Canadian cargo
records by equipment ID"]:::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 the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node2_action["All Canadian cargo records with
matching equipment ID are retrieved"]:::main N_SearchCanadianCargoDatabase_Node2 -- Yes --> N_SearchCanadianCargoDatabase_Node2_action N_SearchCanadianCargoDatabase_Node2_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node1 -- No --> N_SearchCanadianCargoDatabase_Node2 N_SearchCanadianCargoDatabase_Node2 -- No --> E_SearchCanadianCargoDatabase
File: GCX016E.cbl
GIVEN: A Canadian border location has been identified for the cargo
WHEN: The system searches the Canadian cargo database using cargo identifiers
THEN: The system retrieves matching Canadian cargo records from GCCC-CARGO-ROOT database
File: GCX016E.cbl
GIVEN: Equipment ID has been extracted from US cargo
WHEN: Canadian cargo database search is performed
THEN: System searches GCCC-CARGO-ROOT database for matching Canadian cargo records by equipment ID
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from US cargo
WHEN: The system searches the Canadian cargo database
THEN: All Canadian cargo records with matching equipment ID are retrieved
βœ“ Consolidated Acceptance Criteria
  • The search results are evaluated for matching manifests → processing continues with equipment validation if Canadian manifest found, otherwise 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_CanadianManifestFound(["Start Step"]) E_CanadianManifestFound(["End Step"]) N_CanadianManifestFound_Node0{"The search results are evaluated
for matching manifests"}:::decision N_CanadianManifestFound_Node0_action["Processing continues with equipment
validation if Canadian manifest
found, otherwise error is generated"]:::main N_CanadianManifestFound_Node0 -- Yes --> N_CanadianManifestFound_Node0_action N_CanadianManifestFound_Node0_action --> E_CanadianManifestFound S_CanadianManifestFound --> N_CanadianManifestFound_Node0 N_CanadianManifestFound_Node0 -- No --> E_CanadianManifestFound
File: GCX016E.cbl
GIVEN: The system has searched the Canadian cargo database
WHEN: The search results are evaluated for matching manifests
THEN: Processing continues with equipment validation if Canadian manifest found, otherwise error is generated
βœ“ Consolidated Acceptance Criteria
  • The system compares equipment IDs between US and Canadian records → the equipment IDs must match exactly for the records to be linked for transit processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateEquipmentIDMatch(["Start Step"]) E_ValidateEquipmentIDMatch(["End Step"]) N_ValidateEquipmentIDMatch_Node0{"The system compares equipment IDs
between US and Canadian records"}:::decision N_ValidateEquipmentIDMatch_Node0_action["The equipment IDs must match
exactly for the records to be linked
for transit processing"]:::main N_ValidateEquipmentIDMatch_Node0 -- Yes --> N_ValidateEquipmentIDMatch_Node0_action N_ValidateEquipmentIDMatch_Node0_action --> E_ValidateEquipmentIDMatch S_ValidateEquipmentIDMatch --> N_ValidateEquipmentIDMatch_Node0 N_ValidateEquipmentIDMatch_Node0 -- No --> E_ValidateEquipmentIDMatch
File: GCX016E.cbl
GIVEN: A Canadian manifest has been found for the cargo
WHEN:
  • The system compares equipment ids between us
  • Canadian records
THEN: The equipment IDs must match exactly for the records to be linked for transit processing
βœ“ Consolidated Acceptance Criteria
  • The system creates cross-border tracking relationships → a tracking link is established connecting the US and Canadian cargo records for transit monitoring
  • The system creates cross-border tracking links → a tracking relationship is established between the US and Canadian cargo records
  • The system creates cross-border tracking links → a tracking relationship is established linking 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_CreateCrossBorderTrackingLink(["Start Step"]) E_CreateCrossBorderTrackingLink(["End Step"]) N_CreateCrossBorderTrackingLink_Node0{"The system creates cross-border
tracking relationships"}:::decision N_CreateCrossBorderTrackingLink_Node0_action["A tracking link is established
connecting the US and Canadian cargo
records for transit monitoring"]:::main N_CreateCrossBorderTrackingLink_Node0 -- Yes --> N_CreateCrossBorderTrackingLink_Node0_action N_CreateCrossBorderTrackingLink_Node0_action --> E_CreateCrossBorderTrackingLink S_CreateCrossBorderTrackingLink --> N_CreateCrossBorderTrackingLink_Node0 N_CreateCrossBorderTrackingLink_Node1{"The system creates cross-border
tracking links"}:::decision N_CreateCrossBorderTrackingLink_Node1_action["A tracking relationship is
established between the US and
Canadian cargo records"]:::main N_CreateCrossBorderTrackingLink_Node1 -- Yes --> N_CreateCrossBorderTrackingLink_Node1_action N_CreateCrossBorderTrackingLink_Node1_action --> E_CreateCrossBorderTrackingLink N_CreateCrossBorderTrackingLink_Node0 -- No --> N_CreateCrossBorderTrackingLink_Node1 N_CreateCrossBorderTrackingLink_Node2{"The system creates cross-border
tracking links"}:::decision N_CreateCrossBorderTrackingLink_Node2_action["A tracking relationship is
established linking US and Canadian
cargo records"]:::main N_CreateCrossBorderTrackingLink_Node2 -- Yes --> N_CreateCrossBorderTrackingLink_Node2_action N_CreateCrossBorderTrackingLink_Node2_action --> E_CreateCrossBorderTrackingLink N_CreateCrossBorderTrackingLink_Node1 -- No --> N_CreateCrossBorderTrackingLink_Node2 N_CreateCrossBorderTrackingLink_Node2 -- No --> E_CreateCrossBorderTrackingLink
File: GCX016E.cbl
GIVEN: Equipment IDs match between US and Canadian cargo records
WHEN: The system creates cross-border tracking relationships
THEN:
  • A tracking link is established connecting the us
  • Canadian cargo records for transit monitoring
File: GCX016E.cbl
GIVEN: Equipment IDs have been successfully matched between systems
WHEN: The system creates cross-border tracking links
THEN:
  • A tracking relationship is established between the us
  • Canadian cargo records
File: GCX016E.cbl
GIVEN: Equipment IDs have been successfully matched between systems
WHEN: The system creates cross-border tracking links
THEN:
  • A tracking relationship is established linking us
  • Canadian cargo records
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo status information → the cargo status is updated to reflect transit processing status and cross-border 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_UpdateTransitStatus(["Start Step"]) E_UpdateTransitStatus(["End Step"]) N_UpdateTransitStatus_Node0{"The system updates cargo status
information"}:::decision N_UpdateTransitStatus_Node0_action["The cargo status is updated to
reflect transit processing status
and cross-border movement tracking"]:::main N_UpdateTransitStatus_Node0 -- Yes --> N_UpdateTransitStatus_Node0_action N_UpdateTransitStatus_Node0_action --> E_UpdateTransitStatus S_UpdateTransitStatus --> N_UpdateTransitStatus_Node0 N_UpdateTransitStatus_Node0 -- No --> E_UpdateTransitStatus
File: GCX016E.cbl
GIVEN: A cross-border tracking link has been created
WHEN: The system updates cargo status information
THEN:
  • The cargo status is updated to reflect transit processing status
  • Cross-border movement tracking
βœ“ Consolidated Acceptance Criteria
  • The system checks the status of Canadian records → records marked as deleted are excluded from transit processing 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_ExcludeDeletedCanadianRecords(["Start Step"]) E_ExcludeDeletedCanadianRecords(["End Step"]) N_ExcludeDeletedCanadianRecords_Node0{"The system checks the status of
Canadian records"}:::decision N_ExcludeDeletedCanadianRecords_Node0_action["Records marked as deleted are
excluded from transit processing
consideration"]:::main N_ExcludeDeletedCanadianRecords_Node0 -- Yes --> N_ExcludeDeletedCanadianRecords_Node0_action N_ExcludeDeletedCanadianRecords_Node0_action --> E_ExcludeDeletedCanadianRecords S_ExcludeDeletedCanadianRecords --> N_ExcludeDeletedCanadianRecords_Node0 N_ExcludeDeletedCanadianRecords_Node0 -- No --> E_ExcludeDeletedCanadianRecords
File: GCX016E.cbl
GIVEN: Canadian cargo records are being evaluated for transit processing
WHEN: The system checks the status of Canadian records
THEN: Records marked as deleted are excluded from transit processing consideration
βœ“ Consolidated Acceptance Criteria
  • The system checks for new bond created status → records with new bond created status are excluded from transit processing consideration
  • The system processes cargo status validation → new bond created cargo records are excluded from further 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_ExcludeNewBondCreatedRecords(["Start Step"]) E_ExcludeNewBondCreatedRecords(["End Step"]) N_ExcludeNewBondCreatedRecords_Node0{"The system checks for new bond
created status"}:::decision N_ExcludeNewBondCreatedRecords_Node0_action["Records with new bond created
status are excluded from transit
processing consideration"]:::main N_ExcludeNewBondCreatedRecords_Node0 -- Yes --> N_ExcludeNewBondCreatedRecords_Node0_action N_ExcludeNewBondCreatedRecords_Node0_action --> E_ExcludeNewBondCreatedRecords S_ExcludeNewBondCreatedRecords --> N_ExcludeNewBondCreatedRecords_Node0 N_ExcludeNewBondCreatedRecords_Node1{"The system processes cargo status
validation"}:::decision N_ExcludeNewBondCreatedRecords_Node1_action["New bond created cargo records are
excluded from further cross-border
processing"]:::main N_ExcludeNewBondCreatedRecords_Node1 -- Yes --> N_ExcludeNewBondCreatedRecords_Node1_action N_ExcludeNewBondCreatedRecords_Node1_action --> E_ExcludeNewBondCreatedRecords N_ExcludeNewBondCreatedRecords_Node0 -- No --> N_ExcludeNewBondCreatedRecords_Node1 N_ExcludeNewBondCreatedRecords_Node1 -- No --> E_ExcludeNewBondCreatedRecords
File: GCX016E.cbl
GIVEN: Canadian cargo records are being evaluated for transit processing
WHEN: The system checks for new bond created status
THEN: Records with new bond created status are excluded from transit processing consideration
File: GCX016E.cbl
GIVEN: Canadian cargo records have been found but have invalid new bond created status
WHEN: The system processes cargo status validation
THEN: New bond created cargo records are excluded from further cross-border processing
βœ“ Consolidated Acceptance Criteria
  • The system processes transit routing information → transit routing data is processed and updated for cross-border 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_ProcessTransitRouting(["Start Step"]) E_ProcessTransitRouting(["End Step"]) N_ProcessTransitRouting_Node0{"The system processes transit
routing information"}:::decision N_ProcessTransitRouting_Node0_action["Transit routing data is processed
and updated for cross-border
movement tracking"]:::main N_ProcessTransitRouting_Node0 -- Yes --> N_ProcessTransitRouting_Node0_action N_ProcessTransitRouting_Node0_action --> E_ProcessTransitRouting S_ProcessTransitRouting --> N_ProcessTransitRouting_Node0 N_ProcessTransitRouting_Node0 -- No --> E_ProcessTransitRouting
File: GCX016E.cbl
GIVEN: Valid Canadian records have been identified and linked
WHEN: The system processes transit routing information
THEN:
  • Transit routing data is processed
  • Updated for cross-border movement tracking
βœ“ Consolidated Acceptance Criteria
  • The system updates destination information → the final US destination information is updated to reflect the cargo's ultimate destination after Canadian transit
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateUSDestinationInformation(["Start Step"]) E_UpdateUSDestinationInformation(["End Step"]) N_UpdateUSDestinationInformation_Node0{"The system updates destination
information"}:::decision N_UpdateUSDestinationInformation_Node0_action["The final US destination
information is updated to reflect
the cargo s ultimate destination
after Canadian transit"]:::main N_UpdateUSDestinationInformation_Node0 -- Yes --> N_UpdateUSDestinationInformation_Node0_action N_UpdateUSDestinationInformation_Node0_action --> E_UpdateUSDestinationInformation S_UpdateUSDestinationInformation --> N_UpdateUSDestinationInformation_Node0 N_UpdateUSDestinationInformation_Node0 -- No --> E_UpdateUSDestinationInformation
File: GCX016E.cbl
GIVEN: Transit routing has been processed
WHEN: The system updates destination information
THEN: The final US destination information is updated to reflect the cargo's ultimate destination after Canadian transit
βœ“ Consolidated Acceptance Criteria
  • The system generates processing notifications → transit processing notifications are generated and sent to appropriate parties for cross-border 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_GenerateTransitNotification(["Start Step"]) E_GenerateTransitNotification(["End Step"]) N_GenerateTransitNotification_Node0{"The system generates processing
notifications"}:::decision N_GenerateTransitNotification_Node0_action["Transit processing notifications
are generated and sent to
appropriate parties for cross-border
movement tracking"]:::main N_GenerateTransitNotification_Node0 -- Yes --> N_GenerateTransitNotification_Node0_action N_GenerateTransitNotification_Node0_action --> E_GenerateTransitNotification S_GenerateTransitNotification --> N_GenerateTransitNotification_Node0 N_GenerateTransitNotification_Node0 -- No --> E_GenerateTransitNotification
File: GCX016E.cbl
GIVEN: US destination information has been updated for transit cargo
WHEN: The system generates processing notifications
THEN:
  • Transit processing notifications are generated
  • Sent to appropriate parties for cross-border movement tracking
βœ“ Consolidated Acceptance Criteria
  • The system logs processing activities → all transit processing activities are logged with timestamps and details for audit trail 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_LogTransitProcessing(["Start Step"]) E_LogTransitProcessing(["End Step"]) N_LogTransitProcessing_Node0{"The system logs processing
activities"}:::decision N_LogTransitProcessing_Node0_action["All transit processing activities
are logged with timestamps and
details for audit trail and tracking
purposes"]:::main N_LogTransitProcessing_Node0 -- Yes --> N_LogTransitProcessing_Node0_action N_LogTransitProcessing_Node0_action --> E_LogTransitProcessing S_LogTransitProcessing --> N_LogTransitProcessing_Node0 N_LogTransitProcessing_Node0 -- No --> E_LogTransitProcessing
File: GCX016E.cbl
GIVEN: Transit notifications have been generated
WHEN: The system logs processing activities
THEN:
  • All transit processing activities are logged with timestamps
  • Details for audit trail
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system cannot establish cross-border tracking → an error is generated indicating no Canadian match found and standard 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_GenerateErrorNoCanadianMatch(["Start Step"]) E_GenerateErrorNoCanadianMatch(["End Step"]) N_GenerateErrorNoCanadianMatch_Node0{"The system cannot establish
cross-border tracking"}:::decision N_GenerateErrorNoCanadianMatch_Node0_action["An error is generated indicating no
Canadian match found and standard
processing continues"]:::main N_GenerateErrorNoCanadianMatch_Node0 -- Yes --> N_GenerateErrorNoCanadianMatch_Node0_action N_GenerateErrorNoCanadianMatch_Node0_action --> E_GenerateErrorNoCanadianMatch S_GenerateErrorNoCanadianMatch --> N_GenerateErrorNoCanadianMatch_Node0 N_GenerateErrorNoCanadianMatch_Node0 -- No --> E_GenerateErrorNoCanadianMatch
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: No Canadian manifest is found or equipment IDs do not match
WHEN: The system cannot establish cross-border tracking
THEN:
  • An error is generated indicating no canadian match found
  • Standard processing continues
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve cargo records from the database → the GCCUSIO2 database access module is called with the bond number 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_CallGCCUSIO2DatabaseAccess(["Start Step"]) E_CallGCCUSIO2DatabaseAccess(["End Step"]) N_CallGCCUSIO2DatabaseAccess_Node0{"The system needs to retrieve cargo
records from the database"}:::decision N_CallGCCUSIO2DatabaseAccess_Node0_action["The GCCUSIO2 database access module
is called with the bond number
search key"]:::main N_CallGCCUSIO2DatabaseAccess_Node0 -- Yes --> N_CallGCCUSIO2DatabaseAccess_Node0_action N_CallGCCUSIO2DatabaseAccess_Node0_action --> E_CallGCCUSIO2DatabaseAccess S_CallGCCUSIO2DatabaseAccess --> N_CallGCCUSIO2DatabaseAccess_Node0 N_CallGCCUSIO2DatabaseAccess_Node0 -- No --> E_CallGCCUSIO2DatabaseAccess
File: GCX016E.cbl
GIVEN: A bond number search key has been configured
WHEN: The system needs to retrieve cargo records from the database
THEN: The GCCUSIO2 database access module is called with the bond number search key
βœ“ Consolidated Acceptance Criteria
  • The system searches the GCSUSRT cargo root segments table → all cargo records with matching bond numbers are identified for 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_SearchGCSUSRTCargoRootSegments(["Start Step"]) E_SearchGCSUSRTCargoRootSegments(["End Step"]) N_SearchGCSUSRTCargoRootSegments_Node0{"The system searches the GCSUSRT
cargo root segments table"}:::decision N_SearchGCSUSRTCargoRootSegments_Node0_action["All cargo records with matching
bond numbers are identified for
retrieval"]:::main N_SearchGCSUSRTCargoRootSegments_Node0 -- Yes --> N_SearchGCSUSRTCargoRootSegments_Node0_action N_SearchGCSUSRTCargoRootSegments_Node0_action --> E_SearchGCSUSRTCargoRootSegments S_SearchGCSUSRTCargoRootSegments --> N_SearchGCSUSRTCargoRootSegments_Node0 N_SearchGCSUSRTCargoRootSegments_Node0 -- No --> E_SearchGCSUSRTCargoRootSegments
File: GCX016E.cbl
GIVEN: Database access has been initiated with a bond number search key
WHEN: The system searches the GCSUSRT cargo root segments table
THEN: All cargo records with matching bond numbers are identified for retrieval
βœ“ Consolidated Acceptance Criteria
  • If the search results → if at least one cargo record is found, processing continues; if no records found, bond not found error is generated
  • System checks search results → system determines if first cargo record exists and proceeds with retrieval or handles not found scenario
  • If the search results → if no cargo records are found for the bond number, the system must return 'No Records Found' status, otherwise proceed with record 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_FirstCargoRecordFound(["Start Step"]) E_FirstCargoRecordFound(["End Step"]) N_FirstCargoRecordFound_Node0{"The system evaluates the search
results"}:::decision N_FirstCargoRecordFound_Node0_action["If at least one cargo record is
found, processing continues if no
records found, bond not found error
is generated"]:::main N_FirstCargoRecordFound_Node0 -- Yes --> N_FirstCargoRecordFound_Node0_action N_FirstCargoRecordFound_Node0_action --> E_FirstCargoRecordFound S_FirstCargoRecordFound --> N_FirstCargoRecordFound_Node0 N_FirstCargoRecordFound_Node1{"System checks search results"}:::decision N_FirstCargoRecordFound_Node1_action["System determines if first cargo
record exists and proceeds with
retrieval or handles not found
scenario"]:::main N_FirstCargoRecordFound_Node1 -- Yes --> N_FirstCargoRecordFound_Node1_action N_FirstCargoRecordFound_Node1_action --> E_FirstCargoRecordFound N_FirstCargoRecordFound_Node0 -- No --> N_FirstCargoRecordFound_Node1 N_FirstCargoRecordFound_Node2{"The system evaluates the search
results"}:::decision N_FirstCargoRecordFound_Node2_action["If no cargo records are found for
the bond number, the system must
return No Records Found status,
otherwise proceed with record
retrieval"]:::main N_FirstCargoRecordFound_Node2 -- Yes --> N_FirstCargoRecordFound_Node2_action N_FirstCargoRecordFound_Node2_action --> E_FirstCargoRecordFound N_FirstCargoRecordFound_Node1 -- No --> N_FirstCargoRecordFound_Node2 N_FirstCargoRecordFound_Node2 -- No --> E_FirstCargoRecordFound
File: GCX016E.cbl
GIVEN: A search has been performed on cargo root segments using bond number
WHEN: The system evaluates the search results
THEN: If at least one cargo record is found, processing continues; if no records found, bond not found error is generated
File: GCX016E.cbl
GIVEN: Database search for car/waybill combination is completed
WHEN: System checks search results
THEN:
  • System determines if first cargo record exists
  • Proceeds with retrieval or handles not found scenario
File: GCX016E.cbl
GIVEN: A search has been performed on the cargo database using bond number
WHEN: The system evaluates the search results
THEN: If no cargo records are found for the bond number, the system must return 'No Records Found' status, otherwise proceed with record retrieval
βœ“ Consolidated Acceptance Criteria
  • The system updates processing status → the cargo found flag is set to indicate successful 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_SetCargoFoundFlag(["Start Step"]) E_SetCargoFoundFlag(["End Step"]) N_SetCargoFoundFlag_Node0{"The system updates processing
status"}:::decision N_SetCargoFoundFlag_Node0_action["The cargo found flag is set to
indicate successful cargo location"]:::main N_SetCargoFoundFlag_Node0 -- Yes --> N_SetCargoFoundFlag_Node0_action N_SetCargoFoundFlag_Node0_action --> E_SetCargoFoundFlag S_SetCargoFoundFlag --> N_SetCargoFoundFlag_Node0 N_SetCargoFoundFlag_Node0 -- No --> E_SetCargoFoundFlag
File: GCX016E.cbl
GIVEN: The first cargo record has been successfully retrieved
WHEN: The system updates processing status
THEN: The cargo found flag is set to indicate successful cargo location
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional records with the same bond number → the system determines if more cargo records exist with the same bond number
  • The system checks for additional records with the same search key → the system determines whether more matching cargo records exist
  • The system checks for additional records → the system must determine if more cargo records exist for the same bond number
  • If the complete result set → the system checks if more records exist with the same car ID and waybill 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_CheckforAdditionalRecords(["Start Step"]) E_CheckforAdditionalRecords(["End Step"]) N_CheckforAdditionalRecords_Node0{"The system checks for additional
records with the same bond number"}:::decision N_CheckforAdditionalRecords_Node0_action["The system determines if more cargo
records exist with the same bond
number"]:::main N_CheckforAdditionalRecords_Node0 -- Yes --> N_CheckforAdditionalRecords_Node0_action N_CheckforAdditionalRecords_Node0_action --> E_CheckforAdditionalRecords S_CheckforAdditionalRecords --> N_CheckforAdditionalRecords_Node0 N_CheckforAdditionalRecords_Node1{"The system checks for additional
records with the same search key"}:::decision N_CheckforAdditionalRecords_Node1_action["The system determines whether more
matching cargo records exist"]:::main N_CheckforAdditionalRecords_Node1 -- Yes --> N_CheckforAdditionalRecords_Node1_action N_CheckforAdditionalRecords_Node1_action --> E_CheckforAdditionalRecords N_CheckforAdditionalRecords_Node0 -- No --> N_CheckforAdditionalRecords_Node1 N_CheckforAdditionalRecords_Node2{"The system checks for additional
records"}:::decision N_CheckforAdditionalRecords_Node2_action["The system must determine if more
cargo records exist for the same
bond number"]:::main N_CheckforAdditionalRecords_Node2 -- Yes --> N_CheckforAdditionalRecords_Node2_action N_CheckforAdditionalRecords_Node2_action --> E_CheckforAdditionalRecords N_CheckforAdditionalRecords_Node1 -- No --> N_CheckforAdditionalRecords_Node2 N_CheckforAdditionalRecords_Node3{"The system evaluates the complete
result set"}:::decision N_CheckforAdditionalRecords_Node3_action["The system checks if more records
exist with the same car ID and
waybill combination"]:::main N_CheckforAdditionalRecords_Node3 -- Yes --> N_CheckforAdditionalRecords_Node3_action N_CheckforAdditionalRecords_Node3_action --> E_CheckforAdditionalRecords N_CheckforAdditionalRecords_Node2 -- No --> N_CheckforAdditionalRecords_Node3 N_CheckforAdditionalRecords_Node3 -- No --> E_CheckforAdditionalRecords
File: GCX016E.cbl
GIVEN: The first cargo record has been retrieved and cargo found flag is set
WHEN: The system checks for additional records with the same bond number
THEN: The system determines if more cargo records exist with the same bond number
File: GCX016E.cbl
GIVEN: The first cargo record has been retrieved successfully
WHEN: The system checks for additional records with the same search key
THEN: The system determines whether more matching cargo records exist
File: GCX016E.cbl
GIVEN: The first cargo record for a bond has been processed
WHEN: The system checks for additional records
THEN: The system must determine if more cargo records exist for the same bond number
File: GCX016E.cbl
GIVEN: The first cargo record has been retrieved successfully
WHEN: The system evaluates the complete result set
THEN:
  • The system checks if more records exist with the same car id
  • Waybill combination
βœ“ Consolidated Acceptance Criteria
  • If if more records exist with the same bond number → if more records exist, they are retrieved; if no more records, processing continues with current records
  • If if more records exist with the same bond number → if additional records exist, continue processing the next record, otherwise complete the bond lookup process
  • Multiple records exist for the same bond number → continue to retrieve and process the next record, otherwise complete the bond index retrieval 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_MoreRecordswithSameBond(["Start Step"]) E_MoreRecordswithSameBond(["End Step"]) N_MoreRecordswithSameBond_Node0{"The system evaluates if more
records exist with the same bond
number"}:::decision N_MoreRecordswithSameBond_Node0_action["If more records exist, they are
retrieved if no more records,
processing continues with current
records"]:::main N_MoreRecordswithSameBond_Node0 -- Yes --> N_MoreRecordswithSameBond_Node0_action N_MoreRecordswithSameBond_Node0_action --> E_MoreRecordswithSameBond S_MoreRecordswithSameBond --> N_MoreRecordswithSameBond_Node0 N_MoreRecordswithSameBond_Node1{"The system evaluates if more
records exist with the same bond
number"}:::decision N_MoreRecordswithSameBond_Node1_action["If additional records exist,
continue processing the next record,
otherwise complete the bond lookup
process"]:::main N_MoreRecordswithSameBond_Node1 -- Yes --> N_MoreRecordswithSameBond_Node1_action N_MoreRecordswithSameBond_Node1_action --> E_MoreRecordswithSameBond N_MoreRecordswithSameBond_Node0 -- No --> N_MoreRecordswithSameBond_Node1 N_MoreRecordswithSameBond_Node2{"Multiple records exist for the same
bond number"}:::decision N_MoreRecordswithSameBond_Node2_action["Continue to retrieve and process
the next record, otherwise complete
the bond index retrieval process"]:::main N_MoreRecordswithSameBond_Node2 -- Yes --> N_MoreRecordswithSameBond_Node2_action N_MoreRecordswithSameBond_Node2_action --> E_MoreRecordswithSameBond N_MoreRecordswithSameBond_Node1 -- No --> N_MoreRecordswithSameBond_Node2 N_MoreRecordswithSameBond_Node2 -- No --> E_MoreRecordswithSameBond
File: GCX016E.cbl
GIVEN: Additional record check has been performed
WHEN: The system evaluates if more records exist with the same bond number
THEN: If more records exist, they are retrieved; if no more records, processing continues with current records
File: GCX016E.cbl
GIVEN: A search for subsequent records has been performed
WHEN: The system evaluates if more records exist with the same bond number
THEN: If additional records exist, continue processing the next record, otherwise complete the bond lookup process
File: GCX016E.cbl
GIVEN: The system has checked for additional bond records
WHEN: Multiple records exist for the same bond number
THEN:
  • Continue to retrieve
  • Process the next record, otherwise complete the bond index retrieval process
βœ“ Consolidated Acceptance Criteria
  • The system manages the cargo processing list → the cargo record is added to the processing list for subsequent operations
  • The system determines the record should be included → the cargo record must be added to the cargo processing list for further business processing
  • The record needs to be included in processing → the cargo record must be added to the cargo processing list for further business rule application
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AddtoCargoProcessingList(["Start Step"]) E_AddtoCargoProcessingList(["End Step"]) N_AddtoCargoProcessingList_Node0{"The system manages the cargo
processing list"}:::decision N_AddtoCargoProcessingList_Node0_action["The cargo record is added to the
processing list for subsequent
operations"]:::main N_AddtoCargoProcessingList_Node0 -- Yes --> N_AddtoCargoProcessingList_Node0_action N_AddtoCargoProcessingList_Node0_action --> E_AddtoCargoProcessingList S_AddtoCargoProcessingList --> N_AddtoCargoProcessingList_Node0 N_AddtoCargoProcessingList_Node1{"The system determines the record
should be included"}:::decision N_AddtoCargoProcessingList_Node1_action["The cargo record must be added to
the cargo processing list for
further business processing"]:::main N_AddtoCargoProcessingList_Node1 -- Yes --> N_AddtoCargoProcessingList_Node1_action N_AddtoCargoProcessingList_Node1_action --> E_AddtoCargoProcessingList N_AddtoCargoProcessingList_Node0 -- No --> N_AddtoCargoProcessingList_Node1 N_AddtoCargoProcessingList_Node2{"The record needs to be included in
processing"}:::decision N_AddtoCargoProcessingList_Node2_action["The cargo record must be added to
the cargo processing list for
further business rule application"]:::main N_AddtoCargoProcessingList_Node2 -- Yes --> N_AddtoCargoProcessingList_Node2_action N_AddtoCargoProcessingList_Node2_action --> E_AddtoCargoProcessingList N_AddtoCargoProcessingList_Node1 -- No --> N_AddtoCargoProcessingList_Node2 N_AddtoCargoProcessingList_Node2 -- No --> E_AddtoCargoProcessingList
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved (first or subsequent)
WHEN: The system manages the cargo processing list
THEN: The cargo record is added to the processing list for subsequent operations
File: GCX016E.cbl
GIVEN: A cargo record has a valid status code
WHEN: The system determines the record should be included
THEN: The cargo record must be added to the cargo processing list for further business processing
File: GCX016E.cbl
GIVEN: A cargo record has been validated as active
WHEN: The record needs to be included in processing
THEN: The cargo record must be added to the cargo processing list for further business rule application
βœ“ Consolidated Acceptance Criteria
  • The system prepares for cargo processing operations → the bond index is configured for processing all 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_SetBondIndexforProcessing(["Start Step"]) E_SetBondIndexforProcessing(["End Step"]) N_SetBondIndexforProcessing_Node0{"The system prepares for cargo
processing operations"}:::decision N_SetBondIndexforProcessing_Node0_action["The bond index is configured for
processing all associated cargo
records"]:::main N_SetBondIndexforProcessing_Node0 -- Yes --> N_SetBondIndexforProcessing_Node0_action N_SetBondIndexforProcessing_Node0_action --> E_SetBondIndexforProcessing S_SetBondIndexforProcessing --> N_SetBondIndexforProcessing_Node0 N_SetBondIndexforProcessing_Node0 -- No --> E_SetBondIndexforProcessing
File: GCX016E.cbl
GIVEN: All cargo records with the bond number have been retrieved and added to processing list
WHEN: The system prepares for cargo processing operations
THEN: The bond index is configured for processing all associated cargo records
βœ“ Consolidated Acceptance Criteria
  • The cargo lookup operation completes successfully → all cargo records associated with the bond number are returned 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_ReturnCargoRecordsforProcessing(["Start Step"]) E_ReturnCargoRecordsforProcessing(["End Step"]) N_ReturnCargoRecordsforProcessing_Node0{"The cargo lookup operation
completes successfully"}:::decision N_ReturnCargoRecordsforProcessing_Node0_action["All cargo records associated with
the bond number are returned for
processing"]:::main N_ReturnCargoRecordsforProcessing_Node0 -- Yes --> N_ReturnCargoRecordsforProcessing_Node0_action N_ReturnCargoRecordsforProcessing_Node0_action --> E_ReturnCargoRecordsforProcessing S_ReturnCargoRecordsforProcessing --> N_ReturnCargoRecordsforProcessing_Node0 N_ReturnCargoRecordsforProcessing_Node0 -- No --> E_ReturnCargoRecordsforProcessing
File: GCX016E.cbl
GIVEN: Bond index has been configured and all cargo records are in the processing list
WHEN: The cargo lookup operation completes successfully
THEN: All cargo records associated with the bond number are returned for processing
βœ“ Consolidated Acceptance Criteria
  • The system handles the error condition → the bond lookup failure 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_LogBondLookupFailure(["Start Step"]) E_LogBondLookupFailure(["End Step"]) N_LogBondLookupFailure_Node0{"The system handles the error
condition"}:::decision N_LogBondLookupFailure_Node0_action["The bond lookup failure is logged
with relevant details for audit
purposes"]:::exclusion N_LogBondLookupFailure_Node0 -- Yes -->|Alternative| N_LogBondLookupFailure_Node0_action N_LogBondLookupFailure_Node0_action --> E_LogBondLookupFailure S_LogBondLookupFailure --> N_LogBondLookupFailure_Node0 N_LogBondLookupFailure_Node0 -- No --> E_LogBondLookupFailure
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A bond not found error has been generated
WHEN: The system handles the error condition
THEN: The bond lookup failure is logged with relevant details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system completes error handling for the current message → processing continues with the next available message 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_ContinuewithNextMessage(["Start Step"]) E_ContinuewithNextMessage(["End Step"]) N_ContinuewithNextMessage_Node0{"The system completes error handling
for the current message"}:::decision N_ContinuewithNextMessage_Node0_action["Processing continues with the next
available message in the queue"]:::exclusion N_ContinuewithNextMessage_Node0 -- Yes -->|Alternative| N_ContinuewithNextMessage_Node0_action N_ContinuewithNextMessage_Node0_action --> E_ContinuewithNextMessage S_ContinuewithNextMessage --> N_ContinuewithNextMessage_Node0 N_ContinuewithNextMessage_Node0 -- No --> E_ContinuewithNextMessage
File: GCX016E.cbl
GIVEN: Bond lookup failure has been logged
WHEN: The system completes error handling for the current message
THEN: Processing continues with the next available message in the queue
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a car ID key for cargo lookup → the car ID is formatted by concatenating equipment initial and number with proper spacing and validation
  • System needs to format car ID for cargo lookup → system concatenates equipment initial and equipment number to create standardized car ID format
  • The system applies standard car ID formatting rules → the car ID is formatted according to business standards for consistent 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_FormatCarIDusingStandardRules(["Start Step"]) E_FormatCarIDusingStandardRules(["End Step"]) N_FormatCarIDusingStandardRules_Node0{"The system needs to create a car ID
key for cargo lookup"}:::decision N_FormatCarIDusingStandardRules_Node0_action["The car ID is formatted by
concatenating equipment initial and
number with proper spacing and
validation"]:::main N_FormatCarIDusingStandardRules_Node0 -- Yes --> N_FormatCarIDusingStandardRules_Node0_action N_FormatCarIDusingStandardRules_Node0_action --> E_FormatCarIDusingStandardRules S_FormatCarIDusingStandardRules --> N_FormatCarIDusingStandardRules_Node0 N_FormatCarIDusingStandardRules_Node1{"System needs to format car ID for
cargo lookup"}:::decision N_FormatCarIDusingStandardRules_Node1_action["System concatenates equipment
initial and equipment number to
create standardized car ID format"]:::main N_FormatCarIDusingStandardRules_Node1 -- Yes --> N_FormatCarIDusingStandardRules_Node1_action N_FormatCarIDusingStandardRules_Node1_action --> E_FormatCarIDusingStandardRules N_FormatCarIDusingStandardRules_Node0 -- No --> N_FormatCarIDusingStandardRules_Node1 N_FormatCarIDusingStandardRules_Node2{"The system applies standard car ID
formatting rules"}:::decision N_FormatCarIDusingStandardRules_Node2_action["The car ID is formatted according
to business standards for consistent
cargo matching"]:::main N_FormatCarIDusingStandardRules_Node2 -- Yes --> N_FormatCarIDusingStandardRules_Node2_action N_FormatCarIDusingStandardRules_Node2_action --> E_FormatCarIDusingStandardRules N_FormatCarIDusingStandardRules_Node1 -- No --> N_FormatCarIDusingStandardRules_Node2 N_FormatCarIDusingStandardRules_Node2 -- No --> E_FormatCarIDusingStandardRules
File: GCX016E.cbl
GIVEN: A car equipment initial and number are provided from N7 segment
WHEN: The system needs to create a car ID key for cargo lookup
THEN:
  • The car id is formatted by concatenating equipment initial
  • Number with proper spacing
  • Validation
File: GCX016E.cbl
GIVEN: Equipment initial and equipment number are provided from N7 segment
WHEN: System needs to format car ID for cargo lookup
THEN:
  • System concatenates equipment initial
  • Equipment number to create standardized car id format
File: GCX016E.cbl
GIVEN: A raw car identification needs to be processed for cargo search
WHEN: The system applies standard car ID formatting rules
THEN: The car ID is formatted according to business standards for consistent cargo matching
βœ“ Consolidated Acceptance Criteria
  • The system searches for cargo records in the database → the system queries both US cargo root segments and car ID index tables 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_SearchCargoDatabasebyCarID(["Start Step"]) E_SearchCargoDatabasebyCarID(["End Step"]) N_SearchCargoDatabasebyCarID_Node0{"The system searches for cargo
records in the database"}:::decision N_SearchCargoDatabasebyCarID_Node0_action["The system queries both US cargo
root segments and car ID index
tables to find matching records"]:::main N_SearchCargoDatabasebyCarID_Node0 -- Yes --> N_SearchCargoDatabasebyCarID_Node0_action N_SearchCargoDatabasebyCarID_Node0_action --> E_SearchCargoDatabasebyCarID S_SearchCargoDatabasebyCarID --> N_SearchCargoDatabasebyCarID_Node0 N_SearchCargoDatabasebyCarID_Node0 -- No --> E_SearchCargoDatabasebyCarID
File: GCX016E.cbl
GIVEN: A formatted car ID key exists
WHEN: The system searches for cargo records in the database
THEN:
  • The system queries both us cargo root segments
  • Car id index tables to find matching records
βœ“ Consolidated Acceptance Criteria
  • If the search results → if a cargo record is found, retrieve the existing record; otherwise proceed to CPRS traffic check
  • The system checks for the existence of the cargo record → if cargo record exists, proceed to fetch status segments; if not, initialize empty status arrays
  • System evaluates the search results → processing continues if cargo record found, otherwise processing terminates
  • If the search results → if no cargo records are found for the bond number, return 'No Records Found' status, otherwise proceed to retrieve the first record
  • If the lookup results → the system determines if at least one matching cargo record was found and proceeds accordingly
  • If the search results → if a cargo record is found, continue with individual cargo processing, otherwise end the multi-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_CargoRecordFound(["Start Step"]) E_CargoRecordFound(["End Step"]) N_CargoRecordFound_Node0{"The system evaluates the search
results"}:::decision N_CargoRecordFound_Node0_action["If a cargo record is found,
retrieve the existing record
otherwise proceed to CPRS traffic
check"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node1{"The system checks for the existence
of the cargo record"}:::decision N_CargoRecordFound_Node1_action["If cargo record exists, proceed to
fetch status segments if not,
initialize empty status arrays"]:::main N_CargoRecordFound_Node1 -- Yes --> N_CargoRecordFound_Node1_action N_CargoRecordFound_Node1_action --> E_CargoRecordFound N_CargoRecordFound_Node0 -- No --> N_CargoRecordFound_Node1 N_CargoRecordFound_Node2{"System evaluates the search results"}:::decision N_CargoRecordFound_Node2_action["Processing continues if cargo
record found, otherwise processing
terminates"]:::main N_CargoRecordFound_Node2 -- Yes --> N_CargoRecordFound_Node2_action N_CargoRecordFound_Node2_action --> E_CargoRecordFound N_CargoRecordFound_Node1 -- No --> N_CargoRecordFound_Node2 N_CargoRecordFound_Node3{"The system evaluates the search
results"}:::decision N_CargoRecordFound_Node3_action["If no cargo records are found for
the bond number, return No Records
Found status, otherwise proceed to
retrieve the first record"]:::main N_CargoRecordFound_Node3 -- Yes --> N_CargoRecordFound_Node3_action N_CargoRecordFound_Node3_action --> E_CargoRecordFound N_CargoRecordFound_Node2 -- No --> N_CargoRecordFound_Node3 N_CargoRecordFound_Node4{"The system evaluates the lookup
results"}:::decision N_CargoRecordFound_Node4_action["The system determines if at least
one matching cargo record was found
and proceeds accordingly"]:::main N_CargoRecordFound_Node4 -- Yes --> N_CargoRecordFound_Node4_action N_CargoRecordFound_Node4_action --> E_CargoRecordFound N_CargoRecordFound_Node3 -- No --> N_CargoRecordFound_Node4 N_CargoRecordFound_Node5{"The system evaluates the search
results"}:::decision N_CargoRecordFound_Node5_action["If a cargo record is found,
continue with individual cargo
processing, otherwise end the
multi-cargo processing"]:::main N_CargoRecordFound_Node5 -- Yes --> N_CargoRecordFound_Node5_action N_CargoRecordFound_Node5_action --> E_CargoRecordFound N_CargoRecordFound_Node4 -- No --> N_CargoRecordFound_Node5 N_CargoRecordFound_Node5 -- No --> E_CargoRecordFound
File: GCX016E.cbl
GIVEN: A database search has been performed for a car ID
WHEN: The system evaluates the search results
THEN: If a cargo record is found, retrieve the existing record; otherwise proceed to CPRS traffic check
File: GCX016E.cbl
GIVEN: A cargo processing request is initiated
WHEN: The system checks for the existence of the cargo record
THEN: If cargo record exists, proceed to fetch status segments; if not, initialize empty status arrays
File: GCX016E.cbl
GIVEN: A search for cargo records by car ID and waybill has been performed
WHEN: System evaluates the search results
THEN: Processing continues if cargo record found, otherwise processing terminates
File: GCX016E.cbl
GIVEN: A database search has been performed using bond index
WHEN: The system evaluates the search results
THEN: If no cargo records are found for the bond number, return 'No Records Found' status, otherwise proceed to retrieve the first record
File: GCX016E.cbl
GIVEN: A database lookup has been performed using car ID and waybill search key
WHEN: The system evaluates the lookup results
THEN:
  • The system determines if at least one matching cargo record was found
  • Proceeds accordingly
File: GCX016E.cbl
GIVEN: A search has been performed for cargo records by car ID and waybill
WHEN: The system evaluates the search results
THEN: If a cargo record is found, continue with individual cargo processing, otherwise end the multi-cargo processing
βœ“ Consolidated Acceptance Criteria
  • The system needs to process the cargo → the existing cargo record is retrieved 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_RetrieveExistingCargoRecord(["Start Step"]) E_RetrieveExistingCargoRecord(["End Step"]) N_RetrieveExistingCargoRecord_Node0{"The system needs to process the
cargo"}:::decision N_RetrieveExistingCargoRecord_Node0_action["The existing cargo record is
retrieved and made available for
further processing"]:::main N_RetrieveExistingCargoRecord_Node0 -- Yes --> N_RetrieveExistingCargoRecord_Node0_action N_RetrieveExistingCargoRecord_Node0_action --> E_RetrieveExistingCargoRecord S_RetrieveExistingCargoRecord --> N_RetrieveExistingCargoRecord_Node0 N_RetrieveExistingCargoRecord_Node0 -- No --> E_RetrieveExistingCargoRecord
File: GCX016E.cbl
GIVEN: A cargo record exists in the database for the car ID
WHEN: The system needs to process the cargo
THEN:
  • The existing cargo record is retrieved
  • Made available for further processing
βœ“ Consolidated Acceptance Criteria
  • If the traffic type → if the cargo is identified as CPRS traffic, apply CPRS special processing; otherwise generate error message for missing cargo
  • If if the cargo is designated as CPRS traffic → if CPRS traffic, generate specific error message; otherwise 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_IsCPRSTraffic(["Start Step"]) E_IsCPRSTraffic(["End Step"]) N_IsCPRSTraffic_Node0{"The system evaluates the traffic
type"}:::decision N_IsCPRSTraffic_Node0_action["If the cargo is identified as CPRS
traffic, apply CPRS special
processing otherwise generate error
message for missing cargo"]:::main N_IsCPRSTraffic_Node0 -- Yes --> N_IsCPRSTraffic_Node0_action N_IsCPRSTraffic_Node0_action --> E_IsCPRSTraffic S_IsCPRSTraffic --> N_IsCPRSTraffic_Node0 N_IsCPRSTraffic_Node1{"The system evaluates if the cargo
is designated as CPRS traffic"}:::decision N_IsCPRSTraffic_Node1_action["If CPRS traffic, generate specific
error message otherwise continue
with normal processing"]:::main N_IsCPRSTraffic_Node1 -- Yes --> N_IsCPRSTraffic_Node1_action N_IsCPRSTraffic_Node1_action --> E_IsCPRSTraffic N_IsCPRSTraffic_Node0 -- No --> N_IsCPRSTraffic_Node1 N_IsCPRSTraffic_Node1 -- No --> E_IsCPRSTraffic
File: GCX016E.cbl
GIVEN: No cargo record was found in the initial database search
WHEN: The system evaluates the traffic type
THEN: If the cargo is identified as CPRS traffic, apply CPRS special processing; otherwise generate error message for missing cargo
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The CPRS traffic flag has been checked for cargo not found in system
WHEN: The system evaluates if the cargo is designated as CPRS traffic
THEN: If CPRS traffic, generate specific error message; otherwise continue with normal processing
βœ“ Consolidated Acceptance Criteria
  • The SCAC code is unknown or not available → the system applies default SCAC handling rules and prepares for key renumbering
  • The system processes the found cargo records → the system handles SCAC unknown scenarios and prepares cargo for CCN key renumbering
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleSCACUnknownScenarios(["Start Step"]) E_HandleSCACUnknownScenarios(["End Step"]) N_HandleSCACUnknownScenarios_Node0{"The SCAC code is unknown or not
available"}:::decision N_HandleSCACUnknownScenarios_Node0_action["The system applies default SCAC
handling rules and prepares for key
renumbering"]:::main N_HandleSCACUnknownScenarios_Node0 -- Yes --> N_HandleSCACUnknownScenarios_Node0_action N_HandleSCACUnknownScenarios_Node0_action --> E_HandleSCACUnknownScenarios S_HandleSCACUnknownScenarios --> N_HandleSCACUnknownScenarios_Node0 N_HandleSCACUnknownScenarios_Node1{"The system processes the found
cargo records"}:::decision N_HandleSCACUnknownScenarios_Node1_action["The system handles SCAC unknown
scenarios and prepares cargo for CCN
key renumbering"]:::main N_HandleSCACUnknownScenarios_Node1 -- Yes --> N_HandleSCACUnknownScenarios_Node1_action N_HandleSCACUnknownScenarios_Node1_action --> E_HandleSCACUnknownScenarios N_HandleSCACUnknownScenarios_Node0 -- No --> N_HandleSCACUnknownScenarios_Node1 N_HandleSCACUnknownScenarios_Node1 -- No --> E_HandleSCACUnknownScenarios
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: CPRS traffic is being processed
WHEN: The SCAC code is unknown or not available
THEN:
  • The system applies default scac handling rules
  • Prepares for key renumbering
File: GCX016E.cbl
GIVEN: Cargo records were found using car ID only search and SCAC information may be unknown
WHEN: The system processes the found cargo records
THEN:
  • The system handles scac unknown scenarios
  • Prepares cargo for ccn key renumbering
βœ“ Consolidated Acceptance Criteria
  • The system searches the database again → the system queries the cargo database using the updated CPRS 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_SearchAgainwithUpdatedKey(["Start Step"]) E_SearchAgainwithUpdatedKey(["End Step"]) N_SearchAgainwithUpdatedKey_Node0{"The system searches the database
again"}:::decision N_SearchAgainwithUpdatedKey_Node0_action["The system queries the cargo
database using the updated CPRS key"]:::main N_SearchAgainwithUpdatedKey_Node0 -- Yes --> N_SearchAgainwithUpdatedKey_Node0_action N_SearchAgainwithUpdatedKey_Node0_action --> E_SearchAgainwithUpdatedKey S_SearchAgainwithUpdatedKey --> N_SearchAgainwithUpdatedKey_Node0 N_SearchAgainwithUpdatedKey_Node0 -- No --> E_SearchAgainwithUpdatedKey
File: GCX016E.cbl
GIVEN: A renumbered US-CCN key has been created for CPRS traffic
WHEN: The system searches the database again
THEN: The system queries the cargo database using the updated CPRS key
βœ“ Consolidated Acceptance Criteria
  • If the search results → if a record is found, retrieve the existing cargo record; otherwise create a new CPRS 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_RecordFoundAfterCPRSProcessing(["Start Step"]) E_RecordFoundAfterCPRSProcessing(["End Step"]) N_RecordFoundAfterCPRSProcessing_Node0{"The system evaluates the search
results"}:::decision N_RecordFoundAfterCPRSProcessing_Node0_action["If a record is found, retrieve the
existing cargo record otherwise
create a new CPRS cargo record"]:::main N_RecordFoundAfterCPRSProcessing_Node0 -- Yes --> N_RecordFoundAfterCPRSProcessing_Node0_action N_RecordFoundAfterCPRSProcessing_Node0_action --> E_RecordFoundAfterCPRSProcessing S_RecordFoundAfterCPRSProcessing --> N_RecordFoundAfterCPRSProcessing_Node0 N_RecordFoundAfterCPRSProcessing_Node0 -- No --> E_RecordFoundAfterCPRSProcessing
File: GCX016E.cbl
GIVEN: CPRS special processing and secondary search have been completed
WHEN: The system evaluates the search results
THEN: If a record is found, retrieve the existing cargo record; otherwise create a new CPRS cargo record
βœ“ Consolidated Acceptance Criteria
  • The record initialization process begins → the new record is populated with the car ID and basic 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_InitializeNewRecordwithCarID(["Start Step"]) E_InitializeNewRecordwithCarID(["End Step"]) N_InitializeNewRecordwithCarID_Node0{"The record initialization process
begins"}:::decision N_InitializeNewRecordwithCarID_Node0_action["The new record is populated with
the car ID and basic identification
information"]:::main N_InitializeNewRecordwithCarID_Node0 -- Yes --> N_InitializeNewRecordwithCarID_Node0_action N_InitializeNewRecordwithCarID_Node0_action --> E_InitializeNewRecordwithCarID S_InitializeNewRecordwithCarID --> N_InitializeNewRecordwithCarID_Node0 N_InitializeNewRecordwithCarID_Node0 -- No --> E_InitializeNewRecordwithCarID
File: GCX016E.cbl
GIVEN: A new CPRS cargo record is being created
WHEN: The record initialization process begins
THEN:
  • The new record is populated with the car id
  • Basic identification information
βœ“ Consolidated Acceptance Criteria
  • CPRS-specific attributes need to be set → the system applies CPRS-specific flags, processing indicators, and business rule markers
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetCPRSSpecificFlags(["Start Step"]) E_SetCPRSSpecificFlags(["End Step"]) N_SetCPRSSpecificFlags_Node0{"CPRS-specific attributes need to be
set"}:::decision N_SetCPRSSpecificFlags_Node0_action["The system applies CPRS-specific
flags, processing indicators, and
business rule markers"]:::main N_SetCPRSSpecificFlags_Node0 -- Yes --> N_SetCPRSSpecificFlags_Node0_action N_SetCPRSSpecificFlags_Node0_action --> E_SetCPRSSpecificFlags S_SetCPRSSpecificFlags --> N_SetCPRSSpecificFlags_Node0 N_SetCPRSSpecificFlags_Node0 -- No --> E_SetCPRSSpecificFlags
File: GCX016E.cbl
GIVEN: A new CPRS cargo record is being initialized
WHEN: CPRS-specific attributes need to be set
THEN: The system applies CPRS-specific flags, processing indicators, and business rule markers
βœ“ Consolidated Acceptance Criteria
  • Audit logging is required → the system creates log entries documenting the CPRS cargo creation event
  • The system logs the cargo creation event → the system should create an audit log entry documenting the creation of the new CPRS cargo record 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_LogCPRSCargoCreation(["Start Step"]) E_LogCPRSCargoCreation(["End Step"]) N_LogCPRSCargoCreation_Node0{"Audit logging is required"}:::decision N_LogCPRSCargoCreation_Node0_action["The system creates log entries
documenting the CPRS cargo creation
event"]:::main N_LogCPRSCargoCreation_Node0 -- Yes --> N_LogCPRSCargoCreation_Node0_action N_LogCPRSCargoCreation_Node0_action --> E_LogCPRSCargoCreation S_LogCPRSCargoCreation --> N_LogCPRSCargoCreation_Node0 N_LogCPRSCargoCreation_Node1{"The system logs the cargo creation
event"}:::decision N_LogCPRSCargoCreation_Node1_action["The system should create an audit
log entry documenting the creation
of the new CPRS cargo record with
relevant details"]:::main N_LogCPRSCargoCreation_Node1 -- Yes --> N_LogCPRSCargoCreation_Node1_action N_LogCPRSCargoCreation_Node1_action --> E_LogCPRSCargoCreation N_LogCPRSCargoCreation_Node0 -- No --> N_LogCPRSCargoCreation_Node1 N_LogCPRSCargoCreation_Node1 -- No --> E_LogCPRSCargoCreation
File: GCX016E.cbl
GIVEN: A new CPRS cargo record has been successfully inserted into the database
WHEN: Audit logging is required
THEN: The system creates log entries documenting the CPRS cargo creation event
File: GCX016E.cbl
GIVEN: The database insert operation was successful
WHEN: The system logs the cargo creation event
THEN: The system should create an audit log entry documenting the creation of the new CPRS cargo record with relevant details
βœ“ Consolidated Acceptance Criteria
  • The cargo lookup process fails → the system generates an error message indicating the cargo could not be located for the given 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_GenerateErrorMessageforMissingCargo(["Start Step"]) E_GenerateErrorMessageforMissingCargo(["End Step"]) N_GenerateErrorMessageforMissingCargo_Node0{"The cargo lookup process fails"}:::decision N_GenerateErrorMessageforMissingCargo_Node0_action["The system generates an error
message indicating the cargo could
not be located for the given car ID"]:::main N_GenerateErrorMessageforMissingCargo_Node0 -- Yes --> N_GenerateErrorMessageforMissingCargo_Node0_action N_GenerateErrorMessageforMissingCargo_Node0_action --> E_GenerateErrorMessageforMissingCargo S_GenerateErrorMessageforMissingCargo --> N_GenerateErrorMessageforMissingCargo_Node0 N_GenerateErrorMessageforMissingCargo_Node0 -- No --> E_GenerateErrorMessageforMissingCargo
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: No cargo record exists and the traffic is not CPRS type
WHEN: The cargo lookup process fails
THEN: The system generates an error message indicating the cargo could not be located for the given car ID
βœ“ Consolidated Acceptance Criteria
  • System prepares to search for cargo records → system builds composite search key using 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_BuildCarWaybillSearchKey(["Start Step"]) E_BuildCarWaybillSearchKey(["End Step"]) N_BuildCarWaybillSearchKey_Node0{"System prepares to search for cargo
records"}:::decision N_BuildCarWaybillSearchKey_Node0_action["System builds composite search key
using car ID and waybill number
combination"]:::main N_BuildCarWaybillSearchKey_Node0 -- Yes --> N_BuildCarWaybillSearchKey_Node0_action N_BuildCarWaybillSearchKey_Node0_action --> E_BuildCarWaybillSearchKey S_BuildCarWaybillSearchKey --> N_BuildCarWaybillSearchKey_Node0 N_BuildCarWaybillSearchKey_Node0 -- No --> E_BuildCarWaybillSearchKey
File: GCX016E.cbl
GIVEN: Formatted car ID and waybill number are available
WHEN: System prepares to search for cargo records
THEN:
  • System builds composite search key using car id
  • Waybill number combination
βœ“ Consolidated Acceptance Criteria
  • System searches GCSUSRT database using car/waybill index → system retrieves cargo records matching the car/waybill 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_SearchGCSUSRTDatabasebyCarWaybillIndex(["Start Step"]) E_SearchGCSUSRTDatabasebyCarWaybillIndex(["End Step"]) N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0{"System searches GCSUSRT database
using carwaybill index"}:::decision N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0_action["System retrieves cargo records
matching the carwaybill combination"]:::main N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0 -- Yes --> N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0_action N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0_action --> E_SearchGCSUSRTDatabasebyCarWaybillIndex S_SearchGCSUSRTDatabasebyCarWaybillIndex --> N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0 N_SearchGCSUSRTDatabasebyCarWaybillIndex_Node0 -- No --> E_SearchGCSUSRTDatabasebyCarWaybillIndex
File: GCX016E.cbl
GIVEN: Car/waybill search key is constructed
WHEN: System searches GCSUSRT database using car/waybill index
THEN: System retrieves cargo records matching the car/waybill combination
βœ“ Consolidated Acceptance Criteria
  • System processes the cargo record data → system stores cargo information in working storage 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_StoreCargoInformation(["Start Step"]) E_StoreCargoInformation(["End Step"]) N_StoreCargoInformation_Node0{"System processes the cargo record
data"}:::decision N_StoreCargoInformation_Node0_action["System stores cargo information in
working storage for further
processing"]:::main N_StoreCargoInformation_Node0 -- Yes --> N_StoreCargoInformation_Node0_action N_StoreCargoInformation_Node0_action --> E_StoreCargoInformation S_StoreCargoInformation --> N_StoreCargoInformation_Node0 N_StoreCargoInformation_Node0 -- No --> E_StoreCargoInformation
File: GCX016E.cbl
GIVEN: First cargo record is successfully retrieved
WHEN: System processes the cargo record data
THEN: System stores cargo information in working storage for further processing
βœ“ Consolidated Acceptance Criteria
  • System searches for additional records with same car/waybill → system identifies all remaining cargo records with matching car/waybill 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_SearchforAdditionalRecordswithSameCarWaybill(["Start Step"]) E_SearchforAdditionalRecordswithSameCarWaybill(["End Step"]) N_SearchforAdditionalRecordswithSameCarWaybill_Node0{"System searches for additional
records with same carwaybill"}:::decision N_SearchforAdditionalRecordswithSameCarWaybill_Node0_action["System identifies all remaining
cargo records with matching
carwaybill combination"]:::main N_SearchforAdditionalRecordswithSameCarWaybill_Node0 -- Yes --> N_SearchforAdditionalRecordswithSameCarWaybill_Node0_action N_SearchforAdditionalRecordswithSameCarWaybill_Node0_action --> E_SearchforAdditionalRecordswithSameCarWaybill S_SearchforAdditionalRecordswithSameCarWaybill --> N_SearchforAdditionalRecordswithSameCarWaybill_Node0 N_SearchforAdditionalRecordswithSameCarWaybill_Node0 -- No --> E_SearchforAdditionalRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: First cargo record is processed and stored
WHEN: System searches for additional records with same car/waybill
THEN: System identifies all remaining cargo records with matching car/waybill combination
βœ“ Consolidated Acceptance Criteria
  • System evaluates search results for more records → system determines if additional records exist and continues retrieval or proceeds to next processing step
  • The system checks for additional unprocessed records → if more records exist, continue processing individual records, otherwise proceed to status 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_MoreRecordsFound(["Start Step"]) E_MoreRecordsFound(["End Step"]) N_MoreRecordsFound_Node0{"System evaluates search results for
more records"}:::decision N_MoreRecordsFound_Node0_action["System determines if additional
records exist and continues
retrieval or proceeds to next
processing step"]:::main N_MoreRecordsFound_Node0 -- Yes --> N_MoreRecordsFound_Node0_action N_MoreRecordsFound_Node0_action --> E_MoreRecordsFound S_MoreRecordsFound --> N_MoreRecordsFound_Node0 N_MoreRecordsFound_Node1{"The system checks for additional
unprocessed records"}:::decision N_MoreRecordsFound_Node1_action["If more records exist, continue
processing individual records,
otherwise proceed to status
comparison"]:::main N_MoreRecordsFound_Node1 -- Yes --> N_MoreRecordsFound_Node1_action N_MoreRecordsFound_Node1_action --> E_MoreRecordsFound N_MoreRecordsFound_Node0 -- No --> N_MoreRecordsFound_Node1 N_MoreRecordsFound_Node1 -- No --> E_MoreRecordsFound
File: GCX016E.cbl
GIVEN: Search for additional cargo records is completed
WHEN: System evaluates search results for more records
THEN:
  • System determines if additional records exist
  • Continues retrieval or proceeds to next processing step
File: GCX016E.cbl
GIVEN: A search for cargo records with matching car ID and waybill has been performed
WHEN: The system checks for additional unprocessed records
THEN: If more records exist, continue processing individual records, otherwise proceed to status comparison
βœ“ Consolidated Acceptance Criteria
  • System processes the additional cargo record → system adds cargo record to the collection and continues search for more 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_AddtoCargoCollection(["Start Step"]) E_AddtoCargoCollection(["End Step"]) N_AddtoCargoCollection_Node0{"System processes the additional
cargo record"}:::decision N_AddtoCargoCollection_Node0_action["System adds cargo record to the
collection and continues search for
more records"]:::main N_AddtoCargoCollection_Node0 -- Yes --> N_AddtoCargoCollection_Node0_action N_AddtoCargoCollection_Node0_action --> E_AddtoCargoCollection S_AddtoCargoCollection --> N_AddtoCargoCollection_Node0 N_AddtoCargoCollection_Node0 -- No --> E_AddtoCargoCollection
File: GCX016E.cbl
GIVEN: Additional cargo record is successfully retrieved
WHEN: System processes the additional cargo record
THEN:
  • System adds cargo record to the collection
  • Continues search for more records
βœ“ Consolidated Acceptance Criteria
  • System applies CPRS handling rules → system clears car ID information and applies CPRS-specific 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_ApplyCPRSHandlingRules(["Start Step"]) E_ApplyCPRSHandlingRules(["End Step"]) N_ApplyCPRSHandlingRules_Node0{"System applies CPRS handling rules"}:::decision N_ApplyCPRSHandlingRules_Node0_action["System clears car ID information
and applies CPRS-specific processing
logic"]:::main N_ApplyCPRSHandlingRules_Node0 -- Yes --> N_ApplyCPRSHandlingRules_Node0_action N_ApplyCPRSHandlingRules_Node0_action --> E_ApplyCPRSHandlingRules S_ApplyCPRSHandlingRules --> N_ApplyCPRSHandlingRules_Node0 N_ApplyCPRSHandlingRules_Node0 -- No --> E_ApplyCPRSHandlingRules
File: GCX016E.cbl
GIVEN: Cargo is identified as CPRS traffic
WHEN: System applies CPRS handling rules
THEN:
  • System clears car id information
  • Applies cprs-specific processing logic
βœ“ Consolidated Acceptance Criteria
  • System validates car ID format → system ensures car ID meets format requirements and is ready 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_ValidateCarIDFormat(["Start Step"]) E_ValidateCarIDFormat(["End Step"]) N_ValidateCarIDFormat_Node0{"System validates car ID format"}:::decision N_ValidateCarIDFormat_Node0_action["System ensures car ID meets format
requirements and is ready for
processing"]:::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: GCX016E.cbl
GIVEN: Car ID is formatted and CPRS processing is completed if applicable
WHEN: System validates car ID format
THEN:
  • System ensures car id meets format requirements
  • Is ready for processing
βœ“ Consolidated Acceptance Criteria
  • System completes cargo lookup operation → system returns complete collection of matching cargo records 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_ReturnAllMatchingCargoRecords(["Start Step"]) E_ReturnAllMatchingCargoRecords(["End Step"]) N_ReturnAllMatchingCargoRecords_Node0{"System completes cargo lookup
operation"}:::decision N_ReturnAllMatchingCargoRecords_Node0_action["System returns complete collection
of matching cargo records for
further processing"]:::main N_ReturnAllMatchingCargoRecords_Node0 -- Yes --> N_ReturnAllMatchingCargoRecords_Node0_action N_ReturnAllMatchingCargoRecords_Node0_action --> E_ReturnAllMatchingCargoRecords S_ReturnAllMatchingCargoRecords --> N_ReturnAllMatchingCargoRecords_Node0 N_ReturnAllMatchingCargoRecords_Node0 -- No --> E_ReturnAllMatchingCargoRecords
File: GCX016E.cbl
GIVEN: All cargo records are retrieved, validated, and processed
WHEN: System completes cargo lookup operation
THEN: System returns complete collection of matching cargo records for further processing
βœ“ Consolidated Acceptance Criteria
  • System handles cargo not found scenario → system logs the not found condition and continues processing without cargo records
  • The system processes the cargo not found scenario → the system initiates appropriate error handling procedures for missing cargo situations
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleCargoNotFoundScenario(["Start Step"]) E_HandleCargoNotFoundScenario(["End Step"]) N_HandleCargoNotFoundScenario_Node0{"System handles cargo not found
scenario"}:::decision N_HandleCargoNotFoundScenario_Node0_action["System logs the not found condition
and continues processing without
cargo records"]:::main N_HandleCargoNotFoundScenario_Node0 -- Yes --> N_HandleCargoNotFoundScenario_Node0_action N_HandleCargoNotFoundScenario_Node0_action --> E_HandleCargoNotFoundScenario S_HandleCargoNotFoundScenario --> N_HandleCargoNotFoundScenario_Node0 N_HandleCargoNotFoundScenario_Node1{"The system processes the cargo not
found scenario"}:::decision N_HandleCargoNotFoundScenario_Node1_action["The system initiates appropriate
error handling procedures for
missing cargo situations"]:::main N_HandleCargoNotFoundScenario_Node1 -- Yes --> N_HandleCargoNotFoundScenario_Node1_action N_HandleCargoNotFoundScenario_Node1_action --> E_HandleCargoNotFoundScenario N_HandleCargoNotFoundScenario_Node0 -- No --> N_HandleCargoNotFoundScenario_Node1 N_HandleCargoNotFoundScenario_Node1 -- No --> E_HandleCargoNotFoundScenario
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: No cargo records exist for the specified car/waybill combination
WHEN: System handles cargo not found scenario
THEN:
  • System logs the not found condition
  • Continues processing without cargo records
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Both primary and secondary cargo searches have failed to locate any matching cargo records
WHEN: The system processes the cargo not found scenario
THEN: The system initiates appropriate error handling procedures for missing cargo situations
βœ“ Consolidated Acceptance Criteria
  • System logs search results → system records search outcome including number of records found or not found status
  • The system logs search results → search outcome is recorded with equipment ID and result 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_LogSearchResults(["Start Step"]) E_LogSearchResults(["End Step"]) N_LogSearchResults_Node0{"System logs search results"}:::decision N_LogSearchResults_Node0_action["System records search outcome
including number of records found or
not found status"]:::main N_LogSearchResults_Node0 -- Yes --> N_LogSearchResults_Node0_action N_LogSearchResults_Node0_action --> E_LogSearchResults S_LogSearchResults --> N_LogSearchResults_Node0 N_LogSearchResults_Node1{"The system logs search results"}:::decision N_LogSearchResults_Node1_action["Search outcome is recorded with
equipment ID and result status
information"]:::main N_LogSearchResults_Node1 -- Yes --> N_LogSearchResults_Node1_action N_LogSearchResults_Node1_action --> E_LogSearchResults N_LogSearchResults_Node0 -- No --> N_LogSearchResults_Node1 N_LogSearchResults_Node1 -- No --> E_LogSearchResults
File: GCX016E.cbl
GIVEN: Cargo lookup operation is completed with or without results
WHEN: System logs search results
THEN: System records search outcome including number of records found or not found status
File: GCX016E.cbl
GIVEN: Canadian manifest search has been completed with either match or no match results
WHEN: The system logs search results
THEN:
  • Search outcome is recorded with equipment id
  • Result status information
βœ“ Consolidated Acceptance Criteria
  • If the disposition code type → the system must categorize it as Hold, Release, Arrival, Export, Seizure, Status Information, or Cancellation action type
  • If the disposition code type → the code is classified as either a hold code or release code based on the disposition code table definition
  • If the disposition code type → the system routes to appropriate status update based on code type: HRE for hold release, SEI for seizure, SER for seizure release, or other hold types
  • If the disposition code type → the code is classified as HMI Hold, HRE Release, SEI Seizure, or SER Seizure Release for appropriate processing
  • If the disposition code type → the system should route to A1 processing if A1 code or A3 processing if A3 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_DispositionCodeType(["Start Step"]) E_DispositionCodeType(["End Step"]) N_DispositionCodeType_Node0{"The system evaluates the
disposition code type"}:::decision N_DispositionCodeType_Node0_action["The system must categorize it as
Hold, Release, Arrival, Export,
Seizure, Status Information, or
Cancellation action type"]:::main N_DispositionCodeType_Node0 -- Yes --> N_DispositionCodeType_Node0_action N_DispositionCodeType_Node0_action --> E_DispositionCodeType S_DispositionCodeType --> N_DispositionCodeType_Node0 N_DispositionCodeType_Node1{"The system evaluates the
disposition code type"}:::decision N_DispositionCodeType_Node1_action["The code is classified as either a
hold code or release code based on
the disposition code table
definition"]:::main N_DispositionCodeType_Node1 -- Yes --> N_DispositionCodeType_Node1_action N_DispositionCodeType_Node1_action --> E_DispositionCodeType N_DispositionCodeType_Node0 -- No --> N_DispositionCodeType_Node1 N_DispositionCodeType_Node2{"The system evaluates the
disposition code type"}:::decision N_DispositionCodeType_Node2_action["The system routes to appropriate
status update based on code type:
HRE for hold release, SEI for
seizure, SER for seizure release, or
other hold types"]:::main N_DispositionCodeType_Node2 -- Yes --> N_DispositionCodeType_Node2_action N_DispositionCodeType_Node2_action --> E_DispositionCodeType N_DispositionCodeType_Node1 -- No --> N_DispositionCodeType_Node2 N_DispositionCodeType_Node3{"The system evaluates the
disposition code type"}:::decision N_DispositionCodeType_Node3_action["The code is classified as HMI Hold,
HRE Release, SEI Seizure, or SER
Seizure Release for appropriate
processing"]:::main N_DispositionCodeType_Node3 -- Yes --> N_DispositionCodeType_Node3_action N_DispositionCodeType_Node3_action --> E_DispositionCodeType N_DispositionCodeType_Node2 -- No --> N_DispositionCodeType_Node3 N_DispositionCodeType_Node4{"The system evaluates the
disposition code type"}:::decision N_DispositionCodeType_Node4_action["The system should route to A1
processing if A1 code or A3
processing if A3 code"]:::main N_DispositionCodeType_Node4 -- Yes --> N_DispositionCodeType_Node4_action N_DispositionCodeType_Node4_action --> E_DispositionCodeType N_DispositionCodeType_Node3 -- No --> N_DispositionCodeType_Node4 N_DispositionCodeType_Node4 -- No --> E_DispositionCodeType
File: GCX016E.cbl
GIVEN: A disposition code is received for cargo processing
WHEN: The system evaluates the disposition code type
THEN: The system must categorize it as Hold, Release, Arrival, Export, Seizure, Status Information, or Cancellation action type
File: GCX016E.cbl
GIVEN: A disposition code is received for cargo processing
WHEN: The system evaluates the disposition code type
THEN: The code is classified as either a hold code or release code based on the disposition code table definition
File: GCX016E.cbl
GIVEN: Equipment exists or has been added to the train list
WHEN: The system evaluates the disposition code type
THEN: The system routes to appropriate status update based on code type: HRE for hold release, SEI for seizure, SER for seizure release, or other hold types
File: GCX016E.cbl
GIVEN: A VID disposition code has been determined
WHEN: The system evaluates the disposition code type
THEN: The code is classified as HMI Hold, HRE Release, SEI Seizure, or SER Seizure Release for appropriate processing
File: GCX016E.cbl
GIVEN: An N9 reference segment with disposition code is being processed
WHEN: The system evaluates the disposition code type
THEN: The system should route to A1 processing if A1 code or A3 processing if A3 code
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold disposition code → the system must log the hold action with disposition code details and action 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_LogHoldAction(["Start Step"]) E_LogHoldAction(["End Step"]) N_LogHoldAction_Node0{"The system processes the hold
disposition code"}:::decision N_LogHoldAction_Node0_action["The system must log the hold action
with disposition code details and
action description"]:::main N_LogHoldAction_Node0 -- Yes --> N_LogHoldAction_Node0_action N_LogHoldAction_Node0_action --> E_LogHoldAction S_LogHoldAction --> N_LogHoldAction_Node0 N_LogHoldAction_Node0 -- No --> E_LogHoldAction
File: GCX016E.cbl
GIVEN: A disposition code is classified as a hold action type
WHEN: The system processes the hold disposition code
THEN:
  • The system must log the hold action with disposition code details
  • Action description
βœ“ Consolidated Acceptance Criteria
  • The system processes the release disposition code → the system must log the release action with disposition code details and action 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_LogReleaseAction(["Start Step"]) E_LogReleaseAction(["End Step"]) N_LogReleaseAction_Node0{"The system processes the release
disposition code"}:::decision N_LogReleaseAction_Node0_action["The system must log the release
action with disposition code details
and action description"]:::main N_LogReleaseAction_Node0 -- Yes --> N_LogReleaseAction_Node0_action N_LogReleaseAction_Node0_action --> E_LogReleaseAction S_LogReleaseAction --> N_LogReleaseAction_Node0 N_LogReleaseAction_Node0 -- No --> E_LogReleaseAction
File: GCX016E.cbl
GIVEN: A disposition code is classified as a release action type
WHEN: The system processes the release disposition code
THEN:
  • The system must log the release action with disposition code details
  • Action description
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival disposition code → the system must log the arrival action with disposition code details and action description
  • The system processes audit and logging requirements → the arrival action is logged for audit trail and historical tracking
  • The system logs the arrival action → the system creates a log entry recording the arrival event, processing details, and distribution 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_LogArrivalAction(["Start Step"]) E_LogArrivalAction(["End Step"]) N_LogArrivalAction_Node0{"The system processes the arrival
disposition code"}:::decision N_LogArrivalAction_Node0_action["The system must log the arrival
action with disposition code details
and action description"]:::main N_LogArrivalAction_Node0 -- Yes --> N_LogArrivalAction_Node0_action N_LogArrivalAction_Node0_action --> E_LogArrivalAction S_LogArrivalAction --> N_LogArrivalAction_Node0 N_LogArrivalAction_Node1{"The system processes audit and
logging requirements"}:::decision N_LogArrivalAction_Node1_action["The arrival action is logged for
audit trail and historical tracking"]:::main N_LogArrivalAction_Node1 -- Yes --> N_LogArrivalAction_Node1_action N_LogArrivalAction_Node1_action --> E_LogArrivalAction N_LogArrivalAction_Node0 -- No --> N_LogArrivalAction_Node1 N_LogArrivalAction_Node2{"The system logs the arrival action"}:::decision N_LogArrivalAction_Node2_action["The system creates a log entry
recording the arrival event,
processing details, and distribution
results"]:::main N_LogArrivalAction_Node2 -- Yes --> N_LogArrivalAction_Node2_action N_LogArrivalAction_Node2_action --> E_LogArrivalAction N_LogArrivalAction_Node1 -- No --> N_LogArrivalAction_Node2 N_LogArrivalAction_Node2 -- No --> E_LogArrivalAction
File: GCX016E.cbl
GIVEN: A disposition code is classified as an arrival action type
WHEN: The system processes the arrival disposition code
THEN:
  • The system must log the arrival action with disposition code details
  • Action description
File: GCX016E.cbl
GIVEN: AEI notification message has been sent
WHEN:
  • The system processes audit
  • Logging requirements
THEN:
  • The arrival action is logged for audit trail
  • Historical tracking
File: GCX016E.cbl
GIVEN: An arrival notification has been successfully distributed
WHEN: The system logs the arrival action
THEN: The system creates a log entry recording the arrival event, processing details, and distribution results
βœ“ Consolidated Acceptance Criteria
  • The system processes the export disposition code → the system must log the export action with disposition code details and action description
  • The system completes the export processing workflow → the system creates a log entry documenting the export action, timestamp, and processing details
  • The cargo record has been updated → an audit log entry is created recording the export 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_LogExportAction(["Start Step"]) E_LogExportAction(["End Step"]) N_LogExportAction_Node0{"The system processes the export
disposition code"}:::decision N_LogExportAction_Node0_action["The system must log the export
action with disposition code details
and action description"]:::main N_LogExportAction_Node0 -- Yes --> N_LogExportAction_Node0_action N_LogExportAction_Node0_action --> E_LogExportAction S_LogExportAction --> N_LogExportAction_Node0 N_LogExportAction_Node1{"The system completes the export
processing workflow"}:::decision N_LogExportAction_Node1_action["The system creates a log entry
documenting the export action,
timestamp, and processing details"]:::main N_LogExportAction_Node1 -- Yes --> N_LogExportAction_Node1_action N_LogExportAction_Node1_action --> E_LogExportAction N_LogExportAction_Node0 -- No --> N_LogExportAction_Node1 N_LogExportAction_Node2{"The cargo record has been updated"}:::decision N_LogExportAction_Node2_action["An audit log entry is created
recording the export action with
timestamp and cargo details"]:::main N_LogExportAction_Node2 -- Yes --> N_LogExportAction_Node2_action N_LogExportAction_Node2_action --> E_LogExportAction N_LogExportAction_Node1 -- No --> N_LogExportAction_Node2 N_LogExportAction_Node2 -- No --> E_LogExportAction
File: GCX016E.cbl
GIVEN: A disposition code is classified as an export action type
WHEN: The system processes the export disposition code
THEN:
  • The system must log the export action with disposition code details
  • Action description
File: GCX016E.cbl
GIVEN: The cargo record has been updated with export information
WHEN: The system completes the export processing workflow
THEN: The system creates a log entry documenting the export action, timestamp, and processing details
File: GCX016E.cbl
GIVEN: A cargo has been processed for export
WHEN: The cargo record has been updated
THEN:
  • An audit log entry is created recording the export action with timestamp
  • Cargo details
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure disposition code → the system must log the seizure action with disposition code details and action 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_LogSeizureAction(["Start Step"]) E_LogSeizureAction(["End Step"]) N_LogSeizureAction_Node0{"The system processes the seizure
disposition code"}:::decision N_LogSeizureAction_Node0_action["The system must log the seizure
action with disposition code details
and action description"]:::main N_LogSeizureAction_Node0 -- Yes --> N_LogSeizureAction_Node0_action N_LogSeizureAction_Node0_action --> E_LogSeizureAction S_LogSeizureAction --> N_LogSeizureAction_Node0 N_LogSeizureAction_Node0 -- No --> E_LogSeizureAction
File: GCX016E.cbl
GIVEN: A disposition code is classified as a seizure action type
WHEN: The system processes the seizure disposition code
THEN:
  • The system must log the seizure action with disposition code details
  • Action description
βœ“ Consolidated Acceptance Criteria
  • The system processes the status information disposition code → the system must log the status information with disposition code details and action 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_LogStatusInformation(["Start Step"]) E_LogStatusInformation(["End Step"]) N_LogStatusInformation_Node0{"The system processes the status
information disposition code"}:::decision N_LogStatusInformation_Node0_action["The system must log the status
information with disposition code
details and action description"]:::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: GCX016E.cbl
GIVEN: A disposition code is classified as status information type
WHEN: The system processes the status information disposition code
THEN:
  • The system must log the status information with disposition code details
  • Action description
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancellation disposition code → the system must log the cancellation action with disposition code details and action 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_LogCancellationAction(["Start Step"]) E_LogCancellationAction(["End Step"]) N_LogCancellationAction_Node0{"The system processes the
cancellation disposition code"}:::decision N_LogCancellationAction_Node0_action["The system must log the
cancellation action with disposition
code details and action description"]:::main N_LogCancellationAction_Node0 -- Yes --> N_LogCancellationAction_Node0_action N_LogCancellationAction_Node0_action --> E_LogCancellationAction S_LogCancellationAction --> N_LogCancellationAction_Node0 N_LogCancellationAction_Node0 -- No --> E_LogCancellationAction
File: GCX016E.cbl
GIVEN: A disposition code is classified as a cancellation action type
WHEN: The system processes the cancellation disposition code
THEN:
  • The system must log the cancellation action with disposition code details
  • Action description
βœ“ Consolidated Acceptance Criteria
  • The system prepares the log message structure → the system must create a standardized message format ready for timestamp, equipment, disposition, 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_PrepareLogMessage(["Start Step"]) E_PrepareLogMessage(["End Step"]) N_PrepareLogMessage_Node0{"The system prepares the log message
structure"}:::decision N_PrepareLogMessage_Node0_action["The system must create a
standardized message format ready
for timestamp, equipment,
disposition, and user 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: GCX016E.cbl
GIVEN: A disposition code action has been categorized and logged
WHEN: The system prepares the log message structure
THEN: The system must create a standardized message format ready for timestamp, equipment, disposition, and user information
βœ“ Consolidated Acceptance Criteria
  • The system adds timestamp information to the log message → the system must include the current processing timestamp in the log message
  • Creating debug log entries → the system adds current timestamp information to track when the status processing 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_AddTimestampInformation(["Start Step"]) E_AddTimestampInformation(["End Step"]) N_AddTimestampInformation_Node0{"The system adds timestamp
information to the log message"}:::decision N_AddTimestampInformation_Node0_action["The system must include the current
processing timestamp in the log
message"]:::main N_AddTimestampInformation_Node0 -- Yes --> N_AddTimestampInformation_Node0_action N_AddTimestampInformation_Node0_action --> E_AddTimestampInformation S_AddTimestampInformation --> N_AddTimestampInformation_Node0 N_AddTimestampInformation_Node1{"Creating debug log entries"}:::decision N_AddTimestampInformation_Node1_action["The system adds current timestamp
information to track when the status
processing occurred"]:::main N_AddTimestampInformation_Node1 -- Yes --> N_AddTimestampInformation_Node1_action N_AddTimestampInformation_Node1_action --> E_AddTimestampInformation N_AddTimestampInformation_Node0 -- No --> N_AddTimestampInformation_Node1 N_AddTimestampInformation_Node1 -- No --> E_AddTimestampInformation
File: GCX016E.cbl
GIVEN: A log message structure has been prepared for cargo disposition action
WHEN: The system adds timestamp information to the log message
THEN: The system must include the current processing timestamp in the log message
File: GCX016E.cbl
GIVEN: Debug logging is being performed
WHEN: Creating debug log entries
THEN: The system adds current timestamp information to track when the status processing occurred
βœ“ Consolidated Acceptance Criteria
  • The system adds equipment details to the log message → the system must include equipment ID, waybill number, and US-CCN 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_AddEquipmentDetails(["Start Step"]) E_AddEquipmentDetails(["End Step"]) N_AddEquipmentDetails_Node0{"The system adds equipment details
to the log message"}:::decision N_AddEquipmentDetails_Node0_action["The system must include equipment
ID, waybill number, and US-CCN in
the log message"]:::main N_AddEquipmentDetails_Node0 -- Yes --> N_AddEquipmentDetails_Node0_action N_AddEquipmentDetails_Node0_action --> E_AddEquipmentDetails S_AddEquipmentDetails --> N_AddEquipmentDetails_Node0 N_AddEquipmentDetails_Node0 -- No --> E_AddEquipmentDetails
File: GCX016E.cbl
GIVEN: A log message has timestamp information added
WHEN: The system adds equipment details to the log message
THEN: The system must include equipment ID, waybill number, and US-CCN in the log message
βœ“ Consolidated Acceptance Criteria
  • The system adds disposition code details to the log message → the system must include the disposition code and corresponding action description in the log message
  • The system adds disposition code details → the system includes the disposition code, code description, and any associated quantities or references 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_AddDispositionCodeDetails(["Start Step"]) E_AddDispositionCodeDetails(["End Step"]) N_AddDispositionCodeDetails_Node0{"The system adds disposition code
details to the log message"}:::decision N_AddDispositionCodeDetails_Node0_action["The system must include the
disposition code and corresponding
action description in the log
message"]:::main N_AddDispositionCodeDetails_Node0 -- Yes --> N_AddDispositionCodeDetails_Node0_action N_AddDispositionCodeDetails_Node0_action --> E_AddDispositionCodeDetails S_AddDispositionCodeDetails --> N_AddDispositionCodeDetails_Node0 N_AddDispositionCodeDetails_Node1{"The system adds disposition code
details"}:::decision N_AddDispositionCodeDetails_Node1_action["The system includes the disposition
code, code description, and any
associated quantities or references
in the notification 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_Node1 -- No --> E_AddDispositionCodeDetails
File: GCX016E.cbl
GIVEN: A log message has equipment details added
WHEN: The system adds disposition code details to the log message
THEN:
  • The system must include the disposition code
  • Corresponding action description in the log message
File: GCX016E.cbl
GIVEN: An arrival notification is being formatted
WHEN: The system adds disposition code details
THEN: The system includes the disposition code, code description, and any associated quantities or references in the notification message
βœ“ Consolidated Acceptance Criteria
  • The system adds user information to the log message → the system must include the user ID who initiated the disposition code action 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_AddUserInformation(["Start Step"]) E_AddUserInformation(["End Step"]) N_AddUserInformation_Node0{"The system adds user information to
the log message"}:::decision N_AddUserInformation_Node0_action["The system must include the user ID
who initiated the disposition code
action in the log message"]:::main N_AddUserInformation_Node0 -- Yes --> N_AddUserInformation_Node0_action N_AddUserInformation_Node0_action --> E_AddUserInformation S_AddUserInformation --> N_AddUserInformation_Node0 N_AddUserInformation_Node0 -- No --> E_AddUserInformation
File: GCX016E.cbl
GIVEN: A log message has disposition code details added
WHEN: The system adds user information to the log message
THEN: The system must include the user ID who initiated the disposition code action in the log message
βœ“ Consolidated Acceptance Criteria
  • The system spawns GCT1051E transaction for logging → the system must invoke GCT1051E transaction with the complete log message for processing
  • The system is ready to create the log entry → the GCT1051E transaction should be spawned to create the audit log
  • The system spawns the GCT1051E transaction → the GCT1051E audit logging transaction is invoked to process the audit 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_SpawnGCT1051ETransaction(["Start Step"]) E_SpawnGCT1051ETransaction(["End Step"]) N_SpawnGCT1051ETransaction_Node0{"The system spawns GCT1051E
transaction for logging"}:::decision N_SpawnGCT1051ETransaction_Node0_action["The system must invoke GCT1051E
transaction with the complete log
message for processing"]:::main N_SpawnGCT1051ETransaction_Node0 -- Yes --> N_SpawnGCT1051ETransaction_Node0_action N_SpawnGCT1051ETransaction_Node0_action --> E_SpawnGCT1051ETransaction S_SpawnGCT1051ETransaction --> N_SpawnGCT1051ETransaction_Node0 N_SpawnGCT1051ETransaction_Node1{"The system is ready to create the
log entry"}:::decision N_SpawnGCT1051ETransaction_Node1_action["The GCT1051E transaction should be
spawned to create the audit log"]:::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 system spawns the GCT1051E
transaction"}:::decision N_SpawnGCT1051ETransaction_Node2_action["The GCT1051E audit logging
transaction is invoked to process
the audit log entry"]:::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: GCX016E.cbl
GIVEN: A complete log message with all required information has been prepared
WHEN: The system spawns GCT1051E transaction for logging
THEN: The system must invoke GCT1051E transaction with the complete log message for processing
File: GCX016E.cbl
GIVEN: All audit log information has been prepared
WHEN: The system is ready to create the log entry
THEN: The GCT1051E transaction should be spawned to create the audit log
File: GCX016E.cbl
GIVEN: An audit log entry is prepared with action code LOG-USE-INPUT-MESSAGE
WHEN: The system spawns the GCT1051E transaction
THEN: The GCT1051E audit logging transaction is invoked to process the audit log entry
βœ“ Consolidated Acceptance Criteria
  • The system writes to the audit trail → the system must permanently store the cargo disposition log message in the audit trail 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_WritetoAuditTrail(["Start Step"]) E_WritetoAuditTrail(["End Step"]) N_WritetoAuditTrail_Node0{"The system writes to the audit
trail"}:::decision N_WritetoAuditTrail_Node0_action["The system must permanently store
the cargo disposition log message in
the audit trail database"]:::main N_WritetoAuditTrail_Node0 -- Yes --> N_WritetoAuditTrail_Node0_action N_WritetoAuditTrail_Node0_action --> E_WritetoAuditTrail S_WritetoAuditTrail --> N_WritetoAuditTrail_Node0 N_WritetoAuditTrail_Node0 -- No --> E_WritetoAuditTrail
File: GCX016E.cbl
GIVEN: GCT1051E transaction has been spawned with the log message
WHEN: The system writes to the audit trail
THEN: The system must permanently store the cargo disposition log message in the audit trail database
βœ“ Consolidated Acceptance Criteria
  • The system validates logging success → the system must determine if the logging was successful or if an error occurred during 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_LoggingSuccessful(["Start Step"]) E_LoggingSuccessful(["End Step"]) N_LoggingSuccessful_Node0{"The system validates logging
success"}:::decision N_LoggingSuccessful_Node0_action["The system must determine if the
logging was successful or if an
error occurred during the process"]:::main N_LoggingSuccessful_Node0 -- Yes --> N_LoggingSuccessful_Node0_action N_LoggingSuccessful_Node0_action --> E_LoggingSuccessful S_LoggingSuccessful --> N_LoggingSuccessful_Node0 N_LoggingSuccessful_Node0 -- No --> E_LoggingSuccessful
File: GCX016E.cbl
GIVEN: The audit trail write operation has been attempted
WHEN: The system validates logging success
THEN: The system must determine if the logging was successful or if an error occurred during the process
βœ“ Consolidated Acceptance Criteria
  • The system handles the logging error → the system must implement appropriate error handling procedures and may generate error notifications
  • The system processes the failed spawn result → the system should handle the logging error without interrupting cargo processing
  • The system handles the logging error → the logging error is processed and handled appropriately without stopping the main cargo 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_HandleLoggingError(["Start Step"]) E_HandleLoggingError(["End Step"]) N_HandleLoggingError_Node0{"The system handles the logging
error"}:::decision N_HandleLoggingError_Node0_action["The system must implement
appropriate error handling
procedures and may generate error
notifications"]:::exclusion N_HandleLoggingError_Node0 -- Yes -->|Alternative| N_HandleLoggingError_Node0_action N_HandleLoggingError_Node0_action --> E_HandleLoggingError S_HandleLoggingError --> N_HandleLoggingError_Node0 N_HandleLoggingError_Node1{"The system processes the failed
spawn result"}:::decision N_HandleLoggingError_Node1_action["The system should handle the
logging error without interrupting
cargo processing"]:::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_Node2{"The system handles the logging
error"}:::decision N_HandleLoggingError_Node2_action["The logging error is processed and
handled appropriately without
stopping the main cargo processing
flow"]:::exclusion N_HandleLoggingError_Node2 -- Yes -->|Alternative| N_HandleLoggingError_Node2_action N_HandleLoggingError_Node2_action --> E_HandleLoggingError N_HandleLoggingError_Node1 -- No --> N_HandleLoggingError_Node2 N_HandleLoggingError_Node2 -- No --> E_HandleLoggingError
File: GCX016E.cbl
GIVEN: The cargo disposition logging has been validated as unsuccessful
WHEN: The system handles the logging error
THEN:
  • The system must implement appropriate error handling procedures
  • May generate error notifications
File: GCX016E.cbl
GIVEN: The GCT1051E transaction spawn failed
WHEN: The system processes the failed spawn result
THEN: The system should handle the logging error without interrupting cargo processing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The GCT1051E transaction spawn was not successful
WHEN: The system handles the logging error
THEN:
  • The logging error is processed
  • Handled appropriately without stopping the main cargo processing flow
βœ“ Consolidated Acceptance Criteria
  • The system ends the logging process → the system must properly terminate the logging process and clean up any resources 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_EndLoggingProcess(["Start Step"]) E_EndLoggingProcess(["End Step"]) N_EndLoggingProcess_Node0{"The system ends the logging process"}:::decision N_EndLoggingProcess_Node0_action["The system must properly terminate
the logging process and clean up any
resources used"]:::exclusion N_EndLoggingProcess_Node0 -- Yes -->|Alternative| N_EndLoggingProcess_Node0_action N_EndLoggingProcess_Node0_action --> E_EndLoggingProcess S_EndLoggingProcess --> N_EndLoggingProcess_Node0 N_EndLoggingProcess_Node0 -- No --> E_EndLoggingProcess
File: GCX016E.cbl
GIVEN: The cargo disposition logging process has either completed successfully or error handling has been performed
WHEN: The system ends the logging process
THEN:
  • The system must properly terminate the logging process
  • Clean up any resources used
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment → the free-form text content 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_ExtractFreeFormText(["Start Step"]) E_ExtractFreeFormText(["End Step"]) N_ExtractFreeFormText_Node0{"The system processes the K1 segment"}:::decision N_ExtractFreeFormText_Node0_action["The free-form text content is
extracted and prepared for
validation"]:::main N_ExtractFreeFormText_Node0 -- Yes --> N_ExtractFreeFormText_Node0_action N_ExtractFreeFormText_Node0_action --> E_ExtractFreeFormText S_ExtractFreeFormText --> N_ExtractFreeFormText_Node0 N_ExtractFreeFormText_Node0 -- No --> E_ExtractFreeFormText
File: GCX016E.cbl
GIVEN: A K1 segment contains free-form text data
WHEN: The system processes the K1 segment
THEN:
  • The free-form text content is extracted
  • Prepared for validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the text content → the text is either accepted as valid for further processing or rejected if it fails 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_TextValid(["Start Step"]) E_TextValid(["End Step"]) N_TextValid_Node0{"The system validates the text
content"}:::decision N_TextValid_Node0_action["The text is either accepted as
valid for further processing or
rejected if it fails validation
criteria"]:::exclusion N_TextValid_Node0 -- Yes -->|Alternative| N_TextValid_Node0_action N_TextValid_Node0_action --> E_TextValid S_TextValid --> N_TextValid_Node0 N_TextValid_Node0 -- No --> E_TextValid
File: GCX016E.cbl
GIVEN: Free-form text has been extracted from K1 segment
WHEN: The system validates the text content
THEN: The text is either accepted as valid for further processing or rejected if it fails validation criteria
βœ“ Consolidated Acceptance Criteria
  • The system processes the validated K1 content → the K1 message is stored in train message repository for inclusion in train 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_StoreK1MessageforTrain(["Start Step"]) E_StoreK1MessageforTrain(["End Step"]) N_StoreK1MessageforTrain_Node0{"The system processes the validated
K1 content"}:::decision N_StoreK1MessageforTrain_Node0_action["The K1 message is stored in train
message repository for inclusion in
train notifications"]:::main N_StoreK1MessageforTrain_Node0 -- Yes --> N_StoreK1MessageforTrain_Node0_action N_StoreK1MessageforTrain_Node0_action --> E_StoreK1MessageforTrain S_StoreK1MessageforTrain --> N_StoreK1MessageforTrain_Node0 N_StoreK1MessageforTrain_Node0 -- No --> E_StoreK1MessageforTrain
File: GCX016E.cbl
GIVEN: A valid K1 message is classified as train-related
WHEN: The system processes the validated K1 content
THEN: The K1 message is stored in train message repository for inclusion in train notifications
βœ“ Consolidated Acceptance Criteria
  • The system processes the validated K1 content → the K1 message is stored in cargo message repository for inclusion in cargo 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_StoreK1MessageforCargo(["Start Step"]) E_StoreK1MessageforCargo(["End Step"]) N_StoreK1MessageforCargo_Node0{"The system processes the validated
K1 content"}:::decision N_StoreK1MessageforCargo_Node0_action["The K1 message is stored in cargo
message repository for inclusion in
cargo notifications"]:::main N_StoreK1MessageforCargo_Node0 -- Yes --> N_StoreK1MessageforCargo_Node0_action N_StoreK1MessageforCargo_Node0_action --> E_StoreK1MessageforCargo S_StoreK1MessageforCargo --> N_StoreK1MessageforCargo_Node0 N_StoreK1MessageforCargo_Node0 -- No --> E_StoreK1MessageforCargo
File: GCX016E.cbl
GIVEN: A valid K1 message is classified as cargo-related
WHEN: The system processes the validated K1 content
THEN: The K1 message is stored in cargo message repository for inclusion in cargo notifications
βœ“ Consolidated Acceptance Criteria
  • The system completes K1 message storage → the K1 message processing action is logged with appropriate 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_LogK1MessageAction(["Start Step"]) E_LogK1MessageAction(["End Step"]) N_LogK1MessageAction_Node0{"The system completes K1 message
storage"}:::decision N_LogK1MessageAction_Node0_action["The K1 message processing action is
logged with appropriate details for
audit purposes"]:::main N_LogK1MessageAction_Node0 -- Yes --> N_LogK1MessageAction_Node0_action N_LogK1MessageAction_Node0_action --> E_LogK1MessageAction S_LogK1MessageAction --> N_LogK1MessageAction_Node0 N_LogK1MessageAction_Node0 -- No --> E_LogK1MessageAction
File: GCX016E.cbl
GIVEN: A K1 message has been stored for either train or cargo processing
WHEN: The system completes K1 message storage
THEN: The K1 message processing action is logged with appropriate details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system identifies related disposition codes → the K1 message is associated with the appropriate disposition code for combined processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AssociatewithDispositionCode(["Start Step"]) E_AssociatewithDispositionCode(["End Step"]) N_AssociatewithDispositionCode_Node0{"The system identifies related
disposition codes"}:::decision N_AssociatewithDispositionCode_Node0_action["The K1 message is associated with
the appropriate disposition code for
combined processing"]:::main N_AssociatewithDispositionCode_Node0 -- Yes --> N_AssociatewithDispositionCode_Node0_action N_AssociatewithDispositionCode_Node0_action --> E_AssociatewithDispositionCode S_AssociatewithDispositionCode --> N_AssociatewithDispositionCode_Node0 N_AssociatewithDispositionCode_Node0 -- No --> E_AssociatewithDispositionCode
File: GCX016E.cbl
GIVEN: A K1 message has been logged and processed
WHEN: The system identifies related disposition codes
THEN: The K1 message is associated with the appropriate disposition code for combined processing
βœ“ Consolidated Acceptance Criteria
  • If K1 content for special processing requirements → the K1 message is classified as either requiring special bond creation processing or standard remark processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SpecialK1Type(["Start Step"]) E_SpecialK1Type(["End Step"]) N_SpecialK1Type_Node0{"The system evaluates K1 content for
special processing requirements"}:::decision N_SpecialK1Type_Node0_action["The K1 message is classified as
either requiring special bond
creation processing or standard
remark processing"]:::main N_SpecialK1Type_Node0 -- Yes --> N_SpecialK1Type_Node0_action N_SpecialK1Type_Node0_action --> E_SpecialK1Type S_SpecialK1Type --> N_SpecialK1Type_Node0 N_SpecialK1Type_Node0 -- No --> E_SpecialK1Type
File: GCX016E.cbl
GIVEN: A K1 message is associated with a disposition code
WHEN: The system evaluates K1 content for special processing requirements
THEN: The K1 message is classified as either requiring special bond creation processing or standard remark processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the special K1 type → a broker bond creation message is generated for Canadian Pacific Railway processing
  • The comment content contains 'DIRECTOR OF CUSTOMS, CP RAIL' or 'CANADIAN PACIFIC LIMITED' or 'CANADIAN PACIFIC RAILWAY CO' → the system triggers Canadian Pacific Railway bond creation processing and generates appropriate broker bond 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_CanadianPacificRailwayBondCreation(["Start Step"]) E_CanadianPacificRailwayBondCreation(["End Step"]) N_CanadianPacificRailwayBondCreation_Node0{"The system processes the special K1
type"}:::decision N_CanadianPacificRailwayBondCreation_Node0_action["A broker bond creation message is
generated for Canadian Pacific
Railway processing"]:::main N_CanadianPacificRailwayBondCreation_Node0 -- Yes --> N_CanadianPacificRailwayBondCreation_Node0_action N_CanadianPacificRailwayBondCreation_Node0_action --> E_CanadianPacificRailwayBondCreation S_CanadianPacificRailwayBondCreation --> N_CanadianPacificRailwayBondCreation_Node0 N_CanadianPacificRailwayBondCreation_Node1{"The comment content contains
DIRECTOR OF CUSTOMS, CP RAIL or
CANADIAN PACIFIC LIMITED or CANADIAN
PACIFIC RAILWAY CO"}:::decision N_CanadianPacificRailwayBondCreation_Node1_action["The system triggers Canadian
Pacific Railway bond creation
processing and generates appropriate
broker bond messages"]:::main N_CanadianPacificRailwayBondCreation_Node1 -- Yes --> N_CanadianPacificRailwayBondCreation_Node1_action N_CanadianPacificRailwayBondCreation_Node1_action --> E_CanadianPacificRailwayBondCreation N_CanadianPacificRailwayBondCreation_Node0 -- No --> N_CanadianPacificRailwayBondCreation_Node1 N_CanadianPacificRailwayBondCreation_Node1 -- No --> E_CanadianPacificRailwayBondCreation
File: GCX016E.cbl
GIVEN: A K1 message contains Canadian Pacific Railway identifiers such as 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO'
WHEN: The system processes the special K1 type
THEN: A broker bond creation message is generated for Canadian Pacific Railway processing
File: GCX016E.cbl
GIVEN: A K1 comment has been classified as special comment type
WHEN: The comment content contains 'DIRECTOR OF CUSTOMS, CP RAIL' or 'CANADIAN PACIFIC LIMITED' or 'CANADIAN PACIFIC RAILWAY CO'
THEN:
  • The system triggers canadian pacific railway bond creation processing
  • Generates appropriate broker bond messages
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 message type → the K1 message is processed as a standard remark for inclusion in 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_StandardK1Remark(["Start Step"]) E_StandardK1Remark(["End Step"]) N_StandardK1Remark_Node0{"The system processes the K1 message
type"}:::decision N_StandardK1Remark_Node0_action["The K1 message is processed as a
standard remark for inclusion in
notifications"]:::main N_StandardK1Remark_Node0 -- Yes --> N_StandardK1Remark_Node0_action N_StandardK1Remark_Node0_action --> E_StandardK1Remark S_StandardK1Remark --> N_StandardK1Remark_Node0 N_StandardK1Remark_Node0 -- No --> E_StandardK1Remark
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A K1 message does not require special bond creation processing
WHEN: The system processes the K1 message type
THEN: The K1 message is processed as a standard remark for inclusion in notifications
βœ“ Consolidated Acceptance Criteria
  • The system prepares Merlin notifications → the K1 message content is added to appropriate Merlin messages for distribution
  • Merlin message composition is in progress → the quantity impact information is added to the Merlin message content for business user 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_AddtoMerlinMessage(["Start Step"]) E_AddtoMerlinMessage(["End Step"]) N_AddtoMerlinMessage_Node0{"The system prepares Merlin
notifications"}:::decision N_AddtoMerlinMessage_Node0_action["The K1 message content is added to
appropriate Merlin messages for
distribution"]:::main N_AddtoMerlinMessage_Node0 -- Yes --> N_AddtoMerlinMessage_Node0_action N_AddtoMerlinMessage_Node0_action --> E_AddtoMerlinMessage S_AddtoMerlinMessage --> N_AddtoMerlinMessage_Node0 N_AddtoMerlinMessage_Node1{"Merlin message composition is in
progress"}:::decision N_AddtoMerlinMessage_Node1_action["The quantity impact information is
added to the Merlin message content
for business user notification"]:::main N_AddtoMerlinMessage_Node1 -- Yes --> N_AddtoMerlinMessage_Node1_action N_AddtoMerlinMessage_Node1_action --> E_AddtoMerlinMessage N_AddtoMerlinMessage_Node0 -- No --> N_AddtoMerlinMessage_Node1 N_AddtoMerlinMessage_Node1 -- No --> E_AddtoMerlinMessage
File: GCX016E.cbl
GIVEN: A K1 message has been processed as either special bond creation or standard remark
WHEN: The system prepares Merlin notifications
THEN: The K1 message content is added to appropriate Merlin messages for distribution
File: GCX016E.cbl
GIVEN: A quantity impact description has been created
WHEN: Merlin message composition is in progress
THEN: The quantity impact information is added to the Merlin message content for business user notification
βœ“ Consolidated Acceptance Criteria
  • The system formats the notification content → k1 comments are formatted with up to 4 lines of K1 segment comments as available and properly structured for recipient 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_FormatK1Comments(["Start Step"]) E_FormatK1Comments(["End Step"]) N_FormatK1Comments_Node0{"The system formats the notification
content"}:::decision N_FormatK1Comments_Node0_action["K1 comments are formatted with up
to 4 lines of K1 segment comments as
available and properly structured
for recipient systems"]:::main N_FormatK1Comments_Node0 -- Yes --> N_FormatK1Comments_Node0_action N_FormatK1Comments_Node0_action --> E_FormatK1Comments S_FormatK1Comments --> N_FormatK1Comments_Node0 N_FormatK1Comments_Node0 -- No --> E_FormatK1Comments
File: GCX016E.cbl
GIVEN: K1 messages are included in cargo and train notifications
WHEN: The system formats the notification content
THEN:
  • K1 comments are formatted with up to 4 lines of k1 segment comments as available
  • Properly structured for recipient systems
βœ“ Consolidated Acceptance Criteria
  • The system processes status updates for cargo or train operations → the formatted K1 comments are integrated with status updates to provide complete information 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_IntegratewithStatusUpdates(["Start Step"]) E_IntegratewithStatusUpdates(["End Step"]) N_IntegratewithStatusUpdates_Node0{"The system processes status updates
for cargo or train operations"}:::decision N_IntegratewithStatusUpdates_Node0_action["The formatted K1 comments are
integrated with status updates to
provide complete information context"]:::main N_IntegratewithStatusUpdates_Node0 -- Yes --> N_IntegratewithStatusUpdates_Node0_action N_IntegratewithStatusUpdates_Node0_action --> E_IntegratewithStatusUpdates S_IntegratewithStatusUpdates --> N_IntegratewithStatusUpdates_Node0 N_IntegratewithStatusUpdates_Node0 -- No --> E_IntegratewithStatusUpdates
File: GCX016E.cbl
GIVEN: K1 comments have been formatted for notifications
WHEN: The system processes status updates for cargo or train operations
THEN: The formatted K1 comments are integrated with status updates to provide complete information context
βœ“ Consolidated Acceptance Criteria
  • The system checks the CPRS traffic designation flag → the system identifies whether this is CPRS traffic requiring special 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_CheckCPRSTrafficFlag(["Start Step"]) E_CheckCPRSTrafficFlag(["End Step"]) N_CheckCPRSTrafficFlag_Node0{"The system checks the CPRS traffic
designation flag"}:::decision N_CheckCPRSTrafficFlag_Node0_action["The system identifies whether this
is CPRS traffic requiring special
error handling"]:::main N_CheckCPRSTrafficFlag_Node0 -- Yes --> N_CheckCPRSTrafficFlag_Node0_action N_CheckCPRSTrafficFlag_Node0_action --> E_CheckCPRSTrafficFlag S_CheckCPRSTrafficFlag --> N_CheckCPRSTrafficFlag_Node0 N_CheckCPRSTrafficFlag_Node0 -- No --> E_CheckCPRSTrafficFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo is not found in the system
WHEN: The system checks the CPRS traffic designation flag
THEN: The system identifies whether this is CPRS traffic requiring special error handling
βœ“ Consolidated Acceptance Criteria
  • The system initiates error message generation → a CPRS-specific cargo not found error message is 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_GenerateCPRSCargoNotFoundError(["Start Step"]) E_GenerateCPRSCargoNotFoundError(["End Step"]) N_GenerateCPRSCargoNotFoundError_Node0{"The system initiates error message
generation"}:::decision N_GenerateCPRSCargoNotFoundError_Node0_action["A CPRS-specific cargo not found
error message is created"]:::exclusion N_GenerateCPRSCargoNotFoundError_Node0 -- Yes -->|Alternative| N_GenerateCPRSCargoNotFoundError_Node0_action N_GenerateCPRSCargoNotFoundError_Node0_action --> E_GenerateCPRSCargoNotFoundError S_GenerateCPRSCargoNotFoundError --> N_GenerateCPRSCargoNotFoundError_Node0 N_GenerateCPRSCargoNotFoundError_Node0 -- No --> E_GenerateCPRSCargoNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo is not found in system and is designated as CPRS traffic
WHEN: The system initiates error message generation
THEN: A CPRS-specific cargo not found error message is created
βœ“ Consolidated Acceptance Criteria
  • The system formats the error message → the car ID information is included in the error 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_FormatErrorMessagewithCarID(["Start Step"]) E_FormatErrorMessagewithCarID(["End Step"]) N_FormatErrorMessagewithCarID_Node0{"The system formats the error
message"}:::decision N_FormatErrorMessagewithCarID_Node0_action["The car ID information is included
in the error message format"]:::exclusion N_FormatErrorMessagewithCarID_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithCarID_Node0_action N_FormatErrorMessagewithCarID_Node0_action --> E_FormatErrorMessagewithCarID S_FormatErrorMessagewithCarID --> N_FormatErrorMessagewithCarID_Node0 N_FormatErrorMessagewithCarID_Node0 -- No --> E_FormatErrorMessagewithCarID
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A CPRS cargo not found error is being generated
WHEN: The system formats the error message
THEN: The car ID information is included in the error message format
βœ“ Consolidated Acceptance Criteria
  • Equipment details are available for the cargo → equipment information is included in 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_IncludeEquipmentDetailsinError(["Start Step"]) E_IncludeEquipmentDetailsinError(["End Step"]) N_IncludeEquipmentDetailsinError_Node0{"Equipment details are available for
the cargo"}:::decision N_IncludeEquipmentDetailsinError_Node0_action["Equipment information is included
in the error message"]:::main N_IncludeEquipmentDetailsinError_Node0 -- Yes --> N_IncludeEquipmentDetailsinError_Node0_action N_IncludeEquipmentDetailsinError_Node0_action --> E_IncludeEquipmentDetailsinError S_IncludeEquipmentDetailsinError --> N_IncludeEquipmentDetailsinError_Node0 N_IncludeEquipmentDetailsinError_Node0 -- No --> E_IncludeEquipmentDetailsinError
File: GCX016E.cbl
GIVEN: The error message is being formatted with car ID
WHEN: Equipment details are available for the cargo
THEN: Equipment information is included in the error message
βœ“ Consolidated Acceptance Criteria
  • Waybill information is available → waybill information is added to 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_AddWaybillInformationtoError(["Start Step"]) E_AddWaybillInformationtoError(["End Step"]) N_AddWaybillInformationtoError_Node0{"Waybill information is available"}:::decision N_AddWaybillInformationtoError_Node0_action["Waybill information is added to the
error message"]:::main N_AddWaybillInformationtoError_Node0 -- Yes --> N_AddWaybillInformationtoError_Node0_action N_AddWaybillInformationtoError_Node0_action --> E_AddWaybillInformationtoError S_AddWaybillInformationtoError --> N_AddWaybillInformationtoError_Node0 N_AddWaybillInformationtoError_Node0 -- No --> E_AddWaybillInformationtoError
File: GCX016E.cbl
GIVEN: The error message includes equipment details
WHEN: Waybill information is available
THEN: Waybill information is added to the error message
βœ“ Consolidated Acceptance Criteria
  • The system sets the message type → the error message is classified with the appropriate type for CPRS cargo not found scenarios
  • The system sets the message type → the error message is classified with the appropriate error type indicator for disposition code validation failures
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 sets the message type"}:::decision N_SetErrorMessageType_Node0_action["The error message is classified
with the appropriate type for CPRS
cargo not found scenarios"]:::main N_SetErrorMessageType_Node0 -- Yes --> N_SetErrorMessageType_Node0_action N_SetErrorMessageType_Node0_action --> E_SetErrorMessageType S_SetErrorMessageType --> N_SetErrorMessageType_Node0 N_SetErrorMessageType_Node1{"The system sets the message type"}:::decision N_SetErrorMessageType_Node1_action["The error message is classified
with the appropriate error type
indicator for disposition code
validation failures"]:::main N_SetErrorMessageType_Node1 -- Yes --> N_SetErrorMessageType_Node1_action N_SetErrorMessageType_Node1_action --> E_SetErrorMessageType N_SetErrorMessageType_Node0 -- No --> N_SetErrorMessageType_Node1 N_SetErrorMessageType_Node1 -- No --> E_SetErrorMessageType
File: GCX016E.cbl
GIVEN: The error message content is complete with all required information
WHEN: The system sets the message type
THEN: The error message is classified with the appropriate type for CPRS cargo not found scenarios
File: GCX016E.cbl
GIVEN: An error message has been formatted with all required details
WHEN: The system sets the message type
THEN: The error message is classified with the appropriate error type indicator for disposition code validation failures
βœ“ Consolidated Acceptance Criteria
  • The system sends the error to Merlin → the error message is transmitted to the Merlin system for distribution
  • The system needs to notify about the validation failure → send the error message to Merlin system for appropriate notification 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 sends the error to
Merlin"}:::decision N_SendErrortoMerlinSystem_Node0_action["The error message is transmitted to
the Merlin system for distribution"]:::exclusion N_SendErrortoMerlinSystem_Node0 -- Yes -->|Alternative| N_SendErrortoMerlinSystem_Node0_action N_SendErrortoMerlinSystem_Node0_action --> E_SendErrortoMerlinSystem S_SendErrortoMerlinSystem --> N_SendErrortoMerlinSystem_Node0 N_SendErrortoMerlinSystem_Node1{"The system needs to notify about
the validation failure"}:::decision N_SendErrortoMerlinSystem_Node1_action["Send the error message to Merlin
system for appropriate notification
handling"]:::main N_SendErrortoMerlinSystem_Node1 -- Yes --> N_SendErrortoMerlinSystem_Node1_action N_SendErrortoMerlinSystem_Node1_action --> E_SendErrortoMerlinSystem N_SendErrortoMerlinSystem_Node0 -- No --> N_SendErrortoMerlinSystem_Node1 N_SendErrortoMerlinSystem_Node1 -- No --> E_SendErrortoMerlinSystem
File: GCX016E.cbl
GIVEN: The CPRS error message is formatted and typed
WHEN: The system sends the error to Merlin
THEN: The error message is transmitted to the Merlin system for distribution
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train not found error message has been generated
WHEN: The system needs to notify about the validation failure
THEN: Send the error message to Merlin system for appropriate notification handling
βœ“ Consolidated Acceptance Criteria
  • The system performs audit logging → the CPRS error is recorded in audit logs 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_LogCPRSErrorforAudit(["Start Step"]) E_LogCPRSErrorforAudit(["End Step"]) N_LogCPRSErrorforAudit_Node0{"The system performs audit logging"}:::decision N_LogCPRSErrorforAudit_Node0_action["The CPRS error is recorded in audit
logs with appropriate details"]:::main N_LogCPRSErrorforAudit_Node0 -- Yes --> N_LogCPRSErrorforAudit_Node0_action N_LogCPRSErrorforAudit_Node0_action --> E_LogCPRSErrorforAudit S_LogCPRSErrorforAudit --> N_LogCPRSErrorforAudit_Node0 N_LogCPRSErrorforAudit_Node0 -- No --> E_LogCPRSErrorforAudit
File: GCX016E.cbl
GIVEN: The error message has been sent to Merlin system
WHEN: The system performs audit logging
THEN: The CPRS error is recorded in audit logs with appropriate details
βœ“ Consolidated Acceptance Criteria
  • The system continues with remaining processing → normal cargo processing workflow resumes for other 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_ContinueProcessingOtherCargo(["Start Step"]) E_ContinueProcessingOtherCargo(["End Step"]) N_ContinueProcessingOtherCargo_Node0{"The system continues with remaining
processing"}:::decision N_ContinueProcessingOtherCargo_Node0_action["Normal cargo processing workflow
resumes for other cargo items"]:::main N_ContinueProcessingOtherCargo_Node0 -- Yes --> N_ContinueProcessingOtherCargo_Node0_action N_ContinueProcessingOtherCargo_Node0_action --> E_ContinueProcessingOtherCargo S_ContinueProcessingOtherCargo --> N_ContinueProcessingOtherCargo_Node0 N_ContinueProcessingOtherCargo_Node0 -- No --> E_ContinueProcessingOtherCargo
File: GCX016E.cbl
GIVEN: CPRS error has been processed and logged
WHEN: The system continues with remaining processing
THEN: Normal cargo processing workflow resumes for other cargo items
βœ“ Consolidated Acceptance Criteria
  • The system initiates cargo processing → cargo follows the normal processing workflow without 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_NormalCargoProcessing(["Start Step"]) E_NormalCargoProcessing(["End Step"]) N_NormalCargoProcessing_Node0{"The system initiates cargo
processing"}:::decision N_NormalCargoProcessing_Node0_action["Cargo follows the normal processing
workflow without error handling"]:::main N_NormalCargoProcessing_Node0 -- Yes --> N_NormalCargoProcessing_Node0_action N_NormalCargoProcessing_Node0_action --> E_NormalCargoProcessing S_NormalCargoProcessing --> N_NormalCargoProcessing_Node0 N_NormalCargoProcessing_Node0 -- No --> E_NormalCargoProcessing
File: GCX016E.cbl
GIVEN: Cargo is found in the system
WHEN: The system initiates cargo processing
THEN: Cargo follows the normal processing workflow without error handling
βœ“ Consolidated Acceptance Criteria
  • The system searches for the train in USCS train list segments → if train is found, proceed to arrival status check OR if train is not found, generate train not arrived 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_TrainFoundinUSCSSystem(["Start Step"]) E_TrainFoundinUSCSSystem(["End Step"]) N_TrainFoundinUSCSSystem_Node0{"The system searches for the train
in USCS train list segments"}:::decision N_TrainFoundinUSCSSystem_Node0_action["If train is found, proceed to
arrival status check OR if train is
not found, generate train not
arrived warning"]:::main N_TrainFoundinUSCSSystem_Node0 -- Yes --> N_TrainFoundinUSCSSystem_Node0_action N_TrainFoundinUSCSSystem_Node0_action --> E_TrainFoundinUSCSSystem S_TrainFoundinUSCSSystem --> N_TrainFoundinUSCSSystem_Node0 N_TrainFoundinUSCSSystem_Node0 -- No --> E_TrainFoundinUSCSSystem
File: GCX016E.cbl
GIVEN: A validated train ID from M10 segment processing
WHEN: The system searches for the train in USCS train list segments
THEN: If train is found, proceed to arrival status check OR if train is not found, generate train not arrived warning
βœ“ Consolidated Acceptance Criteria
  • The system checks the train's current arrival status information → the arrival status is retrieved and made available for arrival 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_CheckTrainArrivalStatus(["Start Step"]) E_CheckTrainArrivalStatus(["End Step"]) N_CheckTrainArrivalStatus_Node0{"The system checks the train s
current arrival status information"}:::decision N_CheckTrainArrivalStatus_Node0_action["The arrival status is retrieved and
made available for arrival
validation"]:::main N_CheckTrainArrivalStatus_Node0 -- Yes --> N_CheckTrainArrivalStatus_Node0_action N_CheckTrainArrivalStatus_Node0_action --> E_CheckTrainArrivalStatus S_CheckTrainArrivalStatus --> N_CheckTrainArrivalStatus_Node0 N_CheckTrainArrivalStatus_Node0 -- No --> E_CheckTrainArrivalStatus
File: GCX016E.cbl
GIVEN: A train exists in the USCS system
WHEN: The system checks the train's current arrival status information
THEN:
  • The arrival status is retrieved
  • Made available for arrival validation
βœ“ Consolidated Acceptance Criteria
  • The system logs the warning message → warning message is recorded with complete train details including train ID and relevant 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_LogWarningMessagewithTrainDetails(["Start Step"]) E_LogWarningMessagewithTrainDetails(["End Step"]) N_LogWarningMessagewithTrainDetails_Node0{"The system logs the warning message"}:::decision N_LogWarningMessagewithTrainDetails_Node0_action["Warning message is recorded with
complete train details including
train ID and relevant context
information"]:::main N_LogWarningMessagewithTrainDetails_Node0 -- Yes --> N_LogWarningMessagewithTrainDetails_Node0_action N_LogWarningMessagewithTrainDetails_Node0_action --> E_LogWarningMessagewithTrainDetails S_LogWarningMessagewithTrainDetails --> N_LogWarningMessagewithTrainDetails_Node0 N_LogWarningMessagewithTrainDetails_Node0 -- No --> E_LogWarningMessagewithTrainDetails
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train not arrived warning has been generated
WHEN: The system logs the warning message
THEN:
  • Warning message is recorded with complete train details including train id
  • Relevant context information
βœ“ Consolidated Acceptance Criteria
  • The system creates Merlin notification for the warning → merlin warning notification is created and prepared for delivery to operations team
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CreateMerlinWarningNotification(["Start Step"]) E_CreateMerlinWarningNotification(["End Step"]) N_CreateMerlinWarningNotification_Node0{"The system creates Merlin
notification for the warning"}:::decision N_CreateMerlinWarningNotification_Node0_action["Merlin warning notification is
created and prepared for delivery to
operations team"]:::main N_CreateMerlinWarningNotification_Node0 -- Yes --> N_CreateMerlinWarningNotification_Node0_action N_CreateMerlinWarningNotification_Node0_action --> E_CreateMerlinWarningNotification S_CreateMerlinWarningNotification --> N_CreateMerlinWarningNotification_Node0 N_CreateMerlinWarningNotification_Node0 -- No --> E_CreateMerlinWarningNotification
File: GCX016E.cbl
GIVEN: Warning message with train details has been logged
WHEN: The system creates Merlin notification for the warning
THEN:
  • Merlin warning notification is created
  • Prepared for delivery to operations team
βœ“ Consolidated Acceptance Criteria
  • The system includes train and location information in the notification → train ID and location information are included in the warning notification for complete operational 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_IncludeTrainIDandLocationInformation(["Start Step"]) E_IncludeTrainIDandLocationInformation(["End Step"]) N_IncludeTrainIDandLocationInformation_Node0{"The system includes train and
location information in the
notification"}:::decision N_IncludeTrainIDandLocationInformation_Node0_action["Train ID and location information
are included in the warning
notification for complete
operational context"]:::main N_IncludeTrainIDandLocationInformation_Node0 -- Yes --> N_IncludeTrainIDandLocationInformation_Node0_action N_IncludeTrainIDandLocationInformation_Node0_action --> E_IncludeTrainIDandLocationInformation S_IncludeTrainIDandLocationInformation --> N_IncludeTrainIDandLocationInformation_Node0 N_IncludeTrainIDandLocationInformation_Node0 -- No --> E_IncludeTrainIDandLocationInformation
File: GCX016E.cbl
GIVEN: Merlin warning notification is being created
WHEN:
  • The system includes train
  • Location information in the notification
THEN:
  • Train id
  • Location information are included in the warning notification for complete operational context
βœ“ Consolidated Acceptance Criteria
  • The system sets re-arrival process flag for the train → re-arrival process flag is set to ensure proper handling when train actually arrives
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetRearrivalProcessFlag(["Start Step"]) E_SetRearrivalProcessFlag(["End Step"]) N_SetRearrivalProcessFlag_Node0{"The system sets re-arrival process
flag for the train"}:::decision N_SetRearrivalProcessFlag_Node0_action["Re-arrival process flag is set to
ensure proper handling when train
actually arrives"]:::main N_SetRearrivalProcessFlag_Node0 -- Yes --> N_SetRearrivalProcessFlag_Node0_action N_SetRearrivalProcessFlag_Node0_action --> E_SetRearrivalProcessFlag S_SetRearrivalProcessFlag --> N_SetRearrivalProcessFlag_Node0 N_SetRearrivalProcessFlag_Node0 -- No --> E_SetRearrivalProcessFlag
File: GCX016E.cbl
GIVEN: Warning notification includes train ID and location information
WHEN: The system sets re-arrival process flag for the train
THEN: Re-arrival process flag is set to ensure proper handling when train actually arrives
βœ“ Consolidated Acceptance Criteria
  • The system updates train status for re-processing → train status is updated to indicate warning condition and readiness for re-processing upon actual arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateTrainStatusforReprocessing(["Start Step"]) E_UpdateTrainStatusforReprocessing(["End Step"]) N_UpdateTrainStatusforReprocessing_Node0{"The system updates train status for
re-processing"}:::decision N_UpdateTrainStatusforReprocessing_Node0_action["Train status is updated to indicate
warning condition and readiness for
re-processing upon actual arrival"]:::main N_UpdateTrainStatusforReprocessing_Node0 -- Yes --> N_UpdateTrainStatusforReprocessing_Node0_action N_UpdateTrainStatusforReprocessing_Node0_action --> E_UpdateTrainStatusforReprocessing S_UpdateTrainStatusforReprocessing --> N_UpdateTrainStatusforReprocessing_Node0 N_UpdateTrainStatusforReprocessing_Node0 -- No --> E_UpdateTrainStatusforReprocessing
File: GCX016E.cbl
GIVEN: Warning has been sent to operations team
WHEN: The system updates train status for re-processing
THEN:
  • Train status is updated to indicate warning condition
  • Readiness for re-processing upon actual arrival
βœ“ Consolidated Acceptance Criteria
  • The system completes OCA processing → oCA disposition code processing is completed and system is ready for next 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_EndOCAProcessing(["Start Step"]) E_EndOCAProcessing(["End Step"]) N_EndOCAProcessing_Node0{"The system completes OCA processing"}:::decision N_EndOCAProcessing_Node0_action["OCA disposition code processing is
completed and system is ready for
next transaction"]:::main N_EndOCAProcessing_Node0 -- Yes --> N_EndOCAProcessing_Node0_action N_EndOCAProcessing_Node0_action --> E_EndOCAProcessing S_EndOCAProcessing --> N_EndOCAProcessing_Node0 N_EndOCAProcessing_Node0 -- No --> E_EndOCAProcessing
File: GCX016E.cbl
GIVEN: Train has already arrived OR train status has been updated for re-processing after warning
WHEN: The system completes OCA processing
THEN:
  • Oca disposition code processing is completed
  • System is ready for next transaction
βœ“ Consolidated Acceptance Criteria
  • The disposition code is 'COC' → the system initiates train arrival 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_ReceiveCOCDispositionCode(["Start Step"]) E_ReceiveCOCDispositionCode(["End Step"]) N_ReceiveCOCDispositionCode_Node0{"The disposition code is COC"}:::decision N_ReceiveCOCDispositionCode_Node0_action["The system initiates train arrival
cancellation processing"]:::main N_ReceiveCOCDispositionCode_Node0 -- Yes --> N_ReceiveCOCDispositionCode_Node0_action N_ReceiveCOCDispositionCode_Node0_action --> E_ReceiveCOCDispositionCode S_ReceiveCOCDispositionCode --> N_ReceiveCOCDispositionCode_Node0 N_ReceiveCOCDispositionCode_Node0 -- No --> E_ReceiveCOCDispositionCode
File: GCX016E.cbl
GIVEN: A message segment contains a disposition code
WHEN: The disposition code is 'COC'
THEN: The system initiates train arrival cancellation processing
βœ“ Consolidated Acceptance Criteria
  • Processing a COC disposition code for train arrival cancellation → the system logs the cancellation action with train 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_LogTrainArrivalCancellationAction(["Start Step"]) E_LogTrainArrivalCancellationAction(["End Step"]) N_LogTrainArrivalCancellationAction_Node0{"Processing a COC disposition code
for train arrival cancellation"}:::decision N_LogTrainArrivalCancellationAction_Node0_action["The system logs the cancellation
action with train details and
timestamp"]:::main N_LogTrainArrivalCancellationAction_Node0 -- Yes --> N_LogTrainArrivalCancellationAction_Node0_action N_LogTrainArrivalCancellationAction_Node0_action --> E_LogTrainArrivalCancellationAction S_LogTrainArrivalCancellationAction --> N_LogTrainArrivalCancellationAction_Node0 N_LogTrainArrivalCancellationAction_Node0 -- No --> E_LogTrainArrivalCancellationAction
File: GCX016E.cbl
GIVEN: A valid train has been found in the system
WHEN: Processing a COC disposition code for train arrival cancellation
THEN:
  • The system logs the cancellation action with train details
  • Timestamp
βœ“ Consolidated Acceptance Criteria
  • The train status needs to be updated → the system sets the train status to cancel 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_UpdateTrainStatustoCancelArrival(["Start Step"]) E_UpdateTrainStatustoCancelArrival(["End Step"]) N_UpdateTrainStatustoCancelArrival_Node0{"The train status needs to be
updated"}:::decision N_UpdateTrainStatustoCancelArrival_Node0_action["The system sets the train status to
cancel arrival state"]:::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: GCX016E.cbl
GIVEN: A train arrival cancellation has been logged
WHEN: The train status needs to be updated
THEN: The system sets the train status to cancel arrival state
βœ“ Consolidated Acceptance Criteria
  • The train arrival is being cancelled → the system clears the train arrival date 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_ClearTrainArrivalDate(["Start Step"]) E_ClearTrainArrivalDate(["End Step"]) N_ClearTrainArrivalDate_Node0{"The train arrival is being
cancelled"}:::decision N_ClearTrainArrivalDate_Node0_action["The system clears the train arrival
date field"]:::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: GCX016E.cbl
GIVEN: A train has an existing arrival date
WHEN: The train arrival is being cancelled
THEN: The system clears the train arrival date field
βœ“ Consolidated Acceptance Criteria
  • The train arrival is being cancelled → the system resets all train arrival flags to their initial 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_ResetTrainArrivalFlags(["Start Step"]) E_ResetTrainArrivalFlags(["End Step"]) N_ResetTrainArrivalFlags_Node0{"The train arrival is being
cancelled"}:::decision N_ResetTrainArrivalFlags_Node0_action["The system resets all train arrival
flags to their initial state"]:::main N_ResetTrainArrivalFlags_Node0 -- Yes --> N_ResetTrainArrivalFlags_Node0_action N_ResetTrainArrivalFlags_Node0_action --> E_ResetTrainArrivalFlags S_ResetTrainArrivalFlags --> N_ResetTrainArrivalFlags_Node0 N_ResetTrainArrivalFlags_Node0 -- No --> E_ResetTrainArrivalFlags
File: GCX016E.cbl
GIVEN: A train has arrival flags set
WHEN: The train arrival is being cancelled
THEN: The system resets all train arrival flags to their initial state
βœ“ Consolidated Acceptance Criteria
  • CBP notification is required → the system generates a CBP cancellation warning 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_GenerateCBPCancellationWarningMessage(["Start Step"]) E_GenerateCBPCancellationWarningMessage(["End Step"]) N_GenerateCBPCancellationWarningMessage_Node0{"CBP notification is required"}:::decision N_GenerateCBPCancellationWarningMessage_Node0_action["The system generates a CBP
cancellation warning message"]:::main N_GenerateCBPCancellationWarningMessage_Node0 -- Yes --> N_GenerateCBPCancellationWarningMessage_Node0_action N_GenerateCBPCancellationWarningMessage_Node0_action --> E_GenerateCBPCancellationWarningMessage S_GenerateCBPCancellationWarningMessage --> N_GenerateCBPCancellationWarningMessage_Node0 N_GenerateCBPCancellationWarningMessage_Node0 -- No --> E_GenerateCBPCancellationWarningMessage
File: GCX016E.cbl
GIVEN: A train arrival has been successfully cancelled
WHEN: CBP notification is required
THEN: The system generates a CBP cancellation warning message
βœ“ Consolidated Acceptance Criteria
  • Formatting the message content → the system includes train ID, cancellation timestamp, and relevant train 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_FormatWarningwithTrainDetails(["Start Step"]) E_FormatWarningwithTrainDetails(["End Step"]) N_FormatWarningwithTrainDetails_Node0{"Formatting the message content"}:::decision N_FormatWarningwithTrainDetails_Node0_action["The system includes train ID,
cancellation timestamp, and relevant
train details in the message"]:::main N_FormatWarningwithTrainDetails_Node0 -- Yes --> N_FormatWarningwithTrainDetails_Node0_action N_FormatWarningwithTrainDetails_Node0_action --> E_FormatWarningwithTrainDetails S_FormatWarningwithTrainDetails --> N_FormatWarningwithTrainDetails_Node0 N_FormatWarningwithTrainDetails_Node0 -- No --> E_FormatWarningwithTrainDetails
File: GCX016E.cbl
GIVEN: A CBP cancellation warning message needs to be created
WHEN: Formatting the message content
THEN: The system includes train ID, cancellation timestamp, and relevant train details in the message
βœ“ Consolidated Acceptance Criteria
  • Formatting the CBP warning message → the system includes the cancellation reason from the K1 segment in the warning 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_IncludeCancellationReasonfromK1Segment(["Start Step"]) E_IncludeCancellationReasonfromK1Segment(["End Step"]) N_IncludeCancellationReasonfromK1Segment_Node0{"Formatting the CBP warning message"}:::decision N_IncludeCancellationReasonfromK1Segment_Node0_action["The system includes the
cancellation reason from the K1
segment in the warning message"]:::main N_IncludeCancellationReasonfromK1Segment_Node0 -- Yes --> N_IncludeCancellationReasonfromK1Segment_Node0_action N_IncludeCancellationReasonfromK1Segment_Node0_action --> E_IncludeCancellationReasonfromK1Segment S_IncludeCancellationReasonfromK1Segment --> N_IncludeCancellationReasonfromK1Segment_Node0 N_IncludeCancellationReasonfromK1Segment_Node0 -- No --> E_IncludeCancellationReasonfromK1Segment
File: GCX016E.cbl
GIVEN: A K1 segment contains cancellation reason comments
WHEN: Formatting the CBP warning message
THEN: The system includes the cancellation reason from the K1 segment in the warning message
βœ“ Consolidated Acceptance Criteria
  • The message needs to be transmitted → the system sends the warning message to the Merlin message 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_SendWarningtoMerlinMessageSystem(["Start Step"]) E_SendWarningtoMerlinMessageSystem(["End Step"]) N_SendWarningtoMerlinMessageSystem_Node0{"The message needs to be transmitted"}:::decision N_SendWarningtoMerlinMessageSystem_Node0_action["The system sends the warning
message to the Merlin message system"]:::main N_SendWarningtoMerlinMessageSystem_Node0 -- Yes --> N_SendWarningtoMerlinMessageSystem_Node0_action N_SendWarningtoMerlinMessageSystem_Node0_action --> E_SendWarningtoMerlinMessageSystem S_SendWarningtoMerlinMessageSystem --> N_SendWarningtoMerlinMessageSystem_Node0 N_SendWarningtoMerlinMessageSystem_Node0 -- No --> E_SendWarningtoMerlinMessageSystem
File: GCX016E.cbl
GIVEN: A formatted CBP cancellation warning message is ready
WHEN: The message needs to be transmitted
THEN: The system sends the warning message to the Merlin message system
βœ“ Consolidated Acceptance Criteria
  • Creating audit trail records → the system logs the complete cancellation event with all 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_LogCancellationEventforAuditTrail(["Start Step"]) E_LogCancellationEventforAuditTrail(["End Step"]) N_LogCancellationEventforAuditTrail_Node0{"Creating audit trail records"}:::decision N_LogCancellationEventforAuditTrail_Node0_action["The system logs the complete
cancellation event with all relevant
details for audit purposes"]:::main N_LogCancellationEventforAuditTrail_Node0 -- Yes --> N_LogCancellationEventforAuditTrail_Node0_action N_LogCancellationEventforAuditTrail_Node0_action --> E_LogCancellationEventforAuditTrail S_LogCancellationEventforAuditTrail --> N_LogCancellationEventforAuditTrail_Node0 N_LogCancellationEventforAuditTrail_Node0 -- No --> E_LogCancellationEventforAuditTrail
File: GCX016E.cbl
GIVEN: A train arrival cancellation has been processed and message sent
WHEN: Creating audit trail records
THEN: The system logs the complete cancellation event with all relevant details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • Operations notification is required → the system sends the error message to operations personnel for 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_SendErrorMessagetoOperations(["Start Step"]) E_SendErrorMessagetoOperations(["End Step"]) N_SendErrorMessagetoOperations_Node0{"Operations notification is required"}:::decision N_SendErrorMessagetoOperations_Node0_action["The system sends the error message
to operations personnel for
resolution"]:::main N_SendErrorMessagetoOperations_Node0 -- Yes --> N_SendErrorMessagetoOperations_Node0_action N_SendErrorMessagetoOperations_Node0_action --> E_SendErrorMessagetoOperations S_SendErrorMessagetoOperations --> N_SendErrorMessagetoOperations_Node0 N_SendErrorMessagetoOperations_Node0 -- No --> E_SendErrorMessagetoOperations
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train not found error has been generated
WHEN: Operations notification is required
THEN: The system sends the error message to operations personnel for resolution
βœ“ Consolidated Acceptance Criteria
  • The system searches the US cargo root segments using both partial CCN and car ID as search criteria → the system returns cargo records that match both the partial CCN and car ID 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_Phase1SearchwithPartialCCNandCarID(["Start Step"]) E_Phase1SearchwithPartialCCNandCarID(["End Step"]) N_Phase1SearchwithPartialCCNandCarID_Node0{"The system searches the US cargo
root segments using both partial CCN
and car ID as search criteria"}:::decision N_Phase1SearchwithPartialCCNandCarID_Node0_action["The system returns cargo records
that match both the partial CCN and
car ID combination"]:::main N_Phase1SearchwithPartialCCNandCarID_Node0 -- Yes --> N_Phase1SearchwithPartialCCNandCarID_Node0_action N_Phase1SearchwithPartialCCNandCarID_Node0_action --> E_Phase1SearchwithPartialCCNandCarID S_Phase1SearchwithPartialCCNandCarID --> N_Phase1SearchwithPartialCCNandCarID_Node0 N_Phase1SearchwithPartialCCNandCarID_Node0 -- No --> E_Phase1SearchwithPartialCCNandCarID
File: GCX016E.cbl
GIVEN: A formatted car ID and partial CCN are available for cargo search
WHEN:
  • The system searches the us cargo root segments using both partial ccn
  • Car id as search criteria
THEN:
  • The system returns cargo records that match both the partial ccn
  • Car id combination
βœ“ Consolidated Acceptance Criteria
  • If the search results → if cargo records are found, proceed to return found cargo; if no records found, initiate secondary search phase
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CargoFoundwithPartialCCN(["Start Step"]) E_CargoFoundwithPartialCCN(["End Step"]) N_CargoFoundwithPartialCCN_Node0{"The system evaluates the search
results"}:::decision N_CargoFoundwithPartialCCN_Node0_action["If cargo records are found, proceed
to return found cargo if no records
found, initiate secondary search
phase"]:::main N_CargoFoundwithPartialCCN_Node0 -- Yes --> N_CargoFoundwithPartialCCN_Node0_action N_CargoFoundwithPartialCCN_Node0_action --> E_CargoFoundwithPartialCCN S_CargoFoundwithPartialCCN --> N_CargoFoundwithPartialCCN_Node0 N_CargoFoundwithPartialCCN_Node0 -- No --> E_CargoFoundwithPartialCCN
File: GCX016E.cbl
GIVEN: A search has been performed using partial CCN and car ID
WHEN: The system evaluates the search results
THEN: If cargo records are found, proceed to return found cargo; if no records found, initiate secondary search phase
βœ“ Consolidated Acceptance Criteria
  • The system searches the US cargo root segments using only car ID as search criteria → the system returns all cargo records that match the car ID regardless of 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_Phase2SearchwithCarIDOnly(["Start Step"]) E_Phase2SearchwithCarIDOnly(["End Step"]) N_Phase2SearchwithCarIDOnly_Node0{"The system searches the US cargo
root segments using only car ID as
search criteria"}:::decision N_Phase2SearchwithCarIDOnly_Node0_action["The system returns all cargo
records that match the car ID
regardless of CCN"]:::main N_Phase2SearchwithCarIDOnly_Node0 -- Yes --> N_Phase2SearchwithCarIDOnly_Node0_action N_Phase2SearchwithCarIDOnly_Node0_action --> E_Phase2SearchwithCarIDOnly S_Phase2SearchwithCarIDOnly --> N_Phase2SearchwithCarIDOnly_Node0 N_Phase2SearchwithCarIDOnly_Node0 -- No --> E_Phase2SearchwithCarIDOnly
File: GCX016E.cbl
GIVEN: Primary search with partial CCN and car ID found no matching cargo records
WHEN: The system searches the US cargo root segments using only car ID as search criteria
THEN: The system returns all cargo records that match the car ID regardless of CCN
βœ“ Consolidated Acceptance Criteria
  • If the search results → if cargo records are found, proceed to handle SCAC scenarios; if no records found, handle cargo not found scenario
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CargoFoundwithCarIDOnly(["Start Step"]) E_CargoFoundwithCarIDOnly(["End Step"]) N_CargoFoundwithCarIDOnly_Node0{"The system evaluates the search
results"}:::decision N_CargoFoundwithCarIDOnly_Node0_action["If cargo records are found, proceed
to handle SCAC scenarios if no
records found, handle cargo not
found scenario"]:::main N_CargoFoundwithCarIDOnly_Node0 -- Yes --> N_CargoFoundwithCarIDOnly_Node0_action N_CargoFoundwithCarIDOnly_Node0_action --> E_CargoFoundwithCarIDOnly S_CargoFoundwithCarIDOnly --> N_CargoFoundwithCarIDOnly_Node0 N_CargoFoundwithCarIDOnly_Node0 -- No --> E_CargoFoundwithCarIDOnly
File: GCX016E.cbl
GIVEN: A secondary search has been performed using only car ID
WHEN: The system evaluates the search results
THEN: If cargo records are found, proceed to handle SCAC scenarios; if no records found, handle cargo not found scenario
βœ“ Consolidated Acceptance Criteria
  • The system completes cargo record processing → the found cargo record is returned to the requesting process for further business operations
  • The system processes the found cargo → the system returns the cargo record for further 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_ReturnFoundCargoRecord(["Start Step"]) E_ReturnFoundCargoRecord(["End Step"]) N_ReturnFoundCargoRecord_Node0{"The system completes cargo record
processing"}:::decision N_ReturnFoundCargoRecord_Node0_action["The found cargo record is returned
to the requesting process for
further business operations"]:::main N_ReturnFoundCargoRecord_Node0 -- Yes --> N_ReturnFoundCargoRecord_Node0_action N_ReturnFoundCargoRecord_Node0_action --> E_ReturnFoundCargoRecord S_ReturnFoundCargoRecord --> N_ReturnFoundCargoRecord_Node0 N_ReturnFoundCargoRecord_Node1{"The system processes the found
cargo"}:::decision N_ReturnFoundCargoRecord_Node1_action["The system returns the cargo record
for further business processing"]:::main N_ReturnFoundCargoRecord_Node1 -- Yes --> N_ReturnFoundCargoRecord_Node1_action N_ReturnFoundCargoRecord_Node1_action --> E_ReturnFoundCargoRecord N_ReturnFoundCargoRecord_Node0 -- No --> N_ReturnFoundCargoRecord_Node1 N_ReturnFoundCargoRecord_Node1 -- No --> E_ReturnFoundCargoRecord
File: GCX016E.cbl
GIVEN: Cargo records have been successfully found and processed through either primary or secondary search
WHEN: The system completes cargo record processing
THEN: The found cargo record is returned to the requesting process for further business operations
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record has been found and SCAC is not unknown
WHEN: The system processes the found cargo
THEN: The system returns the cargo record for further business processing
βœ“ Consolidated Acceptance Criteria
  • The system determines CPRS error message generation is applicable → a CPRS-specific error message is generated to inform users of the cargo search 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_GenerateCPRSErrorMessageifApplicable(["Start Step"]) E_GenerateCPRSErrorMessageifApplicable(["End Step"]) N_GenerateCPRSErrorMessageifApplicable_Node0{"The system determines CPRS error
message generation is applicable"}:::decision N_GenerateCPRSErrorMessageifApplicable_Node0_action["A CPRS-specific error message is
generated to inform users of the
cargo search failure"]:::exclusion N_GenerateCPRSErrorMessageifApplicable_Node0 -- Yes -->|Alternative| N_GenerateCPRSErrorMessageifApplicable_Node0_action N_GenerateCPRSErrorMessageifApplicable_Node0_action --> E_GenerateCPRSErrorMessageifApplicable S_GenerateCPRSErrorMessageifApplicable --> N_GenerateCPRSErrorMessageifApplicable_Node0 N_GenerateCPRSErrorMessageifApplicable_Node0 -- No --> E_GenerateCPRSErrorMessageifApplicable
File: GCX016E.cbl
GIVEN: Cargo search has failed and the cargo may be related to CPRS operations
WHEN: The system determines CPRS error message generation is applicable
THEN: A CPRS-specific error message is generated to inform users of the cargo search failure
βœ“ Consolidated Acceptance Criteria
  • The system fetches S09 status segments from the database → all status segments associated with the cargo are 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_FetchS09StatusSegmentsfromDatabase(["Start Step"]) E_FetchS09StatusSegmentsfromDatabase(["End Step"]) N_FetchS09StatusSegmentsfromDatabase_Node0{"The system fetches S09 status
segments from the database"}:::decision N_FetchS09StatusSegmentsfromDatabase_Node0_action["All status segments associated with
the cargo are retrieved for
processing"]:::main N_FetchS09StatusSegmentsfromDatabase_Node0 -- Yes --> N_FetchS09StatusSegmentsfromDatabase_Node0_action N_FetchS09StatusSegmentsfromDatabase_Node0_action --> E_FetchS09StatusSegmentsfromDatabase S_FetchS09StatusSegmentsfromDatabase --> N_FetchS09StatusSegmentsfromDatabase_Node0 N_FetchS09StatusSegmentsfromDatabase_Node0 -- No --> E_FetchS09StatusSegmentsfromDatabase
File: GCX016E.cbl
GIVEN: A valid cargo record exists
WHEN: The system fetches S09 status segments from the database
THEN: All status segments associated with the cargo are retrieved for processing
βœ“ Consolidated Acceptance Criteria
  • The system checks if any status segments were found → if segments exist, populate status arrays from database; if not, initialize empty arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_StatusSegmentsExist(["Start Step"]) E_StatusSegmentsExist(["End Step"]) N_StatusSegmentsExist_Node0{"The system checks if any status
segments were found"}:::decision N_StatusSegmentsExist_Node0_action["If segments exist, populate status
arrays from database if not,
initialize empty arrays"]:::main N_StatusSegmentsExist_Node0 -- Yes --> N_StatusSegmentsExist_Node0_action N_StatusSegmentsExist_Node0_action --> E_StatusSegmentsExist S_StatusSegmentsExist --> N_StatusSegmentsExist_Node0 N_StatusSegmentsExist_Node0 -- No --> E_StatusSegmentsExist
File: GCX016E.cbl
GIVEN: Status segment fetch operation has completed
WHEN: The system checks if any status segments were found
THEN: If segments exist, populate status arrays from database; if not, initialize empty arrays
βœ“ Consolidated Acceptance Criteria
  • The system populates status arrays → all existing status information is loaded into memory arrays 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_PopulateStatusArraysfromDatabaseSegments(["Start Step"]) E_PopulateStatusArraysfromDatabaseSegments(["End Step"]) N_PopulateStatusArraysfromDatabaseSegments_Node0{"The system populates status arrays"}:::decision N_PopulateStatusArraysfromDatabaseSegments_Node0_action["All existing status information is
loaded into memory arrays for
processing"]:::main N_PopulateStatusArraysfromDatabaseSegments_Node0 -- Yes --> N_PopulateStatusArraysfromDatabaseSegments_Node0_action N_PopulateStatusArraysfromDatabaseSegments_Node0_action --> E_PopulateStatusArraysfromDatabaseSegments S_PopulateStatusArraysfromDatabaseSegments --> N_PopulateStatusArraysfromDatabaseSegments_Node0 N_PopulateStatusArraysfromDatabaseSegments_Node0 -- No --> E_PopulateStatusArraysfromDatabaseSegments
File: GCX016E.cbl
GIVEN: Status segments exist in the database for the cargo
WHEN: The system populates status arrays
THEN: All existing status information is loaded into memory arrays for processing
βœ“ Consolidated Acceptance Criteria
  • The system processes status updates from disposition codes or events → status arrays are modified according to business rules for holds, releases, and 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_ProcessStatusArrayUpdates(["Start Step"]) E_ProcessStatusArrayUpdates(["End Step"]) N_ProcessStatusArrayUpdates_Node0{"The system processes status updates
from disposition codes or events"}:::decision N_ProcessStatusArrayUpdates_Node0_action["Status arrays are modified
according to business rules for
holds, releases, and other status
changes"]:::main N_ProcessStatusArrayUpdates_Node0 -- Yes --> N_ProcessStatusArrayUpdates_Node0_action N_ProcessStatusArrayUpdates_Node0_action --> E_ProcessStatusArrayUpdates S_ProcessStatusArrayUpdates --> N_ProcessStatusArrayUpdates_Node0 N_ProcessStatusArrayUpdates_Node0 -- No --> E_ProcessStatusArrayUpdates
File: GCX016E.cbl
GIVEN: Status arrays are initialized (either empty or populated from database)
WHEN: The system processes status updates from disposition codes or events
THEN: Status arrays are modified according to business rules for holds, releases, and other status changes
βœ“ Consolidated Acceptance Criteria
  • The system checks for modifications → if arrays were modified, convert to database format and update; if not, end processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 for modifications"}:::decision N_StatusArrayModified_Node0_action["If arrays were modified, convert to
database format and update if not,
end processing"]:::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: GCX016E.cbl
GIVEN: Status array updates have been processed
WHEN: The system checks for modifications
THEN:
  • If arrays were modified, convert to database format
  • Update; if not, end processing
βœ“ Consolidated Acceptance Criteria
  • The system converts arrays to database format → status information is formatted into S09 segments 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_ConvertStatusArraystoDatabaseFormat(["Start Step"]) E_ConvertStatusArraystoDatabaseFormat(["End Step"]) N_ConvertStatusArraystoDatabaseFormat_Node0{"The system converts arrays to
database format"}:::decision N_ConvertStatusArraystoDatabaseFormat_Node0_action["Status information is formatted
into S09 segments ready for database
storage"]:::main N_ConvertStatusArraystoDatabaseFormat_Node0 -- Yes --> N_ConvertStatusArraystoDatabaseFormat_Node0_action N_ConvertStatusArraystoDatabaseFormat_Node0_action --> E_ConvertStatusArraystoDatabaseFormat S_ConvertStatusArraystoDatabaseFormat --> N_ConvertStatusArraystoDatabaseFormat_Node0 N_ConvertStatusArraystoDatabaseFormat_Node0 -- No --> E_ConvertStatusArraystoDatabaseFormat
File: GCX016E.cbl
GIVEN: Status arrays have been modified during processing
WHEN: The system converts arrays to database format
THEN: Status information is formatted into S09 segments ready for database storage
βœ“ Consolidated Acceptance Criteria
  • The system updates car ID information → car identification data is updated in the cargo record based on N7 segment information
  • The system completes status array processing → the system updates the cargo record with the car ID information derived from the equipment initial and 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_UpdateCarIDInformationforNonCPRSCargo(["Start Step"]) E_UpdateCarIDInformationforNonCPRSCargo(["End Step"]) N_UpdateCarIDInformationforNonCPRSCargo_Node0{"The system updates car ID
information"}:::decision N_UpdateCarIDInformationforNonCPRSCargo_Node0_action["Car identification data is updated
in the cargo record based on N7
segment information"]:::main N_UpdateCarIDInformationforNonCPRSCargo_Node0 -- Yes --> N_UpdateCarIDInformationforNonCPRSCargo_Node0_action N_UpdateCarIDInformationforNonCPRSCargo_Node0_action --> E_UpdateCarIDInformationforNonCPRSCargo S_UpdateCarIDInformationforNonCPRSCargo --> N_UpdateCarIDInformationforNonCPRSCargo_Node0 N_UpdateCarIDInformationforNonCPRSCargo_Node1{"The system completes status array
processing"}:::decision N_UpdateCarIDInformationforNonCPRSCargo_Node1_action["The system updates the cargo record
with the car ID information derived
from the equipment initial and
number"]:::main N_UpdateCarIDInformationforNonCPRSCargo_Node1 -- Yes --> N_UpdateCarIDInformationforNonCPRSCargo_Node1_action N_UpdateCarIDInformationforNonCPRSCargo_Node1_action --> E_UpdateCarIDInformationforNonCPRSCargo N_UpdateCarIDInformationforNonCPRSCargo_Node0 -- No --> N_UpdateCarIDInformationforNonCPRSCargo_Node1 N_UpdateCarIDInformationforNonCPRSCargo_Node1 -- No --> E_UpdateCarIDInformationforNonCPRSCargo
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Status arrays have been converted to database format AND cargo is not CPRS type
WHEN: The system updates car ID information
THEN: Car identification data is updated in the cargo record based on N7 segment information
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo is not a CPRS shipment and car identification information is available from N7 segment processing
WHEN: The system completes status array processing
THEN:
  • The system updates the cargo record with the car id information derived from the equipment initial
  • Number
βœ“ Consolidated Acceptance Criteria
  • The system confirms the update operation → status segment processing is confirmed 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_ConfirmStatusSegmentUpdates(["Start Step"]) E_ConfirmStatusSegmentUpdates(["End Step"]) N_ConfirmStatusSegmentUpdates_Node0{"The system confirms the update
operation"}:::decision N_ConfirmStatusSegmentUpdates_Node0_action["Status segment processing is
confirmed as complete and successful"]:::main N_ConfirmStatusSegmentUpdates_Node0 -- Yes --> N_ConfirmStatusSegmentUpdates_Node0_action N_ConfirmStatusSegmentUpdates_Node0_action --> E_ConfirmStatusSegmentUpdates S_ConfirmStatusSegmentUpdates --> N_ConfirmStatusSegmentUpdates_Node0 N_ConfirmStatusSegmentUpdates_Node0 -- No --> E_ConfirmStatusSegmentUpdates
File: GCX016E.cbl
GIVEN: Status segments have been replaced in the database
WHEN: The system confirms the update operation
THEN:
  • Status segment processing is confirmed as complete
  • Successful
βœ“ Consolidated Acceptance Criteria
  • The system needs to process cargo status information → the system retrieves all S09 status segments from the GCSUSS09 database for the cargo
  • Status array population is requested for the cargo → all S09 status segments are retrieved from the GCSUSS09 database table for that cargo
  • The system needs to process disposition codes for the cargo → the system retrieves all S09 status segments associated with the cargo 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_RetrieveS09StatusSegmentsfromDatabase(["Start Step"]) E_RetrieveS09StatusSegmentsfromDatabase(["End Step"]) N_RetrieveS09StatusSegmentsfromDatabase_Node0{"The system needs to process cargo
status information"}:::decision N_RetrieveS09StatusSegmentsfromDatabase_Node0_action["The system retrieves all S09 status
segments from the GCSUSS09 database
for the cargo"]:::main N_RetrieveS09StatusSegmentsfromDatabase_Node0 -- Yes --> N_RetrieveS09StatusSegmentsfromDatabase_Node0_action N_RetrieveS09StatusSegmentsfromDatabase_Node0_action --> E_RetrieveS09StatusSegmentsfromDatabase S_RetrieveS09StatusSegmentsfromDatabase --> N_RetrieveS09StatusSegmentsfromDatabase_Node0 N_RetrieveS09StatusSegmentsfromDatabase_Node1{"Status array population is
requested for the cargo"}:::decision N_RetrieveS09StatusSegmentsfromDatabase_Node1_action["All S09 status segments are
retrieved from the GCSUSS09 database
table for that cargo"]:::main N_RetrieveS09StatusSegmentsfromDatabase_Node1 -- Yes --> N_RetrieveS09StatusSegmentsfromDatabase_Node1_action N_RetrieveS09StatusSegmentsfromDatabase_Node1_action --> E_RetrieveS09StatusSegmentsfromDatabase N_RetrieveS09StatusSegmentsfromDatabase_Node0 -- No --> N_RetrieveS09StatusSegmentsfromDatabase_Node1 N_RetrieveS09StatusSegmentsfromDatabase_Node2{"The system needs to process
disposition codes for the cargo"}:::decision N_RetrieveS09StatusSegmentsfromDatabase_Node2_action["The system retrieves all S09 status
segments associated with the cargo
from the database"]:::main N_RetrieveS09StatusSegmentsfromDatabase_Node2 -- Yes --> N_RetrieveS09StatusSegmentsfromDatabase_Node2_action N_RetrieveS09StatusSegmentsfromDatabase_Node2_action --> E_RetrieveS09StatusSegmentsfromDatabase N_RetrieveS09StatusSegmentsfromDatabase_Node1 -- No --> N_RetrieveS09StatusSegmentsfromDatabase_Node2 N_RetrieveS09StatusSegmentsfromDatabase_Node2 -- No --> E_RetrieveS09StatusSegmentsfromDatabase
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The system needs to process cargo status information
THEN: The system retrieves all S09 status segments from the GCSUSS09 database for the cargo
File: GCX016E.cbl
GIVEN: A cargo identifier exists in the system
WHEN: Status array population is requested for the cargo
THEN: All S09 status segments are retrieved from the GCSUSS09 database table for that cargo
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The system needs to process disposition codes for the cargo
THEN: The system retrieves all S09 status segments associated with the cargo from the database
βœ“ Consolidated Acceptance Criteria
  • The database query completes → the system determines if any status segments were found and branches 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_DatabaseSegmentsFound(["Start Step"]) E_DatabaseSegmentsFound(["End Step"]) N_DatabaseSegmentsFound_Node0{"The database query completes"}:::decision N_DatabaseSegmentsFound_Node0_action["The system determines if any status
segments were found and branches
processing accordingly"]:::main N_DatabaseSegmentsFound_Node0 -- Yes --> N_DatabaseSegmentsFound_Node0_action N_DatabaseSegmentsFound_Node0_action --> E_DatabaseSegmentsFound S_DatabaseSegmentsFound --> N_DatabaseSegmentsFound_Node0 N_DatabaseSegmentsFound_Node0 -- No --> E_DatabaseSegmentsFound
File: GCX016E.cbl
GIVEN: The system has attempted to retrieve S09 status segments from database
WHEN: The database query completes
THEN:
  • The system determines if any status segments were found
  • Branches processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system begins status array population → the system initializes the S09A status array structure to receive the segment data
  • The system initializes the S09A status array → the system should set up the array structure with proper indexing 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_InitializeS09AStatusArray(["Start Step"]) E_InitializeS09AStatusArray(["End Step"]) N_InitializeS09AStatusArray_Node0{"The system begins status array
population"}:::decision N_InitializeS09AStatusArray_Node0_action["The system initializes the S09A
status array structure to receive
the segment data"]:::main N_InitializeS09AStatusArray_Node0 -- Yes --> N_InitializeS09AStatusArray_Node0_action N_InitializeS09AStatusArray_Node0_action --> E_InitializeS09AStatusArray S_InitializeS09AStatusArray --> N_InitializeS09AStatusArray_Node0 N_InitializeS09AStatusArray_Node1{"The system initializes the S09A
status array"}:::decision N_InitializeS09AStatusArray_Node1_action["The system should set up the array
structure with proper indexing and
prepare it for data population"]:::main N_InitializeS09AStatusArray_Node1 -- Yes --> N_InitializeS09AStatusArray_Node1_action N_InitializeS09AStatusArray_Node1_action --> E_InitializeS09AStatusArray N_InitializeS09AStatusArray_Node0 -- No --> N_InitializeS09AStatusArray_Node1 N_InitializeS09AStatusArray_Node1 -- No --> E_InitializeS09AStatusArray
File: GCX016E.cbl
GIVEN: Status segments exist in the database for the cargo
WHEN: The system begins status array population
THEN: The system initializes the S09A status array structure to receive the segment data
File: GCX016E.cbl
GIVEN: A valid status segment has been retrieved and validated
WHEN: The system initializes the S09A status array
THEN:
  • The system should set up the array structure with proper indexing
  • Prepare it for data population
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a status array → the system initializes an empty S09A status array structure
  • The system attempts to retrieve status segments → the system initializes empty S09A status arrays with zero entries and resets sequence 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_InitializeEmptyStatusArray(["Start Step"]) E_InitializeEmptyStatusArray(["End Step"]) N_InitializeEmptyStatusArray_Node0{"The system needs to create a status
array"}:::decision N_InitializeEmptyStatusArray_Node0_action["The system initializes an empty
S09A status array structure"]:::main N_InitializeEmptyStatusArray_Node0 -- Yes --> N_InitializeEmptyStatusArray_Node0_action N_InitializeEmptyStatusArray_Node0_action --> E_InitializeEmptyStatusArray S_InitializeEmptyStatusArray --> N_InitializeEmptyStatusArray_Node0 N_InitializeEmptyStatusArray_Node1{"The system attempts to retrieve
status segments"}:::decision N_InitializeEmptyStatusArray_Node1_action["The system initializes empty S09A
status arrays with zero entries and
resets sequence counters"]:::main N_InitializeEmptyStatusArray_Node1 -- Yes --> N_InitializeEmptyStatusArray_Node1_action N_InitializeEmptyStatusArray_Node1_action --> E_InitializeEmptyStatusArray N_InitializeEmptyStatusArray_Node0 -- No --> N_InitializeEmptyStatusArray_Node1 N_InitializeEmptyStatusArray_Node1 -- No --> E_InitializeEmptyStatusArray
File: GCX016E.cbl
GIVEN: No status segments exist in the database for the cargo
WHEN: The system needs to create a status array
THEN: The system initializes an empty S09A status array structure
File: GCX016E.cbl
GIVEN: A cargo record has no existing S09 status segments in the database
WHEN: The system attempts to retrieve status segments
THEN:
  • The system initializes empty s09a status arrays with zero entries
  • Resets sequence counters
βœ“ Consolidated Acceptance Criteria
  • The system processes the segment for array population → the system converts the database segment format into the S09A array entry 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_ConvertDatabaseSegmenttoArrayFormat(["Start Step"]) E_ConvertDatabaseSegmenttoArrayFormat(["End Step"]) N_ConvertDatabaseSegmenttoArrayFormat_Node0{"The system processes the segment
for array population"}:::decision N_ConvertDatabaseSegmenttoArrayFormat_Node0_action["The system converts the database
segment format into the S09A array
entry format"]:::main N_ConvertDatabaseSegmenttoArrayFormat_Node0 -- Yes --> N_ConvertDatabaseSegmenttoArrayFormat_Node0_action N_ConvertDatabaseSegmenttoArrayFormat_Node0_action --> E_ConvertDatabaseSegmenttoArrayFormat S_ConvertDatabaseSegmenttoArrayFormat --> N_ConvertDatabaseSegmenttoArrayFormat_Node0 N_ConvertDatabaseSegmenttoArrayFormat_Node0 -- No --> E_ConvertDatabaseSegmenttoArrayFormat
File: GCX016E.cbl
GIVEN: A status segment exists in the database
WHEN: The system processes the segment for array population
THEN: The system converts the database segment format into the S09A array entry format
βœ“ Consolidated Acceptance Criteria
  • Each segment is converted to array format → the system tracks and updates the maximum sequence number encountered
  • The system tracks the maximum sequence number → the system should maintain the highest sequence number encountered for array boundary management
  • The sequence number is compared to the current maximum → if the current sequence number is higher than the tracked maximum, update the maximum 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_TrackMaximumSequenceNumber(["Start Step"]) E_TrackMaximumSequenceNumber(["End Step"]) N_TrackMaximumSequenceNumber_Node0{"Each segment is converted to array
format"}:::decision N_TrackMaximumSequenceNumber_Node0_action["The system tracks and updates the
maximum sequence number encountered"]:::main N_TrackMaximumSequenceNumber_Node0 -- Yes --> N_TrackMaximumSequenceNumber_Node0_action N_TrackMaximumSequenceNumber_Node0_action --> E_TrackMaximumSequenceNumber S_TrackMaximumSequenceNumber --> N_TrackMaximumSequenceNumber_Node0 N_TrackMaximumSequenceNumber_Node1{"The system tracks the maximum
sequence number"}:::decision N_TrackMaximumSequenceNumber_Node1_action["The system should maintain the
highest sequence number encountered
for array boundary management"]:::main N_TrackMaximumSequenceNumber_Node1 -- Yes --> N_TrackMaximumSequenceNumber_Node1_action N_TrackMaximumSequenceNumber_Node1_action --> E_TrackMaximumSequenceNumber N_TrackMaximumSequenceNumber_Node0 -- No --> N_TrackMaximumSequenceNumber_Node1 N_TrackMaximumSequenceNumber_Node2{"The sequence number is compared to
the current maximum"}:::decision N_TrackMaximumSequenceNumber_Node2_action["If the current sequence number is
higher than the tracked maximum,
update the maximum sequence number"]:::main N_TrackMaximumSequenceNumber_Node2 -- Yes --> N_TrackMaximumSequenceNumber_Node2_action N_TrackMaximumSequenceNumber_Node2_action --> E_TrackMaximumSequenceNumber N_TrackMaximumSequenceNumber_Node1 -- No --> N_TrackMaximumSequenceNumber_Node2 N_TrackMaximumSequenceNumber_Node2 -- No --> E_TrackMaximumSequenceNumber
File: GCX016E.cbl
GIVEN: Status segments are being processed from the database
WHEN: Each segment is converted to array format
THEN:
  • The system tracks
  • Updates the maximum sequence number encountered
File: GCX016E.cbl
GIVEN: Status segments are being processed with sequence numbers
WHEN: The system tracks the maximum sequence number
THEN: The system should maintain the highest sequence number encountered for array boundary management
File: GCX016E.cbl
GIVEN: A status segment with a sequence number is being processed
WHEN: The sequence number is compared to the current maximum
THEN: If the current sequence number is higher than the tracked maximum, update the maximum sequence number
βœ“ Consolidated Acceptance Criteria
  • The segment is being converted to array format → the system populates the disposition code field in the corresponding 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_PopulateArrayEntrywithDispositionCode(["Start Step"]) E_PopulateArrayEntrywithDispositionCode(["End Step"]) N_PopulateArrayEntrywithDispositionCode_Node0{"The segment is being converted to
array format"}:::decision N_PopulateArrayEntrywithDispositionCode_Node0_action["The system populates the
disposition code field in the
corresponding array entry"]:::main N_PopulateArrayEntrywithDispositionCode_Node0 -- Yes --> N_PopulateArrayEntrywithDispositionCode_Node0_action N_PopulateArrayEntrywithDispositionCode_Node0_action --> E_PopulateArrayEntrywithDispositionCode S_PopulateArrayEntrywithDispositionCode --> N_PopulateArrayEntrywithDispositionCode_Node0 N_PopulateArrayEntrywithDispositionCode_Node0 -- No --> E_PopulateArrayEntrywithDispositionCode
File: GCX016E.cbl
GIVEN: A database status segment contains a disposition code
WHEN: The segment is being converted to array format
THEN: The system populates the disposition code field in the corresponding array entry
βœ“ Consolidated Acceptance Criteria
  • The segment is being converted to array format → the system populates the date and time fields in the corresponding 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_PopulateArrayEntrywithDateTime(["Start Step"]) E_PopulateArrayEntrywithDateTime(["End Step"]) N_PopulateArrayEntrywithDateTime_Node0{"The segment is being converted to
array format"}:::decision N_PopulateArrayEntrywithDateTime_Node0_action["The system populates the date and
time fields in the corresponding
array entry"]:::main N_PopulateArrayEntrywithDateTime_Node0 -- Yes --> N_PopulateArrayEntrywithDateTime_Node0_action N_PopulateArrayEntrywithDateTime_Node0_action --> E_PopulateArrayEntrywithDateTime S_PopulateArrayEntrywithDateTime --> N_PopulateArrayEntrywithDateTime_Node0 N_PopulateArrayEntrywithDateTime_Node0 -- No --> E_PopulateArrayEntrywithDateTime
File: GCX016E.cbl
GIVEN: A database status segment contains date and time information
WHEN: The segment is being converted to array format
THEN:
  • The system populates the date
  • Time fields in the corresponding array entry
βœ“ Consolidated Acceptance Criteria
  • The segment is being converted to array format → the system populates the location code field in the corresponding 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_PopulateArrayEntrywithLocationCode(["Start Step"]) E_PopulateArrayEntrywithLocationCode(["End Step"]) N_PopulateArrayEntrywithLocationCode_Node0{"The segment is being converted to
array format"}:::decision N_PopulateArrayEntrywithLocationCode_Node0_action["The system populates the location
code field in the corresponding
array entry"]:::main N_PopulateArrayEntrywithLocationCode_Node0 -- Yes --> N_PopulateArrayEntrywithLocationCode_Node0_action N_PopulateArrayEntrywithLocationCode_Node0_action --> E_PopulateArrayEntrywithLocationCode S_PopulateArrayEntrywithLocationCode --> N_PopulateArrayEntrywithLocationCode_Node0 N_PopulateArrayEntrywithLocationCode_Node0 -- No --> E_PopulateArrayEntrywithLocationCode
File: GCX016E.cbl
GIVEN: A database status segment contains location code information
WHEN: The segment is being converted to array format
THEN: The system populates the location code field in the corresponding array entry
βœ“ Consolidated Acceptance Criteria
  • The segment is being converted to array format → the system populates the quantity fields in the corresponding 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_PopulateArrayEntrywithQuantityInformation(["Start Step"]) E_PopulateArrayEntrywithQuantityInformation(["End Step"]) N_PopulateArrayEntrywithQuantityInformation_Node0{"The segment is being converted to
array format"}:::decision N_PopulateArrayEntrywithQuantityInformation_Node0_action["The system populates the quantity
fields in the corresponding array
entry"]:::main N_PopulateArrayEntrywithQuantityInformation_Node0 -- Yes --> N_PopulateArrayEntrywithQuantityInformation_Node0_action N_PopulateArrayEntrywithQuantityInformation_Node0_action --> E_PopulateArrayEntrywithQuantityInformation S_PopulateArrayEntrywithQuantityInformation --> N_PopulateArrayEntrywithQuantityInformation_Node0 N_PopulateArrayEntrywithQuantityInformation_Node0 -- No --> E_PopulateArrayEntrywithQuantityInformation
File: GCX016E.cbl
GIVEN: A database status segment contains quantity information
WHEN: The segment is being converted to array format
THEN: The system populates the quantity fields in the corresponding array entry
βœ“ Consolidated Acceptance Criteria
  • A segment conversion is complete → the system checks if additional segments remain in the database 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_MoreDatabaseSegments(["Start Step"]) E_MoreDatabaseSegments(["End Step"]) N_MoreDatabaseSegments_Node0{"A segment conversion is complete"}:::decision N_MoreDatabaseSegments_Node0_action["The system checks if additional
segments remain in the database for
processing"]:::main N_MoreDatabaseSegments_Node0 -- Yes --> N_MoreDatabaseSegments_Node0_action N_MoreDatabaseSegments_Node0_action --> E_MoreDatabaseSegments S_MoreDatabaseSegments --> N_MoreDatabaseSegments_Node0 N_MoreDatabaseSegments_Node0 -- No --> E_MoreDatabaseSegments
File: GCX016E.cbl
GIVEN: The system has processed one or more status segments
WHEN: A segment conversion is complete
THEN: The system checks if additional segments remain in the database for processing
βœ“ Consolidated Acceptance Criteria
  • Additional segments remain to be processed → the system increments the array index to the next available 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_IncrementArrayIndex(["Start Step"]) E_IncrementArrayIndex(["End Step"]) N_IncrementArrayIndex_Node0{"Additional segments remain to be
processed"}:::decision N_IncrementArrayIndex_Node0_action["The system increments the array
index to the next available position"]:::main N_IncrementArrayIndex_Node0 -- Yes --> N_IncrementArrayIndex_Node0_action N_IncrementArrayIndex_Node0_action --> E_IncrementArrayIndex S_IncrementArrayIndex --> N_IncrementArrayIndex_Node0 N_IncrementArrayIndex_Node0 -- No --> E_IncrementArrayIndex
File: GCX016E.cbl
GIVEN: A status segment has been successfully converted and stored in the array
WHEN: Additional segments remain to be processed
THEN: The system increments the array index to the next available position
βœ“ Consolidated Acceptance Criteria
  • The segment processing loop completes → the system updates the maximum sequences fetched counter with the total 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_UpdateMaximumSequencesFetchedCounter(["Start Step"]) E_UpdateMaximumSequencesFetchedCounter(["End Step"]) N_UpdateMaximumSequencesFetchedCounter_Node0{"The segment processing loop
completes"}:::decision N_UpdateMaximumSequencesFetchedCounter_Node0_action["The system updates the maximum
sequences fetched counter with the
total number of segments processed"]:::main N_UpdateMaximumSequencesFetchedCounter_Node0 -- Yes --> N_UpdateMaximumSequencesFetchedCounter_Node0_action N_UpdateMaximumSequencesFetchedCounter_Node0_action --> E_UpdateMaximumSequencesFetchedCounter S_UpdateMaximumSequencesFetchedCounter --> N_UpdateMaximumSequencesFetchedCounter_Node0 N_UpdateMaximumSequencesFetchedCounter_Node0 -- No --> E_UpdateMaximumSequencesFetchedCounter
File: GCX016E.cbl
GIVEN: All status segments have been processed from the database
WHEN: The segment processing loop completes
THEN: The system updates the maximum sequences fetched counter with the total number of segments processed
βœ“ Consolidated Acceptance Criteria
  • The system attempts to retrieve the S09 status segment from the database → the segment data is successfully fetched and made available for processing
  • The system needs to retrieve S09 status segments from the database → the system should fetch the status segment data from GCSUSS09 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_RetrieveS09StatusSegmentfromDatabase(["Start Step"]) E_RetrieveS09StatusSegmentfromDatabase(["End Step"]) N_RetrieveS09StatusSegmentfromDatabase_Node0{"The system attempts to retrieve the
S09 status segment from the database"}:::decision N_RetrieveS09StatusSegmentfromDatabase_Node0_action["The segment data is successfully
fetched and made available for
processing"]:::main N_RetrieveS09StatusSegmentfromDatabase_Node0 -- Yes --> N_RetrieveS09StatusSegmentfromDatabase_Node0_action N_RetrieveS09StatusSegmentfromDatabase_Node0_action --> E_RetrieveS09StatusSegmentfromDatabase S_RetrieveS09StatusSegmentfromDatabase --> N_RetrieveS09StatusSegmentfromDatabase_Node0 N_RetrieveS09StatusSegmentfromDatabase_Node1{"The system needs to retrieve S09
status segments from the database"}:::decision N_RetrieveS09StatusSegmentfromDatabase_Node1_action["The system should fetch the status
segment data from GCSUSS09 table"]:::main N_RetrieveS09StatusSegmentfromDatabase_Node1 -- Yes --> N_RetrieveS09StatusSegmentfromDatabase_Node1_action N_RetrieveS09StatusSegmentfromDatabase_Node1_action --> E_RetrieveS09StatusSegmentfromDatabase N_RetrieveS09StatusSegmentfromDatabase_Node0 -- No --> N_RetrieveS09StatusSegmentfromDatabase_Node1 N_RetrieveS09StatusSegmentfromDatabase_Node1 -- No --> E_RetrieveS09StatusSegmentfromDatabase
File: GCX016E.cbl
GIVEN: A cargo record exists in the system with associated status segments
WHEN: The system attempts to retrieve the S09 status segment from the database
THEN:
  • The segment data is successfully fetched
  • Made available for processing
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The system needs to retrieve S09 status segments from the database
THEN: The system should fetch the status segment data from GCSUSS09 table
βœ“ Consolidated Acceptance Criteria
  • The system checks the retrieval operation result → if segment was found and retrieved, proceed to format validation, otherwise initiate corrupted segment recovery
  • The system checks the retrieval operation result → if segment is retrieved successfully, proceed to format validation, otherwise log 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_SegmentRetrievedSuccessfully(["Start Step"]) E_SegmentRetrievedSuccessfully(["End Step"]) N_SegmentRetrievedSuccessfully_Node0{"The system checks the retrieval
operation result"}:::decision N_SegmentRetrievedSuccessfully_Node0_action["If segment was found and retrieved,
proceed to format validation,
otherwise initiate corrupted segment
recovery"]:::main N_SegmentRetrievedSuccessfully_Node0 -- Yes --> N_SegmentRetrievedSuccessfully_Node0_action N_SegmentRetrievedSuccessfully_Node0_action --> E_SegmentRetrievedSuccessfully S_SegmentRetrievedSuccessfully --> N_SegmentRetrievedSuccessfully_Node0 N_SegmentRetrievedSuccessfully_Node1{"The system checks the retrieval
operation result"}:::decision N_SegmentRetrievedSuccessfully_Node1_action["If segment is retrieved
successfully, proceed to format
validation, otherwise log validation
error"]:::main N_SegmentRetrievedSuccessfully_Node1 -- Yes --> N_SegmentRetrievedSuccessfully_Node1_action N_SegmentRetrievedSuccessfully_Node1_action --> E_SegmentRetrievedSuccessfully N_SegmentRetrievedSuccessfully_Node0 -- No --> N_SegmentRetrievedSuccessfully_Node1 N_SegmentRetrievedSuccessfully_Node1 -- No --> E_SegmentRetrievedSuccessfully
File: GCX016E.cbl
GIVEN: An attempt has been made to retrieve S09 status segment from database
WHEN: The system checks the retrieval operation result
THEN:
  • If segment was found
  • Retrieved, proceed to format validation, otherwise initiate corrupted segment recovery
File: GCX016E.cbl
GIVEN: An attempt has been made to retrieve S09 segment from database
WHEN: The system checks the retrieval operation result
THEN: If segment is retrieved successfully, proceed to format validation, otherwise log validation error
βœ“ Consolidated Acceptance Criteria
  • The system examines the segment format structure → the segment structure is validated against expected format 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_CheckSegmentFormatStructure(["Start Step"]) E_CheckSegmentFormatStructure(["End Step"]) N_CheckSegmentFormatStructure_Node0{"The system examines the segment
format structure"}:::decision N_CheckSegmentFormatStructure_Node0_action["The segment structure is validated
against expected format
specifications"]:::main N_CheckSegmentFormatStructure_Node0 -- Yes --> N_CheckSegmentFormatStructure_Node0_action N_CheckSegmentFormatStructure_Node0_action --> E_CheckSegmentFormatStructure S_CheckSegmentFormatStructure --> N_CheckSegmentFormatStructure_Node0 N_CheckSegmentFormatStructure_Node0 -- No --> E_CheckSegmentFormatStructure
File: GCX016E.cbl
GIVEN: An S09 status segment has been successfully retrieved from database
WHEN: The system examines the segment format structure
THEN: The segment structure is validated against expected format specifications
βœ“ Consolidated Acceptance Criteria
  • If format validity → if format is valid, proceed to sequence number verification, otherwise log format error and attempt reconstruction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidSegmentFormat(["Start Step"]) E_ValidSegmentFormat(["End Step"]) N_ValidSegmentFormat_Node0{"The system evaluates format
validity"}:::decision N_ValidSegmentFormat_Node0_action["If format is valid, proceed to
sequence number verification,
otherwise log format error and
attempt reconstruction"]:::main N_ValidSegmentFormat_Node0 -- Yes --> N_ValidSegmentFormat_Node0_action N_ValidSegmentFormat_Node0_action --> E_ValidSegmentFormat S_ValidSegmentFormat --> N_ValidSegmentFormat_Node0 N_ValidSegmentFormat_Node0 -- No --> E_ValidSegmentFormat
File: GCX016E.cbl
GIVEN: The S09 segment format structure has been examined
WHEN: The system evaluates format validity
THEN:
  • If format is valid, proceed to sequence number verification, otherwise log format error
  • Attempt reconstruction
βœ“ Consolidated Acceptance Criteria
  • The system checks sequence numbers within the segment → sequence numbers are verified for proper ordering and valid ranges
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_VerifySequenceNumbers(["Start Step"]) E_VerifySequenceNumbers(["End Step"]) N_VerifySequenceNumbers_Node0{"The system checks sequence numbers
within the segment"}:::decision N_VerifySequenceNumbers_Node0_action["Sequence numbers are verified for
proper ordering and valid ranges"]:::main N_VerifySequenceNumbers_Node0 -- Yes --> N_VerifySequenceNumbers_Node0_action N_VerifySequenceNumbers_Node0_action --> E_VerifySequenceNumbers S_VerifySequenceNumbers --> N_VerifySequenceNumbers_Node0 N_VerifySequenceNumbers_Node0 -- No --> E_VerifySequenceNumbers
File: GCX016E.cbl
GIVEN: An S09 segment with valid format structure
WHEN: The system checks sequence numbers within the segment
THEN:
  • Sequence numbers are verified for proper ordering
  • Valid ranges
βœ“ Consolidated Acceptance Criteria
  • If sequence number validity → if sequence numbers are valid, proceed to data integrity check, otherwise log sequence error and correct 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_SequenceNumbersValid(["Start Step"]) E_SequenceNumbersValid(["End Step"]) N_SequenceNumbersValid_Node0{"The system evaluates sequence
number validity"}:::decision N_SequenceNumbersValid_Node0_action["If sequence numbers are valid,
proceed to data integrity check,
otherwise log sequence error and
correct numbering"]:::main N_SequenceNumbersValid_Node0 -- Yes --> N_SequenceNumbersValid_Node0_action N_SequenceNumbersValid_Node0_action --> E_SequenceNumbersValid S_SequenceNumbersValid --> N_SequenceNumbersValid_Node0 N_SequenceNumbersValid_Node0 -- No --> E_SequenceNumbersValid
File: GCX016E.cbl
GIVEN: Sequence numbers in S09 segment have been verified
WHEN: The system evaluates sequence number validity
THEN:
  • If sequence numbers are valid, proceed to data integrity check, otherwise log sequence error
  • Correct numbering
βœ“ Consolidated Acceptance Criteria
  • The system examines data integrity fields → data integrity is validated against consistency and completeness 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_CheckDataIntegrityFields(["Start Step"]) E_CheckDataIntegrityFields(["End Step"]) N_CheckDataIntegrityFields_Node0{"The system examines data integrity
fields"}:::decision N_CheckDataIntegrityFields_Node0_action["Data integrity is validated against
consistency and completeness
requirements"]:::main N_CheckDataIntegrityFields_Node0 -- Yes --> N_CheckDataIntegrityFields_Node0_action N_CheckDataIntegrityFields_Node0_action --> E_CheckDataIntegrityFields S_CheckDataIntegrityFields --> N_CheckDataIntegrityFields_Node0 N_CheckDataIntegrityFields_Node0 -- No --> E_CheckDataIntegrityFields
File: GCX016E.cbl
GIVEN: An S09 segment with valid format and sequence numbers
WHEN: The system examines data integrity fields
THEN:
  • Data integrity is validated against consistency
  • Completeness requirements
βœ“ Consolidated Acceptance Criteria
  • If data integrity validity → if data integrity is valid, initialize status array from segment, otherwise log integrity error and apply correction 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_DataIntegrityValid(["Start Step"]) E_DataIntegrityValid(["End Step"]) N_DataIntegrityValid_Node0{"The system evaluates data integrity
validity"}:::decision N_DataIntegrityValid_Node0_action["If data integrity is valid,
initialize status array from
segment, otherwise log integrity
error and apply correction rules"]:::main N_DataIntegrityValid_Node0 -- Yes --> N_DataIntegrityValid_Node0_action N_DataIntegrityValid_Node0_action --> E_DataIntegrityValid S_DataIntegrityValid --> N_DataIntegrityValid_Node0 N_DataIntegrityValid_Node0 -- No --> E_DataIntegrityValid
File: GCX016E.cbl
GIVEN: Data integrity fields in S09 segment have been checked
WHEN: The system evaluates data integrity validity
THEN:
  • If data integrity is valid, initialize status array from segment, otherwise log integrity error
  • Apply correction rules
βœ“ Consolidated Acceptance Criteria
  • The system initializes the status array → status array is populated with disposition codes and status information 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_InitializeStatusArrayfromValidSegment(["Start Step"]) E_InitializeStatusArrayfromValidSegment(["End Step"]) N_InitializeStatusArrayfromValidSegment_Node0{"The system initializes the status
array"}:::decision N_InitializeStatusArrayfromValidSegment_Node0_action["Status array is populated with
disposition codes and status
information from the segment"]:::main N_InitializeStatusArrayfromValidSegment_Node0 -- Yes --> N_InitializeStatusArrayfromValidSegment_Node0_action N_InitializeStatusArrayfromValidSegment_Node0_action --> E_InitializeStatusArrayfromValidSegment S_InitializeStatusArrayfromValidSegment --> N_InitializeStatusArrayfromValidSegment_Node0 N_InitializeStatusArrayfromValidSegment_Node0 -- No --> E_InitializeStatusArrayfromValidSegment
File: GCX016E.cbl
GIVEN: A valid S09 segment with proper format, sequence numbers, and data integrity
WHEN: The system initializes the status array
THEN:
  • Status array is populated with disposition codes
  • Status information from the segment
βœ“ Consolidated Acceptance Criteria
  • The system processes sequence numbers → the maximum sequence number encountered is recorded 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_TrackMaximumSequenceFetched(["Start Step"]) E_TrackMaximumSequenceFetched(["End Step"]) N_TrackMaximumSequenceFetched_Node0{"The system processes sequence
numbers"}:::decision N_TrackMaximumSequenceFetched_Node0_action["The maximum sequence number
encountered is recorded for future
reference"]:::main N_TrackMaximumSequenceFetched_Node0 -- Yes --> N_TrackMaximumSequenceFetched_Node0_action N_TrackMaximumSequenceFetched_Node0_action --> E_TrackMaximumSequenceFetched S_TrackMaximumSequenceFetched --> N_TrackMaximumSequenceFetched_Node0 N_TrackMaximumSequenceFetched_Node0 -- No --> E_TrackMaximumSequenceFetched
File: GCX016E.cbl
GIVEN: Status array has been initialized from valid S09 segment
WHEN: The system processes sequence numbers
THEN: The maximum sequence number encountered is recorded for future reference
βœ“ Consolidated Acceptance Criteria
  • The system finalizes segment validation → segment is marked as valid and ready for cargo 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_MarkSegmentasValidforProcessing(["Start Step"]) E_MarkSegmentasValidforProcessing(["End Step"]) N_MarkSegmentasValidforProcessing_Node0{"The system finalizes segment
validation"}:::decision N_MarkSegmentasValidforProcessing_Node0_action["Segment is marked as valid and
ready for cargo status processing"]:::main N_MarkSegmentasValidforProcessing_Node0 -- Yes --> N_MarkSegmentasValidforProcessing_Node0_action N_MarkSegmentasValidforProcessing_Node0_action --> E_MarkSegmentasValidforProcessing S_MarkSegmentasValidforProcessing --> N_MarkSegmentasValidforProcessing_Node0 N_MarkSegmentasValidforProcessing_Node0 -- No --> E_MarkSegmentasValidforProcessing
File: GCX016E.cbl
GIVEN: S09 segment has passed all validation checks and maximum sequence has been tracked
WHEN: The system finalizes segment validation
THEN:
  • Segment is marked as valid
  • Ready for cargo status processing
βœ“ Consolidated Acceptance Criteria
  • The system detects segment unavailability or corruption → recovery procedures are initiated to attempt segment reconstruction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleCorruptedSegmentRecovery(["Start Step"]) E_HandleCorruptedSegmentRecovery(["End Step"]) N_HandleCorruptedSegmentRecovery_Node0{"The system detects segment
unavailability or corruption"}:::decision N_HandleCorruptedSegmentRecovery_Node0_action["Recovery procedures are initiated
to attempt segment reconstruction"]:::main N_HandleCorruptedSegmentRecovery_Node0 -- Yes --> N_HandleCorruptedSegmentRecovery_Node0_action N_HandleCorruptedSegmentRecovery_Node0_action --> E_HandleCorruptedSegmentRecovery S_HandleCorruptedSegmentRecovery --> N_HandleCorruptedSegmentRecovery_Node0 N_HandleCorruptedSegmentRecovery_Node0 -- No --> E_HandleCorruptedSegmentRecovery
File: GCX016E.cbl
GIVEN: S09 segment retrieval has failed or segment is corrupted
WHEN: The system detects segment unavailability or corruption
THEN: Recovery procedures are initiated to attempt segment reconstruction
βœ“ Consolidated Acceptance Criteria
  • The system detects invalid segment format → format error is logged with details for troubleshooting and segment reconstruction is 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_LogSegmentFormatError(["Start Step"]) E_LogSegmentFormatError(["End Step"]) N_LogSegmentFormatError_Node0{"The system detects invalid segment
format"}:::decision N_LogSegmentFormatError_Node0_action["Format error is logged with details
for troubleshooting and segment
reconstruction is attempted"]:::exclusion N_LogSegmentFormatError_Node0 -- Yes -->|Alternative| N_LogSegmentFormatError_Node0_action N_LogSegmentFormatError_Node0_action --> E_LogSegmentFormatError S_LogSegmentFormatError --> N_LogSegmentFormatError_Node0 N_LogSegmentFormatError_Node0 -- No --> E_LogSegmentFormatError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: S09 segment format validation has failed
WHEN: The system detects invalid segment format
THEN:
  • Format error is logged with details for troubleshooting
  • Segment reconstruction is attempted
βœ“ Consolidated Acceptance Criteria
  • The system attempts segment reconstruction → reconstruction process is executed using available cargo data 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_AttemptSegmentReconstruction(["Start Step"]) E_AttemptSegmentReconstruction(["End Step"]) N_AttemptSegmentReconstruction_Node0{"The system attempts segment
reconstruction"}:::decision N_AttemptSegmentReconstruction_Node0_action["Reconstruction process is executed
using available cargo data and
default values"]:::main N_AttemptSegmentReconstruction_Node0 -- Yes --> N_AttemptSegmentReconstruction_Node0_action N_AttemptSegmentReconstruction_Node0_action --> E_AttemptSegmentReconstruction S_AttemptSegmentReconstruction --> N_AttemptSegmentReconstruction_Node0 N_AttemptSegmentReconstruction_Node0 -- No --> E_AttemptSegmentReconstruction
File: GCX016E.cbl
GIVEN: S09 segment is invalid, corrupted, or has format errors
WHEN: The system attempts segment reconstruction
THEN:
  • Reconstruction process is executed using available cargo data
  • Default values
βœ“ Consolidated Acceptance Criteria
  • If reconstruction results → if reconstruction successful, proceed to sequence verification, otherwise use default segment 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_RecoverySuccessful(["Start Step"]) E_RecoverySuccessful(["End Step"]) N_RecoverySuccessful_Node0{"The system evaluates reconstruction
results"}:::decision N_RecoverySuccessful_Node0_action["If reconstruction successful,
proceed to sequence verification,
otherwise use default segment values"]:::main N_RecoverySuccessful_Node0 -- Yes --> N_RecoverySuccessful_Node0_action N_RecoverySuccessful_Node0_action --> E_RecoverySuccessful S_RecoverySuccessful --> N_RecoverySuccessful_Node0 N_RecoverySuccessful_Node0 -- No --> E_RecoverySuccessful
File: GCX016E.cbl
GIVEN: Segment reconstruction has been attempted
WHEN: The system evaluates reconstruction results
THEN: If reconstruction successful, proceed to sequence verification, otherwise use default segment values
βœ“ Consolidated Acceptance Criteria
  • The system cannot recover valid segment data → default segment values are applied and validation is marked as 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_UseDefaultSegmentValues(["Start Step"]) E_UseDefaultSegmentValues(["End Step"]) N_UseDefaultSegmentValues_Node0{"The system cannot recover valid
segment data"}:::decision N_UseDefaultSegmentValues_Node0_action["Default segment values are applied
and validation is marked as failed"]:::main N_UseDefaultSegmentValues_Node0 -- Yes --> N_UseDefaultSegmentValues_Node0_action N_UseDefaultSegmentValues_Node0_action --> E_UseDefaultSegmentValues S_UseDefaultSegmentValues --> N_UseDefaultSegmentValues_Node0 N_UseDefaultSegmentValues_Node0 -- No --> E_UseDefaultSegmentValues
File: GCX016E.cbl
GIVEN: Segment reconstruction has failed
WHEN: The system cannot recover valid segment data
THEN:
  • Default segment values are applied
  • Validation is marked as failed
βœ“ Consolidated Acceptance Criteria
  • The system detects invalid sequence numbers → sequence number error is logged and correction procedures are 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_LogSequenceNumberError(["Start Step"]) E_LogSequenceNumberError(["End Step"]) N_LogSequenceNumberError_Node0{"The system detects invalid sequence
numbers"}:::decision N_LogSequenceNumberError_Node0_action["Sequence number error is logged and
correction procedures are initiated"]:::exclusion N_LogSequenceNumberError_Node0 -- Yes -->|Alternative| N_LogSequenceNumberError_Node0_action N_LogSequenceNumberError_Node0_action --> E_LogSequenceNumberError S_LogSequenceNumberError --> N_LogSequenceNumberError_Node0 N_LogSequenceNumberError_Node0 -- No --> E_LogSequenceNumberError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Sequence number validation has failed
WHEN: The system detects invalid sequence numbers
THEN:
  • Sequence number error is logged
  • Correction procedures are initiated
βœ“ Consolidated Acceptance Criteria
  • The system applies sequence number corrections → sequence numbers are corrected and processing continues to data integrity 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_CorrectSequenceNumbering(["Start Step"]) E_CorrectSequenceNumbering(["End Step"]) N_CorrectSequenceNumbering_Node0{"The system applies sequence number
corrections"}:::decision N_CorrectSequenceNumbering_Node0_action["Sequence numbers are corrected and
processing continues to data
integrity check"]:::main N_CorrectSequenceNumbering_Node0 -- Yes --> N_CorrectSequenceNumbering_Node0_action N_CorrectSequenceNumbering_Node0_action --> E_CorrectSequenceNumbering S_CorrectSequenceNumbering --> N_CorrectSequenceNumbering_Node0 N_CorrectSequenceNumbering_Node0 -- No --> E_CorrectSequenceNumbering
File: GCX016E.cbl
GIVEN: Invalid sequence numbers have been detected and logged
WHEN: The system applies sequence number corrections
THEN:
  • Sequence numbers are corrected
  • Processing continues to data integrity check
βœ“ Consolidated Acceptance Criteria
  • The system detects data integrity issues → data integrity error is logged and correction rules 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_LogDataIntegrityError(["Start Step"]) E_LogDataIntegrityError(["End Step"]) N_LogDataIntegrityError_Node0{"The system detects data integrity
issues"}:::decision N_LogDataIntegrityError_Node0_action["Data integrity error is logged and
correction rules are applied"]:::main N_LogDataIntegrityError_Node0 -- Yes --> N_LogDataIntegrityError_Node0_action N_LogDataIntegrityError_Node0_action --> E_LogDataIntegrityError S_LogDataIntegrityError --> N_LogDataIntegrityError_Node0 N_LogDataIntegrityError_Node0 -- No --> E_LogDataIntegrityError
File: GCX016E.cbl
GIVEN: Data integrity validation has failed
WHEN: The system detects data integrity issues
THEN:
  • Data integrity error is logged
  • Correction rules are applied
βœ“ Consolidated Acceptance Criteria
  • The system applies data correction rules → data integrity issues are corrected and status array initialization 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_ApplyDataCorrectionRules(["Start Step"]) E_ApplyDataCorrectionRules(["End Step"]) N_ApplyDataCorrectionRules_Node0{"The system applies data correction
rules"}:::decision N_ApplyDataCorrectionRules_Node0_action["Data integrity issues are corrected
and status array initialization
proceeds"]:::main N_ApplyDataCorrectionRules_Node0 -- Yes --> N_ApplyDataCorrectionRules_Node0_action N_ApplyDataCorrectionRules_Node0_action --> E_ApplyDataCorrectionRules S_ApplyDataCorrectionRules --> N_ApplyDataCorrectionRules_Node0 N_ApplyDataCorrectionRules_Node0 -- No --> E_ApplyDataCorrectionRules
File: GCX016E.cbl
GIVEN: Data integrity errors have been detected and logged
WHEN: The system applies data correction rules
THEN:
  • Data integrity issues are corrected
  • Status array initialization proceeds
βœ“ Consolidated Acceptance Criteria
  • The system completes validation process → segment is confirmed ready for cargo status processing and business logic application
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidationCompleteSegmentReady(["Start Step"]) E_ValidationCompleteSegmentReady(["End Step"]) N_ValidationCompleteSegmentReady_Node0{"The system completes validation
process"}:::decision N_ValidationCompleteSegmentReady_Node0_action["Segment is confirmed ready for
cargo status processing and business
logic application"]:::main N_ValidationCompleteSegmentReady_Node0 -- Yes --> N_ValidationCompleteSegmentReady_Node0_action N_ValidationCompleteSegmentReady_Node0_action --> E_ValidationCompleteSegmentReady S_ValidationCompleteSegmentReady --> N_ValidationCompleteSegmentReady_Node0 N_ValidationCompleteSegmentReady_Node0 -- No --> E_ValidationCompleteSegmentReady
File: GCX016E.cbl
GIVEN: S09 segment has passed all validation checks and is marked as valid
WHEN: The system completes validation process
THEN:
  • Segment is confirmed ready for cargo status processing
  • Business logic application
βœ“ Consolidated Acceptance Criteria
  • The system cannot establish valid segment data → segment is rejected and default processing procedures 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_ValidationFailedSegmentRejected(["Start Step"]) E_ValidationFailedSegmentRejected(["End Step"]) N_ValidationFailedSegmentRejected_Node0{"The system cannot establish valid
segment data"}:::decision N_ValidationFailedSegmentRejected_Node0_action["Segment is rejected and default
processing procedures are applied"]:::exclusion N_ValidationFailedSegmentRejected_Node0 -- Yes -->|Alternative| N_ValidationFailedSegmentRejected_Node0_action N_ValidationFailedSegmentRejected_Node0_action --> E_ValidationFailedSegmentRejected S_ValidationFailedSegmentRejected --> N_ValidationFailedSegmentRejected_Node0 N_ValidationFailedSegmentRejected_Node0 -- No --> E_ValidationFailedSegmentRejected
File: GCX016E.cbl
GIVEN: S09 segment validation has failed and recovery attempts were unsuccessful
WHEN: The system cannot establish valid segment data
THEN:
  • Segment is rejected
  • Default processing procedures are applied
βœ“ Consolidated Acceptance Criteria
  • The system checks if a valid segment was found → the system should determine if segment data 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_ValidSegmentFound(["Start Step"]) E_ValidSegmentFound(["End Step"]) N_ValidSegmentFound_Node0{"The system checks if a valid
segment was found"}:::decision N_ValidSegmentFound_Node0_action["The system should determine if
segment data exists and is
accessible for processing"]:::main N_ValidSegmentFound_Node0 -- Yes --> N_ValidSegmentFound_Node0_action N_ValidSegmentFound_Node0_action --> E_ValidSegmentFound S_ValidSegmentFound --> N_ValidSegmentFound_Node0 N_ValidSegmentFound_Node0 -- No --> E_ValidSegmentFound
File: GCX016E.cbl
GIVEN: A database query for S09 status segment has been executed
WHEN: The system checks if a valid segment was found
THEN:
  • The system should determine if segment data exists
  • Is accessible for processing
βœ“ Consolidated Acceptance Criteria
  • The system validates the segment structure → the system should verify that the segment contains valid data fields, proper formatting, and required 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_ValidateSegmentStructure(["Start Step"]) E_ValidateSegmentStructure(["End Step"]) N_ValidateSegmentStructure_Node0{"The system validates the segment
structure"}:::decision N_ValidateSegmentStructure_Node0_action["The system should verify that the
segment contains valid data fields,
proper formatting, and required
elements"]:::main N_ValidateSegmentStructure_Node0 -- Yes --> N_ValidateSegmentStructure_Node0_action N_ValidateSegmentStructure_Node0_action --> E_ValidateSegmentStructure S_ValidateSegmentStructure --> N_ValidateSegmentStructure_Node0 N_ValidateSegmentStructure_Node0 -- No --> E_ValidateSegmentStructure
File: GCX016E.cbl
GIVEN: A status segment has been retrieved from the database
WHEN: The system validates the segment structure
THEN: The system should verify that the segment contains valid data fields, proper formatting, and required elements
βœ“ Consolidated Acceptance Criteria
  • If the validation results → the system should determine if the segment structure meets required standards for array 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_SegmentStructureValid(["Start Step"]) E_SegmentStructureValid(["End Step"]) N_SegmentStructureValid_Node0{"The system evaluates the validation
results"}:::decision N_SegmentStructureValid_Node0_action["The system should determine if the
segment structure meets required
standards for array population"]:::main N_SegmentStructureValid_Node0 -- Yes --> N_SegmentStructureValid_Node0_action N_SegmentStructureValid_Node0_action --> E_SegmentStructureValid S_SegmentStructureValid --> N_SegmentStructureValid_Node0 N_SegmentStructureValid_Node0 -- No --> E_SegmentStructureValid
File: GCX016E.cbl
GIVEN: A status segment structure validation has been performed
WHEN: The system evaluates the validation results
THEN: The system should determine if the segment structure meets required standards for array population
βœ“ Consolidated Acceptance Criteria
  • The system extracts the sequence number from the segment → the system should identify and capture the sequence number for proper array ordering
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExtractSequenceNumberfromSegment(["Start Step"]) E_ExtractSequenceNumberfromSegment(["End Step"]) N_ExtractSequenceNumberfromSegment_Node0{"The system extracts the sequence
number from the segment"}:::decision N_ExtractSequenceNumberfromSegment_Node0_action["The system should identify and
capture the sequence number for
proper array ordering"]:::main N_ExtractSequenceNumberfromSegment_Node0 -- Yes --> N_ExtractSequenceNumberfromSegment_Node0_action N_ExtractSequenceNumberfromSegment_Node0_action --> E_ExtractSequenceNumberfromSegment S_ExtractSequenceNumberfromSegment --> N_ExtractSequenceNumberfromSegment_Node0 N_ExtractSequenceNumberfromSegment_Node0 -- No --> E_ExtractSequenceNumberfromSegment
File: GCX016E.cbl
GIVEN: A valid status segment is being processed
WHEN: The system extracts the sequence number from the segment
THEN:
  • The system should identify
  • Capture the sequence number for proper array ordering
βœ“ Consolidated Acceptance Criteria
  • The system populates the array entry with segment data → the system should transfer all relevant status information from the segment into the appropriate 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_PopulateArrayEntrywithSegmentData(["Start Step"]) E_PopulateArrayEntrywithSegmentData(["End Step"]) N_PopulateArrayEntrywithSegmentData_Node0{"The system populates the array
entry with segment data"}:::decision N_PopulateArrayEntrywithSegmentData_Node0_action["The system should transfer all
relevant status information from the
segment into the appropriate array
position"]:::main N_PopulateArrayEntrywithSegmentData_Node0 -- Yes --> N_PopulateArrayEntrywithSegmentData_Node0_action N_PopulateArrayEntrywithSegmentData_Node0_action --> E_PopulateArrayEntrywithSegmentData S_PopulateArrayEntrywithSegmentData --> N_PopulateArrayEntrywithSegmentData_Node0 N_PopulateArrayEntrywithSegmentData_Node0 -- No --> E_PopulateArrayEntrywithSegmentData
File: GCX016E.cbl
GIVEN: A valid status segment with extracted sequence number is available
WHEN: The system populates the array entry with segment data
THEN: The system should transfer all relevant status information from the segment into the appropriate array position
βœ“ Consolidated Acceptance Criteria
  • The system checks for more segments availability → the system should determine if additional S09 segments exist that need to be processed for the current 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_MoreSegmentsAvailable(["Start Step"]) E_MoreSegmentsAvailable(["End Step"]) N_MoreSegmentsAvailable_Node0{"The system checks for more segments
availability"}:::decision N_MoreSegmentsAvailable_Node0_action["The system should determine if
additional S09 segments exist that
need to be processed for the current
cargo"]:::main N_MoreSegmentsAvailable_Node0 -- Yes --> N_MoreSegmentsAvailable_Node0_action N_MoreSegmentsAvailable_Node0_action --> E_MoreSegmentsAvailable S_MoreSegmentsAvailable --> N_MoreSegmentsAvailable_Node0 N_MoreSegmentsAvailable_Node0 -- No --> E_MoreSegmentsAvailable
File: GCX016E.cbl
GIVEN: Status segments are being processed for a cargo record
WHEN: The system checks for more segments availability
THEN: The system should determine if additional S09 segments exist that need to be processed for the current cargo
βœ“ Consolidated Acceptance Criteria
  • The system completes array initialization → the system should set a completion flag indicating that status array population 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_SetArrayInitializationCompleteFlag(["Start Step"]) E_SetArrayInitializationCompleteFlag(["End Step"]) N_SetArrayInitializationCompleteFlag_Node0{"The system completes array
initialization"}:::decision N_SetArrayInitializationCompleteFlag_Node0_action["The system should set a completion
flag indicating that status array
population is finished"]:::main N_SetArrayInitializationCompleteFlag_Node0 -- Yes --> N_SetArrayInitializationCompleteFlag_Node0_action N_SetArrayInitializationCompleteFlag_Node0_action --> E_SetArrayInitializationCompleteFlag S_SetArrayInitializationCompleteFlag --> N_SetArrayInitializationCompleteFlag_Node0 N_SetArrayInitializationCompleteFlag_Node0 -- No --> E_SetArrayInitializationCompleteFlag
File: GCX016E.cbl
GIVEN: All available status segments have been processed
WHEN: The system completes array initialization
THEN: The system should set a completion flag indicating that status array population is finished
βœ“ Consolidated Acceptance Criteria
  • The system logs array population results → the system should record the number of segments processed, array entries created, and completion 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_LogArrayPopulationResults(["Start Step"]) E_LogArrayPopulationResults(["End Step"]) N_LogArrayPopulationResults_Node0{"The system logs array population
results"}:::decision N_LogArrayPopulationResults_Node0_action["The system should record the number
of segments processed, array entries
created, and completion status"]:::main N_LogArrayPopulationResults_Node0 -- Yes --> N_LogArrayPopulationResults_Node0_action N_LogArrayPopulationResults_Node0_action --> E_LogArrayPopulationResults S_LogArrayPopulationResults --> N_LogArrayPopulationResults_Node0 N_LogArrayPopulationResults_Node0 -- No --> E_LogArrayPopulationResults
File: GCX016E.cbl
GIVEN: Status array initialization has been completed
WHEN: The system logs array population results
THEN: The system should record the number of segments processed, array entries created, and completion status
βœ“ Consolidated Acceptance Criteria
  • The system handles the invalid structure → the system should set an error flag indicating that segment structure is invalid and cannot 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_SetErrorFlagforInvalidStructure(["Start Step"]) E_SetErrorFlagforInvalidStructure(["End Step"]) N_SetErrorFlagforInvalidStructure_Node0{"The system handles the invalid
structure"}:::decision N_SetErrorFlagforInvalidStructure_Node0_action["The system should set an error flag
indicating that segment structure is
invalid and cannot be processed"]:::exclusion N_SetErrorFlagforInvalidStructure_Node0 -- Yes -->|Alternative| N_SetErrorFlagforInvalidStructure_Node0_action N_SetErrorFlagforInvalidStructure_Node0_action --> E_SetErrorFlagforInvalidStructure S_SetErrorFlagforInvalidStructure --> N_SetErrorFlagforInvalidStructure_Node0 N_SetErrorFlagforInvalidStructure_Node0 -- No --> E_SetErrorFlagforInvalidStructure
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A status segment has failed structure validation
WHEN: The system handles the invalid structure
THEN:
  • The system should set an error flag indicating that segment structure is invalid
  • Cannot be processed
βœ“ Consolidated Acceptance Criteria
  • The system handles the invalid segment error → the system should process the error condition and take appropriate corrective 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_HandleInvalidSegmentError(["Start Step"]) E_HandleInvalidSegmentError(["End Step"]) N_HandleInvalidSegmentError_Node0{"The system handles the invalid
segment error"}:::decision N_HandleInvalidSegmentError_Node0_action["The system should process the error
condition and take appropriate
corrective action"]:::exclusion N_HandleInvalidSegmentError_Node0 -- Yes -->|Alternative| N_HandleInvalidSegmentError_Node0_action N_HandleInvalidSegmentError_Node0_action --> E_HandleInvalidSegmentError S_HandleInvalidSegmentError --> N_HandleInvalidSegmentError_Node0 N_HandleInvalidSegmentError_Node0 -- No --> E_HandleInvalidSegmentError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An invalid status segment has been identified
WHEN: The system handles the invalid segment error
THEN:
  • The system should process the error condition
  • Take appropriate corrective action
βœ“ Consolidated Acceptance Criteria
  • The system attempts to retrieve the S09 segment from the GCSUSS09 database → the S09 segment data is successfully retrieved and made available 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_RetrieveS09SegmentfromDatabase(["Start Step"]) E_RetrieveS09SegmentfromDatabase(["End Step"]) N_RetrieveS09SegmentfromDatabase_Node0{"The system attempts to retrieve the
S09 segment from the GCSUSS09
database"}:::decision N_RetrieveS09SegmentfromDatabase_Node0_action["The S09 segment data is
successfully retrieved and made
available for validation"]:::main N_RetrieveS09SegmentfromDatabase_Node0 -- Yes --> N_RetrieveS09SegmentfromDatabase_Node0_action N_RetrieveS09SegmentfromDatabase_Node0_action --> E_RetrieveS09SegmentfromDatabase S_RetrieveS09SegmentfromDatabase --> N_RetrieveS09SegmentfromDatabase_Node0 N_RetrieveS09SegmentfromDatabase_Node0 -- No --> E_RetrieveS09SegmentfromDatabase
File: GCX016E.cbl
GIVEN: A cargo record requires S09 segment validation
WHEN: The system attempts to retrieve the S09 segment from the GCSUSS09 database
THEN:
  • The s09 segment data is successfully retrieved
  • Made available for validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the segment format structure → the segment format must conform to S09 structure requirements to proceed to field integrity 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_ValidateSegmentFormatStructure(["Start Step"]) E_ValidateSegmentFormatStructure(["End Step"]) N_ValidateSegmentFormatStructure_Node0{"The system validates the segment
format structure"}:::decision N_ValidateSegmentFormatStructure_Node0_action["The segment format must conform to
S09 structure requirements to
proceed to field integrity
validation"]:::main N_ValidateSegmentFormatStructure_Node0 -- Yes --> N_ValidateSegmentFormatStructure_Node0_action N_ValidateSegmentFormatStructure_Node0_action --> E_ValidateSegmentFormatStructure S_ValidateSegmentFormatStructure --> N_ValidateSegmentFormatStructure_Node0 N_ValidateSegmentFormatStructure_Node0 -- No --> E_ValidateSegmentFormatStructure
File: GCX016E.cbl
GIVEN: An S09 segment has been successfully retrieved from database
WHEN: The system validates the segment format structure
THEN: The segment format must conform to S09 structure requirements to proceed to field integrity validation
βœ“ Consolidated Acceptance Criteria
  • If format validity → if format is valid, proceed to field integrity check, otherwise log 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_FormatValid(["Start Step"]) E_FormatValid(["End Step"]) N_FormatValid_Node0{"The system evaluates format
validity"}:::decision N_FormatValid_Node0_action["If format is valid, proceed to
field integrity check, otherwise log
validation error"]:::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: GCX016E.cbl
GIVEN: S09 segment format structure has been validated
WHEN: The system evaluates format validity
THEN: If format is valid, proceed to field integrity check, otherwise log validation error
βœ“ Consolidated Acceptance Criteria
  • The system checks field integrity of the segment → all required fields must be present and properly formatted to proceed to data consistency 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_CheckFieldIntegrity(["Start Step"]) E_CheckFieldIntegrity(["End Step"]) N_CheckFieldIntegrity_Node0{"The system checks field integrity
of the segment"}:::decision N_CheckFieldIntegrity_Node0_action["All required fields must be present
and properly formatted to proceed to
data consistency validation"]:::main N_CheckFieldIntegrity_Node0 -- Yes --> N_CheckFieldIntegrity_Node0_action N_CheckFieldIntegrity_Node0_action --> E_CheckFieldIntegrity S_CheckFieldIntegrity --> N_CheckFieldIntegrity_Node0 N_CheckFieldIntegrity_Node0 -- No --> E_CheckFieldIntegrity
File: GCX016E.cbl
GIVEN: S09 segment has valid format structure
WHEN: The system checks field integrity of the segment
THEN:
  • All required fields must be present
  • Properly formatted to proceed to data consistency validation
βœ“ Consolidated Acceptance Criteria
  • If field completeness → if all fields are complete, proceed to data consistency validation, otherwise log 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_FieldsComplete(["Start Step"]) E_FieldsComplete(["End Step"]) N_FieldsComplete_Node0{"The system evaluates field
completeness"}:::decision N_FieldsComplete_Node0_action["If all fields are complete, proceed
to data consistency validation,
otherwise log validation error"]:::main N_FieldsComplete_Node0 -- Yes --> N_FieldsComplete_Node0_action N_FieldsComplete_Node0_action --> E_FieldsComplete S_FieldsComplete --> N_FieldsComplete_Node0 N_FieldsComplete_Node0 -- No --> E_FieldsComplete
File: GCX016E.cbl
GIVEN: S09 segment field integrity has been validated
WHEN: The system evaluates field completeness
THEN: If all fields are complete, proceed to data consistency validation, otherwise log validation error
βœ“ Consolidated Acceptance Criteria
  • The system validates data consistency across segment fields → all data values must be consistent and logically coherent to proceed to sequence 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_ValidateDataConsistency(["Start Step"]) E_ValidateDataConsistency(["End Step"]) N_ValidateDataConsistency_Node0{"The system validates data
consistency across segment fields"}:::decision N_ValidateDataConsistency_Node0_action["All data values must be consistent
and logically coherent to proceed to
sequence number validation"]:::main N_ValidateDataConsistency_Node0 -- Yes --> N_ValidateDataConsistency_Node0_action N_ValidateDataConsistency_Node0_action --> E_ValidateDataConsistency S_ValidateDataConsistency --> N_ValidateDataConsistency_Node0 N_ValidateDataConsistency_Node0 -- No --> E_ValidateDataConsistency
File: GCX016E.cbl
GIVEN: S09 segment has complete and valid fields
WHEN: The system validates data consistency across segment fields
THEN:
  • All data values must be consistent
  • Logically coherent to proceed to sequence number validation
βœ“ Consolidated Acceptance Criteria
  • If data consistency → if data is consistent, proceed to sequence number validation, otherwise log 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_DataConsistent(["Start Step"]) E_DataConsistent(["End Step"]) N_DataConsistent_Node0{"The system evaluates data
consistency"}:::decision N_DataConsistent_Node0_action["If data is consistent, proceed to
sequence number validation,
otherwise log validation error"]:::main N_DataConsistent_Node0 -- Yes --> N_DataConsistent_Node0_action N_DataConsistent_Node0_action --> E_DataConsistent S_DataConsistent --> N_DataConsistent_Node0 N_DataConsistent_Node0 -- No --> E_DataConsistent
File: GCX016E.cbl
GIVEN: S09 segment data consistency has been validated
WHEN: The system evaluates data consistency
THEN: If data is consistent, proceed to sequence number validation, otherwise log validation error
βœ“ Consolidated Acceptance Criteria
  • The system validates sequence numbers → sequence numbers must be properly ordered and within valid ranges to proceed to status code 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_ValidateSequenceNumbers(["Start Step"]) E_ValidateSequenceNumbers(["End Step"]) N_ValidateSequenceNumbers_Node0{"The system validates sequence
numbers"}:::decision N_ValidateSequenceNumbers_Node0_action["Sequence numbers must be properly
ordered and within valid ranges to
proceed to status code validation"]:::main N_ValidateSequenceNumbers_Node0 -- Yes --> N_ValidateSequenceNumbers_Node0_action N_ValidateSequenceNumbers_Node0_action --> E_ValidateSequenceNumbers S_ValidateSequenceNumbers --> N_ValidateSequenceNumbers_Node0 N_ValidateSequenceNumbers_Node0 -- No --> E_ValidateSequenceNumbers
File: GCX016E.cbl
GIVEN: S09 segment has consistent data values
WHEN: The system validates sequence numbers
THEN:
  • Sequence numbers must be properly ordered
  • Within valid ranges to proceed to status code validation
βœ“ Consolidated Acceptance Criteria
  • If sequence validity → if sequences are valid, proceed to status code validation, otherwise log 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_SequencesValid(["Start Step"]) E_SequencesValid(["End Step"]) N_SequencesValid_Node0{"The system evaluates sequence
validity"}:::decision N_SequencesValid_Node0_action["If sequences are valid, proceed to
status code validation, otherwise
log validation error"]:::main N_SequencesValid_Node0 -- Yes --> N_SequencesValid_Node0_action N_SequencesValid_Node0_action --> E_SequencesValid S_SequencesValid --> N_SequencesValid_Node0 N_SequencesValid_Node0 -- No --> E_SequencesValid
File: GCX016E.cbl
GIVEN: S09 segment sequence numbers have been validated
WHEN: The system evaluates sequence validity
THEN: If sequences are valid, proceed to status code validation, otherwise log validation error
βœ“ Consolidated Acceptance Criteria
  • The system validates status code values → all status codes must be valid and recognized to proceed to segment approval
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateStatusCodeValues(["Start Step"]) E_ValidateStatusCodeValues(["End Step"]) N_ValidateStatusCodeValues_Node0{"The system validates status code
values"}:::decision N_ValidateStatusCodeValues_Node0_action["All status codes must be valid and
recognized to proceed to segment
approval"]:::main N_ValidateStatusCodeValues_Node0 -- Yes --> N_ValidateStatusCodeValues_Node0_action N_ValidateStatusCodeValues_Node0_action --> E_ValidateStatusCodeValues S_ValidateStatusCodeValues --> N_ValidateStatusCodeValues_Node0 N_ValidateStatusCodeValues_Node0 -- No --> E_ValidateStatusCodeValues
File: GCX016E.cbl
GIVEN: S09 segment has valid sequence numbers
WHEN: The system validates status code values
THEN:
  • All status codes must be valid
  • Recognized to proceed to segment approval
βœ“ Consolidated Acceptance Criteria
  • If status code validity → if status codes are valid, mark segment as valid, otherwise log 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_StatusCodesValid(["Start Step"]) E_StatusCodesValid(["End Step"]) N_StatusCodesValid_Node0{"The system evaluates status code
validity"}:::decision N_StatusCodesValid_Node0_action["If status codes are valid, mark
segment as valid, otherwise log
validation error"]:::main N_StatusCodesValid_Node0 -- Yes --> N_StatusCodesValid_Node0_action N_StatusCodesValid_Node0_action --> E_StatusCodesValid S_StatusCodesValid --> N_StatusCodesValid_Node0 N_StatusCodesValid_Node0 -- No --> E_StatusCodesValid
File: GCX016E.cbl
GIVEN: S09 segment status codes have been validated
WHEN: The system evaluates status code validity
THEN: If status codes are valid, mark segment as valid, otherwise log validation error
βœ“ Consolidated Acceptance Criteria
  • The system marks the segment as valid → the segment is flagged as valid and ready for status array population processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_MarkSegmentasValid(["Start Step"]) E_MarkSegmentasValid(["End Step"]) N_MarkSegmentasValid_Node0{"The system marks the segment as
valid"}:::decision N_MarkSegmentasValid_Node0_action["The segment is flagged as valid and
ready for status array population
processing"]:::main N_MarkSegmentasValid_Node0 -- Yes --> N_MarkSegmentasValid_Node0_action N_MarkSegmentasValid_Node0_action --> E_MarkSegmentasValid S_MarkSegmentasValid --> N_MarkSegmentasValid_Node0 N_MarkSegmentasValid_Node0 -- No --> E_MarkSegmentasValid
File: GCX016E.cbl
GIVEN: S09 segment has passed all validation checks including status codes
WHEN: The system marks the segment as valid
THEN:
  • The segment is flagged as valid
  • Ready for status array population processing
βœ“ Consolidated Acceptance Criteria
  • The system encounters a validation failure → a validation error is logged with appropriate error details for troubleshooting
  • The validation check fails → the system should log a validation error indicating the missing shipment root record
  • The system logs validation error → error details are recorded 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_LogValidationError(["Start Step"]) E_LogValidationError(["End Step"]) N_LogValidationError_Node0{"The system encounters a validation
failure"}:::decision N_LogValidationError_Node0_action["A validation error is logged with
appropriate error details for
troubleshooting"]:::main N_LogValidationError_Node0 -- Yes --> N_LogValidationError_Node0_action N_LogValidationError_Node0_action --> E_LogValidationError S_LogValidationError --> N_LogValidationError_Node0 N_LogValidationError_Node1{"The validation check fails"}:::decision N_LogValidationError_Node1_action["The system should log a validation
error indicating the missing
shipment root record"]:::main N_LogValidationError_Node1 -- Yes --> N_LogValidationError_Node1_action N_LogValidationError_Node1_action --> E_LogValidationError N_LogValidationError_Node0 -- No --> N_LogValidationError_Node1 N_LogValidationError_Node2{"The system logs validation error"}:::decision N_LogValidationError_Node2_action["Error details are recorded for
troubleshooting and audit purposes"]:::exclusion N_LogValidationError_Node2 -- Yes -->|Alternative| N_LogValidationError_Node2_action N_LogValidationError_Node2_action --> E_LogValidationError N_LogValidationError_Node1 -- No --> N_LogValidationError_Node2 N_LogValidationError_Node2 -- No --> E_LogValidationError
File: GCX016E.cbl
GIVEN: S09 segment has failed any validation check during the validation process
WHEN: The system encounters a validation failure
THEN: A validation error is logged with appropriate error details for troubleshooting
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A shipment root record does not exist in the SHIPROOT database
WHEN: The validation check fails
THEN: The system should log a validation error indicating the missing shipment root record
File: GCX016E.cbl
GIVEN: Segment data validation fails
WHEN: The system logs validation error
THEN:
  • Error details are recorded for troubleshooting
  • Audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system sets the error flag → the error flag is set to indicate validation failure and prevent invalid segment processing
  • The shipment root validation process completes with failure → the system should set an error flag to indicate validation failure
  • The system detects invalid or missing field mappings → an error flag is set to indicate foreign manifest processing cannot continue normally
  • The system handles the error condition → error flag is set to indicate validation failure and prevent further processing
  • The system sets error flag → error flag is activated to prevent further processing with invalid 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_SetErrorFlag(["Start Step"]) E_SetErrorFlag(["End Step"]) N_SetErrorFlag_Node0{"The system sets the error flag"}:::decision N_SetErrorFlag_Node0_action["The error flag is set to indicate
validation failure and prevent
invalid segment processing"]:::exclusion N_SetErrorFlag_Node0 -- Yes -->|Alternative| N_SetErrorFlag_Node0_action N_SetErrorFlag_Node0_action --> E_SetErrorFlag S_SetErrorFlag --> N_SetErrorFlag_Node0 N_SetErrorFlag_Node1{"The shipment root validation
process completes with failure"}:::decision N_SetErrorFlag_Node1_action["The system should set an error flag
to indicate validation 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_Node2{"The system detects invalid or
missing field mappings"}:::decision N_SetErrorFlag_Node2_action["An error flag is set to indicate
foreign manifest processing cannot
continue normally"]:::exclusion N_SetErrorFlag_Node2 -- Yes -->|Alternative| N_SetErrorFlag_Node2_action N_SetErrorFlag_Node2_action --> E_SetErrorFlag N_SetErrorFlag_Node1 -- No --> N_SetErrorFlag_Node2 N_SetErrorFlag_Node3{"The system handles the error
condition"}:::decision N_SetErrorFlag_Node3_action["Error flag is set to indicate
validation failure and prevent
further processing"]:::exclusion N_SetErrorFlag_Node3 -- Yes -->|Alternative| N_SetErrorFlag_Node3_action N_SetErrorFlag_Node3_action --> E_SetErrorFlag N_SetErrorFlag_Node2 -- No --> N_SetErrorFlag_Node3 N_SetErrorFlag_Node4{"The system sets error flag"}:::decision N_SetErrorFlag_Node4_action["Error flag is activated to prevent
further processing with invalid data"]:::exclusion N_SetErrorFlag_Node4 -- Yes -->|Alternative| N_SetErrorFlag_Node4_action N_SetErrorFlag_Node4_action --> E_SetErrorFlag N_SetErrorFlag_Node3 -- No --> N_SetErrorFlag_Node4 N_SetErrorFlag_Node4 -- No --> E_SetErrorFlag
File: GCX016E.cbl
GIVEN: A validation error has been logged for the S09 segment
WHEN: The system sets the error flag
THEN:
  • The error flag is set to indicate validation failure
  • Prevent invalid segment processing
File: GCX016E.cbl
GIVEN: A validation error has been logged for a missing shipment root record
WHEN: The shipment root validation process completes with failure
THEN: The system should set an error flag to indicate validation failure
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Field mapping validation has failed
WHEN: The system detects invalid or missing field mappings
THEN: An error flag is set to indicate foreign manifest processing cannot continue normally
File: GCX016E.cbl
GIVEN: An error message has been generated for validation failure
WHEN: The system handles the error condition
THEN:
  • Error flag is set to indicate validation failure
  • Prevent further processing
File: GCX016E.cbl
GIVEN: Validation error is logged
WHEN: The system sets error flag
THEN: Error flag is activated to prevent further processing with invalid data
βœ“ Consolidated Acceptance Criteria
  • The system continues processing → the valid segment data is used to populate status arrays 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_ContinuetoStatusArrayPopulation(["Start Step"]) E_ContinuetoStatusArrayPopulation(["End Step"]) N_ContinuetoStatusArrayPopulation_Node0{"The system continues processing"}:::decision N_ContinuetoStatusArrayPopulation_Node0_action["The valid segment data is used to
populate status arrays for cargo
processing"]:::main N_ContinuetoStatusArrayPopulation_Node0 -- Yes --> N_ContinuetoStatusArrayPopulation_Node0_action N_ContinuetoStatusArrayPopulation_Node0_action --> E_ContinuetoStatusArrayPopulation S_ContinuetoStatusArrayPopulation --> N_ContinuetoStatusArrayPopulation_Node0 N_ContinuetoStatusArrayPopulation_Node0 -- No --> E_ContinuetoStatusArrayPopulation
File: GCX016E.cbl
GIVEN: S09 segment has been marked as valid after successful validation
WHEN: The system continues processing
THEN: The valid segment data is used to populate status arrays for cargo processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the validation result → the invalid segment is skipped and not used for status array 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_SkipInvalidSegment(["Start Step"]) E_SkipInvalidSegment(["End Step"]) N_SkipInvalidSegment_Node0{"The system processes the validation
result"}:::decision N_SkipInvalidSegment_Node0_action["The invalid segment is skipped and
not used for status array population"]:::main N_SkipInvalidSegment_Node0 -- Yes --> N_SkipInvalidSegment_Node0_action N_SkipInvalidSegment_Node0_action --> E_SkipInvalidSegment S_SkipInvalidSegment --> N_SkipInvalidSegment_Node0 N_SkipInvalidSegment_Node0 -- No --> E_SkipInvalidSegment
File: GCX016E.cbl
GIVEN: S09 segment has failed validation and error flag has been set
WHEN: The system processes the validation result
THEN:
  • The invalid segment is skipped
  • Not used for status array population
βœ“ Consolidated Acceptance Criteria
  • The conversion initialization is triggered → database segment counter is set to zero and work areas are cleared
  • The system begins the conversion operation → the database segment counter is set to zero and work areas 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_InitializeDatabaseSegmentCounter(["Start Step"]) E_InitializeDatabaseSegmentCounter(["End Step"]) N_InitializeDatabaseSegmentCounter_Node0{"The conversion initialization is
triggered"}:::decision N_InitializeDatabaseSegmentCounter_Node0_action["Database segment counter is set to
zero and work areas are cleared"]:::main N_InitializeDatabaseSegmentCounter_Node0 -- Yes --> N_InitializeDatabaseSegmentCounter_Node0_action N_InitializeDatabaseSegmentCounter_Node0_action --> E_InitializeDatabaseSegmentCounter S_InitializeDatabaseSegmentCounter --> N_InitializeDatabaseSegmentCounter_Node0 N_InitializeDatabaseSegmentCounter_Node1{"The system begins the conversion
operation"}:::decision N_InitializeDatabaseSegmentCounter_Node1_action["The database segment counter is set
to zero and work areas are cleared"]:::main N_InitializeDatabaseSegmentCounter_Node1 -- Yes --> N_InitializeDatabaseSegmentCounter_Node1_action N_InitializeDatabaseSegmentCounter_Node1_action --> E_InitializeDatabaseSegmentCounter N_InitializeDatabaseSegmentCounter_Node0 -- No --> N_InitializeDatabaseSegmentCounter_Node1 N_InitializeDatabaseSegmentCounter_Node1 -- No --> E_InitializeDatabaseSegmentCounter
File: GCX016E.cbl
GIVEN: Status array conversion process is starting
WHEN: The conversion initialization is triggered
THEN:
  • Database segment counter is set to zero
  • Work areas are cleared
File: GCX016E.cbl
GIVEN: A status array conversion process is starting
WHEN: The system begins the conversion operation
THEN:
  • The database segment counter is set to zero
  • Work areas are cleared
βœ“ Consolidated Acceptance Criteria
  • A new database segment needs to be prepared → the database segment work area is cleared of all previous data
  • The system prepares to process status array entries → all fields in the database segment work area are cleared 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_ClearDatabaseSegmentWorkArea(["Start Step"]) E_ClearDatabaseSegmentWorkArea(["End Step"]) N_ClearDatabaseSegmentWorkArea_Node0{"A new database segment needs to be
prepared"}:::decision N_ClearDatabaseSegmentWorkArea_Node0_action["The database segment work area is
cleared of all previous data"]:::main N_ClearDatabaseSegmentWorkArea_Node0 -- Yes --> N_ClearDatabaseSegmentWorkArea_Node0_action N_ClearDatabaseSegmentWorkArea_Node0_action --> E_ClearDatabaseSegmentWorkArea S_ClearDatabaseSegmentWorkArea --> N_ClearDatabaseSegmentWorkArea_Node0 N_ClearDatabaseSegmentWorkArea_Node1{"The system prepares to process
status array entries"}:::decision N_ClearDatabaseSegmentWorkArea_Node1_action["All fields in the database segment
work area are cleared to initial
values"]:::main N_ClearDatabaseSegmentWorkArea_Node1 -- Yes --> N_ClearDatabaseSegmentWorkArea_Node1_action N_ClearDatabaseSegmentWorkArea_Node1_action --> E_ClearDatabaseSegmentWorkArea N_ClearDatabaseSegmentWorkArea_Node0 -- No --> N_ClearDatabaseSegmentWorkArea_Node1 N_ClearDatabaseSegmentWorkArea_Node1 -- No --> E_ClearDatabaseSegmentWorkArea
File: GCX016E.cbl
GIVEN: Database conversion process is active
WHEN: A new database segment needs to be prepared
THEN: The database segment work area is cleared of all previous data
File: GCX016E.cbl
GIVEN: A database segment work area exists
WHEN: The system prepares to process status array entries
THEN: All fields in the database segment work area are cleared to initial values
βœ“ Consolidated Acceptance Criteria
  • System checks for remaining entries to process → continue processing if entries exist, otherwise complete conversion
  • The system checks for remaining entries to process → the system returns true if more entries exist or false if all entries 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_MoreStatusArrayEntries(["Start Step"]) E_MoreStatusArrayEntries(["End Step"]) N_MoreStatusArrayEntries_Node0{"System checks for remaining entries
to process"}:::decision N_MoreStatusArrayEntries_Node0_action["Continue processing if entries
exist, otherwise complete conversion"]:::main N_MoreStatusArrayEntries_Node0 -- Yes --> N_MoreStatusArrayEntries_Node0_action N_MoreStatusArrayEntries_Node0_action --> E_MoreStatusArrayEntries S_MoreStatusArrayEntries --> N_MoreStatusArrayEntries_Node0 N_MoreStatusArrayEntries_Node1{"The system checks for remaining
entries to process"}:::decision N_MoreStatusArrayEntries_Node1_action["The system returns true if more
entries exist or false if all
entries have been processed"]:::main N_MoreStatusArrayEntries_Node1 -- Yes --> N_MoreStatusArrayEntries_Node1_action N_MoreStatusArrayEntries_Node1_action --> E_MoreStatusArrayEntries N_MoreStatusArrayEntries_Node0 -- No --> N_MoreStatusArrayEntries_Node1 N_MoreStatusArrayEntries_Node1 -- No --> E_MoreStatusArrayEntries
File: GCX016E.cbl
GIVEN: Status array conversion is in progress
WHEN: System checks for remaining entries to process
THEN: Continue processing if entries exist, otherwise complete conversion
File: GCX016E.cbl
GIVEN: A status array with multiple entries exists
WHEN: The system checks for remaining entries to process
THEN: The system returns true if more entries exist or false if all entries have been processed
βœ“ Consolidated Acceptance Criteria
  • Next entry retrieval is requested → the next status array entry is loaded for processing
  • The system processes status entries sequentially → the next unprocessed status array entry is retrieved for evaluation
  • The system needs to process the next entry → the next status array entry is retrieved and made available for data extraction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GetNextStatusArrayEntry(["Start Step"]) E_GetNextStatusArrayEntry(["End Step"]) N_GetNextStatusArrayEntry_Node0{"Next entry retrieval is requested"}:::decision N_GetNextStatusArrayEntry_Node0_action["The next status array entry is
loaded for processing"]:::main N_GetNextStatusArrayEntry_Node0 -- Yes --> N_GetNextStatusArrayEntry_Node0_action N_GetNextStatusArrayEntry_Node0_action --> E_GetNextStatusArrayEntry S_GetNextStatusArrayEntry --> N_GetNextStatusArrayEntry_Node0 N_GetNextStatusArrayEntry_Node1{"The system processes status entries
sequentially"}:::decision N_GetNextStatusArrayEntry_Node1_action["The next unprocessed status array
entry is retrieved for evaluation"]:::main N_GetNextStatusArrayEntry_Node1 -- Yes --> N_GetNextStatusArrayEntry_Node1_action N_GetNextStatusArrayEntry_Node1_action --> E_GetNextStatusArrayEntry N_GetNextStatusArrayEntry_Node0 -- No --> N_GetNextStatusArrayEntry_Node1 N_GetNextStatusArrayEntry_Node2{"The system needs to process the
next entry"}:::decision N_GetNextStatusArrayEntry_Node2_action["The next status array entry is
retrieved and made available for
data extraction"]:::main N_GetNextStatusArrayEntry_Node2 -- Yes --> N_GetNextStatusArrayEntry_Node2_action N_GetNextStatusArrayEntry_Node2_action --> E_GetNextStatusArrayEntry N_GetNextStatusArrayEntry_Node1 -- No --> N_GetNextStatusArrayEntry_Node2 N_GetNextStatusArrayEntry_Node2 -- No --> E_GetNextStatusArrayEntry
File: GCX016E.cbl
GIVEN: Status array has remaining entries to process
WHEN: Next entry retrieval is requested
THEN: The next status array entry is loaded for processing
File: GCX016E.cbl
GIVEN: A cargo status array contains multiple disposition code entries
WHEN: The system processes status entries sequentially
THEN: The next unprocessed status array entry is retrieved for evaluation
File: GCX016E.cbl
GIVEN: Status array entries are available for processing
WHEN: The system needs to process the next entry
THEN:
  • The next status array entry is retrieved
  • Made available for data extraction
βœ“ Consolidated Acceptance Criteria
  • Disposition code format validation is performed → disposition code is checked against valid format criteria
  • The system validates the disposition code format → the disposition code must meet format requirements to proceed 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_ValidateDispositionCodeFormat(["Start Step"]) E_ValidateDispositionCodeFormat(["End Step"]) N_ValidateDispositionCodeFormat_Node0{"Disposition code format validation
is performed"}:::decision N_ValidateDispositionCodeFormat_Node0_action["Disposition code is checked against
valid format criteria"]:::main N_ValidateDispositionCodeFormat_Node0 -- Yes --> N_ValidateDispositionCodeFormat_Node0_action N_ValidateDispositionCodeFormat_Node0_action --> E_ValidateDispositionCodeFormat S_ValidateDispositionCodeFormat --> N_ValidateDispositionCodeFormat_Node0 N_ValidateDispositionCodeFormat_Node1{"The system validates the
disposition code format"}:::decision N_ValidateDispositionCodeFormat_Node1_action["The disposition code must meet
format requirements to proceed with
removal processing"]:::main N_ValidateDispositionCodeFormat_Node1 -- Yes --> N_ValidateDispositionCodeFormat_Node1_action N_ValidateDispositionCodeFormat_Node1_action --> E_ValidateDispositionCodeFormat N_ValidateDispositionCodeFormat_Node0 -- No --> N_ValidateDispositionCodeFormat_Node1 N_ValidateDispositionCodeFormat_Node1 -- No --> E_ValidateDispositionCodeFormat
File: GCX016E.cbl
GIVEN: A status array entry with disposition code is being processed
WHEN: Disposition code format validation is performed
THEN: Disposition code is checked against valid format criteria
File: GCX016E.cbl
GIVEN: A disposition code removal request is received
WHEN: The system validates the disposition code format
THEN: The disposition code must meet format requirements to proceed with removal processing
βœ“ Consolidated Acceptance Criteria
  • Validity determination is made → valid codes proceed to formatting, invalid codes 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_DispositionCodeValid(["Start Step"]) E_DispositionCodeValid(["End Step"]) N_DispositionCodeValid_Node0{"Validity determination is made"}:::decision N_DispositionCodeValid_Node0_action["Valid codes proceed to formatting,
invalid codes are skipped"]:::main N_DispositionCodeValid_Node0 -- Yes --> N_DispositionCodeValid_Node0_action N_DispositionCodeValid_Node0_action --> E_DispositionCodeValid S_DispositionCodeValid --> N_DispositionCodeValid_Node0 N_DispositionCodeValid_Node0 -- No --> E_DispositionCodeValid
File: GCX016E.cbl
GIVEN: Disposition code format validation has been performed
WHEN: Validity determination is made
THEN: Valid codes proceed to formatting, invalid codes are skipped
βœ“ Consolidated Acceptance Criteria
  • Database formatting is applied → disposition code is converted to proper database storage 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_FormatDispositionCodeforDatabase(["Start Step"]) E_FormatDispositionCodeforDatabase(["End Step"]) N_FormatDispositionCodeforDatabase_Node0{"Database formatting is applied"}:::decision N_FormatDispositionCodeforDatabase_Node0_action["Disposition code is converted to
proper database storage format"]:::main N_FormatDispositionCodeforDatabase_Node0 -- Yes --> N_FormatDispositionCodeforDatabase_Node0_action N_FormatDispositionCodeforDatabase_Node0_action --> E_FormatDispositionCodeforDatabase S_FormatDispositionCodeforDatabase --> N_FormatDispositionCodeforDatabase_Node0 N_FormatDispositionCodeforDatabase_Node0 -- No --> E_FormatDispositionCodeforDatabase
File: GCX016E.cbl
GIVEN: A valid disposition code exists in the status array entry
WHEN: Database formatting is applied
THEN: Disposition code is converted to proper database storage format
βœ“ Consolidated Acceptance Criteria
  • Date/time formatting is applied → date and time data is converted to database storage format
  • The system prepares release notification content → the system formats date and time in the required format for inclusion in the notification message
  • Date/time information formatting is performed → date and time information is formatted for the report
  • Date and time information needs to be formatted → the system formats relevant dates and times for inclusion in the message
  • The date/time formatting process is executed → the date and time information is formatted for consistent display 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_FormatDateTimeInformation(["Start Step"]) E_FormatDateTimeInformation(["End Step"]) N_FormatDateTimeInformation_Node0{"Datetime formatting is applied"}:::decision N_FormatDateTimeInformation_Node0_action["Date and time data is converted to
database storage format"]:::main N_FormatDateTimeInformation_Node0 -- Yes --> N_FormatDateTimeInformation_Node0_action N_FormatDateTimeInformation_Node0_action --> E_FormatDateTimeInformation S_FormatDateTimeInformation --> N_FormatDateTimeInformation_Node0 N_FormatDateTimeInformation_Node1{"The system prepares release
notification content"}:::decision N_FormatDateTimeInformation_Node1_action["The system formats date and time in
the required format for inclusion in
the notification message"]:::main N_FormatDateTimeInformation_Node1 -- Yes --> N_FormatDateTimeInformation_Node1_action N_FormatDateTimeInformation_Node1_action --> E_FormatDateTimeInformation N_FormatDateTimeInformation_Node0 -- No --> N_FormatDateTimeInformation_Node1 N_FormatDateTimeInformation_Node2{"Datetime information formatting is
performed"}:::decision N_FormatDateTimeInformation_Node2_action["Date and time information is
formatted for the report"]:::main N_FormatDateTimeInformation_Node2 -- Yes --> N_FormatDateTimeInformation_Node2_action N_FormatDateTimeInformation_Node2_action --> E_FormatDateTimeInformation N_FormatDateTimeInformation_Node1 -- No --> N_FormatDateTimeInformation_Node2 N_FormatDateTimeInformation_Node3{"Date and time information needs to
be formatted"}:::decision N_FormatDateTimeInformation_Node3_action["The system formats relevant dates
and times for inclusion in the
message"]:::main N_FormatDateTimeInformation_Node3 -- Yes --> N_FormatDateTimeInformation_Node3_action N_FormatDateTimeInformation_Node3_action --> E_FormatDateTimeInformation N_FormatDateTimeInformation_Node2 -- No --> N_FormatDateTimeInformation_Node3 N_FormatDateTimeInformation_Node4{"The datetime formatting process is
executed"}:::decision N_FormatDateTimeInformation_Node4_action["The date and time information is
formatted for consistent display in
the report"]:::main N_FormatDateTimeInformation_Node4 -- Yes --> N_FormatDateTimeInformation_Node4_action N_FormatDateTimeInformation_Node4_action --> E_FormatDateTimeInformation N_FormatDateTimeInformation_Node3 -- No --> N_FormatDateTimeInformation_Node4 N_FormatDateTimeInformation_Node4 -- No --> E_FormatDateTimeInformation
File: GCX016E.cbl
GIVEN: Status array entry contains date and time information
WHEN: Date/time formatting is applied
THEN:
  • Date
  • Time data is converted to database storage format
File: GCX016E.cbl
GIVEN: Current system date and time are available
WHEN: The system prepares release notification content
THEN:
  • The system formats date
  • Time in the required format for inclusion in the notification message
File: GCX016E.cbl
GIVEN: System processing times are available
WHEN: Date/time information formatting is performed
THEN:
  • Date
  • Time information is formatted for the report
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: CPR bond notice has been added or is not applicable
WHEN:
  • Date
  • Time information needs to be formatted
THEN:
  • The system formats relevant dates
  • Times for inclusion in the message
File: GCX016E.cbl
GIVEN: Processing timestamps are available for the cargo
WHEN: The date/time formatting process is executed
THEN:
  • The date
  • Time information is formatted for consistent display in the report
βœ“ Consolidated Acceptance Criteria
  • Status code formatting is applied → status information is converted to database-compatible 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_FormatStatusInformationCode(["Start Step"]) E_FormatStatusInformationCode(["End Step"]) N_FormatStatusInformationCode_Node0{"Status code formatting is applied"}:::decision N_FormatStatusInformationCode_Node0_action["Status information is converted to
database-compatible format"]:::main N_FormatStatusInformationCode_Node0 -- Yes --> N_FormatStatusInformationCode_Node0_action N_FormatStatusInformationCode_Node0_action --> E_FormatStatusInformationCode S_FormatStatusInformationCode --> N_FormatStatusInformationCode_Node0 N_FormatStatusInformationCode_Node0 -- No --> E_FormatStatusInformationCode
File: GCX016E.cbl
GIVEN: Status array entry contains status information codes
WHEN: Status code formatting is applied
THEN: Status information is converted to database-compatible format
βœ“ Consolidated Acceptance Criteria
  • Quantity formatting is applied → quantity data is converted to proper database storage 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_FormatQuantityInformation(["Start Step"]) E_FormatQuantityInformation(["End Step"]) N_FormatQuantityInformation_Node0{"Quantity formatting is applied"}:::decision N_FormatQuantityInformation_Node0_action["Quantity data is converted to
proper database storage format"]:::main N_FormatQuantityInformation_Node0 -- Yes --> N_FormatQuantityInformation_Node0_action N_FormatQuantityInformation_Node0_action --> E_FormatQuantityInformation S_FormatQuantityInformation --> N_FormatQuantityInformation_Node0 N_FormatQuantityInformation_Node0 -- No --> E_FormatQuantityInformation
File: GCX016E.cbl
GIVEN: Status array entry contains quantity information
WHEN: Quantity formatting is applied
THEN: Quantity data is converted to proper database storage format
βœ“ Consolidated Acceptance Criteria
  • Data transfer to database segment is executed → formatted data is moved to the database segment work area
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_MoveFormattedDatatoDatabaseSegment(["Start Step"]) E_MoveFormattedDatatoDatabaseSegment(["End Step"]) N_MoveFormattedDatatoDatabaseSegment_Node0{"Data transfer to database segment
is executed"}:::decision N_MoveFormattedDatatoDatabaseSegment_Node0_action["Formatted data is moved to the
database segment work area"]:::main N_MoveFormattedDatatoDatabaseSegment_Node0 -- Yes --> N_MoveFormattedDatatoDatabaseSegment_Node0_action N_MoveFormattedDatatoDatabaseSegment_Node0_action --> E_MoveFormattedDatatoDatabaseSegment S_MoveFormattedDatatoDatabaseSegment --> N_MoveFormattedDatatoDatabaseSegment_Node0 N_MoveFormattedDatatoDatabaseSegment_Node0 -- No --> E_MoveFormattedDatatoDatabaseSegment
File: GCX016E.cbl
GIVEN: All data elements have been formatted for database storage
WHEN: Data transfer to database segment is executed
THEN: Formatted data is moved to the database segment work area
βœ“ Consolidated Acceptance Criteria
  • Counter increment is performed → database segment 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_IncrementDatabaseSegmentCounter(["Start Step"]) E_IncrementDatabaseSegmentCounter(["End Step"]) N_IncrementDatabaseSegmentCounter_Node0{"Counter increment is performed"}:::decision N_IncrementDatabaseSegmentCounter_Node0_action["Database segment counter is
increased by one"]:::main N_IncrementDatabaseSegmentCounter_Node0 -- Yes --> N_IncrementDatabaseSegmentCounter_Node0_action N_IncrementDatabaseSegmentCounter_Node0_action --> E_IncrementDatabaseSegmentCounter S_IncrementDatabaseSegmentCounter --> N_IncrementDatabaseSegmentCounter_Node0 N_IncrementDatabaseSegmentCounter_Node0 -- No --> E_IncrementDatabaseSegmentCounter
File: GCX016E.cbl
GIVEN: Data has been successfully moved to database segment
WHEN: Counter increment is performed
THEN: Database segment counter is increased by one
βœ“ Consolidated Acceptance Criteria
  • Segment status evaluation is performed → continue adding entries if segment has space and array has entries, otherwise complete 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_SegmentFullorArrayComplete(["Start Step"]) E_SegmentFullorArrayComplete(["End Step"]) N_SegmentFullorArrayComplete_Node0{"Segment status evaluation is
performed"}:::decision N_SegmentFullorArrayComplete_Node0_action["Continue adding entries if segment
has space and array has entries,
otherwise complete segment"]:::main N_SegmentFullorArrayComplete_Node0 -- Yes --> N_SegmentFullorArrayComplete_Node0_action N_SegmentFullorArrayComplete_Node0_action --> E_SegmentFullorArrayComplete S_SegmentFullorArrayComplete --> N_SegmentFullorArrayComplete_Node0 N_SegmentFullorArrayComplete_Node0 -- No --> E_SegmentFullorArrayComplete
File: GCX016E.cbl
GIVEN: Database segment has received new data entry
WHEN: Segment status evaluation is performed
THEN:
  • Continue adding entries if segment has space
  • Array has entries, otherwise complete segment
βœ“ Consolidated Acceptance Criteria
  • Segment preparation is initiated → database segment is prepared for storage 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_PrepareDatabaseSegmentforStorage(["Start Step"]) E_PrepareDatabaseSegmentforStorage(["End Step"]) N_PrepareDatabaseSegmentforStorage_Node0{"Segment preparation is initiated"}:::decision N_PrepareDatabaseSegmentforStorage_Node0_action["Database segment is prepared for
storage with proper formatting"]:::main N_PrepareDatabaseSegmentforStorage_Node0 -- Yes --> N_PrepareDatabaseSegmentforStorage_Node0_action N_PrepareDatabaseSegmentforStorage_Node0_action --> E_PrepareDatabaseSegmentforStorage S_PrepareDatabaseSegmentforStorage --> N_PrepareDatabaseSegmentforStorage_Node0 N_PrepareDatabaseSegmentforStorage_Node0 -- No --> E_PrepareDatabaseSegmentforStorage
File: GCX016E.cbl
GIVEN: Database segment is full or all array entries are processed
WHEN: Segment preparation is initiated
THEN: Database segment is prepared for storage with proper formatting
βœ“ Consolidated Acceptance Criteria
  • Sequence number assignment is performed → segment receives correct sequence number for database ordering
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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{"Sequence number assignment is
performed"}:::decision N_SetSegmentSequenceNumber_Node0_action["Segment receives correct sequence
number for database ordering"]:::main N_SetSegmentSequenceNumber_Node0 -- Yes --> N_SetSegmentSequenceNumber_Node0_action N_SetSegmentSequenceNumber_Node0_action --> E_SetSegmentSequenceNumber S_SetSegmentSequenceNumber --> N_SetSegmentSequenceNumber_Node0 N_SetSegmentSequenceNumber_Node0 -- No --> E_SetSegmentSequenceNumber
File: GCX016E.cbl
GIVEN: Database segment is being prepared for storage
WHEN: Sequence number assignment is performed
THEN: Segment receives correct sequence number for database ordering
βœ“ Consolidated Acceptance Criteria
  • CPRS status check is performed → non-CPRS cargos proceed to car ID update, CPRS cargos skip car ID 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_NonCPRSCargo(["Start Step"]) E_NonCPRSCargo(["End Step"]) N_NonCPRSCargo_Node0{"CPRS status check is performed"}:::decision N_NonCPRSCargo_Node0_action["Non-CPRS cargos proceed to car ID
update, CPRS cargos skip car ID
update"]:::main N_NonCPRSCargo_Node0 -- Yes --> N_NonCPRSCargo_Node0_action N_NonCPRSCargo_Node0_action --> E_NonCPRSCargo S_NonCPRSCargo --> N_NonCPRSCargo_Node0 N_NonCPRSCargo_Node0 -- No --> E_NonCPRSCargo
File: GCX016E.cbl
GIVEN: Cargo type needs to be evaluated for car ID processing
WHEN: CPRS status check is performed
THEN: Non-CPRS cargos proceed to car ID update, CPRS cargos skip car ID update
βœ“ Consolidated Acceptance Criteria
  • Car ID database update is executed → car identification information is updated in the database 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_UpdateCarIDinDatabaseSegment(["Start Step"]) E_UpdateCarIDinDatabaseSegment(["End Step"]) N_UpdateCarIDinDatabaseSegment_Node0{"Car ID database update is executed"}:::decision N_UpdateCarIDinDatabaseSegment_Node0_action["Car identification information is
updated in the database segment"]:::main N_UpdateCarIDinDatabaseSegment_Node0 -- Yes --> N_UpdateCarIDinDatabaseSegment_Node0_action N_UpdateCarIDinDatabaseSegment_Node0_action --> E_UpdateCarIDinDatabaseSegment S_UpdateCarIDinDatabaseSegment --> N_UpdateCarIDinDatabaseSegment_Node0 N_UpdateCarIDinDatabaseSegment_Node0 -- No --> E_UpdateCarIDinDatabaseSegment
File: GCX016E.cbl
GIVEN: Cargo is confirmed as non-CPRS type
WHEN: Car ID database update is executed
THEN: Car identification information is updated in the database segment
βœ“ Consolidated Acceptance Criteria
  • Ready status marking is applied → segment is flagged as ready for database write 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_MarkSegmentReadyforDatabaseWrite(["Start Step"]) E_MarkSegmentReadyforDatabaseWrite(["End Step"]) N_MarkSegmentReadyforDatabaseWrite_Node0{"Ready status marking is applied"}:::decision N_MarkSegmentReadyforDatabaseWrite_Node0_action["Segment is flagged as ready for
database write operation"]:::main N_MarkSegmentReadyforDatabaseWrite_Node0 -- Yes --> N_MarkSegmentReadyforDatabaseWrite_Node0_action N_MarkSegmentReadyforDatabaseWrite_Node0_action --> E_MarkSegmentReadyforDatabaseWrite S_MarkSegmentReadyforDatabaseWrite --> N_MarkSegmentReadyforDatabaseWrite_Node0 N_MarkSegmentReadyforDatabaseWrite_Node0 -- No --> E_MarkSegmentReadyforDatabaseWrite
File: GCX016E.cbl
GIVEN: Database segment has been fully prepared with all required data
WHEN: Ready status marking is applied
THEN: Segment is flagged as ready for database write operation
βœ“ Consolidated Acceptance Criteria
  • Continuation to next segment is initiated → system proceeds to process next segment or remaining 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_ContinuetoNextSegment(["Start Step"]) E_ContinuetoNextSegment(["End Step"]) N_ContinuetoNextSegment_Node0{"Continuation to next segment is
initiated"}:::decision N_ContinuetoNextSegment_Node0_action["System proceeds to process next
segment or remaining status array
entries"]:::main N_ContinuetoNextSegment_Node0 -- Yes --> N_ContinuetoNextSegment_Node0_action N_ContinuetoNextSegment_Node0_action --> E_ContinuetoNextSegment S_ContinuetoNextSegment --> N_ContinuetoNextSegment_Node0 N_ContinuetoNextSegment_Node0 -- No --> E_ContinuetoNextSegment
File: GCX016E.cbl
GIVEN: Current database segment processing is complete
WHEN: Continuation to next segment is initiated
THEN: System proceeds to process next segment or remaining status array entries
βœ“ Consolidated Acceptance Criteria
  • Conversion completion logging is performed → successful conversion completion 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_LogConversionCompletion(["Start Step"]) E_LogConversionCompletion(["End Step"]) N_LogConversionCompletion_Node0{"Conversion completion logging is
performed"}:::decision N_LogConversionCompletion_Node0_action["Successful conversion completion is
recorded in system logs"]:::main N_LogConversionCompletion_Node0 -- Yes --> N_LogConversionCompletion_Node0_action N_LogConversionCompletion_Node0_action --> E_LogConversionCompletion S_LogConversionCompletion --> N_LogConversionCompletion_Node0 N_LogConversionCompletion_Node0 -- No --> E_LogConversionCompletion
File: GCX016E.cbl
GIVEN: All status array entries have been processed and converted
WHEN: Conversion completion logging is performed
THEN: Successful conversion completion is recorded in system logs
βœ“ Consolidated Acceptance Criteria
  • The system searches the DC table for the disposition code → the system retrieves disposition code information if found or flags as invalid if not found
  • The system performs table lookup using GCCTBIO to search the DC table for the disposition code → the system determines if the disposition code exists in the table 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_SearchDCTableforDispositionCode(["Start Step"]) E_SearchDCTableforDispositionCode(["End Step"]) N_SearchDCTableforDispositionCode_Node0{"The system searches the DC table
for the disposition code"}:::decision N_SearchDCTableforDispositionCode_Node0_action["The system retrieves disposition
code information if found or flags
as invalid if not found"]:::main N_SearchDCTableforDispositionCode_Node0 -- Yes --> N_SearchDCTableforDispositionCode_Node0_action N_SearchDCTableforDispositionCode_Node0_action --> E_SearchDCTableforDispositionCode S_SearchDCTableforDispositionCode --> N_SearchDCTableforDispositionCode_Node0 N_SearchDCTableforDispositionCode_Node1{"The system performs table lookup
using GCCTBIO to search the DC table
for the disposition code"}:::decision N_SearchDCTableforDispositionCode_Node1_action["The system determines if the
disposition code exists in the table
and sets appropriate validation
flags"]:::main N_SearchDCTableforDispositionCode_Node1 -- Yes --> N_SearchDCTableforDispositionCode_Node1_action N_SearchDCTableforDispositionCode_Node1_action --> E_SearchDCTableforDispositionCode N_SearchDCTableforDispositionCode_Node0 -- No --> N_SearchDCTableforDispositionCode_Node1 N_SearchDCTableforDispositionCode_Node1 -- No --> E_SearchDCTableforDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is received from an X4 segment
WHEN: The system searches the DC table for the disposition code
THEN: The system retrieves disposition code information if found or flags as invalid if not found
File: GCX016E.cbl
GIVEN: A disposition code is received from X4 segment processing
WHEN: The system performs table lookup using GCCTBIO to search the DC table for the disposition code
THEN:
  • The system determines if the disposition code exists in the table
  • Sets appropriate validation flags
βœ“ Consolidated Acceptance Criteria
  • The disposition code information is successfully retrieved → the system sets the valid disposition code flag to allow 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_SetValidDispositionCodeFlag(["Start Step"]) E_SetValidDispositionCodeFlag(["End Step"]) N_SetValidDispositionCodeFlag_Node0{"The disposition code information is
successfully retrieved"}:::decision N_SetValidDispositionCodeFlag_Node0_action["The system sets the valid
disposition code flag to allow
continued processing"]:::main N_SetValidDispositionCodeFlag_Node0 -- Yes --> N_SetValidDispositionCodeFlag_Node0_action N_SetValidDispositionCodeFlag_Node0_action --> E_SetValidDispositionCodeFlag S_SetValidDispositionCodeFlag --> N_SetValidDispositionCodeFlag_Node0 N_SetValidDispositionCodeFlag_Node0 -- No --> E_SetValidDispositionCodeFlag
File: GCX016E.cbl
GIVEN: A disposition code has been found in the DC table
WHEN: The disposition code information is successfully retrieved
THEN: The system sets the valid disposition code flag to allow continued processing
βœ“ Consolidated Acceptance Criteria
  • The table lookup returns no matching record → the system generates a Merlin error message and sets invalid disposition code flag
  • The system determines the disposition code is invalid → the system generates an error message to the Merlin messaging system reporting the unknown disposition code
  • The disposition code is not found in the DC table → the system initiates generation of a Merlin error message for the unknown code
  • Error information needs to be communicated to business users → format error message with relevant business context (train ID, cargo information, disposition codes) and route to Merlin system
  • Error handling is required → an error message is generated and sent to the Merlin messaging system to notify users of the invalid code
  • The code validation fails → the system generates a Merlin error message indicating the unknown 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_GenerateMerlinErrorMessage(["Start Step"]) E_GenerateMerlinErrorMessage(["End Step"]) N_GenerateMerlinErrorMessage_Node0{"The table lookup returns no
matching record"}:::decision N_GenerateMerlinErrorMessage_Node0_action["The system generates a Merlin error
message and sets invalid disposition
code flag"]:::main N_GenerateMerlinErrorMessage_Node0 -- Yes --> N_GenerateMerlinErrorMessage_Node0_action N_GenerateMerlinErrorMessage_Node0_action --> E_GenerateMerlinErrorMessage S_GenerateMerlinErrorMessage --> N_GenerateMerlinErrorMessage_Node0 N_GenerateMerlinErrorMessage_Node1{"The system determines the
disposition code is invalid"}:::decision N_GenerateMerlinErrorMessage_Node1_action["The system generates an error
message to the Merlin messaging
system reporting the unknown
disposition code"]:::exclusion N_GenerateMerlinErrorMessage_Node1 -- Yes -->|Alternative| N_GenerateMerlinErrorMessage_Node1_action N_GenerateMerlinErrorMessage_Node1_action --> E_GenerateMerlinErrorMessage N_GenerateMerlinErrorMessage_Node0 -- No --> N_GenerateMerlinErrorMessage_Node1 N_GenerateMerlinErrorMessage_Node2{"The disposition code is not found
in the DC table"}:::decision N_GenerateMerlinErrorMessage_Node2_action["The system initiates generation of
a Merlin error message for the
unknown code"]:::main N_GenerateMerlinErrorMessage_Node2 -- Yes --> N_GenerateMerlinErrorMessage_Node2_action N_GenerateMerlinErrorMessage_Node2_action --> E_GenerateMerlinErrorMessage N_GenerateMerlinErrorMessage_Node1 -- No --> N_GenerateMerlinErrorMessage_Node2 N_GenerateMerlinErrorMessage_Node3{"Error information needs to be
communicated to business users"}:::decision N_GenerateMerlinErrorMessage_Node3_action["Format error message with relevant
business context train ID, cargo
information, disposition codes and
route to Merlin system"]:::exclusion N_GenerateMerlinErrorMessage_Node3 -- Yes -->|Alternative| N_GenerateMerlinErrorMessage_Node3_action N_GenerateMerlinErrorMessage_Node3_action --> E_GenerateMerlinErrorMessage N_GenerateMerlinErrorMessage_Node2 -- No --> N_GenerateMerlinErrorMessage_Node3 N_GenerateMerlinErrorMessage_Node4{"Error handling is required"}:::decision N_GenerateMerlinErrorMessage_Node4_action["An error message is generated and
sent to the Merlin messaging system
to notify users of the invalid code"]:::exclusion N_GenerateMerlinErrorMessage_Node4 -- Yes -->|Alternative| N_GenerateMerlinErrorMessage_Node4_action N_GenerateMerlinErrorMessage_Node4_action --> E_GenerateMerlinErrorMessage N_GenerateMerlinErrorMessage_Node3 -- No --> N_GenerateMerlinErrorMessage_Node4 N_GenerateMerlinErrorMessage_Node5{"The code validation fails"}:::decision N_GenerateMerlinErrorMessage_Node5_action["The system generates a Merlin error
message indicating the unknown
disposition code"]:::main N_GenerateMerlinErrorMessage_Node5 -- Yes --> N_GenerateMerlinErrorMessage_Node5_action N_GenerateMerlinErrorMessage_Node5_action --> E_GenerateMerlinErrorMessage N_GenerateMerlinErrorMessage_Node4 -- No --> N_GenerateMerlinErrorMessage_Node5 N_GenerateMerlinErrorMessage_Node5 -- No --> E_GenerateMerlinErrorMessage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in the DC table
WHEN: The table lookup returns no matching record
THEN:
  • The system generates a merlin error message
  • Sets invalid disposition code flag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in the DC table during lookup
WHEN: The system determines the disposition code is invalid
THEN: The system generates an error message to the Merlin messaging system reporting the unknown disposition code
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code has been received for processing
WHEN: The disposition code is not found in the DC table
THEN: The system initiates generation of a Merlin error message for the unknown code
File: GCX016E.cbl
GIVEN: An error condition has been detected during message processing
WHEN: Error information needs to be communicated to business users
THEN: Format error message with relevant business context (train ID, cargo information, disposition codes) and route to Merlin system
File: GCX016E.cbl
GIVEN: An invalid disposition code has been identified
WHEN: Error handling is required
THEN:
  • An error message is generated
  • Sent to the merlin messaging system to notify users of the invalid code
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in the DC table
WHEN: The code validation fails
THEN: The system generates a Merlin error message indicating the unknown disposition code
βœ“ Consolidated Acceptance Criteria
  • The system validates the code processing rules → the system confirms the code can be processed according to established 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_ValidateCodeProcessingRules(["Start Step"]) E_ValidateCodeProcessingRules(["End Step"]) N_ValidateCodeProcessingRules_Node0{"The system validates the code
processing rules"}:::decision N_ValidateCodeProcessingRules_Node0_action["The system confirms the code can be
processed according to established
business rules"]:::main N_ValidateCodeProcessingRules_Node0 -- Yes --> N_ValidateCodeProcessingRules_Node0_action N_ValidateCodeProcessingRules_Node0_action --> E_ValidateCodeProcessingRules S_ValidateCodeProcessingRules --> N_ValidateCodeProcessingRules_Node0 N_ValidateCodeProcessingRules_Node0 -- No --> E_ValidateCodeProcessingRules
File: GCX016E.cbl
GIVEN: A valid disposition code is found in the DC table
WHEN: The system validates the code processing rules
THEN: The system confirms the code can be processed according to established business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the invalid code → the system logs the unknown disposition code for audit and monitoring purposes
  • The system processes the invalid disposition code → the system logs the unknown disposition code details for audit and debugging purposes
  • Logging is required for audit purposes → the unknown disposition code is logged with relevant context information for system administrators
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_LogUnknownDispositionCode(["Start Step"]) E_LogUnknownDispositionCode(["End Step"]) N_LogUnknownDispositionCode_Node0{"The system processes the invalid
code"}:::decision N_LogUnknownDispositionCode_Node0_action["The system logs the unknown
disposition code for audit and
monitoring purposes"]:::exclusion N_LogUnknownDispositionCode_Node0 -- Yes -->|Alternative| N_LogUnknownDispositionCode_Node0_action N_LogUnknownDispositionCode_Node0_action --> E_LogUnknownDispositionCode S_LogUnknownDispositionCode --> N_LogUnknownDispositionCode_Node0 N_LogUnknownDispositionCode_Node1{"The system processes the invalid
disposition code"}:::decision N_LogUnknownDispositionCode_Node1_action["The system logs the unknown
disposition code details for audit
and debugging purposes"]:::exclusion N_LogUnknownDispositionCode_Node1 -- Yes -->|Alternative| N_LogUnknownDispositionCode_Node1_action N_LogUnknownDispositionCode_Node1_action --> E_LogUnknownDispositionCode N_LogUnknownDispositionCode_Node0 -- No --> N_LogUnknownDispositionCode_Node1 N_LogUnknownDispositionCode_Node2{"Logging is required for audit
purposes"}:::decision N_LogUnknownDispositionCode_Node2_action["The unknown disposition code is
logged with relevant context
information for system
administrators"]:::main N_LogUnknownDispositionCode_Node2 -- Yes --> N_LogUnknownDispositionCode_Node2_action N_LogUnknownDispositionCode_Node2_action --> E_LogUnknownDispositionCode N_LogUnknownDispositionCode_Node1 -- No --> N_LogUnknownDispositionCode_Node2 N_LogUnknownDispositionCode_Node2 -- No --> E_LogUnknownDispositionCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An invalid disposition code flag has been set
WHEN: The system processes the invalid code
THEN:
  • The system logs the unknown disposition code for audit
  • Monitoring purposes
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code has been determined invalid and error message generated
WHEN: The system processes the invalid disposition code
THEN:
  • The system logs the unknown disposition code details for audit
  • Debugging purposes
File: GCX016E.cbl
GIVEN: A disposition code is determined to be invalid or unknown
WHEN: Logging is required for audit purposes
THEN: The unknown disposition code is logged with relevant context information for system administrators
βœ“ Consolidated Acceptance Criteria
  • All processing rules have been satisfied → the system continues with normal cargo processing using the validated 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_ContinueProcessingwithValidCode(["Start Step"]) E_ContinueProcessingwithValidCode(["End Step"]) N_ContinueProcessingwithValidCode_Node0{"All processing rules have been
satisfied"}:::decision N_ContinueProcessingwithValidCode_Node0_action["The system continues with normal
cargo processing using the validated
disposition code"]:::main N_ContinueProcessingwithValidCode_Node0 -- Yes --> N_ContinueProcessingwithValidCode_Node0_action N_ContinueProcessingwithValidCode_Node0_action --> E_ContinueProcessingwithValidCode S_ContinueProcessingwithValidCode --> N_ContinueProcessingwithValidCode_Node0 N_ContinueProcessingwithValidCode_Node0 -- No --> E_ContinueProcessingwithValidCode
File: GCX016E.cbl
GIVEN: A disposition code has been validated and flagged as valid
WHEN: All processing rules have been satisfied
THEN: The system continues with normal cargo processing using the validated disposition code
βœ“ Consolidated Acceptance Criteria
  • The invalid code flag is set → the system skips further processing for that cargo to prevent 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_SkipProcessingforInvalidCode(["Start Step"]) E_SkipProcessingforInvalidCode(["End Step"]) N_SkipProcessingforInvalidCode_Node0{"The invalid code flag is set"}:::decision N_SkipProcessingforInvalidCode_Node0_action["The system skips further processing
for that cargo to prevent errors"]:::exclusion N_SkipProcessingforInvalidCode_Node0 -- Yes -->|Alternative| N_SkipProcessingforInvalidCode_Node0_action N_SkipProcessingforInvalidCode_Node0_action --> E_SkipProcessingforInvalidCode S_SkipProcessingforInvalidCode --> N_SkipProcessingforInvalidCode_Node0 N_SkipProcessingforInvalidCode_Node0 -- No --> E_SkipProcessingforInvalidCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code has been flagged as invalid
WHEN: The invalid code flag is set
THEN: The system skips further processing for that cargo to prevent errors
βœ“ Consolidated Acceptance Criteria
  • The system extracts processing rules from the table entry → the system retrieves action type (add/subtract), hold/release indicator, status information flag, and removal processing flag 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_ExtractProcessingRulesfromTable(["Start Step"]) E_ExtractProcessingRulesfromTable(["End Step"]) N_ExtractProcessingRulesfromTable_Node0{"The system extracts processing
rules from the table entry"}:::decision N_ExtractProcessingRulesfromTable_Node0_action["The system retrieves action type
addsubtract, holdrelease indicator,
status information flag, and removal
processing flag for the disposition
code"]:::main N_ExtractProcessingRulesfromTable_Node0 -- Yes --> N_ExtractProcessingRulesfromTable_Node0_action N_ExtractProcessingRulesfromTable_Node0_action --> E_ExtractProcessingRulesfromTable S_ExtractProcessingRulesfromTable --> N_ExtractProcessingRulesfromTable_Node0 N_ExtractProcessingRulesfromTable_Node0 -- No --> E_ExtractProcessingRulesfromTable
File: GCX016E.cbl
GIVEN: A disposition code has been found valid in the DC table
WHEN: The system extracts processing rules from the table entry
THEN: The system retrieves action type (add/subtract), hold/release indicator, status information flag, and removal processing flag for the disposition code
βœ“ Consolidated Acceptance Criteria
  • The system completes table lookup validation → the system sets the disposition code valid flag to true to enable further processing
  • The validation process completes successfully → the system sets the disposition code valid flag to enable 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_SetDispositionCodeValidFlag(["Start Step"]) E_SetDispositionCodeValidFlag(["End Step"]) N_SetDispositionCodeValidFlag_Node0{"The system completes table lookup
validation"}:::decision N_SetDispositionCodeValidFlag_Node0_action["The system sets the disposition
code valid flag to true to enable
further processing"]:::main N_SetDispositionCodeValidFlag_Node0 -- Yes --> N_SetDispositionCodeValidFlag_Node0_action N_SetDispositionCodeValidFlag_Node0_action --> E_SetDispositionCodeValidFlag S_SetDispositionCodeValidFlag --> N_SetDispositionCodeValidFlag_Node0 N_SetDispositionCodeValidFlag_Node1{"The validation process completes
successfully"}:::decision N_SetDispositionCodeValidFlag_Node1_action["The system sets the disposition
code valid flag to enable further
processing"]:::main N_SetDispositionCodeValidFlag_Node1 -- Yes --> N_SetDispositionCodeValidFlag_Node1_action N_SetDispositionCodeValidFlag_Node1_action --> E_SetDispositionCodeValidFlag N_SetDispositionCodeValidFlag_Node0 -- No --> N_SetDispositionCodeValidFlag_Node1 N_SetDispositionCodeValidFlag_Node1 -- No --> E_SetDispositionCodeValidFlag
File: GCX016E.cbl
GIVEN: A disposition code has been successfully found in the DC table
WHEN: The system completes table lookup validation
THEN: The system sets the disposition code valid flag to true to enable further processing
File: GCX016E.cbl
GIVEN: A disposition code has been successfully validated against the DC table
WHEN: The validation process completes successfully
THEN: The system sets the disposition code valid flag to enable further processing
βœ“ Consolidated Acceptance Criteria
  • The system extracts action type information from the table entry → the system identifies whether the disposition code should add to or subtract from 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_ExtractActionTypeAddSubtract(["Start Step"]) E_ExtractActionTypeAddSubtract(["End Step"]) N_ExtractActionTypeAddSubtract_Node0{"The system extracts action type
information from the table entry"}:::decision N_ExtractActionTypeAddSubtract_Node0_action["The system identifies whether the
disposition code should add to or
subtract from release quantities"]:::main N_ExtractActionTypeAddSubtract_Node0 -- Yes --> N_ExtractActionTypeAddSubtract_Node0_action N_ExtractActionTypeAddSubtract_Node0_action --> E_ExtractActionTypeAddSubtract S_ExtractActionTypeAddSubtract --> N_ExtractActionTypeAddSubtract_Node0 N_ExtractActionTypeAddSubtract_Node0 -- No --> E_ExtractActionTypeAddSubtract
File: GCX016E.cbl
GIVEN: A valid disposition code entry exists in the DC table
WHEN: The system extracts action type information from the table entry
THEN: The system identifies whether the disposition code should add to or subtract from release quantities
βœ“ Consolidated Acceptance Criteria
  • The system extracts hold/release indicator from the table entry → the system identifies whether the disposition code represents a hold or release action
  • The system needs to determine the hold or release nature of the code → the hold/release indicator is extracted to determine the appropriate cargo status 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_ExtractHoldReleaseIndicator(["Start Step"]) E_ExtractHoldReleaseIndicator(["End Step"]) N_ExtractHoldReleaseIndicator_Node0{"The system extracts holdrelease
indicator from the table entry"}:::decision N_ExtractHoldReleaseIndicator_Node0_action["The system identifies whether the
disposition code represents a hold
or release action"]:::main N_ExtractHoldReleaseIndicator_Node0 -- Yes --> N_ExtractHoldReleaseIndicator_Node0_action N_ExtractHoldReleaseIndicator_Node0_action --> E_ExtractHoldReleaseIndicator S_ExtractHoldReleaseIndicator --> N_ExtractHoldReleaseIndicator_Node0 N_ExtractHoldReleaseIndicator_Node1{"The system needs to determine the
hold or release nature of the code"}:::decision N_ExtractHoldReleaseIndicator_Node1_action["The holdrelease indicator is
extracted to determine the
appropriate cargo status action"]:::main N_ExtractHoldReleaseIndicator_Node1 -- Yes --> N_ExtractHoldReleaseIndicator_Node1_action N_ExtractHoldReleaseIndicator_Node1_action --> E_ExtractHoldReleaseIndicator N_ExtractHoldReleaseIndicator_Node0 -- No --> N_ExtractHoldReleaseIndicator_Node1 N_ExtractHoldReleaseIndicator_Node1 -- No --> E_ExtractHoldReleaseIndicator
File: GCX016E.cbl
GIVEN: A valid disposition code entry exists in the DC table
WHEN: The system extracts hold/release indicator from the table entry
THEN: The system identifies whether the disposition code represents a hold or release action
File: GCX016E.cbl
GIVEN: A valid disposition code with processing attributes
WHEN: The system needs to determine the hold or release nature of the code
THEN: The hold/release indicator is extracted to determine the appropriate cargo status action
βœ“ Consolidated Acceptance Criteria
  • The system extracts status information flag from the table entry → the system identifies whether the disposition code is informational only or requires active processing
  • The system needs to determine if the code is informational → the status information flag is extracted to determine if the code affects cargo status or is 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_ExtractStatusInformationFlag(["Start Step"]) E_ExtractStatusInformationFlag(["End Step"]) N_ExtractStatusInformationFlag_Node0{"The system extracts status
information flag from the table
entry"}:::decision N_ExtractStatusInformationFlag_Node0_action["The system identifies whether the
disposition code is informational
only or requires active processing"]:::main N_ExtractStatusInformationFlag_Node0 -- Yes --> N_ExtractStatusInformationFlag_Node0_action N_ExtractStatusInformationFlag_Node0_action --> E_ExtractStatusInformationFlag S_ExtractStatusInformationFlag --> N_ExtractStatusInformationFlag_Node0 N_ExtractStatusInformationFlag_Node1{"The system needs to determine if
the code is informational"}:::decision N_ExtractStatusInformationFlag_Node1_action["The status information flag is
extracted to determine if the code
affects cargo status or is
informational only"]:::main N_ExtractStatusInformationFlag_Node1 -- Yes --> N_ExtractStatusInformationFlag_Node1_action N_ExtractStatusInformationFlag_Node1_action --> E_ExtractStatusInformationFlag N_ExtractStatusInformationFlag_Node0 -- No --> N_ExtractStatusInformationFlag_Node1 N_ExtractStatusInformationFlag_Node1 -- No --> E_ExtractStatusInformationFlag
File: GCX016E.cbl
GIVEN: A valid disposition code entry exists in the DC table
WHEN: The system extracts status information flag from the table entry
THEN: The system identifies whether the disposition code is informational only or requires active processing
File: GCX016E.cbl
GIVEN: A valid disposition code with complete attributes
WHEN: The system needs to determine if the code is informational
THEN: The status information flag is extracted to determine if the code affects cargo status or is informational only
βœ“ Consolidated Acceptance Criteria
  • The system extracts removal processing flag from the table entry → the system identifies whether existing disposition codes should be removed before processing the current 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_ExtractRemovalProcessingFlag(["Start Step"]) E_ExtractRemovalProcessingFlag(["End Step"]) N_ExtractRemovalProcessingFlag_Node0{"The system extracts removal
processing flag from the table entry"}:::decision N_ExtractRemovalProcessingFlag_Node0_action["The system identifies whether
existing disposition codes should be
removed before processing the
current code"]:::main N_ExtractRemovalProcessingFlag_Node0 -- Yes --> N_ExtractRemovalProcessingFlag_Node0_action N_ExtractRemovalProcessingFlag_Node0_action --> E_ExtractRemovalProcessingFlag S_ExtractRemovalProcessingFlag --> N_ExtractRemovalProcessingFlag_Node0 N_ExtractRemovalProcessingFlag_Node0 -- No --> E_ExtractRemovalProcessingFlag
File: GCX016E.cbl
GIVEN: A valid disposition code entry exists in the DC table
WHEN: The system extracts removal processing flag from the table entry
THEN: The system identifies whether existing disposition codes should be removed before processing the current code
βœ“ Consolidated Acceptance Criteria
  • The system completes rule extraction process → the system stores action type, hold/release indicator, status flag, and removal flag 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_SetProcessingRulesinWorkingStorage(["Start Step"]) E_SetProcessingRulesinWorkingStorage(["End Step"]) N_SetProcessingRulesinWorkingStorage_Node0{"The system completes rule
extraction process"}:::decision N_SetProcessingRulesinWorkingStorage_Node0_action["The system stores action type,
holdrelease indicator, status flag,
and removal flag in working storage
variables"]:::main N_SetProcessingRulesinWorkingStorage_Node0 -- Yes --> N_SetProcessingRulesinWorkingStorage_Node0_action N_SetProcessingRulesinWorkingStorage_Node0_action --> E_SetProcessingRulesinWorkingStorage S_SetProcessingRulesinWorkingStorage --> N_SetProcessingRulesinWorkingStorage_Node0 N_SetProcessingRulesinWorkingStorage_Node0 -- No --> E_SetProcessingRulesinWorkingStorage
File: GCX016E.cbl
GIVEN: All processing rules have been extracted from the DC table entry
WHEN: The system completes rule extraction process
THEN: The system stores action type, hold/release indicator, status flag, and removal flag in working storage variables
βœ“ Consolidated Acceptance Criteria
  • The system completes table lookup validation with negative result → the system sets the disposition code invalid flag to prevent downstream processing of the invalid code
  • The validation process fails → the system sets the disposition code invalid flag 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_SetDispositionCodeInvalidFlag(["Start Step"]) E_SetDispositionCodeInvalidFlag(["End Step"]) N_SetDispositionCodeInvalidFlag_Node0{"The system completes table lookup
validation with negative result"}:::decision N_SetDispositionCodeInvalidFlag_Node0_action["The system sets the disposition
code invalid flag to prevent
downstream processing of the invalid
code"]:::main N_SetDispositionCodeInvalidFlag_Node0 -- Yes --> N_SetDispositionCodeInvalidFlag_Node0_action N_SetDispositionCodeInvalidFlag_Node0_action --> E_SetDispositionCodeInvalidFlag S_SetDispositionCodeInvalidFlag --> N_SetDispositionCodeInvalidFlag_Node0 N_SetDispositionCodeInvalidFlag_Node1{"The validation process fails"}:::decision N_SetDispositionCodeInvalidFlag_Node1_action["The system sets the disposition
code invalid flag to prevent further
processing"]:::main N_SetDispositionCodeInvalidFlag_Node1 -- Yes --> N_SetDispositionCodeInvalidFlag_Node1_action N_SetDispositionCodeInvalidFlag_Node1_action --> E_SetDispositionCodeInvalidFlag N_SetDispositionCodeInvalidFlag_Node0 -- No --> N_SetDispositionCodeInvalidFlag_Node1 N_SetDispositionCodeInvalidFlag_Node1 -- No --> E_SetDispositionCodeInvalidFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in the DC table
WHEN: The system completes table lookup validation with negative result
THEN: The system sets the disposition code invalid flag to prevent downstream processing of the invalid code
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in the DC table
WHEN: The validation process fails
THEN: The system sets the disposition code invalid flag to prevent further processing
βœ“ Consolidated Acceptance Criteria
  • The system looks up the disposition code in the DC table → the system retrieves the corresponding processing rules including action type, quantity impact, and removal requirements
  • The system looks up the disposition code in the DC table → the system determines if the code exists in the table and proceeds with appropriate processing path
  • The system needs to determine the disposition code's action type → the disposition code is looked up in the DC table to retrieve its configuration
  • The system looks up the disposition code in the DC table → the disposition code details and action type are retrieved 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_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 retrieves the
corresponding processing rules
including action type, quantity
impact, and removal requirements"]:::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 determines if the code
exists in the table and proceeds
with appropriate processing path"]:::main N_LookupDispositionCodeinDCTable_Node1 -- Yes --> N_LookupDispositionCodeinDCTable_Node1_action N_LookupDispositionCodeinDCTable_Node1_action --> E_LookupDispositionCodeinDCTable N_LookupDispositionCodeinDCTable_Node0 -- No --> N_LookupDispositionCodeinDCTable_Node1 N_LookupDispositionCodeinDCTable_Node2{"The system needs to determine the
disposition code s action type"}:::decision N_LookupDispositionCodeinDCTable_Node2_action["The disposition code is looked up
in the DC table to retrieve its
configuration"]:::main N_LookupDispositionCodeinDCTable_Node2 -- Yes --> N_LookupDispositionCodeinDCTable_Node2_action N_LookupDispositionCodeinDCTable_Node2_action --> E_LookupDispositionCodeinDCTable N_LookupDispositionCodeinDCTable_Node1 -- No --> N_LookupDispositionCodeinDCTable_Node2 N_LookupDispositionCodeinDCTable_Node3{"The system looks up the disposition
code in the DC table"}:::decision N_LookupDispositionCodeinDCTable_Node3_action["The disposition code details and
action type are retrieved if found"]:::main N_LookupDispositionCodeinDCTable_Node3 -- Yes --> N_LookupDispositionCodeinDCTable_Node3_action N_LookupDispositionCodeinDCTable_Node3_action --> E_LookupDispositionCodeinDCTable N_LookupDispositionCodeinDCTable_Node2 -- No --> N_LookupDispositionCodeinDCTable_Node3 N_LookupDispositionCodeinDCTable_Node3 -- No --> E_LookupDispositionCodeinDCTable
File: GCX016E.cbl
GIVEN: A disposition code has been received for processing
WHEN: The system looks up the disposition code in the DC table
THEN: The system retrieves the corresponding processing rules including action type, quantity impact, and removal requirements
File: GCX016E.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 in the table
  • Proceeds with appropriate processing path
File: GCX016E.cbl
GIVEN: A disposition code has been extracted from the status array
WHEN: The system needs to determine the disposition code's action type
THEN: The disposition code is looked up in the DC table to retrieve its configuration
File: GCX016E.cbl
GIVEN: A disposition code needs to be processed
WHEN: The system looks up the disposition code in the DC table
THEN:
  • The disposition code details
  • Action type are retrieved if found
βœ“ Consolidated Acceptance Criteria
  • The action type from the DC table indicates a hold operation → the system sets the hold indicator 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_SetHoldIndicator(["Start Step"]) E_SetHoldIndicator(["End Step"]) N_SetHoldIndicator_Node0{"The action type from the DC table
indicates a hold operation"}:::decision N_SetHoldIndicator_Node0_action["The system sets the hold indicator
flag for subsequent processing"]:::main N_SetHoldIndicator_Node0 -- Yes --> N_SetHoldIndicator_Node0_action N_SetHoldIndicator_Node0_action --> E_SetHoldIndicator S_SetHoldIndicator --> N_SetHoldIndicator_Node0 N_SetHoldIndicator_Node0 -- No --> E_SetHoldIndicator
File: GCX016E.cbl
GIVEN: A disposition code has been successfully looked up in the DC table
WHEN: The action type from the DC table indicates a hold operation
THEN: The system sets the hold indicator flag for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The action type from the DC table indicates a release operation → the system sets the release indicator 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_SetReleaseIndicator(["Start Step"]) E_SetReleaseIndicator(["End Step"]) N_SetReleaseIndicator_Node0{"The action type from the DC table
indicates a release operation"}:::decision N_SetReleaseIndicator_Node0_action["The system sets the release
indicator flag for subsequent
processing"]:::main N_SetReleaseIndicator_Node0 -- Yes --> N_SetReleaseIndicator_Node0_action N_SetReleaseIndicator_Node0_action --> E_SetReleaseIndicator S_SetReleaseIndicator --> N_SetReleaseIndicator_Node0 N_SetReleaseIndicator_Node0 -- No --> E_SetReleaseIndicator
File: GCX016E.cbl
GIVEN: A disposition code has been successfully looked up in the DC table
WHEN: The action type from the DC table indicates a release operation
THEN: The system sets the release indicator flag for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The action type from the DC table indicates a status information operation → the system sets the status info indicator 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_SetStatusInfoIndicator(["Start Step"]) E_SetStatusInfoIndicator(["End Step"]) N_SetStatusInfoIndicator_Node0{"The action type from the DC table
indicates a status information
operation"}:::decision N_SetStatusInfoIndicator_Node0_action["The system sets the status info
indicator flag for subsequent
processing"]:::main N_SetStatusInfoIndicator_Node0 -- Yes --> N_SetStatusInfoIndicator_Node0_action N_SetStatusInfoIndicator_Node0_action --> E_SetStatusInfoIndicator S_SetStatusInfoIndicator --> N_SetStatusInfoIndicator_Node0 N_SetStatusInfoIndicator_Node0 -- No --> E_SetStatusInfoIndicator
File: GCX016E.cbl
GIVEN: A disposition code has been successfully looked up in the DC table
WHEN: The action type from the DC table indicates a status information operation
THEN: The system sets the status info indicator flag for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The action type from the DC table indicates a removal operation → the system sets the removal indicator 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_SetRemovalIndicator(["Start Step"]) E_SetRemovalIndicator(["End Step"]) N_SetRemovalIndicator_Node0{"The action type from the DC table
indicates a removal operation"}:::decision N_SetRemovalIndicator_Node0_action["The system sets the removal
indicator flag for subsequent
processing"]:::main N_SetRemovalIndicator_Node0 -- Yes --> N_SetRemovalIndicator_Node0_action N_SetRemovalIndicator_Node0_action --> E_SetRemovalIndicator S_SetRemovalIndicator --> N_SetRemovalIndicator_Node0 N_SetRemovalIndicator_Node0 -- No --> E_SetRemovalIndicator
File: GCX016E.cbl
GIVEN: A disposition code has been successfully looked up in the DC table
WHEN: The action type from the DC table indicates a removal operation
THEN: The system sets the removal indicator flag for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The quantity impact flag indicates the disposition code adds to release quantity → the system sets the quantity add flag to increase release quantities during processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetQuantityAddFlag(["Start Step"]) E_SetQuantityAddFlag(["End Step"]) N_SetQuantityAddFlag_Node0{"The quantity impact flag indicates
the disposition code adds to release
quantity"}:::decision N_SetQuantityAddFlag_Node0_action["The system sets the quantity add
flag to increase release quantities
during processing"]:::main N_SetQuantityAddFlag_Node0 -- Yes --> N_SetQuantityAddFlag_Node0_action N_SetQuantityAddFlag_Node0_action --> E_SetQuantityAddFlag S_SetQuantityAddFlag --> N_SetQuantityAddFlag_Node0 N_SetQuantityAddFlag_Node0 -- No --> E_SetQuantityAddFlag
File: GCX016E.cbl
GIVEN: Disposition code processing rules have been extracted from the DC table
WHEN: The quantity impact flag indicates the disposition code adds to release quantity
THEN: The system sets the quantity add flag to increase release quantities during processing
βœ“ Consolidated Acceptance Criteria
  • The quantity impact flag indicates the disposition code subtracts from release quantity → the system sets the quantity subtract flag to decrease release quantities during processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetQuantitySubtractFlag(["Start Step"]) E_SetQuantitySubtractFlag(["End Step"]) N_SetQuantitySubtractFlag_Node0{"The quantity impact flag indicates
the disposition code subtracts from
release quantity"}:::decision N_SetQuantitySubtractFlag_Node0_action["The system sets the quantity
subtract flag to decrease release
quantities during processing"]:::main N_SetQuantitySubtractFlag_Node0 -- Yes --> N_SetQuantitySubtractFlag_Node0_action N_SetQuantitySubtractFlag_Node0_action --> E_SetQuantitySubtractFlag S_SetQuantitySubtractFlag --> N_SetQuantitySubtractFlag_Node0 N_SetQuantitySubtractFlag_Node0 -- No --> E_SetQuantitySubtractFlag
File: GCX016E.cbl
GIVEN: Disposition code processing rules have been extracted from the DC table
WHEN: The quantity impact flag indicates the disposition code subtracts from release quantity
THEN: The system sets the quantity subtract flag to decrease release quantities during processing
βœ“ Consolidated Acceptance Criteria
  • The quantity impact flag indicates the disposition code has no effect on release quantity → the system sets the no quantity impact flag to maintain current release quantities during processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetNoQuantityImpact(["Start Step"]) E_SetNoQuantityImpact(["End Step"]) N_SetNoQuantityImpact_Node0{"The quantity impact flag indicates
the disposition code has no effect
on release quantity"}:::decision N_SetNoQuantityImpact_Node0_action["The system sets the no quantity
impact flag to maintain current
release quantities during processing"]:::main N_SetNoQuantityImpact_Node0 -- Yes --> N_SetNoQuantityImpact_Node0_action N_SetNoQuantityImpact_Node0_action --> E_SetNoQuantityImpact S_SetNoQuantityImpact --> N_SetNoQuantityImpact_Node0 N_SetNoQuantityImpact_Node0 -- No --> E_SetNoQuantityImpact
File: GCX016E.cbl
GIVEN: Disposition code processing rules have been extracted from the DC table
WHEN: The quantity impact flag indicates the disposition code has no effect on release quantity
THEN: The system sets the no quantity impact flag to maintain current release quantities during processing
βœ“ Consolidated Acceptance Criteria
  • The removal requirements indicate counterpart disposition codes must be removed → the system sets the counterpart removal flag to remove conflicting disposition codes before applying 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_SetCounterpartRemovalFlag(["Start Step"]) E_SetCounterpartRemovalFlag(["End Step"]) N_SetCounterpartRemovalFlag_Node0{"The removal requirements indicate
counterpart disposition codes must
be removed"}:::decision N_SetCounterpartRemovalFlag_Node0_action["The system sets the counterpart
removal flag to remove conflicting
disposition codes before applying
the new code"]:::main N_SetCounterpartRemovalFlag_Node0 -- Yes --> N_SetCounterpartRemovalFlag_Node0_action N_SetCounterpartRemovalFlag_Node0_action --> E_SetCounterpartRemovalFlag S_SetCounterpartRemovalFlag --> N_SetCounterpartRemovalFlag_Node0 N_SetCounterpartRemovalFlag_Node0 -- No --> E_SetCounterpartRemovalFlag
File: GCX016E.cbl
GIVEN: Disposition code removal processing requirements have been extracted from the DC table
WHEN: The removal requirements indicate counterpart disposition codes must be removed
THEN: The system sets the counterpart removal flag to remove conflicting disposition codes before applying the new code
βœ“ Consolidated Acceptance Criteria
  • The removal requirements indicate no counterpart removal is needed → the system sets the standard processing flag to apply the disposition code using normal 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_SetStandardProcessingFlag(["Start Step"]) E_SetStandardProcessingFlag(["End Step"]) N_SetStandardProcessingFlag_Node0{"The removal requirements indicate
no counterpart removal is needed"}:::decision N_SetStandardProcessingFlag_Node0_action["The system sets the standard
processing flag to apply the
disposition code using normal
processing rules"]:::main N_SetStandardProcessingFlag_Node0 -- Yes --> N_SetStandardProcessingFlag_Node0_action N_SetStandardProcessingFlag_Node0_action --> E_SetStandardProcessingFlag S_SetStandardProcessingFlag --> N_SetStandardProcessingFlag_Node0 N_SetStandardProcessingFlag_Node0 -- No --> E_SetStandardProcessingFlag
File: GCX016E.cbl
GIVEN: Disposition code removal processing requirements have been extracted from the DC table
WHEN: The removal requirements indicate no counterpart removal is needed
THEN: The system sets the standard processing flag to apply the disposition code using normal processing rules
βœ“ Consolidated Acceptance Criteria
  • The system calls GCCTBIO table lookup service with the disposition code → the system searches the DC table and initiates 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_CallGCCTBIOTableLookup(["Start Step"]) E_CallGCCTBIOTableLookup(["End Step"]) N_CallGCCTBIOTableLookup_Node0{"The system calls GCCTBIO table
lookup service with the disposition
code"}:::decision N_CallGCCTBIOTableLookup_Node0_action["The system searches the DC table
and initiates the lookup process"]:::main N_CallGCCTBIOTableLookup_Node0 -- Yes --> N_CallGCCTBIOTableLookup_Node0_action N_CallGCCTBIOTableLookup_Node0_action --> E_CallGCCTBIOTableLookup S_CallGCCTBIOTableLookup --> N_CallGCCTBIOTableLookup_Node0 N_CallGCCTBIOTableLookup_Node0 -- No --> E_CallGCCTBIOTableLookup
File: GCX016E.cbl
GIVEN: A disposition code from X4 segment needs to be validated
WHEN: The system calls GCCTBIO table lookup service with the disposition code
THEN:
  • The system searches the dc table
  • Initiates the lookup process
βœ“ Consolidated Acceptance Criteria
  • The table lookup is completed → the system determines if the code exists and branches to either retrieve processing rules or handle invalid code scenario
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 table lookup is completed"}:::decision N_CodeFoundinDCTable_Node0_action["The system determines if the code
exists and branches to either
retrieve processing rules or handle
invalid code scenario"]:::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: GCX016E.cbl
GIVEN: A disposition code has been searched in the DC table
WHEN: The table lookup is completed
THEN:
  • The system determines if the code exists
  • Branches to either retrieve processing rules or handle invalid code scenario
βœ“ Consolidated Acceptance Criteria
  • The code is successfully found during table lookup → the system retrieves the processing rules, extracts code description, sets valid code flag, and returns processing rules to caller
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RetrieveProcessingRules(["Start Step"]) E_RetrieveProcessingRules(["End Step"]) N_RetrieveProcessingRules_Node0{"The code is successfully found
during table lookup"}:::decision N_RetrieveProcessingRules_Node0_action["The system retrieves the processing
rules, extracts code description,
sets valid code flag, and returns
processing rules to caller"]:::main N_RetrieveProcessingRules_Node0 -- Yes --> N_RetrieveProcessingRules_Node0_action N_RetrieveProcessingRules_Node0_action --> E_RetrieveProcessingRules S_RetrieveProcessingRules --> N_RetrieveProcessingRules_Node0 N_RetrieveProcessingRules_Node0 -- No --> E_RetrieveProcessingRules
File: GCX016E.cbl
GIVEN: A disposition code exists in the DC table
WHEN: The code is successfully found during table lookup
THEN: The system retrieves the processing rules, extracts code description, sets valid code flag, and returns processing rules to caller
βœ“ Consolidated Acceptance Criteria
  • The table lookup fails to find the code → the system sets invalid code flag, generates Merlin error message, logs unknown code error, and continues processing with error status
  • The error message has been generated → the system sets the invalid code flag to prevent 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_SetInvalidCodeFlag(["Start Step"]) E_SetInvalidCodeFlag(["End Step"]) N_SetInvalidCodeFlag_Node0{"The table lookup fails to find the
code"}:::decision N_SetInvalidCodeFlag_Node0_action["The system sets invalid code flag,
generates Merlin error message, logs
unknown code error, and continues
processing with error status"]:::main N_SetInvalidCodeFlag_Node0 -- Yes --> N_SetInvalidCodeFlag_Node0_action N_SetInvalidCodeFlag_Node0_action --> E_SetInvalidCodeFlag S_SetInvalidCodeFlag --> N_SetInvalidCodeFlag_Node0 N_SetInvalidCodeFlag_Node1{"The error message has been
generated"}:::decision N_SetInvalidCodeFlag_Node1_action["The system sets the invalid code
flag to prevent normal processing"]:::exclusion N_SetInvalidCodeFlag_Node1 -- Yes -->|Alternative| N_SetInvalidCodeFlag_Node1_action N_SetInvalidCodeFlag_Node1_action --> E_SetInvalidCodeFlag N_SetInvalidCodeFlag_Node0 -- No --> N_SetInvalidCodeFlag_Node1 N_SetInvalidCodeFlag_Node1 -- No --> E_SetInvalidCodeFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code does not exist in the DC table
WHEN: The table lookup fails to find the code
THEN: The system sets invalid code flag, generates Merlin error message, logs unknown code error, and continues processing with error status
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found in the DC table
WHEN: The error message has been generated
THEN: The system sets the invalid code flag to prevent normal processing
βœ“ Consolidated Acceptance Criteria
  • The disposition code is found in the DC table → the system continues with normal disposition code 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_ContinueNormalProcessing(["Start Step"]) E_ContinueNormalProcessing(["End Step"]) N_ContinueNormalProcessing_Node0{"The disposition code is found in
the DC table"}:::decision N_ContinueNormalProcessing_Node0_action["The system continues with normal
disposition code processing workflow"]:::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: GCX016E.cbl
GIVEN: A disposition code has been received and validated against the DC table
WHEN: The disposition code is found in the DC table
THEN: The system continues with normal disposition code processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system formats the error message → the error message includes the invalid disposition code value and descriptive details about the 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_FormatErrorMessagewithCodeDetails(["Start Step"]) E_FormatErrorMessagewithCodeDetails(["End Step"]) N_FormatErrorMessagewithCodeDetails_Node0{"The system formats the error
message"}:::decision N_FormatErrorMessagewithCodeDetails_Node0_action["The error message includes the
invalid disposition code value and
descriptive details about the error"]:::exclusion N_FormatErrorMessagewithCodeDetails_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithCodeDetails_Node0_action N_FormatErrorMessagewithCodeDetails_Node0_action --> E_FormatErrorMessagewithCodeDetails S_FormatErrorMessagewithCodeDetails --> N_FormatErrorMessagewithCodeDetails_Node0 N_FormatErrorMessagewithCodeDetails_Node0 -- No --> E_FormatErrorMessagewithCodeDetails
File: GCX016E.cbl
GIVEN: An unknown disposition code has been detected
WHEN: The system formats the error message
THEN:
  • The error message includes the invalid disposition code value
  • Descriptive details about the error
βœ“ Consolidated Acceptance Criteria
  • The system adds processing context information → the error message includes relevant context such as processing stage, transaction details, 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_IncludeProcessingContextInformation(["Start Step"]) E_IncludeProcessingContextInformation(["End Step"]) N_IncludeProcessingContextInformation_Node0{"The system adds processing context
information"}:::decision N_IncludeProcessingContextInformation_Node0_action["The error message includes relevant
context such as processing stage,
transaction details, and timing
information"]:::main N_IncludeProcessingContextInformation_Node0 -- Yes --> N_IncludeProcessingContextInformation_Node0_action N_IncludeProcessingContextInformation_Node0_action --> E_IncludeProcessingContextInformation S_IncludeProcessingContextInformation --> N_IncludeProcessingContextInformation_Node0 N_IncludeProcessingContextInformation_Node0 -- No --> E_IncludeProcessingContextInformation
File: GCX016E.cbl
GIVEN: An error message is being formatted for an unknown disposition code
WHEN: The system adds processing context information
THEN: The error message includes relevant context such as processing stage, transaction details, and timing information
βœ“ Consolidated Acceptance Criteria
  • The system adds identification information → the error message includes equipment identifiers, cargo details, and other relevant identification 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_AddEquipmentCargoIdentification(["Start Step"]) E_AddEquipmentCargoIdentification(["End Step"]) N_AddEquipmentCargoIdentification_Node0{"The system adds identification
information"}:::decision N_AddEquipmentCargoIdentification_Node0_action["The error message includes
equipment identifiers, cargo
details, and other relevant
identification data"]:::main N_AddEquipmentCargoIdentification_Node0 -- Yes --> N_AddEquipmentCargoIdentification_Node0_action N_AddEquipmentCargoIdentification_Node0_action --> E_AddEquipmentCargoIdentification S_AddEquipmentCargoIdentification --> N_AddEquipmentCargoIdentification_Node0 N_AddEquipmentCargoIdentification_Node0 -- No --> E_AddEquipmentCargoIdentification
File: GCX016E.cbl
GIVEN: An error message is being prepared for an unknown disposition code
WHEN: The system adds identification information
THEN: The error message includes equipment identifiers, cargo details, and other relevant identification data
βœ“ Consolidated Acceptance Criteria
  • The system routes the error message → the error message is sent to the designated recipients according to error 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_RouteErrorMessagetoRecipients(["Start Step"]) E_RouteErrorMessagetoRecipients(["End Step"]) N_RouteErrorMessagetoRecipients_Node0{"The system routes the error message"}:::decision N_RouteErrorMessagetoRecipients_Node0_action["The error message is sent to the
designated recipients according to
error routing rules"]:::exclusion N_RouteErrorMessagetoRecipients_Node0 -- Yes -->|Alternative| N_RouteErrorMessagetoRecipients_Node0_action N_RouteErrorMessagetoRecipients_Node0_action --> E_RouteErrorMessagetoRecipients S_RouteErrorMessagetoRecipients --> N_RouteErrorMessagetoRecipients_Node0 N_RouteErrorMessagetoRecipients_Node0 -- No --> E_RouteErrorMessagetoRecipients
File: GCX016E.cbl
GIVEN: An error message has been formatted and classified
WHEN: The system routes the error message
THEN: The error message is sent to the designated recipients according to error routing rules
βœ“ Consolidated Acceptance Criteria
  • The system logs the error → the error details are recorded in the audit trail with timestamp and relevant 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_LogErrorforAuditTrail(["Start Step"]) E_LogErrorforAuditTrail(["End Step"]) N_LogErrorforAuditTrail_Node0{"The system logs the error"}:::decision N_LogErrorforAuditTrail_Node0_action["The error details are recorded in
the audit trail with timestamp and
relevant transaction information"]:::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: GCX016E.cbl
GIVEN: An error message has been generated and routed for an unknown disposition code
WHEN: The system logs the error
THEN:
  • The error details are recorded in the audit trail with timestamp
  • Relevant transaction information
βœ“ Consolidated Acceptance Criteria
  • The system completes error handling → the system continues processing the next disposition code in the sequence without stopping the overall 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_ContinueProcessingNextCode(["Start Step"]) E_ContinueProcessingNextCode(["End Step"]) N_ContinueProcessingNextCode_Node0{"The system completes error handling"}:::decision N_ContinueProcessingNextCode_Node0_action["The system continues processing the
next disposition code in the
sequence without stopping the
overall transaction"]:::exclusion N_ContinueProcessingNextCode_Node0 -- Yes -->|Alternative| N_ContinueProcessingNextCode_Node0_action N_ContinueProcessingNextCode_Node0_action --> E_ContinueProcessingNextCode S_ContinueProcessingNextCode --> N_ContinueProcessingNextCode_Node0 N_ContinueProcessingNextCode_Node0 -- No --> E_ContinueProcessingNextCode
File: GCX016E.cbl
GIVEN: An unknown disposition code error has been processed and logged
WHEN: The system completes error handling
THEN: The system continues processing the next disposition code in the sequence without stopping the overall transaction
βœ“ Consolidated Acceptance Criteria
  • The system compares the disposition code values → if the disposition codes match exactly, proceed to sequence number validation, otherwise continue to next 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_DispositionCodeMatch(["Start Step"]) E_DispositionCodeMatch(["End Step"]) N_DispositionCodeMatch_Node0{"The system compares the disposition
code values"}:::decision N_DispositionCodeMatch_Node0_action["If the disposition codes match
exactly, proceed to sequence number
validation, otherwise continue to
next array entry"]:::main N_DispositionCodeMatch_Node0 -- Yes --> N_DispositionCodeMatch_Node0_action N_DispositionCodeMatch_Node0_action --> E_DispositionCodeMatch S_DispositionCodeMatch --> N_DispositionCodeMatch_Node0 N_DispositionCodeMatch_Node0 -- No --> E_DispositionCodeMatch
File: GCX016E.cbl
GIVEN: A new disposition code and an existing status array entry
WHEN: The system compares the disposition code values
THEN: If the disposition codes match exactly, proceed to sequence number validation, otherwise continue to next array entry
βœ“ Consolidated Acceptance Criteria
  • The system compares the sequence numbers of the matching disposition codes → if sequence numbers are identical, mark as exact duplicate found, otherwise check date/time stamps for partial 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_SameSequenceNumber(["Start Step"]) E_SameSequenceNumber(["End Step"]) N_SameSequenceNumber_Node0{"The system compares the sequence
numbers of the matching disposition
codes"}:::decision N_SameSequenceNumber_Node0_action["If sequence numbers are identical,
mark as exact duplicate found,
otherwise check datetime stamps for
partial match"]:::main N_SameSequenceNumber_Node0 -- Yes --> N_SameSequenceNumber_Node0_action N_SameSequenceNumber_Node0_action --> E_SameSequenceNumber S_SameSequenceNumber --> N_SameSequenceNumber_Node0 N_SameSequenceNumber_Node0 -- No --> E_SameSequenceNumber
File: GCX016E.cbl
GIVEN: Two disposition codes that match and their respective sequence numbers
WHEN: The system compares the sequence numbers of the matching disposition codes
THEN: If sequence numbers are identical, mark as exact duplicate found, otherwise check date/time stamps for partial match
βœ“ Consolidated Acceptance Criteria
  • The system compares the date and time stamp values → if date/time stamps are identical, mark as duplicate with different time, otherwise continue search 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_SameDateTime(["Start Step"]) E_SameDateTime(["End Step"]) N_SameDateTime_Node0{"The system compares the date and
time stamp values"}:::decision N_SameDateTime_Node0_action["If datetime stamps are identical,
mark as duplicate with different
time, otherwise continue search
process"]:::main N_SameDateTime_Node0 -- Yes --> N_SameDateTime_Node0_action N_SameDateTime_Node0_action --> E_SameDateTime S_SameDateTime --> N_SameDateTime_Node0 N_SameDateTime_Node0 -- No --> E_SameDateTime
File: GCX016E.cbl
GIVEN: Two matching disposition codes with different sequence numbers and their date/time stamps
WHEN:
  • The system compares the date
  • Time stamp values
THEN: If date/time stamps are identical, mark as duplicate with different time, otherwise continue search process
βœ“ Consolidated Acceptance Criteria
  • The system needs to record the duplicate detection event → log the duplicate disposition code information including sequence numbers, date/time stamps, and duplicate type 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_LogDuplicateInformation(["Start Step"]) E_LogDuplicateInformation(["End Step"]) N_LogDuplicateInformation_Node0{"The system needs to record the
duplicate detection event"}:::decision N_LogDuplicateInformation_Node0_action["Log the duplicate disposition code
information including sequence
numbers, datetime stamps, and
duplicate type for audit trail"]:::main N_LogDuplicateInformation_Node0 -- Yes --> N_LogDuplicateInformation_Node0_action N_LogDuplicateInformation_Node0_action --> E_LogDuplicateInformation S_LogDuplicateInformation --> N_LogDuplicateInformation_Node0 N_LogDuplicateInformation_Node0 -- No --> E_LogDuplicateInformation
File: GCX016E.cbl
GIVEN: A confirmed duplicate disposition code with its details
WHEN: The system needs to record the duplicate detection event
THEN: Log the duplicate disposition code information including sequence numbers, date/time stamps, and duplicate type for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system processes the release disposition code AND identifies conflicting hold codes in the status array → the system removes all conflicting hold disposition codes from the status array AND maintains the release code as the active 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_RemoveHoldCodeswhenReleaseCodeAdded(["Start Step"]) E_RemoveHoldCodeswhenReleaseCodeAdded(["End Step"]) N_RemoveHoldCodeswhenReleaseCodeAdded_Node0{"The system processes the release
disposition code AND identifies
conflicting hold codes in the status
array"}:::decision N_RemoveHoldCodeswhenReleaseCodeAdded_Node0_action["The system removes all conflicting
hold disposition codes from the
status array AND maintains the
release code as the active status"]:::main N_RemoveHoldCodeswhenReleaseCodeAdded_Node0 -- Yes --> N_RemoveHoldCodeswhenReleaseCodeAdded_Node0_action N_RemoveHoldCodeswhenReleaseCodeAdded_Node0_action --> E_RemoveHoldCodeswhenReleaseCodeAdded S_RemoveHoldCodeswhenReleaseCodeAdded --> N_RemoveHoldCodeswhenReleaseCodeAdded_Node0 N_RemoveHoldCodeswhenReleaseCodeAdded_Node0 -- No --> E_RemoveHoldCodeswhenReleaseCodeAdded
File: GCX016E.cbl
GIVEN: A cargo has existing hold disposition codes in its status array AND a new release disposition code is being processed
WHEN:
  • The system processes the release disposition code
  • Identifies conflicting hold codes in the status array
THEN:
  • The system removes all conflicting hold disposition codes from the status array
  • Maintains the release code as the active status
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold disposition code AND identifies conflicting release codes in the status array → the system removes all conflicting release disposition codes from the status array AND maintains the hold code as the active 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_RemoveReleaseCodeswhenHoldCodeAdded(["Start Step"]) E_RemoveReleaseCodeswhenHoldCodeAdded(["End Step"]) N_RemoveReleaseCodeswhenHoldCodeAdded_Node0{"The system processes the hold
disposition code AND identifies
conflicting release codes in the
status array"}:::decision N_RemoveReleaseCodeswhenHoldCodeAdded_Node0_action["The system removes all conflicting
release disposition codes from the
status array AND maintains the hold
code as the active status"]:::main N_RemoveReleaseCodeswhenHoldCodeAdded_Node0 -- Yes --> N_RemoveReleaseCodeswhenHoldCodeAdded_Node0_action N_RemoveReleaseCodeswhenHoldCodeAdded_Node0_action --> E_RemoveReleaseCodeswhenHoldCodeAdded S_RemoveReleaseCodeswhenHoldCodeAdded --> N_RemoveReleaseCodeswhenHoldCodeAdded_Node0 N_RemoveReleaseCodeswhenHoldCodeAdded_Node0 -- No --> E_RemoveReleaseCodeswhenHoldCodeAdded
File: GCX016E.cbl
GIVEN: A cargo has existing release disposition codes in its status array AND a new hold disposition code is being processed
WHEN:
  • The system processes the hold disposition code
  • Identifies conflicting release codes in the status array
THEN:
  • The system removes all conflicting release disposition codes from the status array
  • Maintains the hold code as the active status
βœ“ Consolidated Acceptance Criteria
  • The system identifies that existing status information codes are superseded by the new codes → the system removes the outdated status information codes from the status array AND retains only the current 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_RemoveSupersededStatusInformationCodes(["Start Step"]) E_RemoveSupersededStatusInformationCodes(["End Step"]) N_RemoveSupersededStatusInformationCodes_Node0{"The system identifies that existing
status information codes are
superseded by the new codes"}:::decision N_RemoveSupersededStatusInformationCodes_Node0_action["The system removes the outdated
status information codes from the
status array AND retains only the
current status information"]:::main N_RemoveSupersededStatusInformationCodes_Node0 -- Yes --> N_RemoveSupersededStatusInformationCodes_Node0_action N_RemoveSupersededStatusInformationCodes_Node0_action --> E_RemoveSupersededStatusInformationCodes S_RemoveSupersededStatusInformationCodes --> N_RemoveSupersededStatusInformationCodes_Node0 N_RemoveSupersededStatusInformationCodes_Node0 -- No --> E_RemoveSupersededStatusInformationCodes
File: GCX016E.cbl
GIVEN: A cargo has existing status information codes in its status array AND new status information codes are being processed
WHEN: The system identifies that existing status information codes are superseded by the new codes
THEN:
  • The system removes the outdated status information codes from the status array
  • Retains only the current status information
βœ“ Consolidated Acceptance Criteria
  • The system processes disposition code updates AND identifies cancelled or superseded codes → the system removes all cancelled and superseded disposition codes from the status array AND maintains only active 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_RemoveCancelledDispositionCodes(["Start Step"]) E_RemoveCancelledDispositionCodes(["End Step"]) N_RemoveCancelledDispositionCodes_Node0{"The system processes disposition
code updates AND identifies
cancelled or superseded codes"}:::decision N_RemoveCancelledDispositionCodes_Node0_action["The system removes all cancelled
and superseded disposition codes
from the status array AND maintains
only active disposition codes"]:::main N_RemoveCancelledDispositionCodes_Node0 -- Yes --> N_RemoveCancelledDispositionCodes_Node0_action N_RemoveCancelledDispositionCodes_Node0_action --> E_RemoveCancelledDispositionCodes S_RemoveCancelledDispositionCodes --> N_RemoveCancelledDispositionCodes_Node0 N_RemoveCancelledDispositionCodes_Node0 -- No --> E_RemoveCancelledDispositionCodes
File: GCX016E.cbl
GIVEN: A cargo has disposition codes in its status array AND some codes have been marked as cancelled or superseded
WHEN:
  • The system processes disposition code updates
  • Identifies cancelled or superseded codes
THEN:
  • The system removes all cancelled
  • Superseded disposition codes from the status array
  • Maintains only active disposition codes
βœ“ Consolidated Acceptance Criteria
  • The removal process is complete AND gaps exist in the sequence numbering → the system renumbers all remaining disposition codes in sequential order AND maintains proper array 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_UpdateStatusArraySequenceNumbers(["Start Step"]) E_UpdateStatusArraySequenceNumbers(["End Step"]) N_UpdateStatusArraySequenceNumbers_Node0{"The removal process is complete AND
gaps exist in the sequence numbering"}:::decision N_UpdateStatusArraySequenceNumbers_Node0_action["The system renumbers all remaining
disposition codes in sequential
order AND maintains proper array
indexing"]:::main N_UpdateStatusArraySequenceNumbers_Node0 -- Yes --> N_UpdateStatusArraySequenceNumbers_Node0_action N_UpdateStatusArraySequenceNumbers_Node0_action --> E_UpdateStatusArraySequenceNumbers S_UpdateStatusArraySequenceNumbers --> N_UpdateStatusArraySequenceNumbers_Node0 N_UpdateStatusArraySequenceNumbers_Node0 -- No --> E_UpdateStatusArraySequenceNumbers
File: GCX016E.cbl
GIVEN: Disposition codes have been removed from the cargo status array
WHEN:
  • The removal process is complete
  • Gaps exist in the sequence numbering
THEN:
  • The system renumbers all remaining disposition codes in sequential order
  • Maintains proper array indexing
βœ“ Consolidated Acceptance Criteria
  • The code removal process is complete → the system compacts the status array by moving remaining codes to fill gaps AND maintains proper array structure without empty slots
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ReorganizeStatusArrayStructure(["Start Step"]) E_ReorganizeStatusArrayStructure(["End Step"]) N_ReorganizeStatusArrayStructure_Node0{"The code removal process is
complete"}:::decision N_ReorganizeStatusArrayStructure_Node0_action["The system compacts the status
array by moving remaining codes to
fill gaps AND maintains proper array
structure without empty slots"]:::main N_ReorganizeStatusArrayStructure_Node0 -- Yes --> N_ReorganizeStatusArrayStructure_Node0_action N_ReorganizeStatusArrayStructure_Node0_action --> E_ReorganizeStatusArrayStructure S_ReorganizeStatusArrayStructure --> N_ReorganizeStatusArrayStructure_Node0 N_ReorganizeStatusArrayStructure_Node0 -- No --> E_ReorganizeStatusArrayStructure
File: GCX016E.cbl
GIVEN: Disposition codes have been removed from the status array AND gaps exist in the array structure
WHEN: The code removal process is complete
THEN:
  • The system compacts the status array by moving remaining codes to fill gaps
  • Maintains proper array structure without empty slots
βœ“ Consolidated Acceptance Criteria
  • The removal action is executed → the system logs the removal action with details of which codes were removed AND the reason for removal AND the timestamp of the 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_LogCounterpartCodeRemovalAction(["Start Step"]) E_LogCounterpartCodeRemovalAction(["End Step"]) N_LogCounterpartCodeRemovalAction_Node0{"The removal action is executed"}:::decision N_LogCounterpartCodeRemovalAction_Node0_action["The system logs the removal action
with details of which codes were
removed AND the reason for removal
AND the timestamp of the action"]:::main N_LogCounterpartCodeRemovalAction_Node0 -- Yes --> N_LogCounterpartCodeRemovalAction_Node0_action N_LogCounterpartCodeRemovalAction_Node0_action --> E_LogCounterpartCodeRemovalAction S_LogCounterpartCodeRemovalAction --> N_LogCounterpartCodeRemovalAction_Node0 N_LogCounterpartCodeRemovalAction_Node0 -- No --> E_LogCounterpartCodeRemovalAction
File: GCX016E.cbl
GIVEN: Counterpart disposition codes are being removed from a cargo status array
WHEN: The removal action is executed
THEN:
  • The system logs the removal action with details of which codes were removed
  • The reason for removal
  • The timestamp of the action
βœ“ Consolidated Acceptance Criteria
  • The removal and reorganization process is complete → the system validates that no conflicting codes remain AND all sequence numbers are properly ordered AND the array structure is consistent
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateStatusArrayIntegrity(["Start Step"]) E_ValidateStatusArrayIntegrity(["End Step"]) N_ValidateStatusArrayIntegrity_Node0{"The removal and reorganization
process is complete"}:::decision N_ValidateStatusArrayIntegrity_Node0_action["The system validates that no
conflicting codes remain AND all
sequence numbers are properly
ordered AND the array structure is
consistent"]:::main N_ValidateStatusArrayIntegrity_Node0 -- Yes --> N_ValidateStatusArrayIntegrity_Node0_action N_ValidateStatusArrayIntegrity_Node0_action --> E_ValidateStatusArrayIntegrity S_ValidateStatusArrayIntegrity --> N_ValidateStatusArrayIntegrity_Node0 N_ValidateStatusArrayIntegrity_Node0 -- No --> E_ValidateStatusArrayIntegrity
File: GCX016E.cbl
GIVEN: Counterpart disposition codes have been removed from the status array
WHEN:
  • The removal
  • Reorganization process is complete
THEN:
  • The system validates that no conflicting codes remain
  • All sequence numbers are properly ordered
  • The array structure is consistent
βœ“ Consolidated Acceptance Criteria
  • The system looks up the disposition code in the DC table → the system confirms the code exists and is valid for manual 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_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["The system confirms the code exists
and is valid for manual release
processing"]:::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: GCX016E.cbl
GIVEN: A manual release request is received with a disposition code
WHEN: The system looks up the disposition code in the DC table
THEN:
  • The system confirms the code exists
  • Is valid for manual release processing
βœ“ Consolidated Acceptance Criteria
  • The system checks if the code type allows manual release operations → processing continues if authorized, 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_ValidManualReleaseCode(["Start Step"]) E_ValidManualReleaseCode(["End Step"]) N_ValidManualReleaseCode_Node0{"The system checks if the code type
allows manual release operations"}:::decision N_ValidManualReleaseCode_Node0_action["Processing continues if authorized,
otherwise an error is generated"]:::main N_ValidManualReleaseCode_Node0 -- Yes --> N_ValidManualReleaseCode_Node0_action N_ValidManualReleaseCode_Node0_action --> E_ValidManualReleaseCode S_ValidManualReleaseCode --> N_ValidManualReleaseCode_Node0 N_ValidManualReleaseCode_Node0 -- No --> E_ValidManualReleaseCode
File: GCX016E.cbl
GIVEN: A disposition code has been validated in the DC table
WHEN: The system checks if the code type allows manual release operations
THEN: Processing continues if authorized, otherwise an error is generated
βœ“ Consolidated Acceptance Criteria
  • The system searches existing status arrays for the same disposition code → processing is skipped if duplicate found, otherwise continues with adding the code
  • A matching disposition code is found in the existing status entries → the system flags the code as a duplicate and proceeds with duplicate 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_DuplicateCodeFound(["Start Step"]) E_DuplicateCodeFound(["End Step"]) N_DuplicateCodeFound_Node0{"The system searches existing status
arrays for the same disposition code"}:::decision N_DuplicateCodeFound_Node0_action["Processing is skipped if duplicate
found, otherwise continues with
adding the code"]:::main N_DuplicateCodeFound_Node0 -- Yes --> N_DuplicateCodeFound_Node0_action N_DuplicateCodeFound_Node0_action --> E_DuplicateCodeFound S_DuplicateCodeFound --> N_DuplicateCodeFound_Node0 N_DuplicateCodeFound_Node1{"A matching disposition code is
found in the existing status entries"}:::decision N_DuplicateCodeFound_Node1_action["The system flags the code as a
duplicate and proceeds with
duplicate handling logic"]:::main N_DuplicateCodeFound_Node1 -- Yes --> N_DuplicateCodeFound_Node1_action N_DuplicateCodeFound_Node1_action --> E_DuplicateCodeFound N_DuplicateCodeFound_Node0 -- No --> N_DuplicateCodeFound_Node1 N_DuplicateCodeFound_Node1 -- No --> E_DuplicateCodeFound
File: GCX016E.cbl
GIVEN: A valid manual release code is being processed
WHEN: The system searches existing status arrays for the same disposition code
THEN: Processing is skipped if duplicate found, otherwise continues with adding the code
File: GCX016E.cbl
GIVEN: The system has searched through existing S09A status arrays
WHEN: A matching disposition code is found in the existing status entries
THEN:
  • The system flags the code as a duplicate
  • Proceeds with duplicate handling logic
βœ“ Consolidated Acceptance Criteria
  • The system identifies existing hold codes that conflict with the release → all counterpart hold codes are removed from the status array before adding the release 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_RemoveCounterpartHoldCodes(["Start Step"]) E_RemoveCounterpartHoldCodes(["End Step"]) N_RemoveCounterpartHoldCodes_Node0{"The system identifies existing hold
codes that conflict with the release"}:::decision N_RemoveCounterpartHoldCodes_Node0_action["All counterpart hold codes are
removed from the status array before
adding the release code"]:::main N_RemoveCounterpartHoldCodes_Node0 -- Yes --> N_RemoveCounterpartHoldCodes_Node0_action N_RemoveCounterpartHoldCodes_Node0_action --> E_RemoveCounterpartHoldCodes S_RemoveCounterpartHoldCodes --> N_RemoveCounterpartHoldCodes_Node0 N_RemoveCounterpartHoldCodes_Node0 -- No --> E_RemoveCounterpartHoldCodes
File: GCX016E.cbl
GIVEN: A manual release code is being added to cargo status
WHEN: The system identifies existing hold codes that conflict with the release
THEN: All counterpart hold codes are removed from the status array before adding the release code
βœ“ Consolidated Acceptance Criteria
  • The system processes the manual release code → the manual release code is added to the cargo's status array with 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_AddManualReleaseCodetoStatusArray(["Start Step"]) E_AddManualReleaseCodetoStatusArray(["End Step"]) N_AddManualReleaseCodetoStatusArray_Node0{"The system processes the manual
release code"}:::decision N_AddManualReleaseCodetoStatusArray_Node0_action["The manual release code is added to
the cargo s status array with
appropriate sequence number"]:::main N_AddManualReleaseCodetoStatusArray_Node0 -- Yes --> N_AddManualReleaseCodetoStatusArray_Node0_action N_AddManualReleaseCodetoStatusArray_Node0_action --> E_AddManualReleaseCodetoStatusArray S_AddManualReleaseCodetoStatusArray --> N_AddManualReleaseCodetoStatusArray_Node0 N_AddManualReleaseCodetoStatusArray_Node0 -- No --> E_AddManualReleaseCodetoStatusArray
File: GCX016E.cbl
GIVEN: Counterpart hold codes have been removed and no duplicates exist
WHEN: The system processes the manual release code
THEN: The manual release code is added to the cargo's status array with appropriate sequence number
βœ“ Consolidated Acceptance Criteria
  • The system processes quantity information from the release request → the cargo's released quantity is updated to reflect the manual release amount
  • The system updates cargo quantities for either full or partial release → the system updates released quantities, remaining held quantities, and total quantity balances
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 quantity
information from the release request"}:::decision N_UpdateReleaseQuantities_Node0_action["The cargo s released quantity is
updated to reflect the manual
release amount"]:::main N_UpdateReleaseQuantities_Node0 -- Yes --> N_UpdateReleaseQuantities_Node0_action N_UpdateReleaseQuantities_Node0_action --> E_UpdateReleaseQuantities S_UpdateReleaseQuantities --> N_UpdateReleaseQuantities_Node0 N_UpdateReleaseQuantities_Node1{"The system updates cargo quantities
for either full or partial release"}:::decision N_UpdateReleaseQuantities_Node1_action["The system updates released
quantities, remaining held
quantities, and total quantity
balances"]:::main N_UpdateReleaseQuantities_Node1 -- Yes --> N_UpdateReleaseQuantities_Node1_action N_UpdateReleaseQuantities_Node1_action --> E_UpdateReleaseQuantities N_UpdateReleaseQuantities_Node0 -- No --> N_UpdateReleaseQuantities_Node1 N_UpdateReleaseQuantities_Node1 -- No --> E_UpdateReleaseQuantities
File: GCX016E.cbl
GIVEN: A manual release code has been added to the status array
WHEN: The system processes quantity information from the release request
THEN: The cargo's released quantity is updated to reflect the manual release amount
File: GCX016E.cbl
GIVEN: Auto release processing has determined the release impact
WHEN: The system updates cargo quantities for either full or partial release
THEN: The system updates released quantities, remaining held quantities, and total quantity balances
βœ“ Consolidated Acceptance Criteria
  • The system completes the manual release processing → an audit record is created documenting the manual release action with timestamp and user information
  • The system logs the manual release action → the manual release action is logged with user information, timestamp, release details, and audit trail information
  • The system completes the manual release processing → the system logs the manual release action with timestamp, user information, and cargo 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 manual
release processing"}:::decision N_LogManualReleaseAction_Node0_action["An audit record is created
documenting the manual release
action with timestamp and user
information"]:::main N_LogManualReleaseAction_Node0 -- Yes --> N_LogManualReleaseAction_Node0_action N_LogManualReleaseAction_Node0_action --> E_LogManualReleaseAction S_LogManualReleaseAction --> N_LogManualReleaseAction_Node0 N_LogManualReleaseAction_Node1{"The system logs the manual release
action"}:::decision N_LogManualReleaseAction_Node1_action["The manual release action is logged
with user information, timestamp,
release details, and audit trail
information"]:::main N_LogManualReleaseAction_Node1 -- Yes --> N_LogManualReleaseAction_Node1_action N_LogManualReleaseAction_Node1_action --> E_LogManualReleaseAction N_LogManualReleaseAction_Node0 -- No --> N_LogManualReleaseAction_Node1 N_LogManualReleaseAction_Node2{"The system completes the manual
release processing"}:::decision N_LogManualReleaseAction_Node2_action["The system logs the manual release
action with timestamp, user
information, and cargo details for
audit purposes"]:::main N_LogManualReleaseAction_Node2 -- Yes --> N_LogManualReleaseAction_Node2_action N_LogManualReleaseAction_Node2_action --> E_LogManualReleaseAction N_LogManualReleaseAction_Node1 -- No --> N_LogManualReleaseAction_Node2 N_LogManualReleaseAction_Node2 -- No --> E_LogManualReleaseAction
File: GCX016E.cbl
GIVEN: Release quantities have been updated for manual release
WHEN: The system completes the manual release processing
THEN:
  • An audit record is created documenting the manual release action with timestamp
  • User information
File: GCX016E.cbl
GIVEN: A manual release request has been processed
WHEN: The system logs the manual release action
THEN: The manual release action is logged with user information, timestamp, release details, and audit trail information
File: GCX016E.cbl
GIVEN: A manual release has been successfully applied to a cargo
WHEN: The system completes the manual release processing
THEN: The system logs the manual release action with timestamp, user information, and cargo details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • If all disposition codes in the status array → the final cargo status is determined based on the hierarchy of all active 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_EvaluateFinalCargoStatus(["Start Step"]) E_EvaluateFinalCargoStatus(["End Step"]) N_EvaluateFinalCargoStatus_Node0{"The system evaluates all
disposition codes in the status
array"}:::decision N_EvaluateFinalCargoStatus_Node0_action["The final cargo status is
determined based on the hierarchy of
all active disposition codes"]:::main N_EvaluateFinalCargoStatus_Node0 -- Yes --> N_EvaluateFinalCargoStatus_Node0_action N_EvaluateFinalCargoStatus_Node0_action --> E_EvaluateFinalCargoStatus S_EvaluateFinalCargoStatus --> N_EvaluateFinalCargoStatus_Node0 N_EvaluateFinalCargoStatus_Node0 -- No --> E_EvaluateFinalCargoStatus
File: GCX016E.cbl
GIVEN: Manual release has been logged and quantities updated
WHEN: The system evaluates all disposition codes in the status array
THEN: The final cargo status is determined based on the hierarchy of all active disposition codes
βœ“ Consolidated Acceptance Criteria
  • The system compares released quantities against total cargo quantities → cargo is marked as fully released if all quantities are released, otherwise marked as partially released
  • If the final status of the cargo → the system determines if the cargo is fully released by checking for any remaining hold or restriction codes and validating 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_CargoFullyReleased(["Start Step"]) E_CargoFullyReleased(["End Step"]) N_CargoFullyReleased_Node0{"The system compares released
quantities against total cargo
quantities"}:::decision N_CargoFullyReleased_Node0_action["Cargo is marked as fully released
if all quantities are released,
otherwise marked as partially
released"]:::main N_CargoFullyReleased_Node0 -- Yes --> N_CargoFullyReleased_Node0_action N_CargoFullyReleased_Node0_action --> E_CargoFullyReleased S_CargoFullyReleased --> N_CargoFullyReleased_Node0 N_CargoFullyReleased_Node1{"The system evaluates the final
status of the cargo"}:::decision N_CargoFullyReleased_Node1_action["The system determines if the cargo
is fully released by checking for
any remaining hold or restriction
codes and validating release
quantities"]:::main N_CargoFullyReleased_Node1 -- Yes --> N_CargoFullyReleased_Node1_action N_CargoFullyReleased_Node1_action --> E_CargoFullyReleased N_CargoFullyReleased_Node0 -- No --> N_CargoFullyReleased_Node1 N_CargoFullyReleased_Node1 -- No --> E_CargoFullyReleased
File: GCX016E.cbl
GIVEN: Final cargo status has been evaluated
WHEN: The system compares released quantities against total cargo quantities
THEN: Cargo is marked as fully released if all quantities are released, otherwise marked as partially released
File: GCX016E.cbl
GIVEN: The cargo status array has been updated with manual release disposition code
WHEN: The system evaluates the final status of the cargo
THEN:
  • The system determines if the cargo is fully released by checking for any remaining hold or restriction codes
  • Validating release quantities
βœ“ Consolidated Acceptance Criteria
  • The system processes the full release status → a release notification is generated for appropriate parties including brokers and freight forwarders
  • The system generates release notifications → release notifications are sent to brokers, freight forwarders, and other relevant parties with release details, quantities, and pickup authorization
  • Stakeholders need to be notified of the release → the system must generate release notifications to appropriate parties including brokers and freight forwarders
  • The system completes the release processing → the system generates and sends release notifications to brokers, freight forwarders, and other stakeholders 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_GenerateReleaseNotification(["Start Step"]) E_GenerateReleaseNotification(["End Step"]) N_GenerateReleaseNotification_Node0{"The system processes the full
release status"}:::decision N_GenerateReleaseNotification_Node0_action["A release notification is generated
for appropriate parties including
brokers and freight forwarders"]:::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 release
notifications"}:::decision N_GenerateReleaseNotification_Node1_action["Release notifications are sent to
brokers, freight forwarders, and
other relevant parties with release
details, quantities, and pickup
authorization"]:::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{"Stakeholders need to be notified of
the release"}:::decision N_GenerateReleaseNotification_Node2_action["The system must generate release
notifications to appropriate parties
including brokers and freight
forwarders"]:::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{"The system completes the release
processing"}:::decision N_GenerateReleaseNotification_Node3_action["The system generates and sends
release notifications to brokers,
freight forwarders, and other
stakeholders via Merlin messaging
system"]:::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: GCX016E.cbl
GIVEN: Cargo has been determined to be fully released
WHEN: The system processes the full release status
THEN:
  • A release notification is generated for appropriate parties including brokers
  • Freight forwarders
File: GCX016E.cbl
GIVEN: A release disposition code has been processed and cargo status updated
WHEN: The system generates release notifications
THEN: Release notifications are sent to brokers, freight forwarders, and other relevant parties with release details, quantities, and pickup authorization
File: GCX016E.cbl
GIVEN: Release status flags have been set successfully
WHEN: Stakeholders need to be notified of the release
THEN:
  • The system must generate release notifications to appropriate parties including brokers
  • Freight forwarders
File: GCX016E.cbl
GIVEN: A cargo has been successfully manually released with updated quantities
WHEN: The system completes the release processing
THEN:
  • The system generates
  • Sends release notifications to brokers, freight forwarders, and other stakeholders via merlin messaging system
βœ“ Consolidated Acceptance Criteria
  • The system detects the duplicate during processing → processing is skipped for this code and continues with next item without 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_SkipProcessing(["Start Step"]) E_SkipProcessing(["End Step"]) N_SkipProcessing_Node0{"The system detects the duplicate
during processing"}:::decision N_SkipProcessing_Node0_action["Processing is skipped for this code
and continues with next item without
error"]:::main N_SkipProcessing_Node0 -- Yes --> N_SkipProcessing_Node0_action N_SkipProcessing_Node0_action --> E_SkipProcessing S_SkipProcessing --> N_SkipProcessing_Node0 N_SkipProcessing_Node0 -- No --> E_SkipProcessing
File: GCX016E.cbl
GIVEN: A manual release code already exists in the cargo's status array
WHEN: The system detects the duplicate during processing
THEN:
  • Processing is skipped for this code
  • Continues with next item without error
βœ“ Consolidated Acceptance Criteria
  • The system completes manual release processing → appropriate notifications are sent through Merlin system to relevant parties based on the processing 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_SendMerlinNotification(["Start Step"]) E_SendMerlinNotification(["End Step"]) N_SendMerlinNotification_Node0{"The system completes manual release
processing"}:::decision N_SendMerlinNotification_Node0_action["Appropriate notifications are sent
through Merlin system to relevant
parties based on the processing
outcome"]:::main N_SendMerlinNotification_Node0 -- Yes --> N_SendMerlinNotification_Node0_action N_SendMerlinNotification_Node0_action --> E_SendMerlinNotification S_SendMerlinNotification --> N_SendMerlinNotification_Node0 N_SendMerlinNotification_Node0 -- No --> E_SendMerlinNotification
File: GCX016E.cbl
GIVEN: Cargo status flags have been updated or error/skip condition occurred
WHEN: The system completes manual release processing
THEN: Appropriate notifications are sent through Merlin system to relevant parties based on the processing outcome
βœ“ Consolidated Acceptance Criteria
  • The system validates the removal request parameters → the request must contain valid disposition code, entry number, and quantity information to proceed 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_ValidateRemovalRequestParameters(["Start Step"]) E_ValidateRemovalRequestParameters(["End Step"]) N_ValidateRemovalRequestParameters_Node0{"The system validates the removal
request parameters"}:::decision N_ValidateRemovalRequestParameters_Node0_action["The request must contain valid
disposition code, entry number, and
quantity information to proceed with
removal processing"]:::main N_ValidateRemovalRequestParameters_Node0 -- Yes --> N_ValidateRemovalRequestParameters_Node0_action N_ValidateRemovalRequestParameters_Node0_action --> E_ValidateRemovalRequestParameters S_ValidateRemovalRequestParameters --> N_ValidateRemovalRequestParameters_Node0 N_ValidateRemovalRequestParameters_Node0 -- No --> E_ValidateRemovalRequestParameters
File: GCX016E.cbl
GIVEN: A disposition code removal request is received
WHEN: The system validates the removal request parameters
THEN: The request must contain valid disposition code, entry number, and quantity information to proceed with removal processing
βœ“ Consolidated Acceptance Criteria
  • The system searches for the target disposition code in the status array → if the disposition code exists in the array, proceed with removal process, otherwise generate error message for code 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_DispositionCodeExistsinStatusArray(["Start Step"]) E_DispositionCodeExistsinStatusArray(["End Step"]) N_DispositionCodeExistsinStatusArray_Node0{"The system searches for the target
disposition code in the status array"}:::decision N_DispositionCodeExistsinStatusArray_Node0_action["If the disposition code exists in
the array, proceed with removal
process, otherwise generate error
message for code not found"]:::main N_DispositionCodeExistsinStatusArray_Node0 -- Yes --> N_DispositionCodeExistsinStatusArray_Node0_action N_DispositionCodeExistsinStatusArray_Node0_action --> E_DispositionCodeExistsinStatusArray S_DispositionCodeExistsinStatusArray --> N_DispositionCodeExistsinStatusArray_Node0 N_DispositionCodeExistsinStatusArray_Node0 -- No --> E_DispositionCodeExistsinStatusArray
File: GCX016E.cbl
GIVEN: A validated disposition code removal request and cargo status array
WHEN: The system searches for the target disposition code in the status array
THEN: If the disposition code exists in the array, proceed with removal process, otherwise generate error message for code not found
βœ“ Consolidated Acceptance Criteria
  • The system searches through the status array entries → the system must locate the exact array position and sequence number of the target 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_LocateDispositionCodePosition(["Start Step"]) E_LocateDispositionCodePosition(["End Step"]) N_LocateDispositionCodePosition_Node0{"The system searches through the
status array entries"}:::decision N_LocateDispositionCodePosition_Node0_action["The system must locate the exact
array position and sequence number
of the target disposition code"]:::main N_LocateDispositionCodePosition_Node0 -- Yes --> N_LocateDispositionCodePosition_Node0_action N_LocateDispositionCodePosition_Node0_action --> E_LocateDispositionCodePosition S_LocateDispositionCodePosition --> N_LocateDispositionCodePosition_Node0 N_LocateDispositionCodePosition_Node0 -- No --> E_LocateDispositionCodePosition
File: GCX016E.cbl
GIVEN: A disposition code that exists in the cargo status array
WHEN: The system searches through the status array entries
THEN:
  • The system must locate the exact array position
  • Sequence number of the target disposition code
βœ“ Consolidated Acceptance Criteria
  • If removal authorization rules → if the code can be removed without violating business constraints, authorize removal, otherwise deny and 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_RemovalAllowed(["Start Step"]) E_RemovalAllowed(["End Step"]) N_RemovalAllowed_Node0{"The system evaluates removal
authorization rules"}:::decision N_RemovalAllowed_Node0_action["If the code can be removed without
violating business constraints,
authorize removal, otherwise deny
and generate error"]:::main N_RemovalAllowed_Node0 -- Yes --> N_RemovalAllowed_Node0_action N_RemovalAllowed_Node0_action --> E_RemovalAllowed S_RemovalAllowed --> N_RemovalAllowed_Node0 N_RemovalAllowed_Node0 -- No --> E_RemovalAllowed
File: GCX016E.cbl
GIVEN: A located disposition code in the status array and current cargo status
WHEN: The system evaluates removal authorization rules
THEN:
  • If the code can be removed without violating business constraints, authorize removal, otherwise deny
  • Generate error
βœ“ Consolidated Acceptance Criteria
  • The system executes the removal operation → the disposition code must be completely removed from the status array while preserving 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_RemoveCodefromStatusArray(["Start Step"]) E_RemoveCodefromStatusArray(["End Step"]) N_RemoveCodefromStatusArray_Node0{"The system executes the removal
operation"}:::decision N_RemoveCodefromStatusArray_Node0_action["The disposition code must be
completely removed from the status
array while preserving array
integrity"]:::main N_RemoveCodefromStatusArray_Node0 -- Yes --> N_RemoveCodefromStatusArray_Node0_action N_RemoveCodefromStatusArray_Node0_action --> E_RemoveCodefromStatusArray S_RemoveCodefromStatusArray --> N_RemoveCodefromStatusArray_Node0 N_RemoveCodefromStatusArray_Node0 -- No --> E_RemoveCodefromStatusArray
File: GCX016E.cbl
GIVEN: An authorized disposition code removal request with located array position
WHEN: The system executes the removal operation
THEN: The disposition code must be completely removed from the status array while preserving array integrity
βœ“ Consolidated Acceptance Criteria
  • The system updates array management counters → the status array counter must be decremented by one to accurately reflect the current number of active 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_UpdateArrayCounter(["Start Step"]) E_UpdateArrayCounter(["End Step"]) N_UpdateArrayCounter_Node0{"The system updates array management
counters"}:::decision N_UpdateArrayCounter_Node0_action["The status array counter must be
decremented by one to accurately
reflect the current number of active
disposition codes"]:::main N_UpdateArrayCounter_Node0 -- Yes --> N_UpdateArrayCounter_Node0_action N_UpdateArrayCounter_Node0_action --> E_UpdateArrayCounter S_UpdateArrayCounter --> N_UpdateArrayCounter_Node0 N_UpdateArrayCounter_Node0 -- No --> E_UpdateArrayCounter
File: GCX016E.cbl
GIVEN: A reorganized status array with one less disposition code
WHEN: The system updates array management counters
THEN: The status array counter must be decremented by one to accurately reflect the current number of active disposition codes
βœ“ Consolidated Acceptance Criteria
  • The system generates removal confirmation → a confirmation message must be created containing cargo details, removed disposition code, and updated status information
  • The system generates removal confirmation → a confirmation message must be created and sent to appropriate recipients confirming the successful 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_GenerateRemovalConfirmation(["Start Step"]) E_GenerateRemovalConfirmation(["End Step"]) N_GenerateRemovalConfirmation_Node0{"The system generates removal
confirmation"}:::decision N_GenerateRemovalConfirmation_Node0_action["A confirmation message must be
created containing cargo details,
removed disposition code, and
updated status information"]:::main N_GenerateRemovalConfirmation_Node0 -- Yes --> N_GenerateRemovalConfirmation_Node0_action N_GenerateRemovalConfirmation_Node0_action --> E_GenerateRemovalConfirmation S_GenerateRemovalConfirmation --> N_GenerateRemovalConfirmation_Node0 N_GenerateRemovalConfirmation_Node1{"The system generates removal
confirmation"}:::decision N_GenerateRemovalConfirmation_Node1_action["A confirmation message must be
created and sent to appropriate
recipients confirming the successful
removal"]:::main N_GenerateRemovalConfirmation_Node1 -- Yes --> N_GenerateRemovalConfirmation_Node1_action N_GenerateRemovalConfirmation_Node1_action --> E_GenerateRemovalConfirmation N_GenerateRemovalConfirmation_Node0 -- No --> N_GenerateRemovalConfirmation_Node1 N_GenerateRemovalConfirmation_Node1 -- No --> E_GenerateRemovalConfirmation
File: GCX016E.cbl
GIVEN: A successfully completed disposition code removal with updated status array
WHEN: The system generates removal confirmation
THEN: A confirmation message must be created containing cargo details, removed disposition code, and updated status information
File: GCX016E.cbl
GIVEN: A disposition code removal has been logged
WHEN: The system generates removal confirmation
THEN:
  • A confirmation message must be created
  • Sent to appropriate recipients confirming the successful removal
βœ“ Consolidated Acceptance Criteria
  • The system triggers status re-evaluation process → the cargo's overall status must be recalculated based on remaining disposition codes using standard status determination 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_TriggerStatusReevaluation(["Start Step"]) E_TriggerStatusReevaluation(["End Step"]) N_TriggerStatusReevaluation_Node0{"The system triggers status
re-evaluation process"}:::decision N_TriggerStatusReevaluation_Node0_action["The cargo s overall status must be
recalculated based on remaining
disposition codes using standard
status determination rules"]:::main N_TriggerStatusReevaluation_Node0 -- Yes --> N_TriggerStatusReevaluation_Node0_action N_TriggerStatusReevaluation_Node0_action --> E_TriggerStatusReevaluation S_TriggerStatusReevaluation --> N_TriggerStatusReevaluation_Node0 N_TriggerStatusReevaluation_Node0 -- No --> E_TriggerStatusReevaluation
File: GCX016E.cbl
GIVEN: A cargo record with updated status array after disposition code removal
WHEN: The system triggers status re-evaluation process
THEN: The cargo's overall status must be recalculated based on remaining disposition codes using standard status determination rules
βœ“ Consolidated Acceptance Criteria
  • The system sends status change notifications → notifications must be sent to brokers, freight forwarders, and other stakeholders based on cargo notification rules and new status
  • The system sends status change notifications → notifications must be sent to all relevant parties including brokers, freight forwarders, and customs officials
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendStatusChangeNotification(["Start Step"]) E_SendStatusChangeNotification(["End Step"]) N_SendStatusChangeNotification_Node0{"The system sends status change
notifications"}:::decision N_SendStatusChangeNotification_Node0_action["Notifications must be sent to
brokers, freight forwarders, and
other stakeholders based on cargo
notification rules and new status"]:::main N_SendStatusChangeNotification_Node0 -- Yes --> N_SendStatusChangeNotification_Node0_action N_SendStatusChangeNotification_Node0_action --> E_SendStatusChangeNotification S_SendStatusChangeNotification --> N_SendStatusChangeNotification_Node0 N_SendStatusChangeNotification_Node1{"The system sends status change
notifications"}:::decision N_SendStatusChangeNotification_Node1_action["Notifications must be sent to all
relevant parties including brokers,
freight forwarders, and customs
officials"]:::main N_SendStatusChangeNotification_Node1 -- Yes --> N_SendStatusChangeNotification_Node1_action N_SendStatusChangeNotification_Node1_action --> E_SendStatusChangeNotification N_SendStatusChangeNotification_Node0 -- No --> N_SendStatusChangeNotification_Node1 N_SendStatusChangeNotification_Node1 -- No --> E_SendStatusChangeNotification
File: GCX016E.cbl
GIVEN: A cargo with updated status after disposition code removal and re-evaluation
WHEN: The system sends status change notifications
THEN:
  • Notifications must be sent to brokers, freight forwarders, and other stakeholders based on cargo notification rules
  • New status
File: GCX016E.cbl
GIVEN: The cargo status has been updated after disposition code removal
WHEN: The system sends status change notifications
THEN: Notifications must be sent to all relevant parties including brokers, freight forwarders, and customs officials
βœ“ Consolidated Acceptance Criteria
  • The system logs the removal failure → a failure audit entry must be created containing cargo identifier, attempted disposition code, failure reason, 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_LogRemovalFailure(["Start Step"]) E_LogRemovalFailure(["End Step"]) N_LogRemovalFailure_Node0{"The system logs the removal failure"}:::decision N_LogRemovalFailure_Node0_action["A failure audit entry must be
created containing cargo identifier,
attempted disposition code, failure
reason, and timestamp"]:::main N_LogRemovalFailure_Node0 -- Yes --> N_LogRemovalFailure_Node0_action N_LogRemovalFailure_Node0_action --> E_LogRemovalFailure S_LogRemovalFailure --> N_LogRemovalFailure_Node0 N_LogRemovalFailure_Node0 -- No --> E_LogRemovalFailure
File: GCX016E.cbl
GIVEN: A failed disposition code removal request with generated error message
WHEN: The system logs the removal failure
THEN: A failure audit entry must be created containing cargo identifier, attempted disposition code, failure reason, and timestamp
βœ“ Consolidated Acceptance Criteria
  • The system searches through all existing status array entries for the same disposition code → the system identifies whether the status information code already exists in the status array
  • The system searches through all existing S09A status array entries → the system identifies whether the disposition code already exists in the status arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SearchExistingS09AStatusArrays(["Start Step"]) E_SearchExistingS09AStatusArrays(["End Step"]) N_SearchExistingS09AStatusArrays_Node0{"The system searches through all
existing status array entries for
the same disposition code"}:::decision N_SearchExistingS09AStatusArrays_Node0_action["The system identifies whether the
status information code already
exists in the status array"]:::main N_SearchExistingS09AStatusArrays_Node0 -- Yes --> N_SearchExistingS09AStatusArrays_Node0_action N_SearchExistingS09AStatusArrays_Node0_action --> E_SearchExistingS09AStatusArrays S_SearchExistingS09AStatusArrays --> N_SearchExistingS09AStatusArrays_Node0 N_SearchExistingS09AStatusArrays_Node1{"The system searches through all
existing S09A status array entries"}:::decision N_SearchExistingS09AStatusArrays_Node1_action["The system identifies whether the
disposition code already exists in
the status arrays"]:::main N_SearchExistingS09AStatusArrays_Node1 -- Yes --> N_SearchExistingS09AStatusArrays_Node1_action N_SearchExistingS09AStatusArrays_Node1_action --> E_SearchExistingS09AStatusArrays N_SearchExistingS09AStatusArrays_Node0 -- No --> N_SearchExistingS09AStatusArrays_Node1 N_SearchExistingS09AStatusArrays_Node1 -- No --> E_SearchExistingS09AStatusArrays
File: GCX016E.cbl
GIVEN: A status information disposition code is received for processing AND the cargo has existing S09A status array segments
WHEN: The system searches through all existing status array entries for the same disposition code
THEN: The system identifies whether the status information code already exists in the status array
File: GCX016E.cbl
GIVEN: A new disposition code needs to be processed for a cargo
WHEN: The system searches through all existing S09A status array entries
THEN: The system identifies whether the disposition code already exists in the status arrays
βœ“ Consolidated Acceptance Criteria
  • The system detects the duplicate status information code → the system skips adding the disposition code AND continues to the next disposition 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_SkipProcessingCodeAlreadyExists(["Start Step"]) E_SkipProcessingCodeAlreadyExists(["End Step"]) N_SkipProcessingCodeAlreadyExists_Node0{"The system detects the duplicate
status information code"}:::decision N_SkipProcessingCodeAlreadyExists_Node0_action["The system skips adding the
disposition code AND continues to
the next disposition code for
processing"]:::main N_SkipProcessingCodeAlreadyExists_Node0 -- Yes --> N_SkipProcessingCodeAlreadyExists_Node0_action N_SkipProcessingCodeAlreadyExists_Node0_action --> E_SkipProcessingCodeAlreadyExists S_SkipProcessingCodeAlreadyExists --> N_SkipProcessingCodeAlreadyExists_Node0 N_SkipProcessingCodeAlreadyExists_Node0 -- No --> E_SkipProcessingCodeAlreadyExists
File: GCX016E.cbl
GIVEN: A status information disposition code is being processed AND the same disposition code already exists in the cargo's status array
WHEN: The system detects the duplicate status information code
THEN:
  • The system skips adding the disposition code
  • Continues to the next disposition code for processing
βœ“ Consolidated Acceptance Criteria
  • The system checks the current number of entries against the maximum allowed entries → the system determines whether there is available space for the new status information 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_ValidateAvailableSpaceinStatusArray(["Start Step"]) E_ValidateAvailableSpaceinStatusArray(["End Step"]) N_ValidateAvailableSpaceinStatusArray_Node0{"The system checks the current
number of entries against the
maximum allowed entries"}:::decision N_ValidateAvailableSpaceinStatusArray_Node0_action["The system determines whether there
is available space for the new
status information code"]:::main N_ValidateAvailableSpaceinStatusArray_Node0 -- Yes --> N_ValidateAvailableSpaceinStatusArray_Node0_action N_ValidateAvailableSpaceinStatusArray_Node0_action --> E_ValidateAvailableSpaceinStatusArray S_ValidateAvailableSpaceinStatusArray --> N_ValidateAvailableSpaceinStatusArray_Node0 N_ValidateAvailableSpaceinStatusArray_Node0 -- No --> E_ValidateAvailableSpaceinStatusArray
File: GCX016E.cbl
GIVEN: A new status information disposition code needs to be added to the cargo's status array AND the status array has a maximum capacity limit
WHEN: The system checks the current number of entries against the maximum allowed entries
THEN: The system determines whether there is available space for the new status information code
βœ“ Consolidated Acceptance Criteria
  • The system attempts to insert the new status information code → the system generates an array full warning AND continues processing 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_GenerateArrayFullWarning(["Start Step"]) E_GenerateArrayFullWarning(["End Step"]) N_GenerateArrayFullWarning_Node0{"The system attempts to insert the
new status information code"}:::decision N_GenerateArrayFullWarning_Node0_action["The system generates an array full
warning AND continues processing the
next disposition code"]:::main N_GenerateArrayFullWarning_Node0 -- Yes --> N_GenerateArrayFullWarning_Node0_action N_GenerateArrayFullWarning_Node0_action --> E_GenerateArrayFullWarning S_GenerateArrayFullWarning --> N_GenerateArrayFullWarning_Node0 N_GenerateArrayFullWarning_Node0 -- No --> E_GenerateArrayFullWarning
File: GCX016E.cbl
GIVEN: A status information disposition code needs to be added AND the cargo's status array has reached maximum capacity
WHEN: The system attempts to insert the new status information code
THEN:
  • The system generates an array full warning
  • Continues processing the next disposition code
βœ“ Consolidated Acceptance Criteria
  • The system processes the status information disposition code → the system inserts the new status information 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_InsertNewStatusInformationCode(["Start Step"]) E_InsertNewStatusInformationCode(["End Step"]) N_InsertNewStatusInformationCode_Node0{"The system processes the status
information disposition code"}:::decision N_InsertNewStatusInformationCode_Node0_action["The system inserts the new status
information code into the next
available position in the status
array"]:::main N_InsertNewStatusInformationCode_Node0 -- Yes --> N_InsertNewStatusInformationCode_Node0_action N_InsertNewStatusInformationCode_Node0_action --> E_InsertNewStatusInformationCode S_InsertNewStatusInformationCode --> N_InsertNewStatusInformationCode_Node0 N_InsertNewStatusInformationCode_Node0 -- No --> E_InsertNewStatusInformationCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A status information disposition code is not found in the existing status array AND there is available space in the status array
WHEN: The system processes the status information disposition code
THEN: The system inserts the new status information code into the next available position in the status array
βœ“ Consolidated Acceptance Criteria
  • The insertion is completed → the system increments the status array sequence counter to reflect the new entry count
  • The system updates the status array management counters → the sequence counter is incremented to reflect the new entry and maintain proper array 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_UpdateStatusArraySequenceCounter(["Start Step"]) E_UpdateStatusArraySequenceCounter(["End Step"]) N_UpdateStatusArraySequenceCounter_Node0{"The insertion is completed"}:::decision N_UpdateStatusArraySequenceCounter_Node0_action["The system increments the status
array sequence counter to reflect
the new entry count"]:::main N_UpdateStatusArraySequenceCounter_Node0 -- Yes --> N_UpdateStatusArraySequenceCounter_Node0_action N_UpdateStatusArraySequenceCounter_Node0_action --> E_UpdateStatusArraySequenceCounter S_UpdateStatusArraySequenceCounter --> N_UpdateStatusArraySequenceCounter_Node0 N_UpdateStatusArraySequenceCounter_Node1{"The system updates the status array
management counters"}:::decision N_UpdateStatusArraySequenceCounter_Node1_action["The sequence counter is incremented
to reflect the new entry and
maintain proper array indexing"]:::main N_UpdateStatusArraySequenceCounter_Node1 -- Yes --> N_UpdateStatusArraySequenceCounter_Node1_action N_UpdateStatusArraySequenceCounter_Node1_action --> E_UpdateStatusArraySequenceCounter N_UpdateStatusArraySequenceCounter_Node0 -- No --> N_UpdateStatusArraySequenceCounter_Node1 N_UpdateStatusArraySequenceCounter_Node1 -- No --> E_UpdateStatusArraySequenceCounter
File: GCX016E.cbl
GIVEN: A new status information disposition code has been successfully inserted into the status array
WHEN: The insertion is completed
THEN: The system increments the status array sequence counter to reflect the new entry count
File: GCX016E.cbl
GIVEN: A new status information code has been added to the S09A array
WHEN: The system updates the status array management counters
THEN:
  • The sequence counter is incremented to reflect the new entry
  • Maintain proper array indexing
βœ“ Consolidated Acceptance Criteria
  • The status information code insertion is completed → the system sets the status information flag to indicate the presence of status information codes
  • The system processes the status information addition → the status information flag is set to indicate informational status has been 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_SetStatusInformationFlag(["Start Step"]) E_SetStatusInformationFlag(["End Step"]) N_SetStatusInformationFlag_Node0{"The status information code
insertion is completed"}:::decision N_SetStatusInformationFlag_Node0_action["The system sets the status
information flag to indicate the
presence of status information codes"]:::main N_SetStatusInformationFlag_Node0 -- Yes --> N_SetStatusInformationFlag_Node0_action N_SetStatusInformationFlag_Node0_action --> E_SetStatusInformationFlag S_SetStatusInformationFlag --> N_SetStatusInformationFlag_Node0 N_SetStatusInformationFlag_Node1{"The system processes the status
information addition"}:::decision N_SetStatusInformationFlag_Node1_action["The status information flag is set
to indicate informational status has
been applied to the cargo"]:::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: GCX016E.cbl
GIVEN: A status information disposition code has been successfully added to the cargo's status array
WHEN: The status information code insertion is completed
THEN: The system sets the status information flag to indicate the presence of status information codes
File: GCX016E.cbl
GIVEN: A status information disposition code has been successfully inserted into the S09A array
WHEN: The system processes the status information addition
THEN: The status information flag is set to indicate informational status has been applied to the cargo
βœ“ Consolidated Acceptance Criteria
  • The status information processing is completed → the system logs the status information code addition 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_LogStatusInformationCodeAddition(["Start Step"]) E_LogStatusInformationCodeAddition(["End Step"]) N_LogStatusInformationCodeAddition_Node0{"The status information processing
is completed"}:::decision N_LogStatusInformationCodeAddition_Node0_action["The system logs the status
information code addition for audit
trail purposes"]:::main N_LogStatusInformationCodeAddition_Node0 -- Yes --> N_LogStatusInformationCodeAddition_Node0_action N_LogStatusInformationCodeAddition_Node0_action --> E_LogStatusInformationCodeAddition S_LogStatusInformationCodeAddition --> N_LogStatusInformationCodeAddition_Node0 N_LogStatusInformationCodeAddition_Node0 -- No --> E_LogStatusInformationCodeAddition
File: GCX016E.cbl
GIVEN: A status information disposition code has been successfully added to the cargo's status array AND the status information flag has been set
WHEN: The status information processing is completed
THEN: The system logs the status information code addition for audit trail purposes
βœ“ Consolidated Acceptance Criteria
  • The system searches the existing status array for the same disposition code with matching entry number and quantity → if an exact match is found, the duplicate processing is skipped, otherwise the code is processed
  • The system searches all status arrays for the code → the search returns true if code exists in any array, false if code 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_CodeAlreadyExists(["Start Step"]) E_CodeAlreadyExists(["End Step"]) N_CodeAlreadyExists_Node0{"The system searches the existing
status array for the same
disposition code with matching entry
number and quantity"}:::decision N_CodeAlreadyExists_Node0_action["If an exact match is found, the
duplicate processing is skipped,
otherwise the code is processed"]:::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 searches all status
arrays for the code"}:::decision N_CodeAlreadyExists_Node1_action["The search returns true if code
exists in any array, false if code
is not found"]:::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: GCX016E.cbl
GIVEN: A hold or release disposition code needs to be added to cargo status array
WHEN:
  • The system searches the existing status array for the same disposition code with matching entry number
  • Quantity
THEN: If an exact match is found, the duplicate processing is skipped, otherwise the code is processed
File: GCX016E.cbl
GIVEN: A validated status information code and existing status arrays
WHEN: The system searches all status arrays for the code
THEN: The search returns true if code exists in any array, false if code is not found
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold code addition → the hold code is added to the status array with sequence number, entry number, quantity, location, and date/time 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_AddHoldCodetoStatusArray(["Start Step"]) E_AddHoldCodetoStatusArray(["End Step"]) N_AddHoldCodetoStatusArray_Node0{"The system processes the hold code
addition"}:::decision N_AddHoldCodetoStatusArray_Node0_action["The hold code is added to the
status array with sequence number,
entry number, quantity, location,
and datetime information"]:::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: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A hold disposition code is validated and not a duplicate
WHEN: The system processes the hold code addition
THEN: The hold code is added to the status array with sequence number, entry number, quantity, location, and date/time information
βœ“ Consolidated Acceptance Criteria
  • The system processes the release code addition → the release code is added to the status array with sequence number, entry number, release quantity, location, and date/time 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_AddReleaseCodetoStatusArray(["Start Step"]) E_AddReleaseCodetoStatusArray(["End Step"]) N_AddReleaseCodetoStatusArray_Node0{"The system processes the release
code addition"}:::decision N_AddReleaseCodetoStatusArray_Node0_action["The release code is added to the
status array with sequence number,
entry number, release quantity,
location, and datetime information"]:::main N_AddReleaseCodetoStatusArray_Node0 -- Yes --> N_AddReleaseCodetoStatusArray_Node0_action N_AddReleaseCodetoStatusArray_Node0_action --> E_AddReleaseCodetoStatusArray S_AddReleaseCodetoStatusArray --> N_AddReleaseCodetoStatusArray_Node0 N_AddReleaseCodetoStatusArray_Node0 -- No --> E_AddReleaseCodetoStatusArray
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A release disposition code is validated and not a duplicate
WHEN: The system processes the release code addition
THEN: The release code is added to the status array with sequence number, entry number, release quantity, location, and date/time information
βœ“ Consolidated Acceptance Criteria
  • The system processes hold code implications → the cargo hold status is set with appropriate hold type (border hold, destination hold, FDA hold) based on the disposition code
  • The system assigns final cargo status → the cargo status is set to the appropriate hold status based on the type and priority of 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_SetCargoHoldStatus(["Start Step"]) E_SetCargoHoldStatus(["End Step"]) N_SetCargoHoldStatus_Node0{"The system processes hold code
implications"}:::decision N_SetCargoHoldStatus_Node0_action["The cargo hold status is set with
appropriate hold type border hold,
destination hold, FDA hold based on
the disposition code"]:::main N_SetCargoHoldStatus_Node0 -- Yes --> N_SetCargoHoldStatus_Node0_action N_SetCargoHoldStatus_Node0_action --> E_SetCargoHoldStatus S_SetCargoHoldStatus --> N_SetCargoHoldStatus_Node0 N_SetCargoHoldStatus_Node1{"The system assigns final cargo
status"}:::decision N_SetCargoHoldStatus_Node1_action["The cargo status is set to the
appropriate hold status based on the
type and priority of active holds"]:::main N_SetCargoHoldStatus_Node1 -- Yes --> N_SetCargoHoldStatus_Node1_action N_SetCargoHoldStatus_Node1_action --> E_SetCargoHoldStatus N_SetCargoHoldStatus_Node0 -- No --> N_SetCargoHoldStatus_Node1 N_SetCargoHoldStatus_Node1 -- No --> E_SetCargoHoldStatus
File: GCX016E.cbl
GIVEN: A hold disposition code has been successfully added to the status array
WHEN: The system processes hold code implications
THEN: The cargo hold status is set with appropriate hold type (border hold, destination hold, FDA hold) based on the disposition code
File: GCX016E.cbl
GIVEN: A cargo determined to have active hold conditions
WHEN: The system assigns final cargo status
THEN:
  • The cargo status is set to the appropriate hold status based on the type
  • Priority of active holds
βœ“ Consolidated Acceptance Criteria
  • The system updates hold-related information → hold flags are updated including held at border flag, held at destination flag, held for FDA flag, and hold 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_UpdateHoldFlags(["Start Step"]) E_UpdateHoldFlags(["End Step"]) N_UpdateHoldFlags_Node0{"The system updates hold-related
information"}:::decision N_UpdateHoldFlags_Node0_action["Hold flags are updated including
held at border flag, held at
destination flag, held for FDA flag,
and hold location information"]:::main N_UpdateHoldFlags_Node0 -- Yes --> N_UpdateHoldFlags_Node0_action N_UpdateHoldFlags_Node0_action --> E_UpdateHoldFlags S_UpdateHoldFlags --> N_UpdateHoldFlags_Node0 N_UpdateHoldFlags_Node0 -- No --> E_UpdateHoldFlags
File: GCX016E.cbl
GIVEN: Cargo hold status has been set for a disposition code
WHEN: The system updates hold-related information
THEN: Hold flags are updated including held at border flag, held at destination flag, held for FDA flag, and hold location information
βœ“ Consolidated Acceptance Criteria
  • The system identifies conflicting hold codes in the status array → all hold codes that conflict with the release are removed from the status array before processing the release
  • Processing a release request → the system must remove all conflicting hold disposition codes from the status array to allow the release to 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_RemoveConflictingHoldCodes(["Start Step"]) E_RemoveConflictingHoldCodes(["End Step"]) N_RemoveConflictingHoldCodes_Node0{"The system identifies conflicting
hold codes in the status array"}:::decision N_RemoveConflictingHoldCodes_Node0_action["All hold codes that conflict with
the release are removed from the
status array before processing the
release"]:::main N_RemoveConflictingHoldCodes_Node0 -- Yes --> N_RemoveConflictingHoldCodes_Node0_action N_RemoveConflictingHoldCodes_Node0_action --> E_RemoveConflictingHoldCodes S_RemoveConflictingHoldCodes --> N_RemoveConflictingHoldCodes_Node0 N_RemoveConflictingHoldCodes_Node1{"Processing a release request"}:::decision N_RemoveConflictingHoldCodes_Node1_action["The system must remove all
conflicting hold disposition codes
from the status array to allow the
release to proceed"]:::main N_RemoveConflictingHoldCodes_Node1 -- Yes --> N_RemoveConflictingHoldCodes_Node1_action N_RemoveConflictingHoldCodes_Node1_action --> E_RemoveConflictingHoldCodes N_RemoveConflictingHoldCodes_Node0 -- No --> N_RemoveConflictingHoldCodes_Node1 N_RemoveConflictingHoldCodes_Node1 -- No --> E_RemoveConflictingHoldCodes
File: GCX016E.cbl
GIVEN: A release disposition code is being processed
WHEN: The system identifies conflicting hold codes in the status array
THEN: All hold codes that conflict with the release are removed from the status array before processing the release
File: GCX016E.cbl
GIVEN: Conflicting hold codes have been identified in the status array
WHEN: Processing a release request
THEN: The system must remove all conflicting hold disposition codes from the status array to allow the release to proceed
βœ“ Consolidated Acceptance Criteria
  • The system sets cargo release status → the cargo release status is updated with release type, release quantities, and release location based on the disposition code
  • Manual release processing is completed → the system sets the cargo status to 'RELSD' (Released) and updates all related status flags
  • The system assigns final cargo status → the cargo status is set to 'RELSD' (Released) or 'HOLDPCS' (Hold Pieces) based on quantity 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_SetCargoReleaseStatus(["Start Step"]) E_SetCargoReleaseStatus(["End Step"]) N_SetCargoReleaseStatus_Node0{"The system sets cargo release
status"}:::decision N_SetCargoReleaseStatus_Node0_action["The cargo release status is updated
with release type, release
quantities, and release location
based on the disposition code"]:::main N_SetCargoReleaseStatus_Node0 -- Yes --> N_SetCargoReleaseStatus_Node0_action N_SetCargoReleaseStatus_Node0_action --> E_SetCargoReleaseStatus S_SetCargoReleaseStatus --> N_SetCargoReleaseStatus_Node0 N_SetCargoReleaseStatus_Node1{"Manual release processing is
completed"}:::decision N_SetCargoReleaseStatus_Node1_action["The system sets the cargo status to
RELSD Released and updates all
related status flags"]:::main N_SetCargoReleaseStatus_Node1 -- Yes --> N_SetCargoReleaseStatus_Node1_action N_SetCargoReleaseStatus_Node1_action --> E_SetCargoReleaseStatus N_SetCargoReleaseStatus_Node0 -- No --> N_SetCargoReleaseStatus_Node1 N_SetCargoReleaseStatus_Node2{"The system assigns final cargo
status"}:::decision N_SetCargoReleaseStatus_Node2_action["The cargo status is set to RELSD
Released or HOLDPCS Hold Pieces
based on quantity analysis"]:::main N_SetCargoReleaseStatus_Node2 -- Yes --> N_SetCargoReleaseStatus_Node2_action N_SetCargoReleaseStatus_Node2_action --> E_SetCargoReleaseStatus N_SetCargoReleaseStatus_Node1 -- No --> N_SetCargoReleaseStatus_Node2 N_SetCargoReleaseStatus_Node2 -- No --> E_SetCargoReleaseStatus
File: GCX016E.cbl
GIVEN: A release disposition code has been processed and quantities calculated
WHEN: The system sets cargo release status
THEN: The cargo release status is updated with release type, release quantities, and release location based on the disposition code
File: GCX016E.cbl
GIVEN: The cargo status evaluation determines the cargo is fully released
WHEN: Manual release processing is completed
THEN: The system sets the cargo status to 'RELSD' (Released) and updates all related status flags
File: GCX016E.cbl
GIVEN: A cargo determined to be release eligible
WHEN: The system assigns final cargo status
THEN: The cargo status is set to 'RELSD' (Released) or 'HOLDPCS' (Hold Pieces) based on quantity analysis
βœ“ Consolidated Acceptance Criteria
  • The system updates release-related information → release flags are updated including released flag, PTT flag, PTT exam flag, and release 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_UpdateReleaseFlags(["Start Step"]) E_UpdateReleaseFlags(["End Step"]) N_UpdateReleaseFlags_Node0{"The system updates release-related
information"}:::decision N_UpdateReleaseFlags_Node0_action["Release flags are updated including
released flag, PTT flag, PTT exam
flag, and release quantity
information"]:::main N_UpdateReleaseFlags_Node0 -- Yes --> N_UpdateReleaseFlags_Node0_action N_UpdateReleaseFlags_Node0_action --> E_UpdateReleaseFlags S_UpdateReleaseFlags --> N_UpdateReleaseFlags_Node0 N_UpdateReleaseFlags_Node0 -- No --> E_UpdateReleaseFlags
File: GCX016E.cbl
GIVEN: Cargo release status has been set for a disposition code
WHEN: The system updates release-related information
THEN: Release flags are updated including released flag, PTT flag, PTT exam flag, and release quantity information
βœ“ Consolidated Acceptance Criteria
  • The system checks if the code represents a manual release → the code is identified as manual release if it originates from transaction GCT1071E or has 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_ManualRelease(["Start Step"]) E_ManualRelease(["End Step"]) N_ManualRelease_Node0{"The system checks if the code
represents a manual release"}:::decision N_ManualRelease_Node0_action["The code is identified as manual
release if it originates from
transaction GCT1071E or has manual
release indicators"]:::main N_ManualRelease_Node0 -- Yes --> N_ManualRelease_Node0_action N_ManualRelease_Node0_action --> E_ManualRelease S_ManualRelease --> N_ManualRelease_Node0 N_ManualRelease_Node0 -- No --> E_ManualRelease
File: GCX016E.cbl
GIVEN: A release disposition code is being evaluated
WHEN: The system checks if the code represents a manual release
THEN: The code is identified as manual release if it originates from transaction GCT1071E or has manual release indicators
βœ“ Consolidated Acceptance Criteria
  • The system processes the manual release request → the manual release is processed with special validation, broker verification, and immediate release 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_ProcessManualReleaseRequest(["Start Step"]) E_ProcessManualReleaseRequest(["End Step"]) N_ProcessManualReleaseRequest_Node0{"The system processes the manual
release request"}:::decision N_ProcessManualReleaseRequest_Node0_action["The manual release is processed
with special validation, broker
verification, and immediate release
status setting"]:::main N_ProcessManualReleaseRequest_Node0 -- Yes --> N_ProcessManualReleaseRequest_Node0_action N_ProcessManualReleaseRequest_Node0_action --> E_ProcessManualReleaseRequest S_ProcessManualReleaseRequest --> N_ProcessManualReleaseRequest_Node0 N_ProcessManualReleaseRequest_Node0 -- No --> E_ProcessManualReleaseRequest
File: GCX016E.cbl
GIVEN: A manual release disposition code is identified
WHEN: The system processes the manual release request
THEN: The manual release is processed with special validation, broker verification, and immediate release status setting
βœ“ Consolidated Acceptance Criteria
  • The system checks if the code represents an automatic release → the code is identified as automatic release if it has ARL (Auto Release) indicators or meets automatic release 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_AutoRelease(["Start Step"]) E_AutoRelease(["End Step"]) N_AutoRelease_Node0{"The system checks if the code
represents an automatic release"}:::decision N_AutoRelease_Node0_action["The code is identified as automatic
release if it has ARL Auto Release
indicators or meets automatic
release criteria"]:::main N_AutoRelease_Node0 -- Yes --> N_AutoRelease_Node0_action N_AutoRelease_Node0_action --> E_AutoRelease S_AutoRelease --> N_AutoRelease_Node0 N_AutoRelease_Node0 -- No --> E_AutoRelease
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A release disposition code is being evaluated and is not a manual release
WHEN: The system checks if the code represents an automatic release
THEN: The code is identified as automatic release if it has ARL (Auto Release) indicators or meets automatic release criteria
βœ“ Consolidated Acceptance Criteria
  • The system processes the automatic release → the automatic release is processed with system validation, automatic broker assignment, and immediate release 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_ProcessAutomaticRelease(["Start Step"]) E_ProcessAutomaticRelease(["End Step"]) N_ProcessAutomaticRelease_Node0{"The system processes the automatic
release"}:::decision N_ProcessAutomaticRelease_Node0_action["The automatic release is processed
with system validation, automatic
broker assignment, and immediate
release status setting"]:::main N_ProcessAutomaticRelease_Node0 -- Yes --> N_ProcessAutomaticRelease_Node0_action N_ProcessAutomaticRelease_Node0_action --> E_ProcessAutomaticRelease S_ProcessAutomaticRelease --> N_ProcessAutomaticRelease_Node0 N_ProcessAutomaticRelease_Node0 -- No --> E_ProcessAutomaticRelease
File: GCX016E.cbl
GIVEN: An automatic release disposition code is identified
WHEN: The system processes the automatic release
THEN: The automatic release is processed with system validation, automatic broker assignment, and immediate release status setting
βœ“ Consolidated Acceptance Criteria
  • The system validates release conditions → all release conditions are validated including cargo status, hold status, quantity availability, and regulatory compliance before allowing 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_ValidateReleaseConditions(["Start Step"]) E_ValidateReleaseConditions(["End Step"]) N_ValidateReleaseConditions_Node0{"The system validates release
conditions"}:::decision N_ValidateReleaseConditions_Node0_action["All release conditions are
validated including cargo status,
hold status, quantity availability,
and regulatory compliance before
allowing the release"]:::main N_ValidateReleaseConditions_Node0 -- Yes --> N_ValidateReleaseConditions_Node0_action N_ValidateReleaseConditions_Node0_action --> E_ValidateReleaseConditions S_ValidateReleaseConditions --> N_ValidateReleaseConditions_Node0 N_ValidateReleaseConditions_Node0 -- No --> E_ValidateReleaseConditions
File: GCX016E.cbl
GIVEN: An automatic release is being processed
WHEN: The system validates release conditions
THEN: All release conditions are validated including cargo status, hold status, quantity availability, and regulatory compliance before allowing the release
βœ“ Consolidated Acceptance Criteria
  • The system updates status array sequencing → all status array entries are renumbered with proper sequence numbers and the array count is updated
  • The status array structure needs to be maintained → the system updates the array sequence numbers and reorganizes the remaining codes to maintain proper array structure
  • The status array structure needs to be maintained → the system must update sequence numbers and occurrence counts to maintain proper status array integrity
  • The manual release processing updates the array → the system updates sequence numbers to maintain proper ordering and removes any gaps in the sequence
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateStatusArraySequence(["Start Step"]) E_UpdateStatusArraySequence(["End Step"]) N_UpdateStatusArraySequence_Node0{"The system updates status array
sequencing"}:::decision N_UpdateStatusArraySequence_Node0_action["All status array entries are
renumbered with proper sequence
numbers and the array count is
updated"]:::main N_UpdateStatusArraySequence_Node0 -- Yes --> N_UpdateStatusArraySequence_Node0_action N_UpdateStatusArraySequence_Node0_action --> E_UpdateStatusArraySequence S_UpdateStatusArraySequence --> N_UpdateStatusArraySequence_Node0 N_UpdateStatusArraySequence_Node1{"The status array structure needs to
be maintained"}:::decision N_UpdateStatusArraySequence_Node1_action["The system updates the array
sequence numbers and reorganizes the
remaining codes to maintain proper
array structure"]:::main N_UpdateStatusArraySequence_Node1 -- Yes --> N_UpdateStatusArraySequence_Node1_action N_UpdateStatusArraySequence_Node1_action --> E_UpdateStatusArraySequence N_UpdateStatusArraySequence_Node0 -- No --> N_UpdateStatusArraySequence_Node1 N_UpdateStatusArraySequence_Node2{"The status array structure needs to
be maintained"}:::decision N_UpdateStatusArraySequence_Node2_action["The system must update sequence
numbers and occurrence counts to
maintain proper status array
integrity"]:::main N_UpdateStatusArraySequence_Node2 -- Yes --> N_UpdateStatusArraySequence_Node2_action N_UpdateStatusArraySequence_Node2_action --> E_UpdateStatusArraySequence N_UpdateStatusArraySequence_Node1 -- No --> N_UpdateStatusArraySequence_Node2 N_UpdateStatusArraySequence_Node3{"The manual release processing
updates the array"}:::decision N_UpdateStatusArraySequence_Node3_action["The system updates sequence numbers
to maintain proper ordering and
removes any gaps in the sequence"]:::main N_UpdateStatusArraySequence_Node3 -- Yes --> N_UpdateStatusArraySequence_Node3_action N_UpdateStatusArraySequence_Node3_action --> E_UpdateStatusArraySequence N_UpdateStatusArraySequence_Node2 -- No --> N_UpdateStatusArraySequence_Node3 N_UpdateStatusArraySequence_Node3 -- No --> E_UpdateStatusArraySequence
File: GCX016E.cbl
GIVEN: Hold or release codes have been added or removed from the status array
WHEN: The system updates status array sequencing
THEN:
  • All status array entries are renumbered with proper sequence numbers
  • The array count is updated
File: GCX016E.cbl
GIVEN: A disposition code has been removed from the status array
WHEN: The status array structure needs to be maintained
THEN:
  • The system updates the array sequence numbers
  • Reorganizes the remaining codes to maintain proper array structure
File: GCX016E.cbl
GIVEN: A new release disposition code has been added to the status array
WHEN: The status array structure needs to be maintained
THEN:
  • The system must update sequence numbers
  • Occurrence counts to maintain proper status array integrity
File: GCX016E.cbl
GIVEN: Disposition codes have been added or removed from the cargo status array
WHEN: The manual release processing updates the array
THEN:
  • The system updates sequence numbers to maintain proper ordering
  • Removes any gaps in the sequence
βœ“ Consolidated Acceptance Criteria
  • The system generates hold notifications → hold notifications are sent to brokers, freight forwarders, and other relevant parties with hold details, reason, 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_GenerateHoldNotification(["Start Step"]) E_GenerateHoldNotification(["End Step"]) N_GenerateHoldNotification_Node0{"The system generates hold
notifications"}:::decision N_GenerateHoldNotification_Node0_action["Hold notifications are sent to
brokers, freight forwarders, and
other relevant parties with hold
details, reason, and required
actions"]:::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: GCX016E.cbl
GIVEN: A hold disposition code has been processed and cargo status updated
WHEN: The system generates hold notifications
THEN: Hold notifications are sent to brokers, freight forwarders, and other relevant parties with hold details, reason, and required actions
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo type or carrier information → the cargo is identified as CPRS cargo if it meets CPRS criteria, otherwise it is processed as regular 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_CPRSCargoIdentified(["Start Step"]) E_CPRSCargoIdentified(["End Step"]) N_CPRSCargoIdentified_Node0{"The system checks the cargo type or
carrier information"}:::decision N_CPRSCargoIdentified_Node0_action["The cargo is identified as CPRS
cargo if it meets CPRS criteria,
otherwise it is processed as regular
cargo"]:::main N_CPRSCargoIdentified_Node0 -- Yes --> N_CPRSCargoIdentified_Node0_action N_CPRSCargoIdentified_Node0_action --> E_CPRSCargoIdentified S_CPRSCargoIdentified --> N_CPRSCargoIdentified_Node0 N_CPRSCargoIdentified_Node0 -- No --> E_CPRSCargoIdentified
File: GCX016E.cbl
GIVEN: A cargo record is being processed for bond assignment
WHEN: The system checks the cargo type or carrier information
THEN: The cargo is identified as CPRS cargo if it meets CPRS criteria, otherwise it is processed as regular cargo
βœ“ Consolidated Acceptance Criteria
  • The system accesses the US cargo root record → current bond number, broker information, and bond status are 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_RetrieveCPRSBondInformation(["Start Step"]) E_RetrieveCPRSBondInformation(["End Step"]) N_RetrieveCPRSBondInformation_Node0{"The system accesses the US cargo
root record"}:::decision N_RetrieveCPRSBondInformation_Node0_action["Current bond number, broker
information, and bond status are
retrieved from the cargo record"]:::main N_RetrieveCPRSBondInformation_Node0 -- Yes --> N_RetrieveCPRSBondInformation_Node0_action N_RetrieveCPRSBondInformation_Node0_action --> E_RetrieveCPRSBondInformation S_RetrieveCPRSBondInformation --> N_RetrieveCPRSBondInformation_Node0 N_RetrieveCPRSBondInformation_Node0 -- No --> E_RetrieveCPRSBondInformation
File: GCX016E.cbl
GIVEN: A CPRS cargo has been identified for bond processing
WHEN: The system accesses the US cargo root record
THEN: Current bond number, broker information, and bond status are retrieved from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system validates the bond assignment against cargo entry type and requirements → the bond assignment is confirmed as valid or flagged 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_ValidateBondAssignment(["Start Step"]) E_ValidateBondAssignment(["End Step"]) N_ValidateBondAssignment_Node0{"The system validates the bond
assignment against cargo entry type
and requirements"}:::decision N_ValidateBondAssignment_Node0_action["The bond assignment is confirmed as
valid or flagged for correction"]:::main N_ValidateBondAssignment_Node0 -- Yes --> N_ValidateBondAssignment_Node0_action N_ValidateBondAssignment_Node0_action --> E_ValidateBondAssignment S_ValidateBondAssignment --> N_ValidateBondAssignment_Node0 N_ValidateBondAssignment_Node0 -- No --> E_ValidateBondAssignment
File: GCX016E.cbl
GIVEN: CPRS bond information has been retrieved
WHEN:
  • The system validates the bond assignment against cargo entry type
  • Requirements
THEN: The bond assignment is confirmed as valid or flagged for correction
βœ“ Consolidated Acceptance Criteria
  • The system checks if a bond number already exists for the cargo → if bond number exists and is valid, proceed to update existing bond, otherwise create new bond 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_BondAlreadyAssigned(["Start Step"]) E_BondAlreadyAssigned(["End Step"]) N_BondAlreadyAssigned_Node0{"The system checks if a bond number
already exists for the cargo"}:::decision N_BondAlreadyAssigned_Node0_action["If bond number exists and is valid,
proceed to update existing bond,
otherwise create new bond assignment"]:::main N_BondAlreadyAssigned_Node0 -- Yes --> N_BondAlreadyAssigned_Node0_action N_BondAlreadyAssigned_Node0_action --> E_BondAlreadyAssigned S_BondAlreadyAssigned --> N_BondAlreadyAssigned_Node0 N_BondAlreadyAssigned_Node0 -- No --> E_BondAlreadyAssigned
File: GCX016E.cbl
GIVEN: Bond assignment validation has been completed
WHEN: The system checks if a bond number already exists for the cargo
THEN:
  • If bond number exists
  • Is valid, proceed to update existing bond, otherwise create new bond assignment
βœ“ Consolidated Acceptance Criteria
  • The system creates a new bond assignment → a new bond number is assigned to the cargo and bond creation 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_CreateNewBondAssignment(["Start Step"]) E_CreateNewBondAssignment(["End Step"]) N_CreateNewBondAssignment_Node0{"The system creates a new bond
assignment"}:::decision N_CreateNewBondAssignment_Node0_action["A new bond number is assigned to
the cargo and bond creation is
logged"]:::main N_CreateNewBondAssignment_Node0 -- Yes --> N_CreateNewBondAssignment_Node0_action N_CreateNewBondAssignment_Node0_action --> E_CreateNewBondAssignment S_CreateNewBondAssignment --> N_CreateNewBondAssignment_Node0 N_CreateNewBondAssignment_Node0 -- No --> E_CreateNewBondAssignment
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: CPRS cargo does not have an existing valid bond assignment
WHEN: The system creates a new bond assignment
THEN:
  • A new bond number is assigned to the cargo
  • Bond creation is logged
βœ“ Consolidated Acceptance Criteria
  • The system updates the bond information → existing bond record is updated with current cargo processing information and 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_UpdateExistingBond(["Start Step"]) E_UpdateExistingBond(["End Step"]) N_UpdateExistingBond_Node0{"The system updates the bond
information"}:::decision N_UpdateExistingBond_Node0_action["Existing bond record is updated
with current cargo processing
information and status"]:::main N_UpdateExistingBond_Node0 -- Yes --> N_UpdateExistingBond_Node0_action N_UpdateExistingBond_Node0_action --> E_UpdateExistingBond S_UpdateExistingBond --> N_UpdateExistingBond_Node0 N_UpdateExistingBond_Node0 -- No --> E_UpdateExistingBond
File: GCX016E.cbl
GIVEN: CPRS cargo has an existing valid bond assignment
WHEN: The system updates the bond information
THEN:
  • Existing bond record is updated with current cargo processing information
  • Status
βœ“ Consolidated Acceptance Criteria
  • The system processes broker bond information → broker details are validated and associated with the bond 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_ProcessBrokerBondInformation(["Start Step"]) E_ProcessBrokerBondInformation(["End Step"]) N_ProcessBrokerBondInformation_Node0{"The system processes broker bond
information"}:::decision N_ProcessBrokerBondInformation_Node0_action["Broker details are validated and
associated with the bond assignment"]:::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: GCX016E.cbl
GIVEN: Bond assignment has been created or updated
WHEN: The system processes broker bond information
THEN:
  • Broker details are validated
  • Associated with the bond assignment
βœ“ Consolidated Acceptance Criteria
  • The system checks for available broker information in the broker table → if broker information exists, assign broker to bond, otherwise set default broker information
  • The system checks for associated broker information → if broker information is available, proceed to fetch email address; otherwise log no broker information and end 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_BrokerInformationAvailable(["Start Step"]) E_BrokerInformationAvailable(["End Step"]) N_BrokerInformationAvailable_Node0{"The system checks for available
broker information in the broker
table"}:::decision N_BrokerInformationAvailable_Node0_action["If broker information exists,
assign broker to bond, otherwise set
default broker information"]:::main N_BrokerInformationAvailable_Node0 -- Yes --> N_BrokerInformationAvailable_Node0_action N_BrokerInformationAvailable_Node0_action --> E_BrokerInformationAvailable S_BrokerInformationAvailable --> N_BrokerInformationAvailable_Node0 N_BrokerInformationAvailable_Node1{"The system checks for associated
broker information"}:::decision N_BrokerInformationAvailable_Node1_action["If broker information is available,
proceed to fetch email address
otherwise log no broker information
and end process"]:::main N_BrokerInformationAvailable_Node1 -- Yes --> N_BrokerInformationAvailable_Node1_action N_BrokerInformationAvailable_Node1_action --> E_BrokerInformationAvailable N_BrokerInformationAvailable_Node0 -- No --> N_BrokerInformationAvailable_Node1 N_BrokerInformationAvailable_Node1 -- No --> E_BrokerInformationAvailable
File: GCX016E.cbl
GIVEN: Broker bond information processing has started
WHEN: The system checks for available broker information in the broker table
THEN: If broker information exists, assign broker to bond, otherwise set default broker information
File: GCX016E.cbl
GIVEN: A freight forwarder name has been found in the database
WHEN: The system checks for associated broker information
THEN:
  • If broker information is available, proceed to fetch email address; otherwise log no broker information
  • End process
βœ“ Consolidated Acceptance Criteria
  • The system assigns the broker to the bond → broker ID, name, and contact information are associated with the bond 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_AssignBrokertoBond(["Start Step"]) E_AssignBrokertoBond(["End Step"]) N_AssignBrokertoBond_Node0{"The system assigns the broker to
the bond"}:::decision N_AssignBrokertoBond_Node0_action["Broker ID, name, and contact
information are associated with the
bond record"]:::main N_AssignBrokertoBond_Node0 -- Yes --> N_AssignBrokertoBond_Node0_action N_AssignBrokertoBond_Node0_action --> E_AssignBrokertoBond S_AssignBrokertoBond --> N_AssignBrokertoBond_Node0 N_AssignBrokertoBond_Node0 -- No --> E_AssignBrokertoBond
File: GCX016E.cbl
GIVEN: Broker information is available for the bond
WHEN: The system assigns the broker to the bond
THEN: Broker ID, name, and contact information are associated with the bond record
βœ“ Consolidated Acceptance Criteria
  • The system sets default broker information → default broker ID and standard broker information are assigned to 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_SetDefaultBrokerInformation(["Start Step"]) E_SetDefaultBrokerInformation(["End Step"]) N_SetDefaultBrokerInformation_Node0{"The system sets default broker
information"}:::decision N_SetDefaultBrokerInformation_Node0_action["Default broker ID and standard
broker information are assigned to
the bond"]:::main N_SetDefaultBrokerInformation_Node0 -- Yes --> N_SetDefaultBrokerInformation_Node0_action N_SetDefaultBrokerInformation_Node0_action --> E_SetDefaultBrokerInformation S_SetDefaultBrokerInformation --> N_SetDefaultBrokerInformation_Node0 N_SetDefaultBrokerInformation_Node0 -- No --> E_SetDefaultBrokerInformation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Broker information is not available for the bond
WHEN: The system sets default broker information
THEN:
  • Default broker id
  • Standard broker information are assigned to the bond
βœ“ Consolidated Acceptance Criteria
  • The system updates bond owner information → bond owner details are updated with current broker information and ownership 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_UpdateBondOwnerInformation(["Start Step"]) E_UpdateBondOwnerInformation(["End Step"]) N_UpdateBondOwnerInformation_Node0{"The system updates bond owner
information"}:::decision N_UpdateBondOwnerInformation_Node0_action["Bond owner details are updated with
current broker information and
ownership status"]:::main N_UpdateBondOwnerInformation_Node0 -- Yes --> N_UpdateBondOwnerInformation_Node0_action N_UpdateBondOwnerInformation_Node0_action --> E_UpdateBondOwnerInformation S_UpdateBondOwnerInformation --> N_UpdateBondOwnerInformation_Node0 N_UpdateBondOwnerInformation_Node0 -- No --> E_UpdateBondOwnerInformation
File: GCX016E.cbl
GIVEN: Broker has been assigned to the bond or default broker information has been set
WHEN: The system updates bond owner information
THEN:
  • Bond owner details are updated with current broker information
  • Ownership status
βœ“ Consolidated Acceptance Criteria
  • The system clears previous bond data → any conflicting or outdated bond information 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_ClearPreviousBondData(["Start Step"]) E_ClearPreviousBondData(["End Step"]) N_ClearPreviousBondData_Node0{"The system clears previous bond
data"}:::decision N_ClearPreviousBondData_Node0_action["Any conflicting or outdated bond
information is removed from the
cargo record"]:::main N_ClearPreviousBondData_Node0 -- Yes --> N_ClearPreviousBondData_Node0_action N_ClearPreviousBondData_Node0_action --> E_ClearPreviousBondData S_ClearPreviousBondData --> N_ClearPreviousBondData_Node0 N_ClearPreviousBondData_Node0 -- No --> E_ClearPreviousBondData
File: GCX016E.cbl
GIVEN: Bond owner information has been updated
WHEN: The system clears previous bond data
THEN: Any conflicting or outdated bond information is removed from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system sets CPRS bond flags → cPRS-specific flags are set to indicate bond type, processing status, and special handling 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_SetCPRSBondFlags(["Start Step"]) E_SetCPRSBondFlags(["End Step"]) N_SetCPRSBondFlags_Node0{"The system sets CPRS bond flags"}:::decision N_SetCPRSBondFlags_Node0_action["CPRS-specific flags are set to
indicate bond type, processing
status, and special handling
requirements"]:::main N_SetCPRSBondFlags_Node0 -- Yes --> N_SetCPRSBondFlags_Node0_action N_SetCPRSBondFlags_Node0_action --> E_SetCPRSBondFlags S_SetCPRSBondFlags --> N_SetCPRSBondFlags_Node0 N_SetCPRSBondFlags_Node0 -- No --> E_SetCPRSBondFlags
File: GCX016E.cbl
GIVEN: Previous bond data has been cleared
WHEN: The system sets CPRS bond flags
THEN: CPRS-specific flags are set to indicate bond type, processing status, and special handling requirements
βœ“ Consolidated Acceptance Criteria
  • The system logs the bond assignment action → bond assignment details, timestamp, and processing information are recorded in the 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_LogBondAssignmentAction(["Start Step"]) E_LogBondAssignmentAction(["End Step"]) N_LogBondAssignmentAction_Node0{"The system logs the bond assignment
action"}:::decision N_LogBondAssignmentAction_Node0_action["Bond assignment details, timestamp,
and processing information are
recorded in the status segments"]:::main N_LogBondAssignmentAction_Node0 -- Yes --> N_LogBondAssignmentAction_Node0_action N_LogBondAssignmentAction_Node0_action --> E_LogBondAssignmentAction S_LogBondAssignmentAction --> N_LogBondAssignmentAction_Node0 N_LogBondAssignmentAction_Node0 -- No --> E_LogBondAssignmentAction
File: GCX016E.cbl
GIVEN: CPRS bond flags have been set
WHEN: The system logs the bond assignment action
THEN: Bond assignment details, timestamp, and processing information are recorded in the status segments
βœ“ Consolidated Acceptance Criteria
  • The system generates bond creation notification → notification message is prepared with bond details, cargo information, and routing 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_GenerateBondCreationNotification(["Start Step"]) E_GenerateBondCreationNotification(["End Step"]) N_GenerateBondCreationNotification_Node0{"The system generates bond creation
notification"}:::decision N_GenerateBondCreationNotification_Node0_action["Notification message is prepared
with bond details, cargo
information, and routing
instructions"]:::main N_GenerateBondCreationNotification_Node0 -- Yes --> N_GenerateBondCreationNotification_Node0_action N_GenerateBondCreationNotification_Node0_action --> E_GenerateBondCreationNotification S_GenerateBondCreationNotification --> N_GenerateBondCreationNotification_Node0 N_GenerateBondCreationNotification_Node0 -- No --> E_GenerateBondCreationNotification
File: GCX016E.cbl
GIVEN: Bond assignment action has been logged
WHEN: The system generates bond creation notification
THEN: Notification message is prepared with bond details, cargo information, and routing instructions
βœ“ Consolidated Acceptance Criteria
  • The system sends K1 message for bond creation → k1 message with bond creation details is transmitted to the 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_SendK1MessageforBondCreation(["Start Step"]) E_SendK1MessageforBondCreation(["End Step"]) N_SendK1MessageforBondCreation_Node0{"The system sends K1 message for
bond creation"}:::decision N_SendK1MessageforBondCreation_Node0_action["K1 message with bond creation
details is transmitted to the
appropriate recipients"]:::main N_SendK1MessageforBondCreation_Node0 -- Yes --> N_SendK1MessageforBondCreation_Node0_action N_SendK1MessageforBondCreation_Node0_action --> E_SendK1MessageforBondCreation S_SendK1MessageforBondCreation --> N_SendK1MessageforBondCreation_Node0 N_SendK1MessageforBondCreation_Node0 -- No --> E_SendK1MessageforBondCreation
File: GCX016E.cbl
GIVEN: Bond creation notification has been generated
WHEN: The system sends K1 message for bond creation
THEN: K1 message with bond creation details is transmitted to the appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record with bond information → cargo record is updated with complete bond assignment details, broker information, and 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_UpdateCargoRecordwithBondInfo(["Start Step"]) E_UpdateCargoRecordwithBondInfo(["End Step"]) N_UpdateCargoRecordwithBondInfo_Node0{"The system updates the cargo record
with bond information"}:::decision N_UpdateCargoRecordwithBondInfo_Node0_action["Cargo record is updated with
complete bond assignment details,
broker information, and processing
status"]:::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: GCX016E.cbl
GIVEN: K1 message for bond creation has been sent
WHEN: The system updates the cargo record with bond information
THEN: Cargo record is updated with complete bond assignment details, broker information, and processing status
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code indicates an arrival event → the system proceeds with arrival processing if arrival disposition code is present, otherwise skips 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_ArrivalDispositionCodeReceived(["Start Step"]) E_ArrivalDispositionCodeReceived(["End Step"]) N_ArrivalDispositionCodeReceived_Node0{"The system checks if the
disposition code indicates an
arrival event"}:::decision N_ArrivalDispositionCodeReceived_Node0_action["The system proceeds with arrival
processing if arrival disposition
code is present, otherwise skips
arrival processing"]:::main N_ArrivalDispositionCodeReceived_Node0 -- Yes --> N_ArrivalDispositionCodeReceived_Node0_action N_ArrivalDispositionCodeReceived_Node0_action --> E_ArrivalDispositionCodeReceived S_ArrivalDispositionCodeReceived --> N_ArrivalDispositionCodeReceived_Node0 N_ArrivalDispositionCodeReceived_Node0 -- No --> E_ArrivalDispositionCodeReceived
File: GCX016E.cbl
GIVEN: A cargo disposition code is being processed
WHEN: The system checks if the disposition code indicates an arrival event
THEN: The system proceeds with arrival processing if arrival disposition code is present, otherwise skips arrival processing
βœ“ Consolidated Acceptance Criteria
  • The system validates the arrival location against valid border and destination locations → the system continues arrival processing if location is valid, otherwise generates location error message and skips processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidBorderDestinationLocation(["Start Step"]) E_ValidBorderDestinationLocation(["End Step"]) N_ValidBorderDestinationLocation_Node0{"The system validates the arrival
location against valid border and
destination locations"}:::decision N_ValidBorderDestinationLocation_Node0_action["The system continues arrival
processing if location is valid,
otherwise generates location error
message and skips processing"]:::main N_ValidBorderDestinationLocation_Node0 -- Yes --> N_ValidBorderDestinationLocation_Node0_action N_ValidBorderDestinationLocation_Node0_action --> E_ValidBorderDestinationLocation S_ValidBorderDestinationLocation --> N_ValidBorderDestinationLocation_Node0 N_ValidBorderDestinationLocation_Node0 -- No --> E_ValidBorderDestinationLocation
File: GCX016E.cbl
GIVEN: An arrival disposition code has been received
WHEN:
  • The system validates the arrival location against valid border
  • Destination locations
THEN:
  • The system continues arrival processing if location is valid, otherwise generates location error message
  • Skips processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival event → the cargo arrival flag is set to indicate arrival status
  • The system processes each cargo shipment → set the arrival flag for each cargo to indicate it has 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_SetCargoArrivalFlag(["Start Step"]) E_SetCargoArrivalFlag(["End Step"]) N_SetCargoArrivalFlag_Node0{"The system processes the arrival
event"}:::decision N_SetCargoArrivalFlag_Node0_action["The cargo arrival flag is set to
indicate arrival status"]:::main N_SetCargoArrivalFlag_Node0 -- Yes --> N_SetCargoArrivalFlag_Node0_action N_SetCargoArrivalFlag_Node0_action --> E_SetCargoArrivalFlag S_SetCargoArrivalFlag --> N_SetCargoArrivalFlag_Node0 N_SetCargoArrivalFlag_Node1{"The system processes each cargo
shipment"}:::decision N_SetCargoArrivalFlag_Node1_action["Set the arrival flag for each cargo
to indicate it has arrived at
destination"]:::main N_SetCargoArrivalFlag_Node1 -- Yes --> N_SetCargoArrivalFlag_Node1_action N_SetCargoArrivalFlag_Node1_action --> E_SetCargoArrivalFlag N_SetCargoArrivalFlag_Node0 -- No --> N_SetCargoArrivalFlag_Node1 N_SetCargoArrivalFlag_Node1 -- No --> E_SetCargoArrivalFlag
File: GCX016E.cbl
GIVEN: A valid arrival location has been confirmed
WHEN: The system processes the arrival event
THEN: The cargo arrival flag is set to indicate arrival status
File: GCX016E.cbl
GIVEN: US cargo has been found in an arriving train
WHEN: The system processes each cargo shipment
THEN: Set the arrival flag for each cargo to indicate it has arrived at destination
βœ“ Consolidated Acceptance Criteria
  • The system processes bond-related information for the arrived cargo → the bond start date is cleared to reset bond timing
  • The system processes the arrival event → the bond start date is cleared to reflect that the in-bond movement has ended
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 processes bond-related
information for the arrived cargo"}:::decision N_ClearBondStartDate_Node0_action["The bond start date is cleared to
reset bond timing"]:::main N_ClearBondStartDate_Node0 -- Yes --> N_ClearBondStartDate_Node0_action N_ClearBondStartDate_Node0_action --> E_ClearBondStartDate S_ClearBondStartDate --> N_ClearBondStartDate_Node0 N_ClearBondStartDate_Node1{"The system processes the arrival
event"}:::decision N_ClearBondStartDate_Node1_action["The bond start date is cleared to
reflect that the in-bond movement
has ended"]:::main N_ClearBondStartDate_Node1 -- Yes --> N_ClearBondStartDate_Node1_action N_ClearBondStartDate_Node1_action --> E_ClearBondStartDate N_ClearBondStartDate_Node0 -- No --> N_ClearBondStartDate_Node1 N_ClearBondStartDate_Node1 -- No --> E_ClearBondStartDate
File: GCX016E.cbl
GIVEN: Cargo arrival flag has been set
WHEN: The system processes bond-related information for the arrived cargo
THEN: The bond start date is cleared to reset bond timing
File: GCX016E.cbl
GIVEN: Cargo arrival status has been set
WHEN: The system processes the arrival event
THEN: The bond start date is cleared to reflect that the in-bond movement has ended
βœ“ Consolidated Acceptance Criteria
  • The system assigns location tracking information → an arrival index is set to identify the specific arrival location
  • The arrival index needs to be established → the destination index is set to the current arrival location
  • The system processes the arrival event → the system sets the arrival index to reference the arrival location for future processing
  • The system assigns tracking references → set the arrival index for the cargo to enable proper tracking and reference
  • The system processes the arrival status update → an arrival index is set to reference the arrival location for tracking purposes
  • The arrival index needs to be set → the arrival index should be updated with the current location identifier
  • The arrival processing procedures are finalized → the arrival processing flag should be 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_SetArrivalIndex(["Start Step"]) E_SetArrivalIndex(["End Step"]) N_SetArrivalIndex_Node0{"The system assigns location
tracking information"}:::decision N_SetArrivalIndex_Node0_action["An arrival index is set to identify
the specific arrival location"]:::main N_SetArrivalIndex_Node0 -- Yes --> N_SetArrivalIndex_Node0_action N_SetArrivalIndex_Node0_action --> E_SetArrivalIndex S_SetArrivalIndex --> N_SetArrivalIndex_Node0 N_SetArrivalIndex_Node1{"The arrival index needs to be
established"}:::decision N_SetArrivalIndex_Node1_action["The destination index is set to the
current arrival location"]:::main N_SetArrivalIndex_Node1 -- Yes --> N_SetArrivalIndex_Node1_action N_SetArrivalIndex_Node1_action --> E_SetArrivalIndex N_SetArrivalIndex_Node0 -- No --> N_SetArrivalIndex_Node1 N_SetArrivalIndex_Node2{"The system processes the arrival
event"}:::decision N_SetArrivalIndex_Node2_action["The system sets the arrival index
to reference the arrival location
for future processing"]:::main N_SetArrivalIndex_Node2 -- Yes --> N_SetArrivalIndex_Node2_action N_SetArrivalIndex_Node2_action --> E_SetArrivalIndex N_SetArrivalIndex_Node1 -- No --> N_SetArrivalIndex_Node2 N_SetArrivalIndex_Node3{"The system assigns tracking
references"}:::decision N_SetArrivalIndex_Node3_action["Set the arrival index for the cargo
to enable proper tracking and
reference"]:::main N_SetArrivalIndex_Node3 -- Yes --> N_SetArrivalIndex_Node3_action N_SetArrivalIndex_Node3_action --> E_SetArrivalIndex N_SetArrivalIndex_Node2 -- No --> N_SetArrivalIndex_Node3 N_SetArrivalIndex_Node4{"The system processes the arrival
status update"}:::decision N_SetArrivalIndex_Node4_action["An arrival index is set to
reference the arrival location for
tracking purposes"]:::main N_SetArrivalIndex_Node4 -- Yes --> N_SetArrivalIndex_Node4_action N_SetArrivalIndex_Node4_action --> E_SetArrivalIndex N_SetArrivalIndex_Node3 -- No --> N_SetArrivalIndex_Node4 N_SetArrivalIndex_Node5{"The arrival index needs to be set"}:::decision N_SetArrivalIndex_Node5_action["The arrival index should be updated
with the current location identifier"]:::main N_SetArrivalIndex_Node5 -- Yes --> N_SetArrivalIndex_Node5_action N_SetArrivalIndex_Node5_action --> E_SetArrivalIndex N_SetArrivalIndex_Node4 -- No --> N_SetArrivalIndex_Node5 N_SetArrivalIndex_Node6{"The arrival processing procedures
are finalized"}:::decision N_SetArrivalIndex_Node6_action["The arrival processing flag should
be set to indicate completion"]:::main N_SetArrivalIndex_Node6 -- Yes --> N_SetArrivalIndex_Node6_action N_SetArrivalIndex_Node6_action --> E_SetArrivalIndex N_SetArrivalIndex_Node5 -- No --> N_SetArrivalIndex_Node6 N_SetArrivalIndex_Node6 -- No --> E_SetArrivalIndex
File: GCX016E.cbl
GIVEN: Bond start date has been cleared for arrived cargo
WHEN: The system assigns location tracking information
THEN: An arrival index is set to identify the specific arrival location
File: GCX016E.cbl
GIVEN: A cargo is arriving at a destination location
WHEN: The arrival index needs to be established
THEN: The destination index is set to the current arrival location
File: GCX016E.cbl
GIVEN: A cargo has successfully arrived at a validated location
WHEN: The system processes the arrival event
THEN: The system sets the arrival index to reference the arrival location for future processing
File: GCX016E.cbl
GIVEN: Bond start dates have been cleared for cargo
WHEN: The system assigns tracking references
THEN:
  • Set the arrival index for the cargo to enable proper tracking
  • Reference
File: GCX016E.cbl
GIVEN: Cargo has arrived at a valid location
WHEN: The system processes the arrival status update
THEN: An arrival index is set to reference the arrival location for tracking purposes
File: GCX016E.cbl
GIVEN: A cargo is being processed for arrival AND the current location is determined
WHEN: The arrival index needs to be set
THEN: The arrival index should be updated with the current location identifier
File: GCX016E.cbl
GIVEN: A cargo has completed arrival index assignment
WHEN: The arrival processing procedures are finalized
THEN: The arrival processing flag should be set to indicate completion
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo status information → the cargo status is updated to 'Arrived' to reflect 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_UpdateCargoStatustoArrived(["Start Step"]) E_UpdateCargoStatustoArrived(["End Step"]) N_UpdateCargoStatustoArrived_Node0{"The system updates cargo status
information"}:::decision N_UpdateCargoStatustoArrived_Node0_action["The cargo status is updated to
Arrived to reflect current state"]:::main N_UpdateCargoStatustoArrived_Node0 -- Yes --> N_UpdateCargoStatustoArrived_Node0_action N_UpdateCargoStatustoArrived_Node0_action --> E_UpdateCargoStatustoArrived S_UpdateCargoStatustoArrived --> N_UpdateCargoStatustoArrived_Node0 N_UpdateCargoStatustoArrived_Node0 -- No --> E_UpdateCargoStatustoArrived
File: GCX016E.cbl
GIVEN: Cargo age has been calculated
WHEN: The system updates cargo status information
THEN: The cargo status is updated to 'Arrived' to reflect current state
βœ“ Consolidated Acceptance Criteria
  • The system processes notification requirements → an arrival notification is generated for internal tracking and reporting
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateArrivalNotification(["Start Step"]) E_GenerateArrivalNotification(["End Step"]) N_GenerateArrivalNotification_Node0{"The system processes notification
requirements"}:::decision N_GenerateArrivalNotification_Node0_action["An arrival notification is
generated for internal tracking and
reporting"]:::main N_GenerateArrivalNotification_Node0 -- Yes --> N_GenerateArrivalNotification_Node0_action N_GenerateArrivalNotification_Node0_action --> E_GenerateArrivalNotification S_GenerateArrivalNotification --> N_GenerateArrivalNotification_Node0 N_GenerateArrivalNotification_Node0 -- No --> E_GenerateArrivalNotification
File: GCX016E.cbl
GIVEN: Cargo status has been updated to arrived
WHEN: The system processes notification requirements
THEN:
  • An arrival notification is generated for internal tracking
  • Reporting
βœ“ Consolidated Acceptance Criteria
  • The system processes external notification requirements → an AEI notification message is sent to external systems 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_SendAEINotificationMessage(["Start Step"]) E_SendAEINotificationMessage(["End Step"]) N_SendAEINotificationMessage_Node0{"The system processes external
notification requirements"}:::decision N_SendAEINotificationMessage_Node0_action["An AEI notification message is sent
to external systems for equipment
tracking"]:::main N_SendAEINotificationMessage_Node0 -- Yes --> N_SendAEINotificationMessage_Node0_action N_SendAEINotificationMessage_Node0_action --> E_SendAEINotificationMessage S_SendAEINotificationMessage --> N_SendAEINotificationMessage_Node0 N_SendAEINotificationMessage_Node0 -- No --> E_SendAEINotificationMessage
File: GCX016E.cbl
GIVEN: Arrival notification has been generated
WHEN: The system processes external notification requirements
THEN: An AEI notification message is sent to external systems for equipment tracking
βœ“ Consolidated Acceptance Criteria
  • The system updates location tracking information → the destination index is updated to reflect the current cargo location
  • The system completes the cancellation processing → the system updates the destination index to reflect the 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_UpdateDestinationIndex(["Start Step"]) E_UpdateDestinationIndex(["End Step"]) N_UpdateDestinationIndex_Node0{"The system updates location
tracking information"}:::decision N_UpdateDestinationIndex_Node0_action["The destination index is updated to
reflect the current cargo location"]:::main N_UpdateDestinationIndex_Node0 -- Yes --> N_UpdateDestinationIndex_Node0_action N_UpdateDestinationIndex_Node0_action --> E_UpdateDestinationIndex S_UpdateDestinationIndex --> N_UpdateDestinationIndex_Node0 N_UpdateDestinationIndex_Node1{"The system completes the
cancellation processing"}:::decision N_UpdateDestinationIndex_Node1_action["The system updates the destination
index to reflect the new status"]:::main N_UpdateDestinationIndex_Node1 -- Yes --> N_UpdateDestinationIndex_Node1_action N_UpdateDestinationIndex_Node1_action --> E_UpdateDestinationIndex N_UpdateDestinationIndex_Node0 -- No --> N_UpdateDestinationIndex_Node1 N_UpdateDestinationIndex_Node1 -- No --> E_UpdateDestinationIndex
File: GCX016E.cbl
GIVEN: Arrival action has been logged
WHEN: The system updates location tracking information
THEN: The destination index is updated to reflect the current cargo location
File: GCX016E.cbl
GIVEN: A cargo cancellation has been processed and status has been updated
WHEN: The system completes the cancellation processing
THEN: The system updates the destination index to reflect the new status
βœ“ Consolidated Acceptance Criteria
  • The system processes external system synchronization requirements → a GCCIIS status update is triggered to synchronize cargo information with external systems
  • The system triggers GCCIIS integration for status synchronization → the system calls GCCIIS with appropriate cargo status information for external 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_TriggerGCCIISStatusUpdate(["Start Step"]) E_TriggerGCCIISStatusUpdate(["End Step"]) N_TriggerGCCIISStatusUpdate_Node0{"The system processes external
system synchronization requirements"}:::decision N_TriggerGCCIISStatusUpdate_Node0_action["A GCCIIS status update is triggered
to synchronize cargo information
with external systems"]:::main N_TriggerGCCIISStatusUpdate_Node0 -- Yes --> N_TriggerGCCIISStatusUpdate_Node0_action N_TriggerGCCIISStatusUpdate_Node0_action --> E_TriggerGCCIISStatusUpdate S_TriggerGCCIISStatusUpdate --> N_TriggerGCCIISStatusUpdate_Node0 N_TriggerGCCIISStatusUpdate_Node1{"The system triggers GCCIIS
integration for status
synchronization"}:::decision N_TriggerGCCIISStatusUpdate_Node1_action["The system calls GCCIIS with
appropriate cargo status information
for external system updates"]:::main N_TriggerGCCIISStatusUpdate_Node1 -- Yes --> N_TriggerGCCIISStatusUpdate_Node1_action N_TriggerGCCIISStatusUpdate_Node1_action --> E_TriggerGCCIISStatusUpdate N_TriggerGCCIISStatusUpdate_Node0 -- No --> N_TriggerGCCIISStatusUpdate_Node1 N_TriggerGCCIISStatusUpdate_Node1 -- No --> E_TriggerGCCIISStatusUpdate
File: GCX016E.cbl
GIVEN: Destination index has been updated
WHEN: The system processes external system synchronization requirements
THEN: A GCCIIS status update is triggered to synchronize cargo information with external systems
File: GCX016E.cbl
GIVEN: Status array has been updated in the database
WHEN: The system triggers GCCIIS integration for status synchronization
THEN: The system calls GCCIIS with appropriate cargo status information for external system updates
βœ“ Consolidated Acceptance Criteria
  • The system detects an invalid border or destination location → a location error message is generated to notify of the invalid 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_GenerateLocationErrorMessage(["Start Step"]) E_GenerateLocationErrorMessage(["End Step"]) N_GenerateLocationErrorMessage_Node0{"The system detects an invalid
border or destination location"}:::decision N_GenerateLocationErrorMessage_Node0_action["A location error message is
generated to notify of the invalid
location"]:::exclusion N_GenerateLocationErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateLocationErrorMessage_Node0_action N_GenerateLocationErrorMessage_Node0_action --> E_GenerateLocationErrorMessage S_GenerateLocationErrorMessage --> N_GenerateLocationErrorMessage_Node0 N_GenerateLocationErrorMessage_Node0 -- No --> E_GenerateLocationErrorMessage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An arrival location validation has failed
WHEN: The system detects an invalid border or destination location
THEN: A location error message is generated to notify of the invalid location
βœ“ Consolidated Acceptance Criteria
  • If the disposition code type → the system identifies if it is an export disposition code and proceeds with export 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_ExportDispositionCodeReceived(["Start Step"]) E_ExportDispositionCodeReceived(["End Step"]) N_ExportDispositionCodeReceived_Node0{"The system evaluates the
disposition code type"}:::decision N_ExportDispositionCodeReceived_Node0_action["The system identifies if it is an
export disposition code and proceeds
with export processing or skips to
completion"]:::main N_ExportDispositionCodeReceived_Node0 -- Yes --> N_ExportDispositionCodeReceived_Node0_action N_ExportDispositionCodeReceived_Node0_action --> E_ExportDispositionCodeReceived S_ExportDispositionCodeReceived --> N_ExportDispositionCodeReceived_Node0 N_ExportDispositionCodeReceived_Node0 -- No --> E_ExportDispositionCodeReceived
File: GCX016E.cbl
GIVEN: A disposition code has been received for cargo processing
WHEN: The system evaluates the disposition code type
THEN:
  • The system identifies if it is an export disposition code
  • Proceeds with export processing or skips to completion
βœ“ Consolidated Acceptance Criteria
  • The system checks the location against the valid export port table → the system either confirms the port is valid and continues processing or generates an error for invalid ports
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidExportPort(["Start Step"]) E_ValidExportPort(["End Step"]) N_ValidExportPort_Node0{"The system checks the location
against the valid export port table"}:::decision N_ValidExportPort_Node0_action["The system either confirms the port
is valid and continues processing or
generates an error for invalid ports"]:::main N_ValidExportPort_Node0 -- Yes --> N_ValidExportPort_Node0_action N_ValidExportPort_Node0_action --> E_ValidExportPort S_ValidExportPort --> N_ValidExportPort_Node0 N_ValidExportPort_Node0 -- No --> E_ValidExportPort
File: GCX016E.cbl
GIVEN: An export location has been specified in the disposition code
WHEN: The system checks the location against the valid export port table
THEN:
  • The system either confirms the port is valid
  • Continues processing or generates an error for invalid ports
βœ“ Consolidated Acceptance Criteria
  • The system processes the export disposition code → the system sets the export status flag to active in the cargo record
  • The system processes the cargo for export → the system sets the export status flag to indicate export processing status
  • Processing the disposition code → the export status flag is set to 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_SetExportStatusFlag(["Start Step"]) E_SetExportStatusFlag(["End Step"]) N_SetExportStatusFlag_Node0{"The system processes the export
disposition code"}:::decision N_SetExportStatusFlag_Node0_action["The system sets the export status
flag to active in the cargo record"]:::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 processes the cargo for
export"}:::decision N_SetExportStatusFlag_Node1_action["The system sets the export status
flag to indicate export processing
status"]:::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{"Processing the disposition code"}:::decision N_SetExportStatusFlag_Node2_action["The export status flag is set to
active"]:::main N_SetExportStatusFlag_Node2 -- Yes --> N_SetExportStatusFlag_Node2_action N_SetExportStatusFlag_Node2_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node1 -- No --> N_SetExportStatusFlag_Node2 N_SetExportStatusFlag_Node2 -- No --> E_SetExportStatusFlag
File: GCX016E.cbl
GIVEN: A valid export port has been confirmed for the cargo
WHEN: The system processes the export disposition code
THEN: The system sets the export status flag to active in the cargo record
File: GCX016E.cbl
GIVEN: A cargo record that has passed export validation with cleared destination index
WHEN: The system processes the cargo for export
THEN: The system sets the export status flag to indicate export processing status
File: GCX016E.cbl
GIVEN: An export disposition code has been identified
WHEN: Processing the disposition code
THEN: The export status flag is set to active
βœ“ Consolidated Acceptance Criteria
  • The system processes the export status change → the system clears the destination index field to remove domestic destination references
  • Destination processing is performed → system clears the destination index field to remove destination-specific routing information
  • The system clears destination information → the destination index is cleared or reset in the cargo record
  • Export processing is initiated → the destination index is cleared from the cargo record
  • The cargo is being processed for export → the system clears the destination index to remove domestic routing information
  • The system processes the export event → the destination index is cleared since the cargo is leaving the country
  • The export processing is triggered → the destination index field is cleared 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_ClearDestinationIndex(["Start Step"]) E_ClearDestinationIndex(["End Step"]) N_ClearDestinationIndex_Node0{"The system processes the export
status change"}:::decision N_ClearDestinationIndex_Node0_action["The system clears the destination
index field to remove domestic
destination references"]:::main N_ClearDestinationIndex_Node0 -- Yes --> N_ClearDestinationIndex_Node0_action N_ClearDestinationIndex_Node0_action --> E_ClearDestinationIndex S_ClearDestinationIndex --> N_ClearDestinationIndex_Node0 N_ClearDestinationIndex_Node1{"Destination processing is performed"}:::decision N_ClearDestinationIndex_Node1_action["System clears the destination index
field to remove destination-specific
routing information"]:::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 clears destination
information"}:::decision N_ClearDestinationIndex_Node2_action["The destination index is cleared or
reset in the cargo record"]:::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{"Export processing is initiated"}:::decision N_ClearDestinationIndex_Node3_action["The destination index is cleared
from the cargo record"]:::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 cargo is being processed for
export"}:::decision N_ClearDestinationIndex_Node4_action["The system clears the destination
index to remove domestic routing
information"]:::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 system processes the export
event"}:::decision N_ClearDestinationIndex_Node5_action["The destination index is cleared
since the cargo is leaving the
country"]:::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{"The export processing is triggered"}:::decision N_ClearDestinationIndex_Node6_action["The destination index field is
cleared to spaces"]:::main N_ClearDestinationIndex_Node6 -- Yes --> N_ClearDestinationIndex_Node6_action N_ClearDestinationIndex_Node6_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node5 -- No --> N_ClearDestinationIndex_Node6 N_ClearDestinationIndex_Node6 -- No --> E_ClearDestinationIndex
File: GCX016E.cbl
GIVEN: The export status flag has been set for the cargo
WHEN: The system processes the export status change
THEN: The system clears the destination index field to remove domestic destination references
File: GCX016E.cbl
GIVEN: Cargo age has been recalculated after cancellation
WHEN: Destination processing is performed
THEN: System clears the destination index field to remove destination-specific routing information
File: GCX016E.cbl
GIVEN: A cargo export is being cancelled and export date fields have been reset
WHEN: The system clears destination information
THEN: The destination index is cleared or reset in the cargo record
File: GCX016E.cbl
GIVEN: A cargo is being processed for export
WHEN: Export processing is initiated
THEN: The destination index is cleared from the cargo record
File: GCX016E.cbl
GIVEN: A cargo record with valid export conditions and existing destination index
WHEN: The cargo is being processed for export
THEN: The system clears the destination index to remove domestic routing information
File: GCX016E.cbl
GIVEN: Cargo export status has been set
WHEN: The system processes the export event
THEN: The destination index is cleared since the cargo is leaving the country
File: GCX016E.cbl
GIVEN: A cargo has an export disposition code
WHEN: The export processing is triggered
THEN: The destination index field is cleared to spaces
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the export status change → the system updates the export date and time fields with the current 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_UpdateExportDateTime(["Start Step"]) E_UpdateExportDateTime(["End Step"]) N_UpdateExportDateTime_Node0{"The system finalizes the export
status change"}:::decision N_UpdateExportDateTime_Node0_action["The system updates the export date
and time fields with the current
timestamp"]:::main N_UpdateExportDateTime_Node0 -- Yes --> N_UpdateExportDateTime_Node0_action N_UpdateExportDateTime_Node0_action --> E_UpdateExportDateTime S_UpdateExportDateTime --> N_UpdateExportDateTime_Node0 N_UpdateExportDateTime_Node0 -- No --> E_UpdateExportDateTime
File: GCX016E.cbl
GIVEN: The destination index has been cleared for the export cargo
WHEN: The system finalizes the export status change
THEN:
  • The system updates the export date
  • Time fields with the current timestamp
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo's previous processing history → the system retrieves the current export status to determine if duplicate processing should be prevented
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckPreviousExportStatus(["Start Step"]) E_CheckPreviousExportStatus(["End Step"]) N_CheckPreviousExportStatus_Node0{"The system checks the cargo s
previous processing history"}:::decision N_CheckPreviousExportStatus_Node0_action["The system retrieves the current
export status to determine if
duplicate processing should be
prevented"]:::main N_CheckPreviousExportStatus_Node0 -- Yes --> N_CheckPreviousExportStatus_Node0_action N_CheckPreviousExportStatus_Node0_action --> E_CheckPreviousExportStatus S_CheckPreviousExportStatus --> N_CheckPreviousExportStatus_Node0 N_CheckPreviousExportStatus_Node0 -- No --> E_CheckPreviousExportStatus
File: GCX016E.cbl
GIVEN: The export date and time have been updated for the cargo
WHEN: The system checks the cargo's previous processing history
THEN: The system retrieves the current export status to determine if duplicate processing should be prevented
βœ“ Consolidated Acceptance Criteria
  • If if the cargo already has an active export status → the system either skips duplicate processing or continues with new export 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_AlreadyExported(["Start Step"]) E_AlreadyExported(["End Step"]) N_AlreadyExported_Node0{"The system evaluates if the cargo
already has an active export status"}:::decision N_AlreadyExported_Node0_action["The system either skips duplicate
processing or continues with new
export notification"]:::main N_AlreadyExported_Node0 -- Yes --> N_AlreadyExported_Node0_action N_AlreadyExported_Node0_action --> E_AlreadyExported S_AlreadyExported --> N_AlreadyExported_Node0 N_AlreadyExported_Node0 -- No --> E_AlreadyExported
File: GCX016E.cbl
GIVEN: The system has checked the cargo's previous export status
WHEN: The system evaluates if the cargo already has an active export status
THEN: The system either skips duplicate processing or continues with new export notification
βœ“ Consolidated Acceptance Criteria
  • The system detects duplicate export processing → the system skips the export notification and completes processing without generating duplicate 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_SkipDuplicateExport(["Start Step"]) E_SkipDuplicateExport(["End Step"]) N_SkipDuplicateExport_Node0{"The system detects duplicate export
processing"}:::decision N_SkipDuplicateExport_Node0_action["The system skips the export
notification and completes
processing without generating
duplicate messages"]:::main N_SkipDuplicateExport_Node0 -- Yes --> N_SkipDuplicateExport_Node0_action N_SkipDuplicateExport_Node0_action --> E_SkipDuplicateExport S_SkipDuplicateExport --> N_SkipDuplicateExport_Node0 N_SkipDuplicateExport_Node0 -- No --> E_SkipDuplicateExport
File: GCX016E.cbl
GIVEN: The cargo has already been processed for export
WHEN: The system detects duplicate export processing
THEN:
  • The system skips the export notification
  • Completes processing without generating duplicate messages
βœ“ Consolidated Acceptance Criteria
  • The system processes the export status change → the system generates a new export notification message for distribution
  • Export status is active → an export notification message 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_GenerateExportNotification(["Start Step"]) E_GenerateExportNotification(["End Step"]) N_GenerateExportNotification_Node0{"The system processes the export
status change"}:::decision N_GenerateExportNotification_Node0_action["The system generates a new export
notification message for
distribution"]:::main N_GenerateExportNotification_Node0 -- Yes --> N_GenerateExportNotification_Node0_action N_GenerateExportNotification_Node0_action --> E_GenerateExportNotification S_GenerateExportNotification --> N_GenerateExportNotification_Node0 N_GenerateExportNotification_Node1{"Export status is active"}:::decision N_GenerateExportNotification_Node1_action["An export notification message is
generated and sent to appropriate
recipients"]:::main N_GenerateExportNotification_Node1 -- Yes --> N_GenerateExportNotification_Node1_action N_GenerateExportNotification_Node1_action --> E_GenerateExportNotification N_GenerateExportNotification_Node0 -- No --> N_GenerateExportNotification_Node1 N_GenerateExportNotification_Node1 -- No --> E_GenerateExportNotification
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The cargo has not been previously exported
WHEN: The system processes the export status change
THEN: The system generates a new export notification message for distribution
File: GCX016E.cbl
GIVEN: A cargo has been successfully set to export status
WHEN: Export status is active
THEN:
  • An export notification message is generated
  • Sent to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system creates the export message → the system formats the message with proper export notification headers 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_FormatExportMessage(["Start Step"]) E_FormatExportMessage(["End Step"]) N_FormatExportMessage_Node0{"The system creates the export
message"}:::decision N_FormatExportMessage_Node0_action["The system formats the message with
proper export notification headers
and structure"]:::main N_FormatExportMessage_Node0 -- Yes --> N_FormatExportMessage_Node0_action N_FormatExportMessage_Node0_action --> E_FormatExportMessage S_FormatExportMessage --> N_FormatExportMessage_Node0 N_FormatExportMessage_Node0 -- No --> E_FormatExportMessage
File: GCX016E.cbl
GIVEN: An export notification needs to be generated
WHEN: The system creates the export message
THEN:
  • The system formats the message with proper export notification headers
  • Structure
βœ“ Consolidated Acceptance Criteria
  • The system populates the message content → the system includes cargo identification, quantities, and relevant cargo details in the export 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_IncludeCargoDetails(["Start Step"]) E_IncludeCargoDetails(["End Step"]) N_IncludeCargoDetails_Node0{"The system populates the message
content"}:::decision N_IncludeCargoDetails_Node0_action["The system includes cargo
identification, quantities, and
relevant cargo details in the export
message"]:::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: GCX016E.cbl
GIVEN: The export message format has been established
WHEN: The system populates the message content
THEN: The system includes cargo identification, quantities, and relevant cargo details in the export message
βœ“ Consolidated Acceptance Criteria
  • The system completes the message content → the system adds the export port code, location name, and relevant geographic information 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_AddLocationInformation(["Start Step"]) E_AddLocationInformation(["End Step"]) N_AddLocationInformation_Node0{"The system completes the message
content"}:::decision N_AddLocationInformation_Node0_action["The system adds the export port
code, location name, and relevant
geographic information to the
message"]:::main N_AddLocationInformation_Node0 -- Yes --> N_AddLocationInformation_Node0_action N_AddLocationInformation_Node0_action --> E_AddLocationInformation S_AddLocationInformation --> N_AddLocationInformation_Node0 N_AddLocationInformation_Node0 -- No --> E_AddLocationInformation
File: GCX016E.cbl
GIVEN: Cargo details have been included in the export message
WHEN: The system completes the message content
THEN: The system adds the export port code, location name, and relevant geographic information to the message
βœ“ Consolidated Acceptance Criteria
  • The system is ready to distribute the notification → the system sends the export notification to designated recipients and systems
  • The system sends the export notification → the system delivers the export notification message to all identified 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_SendExportNotification(["Start Step"]) E_SendExportNotification(["End Step"]) N_SendExportNotification_Node0{"The system is ready to distribute
the notification"}:::decision N_SendExportNotification_Node0_action["The system sends the export
notification to designated
recipients and systems"]:::main N_SendExportNotification_Node0 -- Yes --> N_SendExportNotification_Node0_action N_SendExportNotification_Node0_action --> E_SendExportNotification S_SendExportNotification --> N_SendExportNotification_Node0 N_SendExportNotification_Node1{"The system sends the export
notification"}:::decision N_SendExportNotification_Node1_action["The system delivers the export
notification message to all
identified recipients"]:::main N_SendExportNotification_Node1 -- Yes --> N_SendExportNotification_Node1_action N_SendExportNotification_Node1_action --> E_SendExportNotification N_SendExportNotification_Node0 -- No --> N_SendExportNotification_Node1 N_SendExportNotification_Node1 -- No --> E_SendExportNotification
File: GCX016E.cbl
GIVEN: The export notification message has been fully formatted with cargo and location details
WHEN: The system is ready to distribute the notification
THEN:
  • The system sends the export notification to designated recipients
  • Systems
File: GCX016E.cbl
GIVEN: A routed export notification message with identified recipients
WHEN: The system sends the export notification
THEN: The system delivers the export notification message to all identified recipients
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the export processing → the system updates the cargo record in the database with the export status, date, time, and location information
  • Cargo record update is required → all index management changes are saved to the cargo record
  • All export data has been prepared → the cargo record is updated in the database with export status, cleared destination index, and reset bond date
  • The system finalizes the restoration process → the system updates the cargo record with all restored bond information, age calculation, and restoration 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_UpdateCargoRecord(["Start Step"]) E_UpdateCargoRecord(["End Step"]) N_UpdateCargoRecord_Node0{"The system finalizes the export
processing"}:::decision N_UpdateCargoRecord_Node0_action["The system updates the cargo record
in the database with the export
status, date, time, and location
information"]:::main N_UpdateCargoRecord_Node0 -- Yes --> N_UpdateCargoRecord_Node0_action N_UpdateCargoRecord_Node0_action --> E_UpdateCargoRecord S_UpdateCargoRecord --> N_UpdateCargoRecord_Node0 N_UpdateCargoRecord_Node1{"Cargo record update is required"}:::decision N_UpdateCargoRecord_Node1_action["All index management changes are
saved to the cargo record"]:::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{"All export data has been prepared"}:::decision N_UpdateCargoRecord_Node2_action["The cargo record is updated in the
database with export status, cleared
destination index, and reset bond
date"]:::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 finalizes the
restoration process"}:::decision N_UpdateCargoRecord_Node3_action["The system updates the cargo record
with all restored bond information,
age calculation, and restoration
flags"]:::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: GCX016E.cbl
GIVEN: The export notification has been successfully sent
WHEN: The system finalizes the export processing
THEN: The system updates the cargo record in the database with the export status, date, time, and location information
File: GCX016E.cbl
GIVEN: Destination index management processing has been completed
WHEN: Cargo record update is required
THEN: All index management changes are saved to the cargo record
File: GCX016E.cbl
GIVEN: A cargo has completed export processing steps
WHEN: All export data has been prepared
THEN: The cargo record is updated in the database with export status, cleared destination index, and reset bond date
File: GCX016E.cbl
GIVEN: Bond restoration action has been logged
WHEN: The system finalizes the restoration process
THEN: The system updates the cargo record with all restored bond information, age calculation, and restoration flags
βœ“ Consolidated Acceptance Criteria
  • The system reaches the end of export processing logic → the system marks the export processing as complete and returns 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_ExportProcessingComplete(["Start Step"]) E_ExportProcessingComplete(["End Step"]) N_ExportProcessingComplete_Node0{"The system reaches the end of
export processing logic"}:::decision N_ExportProcessingComplete_Node0_action["The system marks the export
processing as complete and returns
control to the main processing flow"]:::main N_ExportProcessingComplete_Node0 -- Yes --> N_ExportProcessingComplete_Node0_action N_ExportProcessingComplete_Node0_action --> E_ExportProcessingComplete S_ExportProcessingComplete --> N_ExportProcessingComplete_Node0 N_ExportProcessingComplete_Node0 -- No --> E_ExportProcessingComplete
File: GCX016E.cbl
GIVEN: All export processing steps have been completed successfully or skipped appropriately
WHEN: The system reaches the end of export processing logic
THEN:
  • The system marks the export processing as complete
  • Returns control to the main processing flow
βœ“ Consolidated Acceptance Criteria
  • Cancel arrival processing is triggered for the cargo → system checks if cargo has arrival status and only proceeds with cancellation if arrival status exists, otherwise skips 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_CargoHasArrivalStatus(["Start Step"]) E_CargoHasArrivalStatus(["End Step"]) N_CargoHasArrivalStatus_Node0{"Cancel arrival processing is
triggered for the cargo"}:::decision N_CargoHasArrivalStatus_Node0_action["System checks if cargo has arrival
status and only proceeds with
cancellation if arrival status
exists, otherwise skips cancellation
processing"]:::main N_CargoHasArrivalStatus_Node0 -- Yes --> N_CargoHasArrivalStatus_Node0_action N_CargoHasArrivalStatus_Node0_action --> E_CargoHasArrivalStatus S_CargoHasArrivalStatus --> N_CargoHasArrivalStatus_Node0 N_CargoHasArrivalStatus_Node0 -- No --> E_CargoHasArrivalStatus
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: Cancel arrival processing is triggered for the cargo
THEN:
  • System checks if cargo has arrival status
  • Only proceeds with cancellation if arrival status exists, otherwise skips cancellation processing
βœ“ Consolidated Acceptance Criteria
  • Arrival cancellation is authorized and processed → system sets the cargo arrival flag to false to indicate cargo is no longer in arrived 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_ResetArrivalFlagtoFalse(["Start Step"]) E_ResetArrivalFlagtoFalse(["End Step"]) N_ResetArrivalFlagtoFalse_Node0{"Arrival cancellation is authorized
and processed"}:::decision N_ResetArrivalFlagtoFalse_Node0_action["System sets the cargo arrival flag
to false to indicate cargo is no
longer in arrived status"]:::main N_ResetArrivalFlagtoFalse_Node0 -- Yes --> N_ResetArrivalFlagtoFalse_Node0_action N_ResetArrivalFlagtoFalse_Node0_action --> E_ResetArrivalFlagtoFalse S_ResetArrivalFlagtoFalse --> N_ResetArrivalFlagtoFalse_Node0 N_ResetArrivalFlagtoFalse_Node0 -- No --> E_ResetArrivalFlagtoFalse
File: GCX016E.cbl
GIVEN: Cargo has been validated to have arrival status
WHEN:
  • Arrival cancellation is authorized
  • Processed
THEN: System sets the cargo arrival flag to false to indicate cargo is no longer in arrived status
βœ“ Consolidated Acceptance Criteria
  • Arrival cancellation processing continues → system clears all arrival date and time fields 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_ClearArrivalDateInformation(["Start Step"]) E_ClearArrivalDateInformation(["End Step"]) N_ClearArrivalDateInformation_Node0{"Arrival cancellation processing
continues"}:::decision N_ClearArrivalDateInformation_Node0_action["System clears all arrival date and
time fields from the cargo record"]:::main N_ClearArrivalDateInformation_Node0 -- Yes --> N_ClearArrivalDateInformation_Node0_action N_ClearArrivalDateInformation_Node0_action --> E_ClearArrivalDateInformation S_ClearArrivalDateInformation --> N_ClearArrivalDateInformation_Node0 N_ClearArrivalDateInformation_Node0 -- No --> E_ClearArrivalDateInformation
File: GCX016E.cbl
GIVEN: Cargo arrival flag has been reset to false
WHEN: Arrival cancellation processing continues
THEN:
  • System clears all arrival date
  • Time fields from the cargo record
βœ“ Consolidated Acceptance Criteria
  • Status array processing is performed → system updates cargo status arrays to remove arrival-related status entries and recalculate current status
  • The system updates status tracking arrays → the S09 status arrays are updated to remove export-related status entries and add cancellation status information
  • Status array update is performed → the system updates S09A status arrays to reflect cancel release status and removes previous release indicators
  • The system updates the cargo status arrays → the status array is updated with disposition code 95 and appropriate sequence numbers to track the bond cancellation
  • The system finalizes the status management → the cargo status arrays are updated with the new arrival and export status information
  • The system updates cargo status arrays → all cargo records in the group have their status arrays updated to reflect released status and notification 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_UpdateCargoStatusArrays(["Start Step"]) E_UpdateCargoStatusArrays(["End Step"]) N_UpdateCargoStatusArrays_Node0{"Status array processing is
performed"}:::decision N_UpdateCargoStatusArrays_Node0_action["System updates cargo status arrays
to remove arrival-related status
entries and recalculate current
status"]:::main N_UpdateCargoStatusArrays_Node0 -- Yes --> N_UpdateCargoStatusArrays_Node0_action N_UpdateCargoStatusArrays_Node0_action --> E_UpdateCargoStatusArrays S_UpdateCargoStatusArrays --> N_UpdateCargoStatusArrays_Node0 N_UpdateCargoStatusArrays_Node1{"The system updates status tracking
arrays"}:::decision N_UpdateCargoStatusArrays_Node1_action["The S09 status arrays are updated
to remove export-related status
entries and add cancellation status
information"]:::main N_UpdateCargoStatusArrays_Node1 -- Yes --> N_UpdateCargoStatusArrays_Node1_action N_UpdateCargoStatusArrays_Node1_action --> E_UpdateCargoStatusArrays N_UpdateCargoStatusArrays_Node0 -- No --> N_UpdateCargoStatusArrays_Node1 N_UpdateCargoStatusArrays_Node2{"Status array update is performed"}:::decision N_UpdateCargoStatusArrays_Node2_action["The system updates S09A status
arrays to reflect cancel release
status and removes previous release
indicators"]:::main N_UpdateCargoStatusArrays_Node2 -- Yes --> N_UpdateCargoStatusArrays_Node2_action N_UpdateCargoStatusArrays_Node2_action --> E_UpdateCargoStatusArrays N_UpdateCargoStatusArrays_Node1 -- No --> N_UpdateCargoStatusArrays_Node2 N_UpdateCargoStatusArrays_Node3{"The system updates the cargo status
arrays"}:::decision N_UpdateCargoStatusArrays_Node3_action["The status array is updated with
disposition code 95 and appropriate
sequence numbers to track the bond
cancellation"]:::main N_UpdateCargoStatusArrays_Node3 -- Yes --> N_UpdateCargoStatusArrays_Node3_action N_UpdateCargoStatusArrays_Node3_action --> E_UpdateCargoStatusArrays N_UpdateCargoStatusArrays_Node2 -- No --> N_UpdateCargoStatusArrays_Node3 N_UpdateCargoStatusArrays_Node4{"The system finalizes the status
management"}:::decision N_UpdateCargoStatusArrays_Node4_action["The cargo status arrays are updated
with the new arrival and export
status information"]:::main N_UpdateCargoStatusArrays_Node4 -- Yes --> N_UpdateCargoStatusArrays_Node4_action N_UpdateCargoStatusArrays_Node4_action --> E_UpdateCargoStatusArrays N_UpdateCargoStatusArrays_Node3 -- No --> N_UpdateCargoStatusArrays_Node4 N_UpdateCargoStatusArrays_Node5{"The system updates cargo status
arrays"}:::decision N_UpdateCargoStatusArrays_Node5_action["All cargo records in the group have
their status arrays updated to
reflect released status and
notification completion"]:::main N_UpdateCargoStatusArrays_Node5 -- Yes --> N_UpdateCargoStatusArrays_Node5_action N_UpdateCargoStatusArrays_Node5_action --> E_UpdateCargoStatusArrays N_UpdateCargoStatusArrays_Node4 -- No --> N_UpdateCargoStatusArrays_Node5 N_UpdateCargoStatusArrays_Node5 -- No --> E_UpdateCargoStatusArrays
File: GCX016E.cbl
GIVEN: Arrival date information has been cleared from cargo record
WHEN: Status array processing is performed
THEN:
  • System updates cargo status arrays to remove arrival-related status entries
  • Recalculate current status
File: GCX016E.cbl
GIVEN: A cargo export has been cancelled and previous status has been restored
WHEN: The system updates status tracking arrays
THEN:
  • The s09 status arrays are updated to remove export-related status entries
  • Add cancellation status information
File: GCX016E.cbl
GIVEN: Cancel release processing is complete and action is logged
WHEN: Status array update is performed
THEN:
  • The system updates s09a status arrays to reflect cancel release status
  • Removes previous release indicators
File: GCX016E.cbl
GIVEN: All bond information has been cleared from the cargo record
WHEN: The system updates the cargo status arrays
THEN:
  • The status array is updated with disposition code 95
  • Appropriate sequence numbers to track the bond cancellation
File: GCX016E.cbl
GIVEN: Arrival or export status changes have been processed
WHEN: The system finalizes the status management
THEN:
  • The cargo status arrays are updated with the new arrival
  • Export status information
File: GCX016E.cbl
GIVEN: Release notification has been sent successfully
WHEN: The system updates cargo status arrays
THEN:
  • All cargo records in the group have their status arrays updated to reflect released status
  • Notification completion
βœ“ Consolidated Acceptance Criteria
  • Disposition code processing is performed → system removes all arrival-related disposition codes 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_RemoveArrivalDispositionCodes(["Start Step"]) E_RemoveArrivalDispositionCodes(["End Step"]) N_RemoveArrivalDispositionCodes_Node0{"Disposition code processing is
performed"}:::decision N_RemoveArrivalDispositionCodes_Node0_action["System removes all arrival-related
disposition codes from cargo status
array"]:::main N_RemoveArrivalDispositionCodes_Node0 -- Yes --> N_RemoveArrivalDispositionCodes_Node0_action N_RemoveArrivalDispositionCodes_Node0_action --> E_RemoveArrivalDispositionCodes S_RemoveArrivalDispositionCodes --> N_RemoveArrivalDispositionCodes_Node0 N_RemoveArrivalDispositionCodes_Node0 -- No --> E_RemoveArrivalDispositionCodes
File: GCX016E.cbl
GIVEN: Cargo status arrays have been updated for cancellation
WHEN: Disposition code processing is performed
THEN: System removes all arrival-related disposition codes from cargo status array
βœ“ Consolidated Acceptance Criteria
  • Bond information restoration is processed → system restores the cargo's previous bond number and related bond information that existed before 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_RestorePreviousBondInformation(["Start Step"]) E_RestorePreviousBondInformation(["End Step"]) N_RestorePreviousBondInformation_Node0{"Bond information restoration is
processed"}:::decision N_RestorePreviousBondInformation_Node0_action["System restores the cargo s
previous bond number and related
bond information that existed before
arrival processing"]:::main N_RestorePreviousBondInformation_Node0 -- Yes --> N_RestorePreviousBondInformation_Node0_action N_RestorePreviousBondInformation_Node0_action --> E_RestorePreviousBondInformation S_RestorePreviousBondInformation --> N_RestorePreviousBondInformation_Node0 N_RestorePreviousBondInformation_Node0 -- No --> E_RestorePreviousBondInformation
File: GCX016E.cbl
GIVEN: Arrival disposition codes have been removed from cargo
WHEN: Bond information restoration is processed
THEN:
  • System restores the cargo's previous bond number
  • Related bond information that existed before arrival processing
βœ“ Consolidated Acceptance Criteria
  • Cargo age calculation is performed → system recalculates cargo age using original entry date and current date, excluding the cancelled arrival period
  • Cargo age recalculation is required → the system recalculates cargo age using the restored bond start dates
  • The system completes the status change processing → the system recalculates the cargo age based on 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_RecalculateCargoAge(["Start Step"]) E_RecalculateCargoAge(["End Step"]) N_RecalculateCargoAge_Node0{"Cargo age calculation is performed"}:::decision N_RecalculateCargoAge_Node0_action["System recalculates cargo age using
original entry date and current
date, excluding the cancelled
arrival period"]:::main N_RecalculateCargoAge_Node0 -- Yes --> N_RecalculateCargoAge_Node0_action N_RecalculateCargoAge_Node0_action --> E_RecalculateCargoAge S_RecalculateCargoAge --> N_RecalculateCargoAge_Node0 N_RecalculateCargoAge_Node1{"Cargo age recalculation is required"}:::decision N_RecalculateCargoAge_Node1_action["The system recalculates cargo age
using the restored bond start dates"]:::main N_RecalculateCargoAge_Node1 -- Yes --> N_RecalculateCargoAge_Node1_action N_RecalculateCargoAge_Node1_action --> E_RecalculateCargoAge N_RecalculateCargoAge_Node0 -- No --> N_RecalculateCargoAge_Node1 N_RecalculateCargoAge_Node2{"The system completes the status
change processing"}:::decision N_RecalculateCargoAge_Node2_action["The system recalculates the cargo
age based on the updated information"]:::main N_RecalculateCargoAge_Node2 -- Yes --> N_RecalculateCargoAge_Node2_action N_RecalculateCargoAge_Node2_action --> E_RecalculateCargoAge N_RecalculateCargoAge_Node1 -- No --> N_RecalculateCargoAge_Node2 N_RecalculateCargoAge_Node2 -- No --> E_RecalculateCargoAge
File: GCX016E.cbl
GIVEN: Previous bond information has been restored to cargo
WHEN: Cargo age calculation is performed
THEN:
  • System recalculates cargo age using original entry date
  • Current date, excluding the cancelled arrival period
File: GCX016E.cbl
GIVEN: Bond information has been restored for a cargo
WHEN: Cargo age recalculation is required
THEN: The system recalculates cargo age using the restored bond start dates
File: GCX016E.cbl
GIVEN: A cargo status has been changed due to cancellation and dates have been updated
WHEN: The system completes the status change processing
THEN: The system recalculates the cargo age based on the updated information
βœ“ Consolidated Acceptance Criteria
  • System checks for related cargo records → system identifies if multiple cargo records exist with the same car ID and waybill number and processes them as a batch if found, otherwise processes single 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_MultipleCargoRecordswithSameCarWaybill(["Start Step"]) E_MultipleCargoRecordswithSameCarWaybill(["End Step"]) N_MultipleCargoRecordswithSameCarWaybill_Node0{"System checks for related cargo
records"}:::decision N_MultipleCargoRecordswithSameCarWaybill_Node0_action["System identifies if multiple cargo
records exist with the same car ID
and waybill number and processes
them as a batch if found, otherwise
processes single cargo"]:::main N_MultipleCargoRecordswithSameCarWaybill_Node0 -- Yes --> N_MultipleCargoRecordswithSameCarWaybill_Node0_action N_MultipleCargoRecordswithSameCarWaybill_Node0_action --> E_MultipleCargoRecordswithSameCarWaybill S_MultipleCargoRecordswithSameCarWaybill --> N_MultipleCargoRecordswithSameCarWaybill_Node0 N_MultipleCargoRecordswithSameCarWaybill_Node0 -- No --> E_MultipleCargoRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: Destination index has been cleared for the cargo
WHEN: System checks for related cargo records
THEN:
  • System identifies if multiple cargo records exist with the same car id
  • Waybill number
  • Processes them as a batch if found, otherwise processes single cargo
βœ“ Consolidated Acceptance Criteria
  • Batch processing is initiated → system applies the same arrival cancellation processing to all related cargo records with matching car ID and waybill 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_ProcessAllRelatedCargoRecords(["Start Step"]) E_ProcessAllRelatedCargoRecords(["End Step"]) N_ProcessAllRelatedCargoRecords_Node0{"Batch processing is initiated"}:::decision N_ProcessAllRelatedCargoRecords_Node0_action["System applies the same arrival
cancellation processing to all
related cargo records with matching
car ID and waybill number"]:::main N_ProcessAllRelatedCargoRecords_Node0 -- Yes --> N_ProcessAllRelatedCargoRecords_Node0_action N_ProcessAllRelatedCargoRecords_Node0_action --> E_ProcessAllRelatedCargoRecords S_ProcessAllRelatedCargoRecords --> N_ProcessAllRelatedCargoRecords_Node0 N_ProcessAllRelatedCargoRecords_Node0 -- No --> E_ProcessAllRelatedCargoRecords
File: GCX016E.cbl
GIVEN: Multiple cargo records with same car ID and waybill have been identified
WHEN: Batch processing is initiated
THEN:
  • System applies the same arrival cancellation processing to all related cargo records with matching car id
  • Waybill number
βœ“ Consolidated Acceptance Criteria
  • Verification process is executed → system confirms that all cargo records with matching car ID and waybill have been successfully updated with cancellation 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_VerifyAllRecordsUpdated(["Start Step"]) E_VerifyAllRecordsUpdated(["End Step"]) N_VerifyAllRecordsUpdated_Node0{"Verification process is executed"}:::decision N_VerifyAllRecordsUpdated_Node0_action["System confirms that all cargo
records with matching car ID and
waybill have been successfully
updated with cancellation changes"]:::main N_VerifyAllRecordsUpdated_Node0 -- Yes --> N_VerifyAllRecordsUpdated_Node0_action N_VerifyAllRecordsUpdated_Node0_action --> E_VerifyAllRecordsUpdated S_VerifyAllRecordsUpdated --> N_VerifyAllRecordsUpdated_Node0 N_VerifyAllRecordsUpdated_Node0 -- No --> E_VerifyAllRecordsUpdated
File: GCX016E.cbl
GIVEN: All related cargo records have been processed for arrival cancellation
WHEN: Verification process is executed
THEN:
  • System confirms that all cargo records with matching car id
  • Waybill have been successfully updated with cancellation changes
βœ“ Consolidated Acceptance Criteria
  • Notification generation is triggered → system creates arrival cancellation notification 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_GenerateArrivalCancellationNotification(["Start Step"]) E_GenerateArrivalCancellationNotification(["End Step"]) N_GenerateArrivalCancellationNotification_Node0{"Notification generation is
triggered"}:::decision N_GenerateArrivalCancellationNotification_Node0_action["System creates arrival cancellation
notification message with cargo
details and cancellation information"]:::main N_GenerateArrivalCancellationNotification_Node0 -- Yes --> N_GenerateArrivalCancellationNotification_Node0_action N_GenerateArrivalCancellationNotification_Node0_action --> E_GenerateArrivalCancellationNotification S_GenerateArrivalCancellationNotification --> N_GenerateArrivalCancellationNotification_Node0 N_GenerateArrivalCancellationNotification_Node0 -- No --> E_GenerateArrivalCancellationNotification
File: GCX016E.cbl
GIVEN: All cargo records have been verified as updated OR single cargo processing is complete
WHEN: Notification generation is triggered
THEN:
  • System creates arrival cancellation notification message with cargo details
  • Cancellation information
βœ“ Consolidated Acceptance Criteria
  • Audit trail processing is performed → system records arrival cancellation transaction in audit trail with timestamp, user information, and affected cargo details
  • The system updates the audit trail → the system records the arrival processing in the audit trail with timestamp, user information, 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_UpdateAuditTrail(["Start Step"]) E_UpdateAuditTrail(["End Step"]) N_UpdateAuditTrail_Node0{"Audit trail processing is performed"}:::decision N_UpdateAuditTrail_Node0_action["System records arrival cancellation
transaction in audit trail with
timestamp, user information, and
affected cargo details"]:::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 updates the audit trail"}:::decision N_UpdateAuditTrail_Node1_action["The system records the arrival
processing in the audit trail with
timestamp, user information, and
processing results"]:::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: GCX016E.cbl
GIVEN: Arrival cancellation notification has been generated
WHEN: Audit trail processing is performed
THEN: System records arrival cancellation transaction in audit trail with timestamp, user information, and affected cargo details
File: GCX016E.cbl
GIVEN: An arrival action has been logged
WHEN: The system updates the audit trail
THEN: The system records the arrival processing in the audit trail with timestamp, user information, and processing results
βœ“ Consolidated Acceptance Criteria
  • Merlin message transmission is initiated → system sends arrival cancellation notification message through Merlin system 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_SendMerlinNotificationMessage(["Start Step"]) E_SendMerlinNotificationMessage(["End Step"]) N_SendMerlinNotificationMessage_Node0{"Merlin message transmission is
initiated"}:::decision N_SendMerlinNotificationMessage_Node0_action["System sends arrival cancellation
notification message through Merlin
system to appropriate recipients"]:::main N_SendMerlinNotificationMessage_Node0 -- Yes --> N_SendMerlinNotificationMessage_Node0_action N_SendMerlinNotificationMessage_Node0_action --> E_SendMerlinNotificationMessage S_SendMerlinNotificationMessage --> N_SendMerlinNotificationMessage_Node0 N_SendMerlinNotificationMessage_Node0 -- No --> E_SendMerlinNotificationMessage
File: GCX016E.cbl
GIVEN: Audit trail has been updated with cancellation transaction
WHEN: Merlin message transmission is initiated
THEN: System sends arrival cancellation notification message through Merlin system to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancel export request → the system validates the request parameters and ensures the cargo exists and is 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_ValidateCancelExportRequest(["Start Step"]) E_ValidateCancelExportRequest(["End Step"]) N_ValidateCancelExportRequest_Node0{"The system processes the cancel
export request"}:::decision N_ValidateCancelExportRequest_Node0_action["The system validates the request
parameters and ensures the cargo
exists and is accessible"]:::main N_ValidateCancelExportRequest_Node0 -- Yes --> N_ValidateCancelExportRequest_Node0_action N_ValidateCancelExportRequest_Node0_action --> E_ValidateCancelExportRequest S_ValidateCancelExportRequest --> N_ValidateCancelExportRequest_Node0 N_ValidateCancelExportRequest_Node0 -- No --> E_ValidateCancelExportRequest
File: GCX016E.cbl
GIVEN: A cancel export disposition code is received for a cargo
WHEN: The system processes the cancel export request
THEN:
  • The system validates the request parameters
  • Ensures the cargo exists
  • Is accessible
βœ“ Consolidated Acceptance Criteria
  • The system checks the current cargo status → the system determines if export status is currently active and proceeds only if export 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_ExportStatusCurrentlyActive(["Start Step"]) E_ExportStatusCurrentlyActive(["End Step"]) N_ExportStatusCurrentlyActive_Node0{"The system checks the current cargo
status"}:::decision N_ExportStatusCurrentlyActive_Node0_action["The system determines if export
status is currently active and
proceeds only if export status
exists"]:::main N_ExportStatusCurrentlyActive_Node0 -- Yes --> N_ExportStatusCurrentlyActive_Node0_action N_ExportStatusCurrentlyActive_Node0_action --> E_ExportStatusCurrentlyActive S_ExportStatusCurrentlyActive --> N_ExportStatusCurrentlyActive_Node0 N_ExportStatusCurrentlyActive_Node0 -- No --> E_ExportStatusCurrentlyActive
File: GCX016E.cbl
GIVEN: A cancel export request is being processed for a cargo
WHEN: The system checks the current cargo status
THEN:
  • The system determines if export status is currently active
  • Proceeds only if export status exists
βœ“ Consolidated Acceptance Criteria
  • The system needs to process the export cancellation → the system retrieves current export date, destination information, and export 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_RetrieveCurrentExportInformation(["Start Step"]) E_RetrieveCurrentExportInformation(["End Step"]) N_RetrieveCurrentExportInformation_Node0{"The system needs to process the
export cancellation"}:::decision N_RetrieveCurrentExportInformation_Node0_action["The system retrieves current export
date, destination information, and
export status flags from the cargo
record"]:::main N_RetrieveCurrentExportInformation_Node0 -- Yes --> N_RetrieveCurrentExportInformation_Node0_action N_RetrieveCurrentExportInformation_Node0_action --> E_RetrieveCurrentExportInformation S_RetrieveCurrentExportInformation --> N_RetrieveCurrentExportInformation_Node0 N_RetrieveCurrentExportInformation_Node0 -- No --> E_RetrieveCurrentExportInformation
File: GCX016E.cbl
GIVEN: A cargo has active export status that needs to be cancelled
WHEN: The system needs to process the export cancellation
THEN: The system retrieves current export date, destination information, and export status flags from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system clears the export status → the export status flag is set to inactive or cleared 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_ClearExportStatusFlag(["Start Step"]) E_ClearExportStatusFlag(["End Step"]) N_ClearExportStatusFlag_Node0{"The system clears the export status"}:::decision N_ClearExportStatusFlag_Node0_action["The export status flag is set to
inactive or cleared in 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: GCX016E.cbl
GIVEN: A cargo export cancellation is being processed and current export information has been retrieved
WHEN: The system clears the export status
THEN: The export status flag is set to inactive or cleared in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system resets export date information → export date fields are cleared or reset to null values 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_ResetExportDateFields(["Start Step"]) E_ResetExportDateFields(["End Step"]) N_ResetExportDateFields_Node0{"The system resets export date
information"}:::decision N_ResetExportDateFields_Node0_action["Export date fields are cleared or
reset to null values in the cargo
record"]:::main N_ResetExportDateFields_Node0 -- Yes --> N_ResetExportDateFields_Node0_action N_ResetExportDateFields_Node0_action --> E_ResetExportDateFields S_ResetExportDateFields --> N_ResetExportDateFields_Node0 N_ResetExportDateFields_Node0 -- No --> E_ResetExportDateFields
File: GCX016E.cbl
GIVEN: A cargo export status is being cancelled and export status flag has been cleared
WHEN: The system resets export date information
THEN: Export date fields are cleared or reset to null values in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system restores the previous cargo status → the cargo status is reverted to the status it had before export processing, typically 'ACK' or previous processing status
  • The system initiates error recovery procedures → the cargo status is restored to its previous state from backup 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_RestorePreviousCargoStatus(["Start Step"]) E_RestorePreviousCargoStatus(["End Step"]) N_RestorePreviousCargoStatus_Node0{"The system restores the previous
cargo status"}:::decision N_RestorePreviousCargoStatus_Node0_action["The cargo status is reverted to the
status it had before export
processing, typically ACK or
previous processing status"]:::main N_RestorePreviousCargoStatus_Node0 -- Yes --> N_RestorePreviousCargoStatus_Node0_action N_RestorePreviousCargoStatus_Node0_action --> E_RestorePreviousCargoStatus S_RestorePreviousCargoStatus --> N_RestorePreviousCargoStatus_Node0 N_RestorePreviousCargoStatus_Node1{"The system initiates error recovery
procedures"}:::decision N_RestorePreviousCargoStatus_Node1_action["The cargo status is restored to its
previous state from backup storage"]:::exclusion N_RestorePreviousCargoStatus_Node1 -- Yes -->|Alternative| N_RestorePreviousCargoStatus_Node1_action N_RestorePreviousCargoStatus_Node1_action --> E_RestorePreviousCargoStatus N_RestorePreviousCargoStatus_Node0 -- No --> N_RestorePreviousCargoStatus_Node1 N_RestorePreviousCargoStatus_Node1 -- No --> E_RestorePreviousCargoStatus
File: GCX016E.cbl
GIVEN: A cargo export has been cancelled and destination index has been cleared
WHEN: The system restores the previous cargo status
THEN: The cargo status is reverted to the status it had before export processing, typically 'ACK' or previous processing status
File: GCX016E.cbl
GIVEN: An error has been detected during cargo status updates and previous status backup exists
WHEN: The system initiates error recovery procedures
THEN: The cargo status is restored to its previous state from backup storage
βœ“ Consolidated Acceptance Criteria
  • The system generates export cancellation notification → a notification message is created containing cargo details, cancellation information, and relevant business data for 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_GenerateCancelExportNotification(["Start Step"]) E_GenerateCancelExportNotification(["End Step"]) N_GenerateCancelExportNotification_Node0{"The system generates export
cancellation notification"}:::decision N_GenerateCancelExportNotification_Node0_action["A notification message is created
containing cargo details,
cancellation information, and
relevant business data for
stakeholders"]:::main N_GenerateCancelExportNotification_Node0 -- Yes --> N_GenerateCancelExportNotification_Node0_action N_GenerateCancelExportNotification_Node0_action --> E_GenerateCancelExportNotification S_GenerateCancelExportNotification --> N_GenerateCancelExportNotification_Node0 N_GenerateCancelExportNotification_Node0 -- No --> E_GenerateCancelExportNotification
File: GCX016E.cbl
GIVEN: A cargo export has been cancelled and status arrays have been updated
WHEN: The system generates export cancellation notification
THEN: A notification message is created containing cargo details, cancellation information, and relevant business data for stakeholders
βœ“ Consolidated Acceptance Criteria
  • The system logs the cancellation action → the export cancellation action is recorded with timestamp, user information, cargo details, and cancellation reason 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_LogCancelExportAction(["Start Step"]) E_LogCancelExportAction(["End Step"]) N_LogCancelExportAction_Node0{"The system logs the cancellation
action"}:::decision N_LogCancelExportAction_Node0_action["The export cancellation action is
recorded with timestamp, user
information, cargo details, and
cancellation reason for audit trail"]:::main N_LogCancelExportAction_Node0 -- Yes --> N_LogCancelExportAction_Node0_action N_LogCancelExportAction_Node0_action --> E_LogCancelExportAction S_LogCancelExportAction --> N_LogCancelExportAction_Node0 N_LogCancelExportAction_Node0 -- No --> E_LogCancelExportAction
File: GCX016E.cbl
GIVEN: An export cancellation notification has been generated
WHEN: The system logs the cancellation action
THEN: The export cancellation action is recorded with timestamp, user information, cargo details, and cancellation reason for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record in the database → the cargo record is updated in the database with all export cancellation changes, including cleared export status, reset dates, restored previous status, and updated status arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 cargo record
in the database"}:::decision N_UpdateCargoRecordinDatabase_Node0_action["The cargo record is updated in the
database with all export
cancellation changes, including
cleared export status, reset dates,
restored previous status, and
updated status arrays"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node0 -- No --> E_UpdateCargoRecordinDatabase
File: GCX016E.cbl
GIVEN: All export cancellation processing has been completed and notifications sent
WHEN: The system updates the cargo record in the database
THEN: The cargo record is updated in the database with all export cancellation changes, including cleared export status, reset dates, restored previous status, and updated status arrays
βœ“ Consolidated Acceptance Criteria
  • The release quantity management process is initiated → the current release quantity is retrieved from the cargo record and stored for processing
  • Release quantity impact messaging is initiated → the current cargo release quantity is retrieved and stored for impact calculation
  • The system needs to process disposition code quantity impacts → the current cargo release quantity is retrieved and made available for processing
  • Release quantity impact analysis is initiated → the current cargo release quantity is retrieved and stored for comparison calculations
  • The system needs to calculate quantity impact for disposition code processing → the current cargo release quantity is retrieved and stored for comparison 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_RetrieveCurrentCargoReleaseQuantity(["Start Step"]) E_RetrieveCurrentCargoReleaseQuantity(["End Step"]) N_RetrieveCurrentCargoReleaseQuantity_Node0{"The release quantity management
process is initiated"}:::decision N_RetrieveCurrentCargoReleaseQuantity_Node0_action["The current release quantity is
retrieved from the cargo record and
stored for processing"]:::main N_RetrieveCurrentCargoReleaseQuantity_Node0 -- Yes --> N_RetrieveCurrentCargoReleaseQuantity_Node0_action N_RetrieveCurrentCargoReleaseQuantity_Node0_action --> E_RetrieveCurrentCargoReleaseQuantity S_RetrieveCurrentCargoReleaseQuantity --> N_RetrieveCurrentCargoReleaseQuantity_Node0 N_RetrieveCurrentCargoReleaseQuantity_Node1{"Release quantity impact messaging
is initiated"}:::decision N_RetrieveCurrentCargoReleaseQuantity_Node1_action["The current cargo release quantity
is retrieved and stored for impact
calculation"]:::main N_RetrieveCurrentCargoReleaseQuantity_Node1 -- Yes --> N_RetrieveCurrentCargoReleaseQuantity_Node1_action N_RetrieveCurrentCargoReleaseQuantity_Node1_action --> E_RetrieveCurrentCargoReleaseQuantity N_RetrieveCurrentCargoReleaseQuantity_Node0 -- No --> N_RetrieveCurrentCargoReleaseQuantity_Node1 N_RetrieveCurrentCargoReleaseQuantity_Node2{"The system needs to process
disposition code quantity impacts"}:::decision N_RetrieveCurrentCargoReleaseQuantity_Node2_action["The current cargo release quantity
is retrieved and made available for
processing"]:::main N_RetrieveCurrentCargoReleaseQuantity_Node2 -- Yes --> N_RetrieveCurrentCargoReleaseQuantity_Node2_action N_RetrieveCurrentCargoReleaseQuantity_Node2_action --> E_RetrieveCurrentCargoReleaseQuantity N_RetrieveCurrentCargoReleaseQuantity_Node1 -- No --> N_RetrieveCurrentCargoReleaseQuantity_Node2 N_RetrieveCurrentCargoReleaseQuantity_Node3{"Release quantity impact analysis is
initiated"}:::decision N_RetrieveCurrentCargoReleaseQuantity_Node3_action["The current cargo release quantity
is retrieved and stored for
comparison calculations"]:::main N_RetrieveCurrentCargoReleaseQuantity_Node3 -- Yes --> N_RetrieveCurrentCargoReleaseQuantity_Node3_action N_RetrieveCurrentCargoReleaseQuantity_Node3_action --> E_RetrieveCurrentCargoReleaseQuantity N_RetrieveCurrentCargoReleaseQuantity_Node2 -- No --> N_RetrieveCurrentCargoReleaseQuantity_Node3 N_RetrieveCurrentCargoReleaseQuantity_Node4{"The system needs to calculate
quantity impact for disposition code
processing"}:::decision N_RetrieveCurrentCargoReleaseQuantity_Node4_action["The current cargo release quantity
is retrieved and stored for
comparison calculations"]:::main N_RetrieveCurrentCargoReleaseQuantity_Node4 -- Yes --> N_RetrieveCurrentCargoReleaseQuantity_Node4_action N_RetrieveCurrentCargoReleaseQuantity_Node4_action --> E_RetrieveCurrentCargoReleaseQuantity N_RetrieveCurrentCargoReleaseQuantity_Node3 -- No --> N_RetrieveCurrentCargoReleaseQuantity_Node4 N_RetrieveCurrentCargoReleaseQuantity_Node4 -- No --> E_RetrieveCurrentCargoReleaseQuantity
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The release quantity management process is initiated
THEN:
  • The current release quantity is retrieved from the cargo record
  • Stored for processing
File: GCX016E.cbl
GIVEN: A cargo record exists with release quantity information
WHEN: Release quantity impact messaging is initiated
THEN:
  • The current cargo release quantity is retrieved
  • Stored for impact calculation
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The system needs to process disposition code quantity impacts
THEN:
  • The current cargo release quantity is retrieved
  • Made available for processing
File: GCX016E.cbl
GIVEN: A cargo record exists with release quantity information
WHEN: Release quantity impact analysis is initiated
THEN:
  • The current cargo release quantity is retrieved
  • Stored for comparison calculations
File: GCX016E.cbl
GIVEN: A cargo record exists with release quantity information
WHEN: The system needs to calculate quantity impact for disposition code processing
THEN:
  • The current cargo release quantity is retrieved
  • Stored for comparison calculations
βœ“ Consolidated Acceptance Criteria
  • Processing release quantity calculations → the disposition code is extracted from the status array for further processing
  • The system processes quantity impacts for disposition codes → each disposition code is extracted from the status array for 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_GetDispositionCodefromStatusArray(["Start Step"]) E_GetDispositionCodefromStatusArray(["End Step"]) N_GetDispositionCodefromStatusArray_Node0{"Processing release quantity
calculations"}:::decision N_GetDispositionCodefromStatusArray_Node0_action["The disposition code is extracted
from the status array for further
processing"]:::main N_GetDispositionCodefromStatusArray_Node0 -- Yes --> N_GetDispositionCodefromStatusArray_Node0_action N_GetDispositionCodefromStatusArray_Node0_action --> E_GetDispositionCodefromStatusArray S_GetDispositionCodefromStatusArray --> N_GetDispositionCodefromStatusArray_Node0 N_GetDispositionCodefromStatusArray_Node1{"The system processes quantity
impacts for disposition codes"}:::decision N_GetDispositionCodefromStatusArray_Node1_action["Each disposition code is extracted
from the status array for evaluation"]:::main N_GetDispositionCodefromStatusArray_Node1 -- Yes --> N_GetDispositionCodefromStatusArray_Node1_action N_GetDispositionCodefromStatusArray_Node1_action --> E_GetDispositionCodefromStatusArray N_GetDispositionCodefromStatusArray_Node0 -- No --> N_GetDispositionCodefromStatusArray_Node1 N_GetDispositionCodefromStatusArray_Node1 -- No --> E_GetDispositionCodefromStatusArray
File: GCX016E.cbl
GIVEN: A cargo status array (S09A) contains disposition codes
WHEN: Processing release quantity calculations
THEN: The disposition code is extracted from the status array for further processing
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system processes quantity impacts for disposition codes
THEN: Each disposition code is extracted from the status array for evaluation
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code was found → if the disposition code is not found, an error message is generated for unknown disposition code
  • The system checks if the disposition code exists in the DC table → processing continues if found, 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_DispositionCodeFound(["Start Step"]) E_DispositionCodeFound(["End Step"]) N_DispositionCodeFound_Node0{"The system checks if the
disposition code was found"}:::decision N_DispositionCodeFound_Node0_action["If the disposition code is not
found, an error message is generated
for unknown disposition code"]:::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 exists in the DC
table"}:::decision N_DispositionCodeFound_Node1_action["Processing continues if found,
otherwise an error is generated"]:::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: GCX016E.cbl
GIVEN: A disposition code lookup has been performed in the DC table
WHEN: The system checks if the disposition code was found
THEN: If the disposition code is not found, an error message is generated for unknown disposition code
File: GCX016E.cbl
GIVEN: A disposition code is being processed for quantity impact
WHEN: The system checks if the disposition code exists in the DC table
THEN: Processing continues if found, otherwise an error is generated
βœ“ Consolidated Acceptance Criteria
  • The system processes the disposition code → the action type is retrieved from the DC table configuration
  • If the disposition code action requirements → the action type is classified as Add, Subtract, or Status Info Only based on disposition code characteristics
  • If the disposition code action requirements → the action type is determined as either Add, Subtract, or No Action based on the disposition 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_GetDispositionCodeActionType(["Start Step"]) E_GetDispositionCodeActionType(["End Step"]) N_GetDispositionCodeActionType_Node0{"The system processes the
disposition code"}:::decision N_GetDispositionCodeActionType_Node0_action["The action type is retrieved from
the DC table configuration"]:::main N_GetDispositionCodeActionType_Node0 -- Yes --> N_GetDispositionCodeActionType_Node0_action N_GetDispositionCodeActionType_Node0_action --> E_GetDispositionCodeActionType S_GetDispositionCodeActionType --> N_GetDispositionCodeActionType_Node0 N_GetDispositionCodeActionType_Node1{"The system evaluates the
disposition code action requirements"}:::decision N_GetDispositionCodeActionType_Node1_action["The action type is classified as
Add, Subtract, or Status Info Only
based on disposition code
characteristics"]:::main N_GetDispositionCodeActionType_Node1 -- Yes --> N_GetDispositionCodeActionType_Node1_action N_GetDispositionCodeActionType_Node1_action --> E_GetDispositionCodeActionType N_GetDispositionCodeActionType_Node0 -- No --> N_GetDispositionCodeActionType_Node1 N_GetDispositionCodeActionType_Node2{"The system evaluates the
disposition code action requirements"}:::decision N_GetDispositionCodeActionType_Node2_action["The action type is determined as
either Add, Subtract, or No Action
based on the disposition code
characteristics"]:::main N_GetDispositionCodeActionType_Node2 -- Yes --> N_GetDispositionCodeActionType_Node2_action N_GetDispositionCodeActionType_Node2_action --> E_GetDispositionCodeActionType N_GetDispositionCodeActionType_Node1 -- No --> N_GetDispositionCodeActionType_Node2 N_GetDispositionCodeActionType_Node2 -- No --> E_GetDispositionCodeActionType
File: GCX016E.cbl
GIVEN: A valid disposition code exists in the DC table
WHEN: The system processes the disposition code
THEN: The action type is retrieved from the DC table configuration
File: GCX016E.cbl
GIVEN: A disposition code is being processed
WHEN: The system evaluates the disposition code action requirements
THEN: The action type is classified as Add, Subtract, or Status Info Only based on disposition code characteristics
File: GCX016E.cbl
GIVEN: A disposition code is being processed for a cargo
WHEN: The system evaluates the disposition code action requirements
THEN: The action type is determined as either Add, Subtract, or No Action based on the disposition code characteristics
βœ“ Consolidated Acceptance Criteria
  • The system processes the quantity impact → if action type is 'Add', quantity is added to release quantity; if action type is 'Subtract', quantity is subtracted from release quantity; if action type is 'Status Info Only', no quantity change is made
  • If the action type for quantity impact → the system routes to Add, Subtract, or No Quantity Impact processing based on the 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_ActionType(["Start Step"]) E_ActionType(["End Step"]) N_ActionType_Node0{"The system processes the quantity
impact"}:::decision N_ActionType_Node0_action["If action type is Add , quantity is
added to release quantity if action
type is Subtract , quantity is
subtracted from release quantity if
action type is Status Info Only , no
quantity change is made"]:::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 impact"}:::decision N_ActionType_Node1_action["The system routes to Add, Subtract,
or No Quantity Impact processing
based on the action type"]:::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: GCX016E.cbl
GIVEN: A disposition code action type has been determined
WHEN: The system processes the quantity impact
THEN: If action type is 'Add', quantity is added to release quantity; if action type is 'Subtract', quantity is subtracted from release quantity; if action type is 'Status Info Only', no quantity change is made
File: GCX016E.cbl
GIVEN: A disposition code has a defined action type
WHEN: The system evaluates the action type for quantity impact
THEN: The system routes to Add, Subtract, or No Quantity Impact processing based on the action type
βœ“ Consolidated Acceptance Criteria
  • The quantity impact is processed → the disposition code quantity is added to the current release quantity
  • The action type is determined to be addition → the calculated amount is added to the current release quantity
  • The system processes the quantity impact → the disposition code quantity is added to the current release quantity
  • The quantity impact calculation is performed → the disposition code quantity is added 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 quantity impact is processed"}:::decision N_AddtoReleaseQuantity_Node0_action["The disposition code quantity is
added to the current release
quantity"]:::main N_AddtoReleaseQuantity_Node0 -- Yes --> N_AddtoReleaseQuantity_Node0_action N_AddtoReleaseQuantity_Node0_action --> E_AddtoReleaseQuantity S_AddtoReleaseQuantity --> N_AddtoReleaseQuantity_Node0 N_AddtoReleaseQuantity_Node1{"The action type is determined to be
addition"}:::decision N_AddtoReleaseQuantity_Node1_action["The calculated amount is added to
the current release quantity"]:::main N_AddtoReleaseQuantity_Node1 -- Yes --> N_AddtoReleaseQuantity_Node1_action N_AddtoReleaseQuantity_Node1_action --> E_AddtoReleaseQuantity N_AddtoReleaseQuantity_Node0 -- No --> N_AddtoReleaseQuantity_Node1 N_AddtoReleaseQuantity_Node2{"The system processes the quantity
impact"}:::decision N_AddtoReleaseQuantity_Node2_action["The disposition code quantity is
added to the current release
quantity"]:::main N_AddtoReleaseQuantity_Node2 -- Yes --> N_AddtoReleaseQuantity_Node2_action N_AddtoReleaseQuantity_Node2_action --> E_AddtoReleaseQuantity N_AddtoReleaseQuantity_Node1 -- No --> N_AddtoReleaseQuantity_Node2 N_AddtoReleaseQuantity_Node3{"The quantity impact calculation is
performed"}:::decision N_AddtoReleaseQuantity_Node3_action["The disposition code quantity is
added to the current cargo release
quantity"]:::main N_AddtoReleaseQuantity_Node3 -- Yes --> N_AddtoReleaseQuantity_Node3_action N_AddtoReleaseQuantity_Node3_action --> E_AddtoReleaseQuantity N_AddtoReleaseQuantity_Node2 -- No --> N_AddtoReleaseQuantity_Node3 N_AddtoReleaseQuantity_Node3 -- No --> E_AddtoReleaseQuantity
File: GCX016E.cbl
GIVEN: A disposition code has action type 'Add'
WHEN: The quantity impact is processed
THEN: The disposition code quantity is added to the current release quantity
File: GCX016E.cbl
GIVEN: A disposition code that increases release quantity and calculated impact amount
WHEN: The action type is determined to be addition
THEN: The calculated amount is added to the current release quantity
File: GCX016E.cbl
GIVEN: A disposition code has an 'Add' action type
WHEN: The system processes the quantity impact
THEN: The disposition code quantity is added to the current release quantity
File: GCX016E.cbl
GIVEN: A disposition code with Add Action type is being processed
WHEN: The quantity impact calculation is performed
THEN: The disposition code quantity is added to the current cargo release quantity
βœ“ Consolidated Acceptance Criteria
  • The quantity impact is processed → the disposition code quantity is subtracted from the current release quantity
  • The action type is determined to be subtraction → the calculated amount is subtracted from the current release quantity
  • The system processes the quantity impact → the disposition code quantity is subtracted from the current release quantity
  • The quantity impact calculation is performed → the disposition code quantity is subtracted 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 quantity impact is processed"}:::decision N_SubtractfromReleaseQuantity_Node0_action["The disposition code quantity is
subtracted from the current release
quantity"]:::main N_SubtractfromReleaseQuantity_Node0 -- Yes --> N_SubtractfromReleaseQuantity_Node0_action N_SubtractfromReleaseQuantity_Node0_action --> E_SubtractfromReleaseQuantity S_SubtractfromReleaseQuantity --> N_SubtractfromReleaseQuantity_Node0 N_SubtractfromReleaseQuantity_Node1{"The action type is determined to be
subtraction"}:::decision N_SubtractfromReleaseQuantity_Node1_action["The calculated amount is subtracted
from the current release quantity"]:::main N_SubtractfromReleaseQuantity_Node1 -- Yes --> N_SubtractfromReleaseQuantity_Node1_action N_SubtractfromReleaseQuantity_Node1_action --> E_SubtractfromReleaseQuantity N_SubtractfromReleaseQuantity_Node0 -- No --> N_SubtractfromReleaseQuantity_Node1 N_SubtractfromReleaseQuantity_Node2{"The system processes the quantity
impact"}:::decision N_SubtractfromReleaseQuantity_Node2_action["The disposition code quantity is
subtracted from the current release
quantity"]:::main N_SubtractfromReleaseQuantity_Node2 -- Yes --> N_SubtractfromReleaseQuantity_Node2_action N_SubtractfromReleaseQuantity_Node2_action --> E_SubtractfromReleaseQuantity N_SubtractfromReleaseQuantity_Node1 -- No --> N_SubtractfromReleaseQuantity_Node2 N_SubtractfromReleaseQuantity_Node3{"The quantity impact calculation is
performed"}:::decision N_SubtractfromReleaseQuantity_Node3_action["The disposition code quantity is
subtracted from the current cargo
release quantity"]:::main N_SubtractfromReleaseQuantity_Node3 -- Yes --> N_SubtractfromReleaseQuantity_Node3_action N_SubtractfromReleaseQuantity_Node3_action --> E_SubtractfromReleaseQuantity N_SubtractfromReleaseQuantity_Node2 -- No --> N_SubtractfromReleaseQuantity_Node3 N_SubtractfromReleaseQuantity_Node3 -- No --> E_SubtractfromReleaseQuantity
File: GCX016E.cbl
GIVEN: A disposition code has action type 'Subtract'
WHEN: The quantity impact is processed
THEN: The disposition code quantity is subtracted from the current release quantity
File: GCX016E.cbl
GIVEN: A disposition code that decreases release quantity and calculated impact amount
WHEN: The action type is determined to be subtraction
THEN: The calculated amount is subtracted from the current release quantity
File: GCX016E.cbl
GIVEN: A disposition code has a 'Subtract' action type
WHEN: The system processes the quantity impact
THEN: The disposition code quantity is subtracted from the current release quantity
File: GCX016E.cbl
GIVEN: A disposition code with Subtract Action type is being processed
WHEN: The quantity impact calculation is performed
THEN: The disposition code quantity is subtracted from the current cargo release quantity
βœ“ Consolidated Acceptance Criteria
  • The quantity impact is processed → no change is made 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_NoQuantityChange(["Start Step"]) E_NoQuantityChange(["End Step"]) N_NoQuantityChange_Node0{"The quantity impact is processed"}:::decision N_NoQuantityChange_Node0_action["No change is made to the current
release quantity"]:::main N_NoQuantityChange_Node0 -- Yes --> N_NoQuantityChange_Node0_action N_NoQuantityChange_Node0_action --> E_NoQuantityChange S_NoQuantityChange --> N_NoQuantityChange_Node0 N_NoQuantityChange_Node0 -- No --> E_NoQuantityChange
File: GCX016E.cbl
GIVEN: A disposition code has action type 'Status Info Only'
WHEN: The quantity impact is processed
THEN: No change is made to the current release quantity
βœ“ Consolidated Acceptance Criteria
  • The system validates the calculated release quantity → the release quantity is compared against the total cargo quantity 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_ValidateReleaseQuantityAgainstTotalQuantity(["Start Step"]) E_ValidateReleaseQuantityAgainstTotalQuantity(["End Step"]) N_ValidateReleaseQuantityAgainstTotalQuantity_Node0{"The system validates the calculated
release quantity"}:::decision N_ValidateReleaseQuantityAgainstTotalQuantity_Node0_action["The release quantity is compared
against the total cargo quantity for
validation"]:::main N_ValidateReleaseQuantityAgainstTotalQuantity_Node0 -- Yes --> N_ValidateReleaseQuantityAgainstTotalQuantity_Node0_action N_ValidateReleaseQuantityAgainstTotalQuantity_Node0_action --> E_ValidateReleaseQuantityAgainstTotalQuantity S_ValidateReleaseQuantityAgainstTotalQuantity --> N_ValidateReleaseQuantityAgainstTotalQuantity_Node0 N_ValidateReleaseQuantityAgainstTotalQuantity_Node0 -- No --> E_ValidateReleaseQuantityAgainstTotalQuantity
File: GCX016E.cbl
GIVEN: Release quantity has been calculated based on disposition code action
WHEN: The system validates the calculated release quantity
THEN: The release quantity is compared against the total cargo quantity for validation
βœ“ Consolidated Acceptance Criteria
  • The release quantity is validated against total cargo quantity → if release quantity exceeds total quantity, the release quantity is set 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_ReleaseQuantityTotalQuantity(["Start Step"]) E_ReleaseQuantityTotalQuantity(["End Step"]) N_ReleaseQuantityTotalQuantity_Node0{"The release quantity is validated
against total cargo quantity"}:::decision N_ReleaseQuantityTotalQuantity_Node0_action["If release quantity exceeds total
quantity, the release quantity is
set equal to total quantity"]:::main N_ReleaseQuantityTotalQuantity_Node0 -- Yes --> N_ReleaseQuantityTotalQuantity_Node0_action N_ReleaseQuantityTotalQuantity_Node0_action --> E_ReleaseQuantityTotalQuantity S_ReleaseQuantityTotalQuantity --> N_ReleaseQuantityTotalQuantity_Node0 N_ReleaseQuantityTotalQuantity_Node0 -- No --> E_ReleaseQuantityTotalQuantity
File: GCX016E.cbl
GIVEN: A calculated release quantity exists
WHEN: The release quantity is validated against total cargo quantity
THEN: If release quantity exceeds total quantity, the release quantity is set equal to total quantity
βœ“ Consolidated Acceptance Criteria
  • The system applies quantity validation rules → the release quantity is set equal to 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_SetReleaseQuantityTotalQuantity(["Start Step"]) E_SetReleaseQuantityTotalQuantity(["End Step"]) N_SetReleaseQuantityTotalQuantity_Node0{"The system applies quantity
validation rules"}:::decision N_SetReleaseQuantityTotalQuantity_Node0_action["The release quantity is set equal
to the total cargo quantity"]:::main N_SetReleaseQuantityTotalQuantity_Node0 -- Yes --> N_SetReleaseQuantityTotalQuantity_Node0_action N_SetReleaseQuantityTotalQuantity_Node0_action --> E_SetReleaseQuantityTotalQuantity S_SetReleaseQuantityTotalQuantity --> N_SetReleaseQuantityTotalQuantity_Node0 N_SetReleaseQuantityTotalQuantity_Node0 -- No --> E_SetReleaseQuantityTotalQuantity
File: GCX016E.cbl
GIVEN: The calculated release quantity exceeds the total cargo quantity
WHEN: The system applies quantity validation rules
THEN: The release quantity is set equal to the total cargo quantity
βœ“ Consolidated Acceptance Criteria
  • The release quantity is validated for minimum bounds → if release quantity is less than zero, the release quantity is 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_ReleaseQuantity0(["Start Step"]) E_ReleaseQuantity0(["End Step"]) N_ReleaseQuantity0_Node0{"The release quantity is validated
for minimum bounds"}:::decision N_ReleaseQuantity0_Node0_action["If release quantity is less than
zero, the release quantity is set to
zero"]:::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: GCX016E.cbl
GIVEN: A calculated release quantity exists
WHEN: The release quantity is validated for minimum bounds
THEN: If release quantity is less than zero, the release quantity is set to zero
βœ“ Consolidated Acceptance Criteria
  • The system applies minimum quantity validation → the release quantity is 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_SetReleaseQuantity0(["Start Step"]) E_SetReleaseQuantity0(["End Step"]) N_SetReleaseQuantity0_Node0{"The system applies minimum quantity
validation"}:::decision N_SetReleaseQuantity0_Node0_action["The release quantity is set to zero"]:::main N_SetReleaseQuantity0_Node0 -- Yes --> N_SetReleaseQuantity0_Node0_action N_SetReleaseQuantity0_Node0_action --> E_SetReleaseQuantity0 S_SetReleaseQuantity0 --> N_SetReleaseQuantity0_Node0 N_SetReleaseQuantity0_Node0 -- No --> E_SetReleaseQuantity0
File: GCX016E.cbl
GIVEN: The calculated release quantity is less than zero
WHEN: The system applies minimum quantity validation
THEN: The release quantity is set to zero
βœ“ Consolidated Acceptance Criteria
  • The quantity processing is complete → the cargo record is updated with 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_UpdateCargoRecordwithNewReleaseQuantity(["Start Step"]) E_UpdateCargoRecordwithNewReleaseQuantity(["End Step"]) N_UpdateCargoRecordwithNewReleaseQuantity_Node0{"The quantity processing is complete"}:::decision N_UpdateCargoRecordwithNewReleaseQuantity_Node0_action["The cargo record is updated with
the new release quantity"]:::main N_UpdateCargoRecordwithNewReleaseQuantity_Node0 -- Yes --> N_UpdateCargoRecordwithNewReleaseQuantity_Node0_action N_UpdateCargoRecordwithNewReleaseQuantity_Node0_action --> E_UpdateCargoRecordwithNewReleaseQuantity S_UpdateCargoRecordwithNewReleaseQuantity --> N_UpdateCargoRecordwithNewReleaseQuantity_Node0 N_UpdateCargoRecordwithNewReleaseQuantity_Node0 -- No --> E_UpdateCargoRecordwithNewReleaseQuantity
File: GCX016E.cbl
GIVEN: A validated release quantity has been calculated
WHEN: The quantity processing is complete
THEN: The cargo record is updated with the new release quantity
βœ“ Consolidated Acceptance Criteria
  • Preparing Merlin notification messages → the quantity impact (difference between old and new release quantity) is calculated for 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_CalculateQuantityImpactforMerlinMessage(["Start Step"]) E_CalculateQuantityImpactforMerlinMessage(["End Step"]) N_CalculateQuantityImpactforMerlinMessage_Node0{"Preparing Merlin notification
messages"}:::decision N_CalculateQuantityImpactforMerlinMessage_Node0_action["The quantity impact difference
between old and new release quantity
is calculated for message content"]:::main N_CalculateQuantityImpactforMerlinMessage_Node0 -- Yes --> N_CalculateQuantityImpactforMerlinMessage_Node0_action N_CalculateQuantityImpactforMerlinMessage_Node0_action --> E_CalculateQuantityImpactforMerlinMessage S_CalculateQuantityImpactforMerlinMessage --> N_CalculateQuantityImpactforMerlinMessage_Node0 N_CalculateQuantityImpactforMerlinMessage_Node0 -- No --> E_CalculateQuantityImpactforMerlinMessage
File: GCX016E.cbl
GIVEN: The cargo record has been updated with new release quantity
WHEN: Preparing Merlin notification messages
THEN:
  • The quantity impact (difference between old
  • New release quantity) is calculated for message content
βœ“ Consolidated Acceptance Criteria
  • Formatting information for notifications → before and after quantity values are formatted for comparison 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_FormatBeforeAfterQuantityComparison(["Start Step"]) E_FormatBeforeAfterQuantityComparison(["End Step"]) N_FormatBeforeAfterQuantityComparison_Node0{"Formatting information for
notifications"}:::decision N_FormatBeforeAfterQuantityComparison_Node0_action["Before and after quantity values
are formatted for comparison display"]:::main N_FormatBeforeAfterQuantityComparison_Node0 -- Yes --> N_FormatBeforeAfterQuantityComparison_Node0_action N_FormatBeforeAfterQuantityComparison_Node0_action --> E_FormatBeforeAfterQuantityComparison S_FormatBeforeAfterQuantityComparison --> N_FormatBeforeAfterQuantityComparison_Node0 N_FormatBeforeAfterQuantityComparison_Node0 -- No --> E_FormatBeforeAfterQuantityComparison
File: GCX016E.cbl
GIVEN: Quantity impact has been calculated
WHEN: Formatting information for notifications
THEN:
  • Before
  • After quantity values are formatted for comparison display
βœ“ Consolidated Acceptance Criteria
  • Recording the transaction → the quantity change is logged in the audit trail with before/after 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_LogQuantityChangeinAuditTrail(["Start Step"]) E_LogQuantityChangeinAuditTrail(["End Step"]) N_LogQuantityChangeinAuditTrail_Node0{"Recording the transaction"}:::decision N_LogQuantityChangeinAuditTrail_Node0_action["The quantity change is logged in
the audit trail with beforeafter
values and disposition code
information"]:::main N_LogQuantityChangeinAuditTrail_Node0 -- Yes --> N_LogQuantityChangeinAuditTrail_Node0_action N_LogQuantityChangeinAuditTrail_Node0_action --> E_LogQuantityChangeinAuditTrail S_LogQuantityChangeinAuditTrail --> N_LogQuantityChangeinAuditTrail_Node0 N_LogQuantityChangeinAuditTrail_Node0 -- No --> E_LogQuantityChangeinAuditTrail
File: GCX016E.cbl
GIVEN: Quantity comparison has been formatted
WHEN: Recording the transaction
THEN:
  • The quantity change is logged in the audit trail with before/after values
  • Disposition code information
βœ“ Consolidated Acceptance Criteria
  • Generating notifications → a Merlin notification message is generated including the quantity impact 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_GenerateMerlinNotificationwithQuantityImpact(["Start Step"]) E_GenerateMerlinNotificationwithQuantityImpact(["End Step"]) N_GenerateMerlinNotificationwithQuantityImpact_Node0{"Generating notifications"}:::decision N_GenerateMerlinNotificationwithQuantityImpact_Node0_action["A Merlin notification message is
generated including the quantity
impact details"]:::main N_GenerateMerlinNotificationwithQuantityImpact_Node0 -- Yes --> N_GenerateMerlinNotificationwithQuantityImpact_Node0_action N_GenerateMerlinNotificationwithQuantityImpact_Node0_action --> E_GenerateMerlinNotificationwithQuantityImpact S_GenerateMerlinNotificationwithQuantityImpact --> N_GenerateMerlinNotificationwithQuantityImpact_Node0 N_GenerateMerlinNotificationwithQuantityImpact_Node0 -- No --> E_GenerateMerlinNotificationwithQuantityImpact
File: GCX016E.cbl
GIVEN: Quantity change has been logged in audit trail
WHEN: Generating notifications
THEN: A Merlin notification message is generated including the quantity impact details
βœ“ Consolidated Acceptance Criteria
  • The disposition code is not found → an error message is generated indicating unknown 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_GenerateErrorMessageforUnknownDispositionCode(["Start Step"]) E_GenerateErrorMessageforUnknownDispositionCode(["End Step"]) N_GenerateErrorMessageforUnknownDispositionCode_Node0{"The disposition code is not found"}:::decision N_GenerateErrorMessageforUnknownDispositionCode_Node0_action["An error message is generated
indicating unknown disposition code"]:::main N_GenerateErrorMessageforUnknownDispositionCode_Node0 -- Yes --> N_GenerateErrorMessageforUnknownDispositionCode_Node0_action N_GenerateErrorMessageforUnknownDispositionCode_Node0_action --> E_GenerateErrorMessageforUnknownDispositionCode S_GenerateErrorMessageforUnknownDispositionCode --> N_GenerateErrorMessageforUnknownDispositionCode_Node0 N_GenerateErrorMessageforUnknownDispositionCode_Node0 -- No --> E_GenerateErrorMessageforUnknownDispositionCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code lookup in the DC table has failed
WHEN: The disposition code is not found
THEN: An error message is generated indicating unknown disposition code
βœ“ Consolidated Acceptance Criteria
  • The system processes a disposition code that may affect quantities → the current release quantity is retrieved and stored for calculation purposes
  • The system needs to calculate new release quantities → the current release 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_RetrieveCurrentReleaseQuantity(["Start Step"]) E_RetrieveCurrentReleaseQuantity(["End Step"]) N_RetrieveCurrentReleaseQuantity_Node0{"The system processes a disposition
code that may affect quantities"}:::decision N_RetrieveCurrentReleaseQuantity_Node0_action["The current release quantity is
retrieved and stored for calculation
purposes"]:::main N_RetrieveCurrentReleaseQuantity_Node0 -- Yes --> N_RetrieveCurrentReleaseQuantity_Node0_action N_RetrieveCurrentReleaseQuantity_Node0_action --> E_RetrieveCurrentReleaseQuantity S_RetrieveCurrentReleaseQuantity --> N_RetrieveCurrentReleaseQuantity_Node0 N_RetrieveCurrentReleaseQuantity_Node1{"The system needs to calculate new
release quantities"}:::decision N_RetrieveCurrentReleaseQuantity_Node1_action["The current release quantity is
retrieved from the cargo record"]:::main N_RetrieveCurrentReleaseQuantity_Node1 -- Yes --> N_RetrieveCurrentReleaseQuantity_Node1_action N_RetrieveCurrentReleaseQuantity_Node1_action --> E_RetrieveCurrentReleaseQuantity N_RetrieveCurrentReleaseQuantity_Node0 -- No --> N_RetrieveCurrentReleaseQuantity_Node1 N_RetrieveCurrentReleaseQuantity_Node1 -- No --> E_RetrieveCurrentReleaseQuantity
File: GCX016E.cbl
GIVEN: A cargo record exists with release quantity information
WHEN: The system processes a disposition code that may affect quantities
THEN:
  • The current release quantity is retrieved
  • Stored for calculation purposes
File: GCX016E.cbl
GIVEN: A cargo record exists with release quantity information
WHEN: The system needs to calculate new release quantities
THEN: The current release quantity is retrieved from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system determines quantity changes are required → the disposition code quantity is marked for addition to current release quantity
  • The action type is determined as Add → the specified quantity is prepared to be added 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_AddQuantityAction(["Start Step"]) E_AddQuantityAction(["End Step"]) N_AddQuantityAction_Node0{"The system determines quantity
changes are required"}:::decision N_AddQuantityAction_Node0_action["The disposition code quantity is
marked for addition to current
release quantity"]:::main N_AddQuantityAction_Node0 -- Yes --> N_AddQuantityAction_Node0_action N_AddQuantityAction_Node0_action --> E_AddQuantityAction S_AddQuantityAction --> N_AddQuantityAction_Node0 N_AddQuantityAction_Node1{"The action type is determined as
Add"}:::decision N_AddQuantityAction_Node1_action["The specified quantity is prepared
to be added to the current release
quantity"]:::main N_AddQuantityAction_Node1 -- Yes --> N_AddQuantityAction_Node1_action N_AddQuantityAction_Node1_action --> E_AddQuantityAction N_AddQuantityAction_Node0 -- No --> N_AddQuantityAction_Node1 N_AddQuantityAction_Node1 -- No --> E_AddQuantityAction
File: GCX016E.cbl
GIVEN: A disposition code with Add action type is being processed
WHEN: The system determines quantity changes are required
THEN: The disposition code quantity is marked for addition to current release quantity
File: GCX016E.cbl
GIVEN: A disposition code with add action type is being processed
WHEN: The action type is determined as Add
THEN: The specified quantity is prepared to be added to the current release quantity
βœ“ Consolidated Acceptance Criteria
  • The system determines quantity reduction is required → the disposition code quantity is marked for subtraction from current release quantity
  • The action type is determined as Subtract → the specified quantity is prepared to be subtracted 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_SubtractQuantityAction(["Start Step"]) E_SubtractQuantityAction(["End Step"]) N_SubtractQuantityAction_Node0{"The system determines quantity
reduction is required"}:::decision N_SubtractQuantityAction_Node0_action["The disposition code quantity is
marked for subtraction from current
release quantity"]:::main N_SubtractQuantityAction_Node0 -- Yes --> N_SubtractQuantityAction_Node0_action N_SubtractQuantityAction_Node0_action --> E_SubtractQuantityAction S_SubtractQuantityAction --> N_SubtractQuantityAction_Node0 N_SubtractQuantityAction_Node1{"The action type is determined as
Subtract"}:::decision N_SubtractQuantityAction_Node1_action["The specified quantity is prepared
to be subtracted from the current
release quantity"]:::main N_SubtractQuantityAction_Node1 -- Yes --> N_SubtractQuantityAction_Node1_action N_SubtractQuantityAction_Node1_action --> E_SubtractQuantityAction N_SubtractQuantityAction_Node0 -- No --> N_SubtractQuantityAction_Node1 N_SubtractQuantityAction_Node1 -- No --> E_SubtractQuantityAction
File: GCX016E.cbl
GIVEN: A disposition code with Subtract action type is being processed
WHEN: The system determines quantity reduction is required
THEN: The disposition code quantity is marked for subtraction from current release quantity
File: GCX016E.cbl
GIVEN: A disposition code with subtract action type is being processed
WHEN: The action type is determined as Subtract
THEN: The specified quantity is prepared to be subtracted from the current release quantity
βœ“ Consolidated Acceptance Criteria
  • The system determines no quantity changes are required → the processing completes without modifying 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_NoQuantityChangeAction(["Start Step"]) E_NoQuantityChangeAction(["End Step"]) N_NoQuantityChangeAction_Node0{"The system determines no quantity
changes are required"}:::decision N_NoQuantityChangeAction_Node0_action["The processing completes without
modifying release quantities"]:::main N_NoQuantityChangeAction_Node0 -- Yes --> N_NoQuantityChangeAction_Node0_action N_NoQuantityChangeAction_Node0_action --> E_NoQuantityChangeAction S_NoQuantityChangeAction --> N_NoQuantityChangeAction_Node0 N_NoQuantityChangeAction_Node0 -- No --> E_NoQuantityChangeAction
File: GCX016E.cbl
GIVEN: A disposition code with Status Info Only action type is being processed
WHEN: The system determines no quantity changes are required
THEN: The processing completes without modifying release quantities
βœ“ Consolidated Acceptance Criteria
  • The system performs quantity calculation → new release quantity is computed by adding or subtracting the disposition code quantity from current release quantity
  • Final quantity calculation is performed → the system calculates the new release quantity by applying the add or subtract action to the current quantity
  • Add or subtract action needs to be applied → new release quantity is calculated by adding or subtracting the action 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_CalculateNewReleaseQuantity(["Start Step"]) E_CalculateNewReleaseQuantity(["End Step"]) N_CalculateNewReleaseQuantity_Node0{"The system performs quantity
calculation"}:::decision N_CalculateNewReleaseQuantity_Node0_action["New release quantity is computed by
adding or subtracting the
disposition code quantity from
current release quantity"]:::main N_CalculateNewReleaseQuantity_Node0 -- Yes --> N_CalculateNewReleaseQuantity_Node0_action N_CalculateNewReleaseQuantity_Node0_action --> E_CalculateNewReleaseQuantity S_CalculateNewReleaseQuantity --> N_CalculateNewReleaseQuantity_Node0 N_CalculateNewReleaseQuantity_Node1{"Final quantity calculation is
performed"}:::decision N_CalculateNewReleaseQuantity_Node1_action["The system calculates the new
release quantity by applying the add
or subtract action to the current
quantity"]:::main N_CalculateNewReleaseQuantity_Node1 -- Yes --> N_CalculateNewReleaseQuantity_Node1_action N_CalculateNewReleaseQuantity_Node1_action --> E_CalculateNewReleaseQuantity N_CalculateNewReleaseQuantity_Node0 -- No --> N_CalculateNewReleaseQuantity_Node1 N_CalculateNewReleaseQuantity_Node2{"Add or subtract action needs to be
applied"}:::decision N_CalculateNewReleaseQuantity_Node2_action["New release quantity is calculated
by adding or subtracting the action
quantity from current release
quantity"]:::main N_CalculateNewReleaseQuantity_Node2 -- Yes --> N_CalculateNewReleaseQuantity_Node2_action N_CalculateNewReleaseQuantity_Node2_action --> E_CalculateNewReleaseQuantity N_CalculateNewReleaseQuantity_Node1 -- No --> N_CalculateNewReleaseQuantity_Node2 N_CalculateNewReleaseQuantity_Node2 -- No --> E_CalculateNewReleaseQuantity
File: GCX016E.cbl
GIVEN: Current release quantity and disposition code action are available
WHEN: The system performs quantity calculation
THEN: New release quantity is computed by adding or subtracting the disposition code quantity from current release quantity
File: GCX016E.cbl
GIVEN: Current release quantity and calculated quantity impact with determined action
WHEN: Final quantity calculation is performed
THEN: The system calculates the new release quantity by applying the add or subtract action to the current quantity
File: GCX016E.cbl
GIVEN: Current release quantity and action quantity are available
WHEN: Add or subtract action needs to be applied
THEN: New release quantity is calculated by adding or subtracting the action quantity from current release quantity
βœ“ Consolidated Acceptance Criteria
  • The system validates the calculated quantity → the release quantity is checked against total cargo quantity for validity
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateAgainstTotalQuantity(["Start Step"]) E_ValidateAgainstTotalQuantity(["End Step"]) N_ValidateAgainstTotalQuantity_Node0{"The system validates the calculated
quantity"}:::decision N_ValidateAgainstTotalQuantity_Node0_action["The release quantity is checked
against total cargo quantity for
validity"]:::main N_ValidateAgainstTotalQuantity_Node0 -- Yes --> N_ValidateAgainstTotalQuantity_Node0_action N_ValidateAgainstTotalQuantity_Node0_action --> E_ValidateAgainstTotalQuantity S_ValidateAgainstTotalQuantity --> N_ValidateAgainstTotalQuantity_Node0 N_ValidateAgainstTotalQuantity_Node0 -- No --> E_ValidateAgainstTotalQuantity
File: GCX016E.cbl
GIVEN: A new release quantity has been calculated
WHEN: The system validates the calculated quantity
THEN: The release quantity is checked against total cargo quantity for validity
βœ“ Consolidated Acceptance Criteria
  • The system applies quantity validation rules → release quantity is set equal to 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_SetReleaseQtyTotalQty(["Start Step"]) E_SetReleaseQtyTotalQty(["End Step"]) N_SetReleaseQtyTotalQty_Node0{"The system applies quantity
validation rules"}:::decision N_SetReleaseQtyTotalQty_Node0_action["Release quantity is set equal to
total cargo quantity"]:::main N_SetReleaseQtyTotalQty_Node0 -- Yes --> N_SetReleaseQtyTotalQty_Node0_action N_SetReleaseQtyTotalQty_Node0_action --> E_SetReleaseQtyTotalQty S_SetReleaseQtyTotalQty --> N_SetReleaseQtyTotalQty_Node0 N_SetReleaseQtyTotalQty_Node0 -- No --> E_SetReleaseQtyTotalQty
File: GCX016E.cbl
GIVEN: Calculated release quantity exceeds total cargo quantity
WHEN: The system applies quantity validation rules
THEN: Release quantity is set equal to total cargo quantity
βœ“ Consolidated Acceptance Criteria
  • The system applies quantity validation rules → release quantity is 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_SetReleaseQty0(["Start Step"]) E_SetReleaseQty0(["End Step"]) N_SetReleaseQty0_Node0{"The system applies quantity
validation rules"}:::decision N_SetReleaseQty0_Node0_action["Release quantity is set to zero"]:::main N_SetReleaseQty0_Node0 -- Yes --> N_SetReleaseQty0_Node0_action N_SetReleaseQty0_Node0_action --> E_SetReleaseQty0 S_SetReleaseQty0 --> N_SetReleaseQty0_Node0 N_SetReleaseQty0_Node0 -- No --> E_SetReleaseQty0
File: GCX016E.cbl
GIVEN: Calculated release quantity is less than zero
WHEN: The system applies quantity validation rules
THEN: Release quantity is set to zero
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo information → the cargo record release quantity is updated with the new validated amount
  • The system updates the cargo release quantity → the cargo record is updated with the new release quantity value
  • The quantity is valid and within acceptable ranges → the cargo record is updated with 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_UpdateReleaseQuantity(["Start Step"]) E_UpdateReleaseQuantity(["End Step"]) N_UpdateReleaseQuantity_Node0{"The system updates cargo
information"}:::decision N_UpdateReleaseQuantity_Node0_action["The cargo record release quantity
is updated with the new validated
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 system updates the cargo
release quantity"}:::decision N_UpdateReleaseQuantity_Node1_action["The cargo record is updated with
the new release quantity 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_Node2{"The quantity is valid and within
acceptable ranges"}:::decision N_UpdateReleaseQuantity_Node2_action["The cargo record is updated with
the new release quantity"]:::main N_UpdateReleaseQuantity_Node2 -- Yes --> N_UpdateReleaseQuantity_Node2_action N_UpdateReleaseQuantity_Node2_action --> E_UpdateReleaseQuantity N_UpdateReleaseQuantity_Node1 -- No --> N_UpdateReleaseQuantity_Node2 N_UpdateReleaseQuantity_Node2 -- No --> E_UpdateReleaseQuantity
File: GCX016E.cbl
GIVEN: A validated new release quantity is available
WHEN: The system updates cargo information
THEN: The cargo record release quantity is updated with the new validated amount
File: GCX016E.cbl
GIVEN: A valid release quantity has been calculated
WHEN: The system updates the cargo release quantity
THEN: The cargo record is updated with the new release quantity value
File: GCX016E.cbl
GIVEN: A new release quantity has passed all validation checks
WHEN:
  • The quantity is valid
  • Within acceptable ranges
THEN: The cargo record is updated with the new release quantity
βœ“ Consolidated Acceptance Criteria
  • The system completes quantity processing → a log entry is created documenting the quantity change transaction
  • Quantity change needs to be recorded for audit purposes → a log entry is created with old quantity, new quantity, and change 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_LogQuantityChange(["Start Step"]) E_LogQuantityChange(["End Step"]) N_LogQuantityChange_Node0{"The system completes quantity
processing"}:::decision N_LogQuantityChange_Node0_action["A log entry is created documenting
the quantity change transaction"]:::main N_LogQuantityChange_Node0 -- Yes --> N_LogQuantityChange_Node0_action N_LogQuantityChange_Node0_action --> E_LogQuantityChange S_LogQuantityChange --> N_LogQuantityChange_Node0 N_LogQuantityChange_Node1{"Quantity change needs to be
recorded for audit purposes"}:::decision N_LogQuantityChange_Node1_action["A log entry is created with old
quantity, new quantity, and change
details"]:::main N_LogQuantityChange_Node1 -- Yes --> N_LogQuantityChange_Node1_action N_LogQuantityChange_Node1_action --> E_LogQuantityChange N_LogQuantityChange_Node0 -- No --> N_LogQuantityChange_Node1 N_LogQuantityChange_Node1 -- No --> E_LogQuantityChange
File: GCX016E.cbl
GIVEN: Release quantity has been updated
WHEN: The system completes quantity processing
THEN: A log entry is created documenting the quantity change transaction
File: GCX016E.cbl
GIVEN: Cargo release quantity has been successfully updated
WHEN: Quantity change needs to be recorded for audit purposes
THEN: A log entry is created with old quantity, new quantity, and change details
βœ“ Consolidated Acceptance Criteria
  • The system documents quantity changes → a before and after comparison record is created showing quantity differences
  • The system completes status processing → a comparison is created highlighting status changes, quantity modifications, and disposition code 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_CreateBeforeAfterComparison(["Start Step"]) E_CreateBeforeAfterComparison(["End Step"]) N_CreateBeforeAfterComparison_Node0{"The system documents quantity
changes"}:::decision N_CreateBeforeAfterComparison_Node0_action["A before and after comparison
record is created showing quantity
differences"]:::main N_CreateBeforeAfterComparison_Node0 -- Yes --> N_CreateBeforeAfterComparison_Node0_action N_CreateBeforeAfterComparison_Node0_action --> E_CreateBeforeAfterComparison S_CreateBeforeAfterComparison --> N_CreateBeforeAfterComparison_Node0 N_CreateBeforeAfterComparison_Node1{"The system completes status
processing"}:::decision N_CreateBeforeAfterComparison_Node1_action["A comparison is created
highlighting status changes,
quantity modifications, and
disposition code updates"]:::main N_CreateBeforeAfterComparison_Node1 -- Yes --> N_CreateBeforeAfterComparison_Node1_action N_CreateBeforeAfterComparison_Node1_action --> E_CreateBeforeAfterComparison N_CreateBeforeAfterComparison_Node0 -- No --> N_CreateBeforeAfterComparison_Node1 N_CreateBeforeAfterComparison_Node1 -- No --> E_CreateBeforeAfterComparison
File: GCX016E.cbl
GIVEN: Original and new release quantities are available
WHEN: The system documents quantity changes
THEN:
  • A before
  • After comparison record is created showing quantity differences
File: GCX016E.cbl
GIVEN: Both before and after status information has been captured
WHEN: The system completes status processing
THEN: A comparison is created highlighting status changes, quantity modifications, and disposition code updates
βœ“ Consolidated Acceptance Criteria
  • The system generates impact notifications → a quantity impact message is created showing the effect of disposition code on release quantities
  • The system generates impact messaging → a message is created showing the before and after quantity values and the disposition code causing the 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_GenerateQuantityImpactMessage(["Start Step"]) E_GenerateQuantityImpactMessage(["End Step"]) N_GenerateQuantityImpactMessage_Node0{"The system generates impact
notifications"}:::decision N_GenerateQuantityImpactMessage_Node0_action["A quantity impact message is
created showing the effect of
disposition code on release
quantities"]:::main N_GenerateQuantityImpactMessage_Node0 -- Yes --> N_GenerateQuantityImpactMessage_Node0_action N_GenerateQuantityImpactMessage_Node0_action --> E_GenerateQuantityImpactMessage S_GenerateQuantityImpactMessage --> N_GenerateQuantityImpactMessage_Node0 N_GenerateQuantityImpactMessage_Node1{"The system generates impact
messaging"}:::decision N_GenerateQuantityImpactMessage_Node1_action["A message is created showing the
before and after quantity values and
the disposition code causing the
change"]:::main N_GenerateQuantityImpactMessage_Node1 -- Yes --> N_GenerateQuantityImpactMessage_Node1_action N_GenerateQuantityImpactMessage_Node1_action --> E_GenerateQuantityImpactMessage N_GenerateQuantityImpactMessage_Node0 -- No --> N_GenerateQuantityImpactMessage_Node1 N_GenerateQuantityImpactMessage_Node1 -- No --> E_GenerateQuantityImpactMessage
File: GCX016E.cbl
GIVEN: Quantity changes have been processed and documented
WHEN: The system generates impact notifications
THEN: A quantity impact message is created showing the effect of disposition code on release quantities
File: GCX016E.cbl
GIVEN: A cargo release quantity has been updated
WHEN: The system generates impact messaging
THEN:
  • A message is created showing the before
  • After quantity values
  • The disposition code causing the change
βœ“ Consolidated Acceptance Criteria
  • If cargo status and finds hold conditions are present → the hold notification process is triggered and hold information gathering 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_HoldStatusDetectedinCargo(["Start Step"]) E_HoldStatusDetectedinCargo(["End Step"]) N_HoldStatusDetectedinCargo_Node0{"The system evaluates cargo status
and finds hold conditions are
present"}:::decision N_HoldStatusDetectedinCargo_Node0_action["The hold notification process is
triggered and hold information
gathering begins"]:::main N_HoldStatusDetectedinCargo_Node0 -- Yes --> N_HoldStatusDetectedinCargo_Node0_action N_HoldStatusDetectedinCargo_Node0_action --> E_HoldStatusDetectedinCargo S_HoldStatusDetectedinCargo --> N_HoldStatusDetectedinCargo_Node0 N_HoldStatusDetectedinCargo_Node0 -- No --> E_HoldStatusDetectedinCargo
File: GCX016E.cbl
GIVEN: A cargo record exists with status information
WHEN:
  • The system evaluates cargo status
  • Finds hold conditions are present
THEN:
  • The hold notification process is triggered
  • Hold information gathering begins
βœ“ Consolidated Acceptance Criteria
  • The system begins gathering hold information from GCSUSS09 status segments → all relevant hold data including hold type, priority, and status validation is collected
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GatherHoldInformation(["Start Step"]) E_GatherHoldInformation(["End Step"]) N_GatherHoldInformation_Node0{"The system begins gathering hold
information from GCSUSS09 status
segments"}:::decision N_GatherHoldInformation_Node0_action["All relevant hold data including
hold type, priority, and status
validation is collected"]:::main N_GatherHoldInformation_Node0 -- Yes --> N_GatherHoldInformation_Node0_action N_GatherHoldInformation_Node0_action --> E_GatherHoldInformation S_GatherHoldInformation --> N_GatherHoldInformation_Node0 N_GatherHoldInformation_Node0 -- No --> E_GatherHoldInformation
File: GCX016E.cbl
GIVEN: Hold status has been detected for a cargo
WHEN: The system begins gathering hold information from GCSUSS09 status segments
THEN: All relevant hold data including hold type, priority, and status validation is collected
βœ“ Consolidated Acceptance Criteria
  • The system examines the hold status codes and disposition information → the hold type is classified as border hold, destination hold, FDA hold, or other specific hold category
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckHoldType(["Start Step"]) E_CheckHoldType(["End Step"]) N_CheckHoldType_Node0{"The system examines the hold status
codes and disposition information"}:::decision N_CheckHoldType_Node0_action["The hold type is classified as
border hold, destination hold, FDA
hold, or other specific hold
category"]:::main N_CheckHoldType_Node0 -- Yes --> N_CheckHoldType_Node0_action N_CheckHoldType_Node0_action --> E_CheckHoldType S_CheckHoldType --> N_CheckHoldType_Node0 N_CheckHoldType_Node0 -- No --> E_CheckHoldType
File: GCX016E.cbl
GIVEN: Hold information is being gathered for a cargo
WHEN:
  • The system examines the hold status codes
  • Disposition information
THEN: The hold type is classified as border hold, destination hold, FDA hold, or other specific hold category
βœ“ Consolidated Acceptance Criteria
  • The system validates the hold status against current business rules → the hold status is confirmed as valid and active, or flagged 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_ValidateHoldStatus(["Start Step"]) E_ValidateHoldStatus(["End Step"]) N_ValidateHoldStatus_Node0{"The system validates the hold
status against current business
rules"}:::decision N_ValidateHoldStatus_Node0_action["The hold status is confirmed as
valid and active, or flagged for
correction"]:::main N_ValidateHoldStatus_Node0 -- Yes --> N_ValidateHoldStatus_Node0_action N_ValidateHoldStatus_Node0_action --> E_ValidateHoldStatus S_ValidateHoldStatus --> N_ValidateHoldStatus_Node0 N_ValidateHoldStatus_Node0 -- No --> E_ValidateHoldStatus
File: GCX016E.cbl
GIVEN: A hold type has been identified for cargo
WHEN: The system validates the hold status against current business rules
THEN:
  • The hold status is confirmed as valid
  • Active, or flagged for correction
βœ“ Consolidated Acceptance Criteria
  • If hold type and associated business rules → hold priority is determined based on hold type hierarchy and urgency 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_DetermineHoldPriority(["Start Step"]) E_DetermineHoldPriority(["End Step"]) N_DetermineHoldPriority_Node0{"The system evaluates hold type and
associated business rules"}:::decision N_DetermineHoldPriority_Node0_action["Hold priority is determined based
on hold type hierarchy and urgency
requirements"]:::main N_DetermineHoldPriority_Node0 -- Yes --> N_DetermineHoldPriority_Node0_action N_DetermineHoldPriority_Node0_action --> E_DetermineHoldPriority S_DetermineHoldPriority --> N_DetermineHoldPriority_Node0 N_DetermineHoldPriority_Node0 -- No --> E_DetermineHoldPriority
File: GCX016E.cbl
GIVEN: Hold status has been validated for cargo
WHEN:
  • The system evaluates hold type
  • Associated business rules
THEN:
  • Hold priority is determined based on hold type hierarchy
  • Urgency requirements
βœ“ Consolidated Acceptance Criteria
  • The system accesses GCSTBRT table segments for disposition code details → complete disposition code information including descriptions and hold reasons is collected
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CollectDispositionCodeDetails(["Start Step"]) E_CollectDispositionCodeDetails(["End Step"]) N_CollectDispositionCodeDetails_Node0{"The system accesses GCSTBRT table
segments for disposition code
details"}:::decision N_CollectDispositionCodeDetails_Node0_action["Complete disposition code
information including descriptions
and hold reasons is collected"]:::main N_CollectDispositionCodeDetails_Node0 -- Yes --> N_CollectDispositionCodeDetails_Node0_action N_CollectDispositionCodeDetails_Node0_action --> E_CollectDispositionCodeDetails S_CollectDispositionCodeDetails --> N_CollectDispositionCodeDetails_Node0 N_CollectDispositionCodeDetails_Node0 -- No --> E_CollectDispositionCodeDetails
File: GCX016E.cbl
GIVEN: Hold information has been gathered for cargo
WHEN: The system accesses GCSTBRT table segments for disposition code details
THEN:
  • Complete disposition code information including descriptions
  • Hold reasons is collected
βœ“ Consolidated Acceptance Criteria
  • The system looks up disposition codes in the DC table → descriptive text for each disposition code is retrieved and made available for 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_LookupDispositionCodeDescription(["Start Step"]) E_LookupDispositionCodeDescription(["End Step"]) N_LookupDispositionCodeDescription_Node0{"The system looks up disposition
codes in the DC table"}:::decision N_LookupDispositionCodeDescription_Node0_action["Descriptive text for each
disposition code is retrieved and
made available for notification"]:::main N_LookupDispositionCodeDescription_Node0 -- Yes --> N_LookupDispositionCodeDescription_Node0_action N_LookupDispositionCodeDescription_Node0_action --> E_LookupDispositionCodeDescription S_LookupDispositionCodeDescription --> N_LookupDispositionCodeDescription_Node0 N_LookupDispositionCodeDescription_Node0 -- No --> E_LookupDispositionCodeDescription
File: GCX016E.cbl
GIVEN: Disposition code details are being collected
WHEN: The system looks up disposition codes in the DC table
THEN:
  • Descriptive text for each disposition code is retrieved
  • Made available for notification
βœ“ Consolidated Acceptance Criteria
  • The system analyzes disposition codes for hold-specific information → detailed hold reasons and explanatory information are extracted 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_GetHoldReasonDetails(["Start Step"]) E_GetHoldReasonDetails(["End Step"]) N_GetHoldReasonDetails_Node0{"The system analyzes disposition
codes for hold-specific information"}:::decision N_GetHoldReasonDetails_Node0_action["Detailed hold reasons and
explanatory information are
extracted for notification purposes"]:::main N_GetHoldReasonDetails_Node0 -- Yes --> N_GetHoldReasonDetails_Node0_action N_GetHoldReasonDetails_Node0_action --> E_GetHoldReasonDetails S_GetHoldReasonDetails --> N_GetHoldReasonDetails_Node0 N_GetHoldReasonDetails_Node0 -- No --> E_GetHoldReasonDetails
File: GCX016E.cbl
GIVEN: Disposition code descriptions have been retrieved
WHEN: The system analyzes disposition codes for hold-specific information
THEN:
  • Detailed hold reasons
  • Explanatory information are extracted for notification purposes
βœ“ Consolidated Acceptance Criteria
  • The system accesses station data tables for location information → origin station, destination station, and border information are retrieved for the notification
  • The system needs to create a detailed hold notification → the system retrieves location information from location tables (GCSTBRT) including origin, destination, and current location details to provide business context for the hold 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_RetrieveLocationInformation(["Start Step"]) E_RetrieveLocationInformation(["End Step"]) N_RetrieveLocationInformation_Node0{"The system accesses station data
tables for location information"}:::decision N_RetrieveLocationInformation_Node0_action["Origin station, destination
station, and border information are
retrieved for the notification"]:::main N_RetrieveLocationInformation_Node0 -- Yes --> N_RetrieveLocationInformation_Node0_action N_RetrieveLocationInformation_Node0_action --> E_RetrieveLocationInformation S_RetrieveLocationInformation --> N_RetrieveLocationInformation_Node0 N_RetrieveLocationInformation_Node1{"The system needs to create a
detailed hold notification"}:::decision N_RetrieveLocationInformation_Node1_action["The system retrieves location
information from location tables
GCSTBRT including origin,
destination, and current location
details to provide business context
for the hold notification"]:::main N_RetrieveLocationInformation_Node1 -- Yes --> N_RetrieveLocationInformation_Node1_action N_RetrieveLocationInformation_Node1_action --> E_RetrieveLocationInformation N_RetrieveLocationInformation_Node0 -- No --> N_RetrieveLocationInformation_Node1 N_RetrieveLocationInformation_Node1 -- No --> E_RetrieveLocationInformation
File: GCX016E.cbl
GIVEN: Disposition code details have been collected
WHEN: The system accesses station data tables for location information
THEN: Origin station, destination station, and border information are retrieved for the notification
File: GCX016E.cbl
GIVEN: A cargo with hold status has been identified for notification
WHEN: The system needs to create a detailed hold notification
THEN: The system retrieves location information from location tables (GCSTBRT) including origin, destination, and current location details to provide business context for the hold notification
βœ“ Consolidated Acceptance Criteria
  • The system begins formatting the notification message → a structured message template is prepared with placeholders for equipment, cargo, 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_FormatHoldNotificationMessage(["Start Step"]) E_FormatHoldNotificationMessage(["End Step"]) N_FormatHoldNotificationMessage_Node0{"The system begins formatting the
notification message"}:::decision N_FormatHoldNotificationMessage_Node0_action["A structured message template is
prepared with placeholders for
equipment, cargo, and location
details"]:::main N_FormatHoldNotificationMessage_Node0 -- Yes --> N_FormatHoldNotificationMessage_Node0_action N_FormatHoldNotificationMessage_Node0_action --> E_FormatHoldNotificationMessage S_FormatHoldNotificationMessage --> N_FormatHoldNotificationMessage_Node0 N_FormatHoldNotificationMessage_Node0 -- No --> E_FormatHoldNotificationMessage
File: GCX016E.cbl
GIVEN: All hold information and location data have been retrieved
WHEN: The system begins formatting the notification message
THEN: A structured message template is prepared with placeholders for equipment, cargo, and location details
βœ“ Consolidated Acceptance Criteria
  • The system processes car identification data → car ID is formatted according to standard notation and included in the message
  • The system formats car identification → the system should format car ID by combining equipment initial and equipment number according to standard formatting rules
  • The car ID formatting process is executed → the car ID is formatted with appropriate spacing and alignment 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_FormatCarID(["Start Step"]) E_FormatCarID(["End Step"]) N_FormatCarID_Node0{"The system processes car
identification data"}:::decision N_FormatCarID_Node0_action["Car ID is formatted according to
standard notation and included in
the message"]:::main N_FormatCarID_Node0 -- Yes --> N_FormatCarID_Node0_action N_FormatCarID_Node0_action --> E_FormatCarID S_FormatCarID --> N_FormatCarID_Node0 N_FormatCarID_Node1{"the system formats car
identification"}:::decision N_FormatCarID_Node1_action["the system should format car ID by
combining equipment initial and
equipment number according to
standard formatting rules"]:::main N_FormatCarID_Node1 -- Yes --> N_FormatCarID_Node1_action N_FormatCarID_Node1_action --> E_FormatCarID N_FormatCarID_Node0 -- No --> N_FormatCarID_Node1 N_FormatCarID_Node2{"The car ID formatting process is
executed"}:::decision N_FormatCarID_Node2_action["The car ID is formatted with
appropriate spacing and alignment
for report display"]:::main N_FormatCarID_Node2 -- Yes --> N_FormatCarID_Node2_action N_FormatCarID_Node2_action --> E_FormatCarID N_FormatCarID_Node1 -- No --> N_FormatCarID_Node2 N_FormatCarID_Node2 -- No --> E_FormatCarID
File: GCX016E.cbl
GIVEN: Equipment details are being included in the notification
WHEN: The system processes car identification data
THEN:
  • Car id is formatted according to standard notation
  • Included in the message
File: GCX016E.cbl
GIVEN: vessel details have been set and equipment initial and number are available
WHEN: the system formats car identification
THEN:
  • The system should format car id by combining equipment initial
  • Equipment number according to standard formatting rules
File: GCX016E.cbl
GIVEN: A cargo record contains car ID information
WHEN: The car ID formatting process is executed
THEN:
  • The car id is formatted with appropriate spacing
  • Alignment for report display
βœ“ Consolidated Acceptance Criteria
  • The system processes waybill information → waybill number is included in the notification 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_IncludeWaybillNumber(["Start Step"]) E_IncludeWaybillNumber(["End Step"]) N_IncludeWaybillNumber_Node0{"The system processes waybill
information"}:::decision N_IncludeWaybillNumber_Node0_action["Waybill number is included in the
notification message for cargo
identification"]:::main N_IncludeWaybillNumber_Node0 -- Yes --> N_IncludeWaybillNumber_Node0_action N_IncludeWaybillNumber_Node0_action --> E_IncludeWaybillNumber S_IncludeWaybillNumber --> N_IncludeWaybillNumber_Node0 N_IncludeWaybillNumber_Node0 -- No --> E_IncludeWaybillNumber
File: GCX016E.cbl
GIVEN: Car ID has been formatted for the notification
WHEN: The system processes waybill information
THEN: Waybill number is included in the notification message for cargo identification
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo identification data → uS-CCN, cargo description, and quantity information are added to 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_AddCargoIdentification(["Start Step"]) E_AddCargoIdentification(["End Step"]) N_AddCargoIdentification_Node0{"The system processes cargo
identification data"}:::decision N_AddCargoIdentification_Node0_action["US-CCN, cargo description, and
quantity information are added to
the notification"]:::main N_AddCargoIdentification_Node0 -- Yes --> N_AddCargoIdentification_Node0_action N_AddCargoIdentification_Node0_action --> E_AddCargoIdentification S_AddCargoIdentification --> N_AddCargoIdentification_Node0 N_AddCargoIdentification_Node0 -- No --> E_AddCargoIdentification
File: GCX016E.cbl
GIVEN: Equipment details have been included in the notification
WHEN: The system processes cargo identification data
THEN: US-CCN, cargo description, and quantity information are added to the notification
βœ“ Consolidated Acceptance Criteria
  • The system processes US-CCN information → uS-CCN is formatted according to standard format and included in the message
  • The US-CCN formatting process is executed → the US-CCN is formatted with proper structure 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_FormatUSCCN(["Start Step"]) E_FormatUSCCN(["End Step"]) N_FormatUSCCN_Node0{"The system processes US-CCN
information"}:::decision N_FormatUSCCN_Node0_action["US-CCN is formatted according to
standard format and included in the
message"]:::main N_FormatUSCCN_Node0 -- Yes --> N_FormatUSCCN_Node0_action N_FormatUSCCN_Node0_action --> E_FormatUSCCN S_FormatUSCCN --> N_FormatUSCCN_Node0 N_FormatUSCCN_Node1{"The US-CCN formatting process is
executed"}:::decision N_FormatUSCCN_Node1_action["The US-CCN is formatted with proper
structure for report display"]:::main N_FormatUSCCN_Node1 -- Yes --> N_FormatUSCCN_Node1_action N_FormatUSCCN_Node1_action --> E_FormatUSCCN N_FormatUSCCN_Node0 -- No --> N_FormatUSCCN_Node1 N_FormatUSCCN_Node1 -- No --> E_FormatUSCCN
File: GCX016E.cbl
GIVEN: Cargo identification is being added to the notification
WHEN: The system processes US-CCN information
THEN:
  • Us-ccn is formatted according to standard format
  • Included in the message
File: GCX016E.cbl
GIVEN: A cargo record contains US-CCN information
WHEN: The US-CCN formatting process is executed
THEN: The US-CCN is formatted with proper structure for report display
βœ“ Consolidated Acceptance Criteria
  • The system processes hold reason information → hold reason codes and associated explanations are included 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_IncludeHoldReasonCode(["Start Step"]) E_IncludeHoldReasonCode(["End Step"]) N_IncludeHoldReasonCode_Node0{"The system processes hold reason
information"}:::decision N_IncludeHoldReasonCode_Node0_action["Hold reason codes and associated
explanations are included in the
notification message"]:::main N_IncludeHoldReasonCode_Node0 -- Yes --> N_IncludeHoldReasonCode_Node0_action N_IncludeHoldReasonCode_Node0_action --> E_IncludeHoldReasonCode S_IncludeHoldReasonCode --> N_IncludeHoldReasonCode_Node0 N_IncludeHoldReasonCode_Node0 -- No --> E_IncludeHoldReasonCode
File: GCX016E.cbl
GIVEN: Cargo identification has been added to the notification
WHEN: The system processes hold reason information
THEN:
  • Hold reason codes
  • Associated explanations are included in the notification message
βœ“ Consolidated Acceptance Criteria
  • The system processes location data from station tables → origin station, destination station, and border information are formatted and added 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_AddLocationandStationData(["Start Step"]) E_AddLocationandStationData(["End Step"]) N_AddLocationandStationData_Node0{"The system processes location data
from station tables"}:::decision N_AddLocationandStationData_Node0_action["Origin station, destination
station, and border information are
formatted and added to the message"]:::main N_AddLocationandStationData_Node0 -- Yes --> N_AddLocationandStationData_Node0_action N_AddLocationandStationData_Node0_action --> E_AddLocationandStationData S_AddLocationandStationData --> N_AddLocationandStationData_Node0 N_AddLocationandStationData_Node0 -- No --> E_AddLocationandStationData
File: GCX016E.cbl
GIVEN: Hold reason codes have been included in the notification
WHEN: The system processes location data from station tables
THEN:
  • Origin station, destination station, and border information are formatted
  • Added to the message
βœ“ Consolidated Acceptance Criteria
  • The system processes origin station information → origin station name and code are formatted and included 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_FormatOriginStation(["Start Step"]) E_FormatOriginStation(["End Step"]) N_FormatOriginStation_Node0{"The system processes origin station
information"}:::decision N_FormatOriginStation_Node0_action["Origin station name and code are
formatted and included in the
notification"]:::main N_FormatOriginStation_Node0 -- Yes --> N_FormatOriginStation_Node0_action N_FormatOriginStation_Node0_action --> E_FormatOriginStation S_FormatOriginStation --> N_FormatOriginStation_Node0 N_FormatOriginStation_Node0 -- No --> E_FormatOriginStation
File: GCX016E.cbl
GIVEN: Location and station data is being added to the notification
WHEN: The system processes origin station information
THEN:
  • Origin station name
  • Code are formatted
  • Included in the notification
βœ“ Consolidated Acceptance Criteria
  • The system processes destination station information → destination station name and code are formatted and included 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_FormatDestinationStation(["Start Step"]) E_FormatDestinationStation(["End Step"]) N_FormatDestinationStation_Node0{"The system processes destination
station information"}:::decision N_FormatDestinationStation_Node0_action["Destination station name and code
are formatted and included in the
notification"]:::main N_FormatDestinationStation_Node0 -- Yes --> N_FormatDestinationStation_Node0_action N_FormatDestinationStation_Node0_action --> E_FormatDestinationStation S_FormatDestinationStation --> N_FormatDestinationStation_Node0 N_FormatDestinationStation_Node0 -- No --> E_FormatDestinationStation
File: GCX016E.cbl
GIVEN: Origin station has been formatted for the notification
WHEN: The system processes destination station information
THEN:
  • Destination station name
  • Code are formatted
  • Included in the notification
βœ“ Consolidated Acceptance Criteria
  • The system processes date and time information → hold date, time, and related temporal information are formatted according to standard format
  • The system formats message content → date and time information is formatted according to Merlin message standards
  • The system processes temporal data for Merlin reporting → the date and time information is formatted according to report 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_FormatDateandTimeInformation(["Start Step"]) E_FormatDateandTimeInformation(["End Step"]) N_FormatDateandTimeInformation_Node0{"The system processes date and time
information"}:::decision N_FormatDateandTimeInformation_Node0_action["Hold date, time, and related
temporal information are formatted
according to standard format"]:::main N_FormatDateandTimeInformation_Node0 -- Yes --> N_FormatDateandTimeInformation_Node0_action N_FormatDateandTimeInformation_Node0_action --> E_FormatDateandTimeInformation S_FormatDateandTimeInformation --> N_FormatDateandTimeInformation_Node0 N_FormatDateandTimeInformation_Node1{"The system formats message content"}:::decision N_FormatDateandTimeInformation_Node1_action["Date and time information is
formatted according to Merlin
message standards"]:::main N_FormatDateandTimeInformation_Node1 -- Yes --> N_FormatDateandTimeInformation_Node1_action N_FormatDateandTimeInformation_Node1_action --> E_FormatDateandTimeInformation N_FormatDateandTimeInformation_Node0 -- No --> N_FormatDateandTimeInformation_Node1 N_FormatDateandTimeInformation_Node2{"The system processes temporal data
for Merlin reporting"}:::decision N_FormatDateandTimeInformation_Node2_action["The date and time information is
formatted according to report
requirements"]:::main N_FormatDateandTimeInformation_Node2 -- Yes --> N_FormatDateandTimeInformation_Node2_action N_FormatDateandTimeInformation_Node2_action --> E_FormatDateandTimeInformation N_FormatDateandTimeInformation_Node1 -- No --> N_FormatDateandTimeInformation_Node2 N_FormatDateandTimeInformation_Node2 -- No --> E_FormatDateandTimeInformation
File: GCX016E.cbl
GIVEN: Location and station data has been added to the notification
WHEN:
  • The system processes date
  • Time information
THEN: Hold date, time, and related temporal information are formatted according to standard format
File: GCX016E.cbl
GIVEN: Processing date and time information is available
WHEN: The system formats message content
THEN:
  • Date
  • Time information is formatted according to merlin message standards
File: GCX016E.cbl
GIVEN: Date and time information is available for the cargo transaction
WHEN: The system processes temporal data for Merlin reporting
THEN:
  • The date
  • Time information is formatted according to report requirements
βœ“ Consolidated Acceptance Criteria
  • The system combines all elements into a final message → a comprehensive hold notification message is created with all required information 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_CreateComprehensiveHoldMessage(["Start Step"]) E_CreateComprehensiveHoldMessage(["End Step"]) N_CreateComprehensiveHoldMessage_Node0{"The system combines all elements
into a final message"}:::decision N_CreateComprehensiveHoldMessage_Node0_action["A comprehensive hold notification
message is created with all required
information properly structured"]:::main N_CreateComprehensiveHoldMessage_Node0 -- Yes --> N_CreateComprehensiveHoldMessage_Node0_action N_CreateComprehensiveHoldMessage_Node0_action --> E_CreateComprehensiveHoldMessage S_CreateComprehensiveHoldMessage --> N_CreateComprehensiveHoldMessage_Node0 N_CreateComprehensiveHoldMessage_Node0 -- No --> E_CreateComprehensiveHoldMessage
File: GCX016E.cbl
GIVEN: All message components including date and time have been formatted
WHEN: The system combines all elements into a final message
THEN: A comprehensive hold notification message is created with all required information properly structured
βœ“ Consolidated Acceptance Criteria
  • The system combines equipment, cargo, location, and hold information → all elements are properly integrated into a single comprehensive 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_CombineAllElements(["Start Step"]) E_CombineAllElements(["End Step"]) N_CombineAllElements_Node0{"The system combines equipment,
cargo, location, and hold
information"}:::decision N_CombineAllElements_Node0_action["All elements are properly
integrated into a single
comprehensive message structure"]:::main N_CombineAllElements_Node0 -- Yes --> N_CombineAllElements_Node0_action N_CombineAllElements_Node0_action --> E_CombineAllElements S_CombineAllElements --> N_CombineAllElements_Node0 N_CombineAllElements_Node0 -- No --> E_CombineAllElements
File: GCX016E.cbl
GIVEN: All individual message components have been prepared
WHEN: The system combines equipment, cargo, location, and hold information
THEN: All elements are properly integrated into a single comprehensive message structure
βœ“ Consolidated Acceptance Criteria
  • The system applies the standard hold notification template → the message conforms to established format standards and includes all required sections
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ApplyMessageTemplate(["Start Step"]) E_ApplyMessageTemplate(["End Step"]) N_ApplyMessageTemplate_Node0{"The system applies the standard
hold notification template"}:::decision N_ApplyMessageTemplate_Node0_action["The message conforms to established
format standards and includes all
required sections"]:::main N_ApplyMessageTemplate_Node0 -- Yes --> N_ApplyMessageTemplate_Node0_action N_ApplyMessageTemplate_Node0_action --> E_ApplyMessageTemplate S_ApplyMessageTemplate --> N_ApplyMessageTemplate_Node0 N_ApplyMessageTemplate_Node0 -- No --> E_ApplyMessageTemplate
File: GCX016E.cbl
GIVEN: All message elements have been combined
WHEN: The system applies the standard hold notification template
THEN:
  • The message conforms to established format standards
  • Includes all required sections
βœ“ Consolidated Acceptance Criteria
  • The system validates the message format and content → the message is confirmed to meet all format requirements and contains all mandatory information
  • The system validates message format → message format is validated against Merlin standards 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_ValidateMessageFormat(["Start Step"]) E_ValidateMessageFormat(["End Step"]) N_ValidateMessageFormat_Node0{"The system validates the message
format and content"}:::decision N_ValidateMessageFormat_Node0_action["The message is confirmed to meet
all format requirements and contains
all mandatory information"]:::main N_ValidateMessageFormat_Node0 -- Yes --> N_ValidateMessageFormat_Node0_action N_ValidateMessageFormat_Node0_action --> E_ValidateMessageFormat S_ValidateMessageFormat --> N_ValidateMessageFormat_Node0 N_ValidateMessageFormat_Node1{"The system validates message format"}:::decision N_ValidateMessageFormat_Node1_action["Message format is validated against
Merlin standards and requirements"]:::main N_ValidateMessageFormat_Node1 -- Yes --> N_ValidateMessageFormat_Node1_action N_ValidateMessageFormat_Node1_action --> E_ValidateMessageFormat N_ValidateMessageFormat_Node0 -- No --> N_ValidateMessageFormat_Node1 N_ValidateMessageFormat_Node1 -- No --> E_ValidateMessageFormat
File: GCX016E.cbl
GIVEN: Message template has been applied to the notification
WHEN:
  • The system validates the message format
  • Content
THEN:
  • The message is confirmed to meet all format requirements
  • Contains all mandatory information
File: GCX016E.cbl
GIVEN: Complete message content has been assembled
WHEN: The system validates message format
THEN:
  • Message format is validated against merlin standards
  • Requirements
βœ“ Consolidated Acceptance Criteria
  • The system routes the message to the Merlin message system → the message is successfully queued in the Merlin system for distribution
  • The system routes the message to Merlin → the message is successfully submitted to the Merlin messaging system 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_RoutetoMerlinMessageSystem(["Start Step"]) E_RoutetoMerlinMessageSystem(["End Step"]) N_RoutetoMerlinMessageSystem_Node0{"The system routes the message to
the Merlin message system"}:::decision N_RoutetoMerlinMessageSystem_Node0_action["The message is successfully queued
in the Merlin system for
distribution"]:::main N_RoutetoMerlinMessageSystem_Node0 -- Yes --> N_RoutetoMerlinMessageSystem_Node0_action N_RoutetoMerlinMessageSystem_Node0_action --> E_RoutetoMerlinMessageSystem S_RoutetoMerlinMessageSystem --> N_RoutetoMerlinMessageSystem_Node0 N_RoutetoMerlinMessageSystem_Node1{"The system routes the message to
Merlin"}:::decision N_RoutetoMerlinMessageSystem_Node1_action["The message is successfully
submitted to the Merlin messaging
system for processing"]:::main N_RoutetoMerlinMessageSystem_Node1 -- Yes --> N_RoutetoMerlinMessageSystem_Node1_action N_RoutetoMerlinMessageSystem_Node1_action --> E_RoutetoMerlinMessageSystem N_RoutetoMerlinMessageSystem_Node0 -- No --> N_RoutetoMerlinMessageSystem_Node1 N_RoutetoMerlinMessageSystem_Node1 -- No --> E_RoutetoMerlinMessageSystem
File: GCX016E.cbl
GIVEN: Hold notification message has been created and validated
WHEN: The system routes the message to the Merlin message system
THEN: The message is successfully queued in the Merlin system for distribution
File: GCX016E.cbl
GIVEN: A complete cancellation message is formatted with all required details
WHEN: The system routes the message to Merlin
THEN: The message is successfully submitted to the Merlin messaging system for processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the message for distribution → the hold notification is distributed to all appropriate recipients based on 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_DistributeHoldNotification(["Start Step"]) E_DistributeHoldNotification(["End Step"]) N_DistributeHoldNotification_Node0{"The system processes the message
for distribution"}:::decision N_DistributeHoldNotification_Node0_action["The hold notification is
distributed to all appropriate
recipients based on routing rules"]:::main N_DistributeHoldNotification_Node0 -- Yes --> N_DistributeHoldNotification_Node0_action N_DistributeHoldNotification_Node0_action --> E_DistributeHoldNotification S_DistributeHoldNotification --> N_DistributeHoldNotification_Node0 N_DistributeHoldNotification_Node0 -- No --> E_DistributeHoldNotification
File: GCX016E.cbl
GIVEN: Hold notification has been routed to the Merlin message system
WHEN: The system processes the message for distribution
THEN: The hold notification is distributed to all appropriate recipients based on routing rules
βœ“ Consolidated Acceptance Criteria
  • The system begins status analysis → all hold status flags, release status flags, proceed status flags, and information status flags are set 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_InitializeStatusAnalysisVariables(["Start Step"]) E_InitializeStatusAnalysisVariables(["End Step"]) N_InitializeStatusAnalysisVariables_Node0{"The system begins status analysis"}:::decision N_InitializeStatusAnalysisVariables_Node0_action["All hold status flags, release
status flags, proceed status flags,
and information status flags are set
to initial values"]:::main N_InitializeStatusAnalysisVariables_Node0 -- Yes --> N_InitializeStatusAnalysisVariables_Node0_action N_InitializeStatusAnalysisVariables_Node0_action --> E_InitializeStatusAnalysisVariables S_InitializeStatusAnalysisVariables --> N_InitializeStatusAnalysisVariables_Node0 N_InitializeStatusAnalysisVariables_Node0 -- No --> E_InitializeStatusAnalysisVariables
File: GCX016E.cbl
GIVEN: A cargo status array verification process is starting
WHEN: The system begins status analysis
THEN: All hold status flags, release status flags, proceed status flags, and information status flags are set to initial values
βœ“ Consolidated Acceptance Criteria
  • The system processes the status array → each status entry in the array is examined sequentially until all entries 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_LoopThroughS09AStatusArrayEntries(["Start Step"]) E_LoopThroughS09AStatusArrayEntries(["End Step"]) N_LoopThroughS09AStatusArrayEntries_Node0{"The system processes the status
array"}:::decision N_LoopThroughS09AStatusArrayEntries_Node0_action["Each status entry in the array is
examined sequentially until all
entries are processed"]:::main N_LoopThroughS09AStatusArrayEntries_Node0 -- Yes --> N_LoopThroughS09AStatusArrayEntries_Node0_action N_LoopThroughS09AStatusArrayEntries_Node0_action --> E_LoopThroughS09AStatusArrayEntries S_LoopThroughS09AStatusArrayEntries --> N_LoopThroughS09AStatusArrayEntries_Node0 N_LoopThroughS09AStatusArrayEntries_Node0 -- No --> E_LoopThroughS09AStatusArrayEntries
File: GCX016E.cbl
GIVEN: A cargo has S09A status array entries
WHEN: The system processes the status array
THEN: Each status entry in the array is examined sequentially until all entries are processed
βœ“ Consolidated Acceptance Criteria
  • The current entry position is evaluated → if more entries exist, continue processing; otherwise proceed to status evaluation
  • Processing status entries sequentially → continue to next entry if more exist, otherwise proceed to status 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_MoreStatusEntries(["Start Step"]) E_MoreStatusEntries(["End Step"]) N_MoreStatusEntries_Node0{"The current entry position is
evaluated"}:::decision N_MoreStatusEntries_Node0_action["If more entries exist, continue
processing otherwise proceed to
status evaluation"]:::main N_MoreStatusEntries_Node0 -- Yes --> N_MoreStatusEntries_Node0_action N_MoreStatusEntries_Node0_action --> E_MoreStatusEntries S_MoreStatusEntries --> N_MoreStatusEntries_Node0 N_MoreStatusEntries_Node1{"Processing status entries
sequentially"}:::decision N_MoreStatusEntries_Node1_action["Continue to next entry if more
exist, otherwise proceed to status
analysis"]:::main N_MoreStatusEntries_Node1 -- Yes --> N_MoreStatusEntries_Node1_action N_MoreStatusEntries_Node1_action --> E_MoreStatusEntries N_MoreStatusEntries_Node0 -- No --> N_MoreStatusEntries_Node1 N_MoreStatusEntries_Node1 -- No --> E_MoreStatusEntries
File: GCX016E.cbl
GIVEN: The system is processing S09A status array entries
WHEN: The current entry position is evaluated
THEN: If more entries exist, continue processing; otherwise proceed to status evaluation
File: GCX016E.cbl
GIVEN: S09A status arrays have been retrieved
WHEN: Processing status entries sequentially
THEN: Continue to next entry if more exist, otherwise proceed to status analysis
βœ“ Consolidated Acceptance Criteria
  • The entry is being processed → the disposition code, quantity, entry number, and other status data are extracted 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_AnalyzeIndividualStatusEntry(["Start Step"]) E_AnalyzeIndividualStatusEntry(["End Step"]) N_AnalyzeIndividualStatusEntry_Node0{"The entry is being processed"}:::decision N_AnalyzeIndividualStatusEntry_Node0_action["The disposition code, quantity,
entry number, and other status data
are extracted for analysis"]:::main N_AnalyzeIndividualStatusEntry_Node0 -- Yes --> N_AnalyzeIndividualStatusEntry_Node0_action N_AnalyzeIndividualStatusEntry_Node0_action --> E_AnalyzeIndividualStatusEntry S_AnalyzeIndividualStatusEntry --> N_AnalyzeIndividualStatusEntry_Node0 N_AnalyzeIndividualStatusEntry_Node0 -- No --> E_AnalyzeIndividualStatusEntry
File: GCX016E.cbl
GIVEN: A status entry exists in the S09A array
WHEN: The entry is being processed
THEN: The disposition code, quantity, entry number, and other status data are extracted for analysis
βœ“ Consolidated Acceptance Criteria
  • The disposition code type is evaluated → the entry is classified as Hold, Release, Proceed, or Information type based on the disposition code characteristics
  • If the status type for routing to appropriate processing logic → status is classified as HOLD, RELEASE, PTT (Proceed to Transit), or PTT-EX (Proceed to Export) based on cargo disposition
  • If the cargo status to determine GCCIIS status type → the system selects HOLD, RELEASE, PTT, or PTT-EX status based on cargo 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_StatusType(["Start Step"]) E_StatusType(["End Step"]) N_StatusType_Node0{"The disposition code type is
evaluated"}:::decision N_StatusType_Node0_action["The entry is classified as Hold,
Release, Proceed, or Information
type based on the disposition code
characteristics"]:::main N_StatusType_Node0 -- Yes --> N_StatusType_Node0_action N_StatusType_Node0_action --> E_StatusType S_StatusType --> N_StatusType_Node0 N_StatusType_Node1{"The system evaluates the status
type for routing to appropriate
processing logic"}:::decision N_StatusType_Node1_action["Status is classified as HOLD,
RELEASE, PTT Proceed to Transit, or
PTT-EX Proceed to Export based on
cargo disposition"]:::main N_StatusType_Node1 -- Yes --> N_StatusType_Node1_action N_StatusType_Node1_action --> E_StatusType N_StatusType_Node0 -- No --> N_StatusType_Node1 N_StatusType_Node2{"The system evaluates the cargo
status to determine GCCIIS status
type"}:::decision N_StatusType_Node2_action["The system selects HOLD, RELEASE,
PTT, or PTT-EX status based on cargo
conditions"]:::main N_StatusType_Node2 -- Yes --> N_StatusType_Node2_action N_StatusType_Node2_action --> E_StatusType N_StatusType_Node1 -- No --> N_StatusType_Node2 N_StatusType_Node2 -- No --> E_StatusType
File: GCX016E.cbl
GIVEN: A status entry with a disposition code is being analyzed
WHEN: The disposition code type is evaluated
THEN: The entry is classified as Hold, Release, Proceed, or Information type based on the disposition code characteristics
File: GCX016E.cbl
GIVEN: A cargo status has been mapped to GCCIIS format
WHEN: The system evaluates the status type for routing to appropriate processing logic
THEN: Status is classified as HOLD, RELEASE, PTT (Proceed to Transit), or PTT-EX (Proceed to Export) based on cargo disposition
File: GCX016E.cbl
GIVEN: A cargo status update is ready for GCCIIS transmission
WHEN: The system evaluates the cargo status to determine GCCIIS status type
THEN: The system selects HOLD, RELEASE, PTT, or PTT-EX status based on cargo conditions
βœ“ Consolidated Acceptance Criteria
  • The hold disposition code is processed → hold-specific data including location, reason, and quantity are extracted and 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_ProcessHoldDispositionCode(["Start Step"]) E_ProcessHoldDispositionCode(["End Step"]) N_ProcessHoldDispositionCode_Node0{"The hold disposition code is
processed"}:::decision N_ProcessHoldDispositionCode_Node0_action["Hold-specific data including
location, reason, and quantity are
extracted and processed"]:::main N_ProcessHoldDispositionCode_Node0 -- Yes --> N_ProcessHoldDispositionCode_Node0_action N_ProcessHoldDispositionCode_Node0_action --> E_ProcessHoldDispositionCode S_ProcessHoldDispositionCode --> N_ProcessHoldDispositionCode_Node0 N_ProcessHoldDispositionCode_Node0 -- No --> E_ProcessHoldDispositionCode
File: GCX016E.cbl
GIVEN: A status entry contains a hold-type disposition code
WHEN: The hold disposition code is processed
THEN:
  • Hold-specific data including location, reason, and quantity are extracted
  • Processed
βœ“ Consolidated Acceptance Criteria
  • The release disposition code is processed → release-specific data including quantity, entry number, and release authority are extracted and 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_ProcessReleaseDispositionCode(["Start Step"]) E_ProcessReleaseDispositionCode(["End Step"]) N_ProcessReleaseDispositionCode_Node0{"The release disposition code is
processed"}:::decision N_ProcessReleaseDispositionCode_Node0_action["Release-specific data including
quantity, entry number, and release
authority are extracted and
processed"]:::main N_ProcessReleaseDispositionCode_Node0 -- Yes --> N_ProcessReleaseDispositionCode_Node0_action N_ProcessReleaseDispositionCode_Node0_action --> E_ProcessReleaseDispositionCode S_ProcessReleaseDispositionCode --> N_ProcessReleaseDispositionCode_Node0 N_ProcessReleaseDispositionCode_Node0 -- No --> E_ProcessReleaseDispositionCode
File: GCX016E.cbl
GIVEN: A status entry contains a release-type disposition code
WHEN: The release disposition code is processed
THEN:
  • Release-specific data including quantity, entry number, and release authority are extracted
  • Processed
βœ“ Consolidated Acceptance Criteria
  • The proceed disposition code is processed → proceed-specific data including destination, timing, and conditions are extracted and 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_ProcessProceedDispositionCode(["Start Step"]) E_ProcessProceedDispositionCode(["End Step"]) N_ProcessProceedDispositionCode_Node0{"The proceed disposition code is
processed"}:::decision N_ProcessProceedDispositionCode_Node0_action["Proceed-specific data including
destination, timing, and conditions
are extracted and processed"]:::main N_ProcessProceedDispositionCode_Node0 -- Yes --> N_ProcessProceedDispositionCode_Node0_action N_ProcessProceedDispositionCode_Node0_action --> E_ProcessProceedDispositionCode S_ProcessProceedDispositionCode --> N_ProcessProceedDispositionCode_Node0 N_ProcessProceedDispositionCode_Node0 -- No --> E_ProcessProceedDispositionCode
File: GCX016E.cbl
GIVEN: A status entry contains a proceed-type disposition code
WHEN: The proceed disposition code is processed
THEN:
  • Proceed-specific data including destination, timing, and conditions are extracted
  • Processed
βœ“ Consolidated Acceptance Criteria
  • The information disposition code is processed → informational data is extracted and recorded without affecting cargo 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_ProcessStatusInformationCode(["Start Step"]) E_ProcessStatusInformationCode(["End Step"]) N_ProcessStatusInformationCode_Node0{"The information disposition code is
processed"}:::decision N_ProcessStatusInformationCode_Node0_action["Informational data is extracted and
recorded without affecting cargo
processing status"]:::main N_ProcessStatusInformationCode_Node0 -- Yes --> N_ProcessStatusInformationCode_Node0_action N_ProcessStatusInformationCode_Node0_action --> E_ProcessStatusInformationCode S_ProcessStatusInformationCode --> N_ProcessStatusInformationCode_Node0 N_ProcessStatusInformationCode_Node0 -- No --> E_ProcessStatusInformationCode
File: GCX016E.cbl
GIVEN: A status entry contains an information-type disposition code
WHEN: The information disposition code is processed
THEN:
  • Informational data is extracted
  • Recorded without affecting cargo processing status
βœ“ Consolidated Acceptance Criteria
  • Hold status flags are updated → appropriate hold flags are set including border hold, destination hold, FDA hold, or general hold based on the disposition code
  • The system updates status flags → the system updates all hold status flags, indicators, and related 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_UpdateHoldStatusFlags(["Start Step"]) E_UpdateHoldStatusFlags(["End Step"]) N_UpdateHoldStatusFlags_Node0{"Hold status flags are updated"}:::decision N_UpdateHoldStatusFlags_Node0_action["Appropriate hold flags are set
including border hold, destination
hold, FDA hold, or general hold
based on the disposition code"]:::main N_UpdateHoldStatusFlags_Node0 -- Yes --> N_UpdateHoldStatusFlags_Node0_action N_UpdateHoldStatusFlags_Node0_action --> E_UpdateHoldStatusFlags S_UpdateHoldStatusFlags --> N_UpdateHoldStatusFlags_Node0 N_UpdateHoldStatusFlags_Node1{"The system updates status flags"}:::decision N_UpdateHoldStatusFlags_Node1_action["The system updates all hold status
flags, indicators, and related cargo
status information"]:::main N_UpdateHoldStatusFlags_Node1 -- Yes --> N_UpdateHoldStatusFlags_Node1_action N_UpdateHoldStatusFlags_Node1_action --> E_UpdateHoldStatusFlags N_UpdateHoldStatusFlags_Node0 -- No --> N_UpdateHoldStatusFlags_Node1 N_UpdateHoldStatusFlags_Node1 -- No --> E_UpdateHoldStatusFlags
File: GCX016E.cbl
GIVEN: A hold disposition code has been processed
WHEN: Hold status flags are updated
THEN: Appropriate hold flags are set including border hold, destination hold, FDA hold, or general hold based on the disposition code
File: GCX016E.cbl
GIVEN: Final hold status has been validated
WHEN: The system updates status flags
THEN: The system updates all hold status flags, indicators, and related cargo status information
βœ“ Consolidated Acceptance Criteria
  • Release status flags are updated → appropriate release flags are set including manual release, auto release, or PTT release based on 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_UpdateReleaseStatusFlags(["Start Step"]) E_UpdateReleaseStatusFlags(["End Step"]) N_UpdateReleaseStatusFlags_Node0{"Release status flags are updated"}:::decision N_UpdateReleaseStatusFlags_Node0_action["Appropriate release flags are set
including manual release, auto
release, or PTT release based on the
disposition code"]:::main N_UpdateReleaseStatusFlags_Node0 -- Yes --> N_UpdateReleaseStatusFlags_Node0_action N_UpdateReleaseStatusFlags_Node0_action --> E_UpdateReleaseStatusFlags S_UpdateReleaseStatusFlags --> N_UpdateReleaseStatusFlags_Node0 N_UpdateReleaseStatusFlags_Node0 -- No --> E_UpdateReleaseStatusFlags
File: GCX016E.cbl
GIVEN: A release disposition code has been processed
WHEN: Release status flags are updated
THEN: Appropriate release flags are set including manual release, auto release, or PTT release based on the disposition code
βœ“ Consolidated Acceptance Criteria
  • Proceed status flags are updated → proceed flags are set to indicate cargo can proceed to destination or 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_UpdateProceedStatusFlags(["Start Step"]) E_UpdateProceedStatusFlags(["End Step"]) N_UpdateProceedStatusFlags_Node0{"Proceed status flags are updated"}:::decision N_UpdateProceedStatusFlags_Node0_action["Proceed flags are set to indicate
cargo can proceed to destination or
next processing step"]:::main N_UpdateProceedStatusFlags_Node0 -- Yes --> N_UpdateProceedStatusFlags_Node0_action N_UpdateProceedStatusFlags_Node0_action --> E_UpdateProceedStatusFlags S_UpdateProceedStatusFlags --> N_UpdateProceedStatusFlags_Node0 N_UpdateProceedStatusFlags_Node0 -- No --> E_UpdateProceedStatusFlags
File: GCX016E.cbl
GIVEN: A proceed disposition code has been processed
WHEN: Proceed status flags are updated
THEN: Proceed flags are set to indicate cargo can proceed to destination or next processing step
βœ“ Consolidated Acceptance Criteria
  • Information status flags are updated → information flags are set to record status details without affecting processing 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_UpdateInformationStatusFlags(["Start Step"]) E_UpdateInformationStatusFlags(["End Step"]) N_UpdateInformationStatusFlags_Node0{"Information status flags are
updated"}:::decision N_UpdateInformationStatusFlags_Node0_action["Information flags are set to record
status details without affecting
processing decisions"]:::main N_UpdateInformationStatusFlags_Node0 -- Yes --> N_UpdateInformationStatusFlags_Node0_action N_UpdateInformationStatusFlags_Node0_action --> E_UpdateInformationStatusFlags S_UpdateInformationStatusFlags --> N_UpdateInformationStatusFlags_Node0 N_UpdateInformationStatusFlags_Node0 -- No --> E_UpdateInformationStatusFlags
File: GCX016E.cbl
GIVEN: An information disposition code has been processed
WHEN: Information status flags are updated
THEN: Information flags are set to record status details without affecting processing decisions
βœ“ Consolidated Acceptance Criteria
  • Combined status evaluation occurs → the system evaluates the combination of hold, release, proceed, and information flags to determine 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_EvaluateCombinedStatusConditions(["Start Step"]) E_EvaluateCombinedStatusConditions(["End Step"]) N_EvaluateCombinedStatusConditions_Node0{"Combined status evaluation occurs"}:::decision N_EvaluateCombinedStatusConditions_Node0_action["The system evaluates the
combination of hold, release,
proceed, and information flags to
determine final status"]:::main N_EvaluateCombinedStatusConditions_Node0 -- Yes --> N_EvaluateCombinedStatusConditions_Node0_action N_EvaluateCombinedStatusConditions_Node0_action --> E_EvaluateCombinedStatusConditions S_EvaluateCombinedStatusConditions --> N_EvaluateCombinedStatusConditions_Node0 N_EvaluateCombinedStatusConditions_Node0 -- No --> E_EvaluateCombinedStatusConditions
File: GCX016E.cbl
GIVEN: All status entries have been processed and flags updated
WHEN: Combined status evaluation occurs
THEN: The system evaluates the combination of hold, release, proceed, and information flags to determine final status
βœ“ Consolidated Acceptance Criteria
  • Hold code presence is evaluated → if any hold flags are set, the cargo has hold conditions; otherwise proceed to check other status types
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HasHoldCodes(["Start Step"]) E_HasHoldCodes(["End Step"]) N_HasHoldCodes_Node0{"Hold code presence is evaluated"}:::decision N_HasHoldCodes_Node0_action["If any hold flags are set, the
cargo has hold conditions otherwise
proceed to check other status types"]:::main N_HasHoldCodes_Node0 -- Yes --> N_HasHoldCodes_Node0_action N_HasHoldCodes_Node0_action --> E_HasHoldCodes S_HasHoldCodes --> N_HasHoldCodes_Node0 N_HasHoldCodes_Node0 -- No --> E_HasHoldCodes
File: GCX016E.cbl
GIVEN: Status array processing is complete
WHEN: Hold code presence is evaluated
THEN: If any hold flags are set, the cargo has hold conditions; otherwise proceed to check other status types
βœ“ Consolidated Acceptance Criteria
  • Release code presence is evaluated → if release flags are set and override hold conditions, set released status; otherwise maintain 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_HasReleaseCodes(["Start Step"]) E_HasReleaseCodes(["End Step"]) N_HasReleaseCodes_Node0{"Release code presence is evaluated"}:::decision N_HasReleaseCodes_Node0_action["If release flags are set and
override hold conditions, set
released status otherwise maintain
hold status"]:::main N_HasReleaseCodes_Node0 -- Yes --> N_HasReleaseCodes_Node0_action N_HasReleaseCodes_Node0_action --> E_HasReleaseCodes S_HasReleaseCodes --> N_HasReleaseCodes_Node0 N_HasReleaseCodes_Node0 -- No --> E_HasReleaseCodes
File: GCX016E.cbl
GIVEN: Hold code evaluation is complete
WHEN: Release code presence is evaluated
THEN:
  • If release flags are set
  • Override hold conditions, set released status; otherwise maintain hold status
βœ“ Consolidated Acceptance Criteria
  • Proceed code presence is evaluated → if proceed flags are set, set proceed status; otherwise set information-only 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_HasProceedCodes(["Start Step"]) E_HasProceedCodes(["End Step"]) N_HasProceedCodes_Node0{"Proceed code presence is evaluated"}:::decision N_HasProceedCodes_Node0_action["If proceed flags are set, set
proceed status otherwise set
information-only status"]:::main N_HasProceedCodes_Node0 -- Yes --> N_HasProceedCodes_Node0_action N_HasProceedCodes_Node0_action --> E_HasProceedCodes S_HasProceedCodes --> N_HasProceedCodes_Node0 N_HasProceedCodes_Node0 -- No --> E_HasProceedCodes
File: GCX016E.cbl
GIVEN: Release code evaluation is complete and no overriding release found
WHEN: Proceed code presence is evaluated
THEN: If proceed flags are set, set proceed status; otherwise set information-only status
βœ“ Consolidated Acceptance Criteria
  • Final status is determined → the cargo status is set to HELD with appropriate hold reason and location
  • Determining final status → set the cargo status 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_SetFinalStatusHELD(["Start Step"]) E_SetFinalStatusHELD(["End Step"]) N_SetFinalStatusHELD_Node0{"Final status is determined"}:::decision N_SetFinalStatusHELD_Node0_action["The cargo status is set to HELD
with appropriate hold reason and
location"]:::main N_SetFinalStatusHELD_Node0 -- Yes --> N_SetFinalStatusHELD_Node0_action N_SetFinalStatusHELD_Node0_action --> E_SetFinalStatusHELD S_SetFinalStatusHELD --> N_SetFinalStatusHELD_Node0 N_SetFinalStatusHELD_Node1{"Determining final status"}:::decision N_SetFinalStatusHELD_Node1_action["Set the cargo status to HELD"]:::main N_SetFinalStatusHELD_Node1 -- Yes --> N_SetFinalStatusHELD_Node1_action N_SetFinalStatusHELD_Node1_action --> E_SetFinalStatusHELD N_SetFinalStatusHELD_Node0 -- No --> N_SetFinalStatusHELD_Node1 N_SetFinalStatusHELD_Node1 -- No --> E_SetFinalStatusHELD
File: GCX016E.cbl
GIVEN: Hold codes exist and no overriding release codes are present
WHEN: Final status is determined
THEN:
  • The cargo status is set to held with appropriate hold reason
  • Location
File: GCX016E.cbl
GIVEN: Hold status is active and no manual release is present
WHEN: Determining final status
THEN: Set the cargo status to HELD
βœ“ Consolidated Acceptance Criteria
  • Final status is determined → the cargo status is set to RELEASED with appropriate release quantity and authority
  • Determining final status → set the cargo status to RELEASED as the 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_SetFinalStatusRELEASED(["Start Step"]) E_SetFinalStatusRELEASED(["End Step"]) N_SetFinalStatusRELEASED_Node0{"Final status is determined"}:::decision N_SetFinalStatusRELEASED_Node0_action["The cargo status is set to RELEASED
with appropriate release quantity
and authority"]:::main N_SetFinalStatusRELEASED_Node0 -- Yes --> N_SetFinalStatusRELEASED_Node0_action N_SetFinalStatusRELEASED_Node0_action --> E_SetFinalStatusRELEASED S_SetFinalStatusRELEASED --> N_SetFinalStatusRELEASED_Node0 N_SetFinalStatusRELEASED_Node1{"Determining final status"}:::decision N_SetFinalStatusRELEASED_Node1_action["Set the cargo status to RELEASED as
the default"]:::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: GCX016E.cbl
GIVEN: Release codes exist that override any hold conditions
WHEN: Final status is determined
THEN:
  • The cargo status is set to released with appropriate release quantity
  • Authority
File: GCX016E.cbl
GIVEN: No specific status conditions (hold, proceed, arrival, export) are active
WHEN: Determining final status
THEN: Set the cargo status to RELEASED as the default
βœ“ Consolidated Acceptance Criteria
  • Final status is determined → the cargo status is set to PROCEED allowing movement to next processing step
  • The system applies final status assignment logic → the system sets cargo status to PROCEED and enables next stage processing workflows
  • Determining final status → set the cargo status to 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_SetFinalStatusPROCEED(["Start Step"]) E_SetFinalStatusPROCEED(["End Step"]) N_SetFinalStatusPROCEED_Node0{"Final status is determined"}:::decision N_SetFinalStatusPROCEED_Node0_action["The cargo status is set to PROCEED
allowing movement to next processing
step"]:::main N_SetFinalStatusPROCEED_Node0 -- Yes --> N_SetFinalStatusPROCEED_Node0_action N_SetFinalStatusPROCEED_Node0_action --> E_SetFinalStatusPROCEED S_SetFinalStatusPROCEED --> N_SetFinalStatusPROCEED_Node0 N_SetFinalStatusPROCEED_Node1{"The system applies final status
assignment logic"}:::decision N_SetFinalStatusPROCEED_Node1_action["The system sets cargo status to
PROCEED and enables next stage
processing workflows"]:::main N_SetFinalStatusPROCEED_Node1 -- Yes --> N_SetFinalStatusPROCEED_Node1_action N_SetFinalStatusPROCEED_Node1_action --> E_SetFinalStatusPROCEED N_SetFinalStatusPROCEED_Node0 -- No --> N_SetFinalStatusPROCEED_Node1 N_SetFinalStatusPROCEED_Node2{"Determining final status"}:::decision N_SetFinalStatusPROCEED_Node2_action["Set the cargo status to PROCEED"]:::main N_SetFinalStatusPROCEED_Node2 -- Yes --> N_SetFinalStatusPROCEED_Node2_action N_SetFinalStatusPROCEED_Node2_action --> E_SetFinalStatusPROCEED N_SetFinalStatusPROCEED_Node1 -- No --> N_SetFinalStatusPROCEED_Node2 N_SetFinalStatusPROCEED_Node2 -- No --> E_SetFinalStatusPROCEED
File: GCX016E.cbl
GIVEN: Proceed codes exist and no hold or overriding release codes are present
WHEN: Final status is determined
THEN: The cargo status is set to PROCEED allowing movement to next processing step
File: GCX016E.cbl
GIVEN: A cargo record where proceed authorization takes precedence and no blocking conditions exist
WHEN: The system applies final status assignment logic
THEN:
  • The system sets cargo status to proceed
  • Enables next stage processing workflows
File: GCX016E.cbl
GIVEN: Proceed status is active and in-bond entry conditions are met
WHEN: Determining final status
THEN: Set the cargo status to PROCEED
βœ“ Consolidated Acceptance Criteria
  • Final status is determined → the cargo status is set to INFORMATION ONLY indicating no action 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_SetFinalStatusINFORMATIONONLY(["Start Step"]) E_SetFinalStatusINFORMATIONONLY(["End Step"]) N_SetFinalStatusINFORMATIONONLY_Node0{"Final status is determined"}:::decision N_SetFinalStatusINFORMATIONONLY_Node0_action["The cargo status is set to
INFORMATION ONLY indicating no
action required"]:::main N_SetFinalStatusINFORMATIONONLY_Node0 -- Yes --> N_SetFinalStatusINFORMATIONONLY_Node0_action N_SetFinalStatusINFORMATIONONLY_Node0_action --> E_SetFinalStatusINFORMATIONONLY S_SetFinalStatusINFORMATIONONLY --> N_SetFinalStatusINFORMATIONONLY_Node0 N_SetFinalStatusINFORMATIONONLY_Node0 -- No --> E_SetFinalStatusINFORMATIONONLY
File: GCX016E.cbl
GIVEN: Only information codes exist with no hold, release, or proceed codes
WHEN: Final status is determined
THEN: The cargo status is set to INFORMATION ONLY indicating no action required
βœ“ Consolidated Acceptance Criteria
  • The system begins individual status analysis → all status flags (hold, release, proceed, status info, manual release) are set to false or initial values
  • The complex status logic evaluation process begins → all status flags (hold, release, proceed, arrival, export) are set to false or 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_InitializeStatusFlags(["Start Step"]) E_InitializeStatusFlags(["End Step"]) N_InitializeStatusFlags_Node0{"The system begins individual status
analysis"}:::decision N_InitializeStatusFlags_Node0_action["All status flags hold, release,
proceed, status info, manual release
are set to false or 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 complex status logic evaluation
process begins"}:::decision N_InitializeStatusFlags_Node1_action["All status flags hold, release,
proceed, arrival, export are set to
false or initial values"]:::main N_InitializeStatusFlags_Node1 -- Yes --> N_InitializeStatusFlags_Node1_action N_InitializeStatusFlags_Node1_action --> E_InitializeStatusFlags N_InitializeStatusFlags_Node0 -- No --> N_InitializeStatusFlags_Node1 N_InitializeStatusFlags_Node1 -- No --> E_InitializeStatusFlags
File: GCX016E.cbl
GIVEN: A cargo status analysis process is starting
WHEN: The system begins individual status analysis
THEN: All status flags (hold, release, proceed, status info, manual release) are set to false or initial values
File: GCX016E.cbl
GIVEN: A cargo record requires status evaluation
WHEN: The complex status logic evaluation process begins
THEN: All status flags (hold, release, proceed, arrival, export) are set to false or initial values
βœ“ Consolidated Acceptance Criteria
  • The system checks for remaining entries after processing current entry → if more entries exist, continue processing; 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_MoreEntries(["Start Step"]) E_MoreEntries(["End Step"]) N_MoreEntries_Node0{"The system checks for remaining
entries after processing current
entry"}:::decision N_MoreEntries_Node0_action["If more entries exist, continue
processing otherwise proceed to
final status determination"]:::main N_MoreEntries_Node0 -- Yes --> N_MoreEntries_Node0_action N_MoreEntries_Node0_action --> E_MoreEntries S_MoreEntries --> N_MoreEntries_Node0 N_MoreEntries_Node0 -- No --> E_MoreEntries
File: GCX016E.cbl
GIVEN: A cargo status array is being processed sequentially
WHEN: The system checks for remaining entries after processing current entry
THEN: If more entries exist, continue processing; otherwise proceed to final status determination
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the disposition code → the disposition code is categorized as Hold, Release, Proceed, or Status Info 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_AnalyzeDispositionCode(["Start Step"]) E_AnalyzeDispositionCode(["End Step"]) N_AnalyzeDispositionCode_Node0{"The system analyzes the disposition
code"}:::decision N_AnalyzeDispositionCode_Node0_action["The disposition code is categorized
as Hold, Release, Proceed, or Status
Info type"]:::main N_AnalyzeDispositionCode_Node0 -- Yes --> N_AnalyzeDispositionCode_Node0_action N_AnalyzeDispositionCode_Node0_action --> E_AnalyzeDispositionCode S_AnalyzeDispositionCode --> N_AnalyzeDispositionCode_Node0 N_AnalyzeDispositionCode_Node0 -- No --> E_AnalyzeDispositionCode
File: GCX016E.cbl
GIVEN: A status array entry contains a disposition code
WHEN: The system analyzes the disposition code
THEN: The disposition code is categorized as Hold, Release, Proceed, or Status Info type
βœ“ Consolidated Acceptance Criteria
  • The system determines the code type (Hold, Release, Proceed, or Status Info) → the appropriate processing path is selected 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_CodeType(["Start Step"]) E_CodeType(["End Step"]) N_CodeType_Node0{"The system determines the code type
Hold, Release, Proceed, or Status
Info"}:::decision N_CodeType_Node0_action["The appropriate processing path is
selected based on the code type"]:::main N_CodeType_Node0 -- Yes --> N_CodeType_Node0_action N_CodeType_Node0_action --> E_CodeType S_CodeType --> N_CodeType_Node0 N_CodeType_Node0 -- No --> E_CodeType
File: GCX016E.cbl
GIVEN: A disposition code has been analyzed and categorized
WHEN: The system determines the code type (Hold, Release, Proceed, or Status Info)
THEN: The appropriate processing path is selected based on the code type
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold disposition code → the hold status flag is set to true for subsequent hold condition 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_SetHoldFlag(["Start Step"]) E_SetHoldFlag(["End Step"]) N_SetHoldFlag_Node0{"The system processes the hold
disposition code"}:::decision N_SetHoldFlag_Node0_action["The hold status flag is set to true
for subsequent hold condition
evaluation"]:::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: GCX016E.cbl
GIVEN: A disposition code is categorized as a Hold type
WHEN: The system processes the hold disposition code
THEN: The hold status flag is set to true for subsequent hold condition evaluation
βœ“ Consolidated Acceptance Criteria
  • The system processes the release disposition code → the release status flag is set to true for subsequent release condition 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_SetReleaseFlag(["Start Step"]) E_SetReleaseFlag(["End Step"]) N_SetReleaseFlag_Node0{"The system processes the release
disposition code"}:::decision N_SetReleaseFlag_Node0_action["The release status flag is set to
true for subsequent release
condition evaluation"]:::main N_SetReleaseFlag_Node0 -- Yes --> N_SetReleaseFlag_Node0_action N_SetReleaseFlag_Node0_action --> E_SetReleaseFlag S_SetReleaseFlag --> N_SetReleaseFlag_Node0 N_SetReleaseFlag_Node0 -- No --> E_SetReleaseFlag
File: GCX016E.cbl
GIVEN: A disposition code is categorized as a Release type
WHEN: The system processes the release disposition code
THEN: The release status flag is set to true for subsequent release condition evaluation
βœ“ Consolidated Acceptance Criteria
  • The system processes the proceed disposition code → the proceed status flag is set to true for subsequent proceed condition 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_SetProceedFlag(["Start Step"]) E_SetProceedFlag(["End Step"]) N_SetProceedFlag_Node0{"The system processes the proceed
disposition code"}:::decision N_SetProceedFlag_Node0_action["The proceed status flag is set to
true for subsequent proceed
condition evaluation"]:::main N_SetProceedFlag_Node0 -- Yes --> N_SetProceedFlag_Node0_action N_SetProceedFlag_Node0_action --> E_SetProceedFlag S_SetProceedFlag --> N_SetProceedFlag_Node0 N_SetProceedFlag_Node0 -- No --> E_SetProceedFlag
File: GCX016E.cbl
GIVEN: A disposition code is categorized as a Proceed type
WHEN: The system processes the proceed disposition code
THEN: The proceed status flag is set to true for subsequent proceed condition evaluation
βœ“ Consolidated Acceptance Criteria
  • The system processes the informational disposition code → the status info flag is set and processing continues to next entry without further evaluation
  • The system sets the status information flag → the flag is set to indicate status information processing has 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_SetStatusInfoFlag(["Start Step"]) E_SetStatusInfoFlag(["End Step"]) N_SetStatusInfoFlag_Node0{"The system processes the
informational disposition code"}:::decision N_SetStatusInfoFlag_Node0_action["The status info flag is set and
processing continues to next entry
without further evaluation"]:::main N_SetStatusInfoFlag_Node0 -- Yes --> N_SetStatusInfoFlag_Node0_action N_SetStatusInfoFlag_Node0_action --> E_SetStatusInfoFlag S_SetStatusInfoFlag --> N_SetStatusInfoFlag_Node0 N_SetStatusInfoFlag_Node1{"The system sets the status
information flag"}:::decision N_SetStatusInfoFlag_Node1_action["The flag is set to indicate status
information processing has occurred"]:::main N_SetStatusInfoFlag_Node1 -- Yes --> N_SetStatusInfoFlag_Node1_action N_SetStatusInfoFlag_Node1_action --> E_SetStatusInfoFlag N_SetStatusInfoFlag_Node0 -- No --> N_SetStatusInfoFlag_Node1 N_SetStatusInfoFlag_Node1 -- No --> E_SetStatusInfoFlag
File: GCX016E.cbl
GIVEN: A disposition code is categorized as Status Info type
WHEN: The system processes the informational disposition code
THEN:
  • The status info flag is set
  • Processing continues to next entry without further evaluation
File: GCX016E.cbl
GIVEN: A successfully inserted status information code
WHEN: The system sets the status information flag
THEN: The flag is set to indicate status information processing has occurred
βœ“ Consolidated Acceptance Criteria
  • If hold-specific business conditions (location, quantity, regulatory requirements) → hold conditions are assessed to determine if cargo hold business flag should be 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_EvaluateHoldConditions(["Start Step"]) E_EvaluateHoldConditions(["End Step"]) N_EvaluateHoldConditions_Node0{"The system evaluates hold-specific
business conditions location,
quantity, regulatory requirements"}:::decision N_EvaluateHoldConditions_Node0_action["Hold conditions are assessed to
determine if cargo hold business
flag should be activated"]:::main N_EvaluateHoldConditions_Node0 -- Yes --> N_EvaluateHoldConditions_Node0_action N_EvaluateHoldConditions_Node0_action --> E_EvaluateHoldConditions S_EvaluateHoldConditions --> N_EvaluateHoldConditions_Node0 N_EvaluateHoldConditions_Node0 -- No --> E_EvaluateHoldConditions
File: GCX016E.cbl
GIVEN: A hold status flag has been set from disposition code analysis
WHEN: The system evaluates hold-specific business conditions (location, quantity, regulatory requirements)
THEN: Hold conditions are assessed to determine if cargo hold business flag should be activated
βœ“ Consolidated Acceptance Criteria
  • The system checks if hold status should be applied → if hold conditions are met, set cargo hold business flag; otherwise proceed to release evaluation
  • If the hold check results → if any hold status is found, proceed to manual release check; if no holds found, proceed to release eligibility 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_HoldStatusFound(["Start Step"]) E_HoldStatusFound(["End Step"]) N_HoldStatusFound_Node0{"The system checks if hold status
should be applied"}:::decision N_HoldStatusFound_Node0_action["If hold conditions are met, set
cargo hold business flag otherwise
proceed to release evaluation"]:::main N_HoldStatusFound_Node0 -- Yes --> N_HoldStatusFound_Node0_action N_HoldStatusFound_Node0_action --> E_HoldStatusFound S_HoldStatusFound --> N_HoldStatusFound_Node0 N_HoldStatusFound_Node1{"The system evaluates the hold check
results"}:::decision N_HoldStatusFound_Node1_action["If any hold status is found,
proceed to manual release check if
no holds found, proceed to release
eligibility evaluation"]:::main N_HoldStatusFound_Node1 -- Yes --> N_HoldStatusFound_Node1_action N_HoldStatusFound_Node1_action --> E_HoldStatusFound N_HoldStatusFound_Node0 -- No --> N_HoldStatusFound_Node1 N_HoldStatusFound_Node1 -- No --> E_HoldStatusFound
File: GCX016E.cbl
GIVEN: Hold conditions have been evaluated for a cargo
WHEN: The system checks if hold status should be applied
THEN: If hold conditions are met, set cargo hold business flag; otherwise proceed to release evaluation
File: GCX016E.cbl
GIVEN: Hold status check has been completed on a cargo record
WHEN: The system evaluates the hold check results
THEN: If any hold status is found, proceed to manual release check; if no holds found, proceed to release eligibility evaluation
βœ“ Consolidated Acceptance Criteria
  • The system confirms hold status should be applied to cargo → the cargo hold business flag is set to indicate 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_SetCargoHoldBusinessFlag(["Start Step"]) E_SetCargoHoldBusinessFlag(["End Step"]) N_SetCargoHoldBusinessFlag_Node0{"The system confirms hold status
should be applied to cargo"}:::decision N_SetCargoHoldBusinessFlag_Node0_action["The cargo hold business flag is set
to indicate cargo is in hold status"]:::main N_SetCargoHoldBusinessFlag_Node0 -- Yes --> N_SetCargoHoldBusinessFlag_Node0_action N_SetCargoHoldBusinessFlag_Node0_action --> E_SetCargoHoldBusinessFlag S_SetCargoHoldBusinessFlag --> N_SetCargoHoldBusinessFlag_Node0 N_SetCargoHoldBusinessFlag_Node0 -- No --> E_SetCargoHoldBusinessFlag
File: GCX016E.cbl
GIVEN: Hold conditions have been evaluated and determined to be applicable
WHEN: The system confirms hold status should be applied to cargo
THEN: The cargo hold business flag is set to indicate cargo is in hold status
βœ“ Consolidated Acceptance Criteria
  • If release-specific business conditions (quantity validation, regulatory clearance) → release conditions are assessed to determine if cargo release business flag should be activated
  • If release conditions → release codes are categorized as full release, partial release, or conditional release based on quantity and 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_EvaluateReleaseConditions(["Start Step"]) E_EvaluateReleaseConditions(["End Step"]) N_EvaluateReleaseConditions_Node0{"The system evaluates
release-specific business conditions
quantity validation, regulatory
clearance"}:::decision N_EvaluateReleaseConditions_Node0_action["Release conditions are assessed to
determine if cargo release business
flag should be activated"]:::main N_EvaluateReleaseConditions_Node0 -- Yes --> N_EvaluateReleaseConditions_Node0_action N_EvaluateReleaseConditions_Node0_action --> E_EvaluateReleaseConditions S_EvaluateReleaseConditions --> N_EvaluateReleaseConditions_Node0 N_EvaluateReleaseConditions_Node1{"The system evaluates release
conditions"}:::decision N_EvaluateReleaseConditions_Node1_action["Release codes are categorized as
full release, partial release, or
conditional release based on
quantity and conditions"]:::main N_EvaluateReleaseConditions_Node1 -- Yes --> N_EvaluateReleaseConditions_Node1_action N_EvaluateReleaseConditions_Node1_action --> E_EvaluateReleaseConditions N_EvaluateReleaseConditions_Node0 -- No --> N_EvaluateReleaseConditions_Node1 N_EvaluateReleaseConditions_Node1 -- No --> E_EvaluateReleaseConditions
File: GCX016E.cbl
GIVEN: A release status flag has been set or hold evaluation is complete
WHEN: The system evaluates release-specific business conditions (quantity validation, regulatory clearance)
THEN: Release conditions are assessed to determine if cargo release business flag should be activated
File: GCX016E.cbl
GIVEN: Release disposition codes are present in the status array
WHEN: The system evaluates release conditions
THEN:
  • Release codes are categorized as full release, partial release, or conditional release based on quantity
  • Conditions
βœ“ Consolidated Acceptance Criteria
  • The system checks if release status should be applied → if release conditions are met, set cargo release business flag; otherwise proceed to proceed 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_ReleaseStatusFound(["Start Step"]) E_ReleaseStatusFound(["End Step"]) N_ReleaseStatusFound_Node0{"The system checks if release status
should be applied"}:::decision N_ReleaseStatusFound_Node0_action["If release conditions are met, set
cargo release business flag
otherwise proceed to proceed
evaluation"]:::main N_ReleaseStatusFound_Node0 -- Yes --> N_ReleaseStatusFound_Node0_action N_ReleaseStatusFound_Node0_action --> E_ReleaseStatusFound S_ReleaseStatusFound --> N_ReleaseStatusFound_Node0 N_ReleaseStatusFound_Node0 -- No --> E_ReleaseStatusFound
File: GCX016E.cbl
GIVEN: Release conditions have been evaluated for a cargo
WHEN: The system checks if release status should be applied
THEN: If release conditions are met, set cargo release business flag; otherwise proceed to proceed evaluation
βœ“ Consolidated Acceptance Criteria
  • The system confirms release status should be applied to cargo → the cargo release business flag is set to indicate cargo is 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_SetCargoReleaseBusinessFlag(["Start Step"]) E_SetCargoReleaseBusinessFlag(["End Step"]) N_SetCargoReleaseBusinessFlag_Node0{"The system confirms release status
should be applied to cargo"}:::decision N_SetCargoReleaseBusinessFlag_Node0_action["The cargo release business flag is
set to indicate cargo is released"]:::main N_SetCargoReleaseBusinessFlag_Node0 -- Yes --> N_SetCargoReleaseBusinessFlag_Node0_action N_SetCargoReleaseBusinessFlag_Node0_action --> E_SetCargoReleaseBusinessFlag S_SetCargoReleaseBusinessFlag --> N_SetCargoReleaseBusinessFlag_Node0 N_SetCargoReleaseBusinessFlag_Node0 -- No --> E_SetCargoReleaseBusinessFlag
File: GCX016E.cbl
GIVEN: Release conditions have been evaluated and determined to be applicable
WHEN: The system confirms release status should be applied to cargo
THEN: The cargo release business flag is set to indicate cargo is released
βœ“ Consolidated Acceptance Criteria
  • The system checks if proceed status should be applied → if proceed conditions are met, set in-bond proceed business flag; otherwise proceed to manual release 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_ProceedStatusFound(["Start Step"]) E_ProceedStatusFound(["End Step"]) N_ProceedStatusFound_Node0{"The system checks if proceed status
should be applied"}:::decision N_ProceedStatusFound_Node0_action["If proceed conditions are met, set
in-bond proceed business flag
otherwise proceed to manual release
evaluation"]:::main N_ProceedStatusFound_Node0 -- Yes --> N_ProceedStatusFound_Node0_action N_ProceedStatusFound_Node0_action --> E_ProceedStatusFound S_ProceedStatusFound --> N_ProceedStatusFound_Node0 N_ProceedStatusFound_Node0 -- No --> E_ProceedStatusFound
File: GCX016E.cbl
GIVEN: Proceed conditions have been evaluated for a cargo
WHEN: The system checks if proceed status should be applied
THEN: If proceed conditions are met, set in-bond proceed business flag; otherwise proceed to manual release evaluation
βœ“ Consolidated Acceptance Criteria
  • The system confirms proceed status should be applied to cargo → the in-bond proceed business flag is set to indicate cargo can proceed in-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_SetInBondProceedBusinessFlag(["Start Step"]) E_SetInBondProceedBusinessFlag(["End Step"]) N_SetInBondProceedBusinessFlag_Node0{"The system confirms proceed status
should be applied to cargo"}:::decision N_SetInBondProceedBusinessFlag_Node0_action["The in-bond proceed business flag
is set to indicate cargo can proceed
in-bond"]:::main N_SetInBondProceedBusinessFlag_Node0 -- Yes --> N_SetInBondProceedBusinessFlag_Node0_action N_SetInBondProceedBusinessFlag_Node0_action --> E_SetInBondProceedBusinessFlag S_SetInBondProceedBusinessFlag --> N_SetInBondProceedBusinessFlag_Node0 N_SetInBondProceedBusinessFlag_Node0 -- No --> E_SetInBondProceedBusinessFlag
File: GCX016E.cbl
GIVEN: Proceed conditions have been evaluated and determined to be applicable
WHEN: The system confirms proceed status should be applied to cargo
THEN: The in-bond proceed business flag is set to indicate cargo can proceed in-bond
βœ“ Consolidated Acceptance Criteria
  • The system checks for manual release disposition codes in the status array → manual release conditions are evaluated to determine if manual release business flag should be 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_EvaluateManualRelease(["Start Step"]) E_EvaluateManualRelease(["End Step"]) N_EvaluateManualRelease_Node0{"The system checks for manual
release disposition codes in the
status array"}:::decision N_EvaluateManualRelease_Node0_action["Manual release conditions are
evaluated to determine if manual
release business flag should be set"]:::main N_EvaluateManualRelease_Node0 -- Yes --> N_EvaluateManualRelease_Node0_action N_EvaluateManualRelease_Node0_action --> E_EvaluateManualRelease S_EvaluateManualRelease --> N_EvaluateManualRelease_Node0 N_EvaluateManualRelease_Node0 -- No --> E_EvaluateManualRelease
File: GCX016E.cbl
GIVEN: Proceed evaluation is complete or proceed status flag has been set
WHEN: The system checks for manual release disposition codes in the status array
THEN: Manual release conditions are evaluated to determine if manual release business flag should be set
βœ“ Consolidated Acceptance Criteria
  • The system checks if manual release status should be applied → if manual release conditions are met, set manual release business flag; otherwise continue to 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_ManualReleaseFound(["Start Step"]) E_ManualReleaseFound(["End Step"]) N_ManualReleaseFound_Node0{"The system checks if manual release
status should be applied"}:::decision N_ManualReleaseFound_Node0_action["If manual release conditions are
met, set manual release business
flag otherwise continue to next
entry"]:::main N_ManualReleaseFound_Node0 -- Yes --> N_ManualReleaseFound_Node0_action N_ManualReleaseFound_Node0_action --> E_ManualReleaseFound S_ManualReleaseFound --> N_ManualReleaseFound_Node0 N_ManualReleaseFound_Node0 -- No --> E_ManualReleaseFound
File: GCX016E.cbl
GIVEN: Manual release conditions have been evaluated for a cargo
WHEN: The system checks if manual release status should be applied
THEN: If manual release conditions are met, set manual release business flag; otherwise continue to next entry
βœ“ Consolidated Acceptance Criteria
  • The system confirms manual release status should be applied to cargo → the manual release business flag is set to indicate cargo has been manually 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_SetManualReleaseBusinessFlag(["Start Step"]) E_SetManualReleaseBusinessFlag(["End Step"]) N_SetManualReleaseBusinessFlag_Node0{"The system confirms manual release
status should be applied to cargo"}:::decision N_SetManualReleaseBusinessFlag_Node0_action["The manual release business flag is
set to indicate cargo has been
manually released"]:::main N_SetManualReleaseBusinessFlag_Node0 -- Yes --> N_SetManualReleaseBusinessFlag_Node0_action N_SetManualReleaseBusinessFlag_Node0_action --> E_SetManualReleaseBusinessFlag S_SetManualReleaseBusinessFlag --> N_SetManualReleaseBusinessFlag_Node0 N_SetManualReleaseBusinessFlag_Node0 -- No --> E_SetManualReleaseBusinessFlag
File: GCX016E.cbl
GIVEN: Manual release conditions have been evaluated and determined to be applicable
WHEN: The system confirms manual release status should be applied to cargo
THEN: The manual release business flag is set to indicate cargo has been manually released
βœ“ Consolidated Acceptance Criteria
  • The system completes individual status analysis → final cargo status flags are determined based on the combination of hold, release, proceed, and manual 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_SetFinalStatusFlags(["Start Step"]) E_SetFinalStatusFlags(["End Step"]) N_SetFinalStatusFlags_Node0{"The system completes individual
status analysis"}:::decision N_SetFinalStatusFlags_Node0_action["Final cargo status flags are
determined based on the combination
of hold, release, proceed, and
manual release flags"]:::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: GCX016E.cbl
GIVEN: All status array entries have been processed and individual flags have been set
WHEN: The system completes individual status analysis
THEN: Final cargo status flags are determined based on the combination of hold, release, proceed, and manual release flags
βœ“ Consolidated Acceptance Criteria
  • The system processes the status arrays to evaluate cargo conditions → the system identifies hold status types, release conditions, proceed dispositions, arrival/export flags, and manual processing indicators for subsequent 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_AnalyzeCompleteS09AStatusArrays(["Start Step"]) E_AnalyzeCompleteS09AStatusArrays(["End Step"]) N_AnalyzeCompleteS09AStatusArrays_Node0{"The system processes the status
arrays to evaluate cargo conditions"}:::decision N_AnalyzeCompleteS09AStatusArrays_Node0_action["The system identifies hold status
types, release conditions, proceed
dispositions, arrivalexport flags,
and manual processing indicators for
subsequent status determination"]:::main N_AnalyzeCompleteS09AStatusArrays_Node0 -- Yes --> N_AnalyzeCompleteS09AStatusArrays_Node0_action N_AnalyzeCompleteS09AStatusArrays_Node0_action --> E_AnalyzeCompleteS09AStatusArrays S_AnalyzeCompleteS09AStatusArrays --> N_AnalyzeCompleteS09AStatusArrays_Node0 N_AnalyzeCompleteS09AStatusArrays_Node0 -- No --> E_AnalyzeCompleteS09AStatusArrays
File: GCX016E.cbl
GIVEN: A cargo has S09A status arrays containing disposition codes with associated flags and quantities
WHEN: The system processes the status arrays to evaluate cargo conditions
THEN: The system identifies hold status types, release conditions, proceed dispositions, arrival/export flags, and manual processing indicators for subsequent status determination
βœ“ Consolidated Acceptance Criteria
  • The system finds disposition codes that indicate border hold conditions → the system sets the border hold flag to indicate cargo is held at border 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_BorderHoldStatus(["Start Step"]) E_BorderHoldStatus(["End Step"]) N_BorderHoldStatus_Node0{"The system finds disposition codes
that indicate border hold conditions"}:::decision N_BorderHoldStatus_Node0_action["The system sets the border hold
flag to indicate cargo is held at
border location"]:::main N_BorderHoldStatus_Node0 -- Yes --> N_BorderHoldStatus_Node0_action N_BorderHoldStatus_Node0_action --> E_BorderHoldStatus S_BorderHoldStatus --> N_BorderHoldStatus_Node0 N_BorderHoldStatus_Node0 -- No --> E_BorderHoldStatus
File: GCX016E.cbl
GIVEN: A cargo has disposition codes in its status array
WHEN: The system finds disposition codes that indicate border hold conditions
THEN: The system sets the border hold flag to indicate cargo is held at border location
βœ“ Consolidated Acceptance Criteria
  • The system finds disposition codes that indicate destination hold conditions → the system sets the destination hold flag to indicate cargo is 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_DestinationHoldStatus(["Start Step"]) E_DestinationHoldStatus(["End Step"]) N_DestinationHoldStatus_Node0{"The system finds disposition codes
that indicate destination hold
conditions"}:::decision N_DestinationHoldStatus_Node0_action["The system sets the destination
hold flag to indicate cargo is held
at destination location"]:::main N_DestinationHoldStatus_Node0 -- Yes --> N_DestinationHoldStatus_Node0_action N_DestinationHoldStatus_Node0_action --> E_DestinationHoldStatus S_DestinationHoldStatus --> N_DestinationHoldStatus_Node0 N_DestinationHoldStatus_Node0 -- No --> E_DestinationHoldStatus
File: GCX016E.cbl
GIVEN: A cargo has disposition codes in its status array
WHEN: The system finds disposition codes that indicate destination hold conditions
THEN: The system sets the destination hold flag to indicate cargo is held at destination location
βœ“ Consolidated Acceptance Criteria
  • The system finds disposition codes that indicate FDA hold requirements → the system sets the FDA hold flag to indicate cargo requires FDA 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_FDAHoldStatus(["Start Step"]) E_FDAHoldStatus(["End Step"]) N_FDAHoldStatus_Node0{"The system finds disposition codes
that indicate FDA hold requirements"}:::decision N_FDAHoldStatus_Node0_action["The system sets the FDA hold flag
to indicate cargo requires FDA
clearance"]:::main N_FDAHoldStatus_Node0 -- Yes --> N_FDAHoldStatus_Node0_action N_FDAHoldStatus_Node0_action --> E_FDAHoldStatus S_FDAHoldStatus --> N_FDAHoldStatus_Node0 N_FDAHoldStatus_Node0 -- No --> E_FDAHoldStatus
File: GCX016E.cbl
GIVEN: A cargo has disposition codes in its status array
WHEN: The system finds disposition codes that indicate FDA hold requirements
THEN: The system sets the FDA hold flag to indicate cargo requires FDA clearance
βœ“ Consolidated Acceptance Criteria
  • The system compares released quantities against total cargo quantities → the system sets piece count hold flag if cargo has partial releases or quantity discrepancies
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_PieceCountHoldStatus(["Start Step"]) E_PieceCountHoldStatus(["End Step"]) N_PieceCountHoldStatus_Node0{"The system compares released
quantities against total cargo
quantities"}:::decision N_PieceCountHoldStatus_Node0_action["The system sets piece count hold
flag if cargo has partial releases
or quantity discrepancies"]:::main N_PieceCountHoldStatus_Node0 -- Yes --> N_PieceCountHoldStatus_Node0_action N_PieceCountHoldStatus_Node0_action --> E_PieceCountHoldStatus S_PieceCountHoldStatus --> N_PieceCountHoldStatus_Node0 N_PieceCountHoldStatus_Node0 -- No --> E_PieceCountHoldStatus
File: GCX016E.cbl
GIVEN: A cargo has disposition codes with associated release quantities in its status array
WHEN: The system compares released quantities against total cargo quantities
THEN: The system sets piece count hold flag if cargo has partial releases or quantity discrepancies
βœ“ Consolidated Acceptance Criteria
  • The system finds manual release disposition codes or manual processing flags → the system prioritizes manual release status and sets appropriate processing flags for manual intervention
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 system finds manual release
disposition codes or manual
processing flags"}:::decision N_ManualReleaseProcessing_Node0_action["The system prioritizes manual
release status and sets appropriate
processing flags for manual
intervention"]:::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: GCX016E.cbl
GIVEN: A cargo has disposition codes in its status array with manual processing indicators
WHEN: The system finds manual release disposition codes or manual processing flags
THEN:
  • The system prioritizes manual release status
  • Sets appropriate processing flags for manual intervention
βœ“ Consolidated Acceptance Criteria
  • The system finds automatic release disposition codes without hold conditions → the system sets automatic release processing flags and prepares cargo for automated 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_AutomaticReleaseProcessing(["Start Step"]) E_AutomaticReleaseProcessing(["End Step"]) N_AutomaticReleaseProcessing_Node0{"The system finds automatic release
disposition codes without hold
conditions"}:::decision N_AutomaticReleaseProcessing_Node0_action["The system sets automatic release
processing flags and prepares cargo
for automated release workflow"]:::main N_AutomaticReleaseProcessing_Node0 -- Yes --> N_AutomaticReleaseProcessing_Node0_action N_AutomaticReleaseProcessing_Node0_action --> E_AutomaticReleaseProcessing S_AutomaticReleaseProcessing --> N_AutomaticReleaseProcessing_Node0 N_AutomaticReleaseProcessing_Node0 -- No --> E_AutomaticReleaseProcessing
File: GCX016E.cbl
GIVEN: A cargo has disposition codes in its status array with automatic processing indicators
WHEN: The system finds automatic release disposition codes without hold conditions
THEN:
  • The system sets automatic release processing flags
  • Prepares cargo for automated release workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes proceed dispositions with associated location and timing information → the system sets proceed status flags and updates cargo movement authorization while maintaining 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_ProceedDispositionProcessing(["Start Step"]) E_ProceedDispositionProcessing(["End Step"]) N_ProceedDispositionProcessing_Node0{"The system processes proceed
dispositions with associated
location and timing information"}:::decision N_ProceedDispositionProcessing_Node0_action["The system sets proceed status
flags and updates cargo movement
authorization while maintaining
compliance tracking"]:::main N_ProceedDispositionProcessing_Node0 -- Yes --> N_ProceedDispositionProcessing_Node0_action N_ProceedDispositionProcessing_Node0_action --> E_ProceedDispositionProcessing S_ProceedDispositionProcessing --> N_ProceedDispositionProcessing_Node0 N_ProceedDispositionProcessing_Node0 -- No --> E_ProceedDispositionProcessing
File: GCX016E.cbl
GIVEN: A cargo has proceed disposition codes in its status array
WHEN:
  • The system processes proceed dispositions with associated location
  • Timing information
THEN:
  • The system sets proceed status flags
  • Updates cargo movement authorization while maintaining compliance tracking
βœ“ Consolidated Acceptance Criteria
  • The system processes arrival events and validates arrival conditions → the system updates arrival status flags, records arrival location and date, and triggers arrival-related 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_ArrivalStatusManagement(["Start Step"]) E_ArrivalStatusManagement(["End Step"]) N_ArrivalStatusManagement_Node0{"The system processes arrival events
and validates arrival conditions"}:::decision N_ArrivalStatusManagement_Node0_action["The system updates arrival status
flags, records arrival location and
date, and triggers arrival-related
processing workflows"]:::main N_ArrivalStatusManagement_Node0 -- Yes --> N_ArrivalStatusManagement_Node0_action N_ArrivalStatusManagement_Node0_action --> E_ArrivalStatusManagement S_ArrivalStatusManagement --> N_ArrivalStatusManagement_Node0 N_ArrivalStatusManagement_Node0 -- No --> E_ArrivalStatusManagement
File: GCX016E.cbl
GIVEN: A cargo has arrival disposition codes in its status array with location and date information
WHEN:
  • The system processes arrival events
  • Validates arrival conditions
THEN:
  • The system updates arrival status flags, records arrival location
  • Date, and triggers arrival-related processing workflows
βœ“ Consolidated Acceptance Criteria
  • The system processes export events and validates export conditions → the system updates export status flags, clears destination requirements, and ensures export 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_ExportStatusManagement(["Start Step"]) E_ExportStatusManagement(["End Step"]) N_ExportStatusManagement_Node0{"The system processes export events
and validates export conditions"}:::decision N_ExportStatusManagement_Node0_action["The system updates export status
flags, clears destination
requirements, and ensures export
compliance processing"]:::main N_ExportStatusManagement_Node0 -- Yes --> N_ExportStatusManagement_Node0_action N_ExportStatusManagement_Node0_action --> E_ExportStatusManagement S_ExportStatusManagement --> N_ExportStatusManagement_Node0 N_ExportStatusManagement_Node0 -- No --> E_ExportStatusManagement
File: GCX016E.cbl
GIVEN: A cargo has export disposition codes in its status array with export requirements
WHEN:
  • The system processes export events
  • Validates export conditions
THEN: The system updates export status flags, clears destination requirements, and ensures export compliance processing
βœ“ Consolidated Acceptance Criteria
  • The system processes Canadian manifest disposition codes and cross-border conditions → the system applies Canadian regulatory requirements, updates cross-border tracking, and ensures compliance with bilateral trade agreements
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CanadianManifestProcessing(["Start Step"]) E_CanadianManifestProcessing(["End Step"]) N_CanadianManifestProcessing_Node0{"The system processes Canadian
manifest disposition codes and
cross-border conditions"}:::decision N_CanadianManifestProcessing_Node0_action["The system applies Canadian
regulatory requirements, updates
cross-border tracking, and ensures
compliance with bilateral trade
agreements"]:::main N_CanadianManifestProcessing_Node0 -- Yes --> N_CanadianManifestProcessing_Node0_action N_CanadianManifestProcessing_Node0_action --> E_CanadianManifestProcessing S_CanadianManifestProcessing --> N_CanadianManifestProcessing_Node0 N_CanadianManifestProcessing_Node0 -- No --> E_CanadianManifestProcessing
File: GCX016E.cbl
GIVEN: A cargo is associated with Canadian manifests and has cross-border movement requirements
WHEN:
  • The system processes canadian manifest disposition codes
  • Cross-border conditions
THEN: The system applies Canadian regulatory requirements, updates cross-border tracking, and ensures compliance with bilateral trade agreements
βœ“ Consolidated Acceptance Criteria
  • If conflicting disposition codes with different priorities and timestamps → the system applies business priority rules where holds generally override releases unless specific release conditions supersede 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_HoldvsReleasePriority(["Start Step"]) E_HoldvsReleasePriority(["End Step"]) N_HoldvsReleasePriority_Node0{"The system evaluates conflicting
disposition codes with different
priorities and timestamps"}:::decision N_HoldvsReleasePriority_Node0_action["The system applies business
priority rules where holds generally
override releases unless specific
release conditions supersede hold
requirements"]:::main N_HoldvsReleasePriority_Node0 -- Yes --> N_HoldvsReleasePriority_Node0_action N_HoldvsReleasePriority_Node0_action --> E_HoldvsReleasePriority S_HoldvsReleasePriority --> N_HoldvsReleasePriority_Node0 N_HoldvsReleasePriority_Node0 -- No --> E_HoldvsReleasePriority
File: GCX016E.cbl
GIVEN: A cargo has both hold and release disposition codes in its status array
WHEN:
  • The system evaluates conflicting disposition codes with different priorities
  • Timestamps
THEN: The system applies business priority rules where holds generally override releases unless specific release conditions supersede hold requirements
βœ“ Consolidated Acceptance Criteria
  • If conflicting disposition codes with different business priorities → the system applies priority rules where active holds override proceed dispositions unless proceed has regulatory precedence or proper release authorization
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProceedvsHoldPriority(["Start Step"]) E_ProceedvsHoldPriority(["End Step"]) N_ProceedvsHoldPriority_Node0{"The system evaluates conflicting
disposition codes with different
business priorities"}:::decision N_ProceedvsHoldPriority_Node0_action["The system applies priority rules
where active holds override proceed
dispositions unless proceed has
regulatory precedence or proper
release authorization"]:::main N_ProceedvsHoldPriority_Node0 -- Yes --> N_ProceedvsHoldPriority_Node0_action N_ProceedvsHoldPriority_Node0_action --> E_ProceedvsHoldPriority S_ProceedvsHoldPriority --> N_ProceedvsHoldPriority_Node0 N_ProceedvsHoldPriority_Node0 -- No --> E_ProceedvsHoldPriority
File: GCX016E.cbl
GIVEN: A cargo has both proceed and hold disposition codes in its status array
WHEN: The system evaluates conflicting disposition codes with different business priorities
THEN: The system applies priority rules where active holds override proceed dispositions unless proceed has regulatory precedence or proper release authorization
βœ“ Consolidated Acceptance Criteria
  • The system processes status information codes that do not affect cargo movement → the system records informational status updates for tracking and reporting purposes without altering cargo processing workflow or hold/release states
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_StatusInformationCodes(["Start Step"]) E_StatusInformationCodes(["End Step"]) N_StatusInformationCodes_Node0{"The system processes status
information codes that do not affect
cargo movement"}:::decision N_StatusInformationCodes_Node0_action["The system records informational
status updates for tracking and
reporting purposes without altering
cargo processing workflow or
holdrelease states"]:::main N_StatusInformationCodes_Node0 -- Yes --> N_StatusInformationCodes_Node0_action N_StatusInformationCodes_Node0_action --> E_StatusInformationCodes S_StatusInformationCodes --> N_StatusInformationCodes_Node0 N_StatusInformationCodes_Node0 -- No --> E_StatusInformationCodes
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo has informational disposition codes in its status array
WHEN: The system processes status information codes that do not affect cargo movement
THEN:
  • The system records informational status updates for tracking
  • Reporting purposes without altering cargo processing workflow or hold/release states
βœ“ Consolidated Acceptance Criteria
  • The system applies hold priority rules considering FDA holds, border holds, destination holds, and piece count holds → the system sets the highest priority hold status (FDA > Border > Destination > Piece Count) and updates cargo status accordingly
  • The system sets the final cargo status → the cargo status is set to the appropriate hold status (HOLD, HOLD-B, HOLD-D, HOLDFDA, HOLDPCS) based on the priority 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_SetFinalHoldStatus(["Start Step"]) E_SetFinalHoldStatus(["End Step"]) N_SetFinalHoldStatus_Node0{"The system applies hold priority
rules considering FDA holds, border
holds, destination holds, and piece
count holds"}:::decision N_SetFinalHoldStatus_Node0_action["The system sets the highest
priority hold status FDA Border
Destination Piece Count and updates
cargo status accordingly"]:::main N_SetFinalHoldStatus_Node0 -- Yes --> N_SetFinalHoldStatus_Node0_action N_SetFinalHoldStatus_Node0_action --> E_SetFinalHoldStatus S_SetFinalHoldStatus --> N_SetFinalHoldStatus_Node0 N_SetFinalHoldStatus_Node1{"The system sets the final cargo
status"}:::decision N_SetFinalHoldStatus_Node1_action["The cargo status is set to the
appropriate hold status HOLD,
HOLD-B, HOLD-D, HOLDFDA, HOLDPCS
based on the priority determination"]:::main N_SetFinalHoldStatus_Node1 -- Yes --> N_SetFinalHoldStatus_Node1_action N_SetFinalHoldStatus_Node1_action --> E_SetFinalHoldStatus N_SetFinalHoldStatus_Node0 -- No --> N_SetFinalHoldStatus_Node1 N_SetFinalHoldStatus_Node1 -- No --> E_SetFinalHoldStatus
File: GCX016E.cbl
GIVEN: A cargo has multiple hold conditions identified from disposition code analysis
WHEN: The system applies hold priority rules considering FDA holds, border holds, destination holds, and piece count holds
THEN: The system sets the highest priority hold status (FDA > Border > Destination > Piece Count) and updates cargo status accordingly
File: GCX016E.cbl
GIVEN: A cargo with determined highest priority hold type
WHEN: The system sets the final cargo status
THEN: The cargo status is set to the appropriate hold status (HOLD, HOLD-B, HOLD-D, HOLDFDA, HOLDPCS) based on the priority determination
βœ“ Consolidated Acceptance Criteria
  • The system validates release quantities match cargo quantities and all release requirements are satisfied → the system sets released status, updates release quantities, and enables cargo for 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_SetFinalReleaseStatus(["Start Step"]) E_SetFinalReleaseStatus(["End Step"]) N_SetFinalReleaseStatus_Node0{"The system validates release
quantities match cargo quantities
and all release requirements are
satisfied"}:::decision N_SetFinalReleaseStatus_Node0_action["The system sets released status,
updates release quantities, and
enables cargo for movement
processing"]:::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: GCX016E.cbl
GIVEN: A cargo has release disposition codes and no overriding hold conditions
WHEN:
  • The system validates release quantities match cargo quantities
  • All release requirements are satisfied
THEN: The system sets released status, updates release quantities, and enables cargo for movement processing
βœ“ Consolidated Acceptance Criteria
  • The system validates proceed conditions and ensures no conflicting holds prevent movement → the system sets proceed status, authorizes cargo movement, and maintains compliance tracking for 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_SetFinalProceedStatus(["Start Step"]) E_SetFinalProceedStatus(["End Step"]) N_SetFinalProceedStatus_Node0{"The system validates proceed
conditions and ensures no
conflicting holds prevent movement"}:::decision N_SetFinalProceedStatus_Node0_action["The system sets proceed status,
authorizes cargo movement, and
maintains compliance tracking for
in-transit cargo"]:::main N_SetFinalProceedStatus_Node0 -- Yes --> N_SetFinalProceedStatus_Node0_action N_SetFinalProceedStatus_Node0_action --> E_SetFinalProceedStatus S_SetFinalProceedStatus --> N_SetFinalProceedStatus_Node0 N_SetFinalProceedStatus_Node0 -- No --> E_SetFinalProceedStatus
File: GCX016E.cbl
GIVEN: A cargo has proceed disposition codes and meets movement authorization requirements
WHEN:
  • The system validates proceed conditions
  • Ensures no conflicting holds prevent movement
THEN: The system sets proceed status, authorizes cargo movement, and maintains compliance tracking for in-transit cargo
βœ“ Consolidated Acceptance Criteria
  • The system confirms cargo arrival at destination location and completes arrival validation → the system sets arrival status, records final arrival date and location, and triggers 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_SetFinalArrivalStatus(["Start Step"]) E_SetFinalArrivalStatus(["End Step"]) N_SetFinalArrivalStatus_Node0{"The system confirms cargo arrival
at destination location and
completes arrival validation"}:::decision N_SetFinalArrivalStatus_Node0_action["The system sets arrival status,
records final arrival date and
location, and triggers destination
processing workflows"]:::main N_SetFinalArrivalStatus_Node0 -- Yes --> N_SetFinalArrivalStatus_Node0_action N_SetFinalArrivalStatus_Node0_action --> E_SetFinalArrivalStatus S_SetFinalArrivalStatus --> N_SetFinalArrivalStatus_Node0 N_SetFinalArrivalStatus_Node0 -- No --> E_SetFinalArrivalStatus
File: GCX016E.cbl
GIVEN: A cargo has arrival disposition codes with validated destination and arrival date information
WHEN:
  • The system confirms cargo arrival at destination location
  • Completes arrival validation
THEN:
  • The system sets arrival status, records final arrival date
  • Location, and triggers destination processing workflows
βœ“ Consolidated Acceptance Criteria
  • The system validates export documentation and compliance with international trade regulations → the system sets export status, clears domestic processing requirements, and enables international shipment processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetFinalExportStatus(["Start Step"]) E_SetFinalExportStatus(["End Step"]) N_SetFinalExportStatus_Node0{"The system validates export
documentation and compliance with
international trade regulations"}:::decision N_SetFinalExportStatus_Node0_action["The system sets export status,
clears domestic processing
requirements, and enables
international shipment processing"]:::main N_SetFinalExportStatus_Node0 -- Yes --> N_SetFinalExportStatus_Node0_action N_SetFinalExportStatus_Node0_action --> E_SetFinalExportStatus S_SetFinalExportStatus --> N_SetFinalExportStatus_Node0 N_SetFinalExportStatus_Node0 -- No --> E_SetFinalExportStatus
File: GCX016E.cbl
GIVEN: A cargo has export disposition codes and meets all export regulatory requirements
WHEN:
  • The system validates export documentation
  • Compliance with international trade regulations
THEN: The system sets export status, clears domestic processing requirements, and enables international shipment processing
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the cargo status for border hold conditions → the system identifies if border hold is present and sets appropriate processing flags
  • The system checks for border hold indicators in the cargo status → the presence or absence of border hold is determined
  • If hold types → the system returns true if a border hold disposition code is found, 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_BorderHoldPresent(["Start Step"]) E_BorderHoldPresent(["End Step"]) N_BorderHoldPresent_Node0{"The system analyzes the cargo
status for border hold conditions"}:::decision N_BorderHoldPresent_Node0_action["The system identifies if border
hold is present and sets appropriate
processing flags"]:::main N_BorderHoldPresent_Node0 -- Yes --> N_BorderHoldPresent_Node0_action N_BorderHoldPresent_Node0_action --> E_BorderHoldPresent S_BorderHoldPresent --> N_BorderHoldPresent_Node0 N_BorderHoldPresent_Node1{"The system checks for border hold
indicators in the cargo status"}:::decision N_BorderHoldPresent_Node1_action["The presence or absence of border
hold is determined"]:::main N_BorderHoldPresent_Node1 -- Yes --> N_BorderHoldPresent_Node1_action N_BorderHoldPresent_Node1_action --> E_BorderHoldPresent N_BorderHoldPresent_Node0 -- No --> N_BorderHoldPresent_Node1 N_BorderHoldPresent_Node2{"The system evaluates hold types"}:::decision N_BorderHoldPresent_Node2_action["The system returns true if a border
hold disposition code is found,
false otherwise"]:::main N_BorderHoldPresent_Node2 -- Yes --> N_BorderHoldPresent_Node2_action N_BorderHoldPresent_Node2_action --> E_BorderHoldPresent N_BorderHoldPresent_Node1 -- No --> N_BorderHoldPresent_Node2 N_BorderHoldPresent_Node2 -- No --> E_BorderHoldPresent
File: GCX016E.cbl
GIVEN: A cargo record with status array containing disposition codes
WHEN: The system analyzes the cargo status for border hold conditions
THEN:
  • The system identifies if border hold is present
  • Sets appropriate processing flags
File: GCX016E.cbl
GIVEN: A cargo record is undergoing hold type evaluation
WHEN: The system checks for border hold indicators in the cargo status
THEN: The presence or absence of border hold is determined
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system evaluates hold types
THEN: The system returns true if a border hold disposition code is found, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system checks for destination-specific hold conditions → the system determines if destination hold is active and updates processing flags accordingly
  • The system checks for destination hold indicators in the cargo status → the presence or absence of destination hold is determined
  • If hold types → the system returns true if a destination hold disposition code is found, 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_DestinationHoldPresent(["Start Step"]) E_DestinationHoldPresent(["End Step"]) N_DestinationHoldPresent_Node0{"The system checks for
destination-specific hold conditions"}:::decision N_DestinationHoldPresent_Node0_action["The system determines if
destination hold is active and
updates processing flags accordingly"]:::main N_DestinationHoldPresent_Node0 -- Yes --> N_DestinationHoldPresent_Node0_action N_DestinationHoldPresent_Node0_action --> E_DestinationHoldPresent S_DestinationHoldPresent --> N_DestinationHoldPresent_Node0 N_DestinationHoldPresent_Node1{"The system checks for destination
hold indicators in the cargo status"}:::decision N_DestinationHoldPresent_Node1_action["The presence or absence of
destination hold is determined"]:::main N_DestinationHoldPresent_Node1 -- Yes --> N_DestinationHoldPresent_Node1_action N_DestinationHoldPresent_Node1_action --> E_DestinationHoldPresent N_DestinationHoldPresent_Node0 -- No --> N_DestinationHoldPresent_Node1 N_DestinationHoldPresent_Node2{"The system evaluates hold types"}:::decision N_DestinationHoldPresent_Node2_action["The system returns true if a
destination hold disposition code is
found, false otherwise"]:::main N_DestinationHoldPresent_Node2 -- Yes --> N_DestinationHoldPresent_Node2_action N_DestinationHoldPresent_Node2_action --> E_DestinationHoldPresent N_DestinationHoldPresent_Node1 -- No --> N_DestinationHoldPresent_Node2 N_DestinationHoldPresent_Node2 -- No --> E_DestinationHoldPresent
File: GCX016E.cbl
GIVEN: A cargo record with status array and destination information
WHEN: The system checks for destination-specific hold conditions
THEN:
  • The system determines if destination hold is active
  • Updates processing flags accordingly
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for hold types
WHEN: The system checks for destination hold indicators in the cargo status
THEN: The presence or absence of destination hold is determined
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system evaluates hold types
THEN: The system returns true if a destination hold disposition code is found, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system checks for FDA hold conditions in the status array → the system identifies FDA hold presence and sets regulatory compliance flags
  • The system checks for FDA hold indicators in the cargo status → the presence or absence of FDA hold is determined
  • If hold types → the system returns true if an FDA hold disposition code is found, 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_FDAHoldPresent(["Start Step"]) E_FDAHoldPresent(["End Step"]) N_FDAHoldPresent_Node0{"The system checks for FDA hold
conditions in the status array"}:::decision N_FDAHoldPresent_Node0_action["The system identifies FDA hold
presence and sets regulatory
compliance flags"]:::main N_FDAHoldPresent_Node0 -- Yes --> N_FDAHoldPresent_Node0_action N_FDAHoldPresent_Node0_action --> E_FDAHoldPresent S_FDAHoldPresent --> N_FDAHoldPresent_Node0 N_FDAHoldPresent_Node1{"The system checks for FDA hold
indicators in the cargo status"}:::decision N_FDAHoldPresent_Node1_action["The presence or absence of FDA hold
is determined"]:::main N_FDAHoldPresent_Node1 -- Yes --> N_FDAHoldPresent_Node1_action N_FDAHoldPresent_Node1_action --> E_FDAHoldPresent N_FDAHoldPresent_Node0 -- No --> N_FDAHoldPresent_Node1 N_FDAHoldPresent_Node2{"The system evaluates hold types"}:::decision N_FDAHoldPresent_Node2_action["The system returns true if an FDA
hold disposition code is found,
false otherwise"]:::main N_FDAHoldPresent_Node2 -- Yes --> N_FDAHoldPresent_Node2_action N_FDAHoldPresent_Node2_action --> E_FDAHoldPresent N_FDAHoldPresent_Node1 -- No --> N_FDAHoldPresent_Node2 N_FDAHoldPresent_Node2 -- No --> E_FDAHoldPresent
File: GCX016E.cbl
GIVEN: A cargo record with regulatory status information
WHEN: The system checks for FDA hold conditions in the status array
THEN:
  • The system identifies fda hold presence
  • Sets regulatory compliance flags
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for regulatory hold types
WHEN: The system checks for FDA hold indicators in the cargo status
THEN: The presence or absence of FDA hold is determined
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system evaluates hold types
THEN: The system returns true if an FDA hold disposition code is found, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system compares released quantities against total cargo quantities → the system determines if piece count hold exists and updates quantity validation flags
  • The system checks for piece count hold indicators in the cargo status → the presence or absence of piece count hold is determined
  • If hold types → the system returns true if a piece count hold disposition code is found, 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_PieceCountHoldPresent(["Start Step"]) E_PieceCountHoldPresent(["End Step"]) N_PieceCountHoldPresent_Node0{"The system compares released
quantities against total cargo
quantities"}:::decision N_PieceCountHoldPresent_Node0_action["The system determines if piece
count hold exists and updates
quantity validation flags"]:::main N_PieceCountHoldPresent_Node0 -- Yes --> N_PieceCountHoldPresent_Node0_action N_PieceCountHoldPresent_Node0_action --> E_PieceCountHoldPresent S_PieceCountHoldPresent --> N_PieceCountHoldPresent_Node0 N_PieceCountHoldPresent_Node1{"The system checks for piece count
hold indicators in the cargo status"}:::decision N_PieceCountHoldPresent_Node1_action["The presence or absence of piece
count hold is determined"]:::main N_PieceCountHoldPresent_Node1 -- Yes --> N_PieceCountHoldPresent_Node1_action N_PieceCountHoldPresent_Node1_action --> E_PieceCountHoldPresent N_PieceCountHoldPresent_Node0 -- No --> N_PieceCountHoldPresent_Node1 N_PieceCountHoldPresent_Node2{"The system evaluates hold types"}:::decision N_PieceCountHoldPresent_Node2_action["The system returns true if a piece
count hold disposition code is
found, false otherwise"]:::main N_PieceCountHoldPresent_Node2 -- Yes --> N_PieceCountHoldPresent_Node2_action N_PieceCountHoldPresent_Node2_action --> E_PieceCountHoldPresent N_PieceCountHoldPresent_Node1 -- No --> N_PieceCountHoldPresent_Node2 N_PieceCountHoldPresent_Node2 -- No --> E_PieceCountHoldPresent
File: GCX016E.cbl
GIVEN: A cargo record with quantity information and release data
WHEN: The system compares released quantities against total cargo quantities
THEN:
  • The system determines if piece count hold exists
  • Updates quantity validation flags
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for quantity-related hold types
WHEN: The system checks for piece count hold indicators in the cargo status
THEN: The presence or absence of piece count hold is determined
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system evaluates hold types
THEN: The system returns true if a piece count hold disposition code is found, false otherwise
βœ“ Consolidated Acceptance Criteria
  • If manual release status in the disposition code array → the system identifies manual release presence and sets override processing flags
  • System evaluates disposition codes for manual release → if manual release present, cargo bypasses hold checks; otherwise continue hold evaluation
  • If for manual release override → manual release disposition codes are identified if present in the status array
  • A manual release disposition code is present → set final status to RELEASED regardless of hold conditions
  • If for manual release overrides → the system returns true if a manual release disposition code is found, 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_ManualReleasePresent(["Start Step"]) E_ManualReleasePresent(["End Step"]) N_ManualReleasePresent_Node0{"The system evaluates manual release
status in the disposition code array"}:::decision N_ManualReleasePresent_Node0_action["The system identifies manual
release presence and sets override
processing flags"]:::main N_ManualReleasePresent_Node0 -- Yes --> N_ManualReleasePresent_Node0_action N_ManualReleasePresent_Node0_action --> E_ManualReleasePresent S_ManualReleasePresent --> N_ManualReleasePresent_Node0 N_ManualReleasePresent_Node1{"System evaluates disposition codes
for manual release"}:::decision N_ManualReleasePresent_Node1_action["If manual release present, cargo
bypasses hold checks otherwise
continue hold evaluation"]:::main N_ManualReleasePresent_Node1 -- Yes --> N_ManualReleasePresent_Node1_action N_ManualReleasePresent_Node1_action --> E_ManualReleasePresent N_ManualReleasePresent_Node0 -- No --> N_ManualReleasePresent_Node1 N_ManualReleasePresent_Node2{"The system evaluates for manual
release override"}:::decision N_ManualReleasePresent_Node2_action["Manual release disposition codes
are identified if present in the
status array"]:::main N_ManualReleasePresent_Node2 -- Yes --> N_ManualReleasePresent_Node2_action N_ManualReleasePresent_Node2_action --> E_ManualReleasePresent N_ManualReleasePresent_Node1 -- No --> N_ManualReleasePresent_Node2 N_ManualReleasePresent_Node3{"A manual release disposition code
is present"}:::decision N_ManualReleasePresent_Node3_action["Set final status to RELEASED
regardless of hold conditions"]:::main N_ManualReleasePresent_Node3 -- Yes --> N_ManualReleasePresent_Node3_action N_ManualReleasePresent_Node3_action --> E_ManualReleasePresent N_ManualReleasePresent_Node2 -- No --> N_ManualReleasePresent_Node3 N_ManualReleasePresent_Node4{"The system evaluates for manual
release overrides"}:::decision N_ManualReleasePresent_Node4_action["The system returns true if a manual
release disposition code is found,
false otherwise"]:::main N_ManualReleasePresent_Node4 -- Yes --> N_ManualReleasePresent_Node4_action N_ManualReleasePresent_Node4_action --> E_ManualReleasePresent N_ManualReleasePresent_Node3 -- No --> N_ManualReleasePresent_Node4 N_ManualReleasePresent_Node4 -- No --> E_ManualReleasePresent
File: GCX016E.cbl
GIVEN: A cargo record with disposition codes and release information
WHEN: The system evaluates manual release status in the disposition code array
THEN:
  • The system identifies manual release presence
  • Sets override processing flags
File: GCX016E.cbl
GIVEN: Cargo record contains disposition codes
WHEN: System evaluates disposition codes for manual release
THEN: If manual release present, cargo bypasses hold checks; otherwise continue hold evaluation
File: GCX016E.cbl
GIVEN: Location and port validation has been completed
WHEN: The system evaluates for manual release override
THEN: Manual release disposition codes are identified if present in the status array
File: GCX016E.cbl
GIVEN: Both hold and release status are active
WHEN: A manual release disposition code is present
THEN: Set final status to RELEASED regardless of hold conditions
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system evaluates for manual release overrides
THEN: The system returns true if a manual release disposition code is found, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system checks for proceed authorization in the status array → the system determines proceed code presence and enables movement authorization
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProceedCodePresent(["Start Step"]) E_ProceedCodePresent(["End Step"]) N_ProceedCodePresent_Node0{"The system checks for proceed
authorization in the status array"}:::decision N_ProceedCodePresent_Node0_action["The system determines proceed code
presence and enables movement
authorization"]:::main N_ProceedCodePresent_Node0 -- Yes --> N_ProceedCodePresent_Node0_action N_ProceedCodePresent_Node0_action --> E_ProceedCodePresent S_ProceedCodePresent --> N_ProceedCodePresent_Node0 N_ProceedCodePresent_Node0 -- No --> E_ProceedCodePresent
File: GCX016E.cbl
GIVEN: A cargo record with disposition codes and processing status
WHEN: The system checks for proceed authorization in the status array
THEN:
  • The system determines proceed code presence
  • Enables movement authorization
βœ“ Consolidated Acceptance Criteria
  • If automatic release eligibility conditions → the system determines auto release availability and sets automated 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_AutoReleaseAvailable(["Start Step"]) E_AutoReleaseAvailable(["End Step"]) N_AutoReleaseAvailable_Node0{"The system evaluates automatic
release eligibility conditions"}:::decision N_AutoReleaseAvailable_Node0_action["The system determines auto release
availability and sets automated
processing flags"]:::main N_AutoReleaseAvailable_Node0 -- Yes --> N_AutoReleaseAvailable_Node0_action N_AutoReleaseAvailable_Node0_action --> E_AutoReleaseAvailable S_AutoReleaseAvailable --> N_AutoReleaseAvailable_Node0 N_AutoReleaseAvailable_Node0 -- No --> E_AutoReleaseAvailable
File: GCX016E.cbl
GIVEN: A cargo record with status information and release criteria
WHEN: The system evaluates automatic release eligibility conditions
THEN:
  • The system determines auto release availability
  • Sets automated processing flags
βœ“ Consolidated Acceptance Criteria
  • The system validates arrival status against business rules and location constraints → the system confirms arrival status validity and enables arrival processing workflows
  • The system validates arrival status legitimacy → the system determines if arrival conditions meet all requirements and can be applied as 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_ArrivalStatusValid(["Start Step"]) E_ArrivalStatusValid(["End Step"]) N_ArrivalStatusValid_Node0{"The system validates arrival status
against business rules and location
constraints"}:::decision N_ArrivalStatusValid_Node0_action["The system confirms arrival status
validity and enables arrival
processing workflows"]:::main N_ArrivalStatusValid_Node0 -- Yes --> N_ArrivalStatusValid_Node0_action N_ArrivalStatusValid_Node0_action --> E_ArrivalStatusValid S_ArrivalStatusValid --> N_ArrivalStatusValid_Node0 N_ArrivalStatusValid_Node1{"The system validates arrival status
legitimacy"}:::decision N_ArrivalStatusValid_Node1_action["The system determines if arrival
conditions meet all requirements and
can be applied as final status"]:::main N_ArrivalStatusValid_Node1 -- Yes --> N_ArrivalStatusValid_Node1_action N_ArrivalStatusValid_Node1_action --> E_ArrivalStatusValid N_ArrivalStatusValid_Node0 -- No --> N_ArrivalStatusValid_Node1 N_ArrivalStatusValid_Node1 -- No --> E_ArrivalStatusValid
File: GCX016E.cbl
GIVEN: A cargo record with arrival information and location data
WHEN:
  • The system validates arrival status against business rules
  • Location constraints
THEN:
  • The system confirms arrival status validity
  • Enables arrival processing workflows
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Arrival conditions are present and higher precedence conditions do not apply
WHEN: The system validates arrival status legitimacy
THEN:
  • The system determines if arrival conditions meet all requirements
  • Can be applied as final status
βœ“ Consolidated Acceptance Criteria
  • The system validates export status against customs regulations and business rules → the system confirms export status validity and enables export processing workflows
  • The system validates export status legitimacy → the system determines if export conditions meet all requirements and can be applied as 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_ExportStatusValid(["Start Step"]) E_ExportStatusValid(["End Step"]) N_ExportStatusValid_Node0{"The system validates export status
against customs regulations and
business rules"}:::decision N_ExportStatusValid_Node0_action["The system confirms export status
validity and enables export
processing workflows"]:::main N_ExportStatusValid_Node0 -- Yes --> N_ExportStatusValid_Node0_action N_ExportStatusValid_Node0_action --> E_ExportStatusValid S_ExportStatusValid --> N_ExportStatusValid_Node0 N_ExportStatusValid_Node1{"The system validates export status
legitimacy"}:::decision N_ExportStatusValid_Node1_action["The system determines if export
conditions meet all requirements and
can be applied as final status"]:::main N_ExportStatusValid_Node1 -- Yes --> N_ExportStatusValid_Node1_action N_ExportStatusValid_Node1_action --> E_ExportStatusValid N_ExportStatusValid_Node0 -- No --> N_ExportStatusValid_Node1 N_ExportStatusValid_Node1 -- No --> E_ExportStatusValid
File: GCX016E.cbl
GIVEN: A cargo record with export information and regulatory compliance data
WHEN:
  • The system validates export status against customs regulations
  • Business rules
THEN:
  • The system confirms export status validity
  • Enables export processing workflows
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Export conditions are present and higher precedence conditions do not apply
WHEN: The system validates export status legitimacy
THEN:
  • The system determines if export conditions meet all requirements
  • Can be applied as final status
βœ“ Consolidated Acceptance Criteria
  • If status priority hierarchy with holds having highest precedence → the system determines final status based on hold precedence rules and sets appropriate processing flags
  • If precedence according to regulatory hierarchy → the system determines if hold conditions take absolute precedence over release, proceed, arrival, or export 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_HoldTakesPrecedence(["Start Step"]) E_HoldTakesPrecedence(["End Step"]) N_HoldTakesPrecedence_Node0{"The system evaluates status
priority hierarchy with holds having
highest precedence"}:::decision N_HoldTakesPrecedence_Node0_action["The system determines final status
based on hold precedence rules and
sets appropriate processing flags"]:::main N_HoldTakesPrecedence_Node0 -- Yes --> N_HoldTakesPrecedence_Node0_action N_HoldTakesPrecedence_Node0_action --> E_HoldTakesPrecedence S_HoldTakesPrecedence --> N_HoldTakesPrecedence_Node0 N_HoldTakesPrecedence_Node1{"The system evaluates precedence
according to regulatory hierarchy"}:::decision N_HoldTakesPrecedence_Node1_action["The system determines if hold
conditions take absolute precedence
over release, proceed, arrival, or
export conditions"]:::main N_HoldTakesPrecedence_Node1 -- Yes --> N_HoldTakesPrecedence_Node1_action N_HoldTakesPrecedence_Node1_action --> E_HoldTakesPrecedence N_HoldTakesPrecedence_Node0 -- No --> N_HoldTakesPrecedence_Node1 N_HoldTakesPrecedence_Node1 -- No --> E_HoldTakesPrecedence
File: GCX016E.cbl
GIVEN: A cargo record with multiple conflicting status conditions including holds, releases, and proceed codes
WHEN: The system evaluates status priority hierarchy with holds having highest precedence
THEN:
  • The system determines final status based on hold precedence rules
  • Sets appropriate processing flags
File: GCX016E.cbl
GIVEN: Hold conditions are present along with other status conditions
WHEN: The system evaluates precedence according to regulatory hierarchy
THEN: The system determines if hold conditions take absolute precedence over release, proceed, arrival, or export conditions
βœ“ Consolidated Acceptance Criteria
  • The system applies final status assignment logic → the system sets cargo status to HOLD and updates all related processing flags and 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_SetFinalStatusHOLD(["Start Step"]) E_SetFinalStatusHOLD(["End Step"]) N_SetFinalStatusHOLD_Node0{"The system applies final status
assignment logic"}:::decision N_SetFinalStatusHOLD_Node0_action["The system sets cargo status to
HOLD and updates all related
processing flags and notifications"]:::main N_SetFinalStatusHOLD_Node0 -- Yes --> N_SetFinalStatusHOLD_Node0_action N_SetFinalStatusHOLD_Node0_action --> E_SetFinalStatusHOLD S_SetFinalStatusHOLD --> N_SetFinalStatusHOLD_Node0 N_SetFinalStatusHOLD_Node0 -- No --> E_SetFinalStatusHOLD
File: GCX016E.cbl
GIVEN: A cargo record where hold conditions have been determined to take precedence
WHEN: The system applies final status assignment logic
THEN:
  • The system sets cargo status to hold
  • Updates all related processing flags
  • Notifications
βœ“ Consolidated Acceptance Criteria
  • The system applies final status assignment logic → the system sets cargo status to RELEASE and enables cargo movement and delivery processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetFinalStatusRELEASE(["Start Step"]) E_SetFinalStatusRELEASE(["End Step"]) N_SetFinalStatusRELEASE_Node0{"The system applies final status
assignment logic"}:::decision N_SetFinalStatusRELEASE_Node0_action["The system sets cargo status to
RELEASE and enables cargo movement
and delivery processing"]:::main N_SetFinalStatusRELEASE_Node0 -- Yes --> N_SetFinalStatusRELEASE_Node0_action N_SetFinalStatusRELEASE_Node0_action --> E_SetFinalStatusRELEASE S_SetFinalStatusRELEASE --> N_SetFinalStatusRELEASE_Node0 N_SetFinalStatusRELEASE_Node0 -- No --> E_SetFinalStatusRELEASE
File: GCX016E.cbl
GIVEN: A cargo record where release conditions take precedence and no overriding holds exist
WHEN: The system applies final status assignment logic
THEN:
  • The system sets cargo status to release
  • Enables cargo movement
  • Delivery processing
βœ“ Consolidated Acceptance Criteria
  • The system applies final status assignment logic → the system sets cargo status to ARRIVED and triggers arrival notification and processing workflows
  • Determining final status → set the cargo status to 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_SetFinalStatusARRIVED(["Start Step"]) E_SetFinalStatusARRIVED(["End Step"]) N_SetFinalStatusARRIVED_Node0{"The system applies final status
assignment logic"}:::decision N_SetFinalStatusARRIVED_Node0_action["The system sets cargo status to
ARRIVED and triggers arrival
notification and processing
workflows"]:::main N_SetFinalStatusARRIVED_Node0 -- Yes --> N_SetFinalStatusARRIVED_Node0_action N_SetFinalStatusARRIVED_Node0_action --> E_SetFinalStatusARRIVED S_SetFinalStatusARRIVED --> N_SetFinalStatusARRIVED_Node0 N_SetFinalStatusARRIVED_Node1{"Determining final status"}:::decision N_SetFinalStatusARRIVED_Node1_action["Set the cargo status to ARRIVED"]:::main N_SetFinalStatusARRIVED_Node1 -- Yes --> N_SetFinalStatusARRIVED_Node1_action N_SetFinalStatusARRIVED_Node1_action --> E_SetFinalStatusARRIVED N_SetFinalStatusARRIVED_Node0 -- No --> N_SetFinalStatusARRIVED_Node1 N_SetFinalStatusARRIVED_Node1 -- No --> E_SetFinalStatusARRIVED
File: GCX016E.cbl
GIVEN: A cargo record where arrival status takes precedence and arrival validation is successful
WHEN: The system applies final status assignment logic
THEN:
  • The system sets cargo status to arrived
  • Triggers arrival notification
  • Processing workflows
File: GCX016E.cbl
GIVEN: Arrival status is active and no higher priority conditions exist
WHEN: Determining final status
THEN: Set the cargo status to ARRIVED
βœ“ Consolidated Acceptance Criteria
  • The system applies final status assignment logic → the system sets cargo status to EXPORTED and triggers export documentation and compliance workflows
  • Determining final status → set the cargo status to EXPORTED
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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{"The system applies final status
assignment logic"}:::decision N_SetFinalStatusEXPORTED_Node0_action["The system sets cargo status to
EXPORTED and triggers export
documentation and compliance
workflows"]:::main N_SetFinalStatusEXPORTED_Node0 -- Yes --> N_SetFinalStatusEXPORTED_Node0_action N_SetFinalStatusEXPORTED_Node0_action --> E_SetFinalStatusEXPORTED S_SetFinalStatusEXPORTED --> N_SetFinalStatusEXPORTED_Node0 N_SetFinalStatusEXPORTED_Node1{"Determining final status"}:::decision N_SetFinalStatusEXPORTED_Node1_action["Set the cargo status to EXPORTED"]:::main N_SetFinalStatusEXPORTED_Node1 -- Yes --> N_SetFinalStatusEXPORTED_Node1_action N_SetFinalStatusEXPORTED_Node1_action --> E_SetFinalStatusEXPORTED N_SetFinalStatusEXPORTED_Node0 -- No --> N_SetFinalStatusEXPORTED_Node1 N_SetFinalStatusEXPORTED_Node1 -- No --> E_SetFinalStatusEXPORTED
File: GCX016E.cbl
GIVEN: A cargo record where export status takes precedence and export validation is successful
WHEN: The system applies final status assignment logic
THEN:
  • The system sets cargo status to exported
  • Triggers export documentation
  • Compliance workflows
File: GCX016E.cbl
GIVEN: Export status is active and no higher priority conditions exist
WHEN: Determining final status
THEN: Set the cargo status to EXPORTED
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine final cargo status → the complete S09A status array containing all disposition codes and status information is retrieved 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_RetrieveCompleteS09AStatusArray(["Start Step"]) E_RetrieveCompleteS09AStatusArray(["End Step"]) N_RetrieveCompleteS09AStatusArray_Node0{"The system needs to determine final
cargo status"}:::decision N_RetrieveCompleteS09AStatusArray_Node0_action["The complete S09A status array
containing all disposition codes and
status information is retrieved and
made available for processing"]:::main N_RetrieveCompleteS09AStatusArray_Node0 -- Yes --> N_RetrieveCompleteS09AStatusArray_Node0_action N_RetrieveCompleteS09AStatusArray_Node0_action --> E_RetrieveCompleteS09AStatusArray S_RetrieveCompleteS09AStatusArray --> N_RetrieveCompleteS09AStatusArray_Node0 N_RetrieveCompleteS09AStatusArray_Node0 -- No --> E_RetrieveCompleteS09AStatusArray
File: GCX016E.cbl
GIVEN: A cargo record exists with associated status segments
WHEN: The system needs to determine final cargo status
THEN:
  • The complete s09a status array containing all disposition codes
  • Status information is retrieved
  • Made available for processing
βœ“ Consolidated Acceptance Criteria
  • Priority evaluation process begins → all priority flags for hold, release, proceed, arrival, and export conditions are set to initial false 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_InitializePriorityFlags(["Start Step"]) E_InitializePriorityFlags(["End Step"]) N_InitializePriorityFlags_Node0{"Priority evaluation process begins"}:::decision N_InitializePriorityFlags_Node0_action["All priority flags for hold,
release, proceed, arrival, and
export conditions are set to initial
false state"]:::main N_InitializePriorityFlags_Node0 -- Yes --> N_InitializePriorityFlags_Node0_action N_InitializePriorityFlags_Node0_action --> E_InitializePriorityFlags S_InitializePriorityFlags --> N_InitializePriorityFlags_Node0 N_InitializePriorityFlags_Node0 -- No --> E_InitializePriorityFlags
File: GCX016E.cbl
GIVEN: The system is about to evaluate cargo status priorities
WHEN: Priority evaluation process begins
THEN: All priority flags for hold, release, proceed, arrival, and export conditions are set to initial false state
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold condition detection result → the hold priority flag is set to true to indicate hold conditions take precedence in 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_SetHoldPriorityFlag(["Start Step"]) E_SetHoldPriorityFlag(["End Step"]) N_SetHoldPriorityFlag_Node0{"The system processes the hold
condition detection result"}:::decision N_SetHoldPriorityFlag_Node0_action["The hold priority flag is set to
true to indicate hold conditions
take precedence in status
determination"]:::main N_SetHoldPriorityFlag_Node0 -- Yes --> N_SetHoldPriorityFlag_Node0_action N_SetHoldPriorityFlag_Node0_action --> E_SetHoldPriorityFlag S_SetHoldPriorityFlag --> N_SetHoldPriorityFlag_Node0 N_SetHoldPriorityFlag_Node0 -- No --> E_SetHoldPriorityFlag
File: GCX016E.cbl
GIVEN: Hold conditions have been detected in the cargo status array
WHEN: The system processes the hold condition detection result
THEN: The hold priority flag is set to true to indicate hold conditions take precedence in status determination
βœ“ Consolidated Acceptance Criteria
  • The system checks for release conditions including manual release or automatic release codes → the system identifies if any release disposition codes are present and sets release priority flag 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_ReleaseConditionsPresent(["Start Step"]) E_ReleaseConditionsPresent(["End Step"]) N_ReleaseConditionsPresent_Node0{"The system checks for release
conditions including manual release
or automatic release codes"}:::decision N_ReleaseConditionsPresent_Node0_action["The system identifies if any
release disposition codes are
present and sets release priority
flag accordingly"]:::main N_ReleaseConditionsPresent_Node0 -- Yes --> N_ReleaseConditionsPresent_Node0_action N_ReleaseConditionsPresent_Node0_action --> E_ReleaseConditionsPresent S_ReleaseConditionsPresent --> N_ReleaseConditionsPresent_Node0 N_ReleaseConditionsPresent_Node0 -- No --> E_ReleaseConditionsPresent
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system checks for release conditions including manual release or automatic release codes
THEN:
  • The system identifies if any release disposition codes are present
  • Sets release priority flag accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the release condition detection result → the release priority flag is set to true to indicate release conditions are present for priority 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_SetReleasePriorityFlag(["Start Step"]) E_SetReleasePriorityFlag(["End Step"]) N_SetReleasePriorityFlag_Node0{"The system processes the release
condition detection result"}:::decision N_SetReleasePriorityFlag_Node0_action["The release priority flag is set to
true to indicate release conditions
are present for priority evaluation"]:::main N_SetReleasePriorityFlag_Node0 -- Yes --> N_SetReleasePriorityFlag_Node0_action N_SetReleasePriorityFlag_Node0_action --> E_SetReleasePriorityFlag S_SetReleasePriorityFlag --> N_SetReleasePriorityFlag_Node0 N_SetReleasePriorityFlag_Node0 -- No --> E_SetReleasePriorityFlag
File: GCX016E.cbl
GIVEN: Release conditions have been detected in the cargo status array
WHEN: The system processes the release condition detection result
THEN: The release priority flag is set to true to indicate release conditions are present for priority evaluation
βœ“ Consolidated Acceptance Criteria
  • The system checks for proceed disposition codes that allow cargo movement → the system identifies if any proceed disposition codes are present and sets proceed priority flag 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_ProceedConditionsPresent(["Start Step"]) E_ProceedConditionsPresent(["End Step"]) N_ProceedConditionsPresent_Node0{"The system checks for proceed
disposition codes that allow cargo
movement"}:::decision N_ProceedConditionsPresent_Node0_action["The system identifies if any
proceed disposition codes are
present and sets proceed priority
flag accordingly"]:::main N_ProceedConditionsPresent_Node0 -- Yes --> N_ProceedConditionsPresent_Node0_action N_ProceedConditionsPresent_Node0_action --> E_ProceedConditionsPresent S_ProceedConditionsPresent --> N_ProceedConditionsPresent_Node0 N_ProceedConditionsPresent_Node0 -- No --> E_ProceedConditionsPresent
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system checks for proceed disposition codes that allow cargo movement
THEN:
  • The system identifies if any proceed disposition codes are present
  • Sets proceed priority flag accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the proceed condition detection result → the proceed priority flag is set to true to indicate proceed conditions are present for priority 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_SetProceedPriorityFlag(["Start Step"]) E_SetProceedPriorityFlag(["End Step"]) N_SetProceedPriorityFlag_Node0{"The system processes the proceed
condition detection result"}:::decision N_SetProceedPriorityFlag_Node0_action["The proceed priority flag is set to
true to indicate proceed conditions
are present for priority evaluation"]:::main N_SetProceedPriorityFlag_Node0 -- Yes --> N_SetProceedPriorityFlag_Node0_action N_SetProceedPriorityFlag_Node0_action --> E_SetProceedPriorityFlag S_SetProceedPriorityFlag --> N_SetProceedPriorityFlag_Node0 N_SetProceedPriorityFlag_Node0 -- No --> E_SetProceedPriorityFlag
File: GCX016E.cbl
GIVEN: Proceed conditions have been detected in the cargo status array
WHEN: The system processes the proceed condition detection result
THEN: The proceed priority flag is set to true to indicate proceed conditions are present for priority evaluation
βœ“ Consolidated Acceptance Criteria
  • The system checks for arrival disposition codes indicating cargo has arrived at destination → the system identifies if any arrival disposition codes are present and sets arrival priority flag 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_ArrivalConditionsPresent(["Start Step"]) E_ArrivalConditionsPresent(["End Step"]) N_ArrivalConditionsPresent_Node0{"The system checks for arrival
disposition codes indicating cargo
has arrived at destination"}:::decision N_ArrivalConditionsPresent_Node0_action["The system identifies if any
arrival disposition codes are
present and sets arrival priority
flag accordingly"]:::main N_ArrivalConditionsPresent_Node0 -- Yes --> N_ArrivalConditionsPresent_Node0_action N_ArrivalConditionsPresent_Node0_action --> E_ArrivalConditionsPresent S_ArrivalConditionsPresent --> N_ArrivalConditionsPresent_Node0 N_ArrivalConditionsPresent_Node0 -- No --> E_ArrivalConditionsPresent
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system checks for arrival disposition codes indicating cargo has arrived at destination
THEN:
  • The system identifies if any arrival disposition codes are present
  • Sets arrival priority flag accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival condition detection result → the arrival priority flag is set to true to indicate arrival conditions are present for priority 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_SetArrivalPriorityFlag(["Start Step"]) E_SetArrivalPriorityFlag(["End Step"]) N_SetArrivalPriorityFlag_Node0{"The system processes the arrival
condition detection result"}:::decision N_SetArrivalPriorityFlag_Node0_action["The arrival priority flag is set to
true to indicate arrival conditions
are present for priority evaluation"]:::main N_SetArrivalPriorityFlag_Node0 -- Yes --> N_SetArrivalPriorityFlag_Node0_action N_SetArrivalPriorityFlag_Node0_action --> E_SetArrivalPriorityFlag S_SetArrivalPriorityFlag --> N_SetArrivalPriorityFlag_Node0 N_SetArrivalPriorityFlag_Node0 -- No --> E_SetArrivalPriorityFlag
File: GCX016E.cbl
GIVEN: Arrival conditions have been detected in the cargo status array
WHEN: The system processes the arrival condition detection result
THEN: The arrival priority flag is set to true to indicate arrival conditions are present for priority evaluation
βœ“ Consolidated Acceptance Criteria
  • The system checks for export disposition codes indicating cargo is being exported → the system identifies if any export disposition codes are present and sets export priority flag 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_ExportConditionsPresent(["Start Step"]) E_ExportConditionsPresent(["End Step"]) N_ExportConditionsPresent_Node0{"The system checks for export
disposition codes indicating cargo
is being exported"}:::decision N_ExportConditionsPresent_Node0_action["The system identifies if any export
disposition codes are present and
sets export priority flag
accordingly"]:::main N_ExportConditionsPresent_Node0 -- Yes --> N_ExportConditionsPresent_Node0_action N_ExportConditionsPresent_Node0_action --> E_ExportConditionsPresent S_ExportConditionsPresent --> N_ExportConditionsPresent_Node0 N_ExportConditionsPresent_Node0 -- No --> E_ExportConditionsPresent
File: GCX016E.cbl
GIVEN: A cargo status array contains disposition codes
WHEN: The system checks for export disposition codes indicating cargo is being exported
THEN:
  • The system identifies if any export disposition codes are present
  • Sets export priority flag accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the export condition detection result → the export priority flag is set to true to indicate export conditions are present for priority 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_SetExportPriorityFlag(["Start Step"]) E_SetExportPriorityFlag(["End Step"]) N_SetExportPriorityFlag_Node0{"The system processes the export
condition detection result"}:::decision N_SetExportPriorityFlag_Node0_action["The export priority flag is set to
true to indicate export conditions
are present for priority evaluation"]:::main N_SetExportPriorityFlag_Node0 -- Yes --> N_SetExportPriorityFlag_Node0_action N_SetExportPriorityFlag_Node0_action --> E_SetExportPriorityFlag S_SetExportPriorityFlag --> N_SetExportPriorityFlag_Node0 N_SetExportPriorityFlag_Node0 -- No --> E_SetExportPriorityFlag
File: GCX016E.cbl
GIVEN: Export conditions have been detected in the cargo status array
WHEN: The system processes the export condition detection result
THEN: The export priority flag is set to true to indicate export conditions are present for priority evaluation
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine the final authoritative status → regulatory hierarchy rules are applied to establish precedence order among competing 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_ApplyRegulatoryHierarchyRules(["Start Step"]) E_ApplyRegulatoryHierarchyRules(["End Step"]) N_ApplyRegulatoryHierarchyRules_Node0{"The system needs to determine the
final authoritative status"}:::decision N_ApplyRegulatoryHierarchyRules_Node0_action["Regulatory hierarchy rules are
applied to establish precedence
order among competing status
conditions"]:::main N_ApplyRegulatoryHierarchyRules_Node0 -- Yes --> N_ApplyRegulatoryHierarchyRules_Node0_action N_ApplyRegulatoryHierarchyRules_Node0_action --> E_ApplyRegulatoryHierarchyRules S_ApplyRegulatoryHierarchyRules --> N_ApplyRegulatoryHierarchyRules_Node0 N_ApplyRegulatoryHierarchyRules_Node0 -- No --> E_ApplyRegulatoryHierarchyRules
File: GCX016E.cbl
GIVEN: Multiple status condition flags are set for a cargo
WHEN: The system needs to determine the final authoritative status
THEN: Regulatory hierarchy rules are applied to establish precedence order among competing status conditions
βœ“ Consolidated Acceptance Criteria
  • The system assigns the final cargo status → the cargo status is set to HELD and all other competing status conditions are 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_FinalStatusHELD(["Start Step"]) E_FinalStatusHELD(["End Step"]) N_FinalStatusHELD_Node0{"The system assigns the final cargo
status"}:::decision N_FinalStatusHELD_Node0_action["The cargo status is set to HELD and
all other competing status
conditions are overridden"]:::main N_FinalStatusHELD_Node0 -- Yes --> N_FinalStatusHELD_Node0_action N_FinalStatusHELD_Node0_action --> E_FinalStatusHELD S_FinalStatusHELD --> N_FinalStatusHELD_Node0 N_FinalStatusHELD_Node0 -- No --> E_FinalStatusHELD
File: GCX016E.cbl
GIVEN: Hold conditions have been determined to take precedence
WHEN: The system assigns the final cargo status
THEN:
  • The cargo status is set to held
  • All other competing status conditions are overridden
βœ“ Consolidated Acceptance Criteria
  • If if release authorization can override the hold → the system determines if release conditions have sufficient authority to override hold conditions based on regulatory 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_ReleaseOverridesHold(["Start Step"]) E_ReleaseOverridesHold(["End Step"]) N_ReleaseOverridesHold_Node0{"The system evaluates if release
authorization can override the hold"}:::decision N_ReleaseOverridesHold_Node0_action["The system determines if release
conditions have sufficient authority
to override hold conditions based on
regulatory rules"]:::main N_ReleaseOverridesHold_Node0 -- Yes --> N_ReleaseOverridesHold_Node0_action N_ReleaseOverridesHold_Node0_action --> E_ReleaseOverridesHold S_ReleaseOverridesHold --> N_ReleaseOverridesHold_Node0 N_ReleaseOverridesHold_Node0 -- No --> E_ReleaseOverridesHold
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Both hold and release conditions are present and hold does not take absolute precedence
WHEN: The system evaluates if release authorization can override the hold
THEN: The system determines if release conditions have sufficient authority to override hold conditions based on regulatory rules
βœ“ Consolidated Acceptance Criteria
  • The system assigns the final cargo status → the cargo status is set to RELEASED and hold conditions are overridden by authorized 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_FinalStatusRELEASED(["Start Step"]) E_FinalStatusRELEASED(["End Step"]) N_FinalStatusRELEASED_Node0{"The system assigns the final cargo
status"}:::decision N_FinalStatusRELEASED_Node0_action["The cargo status is set to RELEASED
and hold conditions are overridden
by authorized release"]:::main N_FinalStatusRELEASED_Node0 -- Yes --> N_FinalStatusRELEASED_Node0_action N_FinalStatusRELEASED_Node0_action --> E_FinalStatusRELEASED S_FinalStatusRELEASED --> N_FinalStatusRELEASED_Node0 N_FinalStatusRELEASED_Node0 -- No --> E_FinalStatusRELEASED
File: GCX016E.cbl
GIVEN: Release conditions have been determined to override hold conditions
WHEN: The system assigns the final cargo status
THEN:
  • The cargo status is set to released
  • Hold conditions are overridden by authorized release
βœ“ Consolidated Acceptance Criteria
  • The system validates proceed condition legitimacy → the system determines if proceed conditions meet all regulatory requirements and can be applied as 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_ProceedConditionsValid(["Start Step"]) E_ProceedConditionsValid(["End Step"]) N_ProceedConditionsValid_Node0{"The system validates proceed
condition legitimacy"}:::decision N_ProceedConditionsValid_Node0_action["The system determines if proceed
conditions meet all regulatory
requirements and can be applied as
final status"]:::main N_ProceedConditionsValid_Node0 -- Yes --> N_ProceedConditionsValid_Node0_action N_ProceedConditionsValid_Node0_action --> E_ProceedConditionsValid S_ProceedConditionsValid --> N_ProceedConditionsValid_Node0 N_ProceedConditionsValid_Node0 -- No --> E_ProceedConditionsValid
File: GCX016E.cbl
GIVEN: Proceed conditions are present and neither hold nor release take precedence
WHEN: The system validates proceed condition legitimacy
THEN:
  • The system determines if proceed conditions meet all regulatory requirements
  • Can be applied as final status
βœ“ Consolidated Acceptance Criteria
  • The system assigns the final cargo status → the cargo status is set to PROCEED allowing cargo movement according to disposition 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_FinalStatusPROCEED(["Start Step"]) E_FinalStatusPROCEED(["End Step"]) N_FinalStatusPROCEED_Node0{"The system assigns the final cargo
status"}:::decision N_FinalStatusPROCEED_Node0_action["The cargo status is set to PROCEED
allowing cargo movement according to
disposition instructions"]:::main N_FinalStatusPROCEED_Node0 -- Yes --> N_FinalStatusPROCEED_Node0_action N_FinalStatusPROCEED_Node0_action --> E_FinalStatusPROCEED S_FinalStatusPROCEED --> N_FinalStatusPROCEED_Node0 N_FinalStatusPROCEED_Node0 -- No --> E_FinalStatusPROCEED
File: GCX016E.cbl
GIVEN: Proceed conditions have been validated as legitimate and applicable
WHEN: The system assigns the final cargo status
THEN: The cargo status is set to PROCEED allowing cargo movement according to disposition instructions
βœ“ Consolidated Acceptance Criteria
  • The system assigns the final cargo status → the cargo status is set to ARRIVED indicating successful cargo arrival 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_FinalStatusARRIVED(["Start Step"]) E_FinalStatusARRIVED(["End Step"]) N_FinalStatusARRIVED_Node0{"The system assigns the final cargo
status"}:::decision N_FinalStatusARRIVED_Node0_action["The cargo status is set to ARRIVED
indicating successful cargo arrival
at destination"]:::main N_FinalStatusARRIVED_Node0 -- Yes --> N_FinalStatusARRIVED_Node0_action N_FinalStatusARRIVED_Node0_action --> E_FinalStatusARRIVED S_FinalStatusARRIVED --> N_FinalStatusARRIVED_Node0 N_FinalStatusARRIVED_Node0 -- No --> E_FinalStatusARRIVED
File: GCX016E.cbl
GIVEN: Arrival conditions have been validated as legitimate and applicable
WHEN: The system assigns the final cargo status
THEN: The cargo status is set to ARRIVED indicating successful cargo arrival at destination
βœ“ Consolidated Acceptance Criteria
  • The system assigns the final cargo status → the cargo status is set to EXPORTED indicating cargo has been processed for 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_FinalStatusEXPORTED(["Start Step"]) E_FinalStatusEXPORTED(["End Step"]) N_FinalStatusEXPORTED_Node0{"The system assigns the final cargo
status"}:::decision N_FinalStatusEXPORTED_Node0_action["The cargo status is set to EXPORTED
indicating cargo has been processed
for export"]:::main N_FinalStatusEXPORTED_Node0 -- Yes --> N_FinalStatusEXPORTED_Node0_action N_FinalStatusEXPORTED_Node0_action --> E_FinalStatusEXPORTED S_FinalStatusEXPORTED --> N_FinalStatusEXPORTED_Node0 N_FinalStatusEXPORTED_Node0 -- No --> E_FinalStatusEXPORTED
File: GCX016E.cbl
GIVEN: Export conditions have been validated as legitimate and applicable
WHEN: The system assigns the final cargo status
THEN: The cargo status is set to EXPORTED indicating cargo has been processed for export
βœ“ Consolidated Acceptance Criteria
  • The system assigns the final cargo status → the cargo status is set to a default value indicating standard processing 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_FinalStatusDEFAULT(["Start Step"]) E_FinalStatusDEFAULT(["End Step"]) N_FinalStatusDEFAULT_Node0{"The system assigns the final cargo
status"}:::decision N_FinalStatusDEFAULT_Node0_action["The cargo status is set to a
default value indicating standard
processing state"]:::main N_FinalStatusDEFAULT_Node0 -- Yes --> N_FinalStatusDEFAULT_Node0_action N_FinalStatusDEFAULT_Node0_action --> E_FinalStatusDEFAULT S_FinalStatusDEFAULT --> N_FinalStatusDEFAULT_Node0 N_FinalStatusDEFAULT_Node0 -- No --> E_FinalStatusDEFAULT
File: GCX016E.cbl
GIVEN: No specific status conditions (hold, release, proceed, arrival, export) are valid or applicable
WHEN: The system assigns the final cargo status
THEN: The cargo status is set to a default value indicating standard processing state
βœ“ Consolidated Acceptance Criteria
  • The status determination process completes → the final cargo status is returned to the calling process for further 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_ReturnFinalCargoStatus(["Start Step"]) E_ReturnFinalCargoStatus(["End Step"]) N_ReturnFinalCargoStatus_Node0{"The status determination process
completes"}:::decision N_ReturnFinalCargoStatus_Node0_action["The final cargo status is returned
to the calling process for further
business operations"]:::main N_ReturnFinalCargoStatus_Node0 -- Yes --> N_ReturnFinalCargoStatus_Node0_action N_ReturnFinalCargoStatus_Node0_action --> E_ReturnFinalCargoStatus S_ReturnFinalCargoStatus --> N_ReturnFinalCargoStatus_Node0 N_ReturnFinalCargoStatus_Node0 -- No --> E_ReturnFinalCargoStatus
File: GCX016E.cbl
GIVEN: A final cargo status has been determined through priority rule application
WHEN: The status determination process completes
THEN: The final cargo status is returned to the calling process for further business operations
βœ“ Consolidated Acceptance Criteria
  • Regulatory hierarchy processing is initiated → the system retrieves the current S09 status array containing all existing disposition codes and their details
  • The system needs to apply regulatory precedence rules for a new disposition code → the system retrieves all current disposition codes from the S09 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_RetrieveCurrentStatusArray(["Start Step"]) E_RetrieveCurrentStatusArray(["End Step"]) N_RetrieveCurrentStatusArray_Node0{"Regulatory hierarchy processing is
initiated"}:::decision N_RetrieveCurrentStatusArray_Node0_action["The system retrieves the current
S09 status array containing all
existing disposition codes and their
details"]:::main N_RetrieveCurrentStatusArray_Node0 -- Yes --> N_RetrieveCurrentStatusArray_Node0_action N_RetrieveCurrentStatusArray_Node0_action --> E_RetrieveCurrentStatusArray S_RetrieveCurrentStatusArray --> N_RetrieveCurrentStatusArray_Node0 N_RetrieveCurrentStatusArray_Node1{"The system needs to apply
regulatory precedence rules for a
new disposition code"}:::decision N_RetrieveCurrentStatusArray_Node1_action["The system retrieves all current
disposition codes from the S09
status segments"]:::main N_RetrieveCurrentStatusArray_Node1 -- Yes --> N_RetrieveCurrentStatusArray_Node1_action N_RetrieveCurrentStatusArray_Node1_action --> E_RetrieveCurrentStatusArray N_RetrieveCurrentStatusArray_Node0 -- No --> N_RetrieveCurrentStatusArray_Node1 N_RetrieveCurrentStatusArray_Node1 -- No --> E_RetrieveCurrentStatusArray
File: GCX016E.cbl
GIVEN: A cargo record exists with status information
WHEN: Regulatory hierarchy processing is initiated
THEN:
  • The system retrieves the current s09 status array containing all existing disposition codes
  • Their details
File: GCX016E.cbl
GIVEN: A cargo record exists with disposition codes in the status array
WHEN: The system needs to apply regulatory precedence rules for a new disposition code
THEN: The system retrieves all current disposition codes from the S09 status segments
βœ“ Consolidated Acceptance Criteria
  • The disposition code is ready for regulatory hierarchy evaluation → the system identifies the disposition code type and prepares it for hierarchy processing
  • The system processes the disposition code → the system identifies the specific disposition code and its regulatory 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_IdentifyNewDispositionCode(["Start Step"]) E_IdentifyNewDispositionCode(["End Step"]) N_IdentifyNewDispositionCode_Node0{"The disposition code is ready for
regulatory hierarchy evaluation"}:::decision N_IdentifyNewDispositionCode_Node0_action["The system identifies the
disposition code type and prepares
it for hierarchy processing"]:::main N_IdentifyNewDispositionCode_Node0 -- Yes --> N_IdentifyNewDispositionCode_Node0_action N_IdentifyNewDispositionCode_Node0_action --> E_IdentifyNewDispositionCode S_IdentifyNewDispositionCode --> N_IdentifyNewDispositionCode_Node0 N_IdentifyNewDispositionCode_Node1{"The system processes the
disposition code"}:::decision N_IdentifyNewDispositionCode_Node1_action["The system identifies the specific
disposition code and its regulatory
classification"]:::main N_IdentifyNewDispositionCode_Node1 -- Yes --> N_IdentifyNewDispositionCode_Node1_action N_IdentifyNewDispositionCode_Node1_action --> E_IdentifyNewDispositionCode N_IdentifyNewDispositionCode_Node0 -- No --> N_IdentifyNewDispositionCode_Node1 N_IdentifyNewDispositionCode_Node1 -- No --> E_IdentifyNewDispositionCode
File: GCX016E.cbl
GIVEN: A new disposition code is received from X4 segment processing
WHEN: The disposition code is ready for regulatory hierarchy evaluation
THEN:
  • The system identifies the disposition code type
  • Prepares it for hierarchy processing
File: GCX016E.cbl
GIVEN: A new disposition code is being added to a cargo's status array
WHEN: The system processes the disposition code
THEN:
  • The system identifies the specific disposition code
  • Its regulatory classification
βœ“ Consolidated Acceptance Criteria
  • If the disposition code characteristics → the disposition code is classified as Hold Code, Release Code, Proceed Code, or Status Info based on its regulatory function
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 system evaluates the
disposition code characteristics"}:::decision N_CheckDispositionCodeType_Node0_action["The disposition code is classified
as Hold Code, Release Code, Proceed
Code, or Status Info based on its
regulatory function"]:::main N_CheckDispositionCodeType_Node0 -- Yes --> N_CheckDispositionCodeType_Node0_action N_CheckDispositionCodeType_Node0_action --> E_CheckDispositionCodeType S_CheckDispositionCodeType --> N_CheckDispositionCodeType_Node0 N_CheckDispositionCodeType_Node0 -- No --> E_CheckDispositionCodeType
File: GCX016E.cbl
GIVEN: A disposition code is identified for processing
WHEN: The system evaluates the disposition code characteristics
THEN: The disposition code is classified as Hold Code, Release Code, Proceed Code, or Status Info based on its regulatory function
βœ“ Consolidated Acceptance Criteria
  • Regulatory hierarchy processing is applied → the system applies hold-specific precedence rules including border holds, destination holds, and FDA holds with appropriate priority ordering
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ApplyHoldCodeHierarchy(["Start Step"]) E_ApplyHoldCodeHierarchy(["End Step"]) N_ApplyHoldCodeHierarchy_Node0{"Regulatory hierarchy processing is
applied"}:::decision N_ApplyHoldCodeHierarchy_Node0_action["The system applies hold-specific
precedence rules including border
holds, destination holds, and FDA
holds with appropriate priority
ordering"]:::main N_ApplyHoldCodeHierarchy_Node0 -- Yes --> N_ApplyHoldCodeHierarchy_Node0_action N_ApplyHoldCodeHierarchy_Node0_action --> E_ApplyHoldCodeHierarchy S_ApplyHoldCodeHierarchy --> N_ApplyHoldCodeHierarchy_Node0 N_ApplyHoldCodeHierarchy_Node0 -- No --> E_ApplyHoldCodeHierarchy
File: GCX016E.cbl
GIVEN: A disposition code is classified as a Hold Code type
WHEN: Regulatory hierarchy processing is applied
THEN: The system applies hold-specific precedence rules including border holds, destination holds, and FDA holds with appropriate priority ordering
βœ“ Consolidated Acceptance Criteria
  • Regulatory hierarchy processing is applied → the system applies release-specific precedence rules including manual releases, auto releases, and PTT releases with quantity 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_ApplyReleaseCodeHierarchy(["Start Step"]) E_ApplyReleaseCodeHierarchy(["End Step"]) N_ApplyReleaseCodeHierarchy_Node0{"Regulatory hierarchy processing is
applied"}:::decision N_ApplyReleaseCodeHierarchy_Node0_action["The system applies release-specific
precedence rules including manual
releases, auto releases, and PTT
releases with quantity validation
requirements"]:::main N_ApplyReleaseCodeHierarchy_Node0 -- Yes --> N_ApplyReleaseCodeHierarchy_Node0_action N_ApplyReleaseCodeHierarchy_Node0_action --> E_ApplyReleaseCodeHierarchy S_ApplyReleaseCodeHierarchy --> N_ApplyReleaseCodeHierarchy_Node0 N_ApplyReleaseCodeHierarchy_Node0 -- No --> E_ApplyReleaseCodeHierarchy
File: GCX016E.cbl
GIVEN: A disposition code is classified as a Release Code type
WHEN: Regulatory hierarchy processing is applied
THEN: The system applies release-specific precedence rules including manual releases, auto releases, and PTT releases with quantity validation requirements
βœ“ Consolidated Acceptance Criteria
  • Regulatory hierarchy processing is applied → the system applies proceed-specific precedence rules including in-bond processing requirements and entry type validations
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ApplyProceedCodeHierarchy(["Start Step"]) E_ApplyProceedCodeHierarchy(["End Step"]) N_ApplyProceedCodeHierarchy_Node0{"Regulatory hierarchy processing is
applied"}:::decision N_ApplyProceedCodeHierarchy_Node0_action["The system applies proceed-specific
precedence rules including in-bond
processing requirements and entry
type validations"]:::main N_ApplyProceedCodeHierarchy_Node0 -- Yes --> N_ApplyProceedCodeHierarchy_Node0_action N_ApplyProceedCodeHierarchy_Node0_action --> E_ApplyProceedCodeHierarchy S_ApplyProceedCodeHierarchy --> N_ApplyProceedCodeHierarchy_Node0 N_ApplyProceedCodeHierarchy_Node0 -- No --> E_ApplyProceedCodeHierarchy
File: GCX016E.cbl
GIVEN: A disposition code is classified as a Proceed Code type
WHEN: Regulatory hierarchy processing is applied
THEN:
  • The system applies proceed-specific precedence rules including in-bond processing requirements
  • Entry type validations
βœ“ Consolidated Acceptance Criteria
  • Regulatory hierarchy processing is applied → the system applies informational code precedence rules that do not affect cargo release status but provide tracking 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_ApplyStatusInfoCodeHierarchy(["Start Step"]) E_ApplyStatusInfoCodeHierarchy(["End Step"]) N_ApplyStatusInfoCodeHierarchy_Node0{"Regulatory hierarchy processing is
applied"}:::decision N_ApplyStatusInfoCodeHierarchy_Node0_action["The system applies informational
code precedence rules that do not
affect cargo release status but
provide tracking information"]:::main N_ApplyStatusInfoCodeHierarchy_Node0 -- Yes --> N_ApplyStatusInfoCodeHierarchy_Node0_action N_ApplyStatusInfoCodeHierarchy_Node0_action --> E_ApplyStatusInfoCodeHierarchy S_ApplyStatusInfoCodeHierarchy --> N_ApplyStatusInfoCodeHierarchy_Node0 N_ApplyStatusInfoCodeHierarchy_Node0 -- No --> E_ApplyStatusInfoCodeHierarchy
File: GCX016E.cbl
GIVEN: A disposition code is classified as Status Info type
WHEN: Regulatory hierarchy processing is applied
THEN: The system applies informational code precedence rules that do not affect cargo release status but provide tracking information
βœ“ Consolidated Acceptance Criteria
  • If code compatibility → the system identifies if conflicts exist between the new code and existing codes based on regulatory 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_CheckforConflictingCodes(["Start Step"]) E_CheckforConflictingCodes(["End Step"]) N_CheckforConflictingCodes_Node0{"The system evaluates code
compatibility"}:::decision N_CheckforConflictingCodes_Node0_action["The system identifies if conflicts
exist between the new code and
existing codes based on regulatory
business rules"]:::main N_CheckforConflictingCodes_Node0 -- Yes --> N_CheckforConflictingCodes_Node0_action N_CheckforConflictingCodes_Node0_action --> E_CheckforConflictingCodes S_CheckforConflictingCodes --> N_CheckforConflictingCodes_Node0 N_CheckforConflictingCodes_Node0 -- No --> E_CheckforConflictingCodes
File: GCX016E.cbl
GIVEN: A new disposition code is processed and existing status array contains disposition codes
WHEN: The system evaluates code compatibility
THEN:
  • The system identifies if conflicts exist between the new code
  • Existing codes based on regulatory business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes counterpart code logic → the system identifies specific counterpart codes that must be removed based on regulatory requirements and business logic
  • If each existing disposition code against the new disposition code → the system identifies which existing codes are counterparts that conflict with the new code based on predefined business 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_IdentifyCounterpartCodes(["Start Step"]) E_IdentifyCounterpartCodes(["End Step"]) N_IdentifyCounterpartCodes_Node0{"The system processes counterpart
code logic"}:::decision N_IdentifyCounterpartCodes_Node0_action["The system identifies specific
counterpart codes that must be
removed based on regulatory
requirements and business logic"]:::main N_IdentifyCounterpartCodes_Node0 -- Yes --> N_IdentifyCounterpartCodes_Node0_action N_IdentifyCounterpartCodes_Node0_action --> E_IdentifyCounterpartCodes S_IdentifyCounterpartCodes --> N_IdentifyCounterpartCodes_Node0 N_IdentifyCounterpartCodes_Node1{"The system evaluates each existing
disposition code against the new
disposition code"}:::decision N_IdentifyCounterpartCodes_Node1_action["The system identifies which
existing codes are counterparts that
conflict with the new code based on
predefined business relationships"]:::main N_IdentifyCounterpartCodes_Node1 -- Yes --> N_IdentifyCounterpartCodes_Node1_action N_IdentifyCounterpartCodes_Node1_action --> E_IdentifyCounterpartCodes N_IdentifyCounterpartCodes_Node0 -- No --> N_IdentifyCounterpartCodes_Node1 N_IdentifyCounterpartCodes_Node1 -- No --> E_IdentifyCounterpartCodes
File: GCX016E.cbl
GIVEN: Conflicting disposition codes are detected in the status array
WHEN: The system processes counterpart code logic
THEN:
  • The system identifies specific counterpart codes that must be removed based on regulatory requirements
  • Business logic
File: GCX016E.cbl
GIVEN: A search for conflicting codes has been initiated AND existing disposition codes are found in status arrays
WHEN: The system evaluates each existing disposition code against the new disposition code
THEN: The system identifies which existing codes are counterparts that conflict with the new code based on predefined business relationships
βœ“ Consolidated Acceptance Criteria
  • The system applies regulatory precedence logic → the system determines which codes have higher priority based on customs regulations, FDA requirements, and business policy 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_ApplyRegulatoryPrecedenceRules(["Start Step"]) E_ApplyRegulatoryPrecedenceRules(["End Step"]) N_ApplyRegulatoryPrecedenceRules_Node0{"The system applies regulatory
precedence logic"}:::decision N_ApplyRegulatoryPrecedenceRules_Node0_action["The system determines which codes
have higher priority based on
customs regulations, FDA
requirements, and business policy
hierarchy"]:::main N_ApplyRegulatoryPrecedenceRules_Node0 -- Yes --> N_ApplyRegulatoryPrecedenceRules_Node0_action N_ApplyRegulatoryPrecedenceRules_Node0_action --> E_ApplyRegulatoryPrecedenceRules S_ApplyRegulatoryPrecedenceRules --> N_ApplyRegulatoryPrecedenceRules_Node0 N_ApplyRegulatoryPrecedenceRules_Node0 -- No --> E_ApplyRegulatoryPrecedenceRules
File: GCX016E.cbl
GIVEN: Counterpart codes are identified and regulatory precedence must be determined
WHEN: The system applies regulatory precedence logic
THEN: The system determines which codes have higher priority based on customs regulations, FDA requirements, and business policy hierarchy
βœ“ Consolidated Acceptance Criteria
  • If priority levels → the system determines if the new disposition code has higher priority than existing codes based on regulatory 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_HigherPriorityCode(["Start Step"]) E_HigherPriorityCode(["End Step"]) N_HigherPriorityCode_Node0{"The system evaluates priority
levels"}:::decision N_HigherPriorityCode_Node0_action["The system determines if the new
disposition code has higher priority
than existing codes based on
regulatory hierarchy"]:::main N_HigherPriorityCode_Node0 -- Yes --> N_HigherPriorityCode_Node0_action N_HigherPriorityCode_Node0_action --> E_HigherPriorityCode S_HigherPriorityCode --> N_HigherPriorityCode_Node0 N_HigherPriorityCode_Node0 -- No --> E_HigherPriorityCode
File: GCX016E.cbl
GIVEN: Regulatory precedence rules are applied to conflicting disposition codes
WHEN: The system evaluates priority levels
THEN: The system determines if the new disposition code has higher priority than existing codes based on regulatory hierarchy
βœ“ Consolidated Acceptance Criteria
  • Priority resolution is executed → the system removes the lower priority disposition code from the status array and maintains audit trail
  • The system applies precedence rules → the system removes the lower priority code 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_RemoveLowerPriorityCode(["Start Step"]) E_RemoveLowerPriorityCode(["End Step"]) N_RemoveLowerPriorityCode_Node0{"Priority resolution is executed"}:::decision N_RemoveLowerPriorityCode_Node0_action["The system removes the lower
priority disposition code from the
status array and maintains audit
trail"]:::main N_RemoveLowerPriorityCode_Node0 -- Yes --> N_RemoveLowerPriorityCode_Node0_action N_RemoveLowerPriorityCode_Node0_action --> E_RemoveLowerPriorityCode S_RemoveLowerPriorityCode --> N_RemoveLowerPriorityCode_Node0 N_RemoveLowerPriorityCode_Node1{"The system applies precedence rules"}:::decision N_RemoveLowerPriorityCode_Node1_action["The system removes the lower
priority code from the status array"]:::main N_RemoveLowerPriorityCode_Node1 -- Yes --> N_RemoveLowerPriorityCode_Node1_action N_RemoveLowerPriorityCode_Node1_action --> E_RemoveLowerPriorityCode N_RemoveLowerPriorityCode_Node0 -- No --> N_RemoveLowerPriorityCode_Node1 N_RemoveLowerPriorityCode_Node1 -- No --> E_RemoveLowerPriorityCode
File: GCX016E.cbl
GIVEN: A disposition code is determined to have lower priority than a conflicting code
WHEN: Priority resolution is executed
THEN:
  • The system removes the lower priority disposition code from the status array
  • Maintains audit trail
File: GCX016E.cbl
GIVEN: A higher priority disposition code exists compared to a lower priority code
WHEN: The system applies precedence rules
THEN: The system removes the lower priority code from the status array
βœ“ Consolidated Acceptance Criteria
  • Priority resolution is executed → the system retains the higher priority disposition code in the status array and proceeds with processing
  • The system applies precedence rules → the system keeps the existing higher priority code and may reject or modify 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_KeepHigherPriorityCode(["Start Step"]) E_KeepHigherPriorityCode(["End Step"]) N_KeepHigherPriorityCode_Node0{"Priority resolution is executed"}:::decision N_KeepHigherPriorityCode_Node0_action["The system retains the higher
priority disposition code in the
status array and proceeds with
processing"]:::main N_KeepHigherPriorityCode_Node0 -- Yes --> N_KeepHigherPriorityCode_Node0_action N_KeepHigherPriorityCode_Node0_action --> E_KeepHigherPriorityCode S_KeepHigherPriorityCode --> N_KeepHigherPriorityCode_Node0 N_KeepHigherPriorityCode_Node1{"The system applies precedence rules"}:::decision N_KeepHigherPriorityCode_Node1_action["The system keeps the existing
higher priority code and may reject
or modify the new code"]:::exclusion N_KeepHigherPriorityCode_Node1 -- Yes -->|Alternative| N_KeepHigherPriorityCode_Node1_action N_KeepHigherPriorityCode_Node1_action --> E_KeepHigherPriorityCode N_KeepHigherPriorityCode_Node0 -- No --> N_KeepHigherPriorityCode_Node1 N_KeepHigherPriorityCode_Node1 -- No --> E_KeepHigherPriorityCode
File: GCX016E.cbl
GIVEN: A disposition code is determined to have higher priority than conflicting codes
WHEN: Priority resolution is executed
THEN:
  • The system retains the higher priority disposition code in the status array
  • Proceeds with processing
File: GCX016E.cbl
GIVEN: An existing disposition code has higher priority than the new code
WHEN: The system applies precedence rules
THEN:
  • The system keeps the existing higher priority code
  • May reject or modify the new code
βœ“ Consolidated Acceptance Criteria
  • Final validation is performed → the system validates that the final combination of disposition codes is legally compliant and business-rule compliant
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateFinalCodeCombination(["Start Step"]) E_ValidateFinalCodeCombination(["End Step"]) N_ValidateFinalCodeCombination_Node0{"Final validation is performed"}:::decision N_ValidateFinalCodeCombination_Node0_action["The system validates that the final
combination of disposition codes is
legally compliant and business-rule
compliant"]:::main N_ValidateFinalCodeCombination_Node0 -- Yes --> N_ValidateFinalCodeCombination_Node0_action N_ValidateFinalCodeCombination_Node0_action --> E_ValidateFinalCodeCombination S_ValidateFinalCodeCombination --> N_ValidateFinalCodeCombination_Node0 N_ValidateFinalCodeCombination_Node0 -- No --> E_ValidateFinalCodeCombination
File: GCX016E.cbl
GIVEN: Disposition code conflicts are resolved and final codes are determined
WHEN: Final validation is performed
THEN:
  • The system validates that the final combination of disposition codes is legally compliant
  • Business-rule compliant
βœ“ Consolidated Acceptance Criteria
  • Regulatory compliance verification is performed → the system determines if the combination is compliant with customs regulations, FDA requirements, and other applicable regulatory 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_RegulatoryComplianceCheck(["Start Step"]) E_RegulatoryComplianceCheck(["End Step"]) N_RegulatoryComplianceCheck_Node0{"Regulatory compliance verification
is performed"}:::decision N_RegulatoryComplianceCheck_Node0_action["The system determines if the
combination is compliant with
customs regulations, FDA
requirements, and other applicable
regulatory standards"]:::main N_RegulatoryComplianceCheck_Node0 -- Yes --> N_RegulatoryComplianceCheck_Node0_action N_RegulatoryComplianceCheck_Node0_action --> E_RegulatoryComplianceCheck S_RegulatoryComplianceCheck --> N_RegulatoryComplianceCheck_Node0 N_RegulatoryComplianceCheck_Node0 -- No --> E_RegulatoryComplianceCheck
File: GCX016E.cbl
GIVEN: Final disposition code combination is validated
WHEN: Regulatory compliance verification is performed
THEN: The system determines if the combination is compliant with customs regulations, FDA requirements, and other applicable regulatory standards
βœ“ Consolidated Acceptance Criteria
  • Default regulatory action is triggered → the system applies predefined default actions to ensure regulatory compliance including hold placement or status 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_ApplyDefaultRegulatoryAction(["Start Step"]) E_ApplyDefaultRegulatoryAction(["End Step"]) N_ApplyDefaultRegulatoryAction_Node0{"Default regulatory action is
triggered"}:::decision N_ApplyDefaultRegulatoryAction_Node0_action["The system applies predefined
default actions to ensure regulatory
compliance including hold placement
or status correction"]:::main N_ApplyDefaultRegulatoryAction_Node0 -- Yes --> N_ApplyDefaultRegulatoryAction_Node0_action N_ApplyDefaultRegulatoryAction_Node0_action --> E_ApplyDefaultRegulatoryAction S_ApplyDefaultRegulatoryAction --> N_ApplyDefaultRegulatoryAction_Node0 N_ApplyDefaultRegulatoryAction_Node0 -- No --> E_ApplyDefaultRegulatoryAction
File: GCX016E.cbl
GIVEN: Final disposition code combination fails regulatory compliance check
WHEN: Default regulatory action is triggered
THEN: The system applies predefined default actions to ensure regulatory compliance including hold placement or status correction
βœ“ Consolidated Acceptance Criteria
  • Status array update is executed → the system updates the S09 status array with final disposition codes including sequence numbers and occurrence 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_UpdateStatusArraywithFinalCodes(["Start Step"]) E_UpdateStatusArraywithFinalCodes(["End Step"]) N_UpdateStatusArraywithFinalCodes_Node0{"Status array update is executed"}:::decision N_UpdateStatusArraywithFinalCodes_Node0_action["The system updates the S09 status
array with final disposition codes
including sequence numbers and
occurrence tracking"]:::main N_UpdateStatusArraywithFinalCodes_Node0 -- Yes --> N_UpdateStatusArraywithFinalCodes_Node0_action N_UpdateStatusArraywithFinalCodes_Node0_action --> E_UpdateStatusArraywithFinalCodes S_UpdateStatusArraywithFinalCodes --> N_UpdateStatusArraywithFinalCodes_Node0 N_UpdateStatusArraywithFinalCodes_Node0 -- No --> E_UpdateStatusArraywithFinalCodes
File: GCX016E.cbl
GIVEN: Final disposition codes are validated and compliance is confirmed
WHEN: Status array update is executed
THEN:
  • The system updates the s09 status array with final disposition codes including sequence numbers
  • Occurrence tracking
βœ“ Consolidated Acceptance Criteria
  • Audit logging is performed → the system logs the regulatory decisions made, codes removed or added, and rationale for compliance 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_LogRegulatoryDecision(["Start Step"]) E_LogRegulatoryDecision(["End Step"]) N_LogRegulatoryDecision_Node0{"Audit logging is performed"}:::decision N_LogRegulatoryDecision_Node0_action["The system logs the regulatory
decisions made, codes removed or
added, and rationale for compliance
and audit purposes"]:::main N_LogRegulatoryDecision_Node0 -- Yes --> N_LogRegulatoryDecision_Node0_action N_LogRegulatoryDecision_Node0_action --> E_LogRegulatoryDecision S_LogRegulatoryDecision --> N_LogRegulatoryDecision_Node0 N_LogRegulatoryDecision_Node0 -- No --> E_LogRegulatoryDecision
File: GCX016E.cbl
GIVEN: Regulatory hierarchy processing is completed and status array is updated
WHEN: Audit logging is performed
THEN:
  • The system logs the regulatory decisions made, codes removed or added, and rationale for compliance
  • Audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system checks for regulatory conflicts between codes → the system determines if conflicting codes exist that require precedence rule application
  • If the new disposition code against existing codes → the system identifies if there are any conflicting or counterpart codes that need to be addressed
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckforConflictingCodes(["Start Step"]) E_CheckforConflictingCodes(["End Step"]) N_CheckforConflictingCodes_Node0{"The system checks for regulatory
conflicts between codes"}:::decision N_CheckforConflictingCodes_Node0_action["The system determines if
conflicting codes exist that require
precedence rule application"]:::main N_CheckforConflictingCodes_Node0 -- Yes --> N_CheckforConflictingCodes_Node0_action N_CheckforConflictingCodes_Node0_action --> E_CheckforConflictingCodes S_CheckforConflictingCodes --> N_CheckforConflictingCodes_Node0 N_CheckforConflictingCodes_Node1{"The system evaluates the new
disposition code against existing
codes"}:::decision N_CheckforConflictingCodes_Node1_action["The system identifies if there are
any conflicting or counterpart codes
that need to be addressed"]:::main N_CheckforConflictingCodes_Node1 -- Yes --> N_CheckforConflictingCodes_Node1_action N_CheckforConflictingCodes_Node1_action --> E_CheckforConflictingCodes N_CheckforConflictingCodes_Node0 -- No --> N_CheckforConflictingCodes_Node1 N_CheckforConflictingCodes_Node1 -- No --> E_CheckforConflictingCodes
File: GCX016E.cbl
GIVEN: A new disposition code and existing status array with current disposition codes
WHEN: The system checks for regulatory conflicts between codes
THEN: The system determines if conflicting codes exist that require precedence rule application
File: GCX016E.cbl
GIVEN: A new disposition code is being processed for a cargo AND the cargo has an existing status array with disposition codes
WHEN: The system evaluates the new disposition code against existing codes
THEN: The system identifies if there are any conflicting or counterpart codes that need to be addressed
βœ“ Consolidated Acceptance Criteria
  • The system applies customs regulatory hierarchy rules → the system determines the precedence order based on regulatory requirements and customs 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_ApplyCustomsRegulatoryHierarchy(["Start Step"]) E_ApplyCustomsRegulatoryHierarchy(["End Step"]) N_ApplyCustomsRegulatoryHierarchy_Node0{"The system applies customs
regulatory hierarchy rules"}:::decision N_ApplyCustomsRegulatoryHierarchy_Node0_action["The system determines the
precedence order based on regulatory
requirements and customs policies"]:::main N_ApplyCustomsRegulatoryHierarchy_Node0 -- Yes --> N_ApplyCustomsRegulatoryHierarchy_Node0_action N_ApplyCustomsRegulatoryHierarchy_Node0_action --> E_ApplyCustomsRegulatoryHierarchy S_ApplyCustomsRegulatoryHierarchy --> N_ApplyCustomsRegulatoryHierarchy_Node0 N_ApplyCustomsRegulatoryHierarchy_Node0 -- No --> E_ApplyCustomsRegulatoryHierarchy
File: GCX016E.cbl
GIVEN: Conflicting disposition codes exist in the cargo status array
WHEN: The system applies customs regulatory hierarchy rules
THEN:
  • The system determines the precedence order based on regulatory requirements
  • Customs policies
βœ“ Consolidated Acceptance Criteria
  • If code priorities → the system determines if an existing code has higher regulatory priority than 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_HigherPriorityCodeExists(["Start Step"]) E_HigherPriorityCodeExists(["End Step"]) N_HigherPriorityCodeExists_Node0{"The system evaluates code
priorities"}:::decision N_HigherPriorityCodeExists_Node0_action["The system determines if an
existing code has higher regulatory
priority than the new code"]:::main N_HigherPriorityCodeExists_Node0 -- Yes --> N_HigherPriorityCodeExists_Node0_action N_HigherPriorityCodeExists_Node0_action --> E_HigherPriorityCodeExists S_HigherPriorityCodeExists --> N_HigherPriorityCodeExists_Node0 N_HigherPriorityCodeExists_Node0 -- No --> E_HigherPriorityCodeExists
File: GCX016E.cbl
GIVEN: Regulatory hierarchy has been applied to conflicting disposition codes
WHEN: The system evaluates code priorities
THEN: The system determines if an existing code has higher regulatory priority than the new code
βœ“ Consolidated Acceptance Criteria
  • The system validates regulatory compliance → the system confirms that the resulting code combination meets all customs 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_ValidateRegulatoryCompliance(["Start Step"]) E_ValidateRegulatoryCompliance(["End Step"]) N_ValidateRegulatoryCompliance_Node0{"The system validates regulatory
compliance"}:::decision N_ValidateRegulatoryCompliance_Node0_action["The system confirms that the
resulting code combination meets all
customs regulatory requirements"]:::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: GCX016E.cbl
GIVEN: Precedence rules have been applied to disposition codes
WHEN: The system validates regulatory compliance
THEN: The system confirms that the resulting code combination meets all customs regulatory requirements
βœ“ Consolidated Acceptance Criteria
  • The system checks if precedence rules are satisfied → the system determines if all precedence requirements have been met 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_PrecedenceRulesSatisfied(["Start Step"]) E_PrecedenceRulesSatisfied(["End Step"]) N_PrecedenceRulesSatisfied_Node0{"The system checks if precedence
rules are satisfied"}:::decision N_PrecedenceRulesSatisfied_Node0_action["The system determines if all
precedence requirements have been
met successfully"]:::main N_PrecedenceRulesSatisfied_Node0 -- Yes --> N_PrecedenceRulesSatisfied_Node0_action N_PrecedenceRulesSatisfied_Node0_action --> E_PrecedenceRulesSatisfied S_PrecedenceRulesSatisfied --> N_PrecedenceRulesSatisfied_Node0 N_PrecedenceRulesSatisfied_Node0 -- No --> E_PrecedenceRulesSatisfied
File: GCX016E.cbl
GIVEN: Regulatory compliance validation has been performed
WHEN: The system checks if precedence rules are satisfied
THEN: The system determines if all precedence requirements have been met successfully
βœ“ Consolidated Acceptance Criteria
  • The system updates the status array → the system commits the precedence-adjusted disposition codes to the cargo's S09 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_UpdateStatusArray(["Start Step"]) E_UpdateStatusArray(["End Step"]) N_UpdateStatusArray_Node0{"The system updates the status array"}:::decision N_UpdateStatusArray_Node0_action["The system commits the
precedence-adjusted disposition
codes to the cargo s S09 status
segments"]:::main N_UpdateStatusArray_Node0 -- Yes --> N_UpdateStatusArray_Node0_action N_UpdateStatusArray_Node0_action --> E_UpdateStatusArray S_UpdateStatusArray --> N_UpdateStatusArray_Node0 N_UpdateStatusArray_Node0 -- No --> E_UpdateStatusArray
File: GCX016E.cbl
GIVEN: Precedence rules have been successfully applied and validated
WHEN: The system updates the status array
THEN: The system commits the precedence-adjusted disposition codes to the cargo's S09 status segments
βœ“ Consolidated Acceptance Criteria
  • The system logs the precedence decision → the system records the precedence actions, removed codes, and regulatory justification 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_LogPrecedenceDecision(["Start Step"]) E_LogPrecedenceDecision(["End Step"]) N_LogPrecedenceDecision_Node0{"The system logs the precedence
decision"}:::decision N_LogPrecedenceDecision_Node0_action["The system records the precedence
actions, removed codes, and
regulatory justification for audit
purposes"]:::main N_LogPrecedenceDecision_Node0 -- Yes --> N_LogPrecedenceDecision_Node0_action N_LogPrecedenceDecision_Node0_action --> E_LogPrecedenceDecision S_LogPrecedenceDecision --> N_LogPrecedenceDecision_Node0 N_LogPrecedenceDecision_Node0 -- No --> E_LogPrecedenceDecision
File: GCX016E.cbl
GIVEN: Precedence rules have been applied and status array updated
WHEN: The system logs the precedence decision
THEN: The system records the precedence actions, removed codes, and regulatory justification for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system encounters unresolvable precedence issues → the system generates appropriate conflict warnings for manual review and intervention
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateConflictWarning(["Start Step"]) E_GenerateConflictWarning(["End Step"]) N_GenerateConflictWarning_Node0{"The system encounters unresolvable
precedence issues"}:::decision N_GenerateConflictWarning_Node0_action["The system generates appropriate
conflict warnings for manual review
and intervention"]:::main N_GenerateConflictWarning_Node0 -- Yes --> N_GenerateConflictWarning_Node0_action N_GenerateConflictWarning_Node0_action --> E_GenerateConflictWarning S_GenerateConflictWarning --> N_GenerateConflictWarning_Node0 N_GenerateConflictWarning_Node0 -- No --> E_GenerateConflictWarning
File: GCX016E.cbl
GIVEN: Precedence rules cannot be satisfied or regulatory conflicts exist
WHEN: The system encounters unresolvable precedence issues
THEN:
  • The system generates appropriate conflict warnings for manual review
  • Intervention
βœ“ Consolidated Acceptance Criteria
  • The system applies default precedence rules → the system uses predefined default hierarchy to resolve conflicts and proceed 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_ApplyDefaultPrecedenceRule(["Start Step"]) E_ApplyDefaultPrecedenceRule(["End Step"]) N_ApplyDefaultPrecedenceRule_Node0{"The system applies default
precedence rules"}:::decision N_ApplyDefaultPrecedenceRule_Node0_action["The system uses predefined default
hierarchy to resolve conflicts and
proceed with processing"]:::main N_ApplyDefaultPrecedenceRule_Node0 -- Yes --> N_ApplyDefaultPrecedenceRule_Node0_action N_ApplyDefaultPrecedenceRule_Node0_action --> E_ApplyDefaultPrecedenceRule S_ApplyDefaultPrecedenceRule --> N_ApplyDefaultPrecedenceRule_Node0 N_ApplyDefaultPrecedenceRule_Node0 -- No --> E_ApplyDefaultPrecedenceRule
File: GCX016E.cbl
GIVEN: Specific precedence rules cannot resolve disposition code conflicts
WHEN: The system applies default precedence rules
THEN:
  • The system uses predefined default hierarchy to resolve conflicts
  • Proceed with processing
βœ“ Consolidated Acceptance Criteria
  • Canadian manifest processing is initiated → equipment ID is extracted and formatted for Canadian cargo database search
  • The system processes the cargo for Canadian manifest matching → the equipment ID is extracted and formatted 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_ExtractEquipmentIDfromUSCargo(["Start Step"]) E_ExtractEquipmentIDfromUSCargo(["End Step"]) N_ExtractEquipmentIDfromUSCargo_Node0{"Canadian manifest processing is
initiated"}:::decision N_ExtractEquipmentIDfromUSCargo_Node0_action["Equipment ID is extracted and
formatted for Canadian cargo
database search"]:::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 processes the cargo for
Canadian manifest matching"}:::decision N_ExtractEquipmentIDfromUSCargo_Node1_action["The equipment ID is extracted and
formatted for Canadian system 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: GCX016E.cbl
GIVEN: A US cargo record exists with equipment information
WHEN: Canadian manifest processing is initiated
THEN:
  • Equipment id is extracted
  • Formatted for canadian cargo database search
File: GCX016E.cbl
GIVEN: A US cargo record exists with equipment information
WHEN: The system processes the cargo for Canadian manifest matching
THEN:
  • The equipment id is extracted
  • Formatted for canadian system lookup
βœ“ Consolidated Acceptance Criteria
  • Search results are evaluated → system determines if Canadian cargo record exists and routes processing accordingly
  • If the search results → the system determines if Canadian cargo 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_CanadianCargoFound(["Start Step"]) E_CanadianCargoFound(["End Step"]) N_CanadianCargoFound_Node0{"Search results are evaluated"}:::decision N_CanadianCargoFound_Node0_action["System determines if Canadian cargo
record exists 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 was 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_Node1 -- No --> E_CanadianCargoFound
File: GCX016E.cbl
GIVEN: Canadian cargo database search has been performed
WHEN: Search results are evaluated
THEN:
  • System determines if canadian cargo record exists
  • Routes processing accordingly
File: GCX016E.cbl
GIVEN: A search has been performed on the Canadian cargo database
WHEN: The system evaluates the search results
THEN: The system determines if Canadian cargo was found or not found
βœ“ Consolidated Acceptance Criteria
  • Cargo status is evaluated → system reads and validates the Canadian cargo status from GCCC database
  • The system validates the cargo status → the cargo status is checked to ensure it is valid for processing and not in an excluded state
  • The system validates the cargo status → the cargo status is checked to ensure it is not deleted or marked as new bond 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_ValidateCanadianCargoStatus(["Start Step"]) E_ValidateCanadianCargoStatus(["End Step"]) N_ValidateCanadianCargoStatus_Node0{"Cargo status is evaluated"}:::decision N_ValidateCanadianCargoStatus_Node0_action["System reads and validates the
Canadian cargo status from GCCC
database"]:::main N_ValidateCanadianCargoStatus_Node0 -- Yes --> N_ValidateCanadianCargoStatus_Node0_action N_ValidateCanadianCargoStatus_Node0_action --> E_ValidateCanadianCargoStatus S_ValidateCanadianCargoStatus --> N_ValidateCanadianCargoStatus_Node0 N_ValidateCanadianCargoStatus_Node1{"The system validates the cargo
status"}:::decision N_ValidateCanadianCargoStatus_Node1_action["The cargo status is checked to
ensure it is valid for processing
and not in an excluded state"]:::main N_ValidateCanadianCargoStatus_Node1 -- Yes --> N_ValidateCanadianCargoStatus_Node1_action N_ValidateCanadianCargoStatus_Node1_action --> E_ValidateCanadianCargoStatus N_ValidateCanadianCargoStatus_Node0 -- No --> N_ValidateCanadianCargoStatus_Node1 N_ValidateCanadianCargoStatus_Node2{"The system validates the cargo
status"}:::decision N_ValidateCanadianCargoStatus_Node2_action["The cargo status is checked to
ensure it is not deleted or marked
as new bond created"]:::main N_ValidateCanadianCargoStatus_Node2 -- Yes --> N_ValidateCanadianCargoStatus_Node2_action N_ValidateCanadianCargoStatus_Node2_action --> E_ValidateCanadianCargoStatus N_ValidateCanadianCargoStatus_Node1 -- No --> N_ValidateCanadianCargoStatus_Node2 N_ValidateCanadianCargoStatus_Node2 -- No --> E_ValidateCanadianCargoStatus
File: GCX016E.cbl
GIVEN: Canadian cargo record has been found
WHEN: Cargo status is evaluated
THEN:
  • System reads
  • Validates the canadian cargo status from gccc database
File: GCX016E.cbl
GIVEN: A Canadian cargo record has been found
WHEN: The system validates the cargo status
THEN:
  • The cargo status is checked to ensure it is valid for processing
  • Not in an excluded state
File: GCX016E.cbl
GIVEN: Canadian cargo records have been found for the equipment ID
WHEN: The system validates the cargo status
THEN: The cargo status is checked to ensure it is not deleted or marked as new bond created
βœ“ Consolidated Acceptance Criteria
  • Status validity is checked → system excludes cargos with deleted status or new bond created status and allows valid statuses to proceed
  • The system determines status validity → the status is classified as valid, deleted, or new bond created based on 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_StatusValid(["Start Step"]) E_StatusValid(["End Step"]) N_StatusValid_Node0{"Status validity is checked"}:::decision N_StatusValid_Node0_action["System excludes cargos with deleted
status or new bond created status
and allows valid statuses to proceed"]:::main N_StatusValid_Node0 -- Yes --> N_StatusValid_Node0_action N_StatusValid_Node0_action --> E_StatusValid S_StatusValid --> N_StatusValid_Node0 N_StatusValid_Node1{"The system determines status
validity"}:::decision N_StatusValid_Node1_action["The status is classified as valid,
deleted, or new bond created based
on cargo state"]:::main N_StatusValid_Node1 -- Yes --> N_StatusValid_Node1_action N_StatusValid_Node1_action --> E_StatusValid N_StatusValid_Node0 -- No --> N_StatusValid_Node1 N_StatusValid_Node1 -- No --> E_StatusValid
File: GCX016E.cbl
GIVEN: Canadian cargo status has been retrieved
WHEN: Status validity is checked
THEN:
  • System excludes cargos with deleted status or new bond created status
  • Allows valid statuses to proceed
File: GCX016E.cbl
GIVEN: Canadian cargo status has been retrieved and validated
WHEN: The system determines status validity
THEN: The status is classified as valid, deleted, or new bond created based on cargo state
βœ“ Consolidated Acceptance Criteria
  • Equipment ID matching is performed → system matches car ID number index between US and Canadian cargo records
  • The system matches equipment IDs between US and Canadian systems → equipment IDs are compared and validated for creating cross-border tracking links
  • The system matches equipment IDs between systems → equipment ID correspondence is established 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_MatchEquipmentIDsBetweenSystems(["Start Step"]) E_MatchEquipmentIDsBetweenSystems(["End Step"]) N_MatchEquipmentIDsBetweenSystems_Node0{"Equipment ID matching is performed"}:::decision N_MatchEquipmentIDsBetweenSystems_Node0_action["System matches car ID number index
between US and Canadian cargo
records"]:::main N_MatchEquipmentIDsBetweenSystems_Node0 -- Yes --> N_MatchEquipmentIDsBetweenSystems_Node0_action N_MatchEquipmentIDsBetweenSystems_Node0_action --> E_MatchEquipmentIDsBetweenSystems S_MatchEquipmentIDsBetweenSystems --> N_MatchEquipmentIDsBetweenSystems_Node0 N_MatchEquipmentIDsBetweenSystems_Node1{"The system matches equipment IDs
between US and Canadian systems"}:::decision N_MatchEquipmentIDsBetweenSystems_Node1_action["Equipment IDs are compared and
validated for creating cross-border
tracking links"]:::main N_MatchEquipmentIDsBetweenSystems_Node1 -- Yes --> N_MatchEquipmentIDsBetweenSystems_Node1_action N_MatchEquipmentIDsBetweenSystems_Node1_action --> E_MatchEquipmentIDsBetweenSystems N_MatchEquipmentIDsBetweenSystems_Node0 -- No --> N_MatchEquipmentIDsBetweenSystems_Node1 N_MatchEquipmentIDsBetweenSystems_Node2{"The system matches equipment IDs
between systems"}:::decision N_MatchEquipmentIDsBetweenSystems_Node2_action["Equipment ID correspondence is
established between US and Canadian
cargo records"]:::main N_MatchEquipmentIDsBetweenSystems_Node2 -- Yes --> N_MatchEquipmentIDsBetweenSystems_Node2_action N_MatchEquipmentIDsBetweenSystems_Node2_action --> E_MatchEquipmentIDsBetweenSystems N_MatchEquipmentIDsBetweenSystems_Node1 -- No --> N_MatchEquipmentIDsBetweenSystems_Node2 N_MatchEquipmentIDsBetweenSystems_Node2 -- No --> E_MatchEquipmentIDsBetweenSystems
File: GCX016E.cbl
GIVEN: Valid Canadian cargo has been found and audit trail created
WHEN: Equipment ID matching is performed
THEN:
  • System matches car id number index between us
  • Canadian cargo records
File: GCX016E.cbl
GIVEN: A valid Canadian cargo record exists for processing
WHEN:
  • The system matches equipment ids between us
  • Canadian systems
THEN:
  • Equipment ids are compared
  • Validated for creating cross-border tracking links
File: GCX016E.cbl
GIVEN: Valid Canadian cargo has been found with matching equipment ID
WHEN: The system matches equipment IDs between systems
THEN:
  • Equipment id correspondence is established between us
  • Canadian cargo records
βœ“ Consolidated Acceptance Criteria
  • Status update is performed → system updates cargo processing status to indicate Canadian manifest match 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_UpdateCargoProcessingStatus(["Start Step"]) E_UpdateCargoProcessingStatus(["End Step"]) N_UpdateCargoProcessingStatus_Node0{"Status update is performed"}:::decision N_UpdateCargoProcessingStatus_Node0_action["System updates cargo processing
status to indicate Canadian manifest
match completion"]:::main N_UpdateCargoProcessingStatus_Node0 -- Yes --> N_UpdateCargoProcessingStatus_Node0_action N_UpdateCargoProcessingStatus_Node0_action --> E_UpdateCargoProcessingStatus S_UpdateCargoProcessingStatus --> N_UpdateCargoProcessingStatus_Node0 N_UpdateCargoProcessingStatus_Node0 -- No --> E_UpdateCargoProcessingStatus
File: GCX016E.cbl
GIVEN: Equipment IDs have been successfully matched between systems
WHEN: Status update is performed
THEN: System updates cargo processing status to indicate Canadian manifest match completion
βœ“ Consolidated Acceptance Criteria
  • Logging is performed → system logs the successful Canadian manifest match with relevant details
  • The system logs the manifest match → match results are recorded with cargo details 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_LogCanadianManifestMatch(["Start Step"]) E_LogCanadianManifestMatch(["End Step"]) N_LogCanadianManifestMatch_Node0{"Logging is performed"}:::decision N_LogCanadianManifestMatch_Node0_action["System logs the successful Canadian
manifest match with relevant details"]:::main N_LogCanadianManifestMatch_Node0 -- Yes --> N_LogCanadianManifestMatch_Node0_action N_LogCanadianManifestMatch_Node0_action --> E_LogCanadianManifestMatch S_LogCanadianManifestMatch --> N_LogCanadianManifestMatch_Node0 N_LogCanadianManifestMatch_Node1{"The system logs the manifest match"}:::decision N_LogCanadianManifestMatch_Node1_action["Match results are recorded with
cargo details and timestamp
information"]:::main N_LogCanadianManifestMatch_Node1 -- Yes --> N_LogCanadianManifestMatch_Node1_action N_LogCanadianManifestMatch_Node1_action --> E_LogCanadianManifestMatch N_LogCanadianManifestMatch_Node0 -- No --> N_LogCanadianManifestMatch_Node1 N_LogCanadianManifestMatch_Node1 -- No --> E_LogCanadianManifestMatch
File: GCX016E.cbl
GIVEN: Canadian manifest matching has been completed successfully
WHEN: Logging is performed
THEN: System logs the successful Canadian manifest match with relevant details
File: GCX016E.cbl
GIVEN: Cross-border tracking links have been created successfully
WHEN: The system logs the manifest match
THEN:
  • Match results are recorded with cargo details
  • Timestamp information
βœ“ Consolidated Acceptance Criteria
  • No matching Canadian cargo is found → system processes the no match condition 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_NoCanadianMatchFound(["Start Step"]) E_NoCanadianMatchFound(["End Step"]) N_NoCanadianMatchFound_Node0{"No matching Canadian cargo is found"}:::decision N_NoCanadianMatchFound_Node0_action["System processes the no match
condition and continues with
standard processing"]:::main N_NoCanadianMatchFound_Node0 -- Yes --> N_NoCanadianMatchFound_Node0_action N_NoCanadianMatchFound_Node0_action --> E_NoCanadianMatchFound S_NoCanadianMatchFound --> N_NoCanadianMatchFound_Node0 N_NoCanadianMatchFound_Node0 -- No --> E_NoCanadianMatchFound
File: GCX016E.cbl
GIVEN: Canadian cargo database search has been performed
WHEN: No matching Canadian cargo is found
THEN:
  • System processes the no match condition
  • Continues with standard processing
βœ“ Consolidated Acceptance Criteria
  • No match logging is performed → system logs the no match status with appropriate 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_LogNoMatchStatus(["Start Step"]) E_LogNoMatchStatus(["End Step"]) N_LogNoMatchStatus_Node0{"No match logging is performed"}:::decision N_LogNoMatchStatus_Node0_action["System logs the no match status
with appropriate reason code"]:::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: GCX016E.cbl
GIVEN: Either no Canadian cargo was found or Canadian cargo has invalid status
WHEN: No match logging is performed
THEN: System logs the no match status with appropriate reason code
βœ“ Consolidated Acceptance Criteria
  • The system initiates cargo status processing → the current cargo status is saved to a backup location for potential restoration
  • The system begins cargo status processing → the current cargo status is saved to backup 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 initiates cargo status
processing"}:::decision N_SaveCurrentCargoStatus_Node0_action["The current cargo status is saved
to a backup location for potential
restoration"]:::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 begins cargo status
processing"}:::decision N_SaveCurrentCargoStatus_Node1_action["The current cargo status is saved
to backup storage 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_Node1 -- No --> E_SaveCurrentCargoStatus
File: GCX016E.cbl
GIVEN: A cargo record exists with current status information
WHEN: The system initiates cargo status processing
THEN: The current cargo status is saved to a backup location for potential restoration
File: GCX016E.cbl
GIVEN: A cargo record exists with current status information
WHEN: The system begins cargo status processing
THEN: The current cargo status is saved to backup storage for potential restoration
βœ“ Consolidated Acceptance Criteria
  • Status preservation process is executed → previous status information including codes, quantities, and dates is stored in designated storage areas
  • The system prepares for status updates → previous status information including dates and codes is stored in audit 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_StorePreviousStatusInformation(["Start Step"]) E_StorePreviousStatusInformation(["End Step"]) N_StorePreviousStatusInformation_Node0{"Status preservation process is
executed"}:::decision N_StorePreviousStatusInformation_Node0_action["Previous status information
including codes, quantities, and
dates is stored in designated
storage areas"]:::main N_StorePreviousStatusInformation_Node0 -- Yes --> N_StorePreviousStatusInformation_Node0_action N_StorePreviousStatusInformation_Node0_action --> E_StorePreviousStatusInformation S_StorePreviousStatusInformation --> N_StorePreviousStatusInformation_Node0 N_StorePreviousStatusInformation_Node1{"The system prepares for status
updates"}:::decision N_StorePreviousStatusInformation_Node1_action["Previous status information
including dates and codes is stored
in audit storage"]:::main N_StorePreviousStatusInformation_Node1 -- Yes --> N_StorePreviousStatusInformation_Node1_action N_StorePreviousStatusInformation_Node1_action --> E_StorePreviousStatusInformation N_StorePreviousStatusInformation_Node0 -- No --> N_StorePreviousStatusInformation_Node1 N_StorePreviousStatusInformation_Node1 -- No --> E_StorePreviousStatusInformation
File: GCX016E.cbl
GIVEN: Cargo status information exists in the system
WHEN: Status preservation process is executed
THEN: Previous status information including codes, quantities, and dates is stored in designated storage areas
File: GCX016E.cbl
GIVEN: Current cargo status has been backed up
WHEN: The system prepares for status updates
THEN:
  • Previous status information including dates
  • Codes is stored in audit storage
βœ“ Consolidated Acceptance Criteria
  • An audit trail entry is required → a complete audit record is created with timestamp, user information, and status change details
  • The system finalizes all cargo updates → the system creates detailed audit trail entries including before/after status, user identification, timestamp, and transaction details 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_CreateAuditTrailEntry(["Start Step"]) E_CreateAuditTrailEntry(["End Step"]) N_CreateAuditTrailEntry_Node0{"An audit trail entry is required"}:::decision N_CreateAuditTrailEntry_Node0_action["A complete audit record is created
with timestamp, user information,
and status change details"]:::main N_CreateAuditTrailEntry_Node0 -- Yes --> N_CreateAuditTrailEntry_Node0_action N_CreateAuditTrailEntry_Node0_action --> E_CreateAuditTrailEntry S_CreateAuditTrailEntry --> N_CreateAuditTrailEntry_Node0 N_CreateAuditTrailEntry_Node1{"The system finalizes all cargo
updates"}:::decision N_CreateAuditTrailEntry_Node1_action["The system creates detailed audit
trail entries including beforeafter
status, user identification,
timestamp, and transaction details
for compliance and tracking purposes"]:::main N_CreateAuditTrailEntry_Node1 -- Yes --> N_CreateAuditTrailEntry_Node1_action N_CreateAuditTrailEntry_Node1_action --> E_CreateAuditTrailEntry N_CreateAuditTrailEntry_Node0 -- No --> N_CreateAuditTrailEntry_Node1 N_CreateAuditTrailEntry_Node1 -- No --> E_CreateAuditTrailEntry
File: GCX016E.cbl
GIVEN: Cargo status is being modified
WHEN: An audit trail entry is required
THEN: A complete audit record is created with timestamp, user information, and status change details
File: GCX016E.cbl
GIVEN: Manual release processing has been successfully completed
WHEN: The system finalizes all cargo updates
THEN:
  • The system creates detailed audit trail entries including before/after status, user identification, timestamp, and transaction details for compliance
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • Status processing is initiated → all status updates are processed according to disposition code rules and status 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_ProcessStatusUpdates(["Start Step"]) E_ProcessStatusUpdates(["End Step"]) N_ProcessStatusUpdates_Node0{"Status processing is initiated"}:::decision N_ProcessStatusUpdates_Node0_action["All status updates are processed
according to disposition code rules
and status hierarchy"]:::main N_ProcessStatusUpdates_Node0 -- Yes --> N_ProcessStatusUpdates_Node0_action N_ProcessStatusUpdates_Node0_action --> E_ProcessStatusUpdates S_ProcessStatusUpdates --> N_ProcessStatusUpdates_Node0 N_ProcessStatusUpdates_Node0 -- No --> E_ProcessStatusUpdates
File: GCX016E.cbl
GIVEN: Cargo status updates are pending
WHEN: Status processing is initiated
THEN:
  • All status updates are processed according to disposition code rules
  • Status hierarchy
βœ“ Consolidated Acceptance Criteria
  • If update completion → the system determines if updates were successful based on validation criteria and error conditions
  • The system receives response from GCCIIS regarding the update → the system determines if the update was successful or failed based on GCCIIS response
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateSuccessful(["Start Step"]) E_UpdateSuccessful(["End Step"]) N_UpdateSuccessful_Node0{"The system evaluates update
completion"}:::decision N_UpdateSuccessful_Node0_action["The system determines if updates
were successful based on validation
criteria and error conditions"]:::main N_UpdateSuccessful_Node0 -- Yes --> N_UpdateSuccessful_Node0_action N_UpdateSuccessful_Node0_action --> E_UpdateSuccessful S_UpdateSuccessful --> N_UpdateSuccessful_Node0 N_UpdateSuccessful_Node1{"The system receives response from
GCCIIS regarding the update"}:::decision N_UpdateSuccessful_Node1_action["The system determines if the update
was successful or failed based on
GCCIIS response"]:::main N_UpdateSuccessful_Node1 -- Yes --> N_UpdateSuccessful_Node1_action N_UpdateSuccessful_Node1_action --> E_UpdateSuccessful N_UpdateSuccessful_Node0 -- No --> N_UpdateSuccessful_Node1 N_UpdateSuccessful_Node1 -- No --> E_UpdateSuccessful
File: GCX016E.cbl
GIVEN: Cargo status updates have been processed
WHEN: The system evaluates update completion
THEN:
  • The system determines if updates were successful based on validation criteria
  • Error conditions
File: GCX016E.cbl
GIVEN: A status update has been sent to GCCIIS
WHEN: The system receives response from GCCIIS regarding the update
THEN: The system determines if the update was successful or failed based on GCCIIS response
βœ“ Consolidated Acceptance Criteria
  • The commit process is executed → the new cargo status is permanently saved and becomes the current active 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_CommitNewStatus(["Start Step"]) E_CommitNewStatus(["End Step"]) N_CommitNewStatus_Node0{"The commit process is executed"}:::decision N_CommitNewStatus_Node0_action["The new cargo status is permanently
saved and becomes the current active
status"]:::main N_CommitNewStatus_Node0 -- Yes --> N_CommitNewStatus_Node0_action N_CommitNewStatus_Node0_action --> E_CommitNewStatus S_CommitNewStatus --> N_CommitNewStatus_Node0 N_CommitNewStatus_Node0 -- No --> E_CommitNewStatus
File: GCX016E.cbl
GIVEN: Cargo status updates have been validated as successful
WHEN: The commit process is executed
THEN:
  • The new cargo status is permanently saved
  • Becomes the current active status
βœ“ Consolidated Acceptance Criteria
  • Status restoration is required → the cargo status is restored to its previous state using saved backup 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_RestorePreviousStatus(["Start Step"]) E_RestorePreviousStatus(["End Step"]) N_RestorePreviousStatus_Node0{"Status restoration is required"}:::decision N_RestorePreviousStatus_Node0_action["The cargo status is restored to its
previous state using saved backup
information"]:::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: GCX016E.cbl
GIVEN: Cargo status updates have failed validation
WHEN: Status restoration is required
THEN: The cargo status is restored to its previous state using saved backup information
βœ“ Consolidated Acceptance Criteria
  • Logging is performed → the restoration action is logged with details about the reason and previous 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_LogRestorationAction(["Start Step"]) E_LogRestorationAction(["End Step"]) N_LogRestorationAction_Node0{"Logging is performed"}:::decision N_LogRestorationAction_Node0_action["The restoration action is logged
with details about the reason and
previous status information"]:::main N_LogRestorationAction_Node0 -- Yes --> N_LogRestorationAction_Node0_action N_LogRestorationAction_Node0_action --> E_LogRestorationAction S_LogRestorationAction --> N_LogRestorationAction_Node0 N_LogRestorationAction_Node0 -- No --> E_LogRestorationAction
File: GCX016E.cbl
GIVEN: A cargo status restoration has occurred
WHEN: Logging is performed
THEN:
  • The restoration action is logged with details about the reason
  • Previous status information
βœ“ Consolidated Acceptance Criteria
  • Status comparison is requested → the system provides capability to compare current status with previous 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_EnableStatusComparison(["Start Step"]) E_EnableStatusComparison(["End Step"]) N_EnableStatusComparison_Node0{"Status comparison is requested"}:::decision N_EnableStatusComparison_Node0_action["The system provides capability to
compare current status with previous
status information"]:::main N_EnableStatusComparison_Node0 -- Yes --> N_EnableStatusComparison_Node0_action N_EnableStatusComparison_Node0_action --> E_EnableStatusComparison S_EnableStatusComparison --> N_EnableStatusComparison_Node0 N_EnableStatusComparison_Node0 -- No --> E_EnableStatusComparison
File: GCX016E.cbl
GIVEN: Cargo status has been successfully updated
WHEN: Status comparison is requested
THEN: The system provides capability to compare current status with previous status information
βœ“ Consolidated Acceptance Criteria
  • Data integrity checks are performed → all cargo data remains consistent and valid throughout the preservation process
  • The system validates final data state → data integrity is confirmed and cargo information remains consistent across all related 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_MaintainDataIntegrity(["Start Step"]) E_MaintainDataIntegrity(["End Step"]) N_MaintainDataIntegrity_Node0{"Data integrity checks are performed"}:::decision N_MaintainDataIntegrity_Node0_action["All cargo data remains consistent
and valid throughout the
preservation process"]:::main N_MaintainDataIntegrity_Node0 -- Yes --> N_MaintainDataIntegrity_Node0_action N_MaintainDataIntegrity_Node0_action --> E_MaintainDataIntegrity S_MaintainDataIntegrity --> N_MaintainDataIntegrity_Node0 N_MaintainDataIntegrity_Node1{"The system validates final data
state"}:::decision N_MaintainDataIntegrity_Node1_action["Data integrity is confirmed and
cargo information remains consistent
across all related records"]:::main N_MaintainDataIntegrity_Node1 -- Yes --> N_MaintainDataIntegrity_Node1_action N_MaintainDataIntegrity_Node1_action --> E_MaintainDataIntegrity N_MaintainDataIntegrity_Node0 -- No --> N_MaintainDataIntegrity_Node1 N_MaintainDataIntegrity_Node1 -- No --> E_MaintainDataIntegrity
File: GCX016E.cbl
GIVEN: Cargo status preservation process is active
WHEN: Data integrity checks are performed
THEN:
  • All cargo data remains consistent
  • Valid throughout the preservation process
File: GCX016E.cbl
GIVEN: Status processing has completed either successfully or through error recovery
WHEN: The system validates final data state
THEN:
  • Data integrity is confirmed
  • Cargo information remains consistent across all related records
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancellation disposition code → cancel release processing 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_CancelReleaseProcessingTriggered(["Start Step"]) E_CancelReleaseProcessingTriggered(["End Step"]) N_CancelReleaseProcessingTriggered_Node0{"The system processes the
cancellation disposition code"}:::decision N_CancelReleaseProcessingTriggered_Node0_action["Cancel release processing workflow
is initiated"]:::main N_CancelReleaseProcessingTriggered_Node0 -- Yes --> N_CancelReleaseProcessingTriggered_Node0_action N_CancelReleaseProcessingTriggered_Node0_action --> E_CancelReleaseProcessingTriggered S_CancelReleaseProcessingTriggered --> N_CancelReleaseProcessingTriggered_Node0 N_CancelReleaseProcessingTriggered_Node0 -- No --> E_CancelReleaseProcessingTriggered
File: GCX016E.cbl
GIVEN: A cargo disposition code indicates release cancellation
WHEN: The system processes the cancellation disposition code
THEN: Cancel release processing workflow is initiated
βœ“ Consolidated Acceptance Criteria
  • Cancel release processing begins → the system reads and analyzes current cargo status from status arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AnalyzeCurrentCargoStatus(["Start Step"]) E_AnalyzeCurrentCargoStatus(["End Step"]) N_AnalyzeCurrentCargoStatus_Node0{"Cancel release processing begins"}:::decision N_AnalyzeCurrentCargoStatus_Node0_action["The system reads and analyzes
current cargo status from status
arrays"]:::main N_AnalyzeCurrentCargoStatus_Node0 -- Yes --> N_AnalyzeCurrentCargoStatus_Node0_action N_AnalyzeCurrentCargoStatus_Node0_action --> E_AnalyzeCurrentCargoStatus S_AnalyzeCurrentCargoStatus --> N_AnalyzeCurrentCargoStatus_Node0 N_AnalyzeCurrentCargoStatus_Node0 -- No --> E_AnalyzeCurrentCargoStatus
File: GCX016E.cbl
GIVEN: A cargo record exists with status information in S09A arrays
WHEN: Cancel release processing begins
THEN:
  • The system reads
  • Analyzes current cargo status from status arrays
βœ“ Consolidated Acceptance Criteria
  • Status comparison is performed → the system identifies differences between current and previous 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_ComparePreviousReleaseStatus(["Start Step"]) E_ComparePreviousReleaseStatus(["End Step"]) N_ComparePreviousReleaseStatus_Node0{"Status comparison is performed"}:::decision N_ComparePreviousReleaseStatus_Node0_action["The system identifies differences
between current and previous release
status"]:::main N_ComparePreviousReleaseStatus_Node0 -- Yes --> N_ComparePreviousReleaseStatus_Node0_action N_ComparePreviousReleaseStatus_Node0_action --> E_ComparePreviousReleaseStatus S_ComparePreviousReleaseStatus --> N_ComparePreviousReleaseStatus_Node0 N_ComparePreviousReleaseStatus_Node0 -- No --> E_ComparePreviousReleaseStatus
File: GCX016E.cbl
GIVEN: Current cargo status is available and previous status exists in audit records
WHEN: Status comparison is performed
THEN:
  • The system identifies differences between current
  • Previous release status
βœ“ Consolidated Acceptance Criteria
  • The system checks previous release status → if cargo was previously released, proceed with cancellation 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_WasCargoPreviouslyReleased(["Start Step"]) E_WasCargoPreviouslyReleased(["End Step"]) N_WasCargoPreviouslyReleased_Node0{"The system checks previous release
status"}:::decision N_WasCargoPreviouslyReleased_Node0_action["If cargo was previously released,
proceed with cancellation
processing, otherwise skip
processing"]:::main N_WasCargoPreviouslyReleased_Node0 -- Yes --> N_WasCargoPreviouslyReleased_Node0_action N_WasCargoPreviouslyReleased_Node0_action --> E_WasCargoPreviouslyReleased S_WasCargoPreviouslyReleased --> N_WasCargoPreviouslyReleased_Node0 N_WasCargoPreviouslyReleased_Node0 -- No --> E_WasCargoPreviouslyReleased
File: GCX016E.cbl
GIVEN: Cargo status history is available for comparison
WHEN: The system checks previous release status
THEN: If cargo was previously released, proceed with cancellation processing, otherwise skip processing
βœ“ Consolidated Acceptance Criteria
  • Current status indicates release cancellation → the system detects and confirms release cancellation event
  • The system analyzes the status transition → the system detects that a release cancellation has 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_DetectReleaseCancellation(["Start Step"]) E_DetectReleaseCancellation(["End Step"]) N_DetectReleaseCancellation_Node0{"Current status indicates release
cancellation"}:::decision N_DetectReleaseCancellation_Node0_action["The system detects and confirms
release cancellation event"]:::main N_DetectReleaseCancellation_Node0 -- Yes --> N_DetectReleaseCancellation_Node0_action N_DetectReleaseCancellation_Node0_action --> E_DetectReleaseCancellation S_DetectReleaseCancellation --> N_DetectReleaseCancellation_Node0 N_DetectReleaseCancellation_Node1{"The system analyzes the status
transition"}:::decision N_DetectReleaseCancellation_Node1_action["The system detects that a release
cancellation has occurred"]:::main N_DetectReleaseCancellation_Node1 -- Yes --> N_DetectReleaseCancellation_Node1_action N_DetectReleaseCancellation_Node1_action --> E_DetectReleaseCancellation N_DetectReleaseCancellation_Node0 -- No --> N_DetectReleaseCancellation_Node1 N_DetectReleaseCancellation_Node1 -- No --> E_DetectReleaseCancellation
File: GCX016E.cbl
GIVEN: Cargo was previously in released status
WHEN: Current status indicates release cancellation
THEN:
  • The system detects
  • Confirms release cancellation event
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The cargo was previously released and is currently not released
WHEN: The system analyzes the status transition
THEN: The system detects that a release cancellation has occurred
βœ“ Consolidated Acceptance Criteria
  • Notification generation is triggered → the system creates a cancel 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_GenerateCancelReleaseNotification(["Start Step"]) E_GenerateCancelReleaseNotification(["End Step"]) N_GenerateCancelReleaseNotification_Node0{"Notification generation is
triggered"}:::decision N_GenerateCancelReleaseNotification_Node0_action["The system creates a cancel release
notification message"]:::main N_GenerateCancelReleaseNotification_Node0 -- Yes --> N_GenerateCancelReleaseNotification_Node0_action N_GenerateCancelReleaseNotification_Node0_action --> E_GenerateCancelReleaseNotification S_GenerateCancelReleaseNotification --> N_GenerateCancelReleaseNotification_Node0 N_GenerateCancelReleaseNotification_Node0 -- No --> E_GenerateCancelReleaseNotification
File: GCX016E.cbl
GIVEN: Release cancellation has been confirmed and previous status preserved
WHEN: Notification generation is triggered
THEN: The system creates a cancel release notification message
βœ“ Consolidated Acceptance Criteria
  • Message formatting process begins → the system formats notification message with proper structure and headers
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_FormatNotificationMessage(["Start Step"]) E_FormatNotificationMessage(["End Step"]) N_FormatNotificationMessage_Node0{"Message formatting process begins"}:::decision N_FormatNotificationMessage_Node0_action["The system formats notification
message with proper structure and
headers"]:::main N_FormatNotificationMessage_Node0 -- Yes --> N_FormatNotificationMessage_Node0_action N_FormatNotificationMessage_Node0_action --> E_FormatNotificationMessage S_FormatNotificationMessage --> N_FormatNotificationMessage_Node0 N_FormatNotificationMessage_Node0 -- No --> E_FormatNotificationMessage
File: GCX016E.cbl
GIVEN: Cancel release notification needs to be generated
WHEN: Message formatting process begins
THEN:
  • The system formats notification message with proper structure
  • Headers
βœ“ Consolidated Acceptance Criteria
  • Cargo details are added to the message → the system includes cargo CCN, car ID, waybill number, and quantity information 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_IncludeCargoDetailsinMessage(["Start Step"]) E_IncludeCargoDetailsinMessage(["End Step"]) N_IncludeCargoDetailsinMessage_Node0{"Cargo details are added to the
message"}:::decision N_IncludeCargoDetailsinMessage_Node0_action["The system includes cargo CCN, car
ID, waybill number, and quantity
information in the notification"]:::main N_IncludeCargoDetailsinMessage_Node0 -- Yes --> N_IncludeCargoDetailsinMessage_Node0_action N_IncludeCargoDetailsinMessage_Node0_action --> E_IncludeCargoDetailsinMessage S_IncludeCargoDetailsinMessage --> N_IncludeCargoDetailsinMessage_Node0 N_IncludeCargoDetailsinMessage_Node0 -- No --> E_IncludeCargoDetailsinMessage
File: GCX016E.cbl
GIVEN: Notification message is being formatted
WHEN: Cargo details are added to the message
THEN: The system includes cargo CCN, car ID, waybill number, and quantity information in the notification
βœ“ Consolidated Acceptance Criteria
  • Disposition code information is added → the system includes disposition code, entry number, and related processing information in the message
  • The system adds disposition code information to the Merlin message → the system includes the disposition code, its description, and related processing information in 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_AddDispositionCodeInformation(["Start Step"]) E_AddDispositionCodeInformation(["End Step"]) N_AddDispositionCodeInformation_Node0{"Disposition code information is
added"}:::decision N_AddDispositionCodeInformation_Node0_action["The system includes disposition
code, entry number, and related
processing information in the
message"]:::main N_AddDispositionCodeInformation_Node0 -- Yes --> N_AddDispositionCodeInformation_Node0_action N_AddDispositionCodeInformation_Node0_action --> E_AddDispositionCodeInformation S_AddDispositionCodeInformation --> N_AddDispositionCodeInformation_Node0 N_AddDispositionCodeInformation_Node1{"The system adds disposition code
information to the Merlin message"}:::decision N_AddDispositionCodeInformation_Node1_action["The system includes the disposition
code, its description, and related
processing information in the
message content"]:::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: GCX016E.cbl
GIVEN: Notification message contains cargo details
WHEN: Disposition code information is added
THEN: The system includes disposition code, entry number, and related processing information in the message
File: GCX016E.cbl
GIVEN: A disposition code has been processed for a cargo with valid code description available
WHEN: The system adds disposition code information to the Merlin message
THEN: The system includes the disposition code, its description, and related processing information in the message content
βœ“ Consolidated Acceptance Criteria
  • Message type classification is performed → the system sets notification type as UNRLSE for cancel 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_SetNotificationTypeasUNRLSE(["Start Step"]) E_SetNotificationTypeasUNRLSE(["End Step"]) N_SetNotificationTypeasUNRLSE_Node0{"Message type classification is
performed"}:::decision N_SetNotificationTypeasUNRLSE_Node0_action["The system sets notification type
as UNRLSE for cancel release
processing"]:::main N_SetNotificationTypeasUNRLSE_Node0 -- Yes --> N_SetNotificationTypeasUNRLSE_Node0_action N_SetNotificationTypeasUNRLSE_Node0_action --> E_SetNotificationTypeasUNRLSE S_SetNotificationTypeasUNRLSE --> N_SetNotificationTypeasUNRLSE_Node0 N_SetNotificationTypeasUNRLSE_Node0 -- No --> E_SetNotificationTypeasUNRLSE
File: GCX016E.cbl
GIVEN: Cancel release notification message is formatted with cargo and disposition details
WHEN: Message type classification is performed
THEN: The system sets notification type as UNRLSE for cancel release processing
βœ“ Consolidated Acceptance Criteria
  • Message routing is initiated → the system routes notification to Merlin message distribution 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_RoutetoMerlinMessageDistribution(["Start Step"]) E_RoutetoMerlinMessageDistribution(["End Step"]) N_RoutetoMerlinMessageDistribution_Node0{"Message routing is initiated"}:::decision N_RoutetoMerlinMessageDistribution_Node0_action["The system routes notification to
Merlin message distribution system"]:::main N_RoutetoMerlinMessageDistribution_Node0 -- Yes --> N_RoutetoMerlinMessageDistribution_Node0_action N_RoutetoMerlinMessageDistribution_Node0_action --> E_RoutetoMerlinMessageDistribution S_RoutetoMerlinMessageDistribution --> N_RoutetoMerlinMessageDistribution_Node0 N_RoutetoMerlinMessageDistribution_Node0 -- No --> E_RoutetoMerlinMessageDistribution
File: GCX016E.cbl
GIVEN: Cancel release notification is formatted and classified as UNRLSE type
WHEN: Message routing is initiated
THEN: The system routes notification to Merlin message distribution system
βœ“ Consolidated Acceptance Criteria
  • Recipient delivery is processed → the system sends notification to OM01247 and SD segment cancel 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_SendtoBusinessRecipients(["Start Step"]) E_SendtoBusinessRecipients(["End Step"]) N_SendtoBusinessRecipients_Node0{"Recipient delivery is processed"}:::decision N_SendtoBusinessRecipients_Node0_action["The system sends notification to
OM01247 and SD segment cancel Merlin
IDs"]:::main N_SendtoBusinessRecipients_Node0 -- Yes --> N_SendtoBusinessRecipients_Node0_action N_SendtoBusinessRecipients_Node0_action --> E_SendtoBusinessRecipients S_SendtoBusinessRecipients --> N_SendtoBusinessRecipients_Node0 N_SendtoBusinessRecipients_Node0 -- No --> E_SendtoBusinessRecipients
File: GCX016E.cbl
GIVEN: Cancel release notification is routed through Merlin distribution
WHEN: Recipient delivery is processed
THEN:
  • The system sends notification to om01247
  • Sd segment cancel merlin ids
βœ“ Consolidated Acceptance Criteria
  • Action logging is performed → the system logs cancel release action with timestamp and recipient 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_LogCancelReleaseAction(["Start Step"]) E_LogCancelReleaseAction(["End Step"]) N_LogCancelReleaseAction_Node0{"Action logging is performed"}:::decision N_LogCancelReleaseAction_Node0_action["The system logs cancel release
action with timestamp and recipient
information"]:::main N_LogCancelReleaseAction_Node0 -- Yes --> N_LogCancelReleaseAction_Node0_action N_LogCancelReleaseAction_Node0_action --> E_LogCancelReleaseAction S_LogCancelReleaseAction --> N_LogCancelReleaseAction_Node0 N_LogCancelReleaseAction_Node0 -- No --> E_LogCancelReleaseAction
File: GCX016E.cbl
GIVEN: Cancel release notification has been sent to business recipients
WHEN: Action logging is performed
THEN:
  • The system logs cancel release action with timestamp
  • Recipient information
βœ“ Consolidated Acceptance Criteria
  • The arrival processing is initiated → all bond start dates are cleared from the cargo record
  • The system processes the arrival event → the system clears the bond start dates to stop bond timing calculations
  • The system processes bond information for arrived cargo → clear the bond start dates to reset the bonding period for the arrived cargo
  • The arrival processing is triggered → the bond start date should be reset to zero to clear previous bond timing
  • The arrival processing is triggered → the existing bond start date should be maintained 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_ClearBondStartDates(["Start Step"]) E_ClearBondStartDates(["End Step"]) N_ClearBondStartDates_Node0{"The arrival processing is initiated"}:::decision N_ClearBondStartDates_Node0_action["All bond start dates are cleared
from the cargo record"]:::main N_ClearBondStartDates_Node0 -- Yes --> N_ClearBondStartDates_Node0_action N_ClearBondStartDates_Node0_action --> E_ClearBondStartDates S_ClearBondStartDates --> N_ClearBondStartDates_Node0 N_ClearBondStartDates_Node1{"The system processes the arrival
event"}:::decision N_ClearBondStartDates_Node1_action["The system clears the bond start
dates to stop bond timing
calculations"]:::main N_ClearBondStartDates_Node1 -- Yes --> N_ClearBondStartDates_Node1_action N_ClearBondStartDates_Node1_action --> E_ClearBondStartDates N_ClearBondStartDates_Node0 -- No --> N_ClearBondStartDates_Node1 N_ClearBondStartDates_Node2{"The system processes bond
information for arrived cargo"}:::decision N_ClearBondStartDates_Node2_action["Clear the bond start dates to reset
the bonding period for the arrived
cargo"]:::main N_ClearBondStartDates_Node2 -- Yes --> N_ClearBondStartDates_Node2_action N_ClearBondStartDates_Node2_action --> E_ClearBondStartDates N_ClearBondStartDates_Node1 -- No --> N_ClearBondStartDates_Node2 N_ClearBondStartDates_Node3{"The arrival processing is triggered"}:::decision N_ClearBondStartDates_Node3_action["The bond start date should be reset
to zero to clear previous bond
timing"]:::main N_ClearBondStartDates_Node3 -- Yes --> N_ClearBondStartDates_Node3_action N_ClearBondStartDates_Node3_action --> E_ClearBondStartDates N_ClearBondStartDates_Node2 -- No --> N_ClearBondStartDates_Node3 N_ClearBondStartDates_Node4{"The arrival processing is triggered"}:::decision N_ClearBondStartDates_Node4_action["The existing bond start date should
be maintained without modification"]:::main N_ClearBondStartDates_Node4 -- Yes --> N_ClearBondStartDates_Node4_action N_ClearBondStartDates_Node4_action --> E_ClearBondStartDates N_ClearBondStartDates_Node3 -- No --> N_ClearBondStartDates_Node4 N_ClearBondStartDates_Node4 -- No --> E_ClearBondStartDates
File: GCX016E.cbl
GIVEN: A cargo is being processed for arrival at its destination
WHEN: The arrival processing is initiated
THEN: All bond start dates are cleared from the cargo record
File: GCX016E.cbl
GIVEN: A cargo has arrived at its destination and has active bond start dates
WHEN: The system processes the arrival event
THEN: The system clears the bond start dates to stop bond timing calculations
File: GCX016E.cbl
GIVEN: Cargo age has been calculated
WHEN: The system processes bond information for arrived cargo
THEN: Clear the bond start dates to reset the bonding period for the arrived cargo
File: GCX016E.cbl
GIVEN: A cargo is being processed for arrival AND bond information exists in the cargo record
WHEN: The arrival processing is triggered
THEN: The bond start date should be reset to zero to clear previous bond timing
File: GCX016E.cbl
GIVEN: A cargo is being processed for arrival AND no bond information exists in the cargo record
WHEN: The arrival processing is triggered
THEN: The existing bond start date should be maintained without modification
βœ“ Consolidated Acceptance Criteria
  • Cargo age calculation is required → the system calculates the number of days between arrival date and 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_CalculateCargoAgefromArrivalDate(["Start Step"]) E_CalculateCargoAgefromArrivalDate(["End Step"]) N_CalculateCargoAgefromArrivalDate_Node0{"Cargo age calculation is required"}:::decision N_CalculateCargoAgefromArrivalDate_Node0_action["The system calculates the number of
days between arrival date and
current date"]:::main N_CalculateCargoAgefromArrivalDate_Node0 -- Yes --> N_CalculateCargoAgefromArrivalDate_Node0_action N_CalculateCargoAgefromArrivalDate_Node0_action --> E_CalculateCargoAgefromArrivalDate S_CalculateCargoAgefromArrivalDate --> N_CalculateCargoAgefromArrivalDate_Node0 N_CalculateCargoAgefromArrivalDate_Node0 -- No --> E_CalculateCargoAgefromArrivalDate
File: GCX016E.cbl
GIVEN: A cargo has an established arrival date
WHEN: Cargo age calculation is required
THEN:
  • The system calculates the number of days between arrival date
  • Current date
βœ“ Consolidated Acceptance Criteria
  • Arrival processing is being completed → all relevant arrival status flags are updated to indicate completed arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateArrivalStatusFlags(["Start Step"]) E_UpdateArrivalStatusFlags(["End Step"]) N_UpdateArrivalStatusFlags_Node0{"Arrival processing is being
completed"}:::decision N_UpdateArrivalStatusFlags_Node0_action["All relevant arrival status flags
are updated to indicate completed
arrival"]:::main N_UpdateArrivalStatusFlags_Node0 -- Yes --> N_UpdateArrivalStatusFlags_Node0_action N_UpdateArrivalStatusFlags_Node0_action --> E_UpdateArrivalStatusFlags S_UpdateArrivalStatusFlags --> N_UpdateArrivalStatusFlags_Node0 N_UpdateArrivalStatusFlags_Node0 -- No --> E_UpdateArrivalStatusFlags
File: GCX016E.cbl
GIVEN: A cargo has successfully arrived at its destination
WHEN: Arrival processing is being completed
THEN: All relevant arrival status flags are updated to indicate completed arrival
βœ“ Consolidated Acceptance Criteria
  • The arrival timestamp needs to be recorded → the current date and time is stored as the official arrival 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_RecordArrivalTimestamp(["Start Step"]) E_RecordArrivalTimestamp(["End Step"]) N_RecordArrivalTimestamp_Node0{"The arrival timestamp needs to be
recorded"}:::decision N_RecordArrivalTimestamp_Node0_action["The current date and time is stored
as the official arrival timestamp"]:::main N_RecordArrivalTimestamp_Node0 -- Yes --> N_RecordArrivalTimestamp_Node0_action N_RecordArrivalTimestamp_Node0_action --> E_RecordArrivalTimestamp S_RecordArrivalTimestamp --> N_RecordArrivalTimestamp_Node0 N_RecordArrivalTimestamp_Node0 -- No --> E_RecordArrivalTimestamp
File: GCX016E.cbl
GIVEN: A cargo arrival process is being finalized
WHEN: The arrival timestamp needs to be recorded
THEN:
  • The current date
  • Time is stored as the official arrival timestamp
βœ“ Consolidated Acceptance Criteria
  • Export flags need to be reset → all export processing flags are reset to their initial 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_ResetExportProcessingFlags(["Start Step"]) E_ResetExportProcessingFlags(["End Step"]) N_ResetExportProcessingFlags_Node0{"Export flags need to be reset"}:::decision N_ResetExportProcessingFlags_Node0_action["All export processing flags are
reset to their initial state"]:::main N_ResetExportProcessingFlags_Node0 -- Yes --> N_ResetExportProcessingFlags_Node0_action N_ResetExportProcessingFlags_Node0_action --> E_ResetExportProcessingFlags S_ResetExportProcessingFlags --> N_ResetExportProcessingFlags_Node0 N_ResetExportProcessingFlags_Node0 -- No --> E_ResetExportProcessingFlags
File: GCX016E.cbl
GIVEN: A cargo is undergoing export processing
WHEN: Export flags need to be reset
THEN: All export processing flags are reset to their initial state
βœ“ Consolidated Acceptance Criteria
  • Export status update is required → the cargo status is updated to indicate 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_UpdateExportStatus(["Start Step"]) E_UpdateExportStatus(["End Step"]) N_UpdateExportStatus_Node0{"Export status update is required"}:::decision N_UpdateExportStatus_Node0_action["The cargo status is updated to
indicate export processing"]:::main N_UpdateExportStatus_Node0 -- Yes --> N_UpdateExportStatus_Node0_action N_UpdateExportStatus_Node0_action --> E_UpdateExportStatus S_UpdateExportStatus --> N_UpdateExportStatus_Node0 N_UpdateExportStatus_Node0 -- No --> E_UpdateExportStatus
File: GCX016E.cbl
GIVEN: A cargo is being exported
WHEN: Export status update is required
THEN: The cargo status is updated to indicate export processing
βœ“ Consolidated Acceptance Criteria
  • Export-related dates need to be cleared → all export-related date 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_ClearExportRelatedDates(["Start Step"]) E_ClearExportRelatedDates(["End Step"]) N_ClearExportRelatedDates_Node0{"Export-related dates need to be
cleared"}:::decision N_ClearExportRelatedDates_Node0_action["All export-related date fields are
cleared from the cargo record"]:::main N_ClearExportRelatedDates_Node0 -- Yes --> N_ClearExportRelatedDates_Node0_action N_ClearExportRelatedDates_Node0_action --> E_ClearExportRelatedDates S_ClearExportRelatedDates --> N_ClearExportRelatedDates_Node0 N_ClearExportRelatedDates_Node0 -- No --> E_ClearExportRelatedDates
File: GCX016E.cbl
GIVEN: A cargo export process is being reset or completed
WHEN: Export-related dates need to be cleared
THEN: All export-related date fields are cleared from the cargo record
βœ“ Consolidated Acceptance Criteria
  • Bond restoration process is initiated → all previously saved bond information is restored to the cargo record
  • The system processes the cancellation → the system restores the bond information to its previous 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_RestoreBondInformation(["Start Step"]) E_RestoreBondInformation(["End Step"]) N_RestoreBondInformation_Node0{"Bond restoration process is
initiated"}:::decision N_RestoreBondInformation_Node0_action["All previously saved bond
information is restored to the cargo
record"]:::main N_RestoreBondInformation_Node0 -- Yes --> N_RestoreBondInformation_Node0_action N_RestoreBondInformation_Node0_action --> E_RestoreBondInformation S_RestoreBondInformation --> N_RestoreBondInformation_Node0 N_RestoreBondInformation_Node1{"The system processes the
cancellation"}:::decision N_RestoreBondInformation_Node1_action["The system restores the bond
information to its previous state"]:::main N_RestoreBondInformation_Node1 -- Yes --> N_RestoreBondInformation_Node1_action N_RestoreBondInformation_Node1_action --> E_RestoreBondInformation N_RestoreBondInformation_Node0 -- No --> N_RestoreBondInformation_Node1 N_RestoreBondInformation_Node1 -- No --> E_RestoreBondInformation
File: GCX016E.cbl
GIVEN: A cargo requires bond information restoration
WHEN: Bond restoration process is initiated
THEN: All previously saved bond information is restored to the cargo record
File: GCX016E.cbl
GIVEN: A cargo had bond information modified during arrival or export processing and cancellation is being processed
WHEN: The system processes the cancellation
THEN: The system restores the bond information to its previous state
βœ“ Consolidated Acceptance Criteria
  • Bond start dates need to be reset → all bond start dates are reset to their previously saved 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_ResetBondStartDates(["Start Step"]) E_ResetBondStartDates(["End Step"]) N_ResetBondStartDates_Node0{"Bond start dates need to be reset"}:::decision N_ResetBondStartDates_Node0_action["All bond start dates are reset to
their previously saved values"]:::main N_ResetBondStartDates_Node0 -- Yes --> N_ResetBondStartDates_Node0_action N_ResetBondStartDates_Node0_action --> E_ResetBondStartDates S_ResetBondStartDates --> N_ResetBondStartDates_Node0 N_ResetBondStartDates_Node0 -- No --> E_ResetBondStartDates
File: GCX016E.cbl
GIVEN: A cargo is undergoing bond restoration
WHEN: Bond start dates need to be reset
THEN: All bond start dates are reset to their previously saved values
βœ“ Consolidated Acceptance Criteria
  • Bond status flags need updating → all bond status flags are updated to reflect the restored bond 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_UpdateBondStatusFlags(["Start Step"]) E_UpdateBondStatusFlags(["End Step"]) N_UpdateBondStatusFlags_Node0{"Bond status flags need updating"}:::decision N_UpdateBondStatusFlags_Node0_action["All bond status flags are updated
to reflect the restored bond state"]:::main N_UpdateBondStatusFlags_Node0 -- Yes --> N_UpdateBondStatusFlags_Node0_action N_UpdateBondStatusFlags_Node0_action --> E_UpdateBondStatusFlags S_UpdateBondStatusFlags --> N_UpdateBondStatusFlags_Node0 N_UpdateBondStatusFlags_Node0 -- No --> E_UpdateBondStatusFlags
File: GCX016E.cbl
GIVEN: Bond information has been restored for a cargo
WHEN: Bond status flags need updating
THEN: All bond status flags are updated to reflect the restored bond state
βœ“ Consolidated Acceptance Criteria
  • Previous bond state restoration is initiated → the cargo is restored to its complete previous bonded state with all associated attributes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RestorePreviousBondState(["Start Step"]) E_RestorePreviousBondState(["End Step"]) N_RestorePreviousBondState_Node0{"Previous bond state restoration is
initiated"}:::decision N_RestorePreviousBondState_Node0_action["The cargo is restored to its
complete previous bonded state with
all associated attributes"]:::main N_RestorePreviousBondState_Node0 -- Yes --> N_RestorePreviousBondState_Node0_action N_RestorePreviousBondState_Node0_action --> E_RestorePreviousBondState S_RestorePreviousBondState --> N_RestorePreviousBondState_Node0 N_RestorePreviousBondState_Node0 -- No --> E_RestorePreviousBondState
File: GCX016E.cbl
GIVEN: A cargo requires complete bond state restoration
WHEN: Previous bond state restoration is initiated
THEN: The cargo is restored to its complete previous bonded state with all associated attributes
βœ“ Consolidated Acceptance Criteria
  • Dependent status updates are required → all related status update processes are 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_TriggerStatusUpdates(["Start Step"]) E_TriggerStatusUpdates(["End Step"]) N_TriggerStatusUpdates_Node0{"Dependent status updates are
required"}:::decision N_TriggerStatusUpdates_Node0_action["All related status update processes
are triggered"]:::main N_TriggerStatusUpdates_Node0 -- Yes --> N_TriggerStatusUpdates_Node0_action N_TriggerStatusUpdates_Node0_action --> E_TriggerStatusUpdates S_TriggerStatusUpdates --> N_TriggerStatusUpdates_Node0 N_TriggerStatusUpdates_Node0 -- No --> E_TriggerStatusUpdates
File: GCX016E.cbl
GIVEN: Destination index management has been completed
WHEN: Dependent status updates are required
THEN: All related status update processes are triggered
βœ“ Consolidated Acceptance Criteria
  • The system initiates cargo record replacement process → the current cargo record is retrieved from the US Cargo Root 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_RetrieveCurrentCargoRecord(["Start Step"]) E_RetrieveCurrentCargoRecord(["End Step"]) N_RetrieveCurrentCargoRecord_Node0{"The system initiates cargo record
replacement process"}:::decision N_RetrieveCurrentCargoRecord_Node0_action["The current cargo record is
retrieved from the US Cargo Root
Segments database"]:::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: GCX016E.cbl
GIVEN: A cargo needs status update processing
WHEN: The system initiates cargo record replacement process
THEN: The current cargo record is retrieved from the US Cargo Root Segments database
βœ“ Consolidated Acceptance Criteria
  • Status changes need to be applied to the cargo record → the cargo status fields are updated with new status information including hold flags, release quantities, and arrival 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_UpdateCargoStatusChanges(["Start Step"]) E_UpdateCargoStatusChanges(["End Step"]) N_UpdateCargoStatusChanges_Node0{"Status changes need to be applied
to the cargo record"}:::decision N_UpdateCargoStatusChanges_Node0_action["The cargo status fields are updated
with new status information
including hold flags, release
quantities, and arrival dates"]:::main N_UpdateCargoStatusChanges_Node0 -- Yes --> N_UpdateCargoStatusChanges_Node0_action N_UpdateCargoStatusChanges_Node0_action --> E_UpdateCargoStatusChanges S_UpdateCargoStatusChanges --> N_UpdateCargoStatusChanges_Node0 N_UpdateCargoStatusChanges_Node0 -- No --> E_UpdateCargoStatusChanges
File: GCX016E.cbl
GIVEN: Cargo record has been retrieved and disposition codes have been processed
WHEN: Status changes need to be applied to the cargo record
THEN: The cargo status fields are updated with new status information including hold flags, release quantities, and arrival dates
βœ“ Consolidated Acceptance Criteria
  • Car ID information needs to be formatted for cargo record → the car initial and number are combined and formatted into a standardized car 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_FormatCarIDInformation(["Start Step"]) E_FormatCarIDInformation(["End Step"]) N_FormatCarIDInformation_Node0{"Car ID information needs to be
formatted for cargo record"}:::decision N_FormatCarIDInformation_Node0_action["The car initial and number are
combined and formatted into a
standardized car ID format"]:::main N_FormatCarIDInformation_Node0 -- Yes --> N_FormatCarIDInformation_Node0_action N_FormatCarIDInformation_Node0_action --> E_FormatCarIDInformation S_FormatCarIDInformation --> N_FormatCarIDInformation_Node0 N_FormatCarIDInformation_Node0 -- No --> E_FormatCarIDInformation
File: GCX016E.cbl
GIVEN: N7 equipment segment data is available with car initial and number
WHEN: Car ID information needs to be formatted for cargo record
THEN:
  • The car initial
  • Number are combined
  • Formatted into a standardized car id format
βœ“ Consolidated Acceptance Criteria
  • The system checks if the cargo is CPRS type → if cargo is CPRS type, car ID updates are skipped; if non-CPRS, car ID is updated with equipment information
  • If cargo type classification → the cargo is classified as either CPRS or non-CPRS based on predefined cargo type 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_CPRSCargo(["Start Step"]) E_CPRSCargo(["End Step"]) N_CPRSCargo_Node0{"The system checks if the cargo is
CPRS type"}:::decision N_CPRSCargo_Node0_action["If cargo is CPRS type, car ID
updates are skipped if non-CPRS, car
ID is updated with equipment
information"]:::main N_CPRSCargo_Node0 -- Yes --> N_CPRSCargo_Node0_action N_CPRSCargo_Node0_action --> E_CPRSCargo S_CPRSCargo --> N_CPRSCargo_Node0 N_CPRSCargo_Node1{"The system evaluates cargo type
classification"}:::decision N_CPRSCargo_Node1_action["The cargo is classified as either
CPRS or non-CPRS based on predefined
cargo type criteria"]:::main N_CPRSCargo_Node1 -- Yes --> N_CPRSCargo_Node1_action N_CPRSCargo_Node1_action --> E_CPRSCargo N_CPRSCargo_Node0 -- No --> N_CPRSCargo_Node1 N_CPRSCargo_Node1 -- No --> E_CPRSCargo
File: GCX016E.cbl
GIVEN: A cargo record is being processed for car ID updates
WHEN: The system checks if the cargo is CPRS type
THEN: If cargo is CPRS type, car ID updates are skipped; if non-CPRS, car ID is updated with equipment information
File: GCX016E.cbl
GIVEN: A cargo record is being processed for insertion
WHEN: The system evaluates cargo type classification
THEN: The cargo is classified as either CPRS or non-CPRS based on predefined cargo type criteria
βœ“ Consolidated Acceptance Criteria
  • Car ID update is required for the cargo record → the cargo record car ID fields are updated with the formatted car 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_UpdateCarIDforNonCPRS(["Start Step"]) E_UpdateCarIDforNonCPRS(["End Step"]) N_UpdateCarIDforNonCPRS_Node0{"Car ID update is required for the
cargo record"}:::decision N_UpdateCarIDforNonCPRS_Node0_action["The cargo record car ID fields are
updated with the formatted car
identification information"]:::main N_UpdateCarIDforNonCPRS_Node0 -- Yes --> N_UpdateCarIDforNonCPRS_Node0_action N_UpdateCarIDforNonCPRS_Node0_action --> E_UpdateCarIDforNonCPRS S_UpdateCarIDforNonCPRS --> N_UpdateCarIDforNonCPRS_Node0 N_UpdateCarIDforNonCPRS_Node0 -- No --> E_UpdateCarIDforNonCPRS
File: GCX016E.cbl
GIVEN: Cargo is determined to be non-CPRS type and car ID information is formatted
WHEN: Car ID update is required for the cargo record
THEN: The cargo record car ID fields are updated with the formatted car identification information
βœ“ Consolidated Acceptance Criteria
  • Car ID update processing is initiated → the car ID update is bypassed and existing car ID information remains 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_SkipCarIDUpdateforCPRS(["Start Step"]) E_SkipCarIDUpdateforCPRS(["End Step"]) N_SkipCarIDUpdateforCPRS_Node0{"Car ID update processing is
initiated"}:::decision N_SkipCarIDUpdateforCPRS_Node0_action["The car ID update is bypassed and
existing car ID information remains
unchanged"]:::main N_SkipCarIDUpdateforCPRS_Node0 -- Yes --> N_SkipCarIDUpdateforCPRS_Node0_action N_SkipCarIDUpdateforCPRS_Node0_action --> E_SkipCarIDUpdateforCPRS S_SkipCarIDUpdateforCPRS --> N_SkipCarIDUpdateforCPRS_Node0 N_SkipCarIDUpdateforCPRS_Node0 -- No --> E_SkipCarIDUpdateforCPRS
File: GCX016E.cbl
GIVEN: Cargo is determined to be CPRS type
WHEN: Car ID update processing is initiated
THEN:
  • The car id update is bypassed
  • Existing car id information remains unchanged
βœ“ Consolidated Acceptance Criteria
  • Database update is required to persist changes → the existing cargo record in US Cargo Root Segments database is replaced with the updated 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_ReplaceCargoRecordinDatabase(["Start Step"]) E_ReplaceCargoRecordinDatabase(["End Step"]) N_ReplaceCargoRecordinDatabase_Node0{"Database update is required to
persist changes"}:::decision N_ReplaceCargoRecordinDatabase_Node0_action["The existing cargo record in US
Cargo Root Segments database is
replaced with the updated record"]:::main N_ReplaceCargoRecordinDatabase_Node0 -- Yes --> N_ReplaceCargoRecordinDatabase_Node0_action N_ReplaceCargoRecordinDatabase_Node0_action --> E_ReplaceCargoRecordinDatabase S_ReplaceCargoRecordinDatabase --> N_ReplaceCargoRecordinDatabase_Node0 N_ReplaceCargoRecordinDatabase_Node0 -- No --> E_ReplaceCargoRecordinDatabase
File: GCX016E.cbl
GIVEN: Cargo record has been updated with new status and car ID information
WHEN: Database update is required to persist changes
THEN: The existing cargo record in US Cargo Root Segments database is replaced with the updated record
βœ“ Consolidated Acceptance Criteria
  • GCCIIS integration is being considered → the system checks if the equipment type is valid for GCCIIS processing (containers, trailers, chassis, etc.)
  • The system validates the equipment type against acceptable categories → the equipment is classified as container, trailer, chassis, or other valid equipment type 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_ValidateEquipmentType(["Start Step"]) E_ValidateEquipmentType(["End Step"]) N_ValidateEquipmentType_Node0{"GCCIIS integration is being
considered"}:::decision N_ValidateEquipmentType_Node0_action["The system checks if the equipment
type is valid for GCCIIS processing
containers, trailers, chassis, etc."]:::main N_ValidateEquipmentType_Node0 -- Yes --> N_ValidateEquipmentType_Node0_action N_ValidateEquipmentType_Node0_action --> E_ValidateEquipmentType S_ValidateEquipmentType --> N_ValidateEquipmentType_Node0 N_ValidateEquipmentType_Node1{"The system validates the equipment
type against acceptable categories"}:::decision N_ValidateEquipmentType_Node1_action["The equipment is classified as
container, trailer, chassis, or
other valid equipment type for
further processing"]:::main N_ValidateEquipmentType_Node1 -- Yes --> N_ValidateEquipmentType_Node1_action N_ValidateEquipmentType_Node1_action --> E_ValidateEquipmentType N_ValidateEquipmentType_Node0 -- No --> N_ValidateEquipmentType_Node1 N_ValidateEquipmentType_Node1 -- No --> E_ValidateEquipmentType
File: GCX016E.cbl
GIVEN: Cargo record has been updated in the database
WHEN: GCCIIS integration is being considered
THEN: The system checks if the equipment type is valid for GCCIIS processing (containers, trailers, chassis, etc.)
File: GCX016E.cbl
GIVEN: Equipment information is available for a cargo
WHEN: The system validates the equipment type against acceptable categories
THEN: The equipment is classified as container, trailer, chassis, or other valid equipment type for further processing
βœ“ Consolidated Acceptance Criteria
  • Decision is needed for GCCIIS integration → if equipment type is valid, proceed with status mapping; if invalid, skip GCCIIS 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_ValidEquipmentType(["Start Step"]) E_ValidEquipmentType(["End Step"]) N_ValidEquipmentType_Node0{"Decision is needed for GCCIIS
integration"}:::decision N_ValidEquipmentType_Node0_action["If equipment type is valid, proceed
with status mapping if invalid, skip
GCCIIS update"]:::main N_ValidEquipmentType_Node0 -- Yes --> N_ValidEquipmentType_Node0_action N_ValidEquipmentType_Node0_action --> E_ValidEquipmentType S_ValidEquipmentType --> N_ValidEquipmentType_Node0 N_ValidEquipmentType_Node0 -- No --> E_ValidEquipmentType
File: GCX016E.cbl
GIVEN: Equipment type validation has been performed
WHEN: Decision is needed for GCCIIS integration
THEN: If equipment type is valid, proceed with status mapping; if invalid, skip GCCIIS update
βœ“ Consolidated Acceptance Criteria
  • Status mapping is required for GCCIIS integration → internal status codes (HOLD, RELEASE, PTT, PTT-EX) are mapped to corresponding GCCIIS status descriptions
  • The system processes the status mapping transformation → the internal status is converted to the appropriate GCCIIS status 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_MapInternalStatustoGCCIISStatus(["Start Step"]) E_MapInternalStatustoGCCIISStatus(["End Step"]) N_MapInternalStatustoGCCIISStatus_Node0{"Status mapping is required for
GCCIIS integration"}:::decision N_MapInternalStatustoGCCIISStatus_Node0_action["Internal status codes HOLD,
RELEASE, PTT, PTT-EX are mapped to
corresponding GCCIIS status
descriptions"]:::main N_MapInternalStatustoGCCIISStatus_Node0 -- Yes --> N_MapInternalStatustoGCCIISStatus_Node0_action N_MapInternalStatustoGCCIISStatus_Node0_action --> E_MapInternalStatustoGCCIISStatus S_MapInternalStatustoGCCIISStatus --> N_MapInternalStatustoGCCIISStatus_Node0 N_MapInternalStatustoGCCIISStatus_Node1{"The system processes the status
mapping transformation"}:::decision N_MapInternalStatustoGCCIISStatus_Node1_action["The internal status is converted to
the appropriate GCCIIS status format"]:::main N_MapInternalStatustoGCCIISStatus_Node1 -- Yes --> N_MapInternalStatustoGCCIISStatus_Node1_action N_MapInternalStatustoGCCIISStatus_Node1_action --> E_MapInternalStatustoGCCIISStatus N_MapInternalStatustoGCCIISStatus_Node0 -- No --> N_MapInternalStatustoGCCIISStatus_Node1 N_MapInternalStatustoGCCIISStatus_Node1 -- No --> E_MapInternalStatustoGCCIISStatus
File: GCX016E.cbl
GIVEN: Equipment type is valid for GCCIIS and cargo has internal status
WHEN: Status mapping is required for GCCIIS integration
THEN: Internal status codes (HOLD, RELEASE, PTT, PTT-EX) are mapped to corresponding GCCIIS status descriptions
File: GCX016E.cbl
GIVEN: A cargo has an internal status that needs to be communicated to GCCIIS
WHEN: The system processes the status mapping transformation
THEN: The internal status is converted to the appropriate GCCIIS status format
βœ“ Consolidated Acceptance Criteria
  • Release status determination is needed for GCCIIS → if released quantity equals total quantity, send full release; if released quantity is less than total, send hold status
  • If whether quantity validation is required → release status types require quantity verification while other status types proceed directly to status update
  • If whether full release validation is needed → the system either requires full release quantity check or allows 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_ReleaseQuantityCheck(["Start Step"]) E_ReleaseQuantityCheck(["End Step"]) N_ReleaseQuantityCheck_Node0{"Release status determination is
needed for GCCIIS"}:::decision N_ReleaseQuantityCheck_Node0_action["If released quantity equals total
quantity, send full release if
released quantity is less than
total, send hold status"]:::main N_ReleaseQuantityCheck_Node0 -- Yes --> N_ReleaseQuantityCheck_Node0_action N_ReleaseQuantityCheck_Node0_action --> E_ReleaseQuantityCheck S_ReleaseQuantityCheck --> N_ReleaseQuantityCheck_Node0 N_ReleaseQuantityCheck_Node1{"The system evaluates whether
quantity validation is required"}:::decision N_ReleaseQuantityCheck_Node1_action["Release status types require
quantity verification while other
status types proceed directly to
status update"]:::main N_ReleaseQuantityCheck_Node1 -- Yes --> N_ReleaseQuantityCheck_Node1_action N_ReleaseQuantityCheck_Node1_action --> E_ReleaseQuantityCheck N_ReleaseQuantityCheck_Node0 -- No --> N_ReleaseQuantityCheck_Node1 N_ReleaseQuantityCheck_Node2{"The system evaluates whether full
release validation is needed"}:::decision N_ReleaseQuantityCheck_Node2_action["The system either requires full
release quantity check or allows
partial release processing"]:::main N_ReleaseQuantityCheck_Node2 -- Yes --> N_ReleaseQuantityCheck_Node2_action N_ReleaseQuantityCheck_Node2_action --> E_ReleaseQuantityCheck N_ReleaseQuantityCheck_Node1 -- No --> N_ReleaseQuantityCheck_Node2 N_ReleaseQuantityCheck_Node2 -- No --> E_ReleaseQuantityCheck
File: GCX016E.cbl
GIVEN: Status has been mapped for GCCIIS and cargo has release quantity information
WHEN: Release status determination is needed for GCCIIS
THEN: If released quantity equals total quantity, send full release; if released quantity is less than total, send hold status
File: GCX016E.cbl
GIVEN: A cargo status has been processed and mapped for GCCIIS
WHEN: The system evaluates whether quantity validation is required
THEN: Release status types require quantity verification while other status types proceed directly to status update
File: GCX016E.cbl
GIVEN: A cargo has a status that may require quantity validation
WHEN: The system evaluates whether full release validation is needed
THEN: The system either requires full release quantity check or allows partial release processing
βœ“ Consolidated Acceptance Criteria
  • GCCIIS notification is required for full release → a full release status is sent to GCCIIS equipment tracking system 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_SendFullReleasetoGCCIIS(["Start Step"]) E_SendFullReleasetoGCCIIS(["End Step"]) N_SendFullReleasetoGCCIIS_Node0{"GCCIIS notification is required for
full release"}:::decision N_SendFullReleasetoGCCIIS_Node0_action["A full release status is sent to
GCCIIS equipment tracking system
with cargo and equipment details"]:::main N_SendFullReleasetoGCCIIS_Node0 -- Yes --> N_SendFullReleasetoGCCIIS_Node0_action N_SendFullReleasetoGCCIIS_Node0_action --> E_SendFullReleasetoGCCIIS S_SendFullReleasetoGCCIIS --> N_SendFullReleasetoGCCIIS_Node0 N_SendFullReleasetoGCCIIS_Node0 -- No --> E_SendFullReleasetoGCCIIS
File: GCX016E.cbl
GIVEN: Release quantity equals total quantity and status is mapped
WHEN: GCCIIS notification is required for full release
THEN:
  • A full release status is sent to gcciis equipment tracking system with cargo
  • Equipment details
βœ“ Consolidated Acceptance Criteria
  • GCCIIS notification is required for hold status → a hold status is sent to GCCIIS equipment tracking system 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_SendHoldStatustoGCCIIS(["Start Step"]) E_SendHoldStatustoGCCIIS(["End Step"]) N_SendHoldStatustoGCCIIS_Node0{"GCCIIS notification is required for
hold status"}:::decision N_SendHoldStatustoGCCIIS_Node0_action["A hold status is sent to GCCIIS
equipment tracking system with cargo
and equipment details"]:::main N_SendHoldStatustoGCCIIS_Node0 -- Yes --> N_SendHoldStatustoGCCIIS_Node0_action N_SendHoldStatustoGCCIIS_Node0_action --> E_SendHoldStatustoGCCIIS S_SendHoldStatustoGCCIIS --> N_SendHoldStatustoGCCIIS_Node0 N_SendHoldStatustoGCCIIS_Node0 -- No --> E_SendHoldStatustoGCCIIS
File: GCX016E.cbl
GIVEN: Released quantity is less than total quantity or cargo is held
WHEN: GCCIIS notification is required for hold status
THEN:
  • A hold status is sent to gcciis equipment tracking system with cargo
  • Equipment details
βœ“ Consolidated Acceptance Criteria
  • GCCIIS integration decision is made → gCCIIS update is skipped and processing continues without equipment tracking 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_SkipGCCIISUpdate(["Start Step"]) E_SkipGCCIISUpdate(["End Step"]) N_SkipGCCIISUpdate_Node0{"GCCIIS integration decision is made"}:::decision N_SkipGCCIISUpdate_Node0_action["GCCIIS update is skipped and
processing continues without
equipment tracking system
notification"]:::main N_SkipGCCIISUpdate_Node0 -- Yes --> N_SkipGCCIISUpdate_Node0_action N_SkipGCCIISUpdate_Node0_action --> E_SkipGCCIISUpdate S_SkipGCCIISUpdate --> N_SkipGCCIISUpdate_Node0 N_SkipGCCIISUpdate_Node0 -- No --> E_SkipGCCIISUpdate
File: GCX016E.cbl
GIVEN: Equipment type is invalid for GCCIIS or status conditions exclude GCCIIS processing
WHEN: GCCIIS integration decision is made
THEN:
  • Gcciis update is skipped
  • Processing continues without equipment tracking system notification
βœ“ Consolidated Acceptance Criteria
  • Action logging is required for audit trail → the status update actions are logged with cargo details, status changes, 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_LogStatusUpdateAction(["Start Step"]) E_LogStatusUpdateAction(["End Step"]) N_LogStatusUpdateAction_Node0{"Action logging is required for
audit trail"}:::decision N_LogStatusUpdateAction_Node0_action["The status update actions are
logged with cargo details, status
changes, and processing results"]:::main N_LogStatusUpdateAction_Node0 -- Yes --> N_LogStatusUpdateAction_Node0_action N_LogStatusUpdateAction_Node0_action --> E_LogStatusUpdateAction S_LogStatusUpdateAction --> N_LogStatusUpdateAction_Node0 N_LogStatusUpdateAction_Node0 -- No --> E_LogStatusUpdateAction
File: GCX016E.cbl
GIVEN: Cargo status updates and GCCIIS notifications have been processed
WHEN: Action logging is required for audit trail
THEN: The status update actions are logged with cargo details, status changes, and processing results
βœ“ Consolidated Acceptance Criteria
  • Multiple cargos exist with the same car ID and waybill combination → all related cargo records with matching car ID and waybill are updated with consistent 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_UpdateMultiCargoRecordswithSameCarWaybill(["Start Step"]) E_UpdateMultiCargoRecordswithSameCarWaybill(["End Step"]) N_UpdateMultiCargoRecordswithSameCarWaybill_Node0{"Multiple cargos exist with the same
car ID and waybill combination"}:::decision N_UpdateMultiCargoRecordswithSameCarWaybill_Node0_action["All related cargo records with
matching car ID and waybill are
updated with consistent status
information"]:::main N_UpdateMultiCargoRecordswithSameCarWaybill_Node0 -- Yes --> N_UpdateMultiCargoRecordswithSameCarWaybill_Node0_action N_UpdateMultiCargoRecordswithSameCarWaybill_Node0_action --> E_UpdateMultiCargoRecordswithSameCarWaybill S_UpdateMultiCargoRecordswithSameCarWaybill --> N_UpdateMultiCargoRecordswithSameCarWaybill_Node0 N_UpdateMultiCargoRecordswithSameCarWaybill_Node0 -- No --> E_UpdateMultiCargoRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: Primary cargo record has been updated and logged
WHEN:
  • Multiple cargos exist with the same car id
  • Waybill combination
THEN:
  • All related cargo records with matching car id
  • Waybill are updated with consistent status information
βœ“ Consolidated Acceptance Criteria
  • Multi-cargo processing is triggered for car/waybill combination → system begins coordinated processing of all 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_StartMultiCargoProcessingbyCarWaybill(["Start Step"]) E_StartMultiCargoProcessingbyCarWaybill(["End Step"]) N_StartMultiCargoProcessingbyCarWaybill_Node0{"Multi-cargo processing is triggered
for carwaybill combination"}:::decision N_StartMultiCargoProcessingbyCarWaybill_Node0_action["System begins coordinated
processing of all related cargo
records"]:::main N_StartMultiCargoProcessingbyCarWaybill_Node0 -- Yes --> N_StartMultiCargoProcessingbyCarWaybill_Node0_action N_StartMultiCargoProcessingbyCarWaybill_Node0_action --> E_StartMultiCargoProcessingbyCarWaybill S_StartMultiCargoProcessingbyCarWaybill --> N_StartMultiCargoProcessingbyCarWaybill_Node0 N_StartMultiCargoProcessingbyCarWaybill_Node0 -- No --> E_StartMultiCargoProcessingbyCarWaybill
File: GCX016E.cbl
GIVEN: A cargo record with car ID and waybill number exists in the system
WHEN: Multi-cargo processing is triggered for car/waybill combination
THEN: System begins coordinated processing of all related cargo records
βœ“ Consolidated Acceptance Criteria
  • System searches for cargo records with matching car ID and waybill → first matching cargo record is retrieved for processing
  • The system needs to process multiple cargo records with the same car and waybill → the system retrieves the first cargo record matching the car ID and waybill combination from the US cargo root 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_RetrieveFirstCargoRecordbyCarIDandWaybill(["Start Step"]) E_RetrieveFirstCargoRecordbyCarIDandWaybill(["End Step"]) N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0{"System searches for cargo records
with matching car ID and waybill"}:::decision N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0_action["First matching cargo record is
retrieved for processing"]:::main N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0 -- Yes --> N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0_action N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0_action --> E_RetrieveFirstCargoRecordbyCarIDandWaybill S_RetrieveFirstCargoRecordbyCarIDandWaybill --> N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0 N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1{"The system needs to process
multiple cargo records with the same
car and waybill"}:::decision N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1_action["The system retrieves the first
cargo record matching the car ID and
waybill combination from the US
cargo root segments"]:::main N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1 -- Yes --> N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1_action N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1_action --> E_RetrieveFirstCargoRecordbyCarIDandWaybill N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node0 -- No --> N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1 N_RetrieveFirstCargoRecordbyCarIDandWaybill_Node1 -- No --> E_RetrieveFirstCargoRecordbyCarIDandWaybill
File: GCX016E.cbl
GIVEN: Car ID and waybill number are provided for cargo lookup
WHEN:
  • System searches for cargo records with matching car id
  • Waybill
THEN: First matching cargo record is retrieved for processing
File: GCX016E.cbl
GIVEN: A car ID and waybill number combination exists from previous N7 segment processing
WHEN:
  • The system needs to process multiple cargo records with the same car
  • Waybill
THEN:
  • The system retrieves the first cargo record matching the car id
  • Waybill combination from the us cargo root segments
βœ“ Consolidated Acceptance Criteria
  • System evaluates cargo hold status → hold status is analyzed to determine next processing steps
  • The hold status analysis is performed → the system evaluates all hold conditions and release 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_AnalyzeCargoHoldStatus(["Start Step"]) E_AnalyzeCargoHoldStatus(["End Step"]) N_AnalyzeCargoHoldStatus_Node0{"System evaluates cargo hold status"}:::decision N_AnalyzeCargoHoldStatus_Node0_action["Hold status is analyzed to
determine next processing steps"]:::main N_AnalyzeCargoHoldStatus_Node0 -- Yes --> N_AnalyzeCargoHoldStatus_Node0_action N_AnalyzeCargoHoldStatus_Node0_action --> E_AnalyzeCargoHoldStatus S_AnalyzeCargoHoldStatus --> N_AnalyzeCargoHoldStatus_Node0 N_AnalyzeCargoHoldStatus_Node1{"The hold status analysis is
performed"}:::decision N_AnalyzeCargoHoldStatus_Node1_action["The system evaluates all hold
conditions and release status for
the cargo"]:::main N_AnalyzeCargoHoldStatus_Node1 -- Yes --> N_AnalyzeCargoHoldStatus_Node1_action N_AnalyzeCargoHoldStatus_Node1_action --> E_AnalyzeCargoHoldStatus N_AnalyzeCargoHoldStatus_Node0 -- No --> N_AnalyzeCargoHoldStatus_Node1 N_AnalyzeCargoHoldStatus_Node1 -- No --> E_AnalyzeCargoHoldStatus
File: GCX016E.cbl
GIVEN: A cargo record is being processed
WHEN: System evaluates cargo hold status
THEN: Hold status is analyzed to determine next processing steps
File: GCX016E.cbl
GIVEN: A cargo record is being processed for status verification
WHEN: The hold status analysis is performed
THEN:
  • The system evaluates all hold conditions
  • Release status for the cargo
βœ“ Consolidated Acceptance Criteria
  • System checks for various hold types in cargo status → hold types are identified and classified for appropriate processing
  • Hold type evaluation begins → the system proceeds to check border holds, destination holds, FDA holds, and piece count holds
  • The system checks for various hold types → the system identifies examination holds, regulatory holds, security holds, or other specialized 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_CheckVariousHoldTypes(["Start Step"]) E_CheckVariousHoldTypes(["End Step"]) N_CheckVariousHoldTypes_Node0{"System checks for various hold
types in cargo status"}:::decision N_CheckVariousHoldTypes_Node0_action["Hold types are identified and
classified for appropriate
processing"]:::main N_CheckVariousHoldTypes_Node0 -- Yes --> N_CheckVariousHoldTypes_Node0_action N_CheckVariousHoldTypes_Node0_action --> E_CheckVariousHoldTypes S_CheckVariousHoldTypes --> N_CheckVariousHoldTypes_Node0 N_CheckVariousHoldTypes_Node1{"Hold type evaluation begins"}:::decision N_CheckVariousHoldTypes_Node1_action["The system proceeds to check border
holds, destination holds, FDA holds,
and piece count holds"]:::main N_CheckVariousHoldTypes_Node1 -- Yes --> N_CheckVariousHoldTypes_Node1_action N_CheckVariousHoldTypes_Node1_action --> E_CheckVariousHoldTypes N_CheckVariousHoldTypes_Node0 -- No --> N_CheckVariousHoldTypes_Node1 N_CheckVariousHoldTypes_Node2{"The system checks for various hold
types"}:::decision N_CheckVariousHoldTypes_Node2_action["The system identifies examination
holds, regulatory holds, security
holds, or other specialized hold
conditions"]:::main N_CheckVariousHoldTypes_Node2 -- Yes --> N_CheckVariousHoldTypes_Node2_action N_CheckVariousHoldTypes_Node2_action --> E_CheckVariousHoldTypes N_CheckVariousHoldTypes_Node1 -- No --> N_CheckVariousHoldTypes_Node2 N_CheckVariousHoldTypes_Node2 -- No --> E_CheckVariousHoldTypes
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo does not have manual release status
WHEN: System checks for various hold types in cargo status
THEN:
  • Hold types are identified
  • Classified for appropriate processing
File: GCX016E.cbl
GIVEN: A cargo record without manual release is being processed
WHEN: Hold type evaluation begins
THEN: The system proceeds to check border holds, destination holds, FDA holds, and piece count holds
File: GCX016E.cbl
GIVEN: A cargo record requiring comprehensive hold analysis
WHEN: The system checks for various hold types
THEN: The system identifies examination holds, regulatory holds, security holds, or other specialized hold conditions
βœ“ Consolidated Acceptance Criteria
  • System checks for border hold indicators → if border hold exists, processing continues to release verification; otherwise check next 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_BorderHold(["Start Step"]) E_BorderHold(["End Step"]) N_BorderHold_Node0{"System checks for border hold
indicators"}:::decision N_BorderHold_Node0_action["If border hold exists, processing
continues to release verification
otherwise check next hold type"]:::main N_BorderHold_Node0 -- Yes --> N_BorderHold_Node0_action N_BorderHold_Node0_action --> E_BorderHold S_BorderHold --> N_BorderHold_Node0 N_BorderHold_Node0 -- No --> E_BorderHold
File: GCX016E.cbl
GIVEN: Cargo status is being evaluated for holds
WHEN: System checks for border hold indicators
THEN: If border hold exists, processing continues to release verification; otherwise check next hold type
βœ“ Consolidated Acceptance Criteria
  • System checks for destination hold indicators → if destination hold exists, processing continues to release verification; otherwise check next 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_DestinationHold(["Start Step"]) E_DestinationHold(["End Step"]) N_DestinationHold_Node0{"System checks for destination hold
indicators"}:::decision N_DestinationHold_Node0_action["If destination hold exists,
processing continues to release
verification otherwise check next
hold type"]:::main N_DestinationHold_Node0 -- Yes --> N_DestinationHold_Node0_action N_DestinationHold_Node0_action --> E_DestinationHold S_DestinationHold --> N_DestinationHold_Node0 N_DestinationHold_Node0 -- No --> E_DestinationHold
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo does not have border hold and status is being evaluated
WHEN: System checks for destination hold indicators
THEN: If destination hold exists, processing continues to release verification; otherwise check next hold type
βœ“ Consolidated Acceptance Criteria
  • System checks for FDA hold indicators → if FDA hold exists, processing continues to release verification; otherwise check piece count 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_FDAHold(["Start Step"]) E_FDAHold(["End Step"]) N_FDAHold_Node0{"System checks for FDA hold
indicators"}:::decision N_FDAHold_Node0_action["If FDA hold exists, processing
continues to release verification
otherwise check piece count hold"]:::main N_FDAHold_Node0 -- Yes --> N_FDAHold_Node0_action N_FDAHold_Node0_action --> E_FDAHold S_FDAHold --> N_FDAHold_Node0 N_FDAHold_Node0 -- No --> E_FDAHold
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo does not have border or destination hold and status is being evaluated
WHEN: System checks for FDA hold indicators
THEN: If FDA hold exists, processing continues to release verification; otherwise check piece count hold
βœ“ Consolidated Acceptance Criteria
  • System checks for piece count hold indicators → if piece count hold exists, processing continues to release verification; otherwise retrieve 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_PieceCountHold(["Start Step"]) E_PieceCountHold(["End Step"]) N_PieceCountHold_Node0{"System checks for piece count hold
indicators"}:::decision N_PieceCountHold_Node0_action["If piece count hold exists,
processing continues to release
verification otherwise retrieve next
cargo record"]:::main N_PieceCountHold_Node0 -- Yes --> N_PieceCountHold_Node0_action N_PieceCountHold_Node0_action --> E_PieceCountHold S_PieceCountHold --> N_PieceCountHold_Node0 N_PieceCountHold_Node0 -- No --> E_PieceCountHold
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo does not have border, destination, or FDA hold and status is being evaluated
WHEN: System checks for piece count hold indicators
THEN: If piece count hold exists, processing continues to release verification; otherwise retrieve next cargo record
βœ“ Consolidated Acceptance Criteria
  • System searches for additional cargo records with same car ID and waybill → next matching cargo record 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_RetrieveNextCargoRecordwithSameCarWaybill(["Start Step"]) E_RetrieveNextCargoRecordwithSameCarWaybill(["End Step"]) N_RetrieveNextCargoRecordwithSameCarWaybill_Node0{"System searches for additional
cargo records with same car ID and
waybill"}:::decision N_RetrieveNextCargoRecordwithSameCarWaybill_Node0_action["Next matching cargo record is
retrieved for processing"]:::main N_RetrieveNextCargoRecordwithSameCarWaybill_Node0 -- Yes --> N_RetrieveNextCargoRecordwithSameCarWaybill_Node0_action N_RetrieveNextCargoRecordwithSameCarWaybill_Node0_action --> E_RetrieveNextCargoRecordwithSameCarWaybill S_RetrieveNextCargoRecordwithSameCarWaybill --> N_RetrieveNextCargoRecordwithSameCarWaybill_Node0 N_RetrieveNextCargoRecordwithSameCarWaybill_Node0 -- No --> E_RetrieveNextCargoRecordwithSameCarWaybill
File: GCX016E.cbl
GIVEN: Current cargo record processing is complete and no holds prevent continuation
WHEN:
  • System searches for additional cargo records with same car id
  • Waybill
THEN: Next matching cargo record is retrieved for processing
βœ“ Consolidated Acceptance Criteria
  • System evaluates search results for more records → if more records exist, continue processing; otherwise proceed to release verification
  • The system checks for additional matching records → the system determines if more records with identical car ID and waybill exist and routes processing accordingly
  • If the search results → if more records are found, retrieve the next record for processing, otherwise proceed to release status verification
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_MoreRecordswithSameCarWaybill(["Start Step"]) E_MoreRecordswithSameCarWaybill(["End Step"]) N_MoreRecordswithSameCarWaybill_Node0{"System evaluates search results for
more records"}:::decision N_MoreRecordswithSameCarWaybill_Node0_action["If more records exist, continue
processing otherwise proceed to
release verification"]:::main N_MoreRecordswithSameCarWaybill_Node0 -- Yes --> N_MoreRecordswithSameCarWaybill_Node0_action N_MoreRecordswithSameCarWaybill_Node0_action --> E_MoreRecordswithSameCarWaybill S_MoreRecordswithSameCarWaybill --> N_MoreRecordswithSameCarWaybill_Node0 N_MoreRecordswithSameCarWaybill_Node1{"The system checks for additional
matching records"}:::decision N_MoreRecordswithSameCarWaybill_Node1_action["The system determines if more
records with identical car ID and
waybill exist and routes processing
accordingly"]:::main N_MoreRecordswithSameCarWaybill_Node1 -- Yes --> N_MoreRecordswithSameCarWaybill_Node1_action N_MoreRecordswithSameCarWaybill_Node1_action --> E_MoreRecordswithSameCarWaybill N_MoreRecordswithSameCarWaybill_Node0 -- No --> N_MoreRecordswithSameCarWaybill_Node1 N_MoreRecordswithSameCarWaybill_Node2{"The system evaluates the search
results"}:::decision N_MoreRecordswithSameCarWaybill_Node2_action["If more records are found, retrieve
the next record for processing,
otherwise proceed to release status
verification"]:::main N_MoreRecordswithSameCarWaybill_Node2 -- Yes --> N_MoreRecordswithSameCarWaybill_Node2_action N_MoreRecordswithSameCarWaybill_Node2_action --> E_MoreRecordswithSameCarWaybill N_MoreRecordswithSameCarWaybill_Node1 -- No --> N_MoreRecordswithSameCarWaybill_Node2 N_MoreRecordswithSameCarWaybill_Node2 -- No --> E_MoreRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: A search for additional cargo records with same car ID and waybill has been performed
WHEN: System evaluates search results for more records
THEN: If more records exist, continue processing; otherwise proceed to release verification
File: GCX016E.cbl
GIVEN: At least one cargo record has been processed
WHEN: The system checks for additional matching records
THEN:
  • The system determines if more records with identical car id
  • Waybill exist
  • Routes processing accordingly
File: GCX016E.cbl
GIVEN: A search has been performed for additional cargo records with the same car ID and waybill
WHEN: The system evaluates the search results
THEN: If more records are found, retrieve the next record for processing, otherwise proceed to release status verification
βœ“ Consolidated Acceptance Criteria
  • System verifies release status across all related records → release status is verified for coordinated notification and database updates
  • The system verifies release status across all records → the system examines the release status of each processed cargo record to determine overall release 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_VerifyReleaseStatusAcrossAllRecords(["Start Step"]) E_VerifyReleaseStatusAcrossAllRecords(["End Step"]) N_VerifyReleaseStatusAcrossAllRecords_Node0{"System verifies release status
across all related records"}:::decision N_VerifyReleaseStatusAcrossAllRecords_Node0_action["Release status is verified for
coordinated notification and
database updates"]:::main N_VerifyReleaseStatusAcrossAllRecords_Node0 -- Yes --> N_VerifyReleaseStatusAcrossAllRecords_Node0_action N_VerifyReleaseStatusAcrossAllRecords_Node0_action --> E_VerifyReleaseStatusAcrossAllRecords S_VerifyReleaseStatusAcrossAllRecords --> N_VerifyReleaseStatusAcrossAllRecords_Node0 N_VerifyReleaseStatusAcrossAllRecords_Node1{"The system verifies release status
across all records"}:::decision N_VerifyReleaseStatusAcrossAllRecords_Node1_action["The system examines the release
status of each processed cargo
record to determine overall release
state"]:::main N_VerifyReleaseStatusAcrossAllRecords_Node1 -- Yes --> N_VerifyReleaseStatusAcrossAllRecords_Node1_action N_VerifyReleaseStatusAcrossAllRecords_Node1_action --> E_VerifyReleaseStatusAcrossAllRecords N_VerifyReleaseStatusAcrossAllRecords_Node0 -- No --> N_VerifyReleaseStatusAcrossAllRecords_Node1 N_VerifyReleaseStatusAcrossAllRecords_Node1 -- No --> E_VerifyReleaseStatusAcrossAllRecords
File: GCX016E.cbl
GIVEN: All cargo records with same car ID and waybill have been processed
WHEN: System verifies release status across all related records
THEN:
  • Release status is verified for coordinated notification
  • Database updates
File: GCX016E.cbl
GIVEN: All cargo records with the same car ID and waybill have been processed
WHEN: The system verifies release status across all records
THEN: The system examines the release status of each processed cargo record to determine overall release state
βœ“ Consolidated Acceptance Criteria
  • System evaluates if all records are in released status → if all records released, generate comprehensive notification; otherwise generate status change notification
  • If the collective release status → if all records are released, proceed to generate comprehensive release notification; if any records remain held, end the release verification 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_AllRecordsReleased(["Start Step"]) E_AllRecordsReleased(["End Step"]) N_AllRecordsReleased_Node0{"System evaluates if all records are
in released status"}:::decision N_AllRecordsReleased_Node0_action["If all records released, generate
comprehensive notification otherwise
generate status change notification"]:::main N_AllRecordsReleased_Node0 -- Yes --> N_AllRecordsReleased_Node0_action N_AllRecordsReleased_Node0_action --> E_AllRecordsReleased S_AllRecordsReleased --> N_AllRecordsReleased_Node0 N_AllRecordsReleased_Node1{"The system evaluates the collective
release status"}:::decision N_AllRecordsReleased_Node1_action["If all records are released,
proceed to generate comprehensive
release notification if any records
remain held, end the release
verification process"]:::main N_AllRecordsReleased_Node1 -- Yes --> N_AllRecordsReleased_Node1_action N_AllRecordsReleased_Node1_action --> E_AllRecordsReleased N_AllRecordsReleased_Node0 -- No --> N_AllRecordsReleased_Node1 N_AllRecordsReleased_Node1 -- No --> E_AllRecordsReleased
File: GCX016E.cbl
GIVEN: Release status has been verified across all related cargo records
WHEN: System evaluates if all records are in released status
THEN: If all records released, generate comprehensive notification; otherwise generate status change notification
File: GCX016E.cbl
GIVEN: All cargo records in the car/waybill group have been individually analyzed
WHEN: The system evaluates the collective release status
THEN: If all records are released, proceed to generate comprehensive release notification; if any records remain held, end the release verification process
βœ“ Consolidated Acceptance Criteria
  • Comprehensive release notification is triggered → complete release notification is generated for all stakeholders
  • The system generates release notification → the system creates a comprehensive release notification covering all related cargo records
  • Comprehensive release notification is generated → a notification is created confirming the consistent release status across all related records
  • The system generates release notification → a comprehensive release notification is created containing all relevant cargo 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_GenerateComprehensiveReleaseNotification(["Start Step"]) E_GenerateComprehensiveReleaseNotification(["End Step"]) N_GenerateComprehensiveReleaseNotification_Node0{"Comprehensive release notification
is triggered"}:::decision N_GenerateComprehensiveReleaseNotification_Node0_action["Complete release notification is
generated for all stakeholders"]:::main N_GenerateComprehensiveReleaseNotification_Node0 -- Yes --> N_GenerateComprehensiveReleaseNotification_Node0_action N_GenerateComprehensiveReleaseNotification_Node0_action --> E_GenerateComprehensiveReleaseNotification S_GenerateComprehensiveReleaseNotification --> N_GenerateComprehensiveReleaseNotification_Node0 N_GenerateComprehensiveReleaseNotification_Node1{"The system generates release
notification"}:::decision N_GenerateComprehensiveReleaseNotification_Node1_action["The system creates a comprehensive
release notification covering all
related cargo records"]:::main N_GenerateComprehensiveReleaseNotification_Node1 -- Yes --> N_GenerateComprehensiveReleaseNotification_Node1_action N_GenerateComprehensiveReleaseNotification_Node1_action --> E_GenerateComprehensiveReleaseNotification N_GenerateComprehensiveReleaseNotification_Node0 -- No --> N_GenerateComprehensiveReleaseNotification_Node1 N_GenerateComprehensiveReleaseNotification_Node2{"Comprehensive release notification
is generated"}:::decision N_GenerateComprehensiveReleaseNotification_Node2_action["A notification is created
confirming the consistent release
status across all related records"]:::main N_GenerateComprehensiveReleaseNotification_Node2 -- Yes --> N_GenerateComprehensiveReleaseNotification_Node2_action N_GenerateComprehensiveReleaseNotification_Node2_action --> E_GenerateComprehensiveReleaseNotification N_GenerateComprehensiveReleaseNotification_Node1 -- No --> N_GenerateComprehensiveReleaseNotification_Node2 N_GenerateComprehensiveReleaseNotification_Node3{"The system generates release
notification"}:::decision N_GenerateComprehensiveReleaseNotification_Node3_action["A comprehensive release
notification is created containing
all relevant cargo and release
information"]:::main N_GenerateComprehensiveReleaseNotification_Node3 -- Yes --> N_GenerateComprehensiveReleaseNotification_Node3_action N_GenerateComprehensiveReleaseNotification_Node3_action --> E_GenerateComprehensiveReleaseNotification N_GenerateComprehensiveReleaseNotification_Node2 -- No --> N_GenerateComprehensiveReleaseNotification_Node3 N_GenerateComprehensiveReleaseNotification_Node3 -- No --> E_GenerateComprehensiveReleaseNotification
File: GCX016E.cbl
GIVEN: All cargo records with same car ID and waybill are in released status
WHEN: Comprehensive release notification is triggered
THEN: Complete release notification is generated for all stakeholders
File: GCX016E.cbl
GIVEN: All cargo records with the same car ID and waybill have consistent release status
WHEN: The system generates release notification
THEN: The system creates a comprehensive release notification covering all related cargo records
File: GCX016E.cbl
GIVEN: All related cargo records have consistent release status
WHEN: Comprehensive release notification is generated
THEN: A notification is created confirming the consistent release status across all related records
File: GCX016E.cbl
GIVEN: All cargo records with the same car ID and waybill are confirmed as released
WHEN: The system generates release notification
THEN:
  • A comprehensive release notification is created containing all relevant cargo
  • Release information
βœ“ Consolidated Acceptance Criteria
  • Merlin notification creation is triggered → status change notifications are created and routed to appropriate recipients
  • The system creates Merlin notifications → the system generates appropriate Merlin messages for each cargo status change including disposition code 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_CreateMerlinNotificationforStatusChanges(["Start Step"]) E_CreateMerlinNotificationforStatusChanges(["End Step"]) N_CreateMerlinNotificationforStatusChanges_Node0{"Merlin notification creation is
triggered"}:::decision N_CreateMerlinNotificationforStatusChanges_Node0_action["Status change notifications are
created and routed to appropriate
recipients"]:::main N_CreateMerlinNotificationforStatusChanges_Node0 -- Yes --> N_CreateMerlinNotificationforStatusChanges_Node0_action N_CreateMerlinNotificationforStatusChanges_Node0_action --> E_CreateMerlinNotificationforStatusChanges S_CreateMerlinNotificationforStatusChanges --> N_CreateMerlinNotificationforStatusChanges_Node0 N_CreateMerlinNotificationforStatusChanges_Node1{"The system creates Merlin
notifications"}:::decision N_CreateMerlinNotificationforStatusChanges_Node1_action["The system generates appropriate
Merlin messages for each cargo
status change including disposition
code details and cargo information"]:::main N_CreateMerlinNotificationforStatusChanges_Node1 -- Yes --> N_CreateMerlinNotificationforStatusChanges_Node1_action N_CreateMerlinNotificationforStatusChanges_Node1_action --> E_CreateMerlinNotificationforStatusChanges N_CreateMerlinNotificationforStatusChanges_Node0 -- No --> N_CreateMerlinNotificationforStatusChanges_Node1 N_CreateMerlinNotificationforStatusChanges_Node1 -- No --> E_CreateMerlinNotificationforStatusChanges
File: GCX016E.cbl
GIVEN: Cargo status changes have occurred during processing
WHEN: Merlin notification creation is triggered
THEN:
  • Status change notifications are created
  • Routed to appropriate recipients
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo records with the same car ID and waybill do not have consistent release status OR arrival notifications have been processed
WHEN: The system creates Merlin notifications
THEN:
  • The system generates appropriate merlin messages for each cargo status change including disposition code details
  • Cargo information
βœ“ Consolidated Acceptance Criteria
  • Database update is initiated → all cargo status changes are committed 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_UpdateCargoStatusinDatabase(["Start Step"]) E_UpdateCargoStatusinDatabase(["End Step"]) N_UpdateCargoStatusinDatabase_Node0{"Database update is initiated"}:::decision N_UpdateCargoStatusinDatabase_Node0_action["All cargo status changes are
committed to the database"]:::main N_UpdateCargoStatusinDatabase_Node0 -- Yes --> N_UpdateCargoStatusinDatabase_Node0_action N_UpdateCargoStatusinDatabase_Node0_action --> E_UpdateCargoStatusinDatabase S_UpdateCargoStatusinDatabase --> N_UpdateCargoStatusinDatabase_Node0 N_UpdateCargoStatusinDatabase_Node0 -- No --> E_UpdateCargoStatusinDatabase
File: GCX016E.cbl
GIVEN: Cargo status changes and notifications have been processed
WHEN: Database update is initiated
THEN: All cargo status changes are committed to the database
βœ“ Consolidated Acceptance Criteria
  • Multi-cargo processing reaches completion → processing terminates successfully for 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_EndMultiCargoProcessing(["Start Step"]) E_EndMultiCargoProcessing(["End Step"]) N_EndMultiCargoProcessing_Node0{"Multi-cargo processing reaches
completion"}:::decision N_EndMultiCargoProcessing_Node0_action["Processing terminates successfully
for the carwaybill group"]:::main N_EndMultiCargoProcessing_Node0 -- Yes --> N_EndMultiCargoProcessing_Node0_action N_EndMultiCargoProcessing_Node0_action --> E_EndMultiCargoProcessing S_EndMultiCargoProcessing --> N_EndMultiCargoProcessing_Node0 N_EndMultiCargoProcessing_Node0 -- No --> E_EndMultiCargoProcessing
File: GCX016E.cbl
GIVEN: All cargo records have been processed and database updates completed
WHEN: Multi-cargo processing reaches completion
THEN: Processing terminates successfully for the car/waybill group
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo deletion status flag → the cargo is identified as either deleted or active based on the deletion status indicator
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckCargoDeletionStatus(["Start Step"]) E_CheckCargoDeletionStatus(["End Step"]) N_CheckCargoDeletionStatus_Node0{"The system checks the cargo
deletion status flag"}:::decision N_CheckCargoDeletionStatus_Node0_action["The cargo is identified as either
deleted or active based on the
deletion status indicator"]:::main N_CheckCargoDeletionStatus_Node0 -- Yes --> N_CheckCargoDeletionStatus_Node0_action N_CheckCargoDeletionStatus_Node0_action --> E_CheckCargoDeletionStatus S_CheckCargoDeletionStatus --> N_CheckCargoDeletionStatus_Node0 N_CheckCargoDeletionStatus_Node0 -- No --> E_CheckCargoDeletionStatus
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN: The system checks the cargo deletion status flag
THEN: The cargo is identified as either deleted or active based on the deletion status indicator
βœ“ Consolidated Acceptance Criteria
  • The deletion status check confirms the cargo is deleted → the cargo is marked with deleted status and processing terminates for this 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_MarkasDeletedCargo(["Start Step"]) E_MarkasDeletedCargo(["End Step"]) N_MarkasDeletedCargo_Node0{"The deletion status check confirms
the cargo is deleted"}:::decision N_MarkasDeletedCargo_Node0_action["The cargo is marked with deleted
status and processing terminates for
this cargo"]:::main N_MarkasDeletedCargo_Node0 -- Yes --> N_MarkasDeletedCargo_Node0_action N_MarkasDeletedCargo_Node0_action --> E_MarkasDeletedCargo S_MarkasDeletedCargo --> N_MarkasDeletedCargo_Node0 N_MarkasDeletedCargo_Node0 -- No --> E_MarkasDeletedCargo
File: GCX016E.cbl
GIVEN: A cargo record has been verified as deleted
WHEN: The deletion status check confirms the cargo is deleted
THEN:
  • The cargo is marked with deleted status
  • Processing terminates for this cargo
βœ“ Consolidated Acceptance Criteria
  • Manual release status is confirmed through status analysis → the cargo is flagged as manually released 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_IdentifyManualRelease(["Start Step"]) E_IdentifyManualRelease(["End Step"]) N_IdentifyManualRelease_Node0{"Manual release status is confirmed
through status analysis"}:::decision N_IdentifyManualRelease_Node0_action["The cargo is flagged as manually
released for subsequent processing"]:::main N_IdentifyManualRelease_Node0 -- Yes --> N_IdentifyManualRelease_Node0_action N_IdentifyManualRelease_Node0_action --> E_IdentifyManualRelease S_IdentifyManualRelease --> N_IdentifyManualRelease_Node0 N_IdentifyManualRelease_Node0 -- No --> E_IdentifyManualRelease
File: GCX016E.cbl
GIVEN: A cargo record shows manual release indicators
WHEN: Manual release status is confirmed through status analysis
THEN: The cargo is flagged as manually released for subsequent processing
βœ“ Consolidated Acceptance Criteria
  • If all hold status indicators → the system identifies and categorizes each type of hold (border, destination, FDA, piece count, custom) 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_AnalyzeHoldStatusTypes(["Start Step"]) E_AnalyzeHoldStatusTypes(["End Step"]) N_AnalyzeHoldStatusTypes_Node0{"The system evaluates all hold
status indicators"}:::decision N_AnalyzeHoldStatusTypes_Node0_action["The system identifies and
categorizes each type of hold
border, destination, FDA, piece
count, custom applied to the cargo"]:::main N_AnalyzeHoldStatusTypes_Node0 -- Yes --> N_AnalyzeHoldStatusTypes_Node0_action N_AnalyzeHoldStatusTypes_Node0_action --> E_AnalyzeHoldStatusTypes S_AnalyzeHoldStatusTypes --> N_AnalyzeHoldStatusTypes_Node0 N_AnalyzeHoldStatusTypes_Node0 -- No --> E_AnalyzeHoldStatusTypes
File: GCX016E.cbl
GIVEN: A cargo record exists with potential hold conditions
WHEN: The system evaluates all hold status indicators
THEN:
  • The system identifies
  • Categorizes each type of hold (border, destination, fda, piece count, custom) applied to the cargo
βœ“ Consolidated Acceptance Criteria
  • The system examines border hold indicators and related status codes → the cargo is classified as either having border hold conditions or being clear of border 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_BorderHoldAnalysis(["Start Step"]) E_BorderHoldAnalysis(["End Step"]) N_BorderHoldAnalysis_Node0{"The system examines border hold
indicators and related status codes"}:::decision N_BorderHoldAnalysis_Node0_action["The cargo is classified as either
having border hold conditions or
being clear of border holds"]:::main N_BorderHoldAnalysis_Node0 -- Yes --> N_BorderHoldAnalysis_Node0_action N_BorderHoldAnalysis_Node0_action --> E_BorderHoldAnalysis S_BorderHoldAnalysis --> N_BorderHoldAnalysis_Node0 N_BorderHoldAnalysis_Node0 -- No --> E_BorderHoldAnalysis
File: GCX016E.cbl
GIVEN: A cargo record requires hold status analysis
WHEN:
  • The system examines border hold indicators
  • Related status codes
THEN: The cargo is classified as either having border hold conditions or being clear of border holds
βœ“ Consolidated Acceptance Criteria
  • The system examines destination hold indicators and location-specific restrictions → the cargo is classified as either having destination hold conditions or being clear 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_DestinationHoldAnalysis(["Start Step"]) E_DestinationHoldAnalysis(["End Step"]) N_DestinationHoldAnalysis_Node0{"The system examines destination
hold indicators and
location-specific restrictions"}:::decision N_DestinationHoldAnalysis_Node0_action["The cargo is classified as either
having destination hold conditions
or being clear for destination
processing"]:::main N_DestinationHoldAnalysis_Node0 -- Yes --> N_DestinationHoldAnalysis_Node0_action N_DestinationHoldAnalysis_Node0_action --> E_DestinationHoldAnalysis S_DestinationHoldAnalysis --> N_DestinationHoldAnalysis_Node0 N_DestinationHoldAnalysis_Node0 -- No --> E_DestinationHoldAnalysis
File: GCX016E.cbl
GIVEN: A cargo record requires hold status analysis
WHEN:
  • The system examines destination hold indicators
  • Location-specific restrictions
THEN: The cargo is classified as either having destination hold conditions or being clear for destination processing
βœ“ Consolidated Acceptance Criteria
  • The system examines FDA hold indicators and regulatory compliance status → the cargo is classified as either having FDA hold conditions or being compliant for 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_FDAHoldAnalysis(["Start Step"]) E_FDAHoldAnalysis(["End Step"]) N_FDAHoldAnalysis_Node0{"The system examines FDA hold
indicators and regulatory compliance
status"}:::decision N_FDAHoldAnalysis_Node0_action["The cargo is classified as either
having FDA hold conditions or being
compliant for FDA processing"]:::main N_FDAHoldAnalysis_Node0 -- Yes --> N_FDAHoldAnalysis_Node0_action N_FDAHoldAnalysis_Node0_action --> E_FDAHoldAnalysis S_FDAHoldAnalysis --> N_FDAHoldAnalysis_Node0 N_FDAHoldAnalysis_Node0 -- No --> E_FDAHoldAnalysis
File: GCX016E.cbl
GIVEN: A cargo record requires hold status analysis
WHEN:
  • The system examines fda hold indicators
  • Regulatory compliance status
THEN: The cargo is classified as either having FDA hold conditions or being compliant for FDA processing
βœ“ Consolidated Acceptance Criteria
  • The system examines piece count hold indicators and quantity validation results → the cargo is classified as either having piece count hold conditions or having accurate 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_PieceCountHoldAnalysis(["Start Step"]) E_PieceCountHoldAnalysis(["End Step"]) N_PieceCountHoldAnalysis_Node0{"The system examines piece count
hold indicators and quantity
validation results"}:::decision N_PieceCountHoldAnalysis_Node0_action["The cargo is classified as either
having piece count hold conditions
or having accurate piece counts"]:::main N_PieceCountHoldAnalysis_Node0 -- Yes --> N_PieceCountHoldAnalysis_Node0_action N_PieceCountHoldAnalysis_Node0_action --> E_PieceCountHoldAnalysis S_PieceCountHoldAnalysis --> N_PieceCountHoldAnalysis_Node0 N_PieceCountHoldAnalysis_Node0 -- No --> E_PieceCountHoldAnalysis
File: GCX016E.cbl
GIVEN: A cargo record requires hold status analysis
WHEN:
  • The system examines piece count hold indicators
  • Quantity validation results
THEN: The cargo is classified as either having piece count hold conditions or having accurate piece counts
βœ“ Consolidated Acceptance Criteria
  • The system examines custom hold indicators and customs processing status → the cargo is classified as either having custom hold conditions or being clear 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_CustomHoldAnalysis(["Start Step"]) E_CustomHoldAnalysis(["End Step"]) N_CustomHoldAnalysis_Node0{"The system examines custom hold
indicators and customs processing
status"}:::decision N_CustomHoldAnalysis_Node0_action["The cargo is classified as either
having custom hold conditions or
being clear for customs processing"]:::main N_CustomHoldAnalysis_Node0 -- Yes --> N_CustomHoldAnalysis_Node0_action N_CustomHoldAnalysis_Node0_action --> E_CustomHoldAnalysis S_CustomHoldAnalysis --> N_CustomHoldAnalysis_Node0 N_CustomHoldAnalysis_Node0 -- No --> E_CustomHoldAnalysis
File: GCX016E.cbl
GIVEN: A cargo record requires hold status analysis
WHEN:
  • The system examines custom hold indicators
  • Customs processing status
THEN: The cargo is classified as either having custom hold conditions or being clear for customs processing
βœ“ Consolidated Acceptance Criteria
  • If the combined impact of all hold conditions and release requirements → the cargo is determined to be either eligible for release or requiring continued hold status
  • If overall release eligibility → the cargo is marked as release-eligible if no blocking holds exist, or marked as held if blocking conditions 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_EvaluateReleaseEligibility(["Start Step"]) E_EvaluateReleaseEligibility(["End Step"]) N_EvaluateReleaseEligibility_Node0{"The system evaluates the combined
impact of all hold conditions and
release requirements"}:::decision N_EvaluateReleaseEligibility_Node0_action["The cargo is determined to be
either eligible for release or
requiring continued hold status"]:::main N_EvaluateReleaseEligibility_Node0 -- Yes --> N_EvaluateReleaseEligibility_Node0_action N_EvaluateReleaseEligibility_Node0_action --> E_EvaluateReleaseEligibility S_EvaluateReleaseEligibility --> N_EvaluateReleaseEligibility_Node0 N_EvaluateReleaseEligibility_Node1{"The system evaluates overall
release eligibility"}:::decision N_EvaluateReleaseEligibility_Node1_action["The cargo is marked as
release-eligible if no blocking
holds exist, or marked as held if
blocking conditions remain"]:::main N_EvaluateReleaseEligibility_Node1 -- Yes --> N_EvaluateReleaseEligibility_Node1_action N_EvaluateReleaseEligibility_Node1_action --> E_EvaluateReleaseEligibility N_EvaluateReleaseEligibility_Node0 -- No --> N_EvaluateReleaseEligibility_Node1 N_EvaluateReleaseEligibility_Node1 -- No --> E_EvaluateReleaseEligibility
File: GCX016E.cbl
GIVEN: A cargo record has been analyzed for all hold types
WHEN:
  • The system evaluates the combined impact of all hold conditions
  • Release requirements
THEN: The cargo is determined to be either eligible for release or requiring continued hold status
File: GCX016E.cbl
GIVEN: A cargo record with completed hold status analysis
WHEN: The system evaluates overall release eligibility
THEN: The cargo is marked as release-eligible if no blocking holds exist, or marked as held if blocking conditions remain
βœ“ Consolidated Acceptance Criteria
  • All hold conditions have been cleared and release requirements are met → the system sets the release eligible flag and prepares the cargo for release processing
  • The release eligibility evaluation completes → the release eligible 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_SetReleaseEligibleFlag(["Start Step"]) E_SetReleaseEligibleFlag(["End Step"]) N_SetReleaseEligibleFlag_Node0{"All hold conditions have been
cleared and release requirements are
met"}:::decision N_SetReleaseEligibleFlag_Node0_action["The system sets the release
eligible flag and prepares the cargo
for release processing"]:::main N_SetReleaseEligibleFlag_Node0 -- Yes --> N_SetReleaseEligibleFlag_Node0_action N_SetReleaseEligibleFlag_Node0_action --> E_SetReleaseEligibleFlag S_SetReleaseEligibleFlag --> N_SetReleaseEligibleFlag_Node0 N_SetReleaseEligibleFlag_Node1{"The release eligibility evaluation
completes"}:::decision N_SetReleaseEligibleFlag_Node1_action["The release eligible flag is set
for the cargo record"]:::main N_SetReleaseEligibleFlag_Node1 -- Yes --> N_SetReleaseEligibleFlag_Node1_action N_SetReleaseEligibleFlag_Node1_action --> E_SetReleaseEligibleFlag N_SetReleaseEligibleFlag_Node0 -- No --> N_SetReleaseEligibleFlag_Node1 N_SetReleaseEligibleFlag_Node1 -- No --> E_SetReleaseEligibleFlag
File: GCX016E.cbl
GIVEN: A cargo record has been determined eligible for release
WHEN:
  • All hold conditions have been cleared
  • Release requirements are met
THEN:
  • The system sets the release eligible flag
  • Prepares the cargo for release processing
File: GCX016E.cbl
GIVEN: A cargo record has all hold conditions cleared
WHEN: The release eligibility evaluation completes
THEN: The release eligible flag is set for the cargo record
βœ“ Consolidated Acceptance Criteria
  • One or more hold conditions remain unresolved or new hold requirements are identified → the system sets the hold required flag and maintains the cargo 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_SetHoldRequiredFlag(["Start Step"]) E_SetHoldRequiredFlag(["End Step"]) N_SetHoldRequiredFlag_Node0{"One or more hold conditions remain
unresolved or new hold requirements
are identified"}:::decision N_SetHoldRequiredFlag_Node0_action["The system sets the hold required
flag and maintains the cargo in hold
status"]:::main N_SetHoldRequiredFlag_Node0 -- Yes --> N_SetHoldRequiredFlag_Node0_action N_SetHoldRequiredFlag_Node0_action --> E_SetHoldRequiredFlag S_SetHoldRequiredFlag --> N_SetHoldRequiredFlag_Node0 N_SetHoldRequiredFlag_Node0 -- No --> E_SetHoldRequiredFlag
File: GCX016E.cbl
GIVEN: A cargo record has been determined to require continued hold status
WHEN: One or more hold conditions remain unresolved or new hold requirements are identified
THEN:
  • The system sets the hold required flag
  • Maintains the cargo in hold status
βœ“ Consolidated Acceptance Criteria
  • The system searches for other cargo records with matching car ID and waybill number → the system determines if the cargo is part of a single record or multiple records with the same car/waybill 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_CheckMultipleRecordswithSameCarWaybill(["Start Step"]) E_CheckMultipleRecordswithSameCarWaybill(["End Step"]) N_CheckMultipleRecordswithSameCarWaybill_Node0{"The system searches for other cargo
records with matching car ID and
waybill number"}:::decision N_CheckMultipleRecordswithSameCarWaybill_Node0_action["The system determines if the cargo
is part of a single record or
multiple records with the same
carwaybill combination"]:::main N_CheckMultipleRecordswithSameCarWaybill_Node0 -- Yes --> N_CheckMultipleRecordswithSameCarWaybill_Node0_action N_CheckMultipleRecordswithSameCarWaybill_Node0_action --> E_CheckMultipleRecordswithSameCarWaybill S_CheckMultipleRecordswithSameCarWaybill --> N_CheckMultipleRecordswithSameCarWaybill_Node0 N_CheckMultipleRecordswithSameCarWaybill_Node0 -- No --> E_CheckMultipleRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: A cargo record has been processed for individual analysis
WHEN:
  • The system searches for other cargo records with matching car id
  • Waybill number
THEN: The system determines if the cargo is part of a single record or multiple records with the same car/waybill combination
βœ“ Consolidated Acceptance Criteria
  • The system processes each related cargo record for status and hold conditions → all related cargo records are analyzed collectively to determine the overall shipment 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_AnalyzeAllRelatedRecords(["Start Step"]) E_AnalyzeAllRelatedRecords(["End Step"]) N_AnalyzeAllRelatedRecords_Node0{"The system processes each related
cargo record for status and hold
conditions"}:::decision N_AnalyzeAllRelatedRecords_Node0_action["All related cargo records are
analyzed collectively to determine
the overall shipment status"]:::main N_AnalyzeAllRelatedRecords_Node0 -- Yes --> N_AnalyzeAllRelatedRecords_Node0_action N_AnalyzeAllRelatedRecords_Node0_action --> E_AnalyzeAllRelatedRecords S_AnalyzeAllRelatedRecords --> N_AnalyzeAllRelatedRecords_Node0 N_AnalyzeAllRelatedRecords_Node0 -- No --> E_AnalyzeAllRelatedRecords
File: GCX016E.cbl
GIVEN: Multiple cargo records exist with the same car ID and waybill number
WHEN:
  • The system processes each related cargo record for status
  • Hold conditions
THEN: All related cargo records are analyzed collectively to determine the overall shipment status
βœ“ Consolidated Acceptance Criteria
  • If all status indicators, hold conditions, and release eligibility → the system determines the overall status for the cargo or shipment based on the most restrictive 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_DetermineOverallStatus(["Start Step"]) E_DetermineOverallStatus(["End Step"]) N_DetermineOverallStatus_Node0{"The system evaluates all status
indicators, hold conditions, and
release eligibility"}:::decision N_DetermineOverallStatus_Node0_action["The system determines the overall
status for the cargo or shipment
based on the most restrictive
conditions"]:::main N_DetermineOverallStatus_Node0 -- Yes --> N_DetermineOverallStatus_Node0_action N_DetermineOverallStatus_Node0_action --> E_DetermineOverallStatus S_DetermineOverallStatus --> N_DetermineOverallStatus_Node0 N_DetermineOverallStatus_Node0 -- No --> E_DetermineOverallStatus
File: GCX016E.cbl
GIVEN: Individual cargo analysis is complete or all related records have been analyzed
WHEN: The system evaluates all status indicators, hold conditions, and release eligibility
THEN: The system determines the overall status for the cargo or shipment based on the most restrictive conditions
βœ“ Consolidated Acceptance Criteria
  • The system compiles all analysis results including hold types, release eligibility, and final status → a complete status summary is generated containing all relevant cargo analysis 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_GenerateStatusSummary(["Start Step"]) E_GenerateStatusSummary(["End Step"]) N_GenerateStatusSummary_Node0{"The system compiles all analysis
results including hold types,
release eligibility, and final
status"}:::decision N_GenerateStatusSummary_Node0_action["A complete status summary is
generated containing all relevant
cargo analysis information"]:::main N_GenerateStatusSummary_Node0 -- Yes --> N_GenerateStatusSummary_Node0_action N_GenerateStatusSummary_Node0_action --> E_GenerateStatusSummary S_GenerateStatusSummary --> N_GenerateStatusSummary_Node0 N_GenerateStatusSummary_Node0 -- No --> E_GenerateStatusSummary
File: GCX016E.cbl
GIVEN: The overall status has been determined for the cargo or shipment
WHEN: The system compiles all analysis results including hold types, release eligibility, and final status
THEN: A complete status summary is generated containing all relevant cargo analysis information
βœ“ Consolidated Acceptance Criteria
  • The system processes the final analysis results → the cargo records are updated with the new status information, hold flags, and release eligibility 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_UpdateCargoAnalysisResults(["Start Step"]) E_UpdateCargoAnalysisResults(["End Step"]) N_UpdateCargoAnalysisResults_Node0{"The system processes the final
analysis results"}:::decision N_UpdateCargoAnalysisResults_Node0_action["The cargo records are updated with
the new status information, hold
flags, and release eligibility
indicators"]:::main N_UpdateCargoAnalysisResults_Node0 -- Yes --> N_UpdateCargoAnalysisResults_Node0_action N_UpdateCargoAnalysisResults_Node0_action --> E_UpdateCargoAnalysisResults S_UpdateCargoAnalysisResults --> N_UpdateCargoAnalysisResults_Node0 N_UpdateCargoAnalysisResults_Node0 -- No --> E_UpdateCargoAnalysisResults
File: GCX016E.cbl
GIVEN: A status summary has been generated for the cargo analysis
WHEN: The system processes the final analysis results
THEN: The cargo records are updated with the new status information, hold flags, and release eligibility indicators
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo release status → the system confirms cargo records are available and 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_VerifyCargoReleaseStatus(["Start Step"]) E_VerifyCargoReleaseStatus(["End Step"]) N_VerifyCargoReleaseStatus_Node0{"The system checks the cargo release
status"}:::decision N_VerifyCargoReleaseStatus_Node0_action["The system confirms cargo records
are available and accessible for
processing"]:::main N_VerifyCargoReleaseStatus_Node0 -- Yes --> N_VerifyCargoReleaseStatus_Node0_action N_VerifyCargoReleaseStatus_Node0_action --> E_VerifyCargoReleaseStatus S_VerifyCargoReleaseStatus --> N_VerifyCargoReleaseStatus_Node0 N_VerifyCargoReleaseStatus_Node0 -- No --> E_VerifyCargoReleaseStatus
File: GCX016E.cbl
GIVEN: A cargo release notification process is initiated
WHEN: The system checks the cargo release status
THEN:
  • The system confirms cargo records are available
  • Accessible for processing
βœ“ Consolidated Acceptance Criteria
  • If release status for notification preparation → all related cargo records must be in released status to continue with release notification, otherwise the 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_AllRecordswithSameCarWaybillReleased(["Start Step"]) E_AllRecordswithSameCarWaybillReleased(["End Step"]) N_AllRecordswithSameCarWaybillReleased_Node0{"The system evaluates release status
for notification preparation"}:::decision N_AllRecordswithSameCarWaybillReleased_Node0_action["All related cargo records must be
in released status to continue with
release notification, otherwise the
process terminates"]:::main N_AllRecordswithSameCarWaybillReleased_Node0 -- Yes --> N_AllRecordswithSameCarWaybillReleased_Node0_action N_AllRecordswithSameCarWaybillReleased_Node0_action --> E_AllRecordswithSameCarWaybillReleased S_AllRecordswithSameCarWaybillReleased --> N_AllRecordswithSameCarWaybillReleased_Node0 N_AllRecordswithSameCarWaybillReleased_Node0 -- No --> E_AllRecordswithSameCarWaybillReleased
File: GCX016E.cbl
GIVEN: Multiple cargo records exist with the same car ID and waybill number
WHEN: The system evaluates release status for notification preparation
THEN: All related cargo records must be in released status to continue with release notification, otherwise the process terminates
βœ“ Consolidated Acceptance Criteria
  • The system prepares release notification content → the system formats car ID, equipment initial, and equipment number into standardized format for the notification message
  • The system formats equipment details for the export message → the system includes formatted car ID, equipment type, and equipment details in the export notification
  • The system processes Merlin report formatting → equipment information is extracted and formatted for the report
  • Equipment information needs to be included in the message → the system formats equipment initial, number, and type into the message structure
  • Creating a Merlin message for cargo disposition → equipment type, identification number, and related cargo details are formatted and included in the message
  • The system processes Merlin report field management → the equipment information is formatted and prepared for report inclusion
  • The system processes Merlin report field formatting → the equipment information is formatted and prepared for report inclusion
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_FormatEquipmentInformation(["Start Step"]) E_FormatEquipmentInformation(["End Step"]) N_FormatEquipmentInformation_Node0{"The system prepares release
notification content"}:::decision N_FormatEquipmentInformation_Node0_action["The system formats car ID,
equipment initial, and equipment
number into standardized format for
the notification message"]:::main N_FormatEquipmentInformation_Node0 -- Yes --> N_FormatEquipmentInformation_Node0_action N_FormatEquipmentInformation_Node0_action --> E_FormatEquipmentInformation S_FormatEquipmentInformation --> N_FormatEquipmentInformation_Node0 N_FormatEquipmentInformation_Node1{"The system formats equipment
details for the export message"}:::decision N_FormatEquipmentInformation_Node1_action["The system includes formatted car
ID, equipment type, and equipment
details in the export notification"]:::main N_FormatEquipmentInformation_Node1 -- Yes --> N_FormatEquipmentInformation_Node1_action N_FormatEquipmentInformation_Node1_action --> E_FormatEquipmentInformation N_FormatEquipmentInformation_Node0 -- No --> N_FormatEquipmentInformation_Node1 N_FormatEquipmentInformation_Node2{"The system processes Merlin report
formatting"}:::decision N_FormatEquipmentInformation_Node2_action["Equipment information is extracted
and formatted for the report"]:::main N_FormatEquipmentInformation_Node2 -- Yes --> N_FormatEquipmentInformation_Node2_action N_FormatEquipmentInformation_Node2_action --> E_FormatEquipmentInformation N_FormatEquipmentInformation_Node1 -- No --> N_FormatEquipmentInformation_Node2 N_FormatEquipmentInformation_Node3{"Equipment information needs to be
included in the message"}:::decision N_FormatEquipmentInformation_Node3_action["The system formats equipment
initial, number, and type into the
message structure"]:::main N_FormatEquipmentInformation_Node3 -- Yes --> N_FormatEquipmentInformation_Node3_action N_FormatEquipmentInformation_Node3_action --> E_FormatEquipmentInformation N_FormatEquipmentInformation_Node2 -- No --> N_FormatEquipmentInformation_Node3 N_FormatEquipmentInformation_Node4{"Creating a Merlin message for cargo
disposition"}:::decision N_FormatEquipmentInformation_Node4_action["Equipment type, identification
number, and related cargo details
are formatted and included in the
message"]:::main N_FormatEquipmentInformation_Node4 -- Yes --> N_FormatEquipmentInformation_Node4_action N_FormatEquipmentInformation_Node4_action --> E_FormatEquipmentInformation N_FormatEquipmentInformation_Node3 -- No --> N_FormatEquipmentInformation_Node4 N_FormatEquipmentInformation_Node5{"The system processes Merlin report
field management"}:::decision N_FormatEquipmentInformation_Node5_action["The equipment information is
formatted and prepared for report
inclusion"]:::main N_FormatEquipmentInformation_Node5 -- Yes --> N_FormatEquipmentInformation_Node5_action N_FormatEquipmentInformation_Node5_action --> E_FormatEquipmentInformation N_FormatEquipmentInformation_Node4 -- No --> N_FormatEquipmentInformation_Node5 N_FormatEquipmentInformation_Node6{"The system processes Merlin report
field formatting"}:::decision N_FormatEquipmentInformation_Node6_action["The equipment information is
formatted and prepared for report
inclusion"]:::main N_FormatEquipmentInformation_Node6 -- Yes --> N_FormatEquipmentInformation_Node6_action N_FormatEquipmentInformation_Node6_action --> E_FormatEquipmentInformation N_FormatEquipmentInformation_Node5 -- No --> N_FormatEquipmentInformation_Node6 N_FormatEquipmentInformation_Node6 -- No --> E_FormatEquipmentInformation
File: GCX016E.cbl
GIVEN: Equipment information exists in N7 segments
WHEN: The system prepares release notification content
THEN: The system formats car ID, equipment initial, and equipment number into standardized format for the notification message
File: GCX016E.cbl
GIVEN: An export notification message structure and cargo with associated equipment information
WHEN: The system formats equipment details for the export message
THEN: The system includes formatted car ID, equipment type, and equipment details in the export notification
File: GCX016E.cbl
GIVEN: A cargo record exists with equipment information
WHEN: The system processes Merlin report formatting
THEN:
  • Equipment information is extracted
  • Formatted for the report
File: GCX016E.cbl
GIVEN: A Merlin message is being formatted for cargo processing
WHEN: Equipment information needs to be included in the message
THEN: The system formats equipment initial, number, and type into the message structure
File: GCX016E.cbl
GIVEN: Equipment information exists in the cargo record
WHEN: Creating a Merlin message for cargo disposition
THEN:
  • Equipment type, identification number, and related cargo details are formatted
  • Included in the message
File: GCX016E.cbl
GIVEN: A cargo record contains equipment information
WHEN: The system processes Merlin report field management
THEN:
  • The equipment information is formatted
  • Prepared for report inclusion
File: GCX016E.cbl
GIVEN: A cargo record with equipment information exists
WHEN: The system processes Merlin report field formatting
THEN:
  • The equipment information is formatted
  • Prepared for report inclusion
βœ“ Consolidated Acceptance Criteria
  • The system prepares release notification content → the system formats disposition codes, entry numbers, and related cargo details for inclusion in the notification message
  • A disposition code has been processed for the cargo → the system formats the disposition code and related details into the message
  • Creating comprehensive Merlin message → disposition code details are formatted with proper context and 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_FormatDispositionCodeDetails(["Start Step"]) E_FormatDispositionCodeDetails(["End Step"]) N_FormatDispositionCodeDetails_Node0{"The system prepares release
notification content"}:::decision N_FormatDispositionCodeDetails_Node0_action["The system formats disposition
codes, entry numbers, and related
cargo details for inclusion in the
notification message"]:::main N_FormatDispositionCodeDetails_Node0 -- Yes --> N_FormatDispositionCodeDetails_Node0_action N_FormatDispositionCodeDetails_Node0_action --> E_FormatDispositionCodeDetails S_FormatDispositionCodeDetails --> N_FormatDispositionCodeDetails_Node0 N_FormatDispositionCodeDetails_Node1{"A disposition code has been
processed for the cargo"}:::decision N_FormatDispositionCodeDetails_Node1_action["The system formats the disposition
code and related details into the
message"]:::main N_FormatDispositionCodeDetails_Node1 -- Yes --> N_FormatDispositionCodeDetails_Node1_action N_FormatDispositionCodeDetails_Node1_action --> E_FormatDispositionCodeDetails N_FormatDispositionCodeDetails_Node0 -- No --> N_FormatDispositionCodeDetails_Node1 N_FormatDispositionCodeDetails_Node2{"Creating comprehensive Merlin
message"}:::decision N_FormatDispositionCodeDetails_Node2_action["Disposition code details are
formatted with proper context and
included in the message"]:::main N_FormatDispositionCodeDetails_Node2 -- Yes --> N_FormatDispositionCodeDetails_Node2_action N_FormatDispositionCodeDetails_Node2_action --> E_FormatDispositionCodeDetails N_FormatDispositionCodeDetails_Node1 -- No --> N_FormatDispositionCodeDetails_Node2 N_FormatDispositionCodeDetails_Node2 -- No --> E_FormatDispositionCodeDetails
File: GCX016E.cbl
GIVEN: Disposition code information exists in X4 segments
WHEN: The system prepares release notification content
THEN: The system formats disposition codes, entry numbers, and related cargo details for inclusion in the notification message
File: GCX016E.cbl
GIVEN: US-CCN information has been included in the message
WHEN: A disposition code has been processed for the cargo
THEN:
  • The system formats the disposition code
  • Related details into the message
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo
WHEN: Creating comprehensive Merlin message
THEN:
  • Disposition code details are formatted with proper context
  • Included in the message
βœ“ Consolidated Acceptance Criteria
  • The system prepares the notification message content → the system includes details about quantity changes and impact of the release 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_IncludeReleaseQuantityImpact(["Start Step"]) E_IncludeReleaseQuantityImpact(["End Step"]) N_IncludeReleaseQuantityImpact_Node0{"The system prepares the
notification message content"}:::decision N_IncludeReleaseQuantityImpact_Node0_action["The system includes details about
quantity changes and impact of the
release action in the message"]:::main N_IncludeReleaseQuantityImpact_Node0 -- Yes --> N_IncludeReleaseQuantityImpact_Node0_action N_IncludeReleaseQuantityImpact_Node0_action --> E_IncludeReleaseQuantityImpact S_IncludeReleaseQuantityImpact --> N_IncludeReleaseQuantityImpact_Node0 N_IncludeReleaseQuantityImpact_Node0 -- No --> E_IncludeReleaseQuantityImpact
File: GCX016E.cbl
GIVEN: Release quantities have been calculated
WHEN: The system prepares the notification message content
THEN:
  • The system includes details about quantity changes
  • Impact of the release action in the message
βœ“ Consolidated Acceptance Criteria
  • The system finalizes notification message content → the system includes before and after quantity comparison data to show the effect of 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_AddBeforeAfterQuantityComparison(["Start Step"]) E_AddBeforeAfterQuantityComparison(["End Step"]) N_AddBeforeAfterQuantityComparison_Node0{"The system finalizes notification
message content"}:::decision N_AddBeforeAfterQuantityComparison_Node0_action["The system includes before and
after quantity comparison data to
show the effect of the release"]:::main N_AddBeforeAfterQuantityComparison_Node0 -- Yes --> N_AddBeforeAfterQuantityComparison_Node0_action N_AddBeforeAfterQuantityComparison_Node0_action --> E_AddBeforeAfterQuantityComparison S_AddBeforeAfterQuantityComparison --> N_AddBeforeAfterQuantityComparison_Node0 N_AddBeforeAfterQuantityComparison_Node0 -- No --> E_AddBeforeAfterQuantityComparison
File: GCX016E.cbl
GIVEN: Quantity impact information has been prepared
WHEN: The system finalizes notification message content
THEN:
  • The system includes before
  • After quantity comparison data to show the effect of the release
βœ“ Consolidated Acceptance Criteria
  • The system prepares comprehensive notification content → the system includes up to 4 lines of K1 segment comments in the notification message 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_IncludeK1CommentMessages(["Start Step"]) E_IncludeK1CommentMessages(["End Step"]) N_IncludeK1CommentMessages_Node0{"The system prepares comprehensive
notification content"}:::decision N_IncludeK1CommentMessages_Node0_action["The system includes up to 4 lines
of K1 segment comments in the
notification message if available"]:::main N_IncludeK1CommentMessages_Node0 -- Yes --> N_IncludeK1CommentMessages_Node0_action N_IncludeK1CommentMessages_Node0_action --> E_IncludeK1CommentMessages S_IncludeK1CommentMessages --> N_IncludeK1CommentMessages_Node0 N_IncludeK1CommentMessages_Node0 -- No --> E_IncludeK1CommentMessages
File: GCX016E.cbl
GIVEN: K1 comment segments exist for the cargo
WHEN: The system prepares comprehensive notification content
THEN: The system includes up to 4 lines of K1 segment comments in the notification message if available
βœ“ Consolidated Acceptance Criteria
  • The system prepares detailed notification content → the system includes up to 3 lines of special processing comments in the notification message if present
  • The system adds special processing information to the Merlin message → the system includes up to 3 lines of special comments, processing timestamps, and station/location data 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_AddSpecialProcessingComments(["Start Step"]) E_AddSpecialProcessingComments(["End Step"]) N_AddSpecialProcessingComments_Node0{"The system prepares detailed
notification content"}:::decision N_AddSpecialProcessingComments_Node0_action["The system includes up to 3 lines
of special processing comments in
the notification message if present"]:::main N_AddSpecialProcessingComments_Node0 -- Yes --> N_AddSpecialProcessingComments_Node0_action N_AddSpecialProcessingComments_Node0_action --> E_AddSpecialProcessingComments S_AddSpecialProcessingComments --> N_AddSpecialProcessingComments_Node0 N_AddSpecialProcessingComments_Node1{"The system adds special processing
information to the Merlin message"}:::decision N_AddSpecialProcessingComments_Node1_action["The system includes up to 3 lines
of special comments, processing
timestamps, and stationlocation data
in the message"]:::main N_AddSpecialProcessingComments_Node1 -- Yes --> N_AddSpecialProcessingComments_Node1_action N_AddSpecialProcessingComments_Node1_action --> E_AddSpecialProcessingComments N_AddSpecialProcessingComments_Node0 -- No --> N_AddSpecialProcessingComments_Node1 N_AddSpecialProcessingComments_Node1 -- No --> E_AddSpecialProcessingComments
File: GCX016E.cbl
GIVEN: Special processing comments are available for the cargo
WHEN: The system prepares detailed notification content
THEN: The system includes up to 3 lines of special processing comments in the notification message if present
File: GCX016E.cbl
GIVEN: Special processing comments are available for the cargo disposition processing
WHEN: The system adds special processing information to the Merlin message
THEN: The system includes up to 3 lines of special comments, processing timestamps, and station/location data in the message
βœ“ Consolidated Acceptance Criteria
  • The system creates the final notification message → the system formats all components into a comprehensive release message with proper structure and 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_FormatComprehensiveReleaseMessage(["Start Step"]) E_FormatComprehensiveReleaseMessage(["End Step"]) N_FormatComprehensiveReleaseMessage_Node0{"The system creates the final
notification message"}:::decision N_FormatComprehensiveReleaseMessage_Node0_action["The system formats all components
into a comprehensive release message
with proper structure and formatting"]:::main N_FormatComprehensiveReleaseMessage_Node0 -- Yes --> N_FormatComprehensiveReleaseMessage_Node0_action N_FormatComprehensiveReleaseMessage_Node0_action --> E_FormatComprehensiveReleaseMessage S_FormatComprehensiveReleaseMessage --> N_FormatComprehensiveReleaseMessage_Node0 N_FormatComprehensiveReleaseMessage_Node0 -- No --> E_FormatComprehensiveReleaseMessage
File: GCX016E.cbl
GIVEN: All message components have been prepared including equipment info, disposition codes, quantities, and comments
WHEN: The system creates the final notification message
THEN:
  • The system formats all components into a comprehensive release message with proper structure
  • Formatting
βœ“ Consolidated Acceptance Criteria
  • The system finalizes message properties → the system sets the message type indicator to RELEASE for proper 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_SetMessageTypeasRELEASE(["Start Step"]) E_SetMessageTypeasRELEASE(["End Step"]) N_SetMessageTypeasRELEASE_Node0{"The system finalizes message
properties"}:::decision N_SetMessageTypeasRELEASE_Node0_action["The system sets the message type
indicator to RELEASE for proper
routing and processing"]:::main N_SetMessageTypeasRELEASE_Node0 -- Yes --> N_SetMessageTypeasRELEASE_Node0_action N_SetMessageTypeasRELEASE_Node0_action --> E_SetMessageTypeasRELEASE S_SetMessageTypeasRELEASE --> N_SetMessageTypeasRELEASE_Node0 N_SetMessageTypeasRELEASE_Node0 -- No --> E_SetMessageTypeasRELEASE
File: GCX016E.cbl
GIVEN: A comprehensive release message has been formatted
WHEN: The system finalizes message properties
THEN:
  • The system sets the message type indicator to release for proper routing
  • Processing
βœ“ Consolidated Acceptance Criteria
  • The system prepares for message distribution → the system readies the message for delivery through appropriate notification channels including Merlin routing and email systems
  • The system prepares the message for distribution → the system finalizes message routing, determines delivery methods, and prepares the message for transmission 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_PrepareMessageforDistribution(["Start Step"]) E_PrepareMessageforDistribution(["End Step"]) N_PrepareMessageforDistribution_Node0{"The system prepares for message
distribution"}:::decision N_PrepareMessageforDistribution_Node0_action["The system readies the message for
delivery through appropriate
notification channels including
Merlin routing and email systems"]:::main N_PrepareMessageforDistribution_Node0 -- Yes --> N_PrepareMessageforDistribution_Node0_action N_PrepareMessageforDistribution_Node0_action --> E_PrepareMessageforDistribution S_PrepareMessageforDistribution --> N_PrepareMessageforDistribution_Node0 N_PrepareMessageforDistribution_Node1{"The system prepares the message for
distribution"}:::decision N_PrepareMessageforDistribution_Node1_action["The system finalizes message
routing, determines delivery
methods, and prepares the message
for transmission to appropriate
recipients"]:::main N_PrepareMessageforDistribution_Node1 -- Yes --> N_PrepareMessageforDistribution_Node1_action N_PrepareMessageforDistribution_Node1_action --> E_PrepareMessageforDistribution N_PrepareMessageforDistribution_Node0 -- No --> N_PrepareMessageforDistribution_Node1 N_PrepareMessageforDistribution_Node1 -- No --> E_PrepareMessageforDistribution
File: GCX016E.cbl
GIVEN: A complete release message with proper type assignment exists
WHEN: The system prepares for message distribution
THEN:
  • The system readies the message for delivery through appropriate notification channels including merlin routing
  • Email systems
File: GCX016E.cbl
GIVEN: A complete Merlin message with assigned type and priority is ready for distribution
WHEN: The system prepares the message for distribution
THEN: The system finalizes message routing, determines delivery methods, and prepares the message for transmission to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • If if export notification processing is required → the system determines if cargo has export status and requires export 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_CargoExportStatus(["Start Step"]) E_CargoExportStatus(["End Step"]) N_CargoExportStatus_Node0{"The system evaluates if export
notification processing is required"}:::decision N_CargoExportStatus_Node0_action["The system determines if cargo has
export status and requires export
notification processing"]:::main N_CargoExportStatus_Node0 -- Yes --> N_CargoExportStatus_Node0_action N_CargoExportStatus_Node0_action --> E_CargoExportStatus S_CargoExportStatus --> N_CargoExportStatus_Node0 N_CargoExportStatus_Node0 -- No --> E_CargoExportStatus
File: GCX016E.cbl
GIVEN: A cargo record with current status and disposition codes
WHEN: The system evaluates if export notification processing is required
THEN:
  • The system determines if cargo has export status
  • Requires export notification processing
βœ“ Consolidated Acceptance Criteria
  • The system validates export conditions and port information → the system confirms if export port is valid and cargo meets export 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_ExportPortValidated(["Start Step"]) E_ExportPortValidated(["End Step"]) N_ExportPortValidated_Node0{"The system validates export
conditions and port information"}:::decision N_ExportPortValidated_Node0_action["The system confirms if export port
is valid and cargo meets export
processing requirements"]:::main N_ExportPortValidated_Node0 -- Yes --> N_ExportPortValidated_Node0_action N_ExportPortValidated_Node0_action --> E_ExportPortValidated S_ExportPortValidated --> N_ExportPortValidated_Node0 N_ExportPortValidated_Node0 -- No --> E_ExportPortValidated
File: GCX016E.cbl
GIVEN: A cargo marked for export processing with associated port and routing information
WHEN:
  • The system validates export conditions
  • Port information
THEN:
  • The system confirms if export port is valid
  • Cargo meets export processing requirements
βœ“ Consolidated Acceptance Criteria
  • The system calculates export timing information → the system assigns appropriate export date and time 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_CalculateExportDateTime(["Start Step"]) E_CalculateExportDateTime(["End Step"]) N_CalculateExportDateTime_Node0{"The system calculates export timing
information"}:::decision N_CalculateExportDateTime_Node0_action["The system assigns appropriate
export date and time to the cargo
record"]:::main N_CalculateExportDateTime_Node0 -- Yes --> N_CalculateExportDateTime_Node0_action N_CalculateExportDateTime_Node0_action --> E_CalculateExportDateTime S_CalculateExportDateTime --> N_CalculateExportDateTime_Node0 N_CalculateExportDateTime_Node0 -- No --> E_CalculateExportDateTime
File: GCX016E.cbl
GIVEN: A cargo with export status flag set and current system date/time available
WHEN: The system calculates export timing information
THEN:
  • The system assigns appropriate export date
  • Time to the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system prepares export notification message → the system creates message structure with header information for export 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_PrepareExportNotificationMessage(["Start Step"]) E_PrepareExportNotificationMessage(["End Step"]) N_PrepareExportNotificationMessage_Node0{"The system prepares export
notification message"}:::decision N_PrepareExportNotificationMessage_Node0_action["The system creates message
structure with header information
for export notification"]:::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: GCX016E.cbl
GIVEN: A cargo with export status, date/time, and validated export conditions
WHEN: The system prepares export notification message
THEN: The system creates message structure with header information for export notification
βœ“ Consolidated Acceptance Criteria
  • The system formats cargo details for the export message → the system includes formatted CCN, waybill, origin, destination, and commodity information in the export 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_FormatCargoDetails(["Start Step"]) E_FormatCargoDetails(["End Step"]) N_FormatCargoDetails_Node0{"The system formats cargo details
for the export message"}:::decision N_FormatCargoDetails_Node0_action["The system includes formatted CCN,
waybill, origin, destination, and
commodity information in the export
notification"]:::main N_FormatCargoDetails_Node0 -- Yes --> N_FormatCargoDetails_Node0_action N_FormatCargoDetails_Node0_action --> E_FormatCargoDetails S_FormatCargoDetails --> N_FormatCargoDetails_Node0 N_FormatCargoDetails_Node0 -- No --> E_FormatCargoDetails
File: GCX016E.cbl
GIVEN: An export notification message with equipment information and cargo record with complete details
WHEN: The system formats cargo details for the export message
THEN: The system includes formatted CCN, waybill, origin, destination, and commodity information in the export notification
βœ“ Consolidated Acceptance Criteria
  • The system formats disposition code information for the export message → the system includes formatted disposition code, entry numbers, and related processing information in the export notification
  • Disposition code information formatting is performed → disposition code details are formatted for the report
  • The system processes disposition code data for Merlin reporting → the disposition code information is formatted for report inclusion
  • The disposition code information formatting is processed → the disposition code and its description are retrieved and formatted for report inclusion
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 disposition code
information for the export message"}:::decision N_FormatDispositionCodeInformation_Node0_action["The system includes formatted
disposition code, entry numbers, and
related processing information in
the export notification"]:::main N_FormatDispositionCodeInformation_Node0 -- Yes --> N_FormatDispositionCodeInformation_Node0_action N_FormatDispositionCodeInformation_Node0_action --> E_FormatDispositionCodeInformation S_FormatDispositionCodeInformation --> N_FormatDispositionCodeInformation_Node0 N_FormatDispositionCodeInformation_Node1{"Disposition code information
formatting is performed"}:::decision N_FormatDispositionCodeInformation_Node1_action["Disposition code details are
formatted for the report"]:::main N_FormatDispositionCodeInformation_Node1 -- Yes --> N_FormatDispositionCodeInformation_Node1_action N_FormatDispositionCodeInformation_Node1_action --> E_FormatDispositionCodeInformation N_FormatDispositionCodeInformation_Node0 -- No --> N_FormatDispositionCodeInformation_Node1 N_FormatDispositionCodeInformation_Node2{"The system processes disposition
code data for Merlin reporting"}:::decision N_FormatDispositionCodeInformation_Node2_action["The disposition code information is
formatted for report inclusion"]:::main N_FormatDispositionCodeInformation_Node2 -- Yes --> N_FormatDispositionCodeInformation_Node2_action N_FormatDispositionCodeInformation_Node2_action --> E_FormatDispositionCodeInformation N_FormatDispositionCodeInformation_Node1 -- No --> N_FormatDispositionCodeInformation_Node2 N_FormatDispositionCodeInformation_Node3{"The disposition code information
formatting is processed"}:::decision N_FormatDispositionCodeInformation_Node3_action["The disposition code and its
description are retrieved and
formatted for report inclusion"]:::main N_FormatDispositionCodeInformation_Node3 -- Yes --> N_FormatDispositionCodeInformation_Node3_action N_FormatDispositionCodeInformation_Node3_action --> E_FormatDispositionCodeInformation N_FormatDispositionCodeInformation_Node2 -- No --> N_FormatDispositionCodeInformation_Node3 N_FormatDispositionCodeInformation_Node3 -- No --> E_FormatDispositionCodeInformation
File: GCX016E.cbl
GIVEN: An export notification message with cargo details and disposition code information from X4 segment
WHEN: The system formats disposition code information for the export message
THEN: The system includes formatted disposition code, entry numbers, and related processing information in the export notification
File: GCX016E.cbl
GIVEN: A disposition code exists for processing
WHEN: Disposition code information formatting is performed
THEN: Disposition code details are formatted for the report
File: GCX016E.cbl
GIVEN: A disposition code exists for the cargo
WHEN: The system processes disposition code data for Merlin reporting
THEN: The disposition code information is formatted for report inclusion
File: GCX016E.cbl
GIVEN: A disposition code exists for the cargo
WHEN: The disposition code information formatting is processed
THEN:
  • The disposition code
  • Its description are retrieved
  • Formatted for report inclusion
βœ“ Consolidated Acceptance Criteria
  • The system adds release quantity information to the export message → the system includes release quantities and quantity impact details in the export 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_AddReleaseQuantityInformation(["Start Step"]) E_AddReleaseQuantityInformation(["End Step"]) N_AddReleaseQuantityInformation_Node0{"The system adds release quantity
information to the export message"}:::decision N_AddReleaseQuantityInformation_Node0_action["The system includes release
quantities and quantity impact
details in the export notification"]:::main N_AddReleaseQuantityInformation_Node0 -- Yes --> N_AddReleaseQuantityInformation_Node0_action N_AddReleaseQuantityInformation_Node0_action --> E_AddReleaseQuantityInformation S_AddReleaseQuantityInformation --> N_AddReleaseQuantityInformation_Node0 N_AddReleaseQuantityInformation_Node0 -- No --> E_AddReleaseQuantityInformation
File: GCX016E.cbl
GIVEN: An export notification message with disposition code information and cargo with release quantity data
WHEN: The system adds release quantity information to the export message
THEN:
  • The system includes release quantities
  • Quantity impact details in the export notification
βœ“ Consolidated Acceptance Criteria
  • The system creates the Merlin export message → the system generates a complete Merlin export message with proper formatting 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_CreateMerlinExportMessage(["Start Step"]) E_CreateMerlinExportMessage(["End Step"]) N_CreateMerlinExportMessage_Node0{"The system creates the Merlin
export message"}:::decision N_CreateMerlinExportMessage_Node0_action["The system generates a complete
Merlin export message with proper
formatting and routing information"]:::main N_CreateMerlinExportMessage_Node0 -- Yes --> N_CreateMerlinExportMessage_Node0_action N_CreateMerlinExportMessage_Node0_action --> E_CreateMerlinExportMessage S_CreateMerlinExportMessage --> N_CreateMerlinExportMessage_Node0 N_CreateMerlinExportMessage_Node0 -- No --> E_CreateMerlinExportMessage
File: GCX016E.cbl
GIVEN: A complete export notification with all formatted information including equipment, cargo, disposition, and quantity details
WHEN: The system creates the Merlin export message
THEN:
  • The system generates a complete merlin export message with proper formatting
  • Routing information
βœ“ Consolidated Acceptance Criteria
  • The system determines export message recipients → the system routes the export notification to appropriate recipients based on equipment type 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_RoutetoExportMessageRecipients(["Start Step"]) E_RoutetoExportMessageRecipients(["End Step"]) N_RoutetoExportMessageRecipients_Node0{"The system determines export
message recipients"}:::decision N_RoutetoExportMessageRecipients_Node0_action["The system routes the export
notification to appropriate
recipients based on equipment type
and routing rules"]:::main N_RoutetoExportMessageRecipients_Node0 -- Yes --> N_RoutetoExportMessageRecipients_Node0_action N_RoutetoExportMessageRecipients_Node0_action --> E_RoutetoExportMessageRecipients S_RoutetoExportMessageRecipients --> N_RoutetoExportMessageRecipients_Node0 N_RoutetoExportMessageRecipients_Node0 -- No --> E_RoutetoExportMessageRecipients
File: GCX016E.cbl
GIVEN: A complete Merlin export message and equipment type information
WHEN: The system determines export message recipients
THEN:
  • The system routes the export notification to appropriate recipients based on equipment type
  • Routing rules
βœ“ Consolidated Acceptance Criteria
  • The system checks delivery status → the system determines if the export notification was successfully delivered to all recipients
  • The system checks delivery status → the delivery is confirmed as successful or failed
  • The system checks the delivery status → if the delivery response indicates success, the process continues to success logging, otherwise it proceeds to retry logic
  • The delivery attempt is completed → the system determines if the delivery 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_DeliverySuccessful(["Start Step"]) E_DeliverySuccessful(["End Step"]) N_DeliverySuccessful_Node0{"The system checks delivery status"}:::decision N_DeliverySuccessful_Node0_action["The system determines if the export
notification was successfully
delivered to all recipients"]:::main N_DeliverySuccessful_Node0 -- Yes --> N_DeliverySuccessful_Node0_action N_DeliverySuccessful_Node0_action --> E_DeliverySuccessful S_DeliverySuccessful --> N_DeliverySuccessful_Node0 N_DeliverySuccessful_Node1{"The system checks delivery status"}:::decision N_DeliverySuccessful_Node1_action["The delivery is confirmed as
successful or failed"]:::main N_DeliverySuccessful_Node1 -- Yes --> N_DeliverySuccessful_Node1_action N_DeliverySuccessful_Node1_action --> E_DeliverySuccessful N_DeliverySuccessful_Node0 -- No --> N_DeliverySuccessful_Node1 N_DeliverySuccessful_Node2{"The system checks the delivery
status"}:::decision N_DeliverySuccessful_Node2_action["If the delivery response indicates
success, the process continues to
success logging, otherwise it
proceeds to retry logic"]:::main N_DeliverySuccessful_Node2 -- Yes --> N_DeliverySuccessful_Node2_action N_DeliverySuccessful_Node2_action --> E_DeliverySuccessful N_DeliverySuccessful_Node1 -- No --> N_DeliverySuccessful_Node2 N_DeliverySuccessful_Node3{"The delivery attempt is completed"}:::decision N_DeliverySuccessful_Node3_action["The system determines if the
delivery was successful or failed"]:::main N_DeliverySuccessful_Node3 -- Yes --> N_DeliverySuccessful_Node3_action N_DeliverySuccessful_Node3_action --> E_DeliverySuccessful N_DeliverySuccessful_Node2 -- No --> N_DeliverySuccessful_Node3 N_DeliverySuccessful_Node3 -- No --> E_DeliverySuccessful
File: GCX016E.cbl
GIVEN: An export notification that has been sent to recipients
WHEN: The system checks delivery status
THEN: The system determines if the export notification was successfully delivered to all recipients
File: GCX016E.cbl
GIVEN: A message delivery attempt has been made
WHEN: The system checks delivery status
THEN: The delivery is confirmed as successful or failed
File: GCX016E.cbl
GIVEN: An email delivery attempt has been made
WHEN: The system checks the delivery status
THEN: If the delivery response indicates success, the process continues to success logging, otherwise it proceeds to retry logic
File: GCX016E.cbl
GIVEN: A Merlin message has been routed to a recipient (either original or default)
WHEN: The delivery attempt is completed
THEN: The system determines if the delivery was successful or failed
βœ“ Consolidated Acceptance Criteria
  • The system logs the successful delivery → the system records export notification delivery success with timestamp and recipient 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_LogExportNotificationSent(["Start Step"]) E_LogExportNotificationSent(["End Step"]) N_LogExportNotificationSent_Node0{"The system logs the successful
delivery"}:::decision N_LogExportNotificationSent_Node0_action["The system records export
notification delivery success with
timestamp and recipient information"]:::main N_LogExportNotificationSent_Node0 -- Yes --> N_LogExportNotificationSent_Node0_action N_LogExportNotificationSent_Node0_action --> E_LogExportNotificationSent S_LogExportNotificationSent --> N_LogExportNotificationSent_Node0 N_LogExportNotificationSent_Node0 -- No --> E_LogExportNotificationSent
File: GCX016E.cbl
GIVEN: An export notification that was successfully delivered to all recipients
WHEN: The system logs the successful delivery
THEN:
  • The system records export notification delivery success with timestamp
  • Recipient information
βœ“ Consolidated Acceptance Criteria
  • The system handles the delivery failure → the system initiates failure handling procedures and prepares for alternative delivery methods
  • The delivery fails for any reason → the system should handle the delivery failure and determine if retry is required
  • The delivery failure is detected → the system initiates delivery failure 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_HandleDeliveryFailure(["Start Step"]) E_HandleDeliveryFailure(["End Step"]) N_HandleDeliveryFailure_Node0{"The system handles the delivery
failure"}:::decision N_HandleDeliveryFailure_Node0_action["The system initiates failure
handling procedures and prepares for
alternative delivery methods"]:::main N_HandleDeliveryFailure_Node0 -- Yes --> N_HandleDeliveryFailure_Node0_action N_HandleDeliveryFailure_Node0_action --> E_HandleDeliveryFailure S_HandleDeliveryFailure --> N_HandleDeliveryFailure_Node0 N_HandleDeliveryFailure_Node1{"The delivery fails for any reason"}:::decision N_HandleDeliveryFailure_Node1_action["The system should handle the
delivery failure and determine if
retry is required"]:::main N_HandleDeliveryFailure_Node1 -- Yes --> N_HandleDeliveryFailure_Node1_action N_HandleDeliveryFailure_Node1_action --> E_HandleDeliveryFailure N_HandleDeliveryFailure_Node0 -- No --> N_HandleDeliveryFailure_Node1 N_HandleDeliveryFailure_Node2{"The delivery failure is detected"}:::decision N_HandleDeliveryFailure_Node2_action["The system initiates delivery
failure handling procedures"]:::main N_HandleDeliveryFailure_Node2 -- Yes --> N_HandleDeliveryFailure_Node2_action N_HandleDeliveryFailure_Node2_action --> E_HandleDeliveryFailure N_HandleDeliveryFailure_Node1 -- No --> N_HandleDeliveryFailure_Node2 N_HandleDeliveryFailure_Node2 -- No --> E_HandleDeliveryFailure
File: GCX016E.cbl
GIVEN: An export notification that failed delivery to one or more recipients
WHEN: The system handles the delivery failure
THEN:
  • The system initiates failure handling procedures
  • Prepares for alternative delivery methods
File: GCX016E.cbl
GIVEN: A message distribution has been attempted
WHEN: The delivery fails for any reason
THEN:
  • The system should handle the delivery failure
  • Determine if retry is required
File: GCX016E.cbl
GIVEN: A Merlin message delivery attempt has failed
WHEN: The delivery failure is detected
THEN: The system initiates delivery failure handling procedures
βœ“ Consolidated Acceptance Criteria
  • The system reroutes to default recipients → the system sends the export notification to default recipients (OM01247 and backup recipients) as fallback 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_ReroutetoDefaultRecipients(["Start Step"]) E_ReroutetoDefaultRecipients(["End Step"]) N_ReroutetoDefaultRecipients_Node0{"The system reroutes to default
recipients"}:::decision N_ReroutetoDefaultRecipients_Node0_action["The system sends the export
notification to default recipients
OM01247 and backup recipients as
fallback delivery"]:::main N_ReroutetoDefaultRecipients_Node0 -- Yes --> N_ReroutetoDefaultRecipients_Node0_action N_ReroutetoDefaultRecipients_Node0_action --> E_ReroutetoDefaultRecipients S_ReroutetoDefaultRecipients --> N_ReroutetoDefaultRecipients_Node0 N_ReroutetoDefaultRecipients_Node0 -- No --> E_ReroutetoDefaultRecipients
File: GCX016E.cbl
GIVEN: An export notification with delivery failure and default recipient configuration
WHEN: The system reroutes to default recipients
THEN:
  • The system sends the export notification to default recipients (om01247
  • Backup recipients) as fallback delivery
βœ“ Consolidated Acceptance Criteria
  • The system processes the disposition code → the system identifies if it is POD (Proof of Delivery), AAD (Actual Arrival Date), or other arrival-related codes and proceeds with arrival processing
  • The disposition code indicates an arrival condition → set the arrival 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_ArrivalDispositionCode(["Start Step"]) E_ArrivalDispositionCode(["End Step"]) N_ArrivalDispositionCode_Node0{"The system processes the
disposition code"}:::decision N_ArrivalDispositionCode_Node0_action["The system identifies if it is POD
Proof of Delivery, AAD Actual
Arrival Date, or other
arrival-related codes and proceeds
with arrival processing"]:::main N_ArrivalDispositionCode_Node0 -- Yes --> N_ArrivalDispositionCode_Node0_action N_ArrivalDispositionCode_Node0_action --> E_ArrivalDispositionCode S_ArrivalDispositionCode --> N_ArrivalDispositionCode_Node0 N_ArrivalDispositionCode_Node1{"The disposition code indicates an
arrival condition"}:::decision N_ArrivalDispositionCode_Node1_action["Set the arrival status flag to true"]:::main N_ArrivalDispositionCode_Node1 -- Yes --> N_ArrivalDispositionCode_Node1_action N_ArrivalDispositionCode_Node1_action --> E_ArrivalDispositionCode N_ArrivalDispositionCode_Node0 -- No --> N_ArrivalDispositionCode_Node1 N_ArrivalDispositionCode_Node1 -- No --> E_ArrivalDispositionCode
File: GCX016E.cbl
GIVEN: A cargo has a disposition code in the message
WHEN: The system processes the disposition code
THEN:
  • The system identifies if it is pod (proof of delivery), aad (actual arrival date), or other arrival-related codes
  • Proceeds with arrival processing
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated
WHEN: The disposition code indicates an arrival condition
THEN: Set the arrival status flag to true
βœ“ Consolidated Acceptance Criteria
  • The system checks for related cargo records → the system identifies if there are multiple cargo records with the same car ID and waybill that require coordinated processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckMultiCargoRecords(["Start Step"]) E_CheckMultiCargoRecords(["End Step"]) N_CheckMultiCargoRecords_Node0{"The system checks for related cargo
records"}:::decision N_CheckMultiCargoRecords_Node0_action["The system identifies if there are
multiple cargo records with the same
car ID and waybill that require
coordinated processing"]:::main N_CheckMultiCargoRecords_Node0 -- Yes --> N_CheckMultiCargoRecords_Node0_action N_CheckMultiCargoRecords_Node0_action --> E_CheckMultiCargoRecords S_CheckMultiCargoRecords --> N_CheckMultiCargoRecords_Node0 N_CheckMultiCargoRecords_Node0 -- No --> E_CheckMultiCargoRecords
File: GCX016E.cbl
GIVEN: A cargo arrival is being processed
WHEN: The system checks for related cargo records
THEN:
  • The system identifies if there are multiple cargo records with the same car id
  • Waybill that require coordinated processing
βœ“ Consolidated Acceptance Criteria
  • The system compares car ID and waybill information → the system identifies records with matching car ID and waybill numbers that require coordinated 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_SameCarWaybillRecords(["Start Step"]) E_SameCarWaybillRecords(["End Step"]) N_SameCarWaybillRecords_Node0{"The system compares car ID and
waybill information"}:::decision N_SameCarWaybillRecords_Node0_action["The system identifies records with
matching car ID and waybill numbers
that require coordinated arrival
processing"]:::main N_SameCarWaybillRecords_Node0 -- Yes --> N_SameCarWaybillRecords_Node0_action N_SameCarWaybillRecords_Node0_action --> E_SameCarWaybillRecords S_SameCarWaybillRecords --> N_SameCarWaybillRecords_Node0 N_SameCarWaybillRecords_Node0 -- No --> E_SameCarWaybillRecords
File: GCX016E.cbl
GIVEN: Multiple cargo records exist in the system
WHEN:
  • The system compares car id
  • Waybill information
THEN:
  • The system identifies records with matching car id
  • Waybill numbers that require coordinated arrival processing
βœ“ Consolidated Acceptance Criteria
  • An arrival event is processed for one record → the system processes arrival status for all related records with the same car ID 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_ProcessAllRelatedRecords(["Start Step"]) E_ProcessAllRelatedRecords(["End Step"]) N_ProcessAllRelatedRecords_Node0{"An arrival event is processed for
one record"}:::decision N_ProcessAllRelatedRecords_Node0_action["The system processes arrival status
for all related records with the
same car ID and waybill"]:::main N_ProcessAllRelatedRecords_Node0 -- Yes --> N_ProcessAllRelatedRecords_Node0_action N_ProcessAllRelatedRecords_Node0_action --> E_ProcessAllRelatedRecords S_ProcessAllRelatedRecords --> N_ProcessAllRelatedRecords_Node0 N_ProcessAllRelatedRecords_Node0 -- No --> E_ProcessAllRelatedRecords
File: GCX016E.cbl
GIVEN: Multiple cargo records share the same car ID and waybill
WHEN: An arrival event is processed for one record
THEN:
  • The system processes arrival status for all related records with the same car id
  • Waybill
βœ“ Consolidated Acceptance Criteria
  • The system verifies arrival status consistency → the system ensures all related records have consistent arrival status and flags any discrepancies
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_VerifyArrivalStatusAcrossRecords(["Start Step"]) E_VerifyArrivalStatusAcrossRecords(["End Step"]) N_VerifyArrivalStatusAcrossRecords_Node0{"The system verifies arrival status
consistency"}:::decision N_VerifyArrivalStatusAcrossRecords_Node0_action["The system ensures all related
records have consistent arrival
status and flags any discrepancies"]:::main N_VerifyArrivalStatusAcrossRecords_Node0 -- Yes --> N_VerifyArrivalStatusAcrossRecords_Node0_action N_VerifyArrivalStatusAcrossRecords_Node0_action --> E_VerifyArrivalStatusAcrossRecords S_VerifyArrivalStatusAcrossRecords --> N_VerifyArrivalStatusAcrossRecords_Node0 N_VerifyArrivalStatusAcrossRecords_Node0 -- No --> E_VerifyArrivalStatusAcrossRecords
File: GCX016E.cbl
GIVEN: Multiple related cargo records have been processed for arrival
WHEN: The system verifies arrival status consistency
THEN:
  • The system ensures all related records have consistent arrival status
  • Flags any discrepancies
βœ“ Consolidated Acceptance Criteria
  • The system creates arrival notification → the system generates a structured arrival notification message with all relevant cargo and arrival details
  • The system creates business notifications → create a detailed arrival notification message containing train 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_CreateArrivalNotificationMessage(["Start Step"]) E_CreateArrivalNotificationMessage(["End Step"]) N_CreateArrivalNotificationMessage_Node0{"The system creates arrival
notification"}:::decision N_CreateArrivalNotificationMessage_Node0_action["The system generates a structured
arrival notification message with
all relevant cargo and arrival
details"]:::main N_CreateArrivalNotificationMessage_Node0 -- Yes --> N_CreateArrivalNotificationMessage_Node0_action N_CreateArrivalNotificationMessage_Node0_action --> E_CreateArrivalNotificationMessage S_CreateArrivalNotificationMessage --> N_CreateArrivalNotificationMessage_Node0 N_CreateArrivalNotificationMessage_Node1{"The system creates business
notifications"}:::decision N_CreateArrivalNotificationMessage_Node1_action["Create a detailed arrival
notification message containing
train and cargo details"]:::main N_CreateArrivalNotificationMessage_Node1 -- Yes --> N_CreateArrivalNotificationMessage_Node1_action N_CreateArrivalNotificationMessage_Node1_action --> E_CreateArrivalNotificationMessage N_CreateArrivalNotificationMessage_Node0 -- No --> N_CreateArrivalNotificationMessage_Node1 N_CreateArrivalNotificationMessage_Node1 -- No --> E_CreateArrivalNotificationMessage
File: GCX016E.cbl
GIVEN: A cargo has successfully arrived and all validations are complete
WHEN: The system creates arrival notification
THEN:
  • The system generates a structured arrival notification message with all relevant cargo
  • Arrival details
File: GCX016E.cbl
GIVEN: AEI notification has been sent
WHEN: The system creates business notifications
THEN:
  • Create a detailed arrival notification message containing train
  • Cargo details
βœ“ Consolidated Acceptance Criteria
  • The system formats arrival details → the system formats cargo identification, arrival date/time, and status information into the standard notification 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_FormatArrivalDetails(["Start Step"]) E_FormatArrivalDetails(["End Step"]) N_FormatArrivalDetails_Node0{"The system formats arrival details"}:::decision N_FormatArrivalDetails_Node0_action["The system formats cargo
identification, arrival datetime,
and status information into the
standard notification format"]:::main N_FormatArrivalDetails_Node0 -- Yes --> N_FormatArrivalDetails_Node0_action N_FormatArrivalDetails_Node0_action --> E_FormatArrivalDetails S_FormatArrivalDetails --> N_FormatArrivalDetails_Node0 N_FormatArrivalDetails_Node0 -- No --> E_FormatArrivalDetails
File: GCX016E.cbl
GIVEN: An arrival notification message is being created
WHEN: The system formats arrival details
THEN: The system formats cargo identification, arrival date/time, and status information into the standard notification format
βœ“ Consolidated Acceptance Criteria
  • The system includes equipment information → the system adds car ID, equipment type, and equipment identification details to the notification message
  • The system processes equipment data for the email → the system includes equipment type, identification, and related details in the email content
  • Formatting debug message content → the system includes equipment information such as car ID and equipment details in the debug output
  • The system includes equipment information → the system adds equipment details from cargo data (GCSUSRT) including car ID, equipment type, equipment number, and container information to the hold notification
  • The system processes equipment information → the message includes car ID, equipment type, and other relevant equipment details
  • The system processes equipment information for inclusion in the email → the system adds equipment details including car ID, equipment type, and related information to the email 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_IncludeEquipmentInformation(["Start Step"]) E_IncludeEquipmentInformation(["End Step"]) N_IncludeEquipmentInformation_Node0{"The system includes equipment
information"}:::decision N_IncludeEquipmentInformation_Node0_action["The system adds car ID, equipment
type, and equipment identification
details to the notification message"]:::main N_IncludeEquipmentInformation_Node0 -- Yes --> N_IncludeEquipmentInformation_Node0_action N_IncludeEquipmentInformation_Node0_action --> E_IncludeEquipmentInformation S_IncludeEquipmentInformation --> N_IncludeEquipmentInformation_Node0 N_IncludeEquipmentInformation_Node1{"The system processes equipment data
for the email"}:::decision N_IncludeEquipmentInformation_Node1_action["The system includes equipment type,
identification, and related details
in the email content"]:::main N_IncludeEquipmentInformation_Node1 -- Yes --> N_IncludeEquipmentInformation_Node1_action N_IncludeEquipmentInformation_Node1_action --> E_IncludeEquipmentInformation N_IncludeEquipmentInformation_Node0 -- No --> N_IncludeEquipmentInformation_Node1 N_IncludeEquipmentInformation_Node2{"Formatting debug message content"}:::decision N_IncludeEquipmentInformation_Node2_action["The system includes equipment
information such as car ID and
equipment details in the debug
output"]:::main N_IncludeEquipmentInformation_Node2 -- Yes --> N_IncludeEquipmentInformation_Node2_action N_IncludeEquipmentInformation_Node2_action --> E_IncludeEquipmentInformation N_IncludeEquipmentInformation_Node1 -- No --> N_IncludeEquipmentInformation_Node2 N_IncludeEquipmentInformation_Node3{"The system includes equipment
information"}:::decision N_IncludeEquipmentInformation_Node3_action["The system adds equipment details
from cargo data GCSUSRT including
car ID, equipment type, equipment
number, and container information to
the hold notification"]:::main N_IncludeEquipmentInformation_Node3 -- Yes --> N_IncludeEquipmentInformation_Node3_action N_IncludeEquipmentInformation_Node3_action --> E_IncludeEquipmentInformation N_IncludeEquipmentInformation_Node2 -- No --> N_IncludeEquipmentInformation_Node3 N_IncludeEquipmentInformation_Node4{"The system processes equipment
information"}:::decision N_IncludeEquipmentInformation_Node4_action["The message includes car ID,
equipment type, and other relevant
equipment details"]:::main N_IncludeEquipmentInformation_Node4 -- Yes --> N_IncludeEquipmentInformation_Node4_action N_IncludeEquipmentInformation_Node4_action --> E_IncludeEquipmentInformation N_IncludeEquipmentInformation_Node3 -- No --> N_IncludeEquipmentInformation_Node4 N_IncludeEquipmentInformation_Node5{"The system processes equipment
information for inclusion in the
email"}:::decision N_IncludeEquipmentInformation_Node5_action["The system adds equipment details
including car ID, equipment type,
and related information to the email
content"]:::main N_IncludeEquipmentInformation_Node5 -- Yes --> N_IncludeEquipmentInformation_Node5_action N_IncludeEquipmentInformation_Node5_action --> E_IncludeEquipmentInformation N_IncludeEquipmentInformation_Node4 -- No --> N_IncludeEquipmentInformation_Node5 N_IncludeEquipmentInformation_Node5 -- No --> E_IncludeEquipmentInformation
File: GCX016E.cbl
GIVEN: An arrival notification is being formatted
WHEN: The system includes equipment information
THEN: The system adds car ID, equipment type, and equipment identification details to the notification message
File: GCX016E.cbl
GIVEN: Email content building has started for CIH notification
WHEN: The system processes equipment data for the email
THEN: The system includes equipment type, identification, and related details in the email content
File: GCX016E.cbl
GIVEN: Equipment information is available for the cargo
WHEN: Formatting debug message content
THEN:
  • The system includes equipment information such as car id
  • Equipment details in the debug output
File: GCX016E.cbl
GIVEN: Hold details have been formatted for a cargo notification
WHEN: The system includes equipment information
THEN: The system adds equipment details from cargo data (GCSUSRT) including car ID, equipment type, equipment number, and container information to the hold notification
File: GCX016E.cbl
GIVEN: A cancellation message is being formatted
WHEN: The system processes equipment information
THEN: The message includes car ID, equipment type, and other relevant equipment details
File: GCX016E.cbl
GIVEN: Email content building has been initiated
WHEN: The system processes equipment information for inclusion in the email
THEN: The system adds equipment details including car ID, equipment type, and related information to the email content
βœ“ Consolidated Acceptance Criteria
  • The system includes location information → the system adds arrival location, destination details, and routing information to 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_IncludeLocationInformation(["Start Step"]) E_IncludeLocationInformation(["End Step"]) N_IncludeLocationInformation_Node0{"The system includes location
information"}:::decision N_IncludeLocationInformation_Node0_action["The system adds arrival location,
destination details, and routing
information to the notification
message"]:::main N_IncludeLocationInformation_Node0 -- Yes --> N_IncludeLocationInformation_Node0_action N_IncludeLocationInformation_Node0_action --> E_IncludeLocationInformation S_IncludeLocationInformation --> N_IncludeLocationInformation_Node0 N_IncludeLocationInformation_Node0 -- No --> E_IncludeLocationInformation
File: GCX016E.cbl
GIVEN: An arrival notification is being formatted
WHEN: The system includes location information
THEN: The system adds arrival location, destination details, and routing information to the notification message
βœ“ Consolidated Acceptance Criteria
  • The system includes date/time information → the system adds arrival date, arrival time, and processing timestamp to the notification message
  • The system processes date and time information → the message includes transaction date, time, and other relevant temporal 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_IncludeDateTimeInformation(["Start Step"]) E_IncludeDateTimeInformation(["End Step"]) N_IncludeDateTimeInformation_Node0{"The system includes datetime
information"}:::decision N_IncludeDateTimeInformation_Node0_action["The system adds arrival date,
arrival time, and processing
timestamp to the notification
message"]:::main N_IncludeDateTimeInformation_Node0 -- Yes --> N_IncludeDateTimeInformation_Node0_action N_IncludeDateTimeInformation_Node0_action --> E_IncludeDateTimeInformation S_IncludeDateTimeInformation --> N_IncludeDateTimeInformation_Node0 N_IncludeDateTimeInformation_Node1{"The system processes date and time
information"}:::decision N_IncludeDateTimeInformation_Node1_action["The message includes transaction
date, time, and other relevant
temporal information"]:::main N_IncludeDateTimeInformation_Node1 -- Yes --> N_IncludeDateTimeInformation_Node1_action N_IncludeDateTimeInformation_Node1_action --> E_IncludeDateTimeInformation N_IncludeDateTimeInformation_Node0 -- No --> N_IncludeDateTimeInformation_Node1 N_IncludeDateTimeInformation_Node1 -- No --> E_IncludeDateTimeInformation
File: GCX016E.cbl
GIVEN: An arrival notification is being formatted
WHEN: The system includes date/time information
THEN: The system adds arrival date, arrival time, and processing timestamp to the notification message
File: GCX016E.cbl
GIVEN: Disposition code details are included in the cancellation message
WHEN:
  • The system processes date
  • Time information
THEN: The message includes transaction date, time, and other relevant temporal information
βœ“ Consolidated Acceptance Criteria
  • The system routes the message for distribution → the system sends the notification to the Merlin messaging system for distribution 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_RoutetoMerlinDistribution(["Start Step"]) E_RoutetoMerlinDistribution(["End Step"]) N_RoutetoMerlinDistribution_Node0{"The system routes the message for
distribution"}:::decision N_RoutetoMerlinDistribution_Node0_action["The system sends the notification
to the Merlin messaging system for
distribution to appropriate
recipients"]:::main N_RoutetoMerlinDistribution_Node0 -- Yes --> N_RoutetoMerlinDistribution_Node0_action N_RoutetoMerlinDistribution_Node0_action --> E_RoutetoMerlinDistribution S_RoutetoMerlinDistribution --> N_RoutetoMerlinDistribution_Node0 N_RoutetoMerlinDistribution_Node0 -- No --> E_RoutetoMerlinDistribution
File: GCX016E.cbl
GIVEN: An arrival notification message is complete and formatted
WHEN: The system routes the message for distribution
THEN: The system sends the notification to the Merlin messaging system for distribution to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system routes the message → the system sends the message to the ARRCANL basket for specialized arrival 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_SendtoARRCANLBasket(["Start Step"]) E_SendtoARRCANLBasket(["End Step"]) N_SendtoARRCANLBasket_Node0{"The system routes the message"}:::decision N_SendtoARRCANLBasket_Node0_action["The system sends the message to the
ARRCANL basket for specialized
arrival cancellation processing"]:::main N_SendtoARRCANLBasket_Node0 -- Yes --> N_SendtoARRCANLBasket_Node0_action N_SendtoARRCANLBasket_Node0_action --> E_SendtoARRCANLBasket S_SendtoARRCANLBasket --> N_SendtoARRCANLBasket_Node0 N_SendtoARRCANLBasket_Node0 -- No --> E_SendtoARRCANLBasket
File: GCX016E.cbl
GIVEN: An arrival notification is classified as ARRCANL message type
WHEN: The system routes the message
THEN: The system sends the message to the ARRCANL basket for specialized arrival cancellation processing
βœ“ Consolidated Acceptance Criteria
  • The system routes the message → the system sends the message to default recipients configured for standard arrival notifications
  • The system sends to default recipient → the email is delivered to the default recipient (OM01247) with notification that original delivery 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_SendtoDefaultRecipient(["Start Step"]) E_SendtoDefaultRecipient(["End Step"]) N_SendtoDefaultRecipient_Node0{"The system routes the message"}:::decision N_SendtoDefaultRecipient_Node0_action["The system sends the message to
default recipients configured for
standard arrival notifications"]:::main N_SendtoDefaultRecipient_Node0 -- Yes --> N_SendtoDefaultRecipient_Node0_action N_SendtoDefaultRecipient_Node0_action --> E_SendtoDefaultRecipient S_SendtoDefaultRecipient --> N_SendtoDefaultRecipient_Node0 N_SendtoDefaultRecipient_Node1{"The system sends to default
recipient"}:::decision N_SendtoDefaultRecipient_Node1_action["The email is delivered to the
default recipient OM01247 with
notification that original delivery
failed"]:::main N_SendtoDefaultRecipient_Node1 -- Yes --> N_SendtoDefaultRecipient_Node1_action N_SendtoDefaultRecipient_Node1_action --> E_SendtoDefaultRecipient N_SendtoDefaultRecipient_Node0 -- No --> N_SendtoDefaultRecipient_Node1 N_SendtoDefaultRecipient_Node1 -- No --> E_SendtoDefaultRecipient
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An arrival notification is not classified as ARRCANL message type
WHEN: The system routes the message
THEN: The system sends the message to default recipients configured for standard arrival notifications
File: GCX016E.cbl
GIVEN: Alternative recipients are available for fallback delivery
WHEN: The system sends to default recipient
THEN: The email is delivered to the default recipient (OM01247) with notification that original delivery failed
βœ“ Consolidated Acceptance Criteria
  • The system checks cargo characteristics to determine if it is a foreign bill → the system should identify foreign bill status and route 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_CheckifForeignBill(["Start Step"]) E_CheckifForeignBill(["End Step"]) N_CheckifForeignBill_Node0{"the system checks cargo
characteristics to determine if it
is a foreign bill"}:::decision N_CheckifForeignBill_Node0_action["the system should identify foreign
bill status and route to appropriate
processing path"]:::main N_CheckifForeignBill_Node0 -- Yes --> N_CheckifForeignBill_Node0_action N_CheckifForeignBill_Node0_action --> E_CheckifForeignBill S_CheckifForeignBill --> N_CheckifForeignBill_Node0 N_CheckifForeignBill_Node0 -- No --> E_CheckifForeignBill
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: CPRS traffic is not found in the system
WHEN: the system checks cargo characteristics to determine if it is a foreign bill
THEN:
  • The system should identify foreign bill status
  • Route to appropriate processing path
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a new cargo record → the system should initialize a new cargo record structure with default values
  • The system begins creating a new cargo record → a new cargo record structure is initialized with default values and prepared for data population
  • The system begins cargo record creation → a new cargo record structure is initialized with default values and cleared fields
  • The system begins creating a new cargo record → the system should initialize all cargo record fields to appropriate default values for new CPRS cargo
  • The system needs to create a new cargo record → a new cargo record structure is initialized with default values and prepared for data population
  • The initialization process begins → the system should clear all cargo record fields and set default values for status, dates, and counters
  • The cargo record initialization process is triggered → a new cargo record structure is created with all fields initialized to default values and ready 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 needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node0_action["the system should initialize a new
cargo record structure with default
values"]:::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 begins creating a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node1_action["A new cargo record structure is
initialized with default values and
prepared for data population"]:::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 begins cargo record
creation"}:::decision N_InitializeNewCargoRecord_Node2_action["A new cargo record structure is
initialized with default values and
cleared fields"]:::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 begins creating a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node3_action["The system should initialize all
cargo record fields to appropriate
default values for new CPRS cargo"]:::main N_InitializeNewCargoRecord_Node3 -- Yes --> N_InitializeNewCargoRecord_Node3_action N_InitializeNewCargoRecord_Node3_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node2 -- No --> N_InitializeNewCargoRecord_Node3 N_InitializeNewCargoRecord_Node4{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node4_action["A new cargo record structure is
initialized with default values and
prepared for data population"]:::main N_InitializeNewCargoRecord_Node4 -- Yes --> N_InitializeNewCargoRecord_Node4_action N_InitializeNewCargoRecord_Node4_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node3 -- No --> N_InitializeNewCargoRecord_Node4 N_InitializeNewCargoRecord_Node5{"The initialization process begins"}:::decision N_InitializeNewCargoRecord_Node5_action["The system should clear all cargo
record fields and set default values
for status, dates, and counters"]:::main N_InitializeNewCargoRecord_Node5 -- Yes --> N_InitializeNewCargoRecord_Node5_action N_InitializeNewCargoRecord_Node5_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node4 -- No --> N_InitializeNewCargoRecord_Node5 N_InitializeNewCargoRecord_Node6{"The cargo record initialization
process is triggered"}:::decision N_InitializeNewCargoRecord_Node6_action["A new cargo record structure is
created with all fields initialized
to default values and ready for data
population"]:::main N_InitializeNewCargoRecord_Node6 -- Yes --> N_InitializeNewCargoRecord_Node6_action N_InitializeNewCargoRecord_Node6_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node5 -- No --> N_InitializeNewCargoRecord_Node6 N_InitializeNewCargoRecord_Node6 -- No --> E_InitializeNewCargoRecord
File: GCX016E.cbl
GIVEN: a foreign bill has been identified for CPRS traffic
WHEN: the system needs to create a new cargo record
THEN: the system should initialize a new cargo record structure with default values
File: GCX016E.cbl
GIVEN: A new cargo insertion process is initiated
WHEN: The system begins creating a new cargo record
THEN:
  • A new cargo record structure is initialized with default values
  • Prepared for data population
File: GCX016E.cbl
GIVEN: A foreign bill requires a new cargo record
WHEN: The system begins cargo record creation
THEN:
  • A new cargo record structure is initialized with default values
  • Cleared fields
File: GCX016E.cbl
GIVEN: Car ID format has been validated for CPRS standards
WHEN: The system begins creating a new cargo record
THEN: The system should initialize all cargo record fields to appropriate default values for new CPRS cargo
File: GCX016E.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:
  • A new cargo record structure is initialized with default values
  • Prepared for data population
File: GCX016E.cbl
GIVEN: A new cargo record needs to be created for a foreign bill
WHEN: The initialization process begins
THEN:
  • The system should clear all cargo record fields
  • Set default values for status, dates, and counters
File: GCX016E.cbl
GIVEN: A new cargo record needs to be created in the system
WHEN: The cargo record initialization process is triggered
THEN:
  • A new cargo record structure is created with all fields initialized to default values
  • Ready for data population
βœ“ Consolidated Acceptance Criteria
  • The system processes X4 segment information → the system should populate cargo record fields including disposition code, entry number, quantity, and related cargo details 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_SetCargoRecordFieldsfromX4Segment(["Start Step"]) E_SetCargoRecordFieldsfromX4Segment(["End Step"]) N_SetCargoRecordFieldsfromX4Segment_Node0{"the system processes X4 segment
information"}:::decision N_SetCargoRecordFieldsfromX4Segment_Node0_action["the system should populate cargo
record fields including disposition
code, entry number, quantity, and
related cargo details from the X4
segment"]:::main N_SetCargoRecordFieldsfromX4Segment_Node0 -- Yes --> N_SetCargoRecordFieldsfromX4Segment_Node0_action N_SetCargoRecordFieldsfromX4Segment_Node0_action --> E_SetCargoRecordFieldsfromX4Segment S_SetCargoRecordFieldsfromX4Segment --> N_SetCargoRecordFieldsfromX4Segment_Node0 N_SetCargoRecordFieldsfromX4Segment_Node0 -- No --> E_SetCargoRecordFieldsfromX4Segment
File: GCX016E.cbl
GIVEN: a new cargo record has been initialized and X4 segment data is available
WHEN: the system processes X4 segment information
THEN: the system should populate cargo record fields including disposition code, entry number, quantity, and related cargo details from the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes N7 equipment information → the system should assign equipment initial, equipment number, and formatted car ID to the cargo record from 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_SetEquipmentInformationfromN7Segment(["Start Step"]) E_SetEquipmentInformationfromN7Segment(["End Step"]) N_SetEquipmentInformationfromN7Segment_Node0{"the system processes N7 equipment
information"}:::decision N_SetEquipmentInformationfromN7Segment_Node0_action["the system should assign equipment
initial, equipment number, and
formatted car ID to the cargo record
from N7 segment data"]:::main N_SetEquipmentInformationfromN7Segment_Node0 -- Yes --> N_SetEquipmentInformationfromN7Segment_Node0_action N_SetEquipmentInformationfromN7Segment_Node0_action --> E_SetEquipmentInformationfromN7Segment S_SetEquipmentInformationfromN7Segment --> N_SetEquipmentInformationfromN7Segment_Node0 N_SetEquipmentInformationfromN7Segment_Node0 -- No --> E_SetEquipmentInformationfromN7Segment
File: GCX016E.cbl
GIVEN: cargo record fields have been set from X4 segment and N7 segment data is available
WHEN: the system processes N7 equipment information
THEN: the system should assign equipment initial, equipment number, and formatted car ID to the cargo record from N7 segment data
βœ“ Consolidated Acceptance Criteria
  • The system processes M10 manifest information → the system should build foreign manifest details including vessel information, transport mode, and manifest identifiers from M10 segment data
  • The system processes the M10 segment information → the system should create a foreign manifest record with vessel name, manifest number, and related M10 segment data
  • The system processes manifest information for foreign cargo setup → foreign manifest information is extracted and prepared for cargo record population including transport and vessel 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_BuildForeignManifestfromM10Segment(["Start Step"]) E_BuildForeignManifestfromM10Segment(["End Step"]) N_BuildForeignManifestfromM10Segment_Node0{"the system processes M10 manifest
information"}:::decision N_BuildForeignManifestfromM10Segment_Node0_action["the system should build foreign
manifest details including vessel
information, transport mode, and
manifest identifiers from M10
segment data"]:::main N_BuildForeignManifestfromM10Segment_Node0 -- Yes --> N_BuildForeignManifestfromM10Segment_Node0_action N_BuildForeignManifestfromM10Segment_Node0_action --> E_BuildForeignManifestfromM10Segment S_BuildForeignManifestfromM10Segment --> N_BuildForeignManifestfromM10Segment_Node0 N_BuildForeignManifestfromM10Segment_Node1{"The system processes the M10
segment information"}:::decision N_BuildForeignManifestfromM10Segment_Node1_action["The system should create a foreign
manifest record with vessel name,
manifest number, and related M10
segment data"]:::main N_BuildForeignManifestfromM10Segment_Node1 -- Yes --> N_BuildForeignManifestfromM10Segment_Node1_action N_BuildForeignManifestfromM10Segment_Node1_action --> E_BuildForeignManifestfromM10Segment N_BuildForeignManifestfromM10Segment_Node0 -- No --> N_BuildForeignManifestfromM10Segment_Node1 N_BuildForeignManifestfromM10Segment_Node2{"The system processes manifest
information for foreign cargo setup"}:::decision N_BuildForeignManifestfromM10Segment_Node2_action["Foreign manifest information is
extracted and prepared for cargo
record population including
transport and vessel details"]:::main N_BuildForeignManifestfromM10Segment_Node2 -- Yes --> N_BuildForeignManifestfromM10Segment_Node2_action N_BuildForeignManifestfromM10Segment_Node2_action --> E_BuildForeignManifestfromM10Segment N_BuildForeignManifestfromM10Segment_Node1 -- No --> N_BuildForeignManifestfromM10Segment_Node2 N_BuildForeignManifestfromM10Segment_Node2 -- No --> E_BuildForeignManifestfromM10Segment
File: GCX016E.cbl
GIVEN: equipment information has been set and M10 segment data is available
WHEN: the system processes M10 manifest information
THEN: the system should build foreign manifest details including vessel information, transport mode, and manifest identifiers from M10 segment data
File: GCX016E.cbl
GIVEN: A new foreign cargo record is being created and M10 segment data is available
WHEN: The system processes the M10 segment information
THEN: The system should create a foreign manifest record with vessel name, manifest number, and related M10 segment data
File: GCX016E.cbl
GIVEN: An M10 segment containing manifest data is available
WHEN: The system processes manifest information for foreign cargo setup
THEN:
  • Foreign manifest information is extracted
  • Prepared for cargo record population including transport
  • Vessel details
βœ“ Consolidated Acceptance Criteria
  • The system determines carrier information → the system should assign the appropriate SCAC code to identify the carrier for the cargo record
  • The system processes carrier identification for new cargo → the appropriate SCAC code is assigned to identify the transportation carrier
  • The system sets SCAC code → sCAC code is assigned to identify the carrier responsible for 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_SetSCACCode(["Start Step"]) E_SetSCACCode(["End Step"]) N_SetSCACCode_Node0{"the system determines carrier
information"}:::decision N_SetSCACCode_Node0_action["the system should assign the
appropriate SCAC code to identify
the carrier for the cargo record"]:::main N_SetSCACCode_Node0 -- Yes --> N_SetSCACCode_Node0_action N_SetSCACCode_Node0_action --> E_SetSCACCode S_SetSCACCode --> N_SetSCACCode_Node0 N_SetSCACCode_Node1{"The system processes carrier
identification for new cargo"}:::decision N_SetSCACCode_Node1_action["The appropriate SCAC code is
assigned 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{"The system sets SCAC code"}:::decision N_SetSCACCode_Node2_action["SCAC code is assigned to identify
the carrier responsible for the
train"]:::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: GCX016E.cbl
GIVEN: foreign manifest has been built from M10 segment
WHEN: the system determines carrier information
THEN: the system should assign the appropriate SCAC code to identify the carrier for the cargo record
File: GCX016E.cbl
GIVEN: Carrier information is available from manifest or segment data
WHEN: The system processes carrier identification for new cargo
THEN: The appropriate SCAC code is assigned to identify the transportation carrier
File: GCX016E.cbl
GIVEN: Country code is set in M10 segment
WHEN: The system sets SCAC code
THEN: SCAC code is assigned to identify the carrier responsible for the train
βœ“ Consolidated Acceptance Criteria
  • If transport mode and vessel type → the system should classify and assign the appropriate transport type (rail, truck, vessel, etc.) to the cargo record
  • The system classifies the transportation type for new cargo → the transport type is set based on the transportation mode indicated in the manifest data
  • The system determines transport method for foreign cargo → transport type is assigned to the cargo record based on the mode of transportation indicated in the 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_SetTransportType(["Start Step"]) E_SetTransportType(["End Step"]) N_SetTransportType_Node0{"the system evaluates transport mode
and vessel type"}:::decision N_SetTransportType_Node0_action["the system should classify and
assign the appropriate transport
type rail, truck, vessel, etc. to
the cargo record"]:::main N_SetTransportType_Node0 -- Yes --> N_SetTransportType_Node0_action N_SetTransportType_Node0_action --> E_SetTransportType S_SetTransportType --> N_SetTransportType_Node0 N_SetTransportType_Node1{"The system classifies the
transportation type for new cargo"}:::decision N_SetTransportType_Node1_action["The transport type is set based on
the transportation mode indicated in
the manifest data"]:::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{"The system determines transport
method for foreign cargo"}:::decision N_SetTransportType_Node2_action["Transport type is assigned to the
cargo record based on the mode of
transportation indicated in the
manifest"]:::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: GCX016E.cbl
GIVEN: SCAC code has been assigned and transport characteristics are available
WHEN:
  • The system evaluates transport mode
  • Vessel type
THEN:
  • The system should classify
  • Assign the appropriate transport type (rail, truck, vessel, etc.) to the cargo record
File: GCX016E.cbl
GIVEN: Transportation mode information is available from manifest segments
WHEN: The system classifies the transportation type for new cargo
THEN: The transport type is set based on the transportation mode indicated in the manifest data
File: GCX016E.cbl
GIVEN: Manifest information has been processed from M10 segment
WHEN: The system determines transport method for foreign cargo
THEN: Transport type is assigned to the cargo record based on the mode of transportation indicated in the manifest
βœ“ Consolidated Acceptance Criteria
  • The system determines country information from cargo routing → the system should assign the appropriate country code for origin or destination to the cargo record
  • The system processes country classification for new cargo → the appropriate country code is assigned based on origin, destination, or routing country information
  • The system determines country of origin → country code is assigned to the cargo record to identify the foreign origin country
  • The system sets country code → country code is assigned to identify train's operational 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_SetCountryCode(["Start Step"]) E_SetCountryCode(["End Step"]) N_SetCountryCode_Node0{"the system determines country
information from cargo routing"}:::decision N_SetCountryCode_Node0_action["the system should assign the
appropriate country code for origin
or destination to the cargo record"]:::main N_SetCountryCode_Node0 -- Yes --> N_SetCountryCode_Node0_action N_SetCountryCode_Node0_action --> E_SetCountryCode S_SetCountryCode --> N_SetCountryCode_Node0 N_SetCountryCode_Node1{"The system processes country
classification for new cargo"}:::decision N_SetCountryCode_Node1_action["The appropriate country code is
assigned based on origin,
destination, or routing country
information"]:::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{"The system determines country of
origin"}:::decision N_SetCountryCode_Node2_action["Country code is assigned to the
cargo record to identify the foreign
origin country"]:::main N_SetCountryCode_Node2 -- Yes --> N_SetCountryCode_Node2_action N_SetCountryCode_Node2_action --> E_SetCountryCode N_SetCountryCode_Node1 -- No --> N_SetCountryCode_Node2 N_SetCountryCode_Node3{"The system sets country code"}:::decision N_SetCountryCode_Node3_action["Country code is assigned to
identify train s operational country"]:::main N_SetCountryCode_Node3 -- Yes --> N_SetCountryCode_Node3_action N_SetCountryCode_Node3_action --> E_SetCountryCode N_SetCountryCode_Node2 -- No --> N_SetCountryCode_Node3 N_SetCountryCode_Node3 -- No --> E_SetCountryCode
File: GCX016E.cbl
GIVEN: transport type has been set and routing information is available
WHEN: the system determines country information from cargo routing
THEN: the system should assign the appropriate country code for origin or destination to the cargo record
File: GCX016E.cbl
GIVEN: Country information is available from manifest or routing data
WHEN: The system processes country classification for new cargo
THEN: The appropriate country code is assigned based on origin, destination, or routing country information
File: GCX016E.cbl
GIVEN: Foreign cargo manifest information is being processed
WHEN: The system determines country of origin
THEN: Country code is assigned to the cargo record to identify the foreign origin country
File: GCX016E.cbl
GIVEN: Transport method code is set in M10 segment
WHEN: The system sets country code
THEN: Country code is assigned to identify train's operational country
βœ“ Consolidated Acceptance Criteria
  • The system processes vessel-specific data → the system should configure vessel details including vessel name, voyage number, and related transport information in the cargo record
  • The system processes vessel details for new cargo → vessel name, voyage number, and related vessel transportation details 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_SetVesselDetails(["Start Step"]) E_SetVesselDetails(["End Step"]) N_SetVesselDetails_Node0{"the system processes
vessel-specific data"}:::decision N_SetVesselDetails_Node0_action["the system should configure vessel
details including vessel name,
voyage number, and related transport
information in the cargo record"]:::main N_SetVesselDetails_Node0 -- Yes --> N_SetVesselDetails_Node0_action N_SetVesselDetails_Node0_action --> E_SetVesselDetails S_SetVesselDetails --> N_SetVesselDetails_Node0 N_SetVesselDetails_Node1{"The system processes vessel details
for new cargo"}:::decision N_SetVesselDetails_Node1_action["Vessel name, voyage number, and
related vessel transportation
details are populated in the cargo
record"]:::main N_SetVesselDetails_Node1 -- Yes --> N_SetVesselDetails_Node1_action N_SetVesselDetails_Node1_action --> E_SetVesselDetails N_SetVesselDetails_Node0 -- No --> N_SetVesselDetails_Node1 N_SetVesselDetails_Node1 -- No --> E_SetVesselDetails
File: GCX016E.cbl
GIVEN: country code has been assigned and vessel information is available
WHEN: the system processes vessel-specific data
THEN: the system should configure vessel details including vessel name, voyage number, and related transport information in the cargo record
File: GCX016E.cbl
GIVEN: Vessel information is available from M10 segments or manifest data
WHEN: The system processes vessel details for new cargo
THEN: Vessel name, voyage number, and related vessel transportation details are populated in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system validates cargo record data → the system should verify that all required fields are present, data formats are correct, and business rules are satisfied before allowing database insertion
  • The system validates the cargo record before insertion → the system should verify all required fields are present and data formats are correct
  • Cargo record validation is performed → all required fields are validated for completeness, data integrity, and business rule compliance, and any 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_ValidateCargoRecordData(["Start Step"]) E_ValidateCargoRecordData(["End Step"]) N_ValidateCargoRecordData_Node0{"the system validates cargo record
data"}:::decision N_ValidateCargoRecordData_Node0_action["the system should verify that all
required fields are present, data
formats are correct, and business
rules are satisfied before allowing
database insertion"]:::main N_ValidateCargoRecordData_Node0 -- Yes --> N_ValidateCargoRecordData_Node0_action N_ValidateCargoRecordData_Node0_action --> E_ValidateCargoRecordData S_ValidateCargoRecordData --> N_ValidateCargoRecordData_Node0 N_ValidateCargoRecordData_Node1{"The system validates the cargo
record before insertion"}:::decision N_ValidateCargoRecordData_Node1_action["The system should verify all
required fields are present and data
formats are correct"]:::main N_ValidateCargoRecordData_Node1 -- Yes --> N_ValidateCargoRecordData_Node1_action N_ValidateCargoRecordData_Node1_action --> E_ValidateCargoRecordData N_ValidateCargoRecordData_Node0 -- No --> N_ValidateCargoRecordData_Node1 N_ValidateCargoRecordData_Node2{"Cargo record validation is
performed"}:::decision N_ValidateCargoRecordData_Node2_action["All required fields are validated
for completeness, data integrity,
and business rule compliance, and
any validation errors are identified"]:::main N_ValidateCargoRecordData_Node2 -- Yes --> N_ValidateCargoRecordData_Node2_action N_ValidateCargoRecordData_Node2_action --> E_ValidateCargoRecordData N_ValidateCargoRecordData_Node1 -- No --> N_ValidateCargoRecordData_Node2 N_ValidateCargoRecordData_Node2 -- No --> E_ValidateCargoRecordData
File: GCX016E.cbl
GIVEN: car ID has been formatted and all cargo record fields are populated
WHEN: the system validates cargo record data
THEN: the system should verify that all required fields are present, data formats are correct, and business rules are satisfied before allowing database insertion
File: GCX016E.cbl
GIVEN: A new cargo record has been populated with segment data
WHEN: The system validates the cargo record before insertion
THEN:
  • The system should verify all required fields are present
  • Data formats are correct
File: GCX016E.cbl
GIVEN: A cargo record is populated with X4 and N7 segment data and formatted car ID
WHEN: Cargo record validation is performed
THEN: All required fields are validated for completeness, data integrity, and business rule compliance, and any validation errors are identified
βœ“ Consolidated Acceptance Criteria
  • The system performs database insertion → the system should insert the new cargo record into the GCSUSRT (US Cargo Root) database table
  • The system performs database insertion → the new cargo record is successfully inserted into the cargo database
  • The system performs database insertion for the new cargo record → the cargo record is successfully inserted into GCSUSRT database with all populated fields and proper indexing
  • The system attempts to insert the record into the database → the system should successfully add the new cargo record 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_InsertNewCargoRecordintoDatabase(["Start Step"]) E_InsertNewCargoRecordintoDatabase(["End Step"]) N_InsertNewCargoRecordintoDatabase_Node0{"the system performs database
insertion"}:::decision N_InsertNewCargoRecordintoDatabase_Node0_action["the system should insert the new
cargo record into the GCSUSRT US
Cargo Root database table"]:::main N_InsertNewCargoRecordintoDatabase_Node0 -- Yes --> N_InsertNewCargoRecordintoDatabase_Node0_action N_InsertNewCargoRecordintoDatabase_Node0_action --> E_InsertNewCargoRecordintoDatabase S_InsertNewCargoRecordintoDatabase --> N_InsertNewCargoRecordintoDatabase_Node0 N_InsertNewCargoRecordintoDatabase_Node1{"The system performs database
insertion"}:::decision N_InsertNewCargoRecordintoDatabase_Node1_action["The new cargo record is
successfully inserted into the cargo
database"]:::main N_InsertNewCargoRecordintoDatabase_Node1 -- Yes --> N_InsertNewCargoRecordintoDatabase_Node1_action N_InsertNewCargoRecordintoDatabase_Node1_action --> E_InsertNewCargoRecordintoDatabase N_InsertNewCargoRecordintoDatabase_Node0 -- No --> N_InsertNewCargoRecordintoDatabase_Node1 N_InsertNewCargoRecordintoDatabase_Node2{"The system performs database
insertion for the new cargo record"}:::decision N_InsertNewCargoRecordintoDatabase_Node2_action["The cargo record is successfully
inserted into GCSUSRT database with
all populated fields and proper
indexing"]:::main N_InsertNewCargoRecordintoDatabase_Node2 -- Yes --> N_InsertNewCargoRecordintoDatabase_Node2_action N_InsertNewCargoRecordintoDatabase_Node2_action --> E_InsertNewCargoRecordintoDatabase N_InsertNewCargoRecordintoDatabase_Node1 -- No --> N_InsertNewCargoRecordintoDatabase_Node2 N_InsertNewCargoRecordintoDatabase_Node3{"The system attempts to insert the
record into the database"}:::decision N_InsertNewCargoRecordintoDatabase_Node3_action["The system should successfully add
the new cargo record to the database"]:::main N_InsertNewCargoRecordintoDatabase_Node3 -- Yes --> N_InsertNewCargoRecordintoDatabase_Node3_action N_InsertNewCargoRecordintoDatabase_Node3_action --> E_InsertNewCargoRecordintoDatabase N_InsertNewCargoRecordintoDatabase_Node2 -- No --> N_InsertNewCargoRecordintoDatabase_Node3 N_InsertNewCargoRecordintoDatabase_Node3 -- No --> E_InsertNewCargoRecordintoDatabase
File: GCX016E.cbl
GIVEN: cargo record data has been validated successfully
WHEN: the system performs database insertion
THEN: the system should insert the new cargo record into the GCSUSRT (US Cargo Root) database table
File: GCX016E.cbl
GIVEN: A complete foreign cargo record has been constructed with all required information
WHEN: The system performs database insertion
THEN: The new cargo record is successfully inserted into the cargo database
File: GCX016E.cbl
GIVEN: A complete cargo record populated with all required foreign bill information
WHEN: The system performs database insertion for the new cargo record
THEN:
  • The cargo record is successfully inserted into gcsusrt database with all populated fields
  • Proper indexing
File: GCX016E.cbl
GIVEN: A validated new cargo record is ready for insertion
WHEN: The system attempts to insert the record into the database
THEN: The system should successfully add the new cargo record to the database
βœ“ Consolidated Acceptance Criteria
  • The system updates processing status → the system should set CPRS processing flag to indicate that cargo record creation has been 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_UpdateCPRSProcessingFlag(["Start Step"]) E_UpdateCPRSProcessingFlag(["End Step"]) N_UpdateCPRSProcessingFlag_Node0{"the system updates processing
status"}:::decision N_UpdateCPRSProcessingFlag_Node0_action["the system should set CPRS
processing flag to indicate that
cargo record creation has been
completed successfully"]:::main N_UpdateCPRSProcessingFlag_Node0 -- Yes --> N_UpdateCPRSProcessingFlag_Node0_action N_UpdateCPRSProcessingFlag_Node0_action --> E_UpdateCPRSProcessingFlag S_UpdateCPRSProcessingFlag --> N_UpdateCPRSProcessingFlag_Node0 N_UpdateCPRSProcessingFlag_Node0 -- No --> E_UpdateCPRSProcessingFlag
File: GCX016E.cbl
GIVEN: cargo creation action has been logged successfully
WHEN: the system updates processing status
THEN: the system should set CPRS processing flag to indicate that cargo record creation has been completed successfully
βœ“ Consolidated Acceptance Criteria
  • The system processes the M10 segment for SCAC code extraction → the SCAC code is extracted from the designated field position in the M10 segment
  • The system processes the M10 segment → the SCAC code is extracted from positions 3-6 of the M10 segment
  • The system processes the M10 segment for foreign manifest building → the SCAC code is extracted from the M10 segment and stored for manifest construction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 for SCAC code extraction"}:::decision N_ExtractSCACCodefromM10_Node0_action["The SCAC code is extracted from the
designated field position in the M10
segment"]:::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 from
positions 3-6 of the M10 segment"]:::main N_ExtractSCACCodefromM10_Node1 -- Yes --> N_ExtractSCACCodefromM10_Node1_action N_ExtractSCACCodefromM10_Node1_action --> E_ExtractSCACCodefromM10 N_ExtractSCACCodefromM10_Node0 -- No --> N_ExtractSCACCodefromM10_Node1 N_ExtractSCACCodefromM10_Node2{"The system processes the M10
segment for foreign manifest
building"}:::decision N_ExtractSCACCodefromM10_Node2_action["The SCAC code is extracted from the
M10 segment and stored for manifest
construction"]:::main N_ExtractSCACCodefromM10_Node2 -- Yes --> N_ExtractSCACCodefromM10_Node2_action N_ExtractSCACCodefromM10_Node2_action --> E_ExtractSCACCodefromM10 N_ExtractSCACCodefromM10_Node1 -- No --> N_ExtractSCACCodefromM10_Node2 N_ExtractSCACCodefromM10_Node2 -- No --> E_ExtractSCACCodefromM10
File: GCX016E.cbl
GIVEN: An M10 input segment is received containing carrier information
WHEN: The system processes the M10 segment for SCAC code extraction
THEN: The SCAC code is extracted from the designated field position in the M10 segment
File: GCX016E.cbl
GIVEN: An M10 segment is received with manifest data
WHEN: The system processes the M10 segment
THEN: The SCAC code is extracted from positions 3-6 of the M10 segment
File: GCX016E.cbl
GIVEN: An M10 segment containing carrier information is received
WHEN: The system processes the M10 segment for foreign manifest building
THEN:
  • The scac code is extracted from the m10 segment
  • Stored for manifest construction
βœ“ Consolidated Acceptance Criteria
  • The system processes the M10 segment for transport type extraction → the transport type is extracted from the designated field position in the M10 segment
  • The system processes the M10 segment for foreign manifest building → the transport type is extracted from the M10 segment and stored for manifest construction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 for transport type
extraction"}:::decision N_ExtractTransportTypefromM10_Node0_action["The transport type is extracted
from the designated field position
in the M10 segment"]:::main N_ExtractTransportTypefromM10_Node0 -- Yes --> N_ExtractTransportTypefromM10_Node0_action N_ExtractTransportTypefromM10_Node0_action --> E_ExtractTransportTypefromM10 S_ExtractTransportTypefromM10 --> N_ExtractTransportTypefromM10_Node0 N_ExtractTransportTypefromM10_Node1{"The system processes the M10
segment for foreign manifest
building"}:::decision N_ExtractTransportTypefromM10_Node1_action["The transport type is extracted
from the M10 segment and stored for
manifest construction"]:::main N_ExtractTransportTypefromM10_Node1 -- Yes --> N_ExtractTransportTypefromM10_Node1_action N_ExtractTransportTypefromM10_Node1_action --> E_ExtractTransportTypefromM10 N_ExtractTransportTypefromM10_Node0 -- No --> N_ExtractTransportTypefromM10_Node1 N_ExtractTransportTypefromM10_Node1 -- No --> E_ExtractTransportTypefromM10
File: GCX016E.cbl
GIVEN: An M10 input segment is received containing transportation mode information
WHEN: The system processes the M10 segment for transport type extraction
THEN: The transport type is extracted from the designated field position in the M10 segment
File: GCX016E.cbl
GIVEN: An M10 segment containing transport information is received
WHEN: The system processes the M10 segment for foreign manifest building
THEN:
  • The transport type is extracted from the m10 segment
  • Stored for manifest construction
βœ“ Consolidated Acceptance Criteria
  • The system processes the M10 segment for country code extraction → the country code is extracted from the designated field position in the M10 segment
  • The system processes the M10 segment for foreign manifest building → the country code is extracted from the M10 segment and stored for manifest construction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 for country code extraction"}:::decision N_ExtractCountryCodefromM10_Node0_action["The country code is extracted from
the designated field position in the
M10 segment"]:::main N_ExtractCountryCodefromM10_Node0 -- Yes --> N_ExtractCountryCodefromM10_Node0_action N_ExtractCountryCodefromM10_Node0_action --> E_ExtractCountryCodefromM10 S_ExtractCountryCodefromM10 --> N_ExtractCountryCodefromM10_Node0 N_ExtractCountryCodefromM10_Node1{"The system processes the M10
segment for foreign manifest
building"}:::decision N_ExtractCountryCodefromM10_Node1_action["The country code is extracted from
the M10 segment and stored for
manifest construction"]:::main N_ExtractCountryCodefromM10_Node1 -- Yes --> N_ExtractCountryCodefromM10_Node1_action N_ExtractCountryCodefromM10_Node1_action --> E_ExtractCountryCodefromM10 N_ExtractCountryCodefromM10_Node0 -- No --> N_ExtractCountryCodefromM10_Node1 N_ExtractCountryCodefromM10_Node1 -- No --> E_ExtractCountryCodefromM10
File: GCX016E.cbl
GIVEN: An M10 input segment is received containing country information
WHEN: The system processes the M10 segment for country code extraction
THEN: The country code is extracted from the designated field position in the M10 segment
File: GCX016E.cbl
GIVEN: An M10 segment containing country information is received
WHEN: The system processes the M10 segment for foreign manifest building
THEN:
  • The country code is extracted from the m10 segment
  • Stored for manifest construction
βœ“ Consolidated Acceptance Criteria
  • The system processes the M10 segment for vessel details extraction → the vessel name and related details are extracted from the designated field positions in the M10 segment
  • The system processes the M10 segment for foreign manifest building → the vessel details including name and identification are extracted from the M10 segment and stored for manifest construction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExtractVesselDetailsfromM10(["Start Step"]) E_ExtractVesselDetailsfromM10(["End Step"]) N_ExtractVesselDetailsfromM10_Node0{"The system processes the M10
segment for vessel details
extraction"}:::decision N_ExtractVesselDetailsfromM10_Node0_action["The vessel name and related details
are extracted from the designated
field positions in the M10 segment"]:::main N_ExtractVesselDetailsfromM10_Node0 -- Yes --> N_ExtractVesselDetailsfromM10_Node0_action N_ExtractVesselDetailsfromM10_Node0_action --> E_ExtractVesselDetailsfromM10 S_ExtractVesselDetailsfromM10 --> N_ExtractVesselDetailsfromM10_Node0 N_ExtractVesselDetailsfromM10_Node1{"The system processes the M10
segment for foreign manifest
building"}:::decision N_ExtractVesselDetailsfromM10_Node1_action["The vessel details including name
and identification are extracted
from the M10 segment and stored for
manifest construction"]:::main N_ExtractVesselDetailsfromM10_Node1 -- Yes --> N_ExtractVesselDetailsfromM10_Node1_action N_ExtractVesselDetailsfromM10_Node1_action --> E_ExtractVesselDetailsfromM10 N_ExtractVesselDetailsfromM10_Node0 -- No --> N_ExtractVesselDetailsfromM10_Node1 N_ExtractVesselDetailsfromM10_Node1 -- No --> E_ExtractVesselDetailsfromM10
File: GCX016E.cbl
GIVEN: An M10 input segment is received containing vessel information
WHEN: The system processes the M10 segment for vessel details extraction
THEN:
  • The vessel name
  • Related details are extracted from the designated field positions in the m10 segment
File: GCX016E.cbl
GIVEN: An M10 segment containing vessel information is received
WHEN: The system processes the M10 segment for foreign manifest building
THEN:
  • The vessel details including name
  • Identification are extracted from the m10 segment
  • Stored for manifest construction
βœ“ Consolidated Acceptance Criteria
  • The system validates the SCAC code against business rules → the SCAC code is determined to be valid if it is not spaces and meets format requirements, otherwise it is invalid
  • The system validates the SCAC code → the SCAC code must be non-blank and contain valid alphanumeric characters
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SCACCodeValid(["Start Step"]) E_SCACCodeValid(["End Step"]) N_SCACCodeValid_Node0{"The system validates the SCAC code
against business rules"}:::decision N_SCACCodeValid_Node0_action["The SCAC code is determined to be
valid if it is not spaces and meets
format requirements, otherwise it is
invalid"]:::main N_SCACCodeValid_Node0 -- Yes --> N_SCACCodeValid_Node0_action N_SCACCodeValid_Node0_action --> E_SCACCodeValid S_SCACCodeValid --> N_SCACCodeValid_Node0 N_SCACCodeValid_Node1{"The system validates the SCAC code"}:::decision N_SCACCodeValid_Node1_action["The SCAC code must be non-blank and
contain valid alphanumeric
characters"]:::main N_SCACCodeValid_Node1 -- Yes --> N_SCACCodeValid_Node1_action N_SCACCodeValid_Node1_action --> E_SCACCodeValid N_SCACCodeValid_Node0 -- No --> N_SCACCodeValid_Node1 N_SCACCodeValid_Node1 -- No --> E_SCACCodeValid
File: GCX016E.cbl
GIVEN: A SCAC code has been extracted from the M10 segment
WHEN: The system validates the SCAC code against business rules
THEN:
  • The scac code is determined to be valid if it is not spaces
  • Meets format requirements, otherwise it is invalid
File: GCX016E.cbl
GIVEN: A SCAC code has been extracted from the M10 segment
WHEN: The system validates the SCAC code
THEN:
  • The scac code must be non-blank
  • Contain valid alphanumeric characters
βœ“ Consolidated Acceptance Criteria
  • The system needs to assign a SCAC code for processing → a default SCAC code is assigned to ensure 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_SetDefaultSCACifInvalid(["Start Step"]) E_SetDefaultSCACifInvalid(["End Step"]) N_SetDefaultSCACifInvalid_Node0{"The system needs to assign a SCAC
code for processing"}:::decision N_SetDefaultSCACifInvalid_Node0_action["A default SCAC code is assigned to
ensure processing can continue"]:::main N_SetDefaultSCACifInvalid_Node0 -- Yes --> N_SetDefaultSCACifInvalid_Node0_action N_SetDefaultSCACifInvalid_Node0_action --> E_SetDefaultSCACifInvalid S_SetDefaultSCACifInvalid --> N_SetDefaultSCACifInvalid_Node0 N_SetDefaultSCACifInvalid_Node0 -- No --> E_SetDefaultSCACifInvalid
File: GCX016E.cbl
GIVEN: The extracted SCAC code has failed validation
WHEN: The system needs to assign a SCAC code for processing
THEN: A default SCAC code is assigned to ensure processing can continue
βœ“ Consolidated Acceptance Criteria
  • The system validates the transport type against acceptable values → the transport type is determined to be valid if it matches recognized transportation modes, otherwise it is invalid
  • The system validates the transport type → the transport type must be a valid code representing rail, truck, vessel, or air transportation
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_TransportTypeValid(["Start Step"]) E_TransportTypeValid(["End Step"]) N_TransportTypeValid_Node0{"The system validates the transport
type against acceptable values"}:::decision N_TransportTypeValid_Node0_action["The transport type is determined to
be valid if it matches recognized
transportation modes, otherwise it
is invalid"]:::main N_TransportTypeValid_Node0 -- Yes --> N_TransportTypeValid_Node0_action N_TransportTypeValid_Node0_action --> E_TransportTypeValid S_TransportTypeValid --> N_TransportTypeValid_Node0 N_TransportTypeValid_Node1{"The system validates the transport
type"}:::decision N_TransportTypeValid_Node1_action["The transport type must be a valid
code representing rail, truck,
vessel, or air transportation"]:::main N_TransportTypeValid_Node1 -- Yes --> N_TransportTypeValid_Node1_action N_TransportTypeValid_Node1_action --> E_TransportTypeValid N_TransportTypeValid_Node0 -- No --> N_TransportTypeValid_Node1 N_TransportTypeValid_Node1 -- No --> E_TransportTypeValid
File: GCX016E.cbl
GIVEN: A transport type has been extracted from the M10 segment
WHEN: The system validates the transport type against acceptable values
THEN: The transport type is determined to be valid if it matches recognized transportation modes, otherwise it is invalid
File: GCX016E.cbl
GIVEN: A transport type code has been extracted from the M10 segment
WHEN: The system validates the transport type
THEN: The transport type must be a valid code representing rail, truck, vessel, or air transportation
βœ“ Consolidated Acceptance Criteria
  • The system needs to assign a transport type for processing → a default transport type is assigned to ensure 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_SetDefaultTransportType(["Start Step"]) E_SetDefaultTransportType(["End Step"]) N_SetDefaultTransportType_Node0{"The system needs to assign a
transport type for processing"}:::decision N_SetDefaultTransportType_Node0_action["A default transport type is
assigned to ensure processing can
continue"]:::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: GCX016E.cbl
GIVEN: The extracted transport type has failed validation
WHEN: The system needs to assign a transport type for processing
THEN: A default transport type is assigned to ensure processing can continue
βœ“ Consolidated Acceptance Criteria
  • The system validates the country code against acceptable country codes → the country code is determined to be valid if it matches recognized country identifiers, otherwise it is invalid
  • The system validates the country code → the country code must be a valid ISO country code or recognized customs country 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_CountryCodeValid(["Start Step"]) E_CountryCodeValid(["End Step"]) N_CountryCodeValid_Node0{"The system validates the country
code against acceptable country
codes"}:::decision N_CountryCodeValid_Node0_action["The country code is determined to
be valid if it matches recognized
country identifiers, otherwise it is
invalid"]:::main N_CountryCodeValid_Node0 -- Yes --> N_CountryCodeValid_Node0_action N_CountryCodeValid_Node0_action --> E_CountryCodeValid S_CountryCodeValid --> N_CountryCodeValid_Node0 N_CountryCodeValid_Node1{"The system validates the country
code"}:::decision N_CountryCodeValid_Node1_action["The country code must be a valid
ISO country code or recognized
customs country identifier"]:::main N_CountryCodeValid_Node1 -- Yes --> N_CountryCodeValid_Node1_action N_CountryCodeValid_Node1_action --> E_CountryCodeValid N_CountryCodeValid_Node0 -- No --> N_CountryCodeValid_Node1 N_CountryCodeValid_Node1 -- No --> E_CountryCodeValid
File: GCX016E.cbl
GIVEN: A country code has been extracted from the M10 segment
WHEN: The system validates the country code against acceptable country codes
THEN: The country code is determined to be valid if it matches recognized country identifiers, otherwise it is invalid
File: GCX016E.cbl
GIVEN: A country code has been extracted from the M10 segment
WHEN: The system validates the country code
THEN: The country code must be a valid ISO country code or recognized customs country identifier
βœ“ Consolidated Acceptance Criteria
  • The system needs to assign a country code for processing → a default country code is assigned to ensure 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_SetDefaultCountryCode(["Start Step"]) E_SetDefaultCountryCode(["End Step"]) N_SetDefaultCountryCode_Node0{"The system needs to assign a
country code for processing"}:::decision N_SetDefaultCountryCode_Node0_action["A default country code is assigned
to ensure processing can continue"]:::main N_SetDefaultCountryCode_Node0 -- Yes --> N_SetDefaultCountryCode_Node0_action N_SetDefaultCountryCode_Node0_action --> E_SetDefaultCountryCode S_SetDefaultCountryCode --> N_SetDefaultCountryCode_Node0 N_SetDefaultCountryCode_Node0 -- No --> E_SetDefaultCountryCode
File: GCX016E.cbl
GIVEN: The extracted country code has failed validation
WHEN: The system needs to assign a country code for processing
THEN: A default country code is assigned to ensure processing can continue
βœ“ Consolidated Acceptance Criteria
  • The system constructs the M10 manifest segment → a properly formatted M10 segment is created with all required fields 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_ConstructM10ManifestSegment(["Start Step"]) E_ConstructM10ManifestSegment(["End Step"]) N_ConstructM10ManifestSegment_Node0{"The system constructs the M10
manifest segment"}:::decision N_ConstructM10ManifestSegment_Node0_action["A properly formatted M10 segment is
created with all required fields
populated"]:::main N_ConstructM10ManifestSegment_Node0 -- Yes --> N_ConstructM10ManifestSegment_Node0_action N_ConstructM10ManifestSegment_Node0_action --> E_ConstructM10ManifestSegment S_ConstructM10ManifestSegment --> N_ConstructM10ManifestSegment_Node0 N_ConstructM10ManifestSegment_Node0 -- No --> E_ConstructM10ManifestSegment
File: GCX016E.cbl
GIVEN: All required data elements have been extracted and validated from the input
WHEN: The system constructs the M10 manifest segment
THEN: A properly formatted M10 segment is created with all required fields populated
βœ“ Consolidated Acceptance Criteria
  • The system populates the vessel name field in the M10 segment → the vessel name field is set with the extracted vessel name 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_PopulateVesselNameField(["Start Step"]) E_PopulateVesselNameField(["End Step"]) N_PopulateVesselNameField_Node0{"The system populates the vessel
name field in the M10 segment"}:::decision N_PopulateVesselNameField_Node0_action["The vessel name field is set with
the extracted vessel name value"]:::main N_PopulateVesselNameField_Node0 -- Yes --> N_PopulateVesselNameField_Node0_action N_PopulateVesselNameField_Node0_action --> E_PopulateVesselNameField S_PopulateVesselNameField --> N_PopulateVesselNameField_Node0 N_PopulateVesselNameField_Node0 -- No --> E_PopulateVesselNameField
File: GCX016E.cbl
GIVEN: Vessel details have been extracted from the input segment
WHEN: The system populates the vessel name field in the M10 segment
THEN: The vessel name field is set with the extracted vessel name value
βœ“ Consolidated Acceptance Criteria
  • The system populates the transport mode field in the M10 segment → the transport mode field is set with the validated transport type 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_PopulateTransportModeField(["Start Step"]) E_PopulateTransportModeField(["End Step"]) N_PopulateTransportModeField_Node0{"The system populates the transport
mode field in the M10 segment"}:::decision N_PopulateTransportModeField_Node0_action["The transport mode field is set
with the validated transport type
value"]:::main N_PopulateTransportModeField_Node0 -- Yes --> N_PopulateTransportModeField_Node0_action N_PopulateTransportModeField_Node0_action --> E_PopulateTransportModeField S_PopulateTransportModeField --> N_PopulateTransportModeField_Node0 N_PopulateTransportModeField_Node0 -- No --> E_PopulateTransportModeField
File: GCX016E.cbl
GIVEN: A valid or default transport type has been determined
WHEN: The system populates the transport mode field in the M10 segment
THEN: The transport mode field is set with the validated transport type value
βœ“ Consolidated Acceptance Criteria
  • The system populates the country of origin field in the M10 segment → the country of origin field is set with the validated country 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_PopulateCountryofOriginField(["Start Step"]) E_PopulateCountryofOriginField(["End Step"]) N_PopulateCountryofOriginField_Node0{"The system populates the country of
origin field in the M10 segment"}:::decision N_PopulateCountryofOriginField_Node0_action["The country of origin field is set
with the validated country code
value"]:::main N_PopulateCountryofOriginField_Node0 -- Yes --> N_PopulateCountryofOriginField_Node0_action N_PopulateCountryofOriginField_Node0_action --> E_PopulateCountryofOriginField S_PopulateCountryofOriginField --> N_PopulateCountryofOriginField_Node0 N_PopulateCountryofOriginField_Node0 -- No --> E_PopulateCountryofOriginField
File: GCX016E.cbl
GIVEN: A valid or default country code has been determined
WHEN: The system populates the country of origin field in the M10 segment
THEN: The country of origin field is set with the validated country code value
βœ“ Consolidated Acceptance Criteria
  • The system populates the SCAC field in the M10 segment → the SCAC field is set with the validated SCAC 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_PopulateSCACField(["Start Step"]) E_PopulateSCACField(["End Step"]) N_PopulateSCACField_Node0{"The system populates the SCAC field
in the M10 segment"}:::decision N_PopulateSCACField_Node0_action["The SCAC field is set with the
validated SCAC code value"]:::main N_PopulateSCACField_Node0 -- Yes --> N_PopulateSCACField_Node0_action N_PopulateSCACField_Node0_action --> E_PopulateSCACField S_PopulateSCACField --> N_PopulateSCACField_Node0 N_PopulateSCACField_Node0 -- No --> E_PopulateSCACField
File: GCX016E.cbl
GIVEN: A valid or default SCAC code has been determined
WHEN: The system populates the SCAC field in the M10 segment
THEN: The SCAC field is set with the validated SCAC code value
βœ“ Consolidated Acceptance Criteria
  • The system validates the completeness of the M10 segment → the M10 segment is determined to be complete if all mandatory fields are populated, otherwise it is incomplete
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_M10SegmentComplete(["Start Step"]) E_M10SegmentComplete(["End Step"]) N_M10SegmentComplete_Node0{"The system validates the
completeness of the M10 segment"}:::decision N_M10SegmentComplete_Node0_action["The M10 segment is determined to be
complete if all mandatory fields are
populated, otherwise it is
incomplete"]:::main N_M10SegmentComplete_Node0 -- Yes --> N_M10SegmentComplete_Node0_action N_M10SegmentComplete_Node0_action --> E_M10SegmentComplete S_M10SegmentComplete --> N_M10SegmentComplete_Node0 N_M10SegmentComplete_Node0 -- No --> E_M10SegmentComplete
File: GCX016E.cbl
GIVEN: An M10 manifest segment has been constructed with populated fields
WHEN: The system validates the completeness of the M10 segment
THEN: The M10 segment is determined to be complete if all mandatory fields are populated, otherwise it is incomplete
βœ“ Consolidated Acceptance Criteria
  • The system processes the incomplete segment → a warning message is logged indicating the manifest is incomplete but 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_LogIncompleteManifestWarning(["Start Step"]) E_LogIncompleteManifestWarning(["End Step"]) N_LogIncompleteManifestWarning_Node0{"The system processes the incomplete
segment"}:::decision N_LogIncompleteManifestWarning_Node0_action["A warning message is logged
indicating the manifest is
incomplete but processing continues"]:::main N_LogIncompleteManifestWarning_Node0 -- Yes --> N_LogIncompleteManifestWarning_Node0_action N_LogIncompleteManifestWarning_Node0_action --> E_LogIncompleteManifestWarning S_LogIncompleteManifestWarning --> N_LogIncompleteManifestWarning_Node0 N_LogIncompleteManifestWarning_Node0 -- No --> E_LogIncompleteManifestWarning
File: GCX016E.cbl
GIVEN: The M10 segment has failed completeness validation
WHEN: The system processes the incomplete segment
THEN: A warning message is logged indicating the manifest is incomplete but processing continues
βœ“ Consolidated Acceptance Criteria
  • The system stores the M10 segment → the M10 segment is stored in the appropriate data structure for 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_StoreM10ManifestSegment(["Start Step"]) E_StoreM10ManifestSegment(["End Step"]) N_StoreM10ManifestSegment_Node0{"The system stores the M10 segment"}:::decision N_StoreM10ManifestSegment_Node0_action["The M10 segment is stored in the
appropriate data structure for
subsequent processing steps"]:::main N_StoreM10ManifestSegment_Node0 -- Yes --> N_StoreM10ManifestSegment_Node0_action N_StoreM10ManifestSegment_Node0_action --> E_StoreM10ManifestSegment S_StoreM10ManifestSegment --> N_StoreM10ManifestSegment_Node0 N_StoreM10ManifestSegment_Node0 -- No --> E_StoreM10ManifestSegment
File: GCX016E.cbl
GIVEN: An M10 manifest segment has been constructed and validated
WHEN: The system stores the M10 segment
THEN: The M10 segment is stored in the appropriate data structure for subsequent processing steps
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment for new cargo creation → the cargo record is populated with disposition code, entry number, quantity, and related 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_SetCargoRecordwithX4SegmentData(["Start Step"]) E_SetCargoRecordwithX4SegmentData(["End Step"]) N_SetCargoRecordwithX4SegmentData_Node0{"The system processes the X4 segment
for new cargo creation"}:::decision N_SetCargoRecordwithX4SegmentData_Node0_action["The cargo record is populated with
disposition code, entry number,
quantity, and related X4 segment
data"]:::main N_SetCargoRecordwithX4SegmentData_Node0 -- Yes --> N_SetCargoRecordwithX4SegmentData_Node0_action N_SetCargoRecordwithX4SegmentData_Node0_action --> E_SetCargoRecordwithX4SegmentData S_SetCargoRecordwithX4SegmentData --> N_SetCargoRecordwithX4SegmentData_Node0 N_SetCargoRecordwithX4SegmentData_Node0 -- No --> E_SetCargoRecordwithX4SegmentData
File: GCX016E.cbl
GIVEN: An X4 segment contains disposition code, entry number, and quantity information
WHEN: The system processes the X4 segment for new cargo creation
THEN: The cargo record is populated with disposition code, entry number, quantity, and related X4 segment data
βœ“ Consolidated Acceptance Criteria
  • The system processes the N7 segment for new cargo creation → the cargo record is populated with equipment initial, equipment number, and other N7 segment 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_SetCargoRecordwithN7SegmentData(["Start Step"]) E_SetCargoRecordwithN7SegmentData(["End Step"]) N_SetCargoRecordwithN7SegmentData_Node0{"The system processes the N7 segment
for new cargo creation"}:::decision N_SetCargoRecordwithN7SegmentData_Node0_action["The cargo record is populated with
equipment initial, equipment number,
and other N7 segment equipment data"]:::main N_SetCargoRecordwithN7SegmentData_Node0 -- Yes --> N_SetCargoRecordwithN7SegmentData_Node0_action N_SetCargoRecordwithN7SegmentData_Node0_action --> E_SetCargoRecordwithN7SegmentData S_SetCargoRecordwithN7SegmentData --> N_SetCargoRecordwithN7SegmentData_Node0 N_SetCargoRecordwithN7SegmentData_Node0 -- No --> E_SetCargoRecordwithN7SegmentData
File: GCX016E.cbl
GIVEN: An N7 segment contains equipment initial, equipment number, and other equipment details
WHEN: The system processes the N7 segment for new cargo creation
THEN: The cargo record is populated with equipment initial, equipment number, and other N7 segment equipment data
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a car ID for database storage → the car ID is formatted by combining equipment initial and equipment number in the required database format
  • The system prepares car identification for database storage → the car ID is formatted into standardized database format combining equipment initial and number
  • The system prepares car ID for database insertion → the car ID is formatted according to database requirements with proper padding, case conversion, and structure validation
  • The system formats the car identification for database storage → the system should concatenate equipment initial and number with proper formatting and padding
  • The system prepares car ID for database storage → car ID is formatted according to database requirements for proper storage and future 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_FormatCarIDforDatabase(["Start Step"]) E_FormatCarIDforDatabase(["End Step"]) N_FormatCarIDforDatabase_Node0{"The system needs to create a car ID
for database storage"}:::decision N_FormatCarIDforDatabase_Node0_action["The car ID is formatted by
combining equipment initial and
equipment number in the required
database format"]:::main N_FormatCarIDforDatabase_Node0 -- Yes --> N_FormatCarIDforDatabase_Node0_action N_FormatCarIDforDatabase_Node0_action --> E_FormatCarIDforDatabase S_FormatCarIDforDatabase --> N_FormatCarIDforDatabase_Node0 N_FormatCarIDforDatabase_Node1{"The system prepares car
identification for database storage"}:::decision N_FormatCarIDforDatabase_Node1_action["The car ID is formatted into
standardized database format
combining equipment initial and
number"]:::main N_FormatCarIDforDatabase_Node1 -- Yes --> N_FormatCarIDforDatabase_Node1_action N_FormatCarIDforDatabase_Node1_action --> E_FormatCarIDforDatabase N_FormatCarIDforDatabase_Node0 -- No --> N_FormatCarIDforDatabase_Node1 N_FormatCarIDforDatabase_Node2{"The system prepares car ID for
database insertion"}:::decision N_FormatCarIDforDatabase_Node2_action["The car ID is formatted according
to database requirements with proper
padding, case conversion, and
structure validation"]:::main N_FormatCarIDforDatabase_Node2 -- Yes --> N_FormatCarIDforDatabase_Node2_action N_FormatCarIDforDatabase_Node2_action --> E_FormatCarIDforDatabase N_FormatCarIDforDatabase_Node1 -- No --> N_FormatCarIDforDatabase_Node2 N_FormatCarIDforDatabase_Node3{"The system formats the car
identification for database storage"}:::decision N_FormatCarIDforDatabase_Node3_action["The system should concatenate
equipment initial and number with
proper formatting and padding"]:::main N_FormatCarIDforDatabase_Node3 -- Yes --> N_FormatCarIDforDatabase_Node3_action N_FormatCarIDforDatabase_Node3_action --> E_FormatCarIDforDatabase N_FormatCarIDforDatabase_Node2 -- No --> N_FormatCarIDforDatabase_Node3 N_FormatCarIDforDatabase_Node4{"The system prepares car ID for
database storage"}:::decision N_FormatCarIDforDatabase_Node4_action["Car ID is formatted according to
database requirements for proper
storage and future retrieval
operations"]:::main N_FormatCarIDforDatabase_Node4 -- Yes --> N_FormatCarIDforDatabase_Node4_action N_FormatCarIDforDatabase_Node4_action --> E_FormatCarIDforDatabase N_FormatCarIDforDatabase_Node3 -- No --> N_FormatCarIDforDatabase_Node4 N_FormatCarIDforDatabase_Node4 -- No --> E_FormatCarIDforDatabase
File: GCX016E.cbl
GIVEN: Equipment initial and equipment number are available from N7 segment
WHEN: The system needs to create a car ID for database storage
THEN:
  • The car id is formatted by combining equipment initial
  • Equipment number in the required database format
File: GCX016E.cbl
GIVEN: Equipment initial and number are available from N7 segment
WHEN: The system prepares car identification for database storage
THEN:
  • The car id is formatted into standardized database format combining equipment initial
  • Number
File: GCX016E.cbl
GIVEN: Raw car ID information from N7 equipment segments
WHEN: The system prepares car ID for database insertion
THEN: The car ID is formatted according to database requirements with proper padding, case conversion, and structure validation
File: GCX016E.cbl
GIVEN: Equipment initial and equipment number are available from N7 segment
WHEN: The system formats the car identification for database storage
THEN:
  • The system should concatenate equipment initial
  • Number with proper formatting
  • Padding
File: GCX016E.cbl
GIVEN: Car ID information has been assembled from equipment data
WHEN: The system prepares car ID for database storage
THEN:
  • Car id is formatted according to database requirements for proper storage
  • Future retrieval operations
βœ“ Consolidated Acceptance Criteria
  • The system processes CPRS cargo for database insertion → special CPRS formatting is applied including clearing the car ID field and applying CPRS-specific data 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_ApplyCPRSSpecialFormatting(["Start Step"]) E_ApplyCPRSSpecialFormatting(["End Step"]) N_ApplyCPRSSpecialFormatting_Node0{"The system processes CPRS cargo for
database insertion"}:::decision N_ApplyCPRSSpecialFormatting_Node0_action["Special CPRS formatting is applied
including clearing the car ID field
and applying CPRS-specific data
formatting"]:::main N_ApplyCPRSSpecialFormatting_Node0 -- Yes --> N_ApplyCPRSSpecialFormatting_Node0_action N_ApplyCPRSSpecialFormatting_Node0_action --> E_ApplyCPRSSpecialFormatting S_ApplyCPRSSpecialFormatting --> N_ApplyCPRSSpecialFormatting_Node0 N_ApplyCPRSSpecialFormatting_Node0 -- No --> E_ApplyCPRSSpecialFormatting
File: GCX016E.cbl
GIVEN: A cargo is identified as CPRS type
WHEN: The system processes CPRS cargo for database insertion
THEN:
  • Special cprs formatting is applied including clearing the car id field
  • Applying cprs-specific data formatting
βœ“ Consolidated Acceptance Criteria
  • The system builds foreign manifest information for new cargo → foreign manifest information is constructed using vessel details, voyage information, and transportation data from M10 segments
  • The system processes M10 segments to build foreign manifest data → manifest information including SCAC code, transport type, country code, and vessel details are extracted and prepared for 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_BuildForeignManifestInformationfromM10Segments(["Start Step"]) E_BuildForeignManifestInformationfromM10Segments(["End Step"]) N_BuildForeignManifestInformationfromM10Segments_Node0{"The system builds foreign manifest
information for new cargo"}:::decision N_BuildForeignManifestInformationfromM10Segments_Node0_action["Foreign manifest information is
constructed using vessel details,
voyage information, and
transportation data from M10
segments"]:::main N_BuildForeignManifestInformationfromM10Segments_Node0 -- Yes --> N_BuildForeignManifestInformationfromM10Segments_Node0_action N_BuildForeignManifestInformationfromM10Segments_Node0_action --> E_BuildForeignManifestInformationfromM10Segments S_BuildForeignManifestInformationfromM10Segments --> N_BuildForeignManifestInformationfromM10Segments_Node0 N_BuildForeignManifestInformationfromM10Segments_Node1{"The system processes M10 segments
to build foreign manifest data"}:::decision N_BuildForeignManifestInformationfromM10Segments_Node1_action["Manifest information including SCAC
code, transport type, country code,
and vessel details are extracted and
prepared for cargo record"]:::main N_BuildForeignManifestInformationfromM10Segments_Node1 -- Yes --> N_BuildForeignManifestInformationfromM10Segments_Node1_action N_BuildForeignManifestInformationfromM10Segments_Node1_action --> E_BuildForeignManifestInformationfromM10Segments N_BuildForeignManifestInformationfromM10Segments_Node0 -- No --> N_BuildForeignManifestInformationfromM10Segments_Node1 N_BuildForeignManifestInformationfromM10Segments_Node1 -- No --> E_BuildForeignManifestInformationfromM10Segments
File: GCX016E.cbl
GIVEN: M10 segments contain vessel name, voyage number, and transportation details
WHEN: The system builds foreign manifest information for new cargo
THEN: Foreign manifest information is constructed using vessel details, voyage information, and transportation data from M10 segments
File: GCX016E.cbl
GIVEN: M10 segments containing manifest header information for foreign bills
WHEN: The system processes M10 segments to build foreign manifest data
THEN:
  • Manifest information including scac code, transport type, country code, and vessel details are extracted
  • Prepared for cargo record
βœ“ Consolidated Acceptance Criteria
  • The system validates the cargo record before database insertion → all required fields are verified as populated and meeting business 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_ValidateCargoRecordCompleteness(["Start Step"]) E_ValidateCargoRecordCompleteness(["End Step"]) N_ValidateCargoRecordCompleteness_Node0{"The system validates the cargo
record before database insertion"}:::decision N_ValidateCargoRecordCompleteness_Node0_action["All required fields are verified as
populated and meeting business
validation requirements"]:::main N_ValidateCargoRecordCompleteness_Node0 -- Yes --> N_ValidateCargoRecordCompleteness_Node0_action N_ValidateCargoRecordCompleteness_Node0_action --> E_ValidateCargoRecordCompleteness S_ValidateCargoRecordCompleteness --> N_ValidateCargoRecordCompleteness_Node0 N_ValidateCargoRecordCompleteness_Node0 -- No --> E_ValidateCargoRecordCompleteness
File: GCX016E.cbl
GIVEN: A cargo record has been populated with segment data
WHEN: The system validates the cargo record before database insertion
THEN:
  • All required fields are verified as populated
  • Meeting business validation requirements
βœ“ Consolidated Acceptance Criteria
  • The system calls the database insert function → the GCCUSIO database insert operation is executed to create the new 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_CallGCCUSIODatabaseInsert(["Start Step"]) E_CallGCCUSIODatabaseInsert(["End Step"]) N_CallGCCUSIODatabaseInsert_Node0{"The system calls the database
insert function"}:::decision N_CallGCCUSIODatabaseInsert_Node0_action["The GCCUSIO database insert
operation is executed to create the
new cargo record"]:::main N_CallGCCUSIODatabaseInsert_Node0 -- Yes --> N_CallGCCUSIODatabaseInsert_Node0_action N_CallGCCUSIODatabaseInsert_Node0_action --> E_CallGCCUSIODatabaseInsert S_CallGCCUSIODatabaseInsert --> N_CallGCCUSIODatabaseInsert_Node0 N_CallGCCUSIODatabaseInsert_Node0 -- No --> E_CallGCCUSIODatabaseInsert
File: GCX016E.cbl
GIVEN: A validated cargo record is ready for database insertion
WHEN: The system calls the database insert function
THEN: The GCCUSIO database insert operation is executed to create the new cargo record
βœ“ Consolidated Acceptance Criteria
  • If the insert operation result → the insert operation is classified as either successful or failed based on the database response
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_InsertSuccessful(["Start Step"]) E_InsertSuccessful(["End Step"]) N_InsertSuccessful_Node0{"The system evaluates the insert
operation result"}:::decision N_InsertSuccessful_Node0_action["The insert operation is classified
as either successful or failed based
on the database response"]:::main N_InsertSuccessful_Node0 -- Yes --> N_InsertSuccessful_Node0_action N_InsertSuccessful_Node0_action --> E_InsertSuccessful S_InsertSuccessful --> N_InsertSuccessful_Node0 N_InsertSuccessful_Node0 -- No --> E_InsertSuccessful
File: GCX016E.cbl
GIVEN: A database insert operation has been executed
WHEN: The system evaluates the insert operation result
THEN: The insert operation is classified as either successful or failed based on the database response
βœ“ Consolidated Acceptance Criteria
  • The system processes the successful insert result → a log entry is created documenting the successful cargo creation with relevant cargo 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_LogSuccessfulCargoCreation(["Start Step"]) E_LogSuccessfulCargoCreation(["End Step"]) N_LogSuccessfulCargoCreation_Node0{"The system processes the successful
insert result"}:::decision N_LogSuccessfulCargoCreation_Node0_action["A log entry is created documenting
the successful cargo creation with
relevant cargo identifiers"]:::main N_LogSuccessfulCargoCreation_Node0 -- Yes --> N_LogSuccessfulCargoCreation_Node0_action N_LogSuccessfulCargoCreation_Node0_action --> E_LogSuccessfulCargoCreation S_LogSuccessfulCargoCreation --> N_LogSuccessfulCargoCreation_Node0 N_LogSuccessfulCargoCreation_Node0 -- No --> E_LogSuccessfulCargoCreation
File: GCX016E.cbl
GIVEN: A cargo record has been successfully inserted into the database
WHEN: The system processes the successful insert result
THEN: A log entry is created documenting the successful cargo creation with relevant cargo identifiers
βœ“ Consolidated Acceptance Criteria
  • The system updates processing statistics → cargo processing counters are incremented to reflect the successful cargo 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_UpdateCargoCounters(["Start Step"]) E_UpdateCargoCounters(["End Step"]) N_UpdateCargoCounters_Node0{"The system updates processing
statistics"}:::decision N_UpdateCargoCounters_Node0_action["Cargo processing counters are
incremented to reflect the
successful cargo creation"]:::main N_UpdateCargoCounters_Node0 -- Yes --> N_UpdateCargoCounters_Node0_action N_UpdateCargoCounters_Node0_action --> E_UpdateCargoCounters S_UpdateCargoCounters --> N_UpdateCargoCounters_Node0 N_UpdateCargoCounters_Node0 -- No --> E_UpdateCargoCounters
File: GCX016E.cbl
GIVEN: A cargo record has been successfully created
WHEN: The system updates processing statistics
THEN: Cargo processing counters are incremented to reflect the successful cargo creation
βœ“ Consolidated Acceptance Criteria
  • The system generates success notifications → appropriate notification messages are created and sent to relevant parties or 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_GenerateSuccessNotification(["Start Step"]) E_GenerateSuccessNotification(["End Step"]) N_GenerateSuccessNotification_Node0{"The system generates success
notifications"}:::decision N_GenerateSuccessNotification_Node0_action["Appropriate notification messages
are created and sent to relevant
parties or systems"]:::main N_GenerateSuccessNotification_Node0 -- Yes --> N_GenerateSuccessNotification_Node0_action N_GenerateSuccessNotification_Node0_action --> E_GenerateSuccessNotification S_GenerateSuccessNotification --> N_GenerateSuccessNotification_Node0 N_GenerateSuccessNotification_Node0 -- No --> E_GenerateSuccessNotification
File: GCX016E.cbl
GIVEN: A cargo record has been successfully created and logged
WHEN: The system generates success notifications
THEN:
  • Appropriate notification messages are created
  • Sent to relevant parties or systems
βœ“ Consolidated Acceptance Criteria
  • The system processes the failed insert result → an error log entry is created documenting the insert failure with error 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_LogInsertError(["Start Step"]) E_LogInsertError(["End Step"]) N_LogInsertError_Node0{"The system processes the failed
insert result"}:::decision N_LogInsertError_Node0_action["An error log entry is created
documenting the insert failure with
error details and cargo information"]:::exclusion N_LogInsertError_Node0 -- Yes -->|Alternative| N_LogInsertError_Node0_action N_LogInsertError_Node0_action --> E_LogInsertError S_LogInsertError --> N_LogInsertError_Node0 N_LogInsertError_Node0 -- No --> E_LogInsertError
File: GCX016E.cbl
GIVEN: A database insert operation has failed
WHEN: The system processes the failed insert result
THEN:
  • An error log entry is created documenting the insert failure with error details
  • Cargo information
βœ“ Consolidated Acceptance Criteria
  • If the station type requirement → the system routes to either destination station retrieval or key station retrieval based on the station type needed
  • If the station type requirement → the system routes to either destination station retrieval or key station retrieval based on the station type 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_StationTypeRequired(["Start Step"]) E_StationTypeRequired(["End Step"]) N_StationTypeRequired_Node0{"The system evaluates the station
type requirement"}:::decision N_StationTypeRequired_Node0_action["The system routes to either
destination station retrieval or key
station retrieval based on the
station type needed"]:::main N_StationTypeRequired_Node0 -- Yes --> N_StationTypeRequired_Node0_action N_StationTypeRequired_Node0_action --> E_StationTypeRequired S_StationTypeRequired --> N_StationTypeRequired_Node0 N_StationTypeRequired_Node1{"The system evaluates the station
type requirement"}:::decision N_StationTypeRequired_Node1_action["The system routes to either
destination station retrieval or key
station retrieval based on the
station type needed"]:::main N_StationTypeRequired_Node1 -- Yes --> N_StationTypeRequired_Node1_action N_StationTypeRequired_Node1_action --> E_StationTypeRequired N_StationTypeRequired_Node0 -- No --> N_StationTypeRequired_Node1 N_StationTypeRequired_Node1 -- No --> E_StationTypeRequired
File: GCX016E.cbl
GIVEN: A station data lookup request is initiated
WHEN: The system evaluates the station type requirement
THEN: The system routes to either destination station retrieval or key station retrieval based on the station type needed
File: GCX016E.cbl
GIVEN: A station data lookup request is initiated
WHEN: The system evaluates the station type requirement
THEN: The system routes to either destination station retrieval or key station retrieval based on the station type needed
βœ“ Consolidated Acceptance Criteria
  • The system processes the destination station request → the system initiates retrieval of destination station data from the DS table
  • The destination station lookup is executed → the system should retrieve destination station details from the GCSTBRT table 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_RetrieveDestinationStationData(["Start Step"]) E_RetrieveDestinationStationData(["End Step"]) N_RetrieveDestinationStationData_Node0{"The system processes the
destination station request"}:::decision N_RetrieveDestinationStationData_Node0_action["The system initiates retrieval of
destination station data from the DS
table"]:::main N_RetrieveDestinationStationData_Node0 -- Yes --> N_RetrieveDestinationStationData_Node0_action N_RetrieveDestinationStationData_Node0_action --> E_RetrieveDestinationStationData S_RetrieveDestinationStationData --> N_RetrieveDestinationStationData_Node0 N_RetrieveDestinationStationData_Node1{"The destination station lookup is
executed"}:::decision N_RetrieveDestinationStationData_Node1_action["The system should retrieve
destination station details from the
GCSTBRT table segments"]:::main N_RetrieveDestinationStationData_Node1 -- Yes --> N_RetrieveDestinationStationData_Node1_action N_RetrieveDestinationStationData_Node1_action --> E_RetrieveDestinationStationData N_RetrieveDestinationStationData_Node0 -- No --> N_RetrieveDestinationStationData_Node1 N_RetrieveDestinationStationData_Node1 -- No --> E_RetrieveDestinationStationData
File: GCX016E.cbl
GIVEN: A destination station lookup is required
WHEN: The system processes the destination station request
THEN: The system initiates retrieval of destination station data from the DS table
File: GCX016E.cbl
GIVEN: A destination station data request is processed through GCCTBIO
WHEN: The destination station lookup is executed
THEN: The system should retrieve destination station details from the GCSTBRT table segments
βœ“ Consolidated Acceptance Criteria
  • The system processes the key station request → the system initiates retrieval of key station data from the KS table
  • The key station lookup is executed → the system should retrieve key station details from the GCSTBRT table 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_RetrieveKeyStationData(["Start Step"]) E_RetrieveKeyStationData(["End Step"]) N_RetrieveKeyStationData_Node0{"The system processes the key
station request"}:::decision N_RetrieveKeyStationData_Node0_action["The system initiates retrieval of
key station data from the KS table"]:::main N_RetrieveKeyStationData_Node0 -- Yes --> N_RetrieveKeyStationData_Node0_action N_RetrieveKeyStationData_Node0_action --> E_RetrieveKeyStationData S_RetrieveKeyStationData --> N_RetrieveKeyStationData_Node0 N_RetrieveKeyStationData_Node1{"The key station lookup is executed"}:::decision N_RetrieveKeyStationData_Node1_action["The system should retrieve key
station details from the GCSTBRT
table segments"]:::main N_RetrieveKeyStationData_Node1 -- Yes --> N_RetrieveKeyStationData_Node1_action N_RetrieveKeyStationData_Node1_action --> E_RetrieveKeyStationData N_RetrieveKeyStationData_Node0 -- No --> N_RetrieveKeyStationData_Node1 N_RetrieveKeyStationData_Node1 -- No --> E_RetrieveKeyStationData
File: GCX016E.cbl
GIVEN: A key station lookup is required
WHEN: The system processes the key station request
THEN: The system initiates retrieval of key station data from the KS table
File: GCX016E.cbl
GIVEN: A key station data request is processed through GCCTBIO
WHEN: The key station lookup is executed
THEN: The system should retrieve key station details from the GCSTBRT table segments
βœ“ Consolidated Acceptance Criteria
  • The system needs to access table data → the system calls the generic table I/O interface to facilitate data access
  • The system needs to access key station information → the generic table I/O interface is called to access the KS table via GCCTBIO
  • The system needs to retrieve station information → the generic table I/O interface is called to access the station data repository
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CallGenericTableIOInterface(["Start Step"]) E_CallGenericTableIOInterface(["End Step"]) N_CallGenericTableIOInterface_Node0{"The system needs to access table
data"}:::decision N_CallGenericTableIOInterface_Node0_action["The system calls the generic table
IO interface to facilitate data
access"]:::main N_CallGenericTableIOInterface_Node0 -- Yes --> N_CallGenericTableIOInterface_Node0_action N_CallGenericTableIOInterface_Node0_action --> E_CallGenericTableIOInterface S_CallGenericTableIOInterface --> N_CallGenericTableIOInterface_Node0 N_CallGenericTableIOInterface_Node1{"The system needs to access key
station information"}:::decision N_CallGenericTableIOInterface_Node1_action["The generic table IO interface is
called to access the KS table via
GCCTBIO"]:::main N_CallGenericTableIOInterface_Node1 -- Yes --> N_CallGenericTableIOInterface_Node1_action N_CallGenericTableIOInterface_Node1_action --> E_CallGenericTableIOInterface N_CallGenericTableIOInterface_Node0 -- No --> N_CallGenericTableIOInterface_Node1 N_CallGenericTableIOInterface_Node2{"The system needs to retrieve
station information"}:::decision N_CallGenericTableIOInterface_Node2_action["The generic table IO interface is
called to access the station data
repository"]:::main N_CallGenericTableIOInterface_Node2 -- Yes --> N_CallGenericTableIOInterface_Node2_action N_CallGenericTableIOInterface_Node2_action --> E_CallGenericTableIOInterface N_CallGenericTableIOInterface_Node1 -- No --> N_CallGenericTableIOInterface_Node2 N_CallGenericTableIOInterface_Node2 -- No --> E_CallGenericTableIOInterface
File: GCX016E.cbl
GIVEN: Station data retrieval is required from either DS or KS table
WHEN: The system needs to access table data
THEN: The system calls the generic table I/O interface to facilitate data access
File: GCX016E.cbl
GIVEN: A location identifier has been extracted from the X4 segment
WHEN: The system needs to access key station information
THEN: The generic table I/O interface is called to access the KS table via GCCTBIO
File: GCX016E.cbl
GIVEN: A valid location identifier is available for processing
WHEN: The system needs to retrieve station information
THEN: The generic table I/O interface is called to access the station data repository
βœ“ Consolidated Acceptance Criteria
  • The system executes table access through GCCTBIO → the system retrieves data from the DS table containing destination station information
  • The system calls GCCTBIO to access the DS table → the system retrieves station data from the DS table using the GCCTBIO interface
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AccessDSTableviaGCCTBIO(["Start Step"]) E_AccessDSTableviaGCCTBIO(["End Step"]) N_AccessDSTableviaGCCTBIO_Node0{"The system executes table access
through GCCTBIO"}:::decision N_AccessDSTableviaGCCTBIO_Node0_action["The system retrieves data from the
DS table containing destination
station information"]:::main N_AccessDSTableviaGCCTBIO_Node0 -- Yes --> N_AccessDSTableviaGCCTBIO_Node0_action N_AccessDSTableviaGCCTBIO_Node0_action --> E_AccessDSTableviaGCCTBIO S_AccessDSTableviaGCCTBIO --> N_AccessDSTableviaGCCTBIO_Node0 N_AccessDSTableviaGCCTBIO_Node1{"The system calls GCCTBIO to access
the DS table"}:::decision N_AccessDSTableviaGCCTBIO_Node1_action["The system retrieves station data
from the DS table using the GCCTBIO
interface"]:::main N_AccessDSTableviaGCCTBIO_Node1 -- Yes --> N_AccessDSTableviaGCCTBIO_Node1_action N_AccessDSTableviaGCCTBIO_Node1_action --> E_AccessDSTableviaGCCTBIO N_AccessDSTableviaGCCTBIO_Node0 -- No --> N_AccessDSTableviaGCCTBIO_Node1 N_AccessDSTableviaGCCTBIO_Node1 -- No --> E_AccessDSTableviaGCCTBIO
File: GCX016E.cbl
GIVEN: Destination station data is required
WHEN: The system executes table access through GCCTBIO
THEN: The system retrieves data from the DS table containing destination station information
File: GCX016E.cbl
GIVEN: Destination station information is needed
WHEN: The system calls GCCTBIO to access the DS table
THEN: The system retrieves station data from the DS table using the GCCTBIO interface
βœ“ Consolidated Acceptance Criteria
  • The system executes table access through GCCTBIO → the system retrieves data from the KS table containing key station information
  • The system accesses the KS table through GCCTBIO → key station information is retrieved from the KS table for the specified location identifier
  • The system calls GCCTBIO to access the KS table → the system retrieves station data from the KS table using the GCCTBIO interface
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AccessKSTableviaGCCTBIO(["Start Step"]) E_AccessKSTableviaGCCTBIO(["End Step"]) N_AccessKSTableviaGCCTBIO_Node0{"The system executes table access
through GCCTBIO"}:::decision N_AccessKSTableviaGCCTBIO_Node0_action["The system retrieves data from the
KS table containing key station
information"]:::main N_AccessKSTableviaGCCTBIO_Node0 -- Yes --> N_AccessKSTableviaGCCTBIO_Node0_action N_AccessKSTableviaGCCTBIO_Node0_action --> E_AccessKSTableviaGCCTBIO S_AccessKSTableviaGCCTBIO --> N_AccessKSTableviaGCCTBIO_Node0 N_AccessKSTableviaGCCTBIO_Node1{"The system accesses the KS table
through GCCTBIO"}:::decision N_AccessKSTableviaGCCTBIO_Node1_action["Key station information is
retrieved from the KS table for the
specified location identifier"]:::main N_AccessKSTableviaGCCTBIO_Node1 -- Yes --> N_AccessKSTableviaGCCTBIO_Node1_action N_AccessKSTableviaGCCTBIO_Node1_action --> E_AccessKSTableviaGCCTBIO N_AccessKSTableviaGCCTBIO_Node0 -- No --> N_AccessKSTableviaGCCTBIO_Node1 N_AccessKSTableviaGCCTBIO_Node2{"The system calls GCCTBIO to access
the KS table"}:::decision N_AccessKSTableviaGCCTBIO_Node2_action["The system retrieves station data
from the KS table using the GCCTBIO
interface"]:::main N_AccessKSTableviaGCCTBIO_Node2 -- Yes --> N_AccessKSTableviaGCCTBIO_Node2_action N_AccessKSTableviaGCCTBIO_Node2_action --> E_AccessKSTableviaGCCTBIO N_AccessKSTableviaGCCTBIO_Node1 -- No --> N_AccessKSTableviaGCCTBIO_Node2 N_AccessKSTableviaGCCTBIO_Node2 -- No --> E_AccessKSTableviaGCCTBIO
File: GCX016E.cbl
GIVEN: Key station data is required
WHEN: The system executes table access through GCCTBIO
THEN: The system retrieves data from the KS table containing key station information
File: GCX016E.cbl
GIVEN: The generic table I/O interface has been called with a location identifier
WHEN: The system accesses the KS table through GCCTBIO
THEN: Key station information is retrieved from the KS table for the specified location identifier
File: GCX016E.cbl
GIVEN: Key station information is needed
WHEN: The system calls GCCTBIO to access the KS table
THEN: The system retrieves station data from the KS table using the GCCTBIO interface
βœ“ Consolidated Acceptance Criteria
  • If the lookup results → the system determines if the station was found and routes processing accordingly
  • If the lookup results → the system determines if the station was found or not found
  • If the lookup results → the system determines if the station was found and routes to either location validation or station not found 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_StationFound(["Start Step"]) E_StationFound(["End Step"]) N_StationFound_Node0{"The system evaluates the lookup
results"}:::decision N_StationFound_Node0_action["The system determines if the
station was found and routes
processing accordingly"]:::main N_StationFound_Node0 -- Yes --> N_StationFound_Node0_action N_StationFound_Node0_action --> E_StationFound S_StationFound --> N_StationFound_Node0 N_StationFound_Node1{"The system evaluates the lookup
results"}:::decision N_StationFound_Node1_action["The system determines if the
station was found or not found"]:::main N_StationFound_Node1 -- Yes --> N_StationFound_Node1_action N_StationFound_Node1_action --> E_StationFound N_StationFound_Node0 -- No --> N_StationFound_Node1 N_StationFound_Node2{"The system evaluates the lookup
results"}:::decision N_StationFound_Node2_action["The system determines if the
station was found and routes to
either location validation or
station not found error processing"]:::main N_StationFound_Node2 -- Yes --> N_StationFound_Node2_action N_StationFound_Node2_action --> E_StationFound N_StationFound_Node1 -- No --> N_StationFound_Node2 N_StationFound_Node2 -- No --> E_StationFound
File: GCX016E.cbl
GIVEN: A station lookup has been performed on either DS or KS table
WHEN: The system evaluates the lookup results
THEN:
  • The system determines if the station was found
  • Routes processing accordingly
File: GCX016E.cbl
GIVEN: A lookup has been performed in the destination station table
WHEN: The system evaluates the lookup results
THEN: The system determines if the station was found or not found
File: GCX016E.cbl
GIVEN: A station lookup has been performed in either DS or KS table
WHEN: The system evaluates the lookup results
THEN:
  • The system determines if the station was found
  • Routes to either location validation or station not found error processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the retrieved station data → the system extracts the relevant station information fields 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_ExtractStationInformation(["Start Step"]) E_ExtractStationInformation(["End Step"]) N_ExtractStationInformation_Node0{"The system processes the retrieved
station data"}:::decision N_ExtractStationInformation_Node0_action["The system extracts the relevant
station information fields for
further processing"]:::main N_ExtractStationInformation_Node0 -- Yes --> N_ExtractStationInformation_Node0_action N_ExtractStationInformation_Node0_action --> E_ExtractStationInformation S_ExtractStationInformation --> N_ExtractStationInformation_Node0 N_ExtractStationInformation_Node0 -- No --> E_ExtractStationInformation
File: GCX016E.cbl
GIVEN: A station record has been found in the table
WHEN: The system processes the retrieved station data
THEN: The system extracts the relevant station information fields for further processing
βœ“ Consolidated Acceptance Criteria
  • The system validates the location identifiers → the system ensures location identifiers meet required format 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_ValidateLocationIdentifiers(["Start Step"]) E_ValidateLocationIdentifiers(["End Step"]) N_ValidateLocationIdentifiers_Node0{"The system validates the location
identifiers"}:::decision N_ValidateLocationIdentifiers_Node0_action["The system ensures location
identifiers meet required format and
business rules"]:::main N_ValidateLocationIdentifiers_Node0 -- Yes --> N_ValidateLocationIdentifiers_Node0_action N_ValidateLocationIdentifiers_Node0_action --> E_ValidateLocationIdentifiers S_ValidateLocationIdentifiers --> N_ValidateLocationIdentifiers_Node0 N_ValidateLocationIdentifiers_Node0 -- No --> E_ValidateLocationIdentifiers
File: GCX016E.cbl
GIVEN: Station information has been extracted from the table
WHEN: The system validates the location identifiers
THEN:
  • The system ensures location identifiers meet required format
  • Business rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the validated station data → the system sets the appropriate station data fields with the retrieved information
  • The system processes the validated station information → station data fields are populated with the retrieved key 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_SetStationDataFields(["Start Step"]) E_SetStationDataFields(["End Step"]) N_SetStationDataFields_Node0{"The system processes the validated
station data"}:::decision N_SetStationDataFields_Node0_action["The system sets the appropriate
station data fields with the
retrieved information"]:::main N_SetStationDataFields_Node0 -- Yes --> N_SetStationDataFields_Node0_action N_SetStationDataFields_Node0_action --> E_SetStationDataFields S_SetStationDataFields --> N_SetStationDataFields_Node0 N_SetStationDataFields_Node1{"The system processes the validated
station information"}:::decision N_SetStationDataFields_Node1_action["Station data fields are populated
with the retrieved key station
details"]:::main N_SetStationDataFields_Node1 -- Yes --> N_SetStationDataFields_Node1_action N_SetStationDataFields_Node1_action --> E_SetStationDataFields N_SetStationDataFields_Node0 -- No --> N_SetStationDataFields_Node1 N_SetStationDataFields_Node1 -- No --> E_SetStationDataFields
File: GCX016E.cbl
GIVEN: Station information has been validated successfully
WHEN: The system processes the validated station data
THEN: The system sets the appropriate station data fields with the retrieved information
File: GCX016E.cbl
GIVEN: Location identifier has been successfully validated
WHEN: The system processes the validated station information
THEN: Station data fields are populated with the retrieved key station details
βœ“ Consolidated Acceptance Criteria
  • The requested station is not found in the table → the system initiates error handling procedures for the missing station
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleStationNotFound(["Start Step"]) E_HandleStationNotFound(["End Step"]) N_HandleStationNotFound_Node0{"The requested station is not found
in the table"}:::decision N_HandleStationNotFound_Node0_action["The system initiates error handling
procedures for the missing station"]:::main N_HandleStationNotFound_Node0 -- Yes --> N_HandleStationNotFound_Node0_action N_HandleStationNotFound_Node0_action --> E_HandleStationNotFound S_HandleStationNotFound --> N_HandleStationNotFound_Node0 N_HandleStationNotFound_Node0 -- No --> E_HandleStationNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A station lookup has been performed
WHEN: The requested station is not found in the table
THEN: The system initiates error handling procedures for the missing station
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the station lookup process → the system returns the station information or error status 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_ReturnStationInformation(["Start Step"]) E_ReturnStationInformation(["End Step"]) N_ReturnStationInformation_Node0{"The system finalizes the station
lookup process"}:::decision N_ReturnStationInformation_Node0_action["The system returns the station
information or error status to the
requesting process"]:::main N_ReturnStationInformation_Node0 -- Yes --> N_ReturnStationInformation_Node0_action N_ReturnStationInformation_Node0_action --> E_ReturnStationInformation S_ReturnStationInformation --> N_ReturnStationInformation_Node0 N_ReturnStationInformation_Node0 -- No --> E_ReturnStationInformation
File: GCX016E.cbl
GIVEN: Station data processing has been completed (either successfully or with error handling)
WHEN: The system finalizes the station lookup process
THEN: The system returns the station information or error status to the requesting process
βœ“ Consolidated Acceptance Criteria
  • The system processes the error condition → the system logs the station lookup 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_LogStationLookupError(["Start Step"]) E_LogStationLookupError(["End Step"]) N_LogStationLookupError_Node0{"The system processes the error
condition"}:::decision N_LogStationLookupError_Node0_action["The system logs the station lookup
error for audit and troubleshooting
purposes"]:::exclusion N_LogStationLookupError_Node0 -- Yes -->|Alternative| N_LogStationLookupError_Node0_action N_LogStationLookupError_Node0_action --> E_LogStationLookupError S_LogStationLookupError --> N_LogStationLookupError_Node0 N_LogStationLookupError_Node0 -- No --> E_LogStationLookupError
File: GCX016E.cbl
GIVEN: A station lookup error has occurred
WHEN: The system processes the error condition
THEN:
  • The system logs the station lookup error for audit
  • Troubleshooting purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs to identify the destination station → the location identifier is extracted from the X4 segment data
  • The system needs to validate the location identifier for station lookup → the location identifier is extracted from the X4 segment and prepared for key station table lookup
  • The system processes the X4 segment for key station lookup → the location identifier is extracted from the X4 segment data
  • The system processes the X4 segment for station lookup → the location identifier is extracted from the X4 segment and made available 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_ExtractLocationIdentifierfromX4Segment(["Start Step"]) E_ExtractLocationIdentifierfromX4Segment(["End Step"]) N_ExtractLocationIdentifierfromX4Segment_Node0{"The system needs to identify the
destination station"}:::decision N_ExtractLocationIdentifierfromX4Segment_Node0_action["The location identifier is
extracted from the X4 segment data"]:::main N_ExtractLocationIdentifierfromX4Segment_Node0 -- Yes --> N_ExtractLocationIdentifierfromX4Segment_Node0_action N_ExtractLocationIdentifierfromX4Segment_Node0_action --> E_ExtractLocationIdentifierfromX4Segment S_ExtractLocationIdentifierfromX4Segment --> N_ExtractLocationIdentifierfromX4Segment_Node0 N_ExtractLocationIdentifierfromX4Segment_Node1{"The system needs to validate the
location identifier for station
lookup"}:::decision N_ExtractLocationIdentifierfromX4Segment_Node1_action["The location identifier is
extracted from the X4 segment and
prepared for key station table
lookup"]:::main N_ExtractLocationIdentifierfromX4Segment_Node1 -- Yes --> N_ExtractLocationIdentifierfromX4Segment_Node1_action N_ExtractLocationIdentifierfromX4Segment_Node1_action --> E_ExtractLocationIdentifierfromX4Segment N_ExtractLocationIdentifierfromX4Segment_Node0 -- No --> N_ExtractLocationIdentifierfromX4Segment_Node1 N_ExtractLocationIdentifierfromX4Segment_Node2{"The system processes the X4 segment
for key station lookup"}:::decision N_ExtractLocationIdentifierfromX4Segment_Node2_action["The location identifier is
extracted from the X4 segment data"]:::main N_ExtractLocationIdentifierfromX4Segment_Node2 -- Yes --> N_ExtractLocationIdentifierfromX4Segment_Node2_action N_ExtractLocationIdentifierfromX4Segment_Node2_action --> E_ExtractLocationIdentifierfromX4Segment N_ExtractLocationIdentifierfromX4Segment_Node1 -- No --> N_ExtractLocationIdentifierfromX4Segment_Node2 N_ExtractLocationIdentifierfromX4Segment_Node3{"The system processes the X4 segment
for station lookup"}:::decision N_ExtractLocationIdentifierfromX4Segment_Node3_action["The location identifier is
extracted from the X4 segment and
made available for table lookup"]:::main N_ExtractLocationIdentifierfromX4Segment_Node3 -- Yes --> N_ExtractLocationIdentifierfromX4Segment_Node3_action N_ExtractLocationIdentifierfromX4Segment_Node3_action --> E_ExtractLocationIdentifierfromX4Segment N_ExtractLocationIdentifierfromX4Segment_Node2 -- No --> N_ExtractLocationIdentifierfromX4Segment_Node3 N_ExtractLocationIdentifierfromX4Segment_Node3 -- No --> E_ExtractLocationIdentifierfromX4Segment
File: GCX016E.cbl
GIVEN: An X4 segment is being processed for cargo disposition
WHEN: The system needs to identify the destination station
THEN: The location identifier is extracted from the X4 segment data
File: GCX016E.cbl
GIVEN: An X4 segment containing disposition code information is being processed
WHEN: The system needs to validate the location identifier for station lookup
THEN:
  • The location identifier is extracted from the x4 segment
  • Prepared for key station table lookup
File: GCX016E.cbl
GIVEN: An X4 segment contains cargo disposition data with location information
WHEN: The system processes the X4 segment for key station lookup
THEN: The location identifier is extracted from the X4 segment data
File: GCX016E.cbl
GIVEN: An X4 segment containing location data is available for processing
WHEN: The system processes the X4 segment for station lookup
THEN:
  • The location identifier is extracted from the x4 segment
  • Made available for table lookup
βœ“ Consolidated Acceptance Criteria
  • The system checks for the presence of the location identifier → if location identifier is present, proceed with station lookup, otherwise generate station not found error
  • The system checks for the presence of a location identifier → if location identifier is present, proceed with station lookup; if not present, continue with 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_LocationIdentifierPresent(["Start Step"]) E_LocationIdentifierPresent(["End Step"]) N_LocationIdentifierPresent_Node0{"The system checks for the presence
of the location identifier"}:::decision N_LocationIdentifierPresent_Node0_action["If location identifier is present,
proceed with station lookup,
otherwise generate station not found
error"]:::main N_LocationIdentifierPresent_Node0 -- Yes --> N_LocationIdentifierPresent_Node0_action N_LocationIdentifierPresent_Node0_action --> E_LocationIdentifierPresent S_LocationIdentifierPresent --> N_LocationIdentifierPresent_Node0 N_LocationIdentifierPresent_Node1{"The system checks for the presence
of a location identifier"}:::decision N_LocationIdentifierPresent_Node1_action["If location identifier is present,
proceed with station lookup if not
present, continue with default
routing"]:::main N_LocationIdentifierPresent_Node1 -- Yes --> N_LocationIdentifierPresent_Node1_action N_LocationIdentifierPresent_Node1_action --> E_LocationIdentifierPresent N_LocationIdentifierPresent_Node0 -- No --> N_LocationIdentifierPresent_Node1 N_LocationIdentifierPresent_Node1 -- No --> E_LocationIdentifierPresent
File: GCX016E.cbl
GIVEN: A location identifier has been extracted from the X4 segment
WHEN: The system checks for the presence of the location identifier
THEN: If location identifier is present, proceed with station lookup, otherwise generate station not found error
File: GCX016E.cbl
GIVEN: The system has extracted location data from the X4 segment
WHEN: The system checks for the presence of a location identifier
THEN: If location identifier is present, proceed with station lookup; if not present, continue with default routing
βœ“ Consolidated Acceptance Criteria
  • The system prepares to access the destination station table → the DS table type is set for the generic table interface lookup
  • The system prepares to access the DS table → the DS table type is set for the lookup 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_SetDSTableTypeforLookup(["Start Step"]) E_SetDSTableTypeforLookup(["End Step"]) N_SetDSTableTypeforLookup_Node0{"The system prepares to access the
destination station table"}:::decision N_SetDSTableTypeforLookup_Node0_action["The DS table type is set for the
generic table interface lookup"]:::main N_SetDSTableTypeforLookup_Node0 -- Yes --> N_SetDSTableTypeforLookup_Node0_action N_SetDSTableTypeforLookup_Node0_action --> E_SetDSTableTypeforLookup S_SetDSTableTypeforLookup --> N_SetDSTableTypeforLookup_Node0 N_SetDSTableTypeforLookup_Node1{"The system prepares to access the
DS table"}:::decision N_SetDSTableTypeforLookup_Node1_action["The DS table type is set for the
lookup operation"]:::main N_SetDSTableTypeforLookup_Node1 -- Yes --> N_SetDSTableTypeforLookup_Node1_action N_SetDSTableTypeforLookup_Node1_action --> E_SetDSTableTypeforLookup N_SetDSTableTypeforLookup_Node0 -- No --> N_SetDSTableTypeforLookup_Node1 N_SetDSTableTypeforLookup_Node1 -- No --> E_SetDSTableTypeforLookup
File: GCX016E.cbl
GIVEN: A valid location identifier exists for station lookup
WHEN: The system prepares to access the destination station table
THEN: The DS table type is set for the generic table interface lookup
File: GCX016E.cbl
GIVEN: A valid location identifier is available for station lookup
WHEN: The system prepares to access the DS table
THEN: The DS table type is set for the lookup operation
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve station information → the generic table I/O interface GCCTBIO is called to access station 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_CallGenericTableIOInterfaceGCCTBIO(["Start Step"]) E_CallGenericTableIOInterfaceGCCTBIO(["End Step"]) N_CallGenericTableIOInterfaceGCCTBIO_Node0{"The system needs to retrieve
station information"}:::decision N_CallGenericTableIOInterfaceGCCTBIO_Node0_action["The generic table IO interface
GCCTBIO is called to access station
data"]:::main N_CallGenericTableIOInterfaceGCCTBIO_Node0 -- Yes --> N_CallGenericTableIOInterfaceGCCTBIO_Node0_action N_CallGenericTableIOInterfaceGCCTBIO_Node0_action --> E_CallGenericTableIOInterfaceGCCTBIO S_CallGenericTableIOInterfaceGCCTBIO --> N_CallGenericTableIOInterfaceGCCTBIO_Node0 N_CallGenericTableIOInterfaceGCCTBIO_Node0 -- No --> E_CallGenericTableIOInterfaceGCCTBIO
File: GCX016E.cbl
GIVEN: The DS table type is configured for station lookup
WHEN: The system needs to retrieve station information
THEN: The generic table I/O interface GCCTBIO is called to access station data
βœ“ Consolidated Acceptance Criteria
  • The system checks the lookup results → if station record is found, proceed with station data retrieval, otherwise generate station not found error
  • The system checks the lookup result → if station record is found, proceed with data retrieval; if not found, log error and continue with 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_StationRecordFound(["Start Step"]) E_StationRecordFound(["End Step"]) N_StationRecordFound_Node0{"The system checks the lookup
results"}:::decision N_StationRecordFound_Node0_action["If station record is found, proceed
with station data retrieval,
otherwise generate station not found
error"]:::main N_StationRecordFound_Node0 -- Yes --> N_StationRecordFound_Node0_action N_StationRecordFound_Node0_action --> E_StationRecordFound S_StationRecordFound --> N_StationRecordFound_Node0 N_StationRecordFound_Node1{"The system checks the lookup result"}:::decision N_StationRecordFound_Node1_action["If station record is found, proceed
with data retrieval if not found,
log error and continue with default
routing"]:::main N_StationRecordFound_Node1 -- Yes --> N_StationRecordFound_Node1_action N_StationRecordFound_Node1_action --> E_StationRecordFound N_StationRecordFound_Node0 -- No --> N_StationRecordFound_Node1 N_StationRecordFound_Node1 -- No --> E_StationRecordFound
File: GCX016E.cbl
GIVEN: The generic table interface has been called for station lookup
WHEN: The system checks the lookup results
THEN: If station record is found, proceed with station data retrieval, otherwise generate station not found error
File: GCX016E.cbl
GIVEN: The GCCTBIO interface has been called with a location identifier
WHEN: The system checks the lookup result
THEN:
  • If station record is found, proceed with data retrieval; if not found, log error
  • Continue with default routing
βœ“ Consolidated Acceptance Criteria
  • The system accesses the station record → the destination station information is retrieved from the table segments
  • The system processes the destination station request → the system accesses the DS table via GCCTBIO to retrieve destination 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_RetrieveDestinationStationInformation(["Start Step"]) E_RetrieveDestinationStationInformation(["End Step"]) N_RetrieveDestinationStationInformation_Node0{"The system accesses the station
record"}:::decision N_RetrieveDestinationStationInformation_Node0_action["The destination station information
is retrieved from the table segments"]:::main N_RetrieveDestinationStationInformation_Node0 -- Yes --> N_RetrieveDestinationStationInformation_Node0_action N_RetrieveDestinationStationInformation_Node0_action --> E_RetrieveDestinationStationInformation S_RetrieveDestinationStationInformation --> N_RetrieveDestinationStationInformation_Node0 N_RetrieveDestinationStationInformation_Node1{"The system processes the
destination station request"}:::decision N_RetrieveDestinationStationInformation_Node1_action["The system accesses the DS table
via GCCTBIO to retrieve destination
station information"]:::main N_RetrieveDestinationStationInformation_Node1 -- Yes --> N_RetrieveDestinationStationInformation_Node1_action N_RetrieveDestinationStationInformation_Node1_action --> E_RetrieveDestinationStationInformation N_RetrieveDestinationStationInformation_Node0 -- No --> N_RetrieveDestinationStationInformation_Node1 N_RetrieveDestinationStationInformation_Node1 -- No --> E_RetrieveDestinationStationInformation
File: GCX016E.cbl
GIVEN: A station record has been found in the destination station table
WHEN: The system accesses the station record
THEN: The destination station information is retrieved from the table segments
File: GCX016E.cbl
GIVEN: A destination station lookup is required
WHEN: The system processes the destination station request
THEN: The system accesses the DS table via GCCTBIO to retrieve destination station information
βœ“ Consolidated Acceptance Criteria
  • The system processes the station record data → the station name and routing data are extracted from the 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_ExtractStationNameandRoutingData(["Start Step"]) E_ExtractStationNameandRoutingData(["End Step"]) N_ExtractStationNameandRoutingData_Node0{"The system processes the station
record data"}:::decision N_ExtractStationNameandRoutingData_Node0_action["The station name and routing data
are extracted from the station
information"]:::main N_ExtractStationNameandRoutingData_Node0 -- Yes --> N_ExtractStationNameandRoutingData_Node0_action N_ExtractStationNameandRoutingData_Node0_action --> E_ExtractStationNameandRoutingData S_ExtractStationNameandRoutingData --> N_ExtractStationNameandRoutingData_Node0 N_ExtractStationNameandRoutingData_Node0 -- No --> E_ExtractStationNameandRoutingData
File: GCX016E.cbl
GIVEN: Destination station information has been retrieved
WHEN: The system processes the station record data
THEN:
  • The station name
  • Routing data are extracted from the station information
βœ“ Consolidated Acceptance Criteria
  • The system validates the station information → the station information is checked for completeness and validity
  • The system validates the station information → the station data is confirmed as valid or invalid based on 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_ValidateStationInformation(["Start Step"]) E_ValidateStationInformation(["End Step"]) N_ValidateStationInformation_Node0{"The system validates the station
information"}:::decision N_ValidateStationInformation_Node0_action["The station information is checked
for completeness and validity"]:::main N_ValidateStationInformation_Node0 -- Yes --> N_ValidateStationInformation_Node0_action N_ValidateStationInformation_Node0_action --> E_ValidateStationInformation S_ValidateStationInformation --> N_ValidateStationInformation_Node0 N_ValidateStationInformation_Node1{"The system validates the station
information"}:::decision N_ValidateStationInformation_Node1_action["The station data is confirmed as
valid or invalid based on business
rules"]:::main N_ValidateStationInformation_Node1 -- Yes --> N_ValidateStationInformation_Node1_action N_ValidateStationInformation_Node1_action --> E_ValidateStationInformation N_ValidateStationInformation_Node0 -- No --> N_ValidateStationInformation_Node1 N_ValidateStationInformation_Node1 -- No --> E_ValidateStationInformation
File: GCX016E.cbl
GIVEN: Station name and routing data have been extracted
WHEN: The system validates the station information
THEN:
  • The station information is checked for completeness
  • Validity
File: GCX016E.cbl
GIVEN: Key station data has been loaded into working storage
WHEN: The system validates the station information
THEN: The station data is confirmed as valid or invalid based on business rules
βœ“ Consolidated Acceptance Criteria
  • The system checks station validity for routing → if station is valid for routing, set station data in working storage, otherwise log station lookup 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_StationValidforRouting(["Start Step"]) E_StationValidforRouting(["End Step"]) N_StationValidforRouting_Node0{"The system checks station validity
for routing"}:::decision N_StationValidforRouting_Node0_action["If station is valid for routing,
set station data in working storage,
otherwise log station lookup failure"]:::main N_StationValidforRouting_Node0 -- Yes --> N_StationValidforRouting_Node0_action N_StationValidforRouting_Node0_action --> E_StationValidforRouting S_StationValidforRouting --> N_StationValidforRouting_Node0 N_StationValidforRouting_Node0 -- No --> E_StationValidforRouting
File: GCX016E.cbl
GIVEN: Station information has been validated
WHEN: The system checks station validity for routing
THEN: If station is valid for routing, set station data in working storage, otherwise log station lookup failure
βœ“ Consolidated Acceptance Criteria
  • The system needs to store station data for processing → the station data is set in working storage for cargo 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_SetStationDatainWorkingStorage(["Start Step"]) E_SetStationDatainWorkingStorage(["End Step"]) N_SetStationDatainWorkingStorage_Node0{"The system needs to store station
data for processing"}:::decision N_SetStationDatainWorkingStorage_Node0_action["The station data is set in working
storage for cargo processing use"]:::main N_SetStationDatainWorkingStorage_Node0 -- Yes --> N_SetStationDatainWorkingStorage_Node0_action N_SetStationDatainWorkingStorage_Node0_action --> E_SetStationDatainWorkingStorage S_SetStationDatainWorkingStorage --> N_SetStationDatainWorkingStorage_Node0 N_SetStationDatainWorkingStorage_Node0 -- No --> E_SetStationDatainWorkingStorage
File: GCX016E.cbl
GIVEN: Station information is valid for routing operations
WHEN: The system needs to store station data for processing
THEN: The station data is set in working storage for cargo processing use
βœ“ Consolidated Acceptance Criteria
  • The station lookup operation completes successfully → a success message is logged for the station lookup 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_LogStationLookupSuccess(["Start Step"]) E_LogStationLookupSuccess(["End Step"]) N_LogStationLookupSuccess_Node0{"The station lookup operation
completes successfully"}:::decision N_LogStationLookupSuccess_Node0_action["A success message is logged for the
station lookup operation"]:::main N_LogStationLookupSuccess_Node0 -- Yes --> N_LogStationLookupSuccess_Node0_action N_LogStationLookupSuccess_Node0_action --> E_LogStationLookupSuccess S_LogStationLookupSuccess --> N_LogStationLookupSuccess_Node0 N_LogStationLookupSuccess_Node0 -- No --> E_LogStationLookupSuccess
File: GCX016E.cbl
GIVEN: Station data has been successfully set in working storage
WHEN: The station lookup operation completes successfully
THEN: A success message is logged for the station lookup operation
βœ“ Consolidated Acceptance Criteria
  • The station lookup operation fails → a station not found error is generated for the cargo processing
  • The key station is not found in the KS table → a station not found error is generated and processing continues with error handling
  • The requested station is not found in either DS or KS table → the system generates a station not found error and completes the station lookup process
  • No station data is found for the location identifier → a station not found error is generated and 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_GenerateStationNotFoundError(["Start Step"]) E_GenerateStationNotFoundError(["End Step"]) N_GenerateStationNotFoundError_Node0{"The station lookup operation fails"}:::decision N_GenerateStationNotFoundError_Node0_action["A station not found error is
generated for the cargo processing"]:::main N_GenerateStationNotFoundError_Node0 -- Yes --> N_GenerateStationNotFoundError_Node0_action N_GenerateStationNotFoundError_Node0_action --> E_GenerateStationNotFoundError S_GenerateStationNotFoundError --> N_GenerateStationNotFoundError_Node0 N_GenerateStationNotFoundError_Node1{"The key station is not found in the
KS table"}:::decision N_GenerateStationNotFoundError_Node1_action["A station not found error is
generated and processing continues
with error handling"]:::main N_GenerateStationNotFoundError_Node1 -- Yes --> N_GenerateStationNotFoundError_Node1_action N_GenerateStationNotFoundError_Node1_action --> E_GenerateStationNotFoundError N_GenerateStationNotFoundError_Node0 -- No --> N_GenerateStationNotFoundError_Node1 N_GenerateStationNotFoundError_Node2{"The requested station is not found
in either DS or KS table"}:::decision N_GenerateStationNotFoundError_Node2_action["The system generates a station not
found error and completes the
station lookup process"]:::main N_GenerateStationNotFoundError_Node2 -- Yes --> N_GenerateStationNotFoundError_Node2_action N_GenerateStationNotFoundError_Node2_action --> E_GenerateStationNotFoundError N_GenerateStationNotFoundError_Node1 -- No --> N_GenerateStationNotFoundError_Node2 N_GenerateStationNotFoundError_Node3{"No station data is found for the
location identifier"}:::decision N_GenerateStationNotFoundError_Node3_action["A station not found error is
generated and returned to the
calling process"]:::main N_GenerateStationNotFoundError_Node3 -- Yes --> N_GenerateStationNotFoundError_Node3_action N_GenerateStationNotFoundError_Node3_action --> E_GenerateStationNotFoundError N_GenerateStationNotFoundError_Node2 -- No --> N_GenerateStationNotFoundError_Node3 N_GenerateStationNotFoundError_Node3 -- No --> E_GenerateStationNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Either no location identifier is present or station record is not found
WHEN: The station lookup operation fails
THEN: A station not found error is generated for the cargo processing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A key station lookup has been performed for a location identifier
WHEN: The key station is not found in the KS table
THEN:
  • A station not found error is generated
  • Processing continues with error handling
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A station lookup has been performed
WHEN: The requested station is not found in either DS or KS table
THEN:
  • The system generates a station not found error
  • Completes the station lookup process
File: GCX016E.cbl
GIVEN: A search for station information in the DS table has been performed
WHEN: No station data is found for the location identifier
THEN:
  • A station not found error is generated
  • Returned to the calling process
βœ“ Consolidated Acceptance Criteria
  • The station lookup operation encounters an error → a failure message is logged for the station lookup 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_LogStationLookupFailure(["Start Step"]) E_LogStationLookupFailure(["End Step"]) N_LogStationLookupFailure_Node0{"The station lookup operation
encounters an error"}:::decision N_LogStationLookupFailure_Node0_action["A failure message is logged for the
station lookup operation"]:::exclusion N_LogStationLookupFailure_Node0 -- Yes -->|Alternative| N_LogStationLookupFailure_Node0_action N_LogStationLookupFailure_Node0_action --> E_LogStationLookupFailure S_LogStationLookupFailure --> N_LogStationLookupFailure_Node0 N_LogStationLookupFailure_Node0 -- No --> E_LogStationLookupFailure
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Station lookup has failed due to invalid station information or station not found
WHEN: The station lookup operation encounters an error
THEN: A failure message is logged for the station lookup operation
βœ“ Consolidated Acceptance Criteria
  • The system checks the lookup results → the system determines if the key station exists and branches processing accordingly
  • If the lookup results → the system proceeds with data loading if station found or generates error if not found
  • If the lookup results → the system determines whether a valid key station record was found 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_KeyStationFound(["Start Step"]) E_KeyStationFound(["End Step"]) N_KeyStationFound_Node0{"The system checks the lookup
results"}:::decision N_KeyStationFound_Node0_action["The system determines if the key
station exists and branches
processing accordingly"]:::main N_KeyStationFound_Node0 -- Yes --> N_KeyStationFound_Node0_action N_KeyStationFound_Node0_action --> E_KeyStationFound S_KeyStationFound --> N_KeyStationFound_Node0 N_KeyStationFound_Node1{"The system evaluates the lookup
results"}:::decision N_KeyStationFound_Node1_action["The system proceeds with data
loading if station found or
generates error if not found"]:::main N_KeyStationFound_Node1 -- Yes --> N_KeyStationFound_Node1_action N_KeyStationFound_Node1_action --> E_KeyStationFound N_KeyStationFound_Node0 -- No --> N_KeyStationFound_Node1 N_KeyStationFound_Node2{"The system evaluates the lookup
results"}:::decision N_KeyStationFound_Node2_action["The system determines whether a
valid key station record was found
or not"]:::main N_KeyStationFound_Node2 -- Yes --> N_KeyStationFound_Node2_action N_KeyStationFound_Node2_action --> E_KeyStationFound N_KeyStationFound_Node1 -- No --> N_KeyStationFound_Node2 N_KeyStationFound_Node2 -- No --> E_KeyStationFound
File: GCX016E.cbl
GIVEN: A key station lookup has been performed using a location identifier
WHEN: The system checks the lookup results
THEN:
  • The system determines if the key station exists
  • Branches processing accordingly
File: GCX016E.cbl
GIVEN: GCCTBIO has completed the key station table lookup
WHEN: The system evaluates the lookup results
THEN: The system proceeds with data loading if station found or generates error if not found
File: GCX016E.cbl
GIVEN: A table lookup has been performed for a location code in KS table
WHEN: The system evaluates the lookup results
THEN: The system determines whether a valid key station record was found or not
βœ“ Consolidated Acceptance Criteria
  • The system processes the found station record → key station information is retrieved and made available for further processing
  • The system processes the key station request → the system accesses the KS table via GCCTBIO to retrieve key station information
  • The table lookup successfully finds the station → key station information is retrieved from the KS table 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_RetrieveKeyStationInformation(["Start Step"]) E_RetrieveKeyStationInformation(["End Step"]) N_RetrieveKeyStationInformation_Node0{"The system processes the found
station record"}:::decision N_RetrieveKeyStationInformation_Node0_action["Key station information is
retrieved and made available for
further processing"]:::main N_RetrieveKeyStationInformation_Node0 -- Yes --> N_RetrieveKeyStationInformation_Node0_action N_RetrieveKeyStationInformation_Node0_action --> E_RetrieveKeyStationInformation S_RetrieveKeyStationInformation --> N_RetrieveKeyStationInformation_Node0 N_RetrieveKeyStationInformation_Node1{"The system processes the key
station request"}:::decision N_RetrieveKeyStationInformation_Node1_action["The system accesses the KS table
via GCCTBIO to retrieve key station
information"]:::main N_RetrieveKeyStationInformation_Node1 -- Yes --> N_RetrieveKeyStationInformation_Node1_action N_RetrieveKeyStationInformation_Node1_action --> E_RetrieveKeyStationInformation N_RetrieveKeyStationInformation_Node0 -- No --> N_RetrieveKeyStationInformation_Node1 N_RetrieveKeyStationInformation_Node2{"The table lookup successfully finds
the station"}:::decision N_RetrieveKeyStationInformation_Node2_action["Key station information is
retrieved from the KS table data"]:::main N_RetrieveKeyStationInformation_Node2 -- Yes --> N_RetrieveKeyStationInformation_Node2_action N_RetrieveKeyStationInformation_Node2_action --> E_RetrieveKeyStationInformation N_RetrieveKeyStationInformation_Node1 -- No --> N_RetrieveKeyStationInformation_Node2 N_RetrieveKeyStationInformation_Node2 -- No --> E_RetrieveKeyStationInformation
File: GCX016E.cbl
GIVEN: A key station exists in the KS table for the specified location identifier
WHEN: The system processes the found station record
THEN:
  • Key station information is retrieved
  • Made available for further processing
File: GCX016E.cbl
GIVEN: A key station lookup is required
WHEN: The system processes the key station request
THEN: The system accesses the KS table via GCCTBIO to retrieve key station information
File: GCX016E.cbl
GIVEN: A valid key station record exists for the location code
WHEN: The table lookup successfully finds the station
THEN: Key station information is retrieved from the KS table data
βœ“ Consolidated Acceptance Criteria
  • The system validates the location identifier for business rules compliance → the location identifier is validated against business requirements and processing rules
  • The system validates the location identifier for the station → the system determines if the location identifier is valid for cargo routing purposes
  • The system validates the location identifier → the location identifier is confirmed as valid based on station 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_ValidateLocationIdentifier(["Start Step"]) E_ValidateLocationIdentifier(["End Step"]) N_ValidateLocationIdentifier_Node0{"The system validates the location
identifier for business rules
compliance"}:::decision N_ValidateLocationIdentifier_Node0_action["The location identifier is
validated against business
requirements and processing rules"]:::main N_ValidateLocationIdentifier_Node0 -- Yes --> N_ValidateLocationIdentifier_Node0_action N_ValidateLocationIdentifier_Node0_action --> E_ValidateLocationIdentifier S_ValidateLocationIdentifier --> N_ValidateLocationIdentifier_Node0 N_ValidateLocationIdentifier_Node1{"The system validates the location
identifier for the station"}:::decision N_ValidateLocationIdentifier_Node1_action["The system determines if the
location identifier is valid for
cargo routing purposes"]:::main N_ValidateLocationIdentifier_Node1 -- Yes --> N_ValidateLocationIdentifier_Node1_action N_ValidateLocationIdentifier_Node1_action --> E_ValidateLocationIdentifier N_ValidateLocationIdentifier_Node0 -- No --> N_ValidateLocationIdentifier_Node1 N_ValidateLocationIdentifier_Node2{"The system validates the location
identifier"}:::decision N_ValidateLocationIdentifier_Node2_action["The location identifier is
confirmed as valid based on station
data"]:::main N_ValidateLocationIdentifier_Node2 -- Yes --> N_ValidateLocationIdentifier_Node2_action N_ValidateLocationIdentifier_Node2_action --> E_ValidateLocationIdentifier N_ValidateLocationIdentifier_Node1 -- No --> N_ValidateLocationIdentifier_Node2 N_ValidateLocationIdentifier_Node2 -- No --> E_ValidateLocationIdentifier
File: GCX016E.cbl
GIVEN: Key station information has been retrieved from the KS table
WHEN: The system validates the location identifier for business rules compliance
THEN:
  • The location identifier is validated against business requirements
  • Processing rules
File: GCX016E.cbl
GIVEN: A station has been found in the station table
WHEN: The system validates the location identifier for the station
THEN: The system determines if the location identifier is valid for cargo routing purposes
File: GCX016E.cbl
GIVEN: Key station information has been retrieved from the table
WHEN: The system validates the location identifier
THEN: The location identifier is confirmed as valid based on station data
βœ“ Consolidated Acceptance Criteria
  • The system prepares station data for processing → station data is set and formatted for use in subsequent 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_SetStationDataforProcessing(["Start Step"]) E_SetStationDataforProcessing(["End Step"]) N_SetStationDataforProcessing_Node0{"The system prepares station data
for processing"}:::decision N_SetStationDataforProcessing_Node0_action["Station data is set and formatted
for use in subsequent business
operations"]:::main N_SetStationDataforProcessing_Node0 -- Yes --> N_SetStationDataforProcessing_Node0_action N_SetStationDataforProcessing_Node0_action --> E_SetStationDataforProcessing S_SetStationDataforProcessing --> N_SetStationDataforProcessing_Node0 N_SetStationDataforProcessing_Node0 -- No --> E_SetStationDataforProcessing
File: GCX016E.cbl
GIVEN: The location identifier has been validated successfully
WHEN: The system prepares station data for processing
THEN:
  • Station data is set
  • Formatted for use in subsequent business operations
βœ“ Consolidated Acceptance Criteria
  • The system continues with subsequent processing steps → processing continues using the validated station data or appropriate error handling for missing 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_ContinuewithValidatedStationData(["Start Step"]) E_ContinuewithValidatedStationData(["End Step"]) N_ContinuewithValidatedStationData_Node0{"The system continues with
subsequent processing steps"}:::decision N_ContinuewithValidatedStationData_Node0_action["Processing continues using the
validated station data or
appropriate error handling for
missing stations"]:::main N_ContinuewithValidatedStationData_Node0 -- Yes --> N_ContinuewithValidatedStationData_Node0_action N_ContinuewithValidatedStationData_Node0_action --> E_ContinuewithValidatedStationData S_ContinuewithValidatedStationData --> N_ContinuewithValidatedStationData_Node0 N_ContinuewithValidatedStationData_Node0 -- No --> E_ContinuewithValidatedStationData
File: GCX016E.cbl
GIVEN: Key station lookup processing has completed with either valid station data or error condition
WHEN: The system continues with subsequent processing steps
THEN: Processing continues using the validated station data or appropriate error handling for missing stations
βœ“ Consolidated Acceptance Criteria
  • If the table type identifier → the system routes the request to the appropriate table processing logic (DS for station data, KS for key station data, DC for disposition codes, or broker table for broker information)
  • If the table type parameter → the request should be classified as either station data, broker information, or other table 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_TableType(["Start Step"]) E_TableType(["End Step"]) N_TableType_Node0{"The system evaluates the table type
identifier"}:::decision N_TableType_Node0_action["The system routes the request to
the appropriate table processing
logic DS for station data, KS for
key station data, DC for disposition
codes, or broker table for broker
information"]:::main N_TableType_Node0 -- Yes --> N_TableType_Node0_action N_TableType_Node0_action --> E_TableType S_TableType --> N_TableType_Node0 N_TableType_Node1{"The system evaluates the table type
parameter"}:::decision N_TableType_Node1_action["The request should be classified as
either station data, broker
information, or other table type"]:::main N_TableType_Node1 -- Yes --> N_TableType_Node1_action N_TableType_Node1_action --> E_TableType N_TableType_Node0 -- No --> N_TableType_Node1 N_TableType_Node1 -- No --> E_TableType
File: GCX016E.cbl
GIVEN: A table lookup request is initiated with specific table type parameters
WHEN: The system evaluates the table type identifier
THEN: The system routes the request to the appropriate table processing logic (DS for station data, KS for key station data, DC for disposition codes, or broker table for broker information)
File: GCX016E.cbl
GIVEN: A table data request is received
WHEN: The system evaluates the table type parameter
THEN: The request should be classified as either station data, broker information, or other table type
βœ“ Consolidated Acceptance Criteria
  • The system accesses the DS table in GCSTBRT → the system retrieves the corresponding station information including station name 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_StationDataLookupDSTable(["Start Step"]) E_StationDataLookupDSTable(["End Step"]) N_StationDataLookupDSTable_Node0{"The system accesses the DS table in
GCSTBRT"}:::decision N_StationDataLookupDSTable_Node0_action["The system retrieves the
corresponding station information
including station name and location
details"]:::main N_StationDataLookupDSTable_Node0 -- Yes --> N_StationDataLookupDSTable_Node0_action N_StationDataLookupDSTable_Node0_action --> E_StationDataLookupDSTable S_StationDataLookupDSTable --> N_StationDataLookupDSTable_Node0 N_StationDataLookupDSTable_Node0 -- No --> E_StationDataLookupDSTable
File: GCX016E.cbl
GIVEN: A request for station data lookup is received with a valid station code
WHEN: The system accesses the DS table in GCSTBRT
THEN:
  • The system retrieves the corresponding station information including station name
  • Location details
βœ“ Consolidated Acceptance Criteria
  • The system accesses the KS table in GCSTBRT → the system retrieves key station operational data and configuration 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_KeyStationLookupKSTable(["Start Step"]) E_KeyStationLookupKSTable(["End Step"]) N_KeyStationLookupKSTable_Node0{"The system accesses the KS table in
GCSTBRT"}:::decision N_KeyStationLookupKSTable_Node0_action["The system retrieves key station
operational data and configuration
information"]:::main N_KeyStationLookupKSTable_Node0 -- Yes --> N_KeyStationLookupKSTable_Node0_action N_KeyStationLookupKSTable_Node0_action --> E_KeyStationLookupKSTable S_KeyStationLookupKSTable --> N_KeyStationLookupKSTable_Node0 N_KeyStationLookupKSTable_Node0 -- No --> E_KeyStationLookupKSTable
File: GCX016E.cbl
GIVEN: A request for key station data lookup is received with a station identifier
WHEN: The system accesses the KS table in GCSTBRT
THEN:
  • The system retrieves key station operational data
  • Configuration information
βœ“ Consolidated Acceptance Criteria
  • The system accesses the DC table in GCSTBRT → the system retrieves disposition code details including processing instructions, status implications, and validation 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_DispositionCodeLookupDCTable(["Start Step"]) E_DispositionCodeLookupDCTable(["End Step"]) N_DispositionCodeLookupDCTable_Node0{"The system accesses the DC table in
GCSTBRT"}:::decision N_DispositionCodeLookupDCTable_Node0_action["The system retrieves disposition
code details including processing
instructions, status implications,
and validation rules"]:::main N_DispositionCodeLookupDCTable_Node0 -- Yes --> N_DispositionCodeLookupDCTable_Node0_action N_DispositionCodeLookupDCTable_Node0_action --> E_DispositionCodeLookupDCTable S_DispositionCodeLookupDCTable --> N_DispositionCodeLookupDCTable_Node0 N_DispositionCodeLookupDCTable_Node0 -- No --> E_DispositionCodeLookupDCTable
File: GCX016E.cbl
GIVEN: A disposition code lookup request is received with a specific disposition code
WHEN: The system accesses the DC table in GCSTBRT
THEN: The system retrieves disposition code details including processing instructions, status implications, and validation rules
βœ“ Consolidated Acceptance Criteria
  • The system accesses the broker table in GCST2RT → the system retrieves broker contact information, credentials, and processing 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_BrokerInformationLookup(["Start Step"]) E_BrokerInformationLookup(["End Step"]) N_BrokerInformationLookup_Node0{"The system accesses the broker
table in GCST2RT"}:::decision N_BrokerInformationLookup_Node0_action["The system retrieves broker contact
information, credentials, and
processing preferences"]:::main N_BrokerInformationLookup_Node0 -- Yes --> N_BrokerInformationLookup_Node0_action N_BrokerInformationLookup_Node0_action --> E_BrokerInformationLookup S_BrokerInformationLookup --> N_BrokerInformationLookup_Node0 N_BrokerInformationLookup_Node0 -- No --> E_BrokerInformationLookup
File: GCX016E.cbl
GIVEN: A broker information lookup request is received with broker identification
WHEN: The system accesses the broker table in GCST2RT
THEN: The system retrieves broker contact information, credentials, and processing preferences
βœ“ Consolidated Acceptance Criteria
  • The system needs to perform the actual table access operation → the system calls the GCCTBIO interface with the table type and key parameters
  • The GCCTBIO interface is called → the system should execute the table lookup operation through the external interface
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CallGCCTBIOInterface(["Start Step"]) E_CallGCCTBIOInterface(["End Step"]) N_CallGCCTBIOInterface_Node0{"The system needs to perform the
actual table access operation"}:::decision N_CallGCCTBIOInterface_Node0_action["The system calls the GCCTBIO
interface with the table type and
key parameters"]:::main N_CallGCCTBIOInterface_Node0 -- Yes --> N_CallGCCTBIOInterface_Node0_action N_CallGCCTBIOInterface_Node0_action --> E_CallGCCTBIOInterface S_CallGCCTBIOInterface --> N_CallGCCTBIOInterface_Node0 N_CallGCCTBIOInterface_Node1{"The GCCTBIO interface is called"}:::decision N_CallGCCTBIOInterface_Node1_action["The system should execute the table
lookup operation through the
external interface"]:::main N_CallGCCTBIOInterface_Node1 -- Yes --> N_CallGCCTBIOInterface_Node1_action N_CallGCCTBIOInterface_Node1_action --> E_CallGCCTBIOInterface N_CallGCCTBIOInterface_Node0 -- No --> N_CallGCCTBIOInterface_Node1 N_CallGCCTBIOInterface_Node1 -- No --> E_CallGCCTBIOInterface
File: GCX016E.cbl
GIVEN: A table lookup request has been routed to the appropriate table type
WHEN: The system needs to perform the actual table access operation
THEN:
  • The system calls the gcctbio interface with the table type
  • Key parameters
File: GCX016E.cbl
GIVEN: A table lookup request has been classified and prepared
WHEN: The GCCTBIO interface is called
THEN: The system should execute the table lookup operation through the external interface
βœ“ Consolidated Acceptance Criteria
  • The system performs key validation checks → the system verifies the key format, length, and content validity before proceeding with 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_ValidateTableKey(["Start Step"]) E_ValidateTableKey(["End Step"]) N_ValidateTableKey_Node0{"The system performs key validation
checks"}:::decision N_ValidateTableKey_Node0_action["The system verifies the key format,
length, and content validity before
proceeding with table access"]:::main N_ValidateTableKey_Node0 -- Yes --> N_ValidateTableKey_Node0_action N_ValidateTableKey_Node0_action --> E_ValidateTableKey S_ValidateTableKey --> N_ValidateTableKey_Node0 N_ValidateTableKey_Node0 -- No --> E_ValidateTableKey
File: GCX016E.cbl
GIVEN: A table lookup key is provided for validation
WHEN: The system performs key validation checks
THEN: The system verifies the key format, length, and content validity before proceeding with table access
βœ“ Consolidated Acceptance Criteria
  • The system checks for record existence → the system returns true if a matching record is found, false if no record exists for the given 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_TableRecordFound(["Start Step"]) E_TableRecordFound(["End Step"]) N_TableRecordFound_Node0{"The system checks for record
existence"}:::decision N_TableRecordFound_Node0_action["The system returns true if a
matching record is found, false if
no record exists for the given key"]:::main N_TableRecordFound_Node0 -- Yes --> N_TableRecordFound_Node0_action N_TableRecordFound_Node0_action --> E_TableRecordFound S_TableRecordFound --> N_TableRecordFound_Node0 N_TableRecordFound_Node0 -- No --> E_TableRecordFound
File: GCX016E.cbl
GIVEN: A validated table key has been used to search the target table
WHEN: The system checks for record existence
THEN: The system returns true if a matching record is found, false if no record exists for the given key
βœ“ Consolidated Acceptance Criteria
  • The system retrieves the record data → the system extracts all relevant fields and formats them for return 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_RetrieveTableData(["Start Step"]) E_RetrieveTableData(["End Step"]) N_RetrieveTableData_Node0{"The system retrieves the record
data"}:::decision N_RetrieveTableData_Node0_action["The system extracts all relevant
fields and formats them for return
to the requesting process"]:::main N_RetrieveTableData_Node0 -- Yes --> N_RetrieveTableData_Node0_action N_RetrieveTableData_Node0_action --> E_RetrieveTableData S_RetrieveTableData --> N_RetrieveTableData_Node0 N_RetrieveTableData_Node0 -- No --> E_RetrieveTableData
File: GCX016E.cbl
GIVEN: A matching table record has been located
WHEN: The system retrieves the record data
THEN:
  • The system extracts all relevant fields
  • Formats them for return to the requesting process
βœ“ Consolidated Acceptance Criteria
  • The system prepares to return the information → the system returns the complete table information with success status 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_ReturnTableInformation(["Start Step"]) E_ReturnTableInformation(["End Step"]) N_ReturnTableInformation_Node0{"The system prepares to return the
information"}:::decision N_ReturnTableInformation_Node0_action["The system returns the complete
table information with success
status to the calling process"]:::main N_ReturnTableInformation_Node0 -- Yes --> N_ReturnTableInformation_Node0_action N_ReturnTableInformation_Node0_action --> E_ReturnTableInformation S_ReturnTableInformation --> N_ReturnTableInformation_Node0 N_ReturnTableInformation_Node0 -- No --> E_ReturnTableInformation
File: GCX016E.cbl
GIVEN: Table data has been successfully retrieved and formatted
WHEN: The system prepares to return the information
THEN: The system returns the complete table information with success status to the calling process
βœ“ Consolidated Acceptance Criteria
  • The system needs to handle the not found condition → the system generates a table not found error with relevant details about the failed 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_GenerateTableNotFoundError(["Start Step"]) E_GenerateTableNotFoundError(["End Step"]) N_GenerateTableNotFoundError_Node0{"The system needs to handle the not
found condition"}:::decision N_GenerateTableNotFoundError_Node0_action["The system generates a table not
found error with relevant details
about the failed lookup"]:::main N_GenerateTableNotFoundError_Node0 -- Yes --> N_GenerateTableNotFoundError_Node0_action N_GenerateTableNotFoundError_Node0_action --> E_GenerateTableNotFoundError S_GenerateTableNotFoundError --> N_GenerateTableNotFoundError_Node0 N_GenerateTableNotFoundError_Node0 -- No --> E_GenerateTableNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A table lookup has been performed but no matching record was found
WHEN: The system needs to handle the not found condition
THEN: The system generates a table not found error with relevant details about the failed lookup
βœ“ Consolidated Acceptance Criteria
  • The system needs to communicate the failure to the calling process → the system returns error status with descriptive information about the 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_ReturnErrorStatus(["Start Step"]) E_ReturnErrorStatus(["End Step"]) N_ReturnErrorStatus_Node0{"The system needs to communicate the
failure to the calling process"}:::decision N_ReturnErrorStatus_Node0_action["The system returns error status
with descriptive information about
the failure reason"]:::main N_ReturnErrorStatus_Node0 -- Yes --> N_ReturnErrorStatus_Node0_action N_ReturnErrorStatus_Node0_action --> E_ReturnErrorStatus S_ReturnErrorStatus --> N_ReturnErrorStatus_Node0 N_ReturnErrorStatus_Node0 -- No --> E_ReturnErrorStatus
File: GCX016E.cbl
GIVEN: A table lookup operation has failed or no record was found
WHEN: The system needs to communicate the failure to the calling process
THEN: The system returns error status with descriptive information about the failure reason
βœ“ Consolidated Acceptance Criteria
  • The system prepares to format a Merlin message for cargo disposition processing → the system retrieves and formats the car ID, waybill number, US-CCN, and associated cargo identification details for 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_RetrieveCargoInformation(["Start Step"]) E_RetrieveCargoInformation(["End Step"]) N_RetrieveCargoInformation_Node0{"The system prepares to format a
Merlin message for cargo disposition
processing"}:::decision N_RetrieveCargoInformation_Node0_action["The system retrieves and formats
the car ID, waybill number, US-CCN,
and associated cargo identification
details for message content"]:::main N_RetrieveCargoInformation_Node0 -- Yes --> N_RetrieveCargoInformation_Node0_action N_RetrieveCargoInformation_Node0_action --> E_RetrieveCargoInformation S_RetrieveCargoInformation --> N_RetrieveCargoInformation_Node0 N_RetrieveCargoInformation_Node0 -- No --> E_RetrieveCargoInformation
File: GCX016E.cbl
GIVEN: A cargo record exists in the system with valid equipment and manifest information
WHEN: The system prepares to format a Merlin message for cargo disposition processing
THEN:
  • The system retrieves
  • Formats the car id, waybill number, us-ccn, and associated cargo identification details for message content
βœ“ Consolidated Acceptance Criteria
  • The system formats equipment details for Merlin message content → the system includes formatted equipment ID, car identification, and equipment type information in 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_FormatEquipmentDetails(["Start Step"]) E_FormatEquipmentDetails(["End Step"]) N_FormatEquipmentDetails_Node0{"The system formats equipment
details for Merlin message content"}:::decision N_FormatEquipmentDetails_Node0_action["The system includes formatted
equipment ID, car identification,
and equipment type information in
the message structure"]:::main N_FormatEquipmentDetails_Node0 -- Yes --> N_FormatEquipmentDetails_Node0_action N_FormatEquipmentDetails_Node0_action --> E_FormatEquipmentDetails S_FormatEquipmentDetails --> N_FormatEquipmentDetails_Node0 N_FormatEquipmentDetails_Node0 -- No --> E_FormatEquipmentDetails
File: GCX016E.cbl
GIVEN: Cargo equipment information is available including car ID and equipment type
WHEN: The system formats equipment details for Merlin message content
THEN: The system includes formatted equipment ID, car identification, and equipment type information in the message structure
βœ“ Consolidated Acceptance Criteria
  • The system calculates quantity impact for Merlin message formatting → the system determines whether quantities will increase, decrease, or remain unchanged and formats the impact information for the message
  • Quantity impact calculation is performed → the system calculates the specific quantity change amount based on disposition code 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_CalculateQuantityImpact(["Start Step"]) E_CalculateQuantityImpact(["End Step"]) N_CalculateQuantityImpact_Node0{"The system calculates quantity
impact for Merlin message formatting"}:::decision N_CalculateQuantityImpact_Node0_action["The system determines whether
quantities will increase, decrease,
or remain unchanged and formats the
impact information for the message"]:::main N_CalculateQuantityImpact_Node0 -- Yes --> N_CalculateQuantityImpact_Node0_action N_CalculateQuantityImpact_Node0_action --> E_CalculateQuantityImpact S_CalculateQuantityImpact --> N_CalculateQuantityImpact_Node0 N_CalculateQuantityImpact_Node1{"Quantity impact calculation is
performed"}:::decision N_CalculateQuantityImpact_Node1_action["The system calculates the specific
quantity change amount based on
disposition code parameters"]:::main N_CalculateQuantityImpact_Node1 -- Yes --> N_CalculateQuantityImpact_Node1_action N_CalculateQuantityImpact_Node1_action --> E_CalculateQuantityImpact N_CalculateQuantityImpact_Node0 -- No --> N_CalculateQuantityImpact_Node1 N_CalculateQuantityImpact_Node1 -- No --> E_CalculateQuantityImpact
File: GCX016E.cbl
GIVEN: A disposition code affects cargo release quantities with current and target quantity values available
WHEN: The system calculates quantity impact for Merlin message formatting
THEN:
  • The system determines whether quantities will increase, decrease, or remain unchanged
  • Formats the impact information for the message
File: GCX016E.cbl
GIVEN: A disposition code that affects release quantities and current cargo quantity information
WHEN: Quantity impact calculation is performed
THEN: The system calculates the specific quantity change amount based on disposition code parameters
βœ“ Consolidated Acceptance Criteria
  • The system checks for K1 comments during Merlin message formatting → the system includes up to 4 lines of K1 free-form text comments in the Merlin 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_IncludeK1FreeFormText(["Start Step"]) E_IncludeK1FreeFormText(["End Step"]) N_IncludeK1FreeFormText_Node0{"The system checks for K1 comments
during Merlin message formatting"}:::decision N_IncludeK1FreeFormText_Node0_action["The system includes up to 4 lines
of K1 free-form text comments in the
Merlin message content"]:::main N_IncludeK1FreeFormText_Node0 -- Yes --> N_IncludeK1FreeFormText_Node0_action N_IncludeK1FreeFormText_Node0_action --> E_IncludeK1FreeFormText S_IncludeK1FreeFormText --> N_IncludeK1FreeFormText_Node0 N_IncludeK1FreeFormText_Node0 -- No --> E_IncludeK1FreeFormText
File: GCX016E.cbl
GIVEN: K1 segment comments are available for the cargo being processed
WHEN: The system checks for K1 comments during Merlin message formatting
THEN: The system includes up to 4 lines of K1 free-form text comments in the Merlin message content
βœ“ Consolidated Acceptance Criteria
  • The system checks for bond creation scenarios during message formatting → the system identifies CP Rail transactions by detecting 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO' in K1 comments
  • If bond creation conditions → processing is routed to bond creation if CP Rail identifiers are found, otherwise continues to date/time processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_BondCreationScenario(["Start Step"]) E_BondCreationScenario(["End Step"]) N_BondCreationScenario_Node0{"The system checks for bond creation
scenarios during message formatting"}:::decision N_BondCreationScenario_Node0_action["The system identifies CP Rail
transactions by detecting DIRECTOR
OF CUSTOMS, CP RAIL , CANADIAN
PACIFIC LIMITED , or CANADIAN
PACIFIC RAILWAY CO in K1 comments"]:::main N_BondCreationScenario_Node0 -- Yes --> N_BondCreationScenario_Node0_action N_BondCreationScenario_Node0_action --> E_BondCreationScenario S_BondCreationScenario --> N_BondCreationScenario_Node0 N_BondCreationScenario_Node1{"The system evaluates bond creation
conditions"}:::decision N_BondCreationScenario_Node1_action["Processing is routed to bond
creation if CP Rail identifiers are
found, otherwise continues to
datetime processing"]:::main N_BondCreationScenario_Node1 -- Yes --> N_BondCreationScenario_Node1_action N_BondCreationScenario_Node1_action --> E_BondCreationScenario N_BondCreationScenario_Node0 -- No --> N_BondCreationScenario_Node1 N_BondCreationScenario_Node1 -- No --> E_BondCreationScenario
File: GCX016E.cbl
GIVEN: K1 segment comments contain Canadian Pacific Railway identifiers
WHEN: The system checks for bond creation scenarios during message formatting
THEN: The system identifies CP Rail transactions by detecting 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO' in K1 comments
File: GCX016E.cbl
GIVEN: K1 segment comments are being processed
WHEN: The system evaluates bond creation conditions
THEN: Processing is routed to bond creation if CP Rail identifiers are found, otherwise continues to date/time processing
βœ“ Consolidated Acceptance Criteria
  • The system formats the CP Rail bond creation message → the system creates a broker bond creation message with CP Rail specific formatting 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_FormatCanadianPacificRailwayBondCreationMessage(["Start Step"]) E_FormatCanadianPacificRailwayBondCreationMessage(["End Step"]) N_FormatCanadianPacificRailwayBondCreationMessage_Node0{"The system formats the CP Rail bond
creation message"}:::decision N_FormatCanadianPacificRailwayBondCreationMessage_Node0_action["The system creates a broker bond
creation message with CP Rail
specific formatting and routing
information"]:::main N_FormatCanadianPacificRailwayBondCreationMessage_Node0 -- Yes --> N_FormatCanadianPacificRailwayBondCreationMessage_Node0_action N_FormatCanadianPacificRailwayBondCreationMessage_Node0_action --> E_FormatCanadianPacificRailwayBondCreationMessage S_FormatCanadianPacificRailwayBondCreationMessage --> N_FormatCanadianPacificRailwayBondCreationMessage_Node0 N_FormatCanadianPacificRailwayBondCreationMessage_Node0 -- No --> E_FormatCanadianPacificRailwayBondCreationMessage
File: GCX016E.cbl
GIVEN: A Canadian Pacific Railway transaction has been identified requiring bond creation messaging
WHEN: The system formats the CP Rail bond creation message
THEN:
  • The system creates a broker bond creation message with cp rail specific formatting
  • Routing information
βœ“ Consolidated Acceptance Criteria
  • The system creates quantity comparison information for the Merlin message → the system formats before and after quantity values to show the impact of disposition code processing on 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_CreateBeforeAfterQuantityComparison(["Start Step"]) E_CreateBeforeAfterQuantityComparison(["End Step"]) N_CreateBeforeAfterQuantityComparison_Node0{"The system creates quantity
comparison information for the
Merlin message"}:::decision N_CreateBeforeAfterQuantityComparison_Node0_action["The system formats before and after
quantity values to show the impact
of disposition code processing on
cargo release quantities"]:::main N_CreateBeforeAfterQuantityComparison_Node0 -- Yes --> N_CreateBeforeAfterQuantityComparison_Node0_action N_CreateBeforeAfterQuantityComparison_Node0_action --> E_CreateBeforeAfterQuantityComparison S_CreateBeforeAfterQuantityComparison --> N_CreateBeforeAfterQuantityComparison_Node0 N_CreateBeforeAfterQuantityComparison_Node0 -- No --> E_CreateBeforeAfterQuantityComparison
File: GCX016E.cbl
GIVEN: Cargo quantities exist both before and after disposition code processing
WHEN: The system creates quantity comparison information for the Merlin message
THEN:
  • The system formats before
  • After quantity values to show the impact of disposition code processing on cargo release quantities
βœ“ Consolidated Acceptance Criteria
  • The system formats release quantity impact details → the system creates detailed quantity impact information showing specific changes to released, held, or processed 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_FormatReleaseQuantityImpactDetails(["Start Step"]) E_FormatReleaseQuantityImpactDetails(["End Step"]) N_FormatReleaseQuantityImpactDetails_Node0{"The system formats release quantity
impact details"}:::decision N_FormatReleaseQuantityImpactDetails_Node0_action["The system creates detailed
quantity impact information showing
specific changes to released, held,
or processed quantities"]:::main N_FormatReleaseQuantityImpactDetails_Node0 -- Yes --> N_FormatReleaseQuantityImpactDetails_Node0_action N_FormatReleaseQuantityImpactDetails_Node0_action --> E_FormatReleaseQuantityImpactDetails S_FormatReleaseQuantityImpactDetails --> N_FormatReleaseQuantityImpactDetails_Node0 N_FormatReleaseQuantityImpactDetails_Node0 -- No --> E_FormatReleaseQuantityImpactDetails
File: GCX016E.cbl
GIVEN: Disposition code processing has resulted in changes to cargo release quantities
WHEN: The system formats release quantity impact details
THEN: The system creates detailed quantity impact information showing specific changes to released, held, or processed quantities
βœ“ Consolidated Acceptance Criteria
  • The system compiles the complete message content → the system assembles all components into a structured Merlin message with proper formatting, sequencing, and content organization
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CompileCompleteMessageContent(["Start Step"]) E_CompileCompleteMessageContent(["End Step"]) N_CompileCompleteMessageContent_Node0{"The system compiles the complete
message content"}:::decision N_CompileCompleteMessageContent_Node0_action["The system assembles all components
into a structured Merlin message
with proper formatting, sequencing,
and content organization"]:::main N_CompileCompleteMessageContent_Node0 -- Yes --> N_CompileCompleteMessageContent_Node0_action N_CompileCompleteMessageContent_Node0_action --> E_CompileCompleteMessageContent S_CompileCompleteMessageContent --> N_CompileCompleteMessageContent_Node0 N_CompileCompleteMessageContent_Node0 -- No --> E_CompileCompleteMessageContent
File: GCX016E.cbl
GIVEN: All message components including cargo details, disposition information, comments, and quantity impacts are available
WHEN: The system compiles the complete message content
THEN: The system assembles all components into a structured Merlin message with proper formatting, sequencing, and content organization
βœ“ Consolidated Acceptance Criteria
  • The system sets message type and priority → the system assigns appropriate message type classification and priority level based on disposition code type, cargo status, and business impact
  • Message attributes need to be set → the system assigns the appropriate message type and priority level for proper routing and handling
  • Preparing message for distribution → message type and priority are set based on disposition code and 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_SetMessageTypeandPriority(["Start Step"]) E_SetMessageTypeandPriority(["End Step"]) N_SetMessageTypeandPriority_Node0{"The system sets message type and
priority"}:::decision N_SetMessageTypeandPriority_Node0_action["The system assigns appropriate
message type classification and
priority level based on disposition
code type, cargo status, and
business impact"]:::main N_SetMessageTypeandPriority_Node0 -- Yes --> N_SetMessageTypeandPriority_Node0_action N_SetMessageTypeandPriority_Node0_action --> E_SetMessageTypeandPriority S_SetMessageTypeandPriority --> N_SetMessageTypeandPriority_Node0 N_SetMessageTypeandPriority_Node1{"Message attributes need to be set"}:::decision N_SetMessageTypeandPriority_Node1_action["The system assigns the appropriate
message type and priority level for
proper routing and handling"]:::main N_SetMessageTypeandPriority_Node1 -- Yes --> N_SetMessageTypeandPriority_Node1_action N_SetMessageTypeandPriority_Node1_action --> E_SetMessageTypeandPriority N_SetMessageTypeandPriority_Node0 -- No --> N_SetMessageTypeandPriority_Node1 N_SetMessageTypeandPriority_Node2{"Preparing message for distribution"}:::decision N_SetMessageTypeandPriority_Node2_action["Message type and priority are set
based on disposition code and
processing context"]:::main N_SetMessageTypeandPriority_Node2 -- Yes --> N_SetMessageTypeandPriority_Node2_action N_SetMessageTypeandPriority_Node2_action --> E_SetMessageTypeandPriority N_SetMessageTypeandPriority_Node1 -- No --> N_SetMessageTypeandPriority_Node2 N_SetMessageTypeandPriority_Node2 -- No --> E_SetMessageTypeandPriority
File: GCX016E.cbl
GIVEN: A complete Merlin message has been compiled with disposition code and cargo information
WHEN:
  • The system sets message type
  • Priority
THEN:
  • The system assigns appropriate message type classification
  • Priority level based on disposition code type, cargo status, and business impact
File: GCX016E.cbl
GIVEN: Message content has been finalized
WHEN: Message attributes need to be set
THEN:
  • The system assigns the appropriate message type
  • Priority level for proper routing
  • Handling
File: GCX016E.cbl
GIVEN: Complete message content has been formatted
WHEN: Preparing message for distribution
THEN:
  • Message type
  • Priority are set based on disposition code
  • Processing context
βœ“ Consolidated Acceptance Criteria
  • The system processes Merlin message assembly → equipment details are retrieved and made available for message 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_RetrieveEquipmentDetails(["Start Step"]) E_RetrieveEquipmentDetails(["End Step"]) N_RetrieveEquipmentDetails_Node0{"The system processes Merlin message
assembly"}:::decision N_RetrieveEquipmentDetails_Node0_action["Equipment details are retrieved and
made available for message
formatting"]:::main N_RetrieveEquipmentDetails_Node0 -- Yes --> N_RetrieveEquipmentDetails_Node0_action N_RetrieveEquipmentDetails_Node0_action --> E_RetrieveEquipmentDetails S_RetrieveEquipmentDetails --> N_RetrieveEquipmentDetails_Node0 N_RetrieveEquipmentDetails_Node0 -- No --> E_RetrieveEquipmentDetails
File: GCX016E.cbl
GIVEN: A cargo record exists with equipment information
WHEN: The system processes Merlin message assembly
THEN:
  • Equipment details are retrieved
  • Made available for message formatting
βœ“ Consolidated Acceptance Criteria
  • The system formats message content → car ID and waybill information are formatted 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_FormatCarIDandWaybillInformation(["Start Step"]) E_FormatCarIDandWaybillInformation(["End Step"]) N_FormatCarIDandWaybillInformation_Node0{"The system formats message content"}:::decision N_FormatCarIDandWaybillInformation_Node0_action["Car ID and waybill information are
formatted according to Merlin
message standards"]:::main N_FormatCarIDandWaybillInformation_Node0 -- Yes --> N_FormatCarIDandWaybillInformation_Node0_action N_FormatCarIDandWaybillInformation_Node0_action --> E_FormatCarIDandWaybillInformation S_FormatCarIDandWaybillInformation --> N_FormatCarIDandWaybillInformation_Node0 N_FormatCarIDandWaybillInformation_Node0 -- No --> E_FormatCarIDandWaybillInformation
File: GCX016E.cbl
GIVEN: Equipment details are available with car ID and waybill information
WHEN: The system formats message content
THEN:
  • Car id
  • Waybill information are formatted according to merlin message standards
βœ“ Consolidated Acceptance Criteria
  • The system assembles Merlin message content → uS-CCN information 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_AddUSCCNInformation(["Start Step"]) E_AddUSCCNInformation(["End Step"]) N_AddUSCCNInformation_Node0{"The system assembles Merlin message
content"}:::decision N_AddUSCCNInformation_Node0_action["US-CCN information is included 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_Node0 -- No --> E_AddUSCCNInformation
File: GCX016E.cbl
GIVEN: A cargo record contains US-CCN information
WHEN: The system assembles Merlin message content
THEN: US-CCN information is included in the message
βœ“ Consolidated Acceptance Criteria
  • The system processes Merlin message assembly → disposition code information is retrieved from the DC table
  • The code lookup is successful → the system retrieves all associated code information including description 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_RetrieveDispositionCodeInformation(["Start Step"]) E_RetrieveDispositionCodeInformation(["End Step"]) N_RetrieveDispositionCodeInformation_Node0{"The system processes Merlin message
assembly"}:::decision N_RetrieveDispositionCodeInformation_Node0_action["Disposition code information is
retrieved from the DC table"]:::main N_RetrieveDispositionCodeInformation_Node0 -- Yes --> N_RetrieveDispositionCodeInformation_Node0_action N_RetrieveDispositionCodeInformation_Node0_action --> E_RetrieveDispositionCodeInformation S_RetrieveDispositionCodeInformation --> N_RetrieveDispositionCodeInformation_Node0 N_RetrieveDispositionCodeInformation_Node1{"The code lookup is successful"}:::decision N_RetrieveDispositionCodeInformation_Node1_action["The system retrieves all associated
code information including
description and processing rules"]:::main N_RetrieveDispositionCodeInformation_Node1 -- Yes --> N_RetrieveDispositionCodeInformation_Node1_action N_RetrieveDispositionCodeInformation_Node1_action --> E_RetrieveDispositionCodeInformation N_RetrieveDispositionCodeInformation_Node0 -- No --> N_RetrieveDispositionCodeInformation_Node1 N_RetrieveDispositionCodeInformation_Node1 -- No --> E_RetrieveDispositionCodeInformation
File: GCX016E.cbl
GIVEN: A disposition code exists for the cargo
WHEN: The system processes Merlin message assembly
THEN: Disposition code information is retrieved from the DC table
File: GCX016E.cbl
GIVEN: A disposition code exists in the DC table
WHEN: The code lookup is successful
THEN:
  • The system retrieves all associated code information including description
  • Processing rules
βœ“ Consolidated Acceptance Criteria
  • The system formats message content → disposition code and description are formatted for Merlin message 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_FormatDispositionCodeandDescription(["Start Step"]) E_FormatDispositionCodeandDescription(["End Step"]) N_FormatDispositionCodeandDescription_Node0{"The system formats message content"}:::decision N_FormatDispositionCodeandDescription_Node0_action["Disposition code and description
are formatted for Merlin message
display"]:::main N_FormatDispositionCodeandDescription_Node0 -- Yes --> N_FormatDispositionCodeandDescription_Node0_action N_FormatDispositionCodeandDescription_Node0_action --> E_FormatDispositionCodeandDescription S_FormatDispositionCodeandDescription --> N_FormatDispositionCodeandDescription_Node0 N_FormatDispositionCodeandDescription_Node0 -- No --> E_FormatDispositionCodeandDescription
File: GCX016E.cbl
GIVEN: Disposition code information is available
WHEN: The system formats message content
THEN:
  • Disposition code
  • Description are formatted for merlin message display
βœ“ Consolidated Acceptance Criteria
  • The system processes quantity impact analysis → the impact on release quantity is calculated and determined
  • The release quantity needs to be determined → the system must calculate the quantity impact of the release code on the total cargo release amount
  • The disposition code affects release quantities → the system calculates the before and after quantities to determine the impact
  • Processing disposition code that affects quantities → system calculates the impact on release quantities (increase, decrease, or no 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_CalculateReleaseQuantityImpact(["Start Step"]) E_CalculateReleaseQuantityImpact(["End Step"]) N_CalculateReleaseQuantityImpact_Node0{"The system processes quantity
impact analysis"}:::decision N_CalculateReleaseQuantityImpact_Node0_action["The impact on release quantity is
calculated and determined"]:::main N_CalculateReleaseQuantityImpact_Node0 -- Yes --> N_CalculateReleaseQuantityImpact_Node0_action N_CalculateReleaseQuantityImpact_Node0_action --> E_CalculateReleaseQuantityImpact S_CalculateReleaseQuantityImpact --> N_CalculateReleaseQuantityImpact_Node0 N_CalculateReleaseQuantityImpact_Node1{"The release quantity needs to be
determined"}:::decision N_CalculateReleaseQuantityImpact_Node1_action["The system must calculate the
quantity impact of the release code
on the total cargo release amount"]:::main N_CalculateReleaseQuantityImpact_Node1 -- Yes --> N_CalculateReleaseQuantityImpact_Node1_action N_CalculateReleaseQuantityImpact_Node1_action --> E_CalculateReleaseQuantityImpact N_CalculateReleaseQuantityImpact_Node0 -- No --> N_CalculateReleaseQuantityImpact_Node1 N_CalculateReleaseQuantityImpact_Node2{"The disposition code affects
release quantities"}:::decision N_CalculateReleaseQuantityImpact_Node2_action["The system calculates the before
and after quantities to determine
the impact"]:::main N_CalculateReleaseQuantityImpact_Node2 -- Yes --> N_CalculateReleaseQuantityImpact_Node2_action N_CalculateReleaseQuantityImpact_Node2_action --> E_CalculateReleaseQuantityImpact N_CalculateReleaseQuantityImpact_Node1 -- No --> N_CalculateReleaseQuantityImpact_Node2 N_CalculateReleaseQuantityImpact_Node3{"Processing disposition code that
affects quantities"}:::decision N_CalculateReleaseQuantityImpact_Node3_action["System calculates the impact on
release quantities increase,
decrease, or no change"]:::main N_CalculateReleaseQuantityImpact_Node3 -- Yes --> N_CalculateReleaseQuantityImpact_Node3_action N_CalculateReleaseQuantityImpact_Node3_action --> E_CalculateReleaseQuantityImpact N_CalculateReleaseQuantityImpact_Node2 -- No --> N_CalculateReleaseQuantityImpact_Node3 N_CalculateReleaseQuantityImpact_Node3 -- No --> E_CalculateReleaseQuantityImpact
File: GCX016E.cbl
GIVEN: A disposition code with quantity information exists
WHEN: The system processes quantity impact analysis
THEN:
  • The impact on release quantity is calculated
  • Determined
File: GCX016E.cbl
GIVEN: A release disposition code has been added to the status array
WHEN: The release quantity needs to be determined
THEN: The system must calculate the quantity impact of the release code on the total cargo release amount
File: GCX016E.cbl
GIVEN: A disposition code has been processed for cargo
WHEN: The disposition code affects release quantities
THEN:
  • The system calculates the before
  • After quantities to determine the impact
File: GCX016E.cbl
GIVEN: Cargo has existing release quantities and a new disposition is being applied
WHEN: Processing disposition code that affects quantities
THEN: System calculates the impact on release quantities (increase, decrease, or no change)
βœ“ Consolidated Acceptance Criteria
  • If quantity impact → processing is routed to show quantity details if impact is detected, otherwise continues to comment processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_QuantityImpactAnalysis(["Start Step"]) E_QuantityImpactAnalysis(["End Step"]) N_QuantityImpactAnalysis_Node0{"The system evaluates quantity
impact"}:::decision N_QuantityImpactAnalysis_Node0_action["Processing is routed to show
quantity details if impact is
detected, otherwise continues to
comment processing"]:::main N_QuantityImpactAnalysis_Node0 -- Yes --> N_QuantityImpactAnalysis_Node0_action N_QuantityImpactAnalysis_Node0_action --> E_QuantityImpactAnalysis S_QuantityImpactAnalysis --> N_QuantityImpactAnalysis_Node0 N_QuantityImpactAnalysis_Node0 -- No --> E_QuantityImpactAnalysis
File: GCX016E.cbl
GIVEN: Release quantity impact has been calculated
WHEN: The system evaluates quantity impact
THEN: Processing is routed to show quantity details if impact is detected, otherwise continues to comment processing
βœ“ Consolidated Acceptance Criteria
  • The system processes quantity display → the current release quantity before changes is shown 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_ShowBeforeReleaseQuantity(["Start Step"]) E_ShowBeforeReleaseQuantity(["End Step"]) N_ShowBeforeReleaseQuantity_Node0{"The system processes quantity
display"}:::decision N_ShowBeforeReleaseQuantity_Node0_action["The current release quantity before
changes is shown in the message"]:::main N_ShowBeforeReleaseQuantity_Node0 -- Yes --> N_ShowBeforeReleaseQuantity_Node0_action N_ShowBeforeReleaseQuantity_Node0_action --> E_ShowBeforeReleaseQuantity S_ShowBeforeReleaseQuantity --> N_ShowBeforeReleaseQuantity_Node0 N_ShowBeforeReleaseQuantity_Node0 -- No --> E_ShowBeforeReleaseQuantity
File: GCX016E.cbl
GIVEN: Quantity impact has been detected
WHEN: The system processes quantity display
THEN: The current release quantity before changes is shown in the message
βœ“ Consolidated Acceptance Criteria
  • The system continues quantity processing → the projected release quantity after changes is shown 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_ShowAfterReleaseQuantity(["Start Step"]) E_ShowAfterReleaseQuantity(["End Step"]) N_ShowAfterReleaseQuantity_Node0{"The system continues quantity
processing"}:::decision N_ShowAfterReleaseQuantity_Node0_action["The projected release quantity
after changes is shown in the
message"]:::main N_ShowAfterReleaseQuantity_Node0 -- Yes --> N_ShowAfterReleaseQuantity_Node0_action N_ShowAfterReleaseQuantity_Node0_action --> E_ShowAfterReleaseQuantity S_ShowAfterReleaseQuantity --> N_ShowAfterReleaseQuantity_Node0 N_ShowAfterReleaseQuantity_Node0 -- No --> E_ShowAfterReleaseQuantity
File: GCX016E.cbl
GIVEN: Before release quantity has been displayed
WHEN: The system continues quantity processing
THEN: The projected release quantity after changes is shown in the message
βœ“ Consolidated Acceptance Criteria
  • The system processes quantity change details → detailed quantity change information is added 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_AddQuantityChangeDetails(["Start Step"]) E_AddQuantityChangeDetails(["End Step"]) N_AddQuantityChangeDetails_Node0{"The system processes quantity
change details"}:::decision N_AddQuantityChangeDetails_Node0_action["Detailed quantity change
information is added to the message
content"]:::main N_AddQuantityChangeDetails_Node0 -- Yes --> N_AddQuantityChangeDetails_Node0_action N_AddQuantityChangeDetails_Node0_action --> E_AddQuantityChangeDetails S_AddQuantityChangeDetails --> N_AddQuantityChangeDetails_Node0 N_AddQuantityChangeDetails_Node0 -- No --> E_AddQuantityChangeDetails
File: GCX016E.cbl
GIVEN: Before and after release quantities have been displayed
WHEN: The system processes quantity change details
THEN: Detailed quantity change information is added to the message content
βœ“ Consolidated Acceptance Criteria
  • The system processes message content assembly → k1 comments are included in the Merlin message up to the maximum allowed lines
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IncludeK1CommentProcessing(["Start Step"]) E_IncludeK1CommentProcessing(["End Step"]) N_IncludeK1CommentProcessing_Node0{"The system processes message
content assembly"}:::decision N_IncludeK1CommentProcessing_Node0_action["K1 comments are included in the
Merlin message up to the maximum
allowed lines"]:::main N_IncludeK1CommentProcessing_Node0 -- Yes --> N_IncludeK1CommentProcessing_Node0_action N_IncludeK1CommentProcessing_Node0_action --> E_IncludeK1CommentProcessing S_IncludeK1CommentProcessing --> N_IncludeK1CommentProcessing_Node0 N_IncludeK1CommentProcessing_Node0 -- No --> E_IncludeK1CommentProcessing
File: GCX016E.cbl
GIVEN: K1 segment comments exist for the cargo
WHEN: The system processes message content assembly
THEN: K1 comments are included in the Merlin message up to the maximum allowed lines
βœ“ Consolidated Acceptance Criteria
  • The system assembles message content → free-form text messages are added to the Merlin message content
  • Free-form text messages need to be added → the system formats and includes the K1 comment text 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_AddFreeFormTextMessages(["Start Step"]) E_AddFreeFormTextMessages(["End Step"]) N_AddFreeFormTextMessages_Node0{"The system assembles message
content"}:::decision N_AddFreeFormTextMessages_Node0_action["Free-form text messages are added
to the Merlin message content"]:::main N_AddFreeFormTextMessages_Node0 -- Yes --> N_AddFreeFormTextMessages_Node0_action N_AddFreeFormTextMessages_Node0_action --> E_AddFreeFormTextMessages S_AddFreeFormTextMessages --> N_AddFreeFormTextMessages_Node0 N_AddFreeFormTextMessages_Node1{"Free-form text messages need to be
added"}:::decision N_AddFreeFormTextMessages_Node1_action["The system formats and includes the
K1 comment text in the message"]:::main N_AddFreeFormTextMessages_Node1 -- Yes --> N_AddFreeFormTextMessages_Node1_action N_AddFreeFormTextMessages_Node1_action --> E_AddFreeFormTextMessages N_AddFreeFormTextMessages_Node0 -- No --> N_AddFreeFormTextMessages_Node1 N_AddFreeFormTextMessages_Node1 -- No --> E_AddFreeFormTextMessages
File: GCX016E.cbl
GIVEN: Free-form text messages exist from disposition code processing
WHEN: The system assembles message content
THEN: Free-form text messages are added to the Merlin message content
File: GCX016E.cbl
GIVEN: K1 comments are available for inclusion
WHEN: Free-form text messages need to be added
THEN:
  • The system formats
  • Includes the k1 comment text in the message
βœ“ Consolidated Acceptance Criteria
  • The system processes message content → special comments are included in the Merlin message up to the maximum allowed lines
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IncludeSpecialComments(["Start Step"]) E_IncludeSpecialComments(["End Step"]) N_IncludeSpecialComments_Node0{"The system processes message
content"}:::decision N_IncludeSpecialComments_Node0_action["Special comments are included in
the Merlin message up to the maximum
allowed lines"]:::main N_IncludeSpecialComments_Node0 -- Yes --> N_IncludeSpecialComments_Node0_action N_IncludeSpecialComments_Node0_action --> E_IncludeSpecialComments S_IncludeSpecialComments --> N_IncludeSpecialComments_Node0 N_IncludeSpecialComments_Node0 -- No --> E_IncludeSpecialComments
File: GCX016E.cbl
GIVEN: Special comments exist for the cargo processing
WHEN: The system processes message content
THEN: Special comments are included in the Merlin message up to the maximum allowed lines
βœ“ Consolidated Acceptance Criteria
  • The system assembles message content → processing details are added to provide context in the Merlin 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_AddProcessingDetails(["Start Step"]) E_AddProcessingDetails(["End Step"]) N_AddProcessingDetails_Node0{"The system assembles message
content"}:::decision N_AddProcessingDetails_Node0_action["Processing details are added to
provide context in the Merlin
message"]:::main N_AddProcessingDetails_Node0 -- Yes --> N_AddProcessingDetails_Node0_action N_AddProcessingDetails_Node0_action --> E_AddProcessingDetails S_AddProcessingDetails --> N_AddProcessingDetails_Node0 N_AddProcessingDetails_Node0 -- No --> E_AddProcessingDetails
File: GCX016E.cbl
GIVEN: Processing context and details are available
WHEN: The system assembles message content
THEN: Processing details are added to provide context in the Merlin message
βœ“ Consolidated Acceptance Criteria
  • The system processes bond creation scenario → special Canadian Pacific Railway bond creation processing is performed
  • The system processes the CPR-specific bond creation → the system should execute Canadian Pacific Railway bond creation processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProcessCanadianPacificRailwayBondCreation(["Start Step"]) E_ProcessCanadianPacificRailwayBondCreation(["End Step"]) N_ProcessCanadianPacificRailwayBondCreation_Node0{"The system processes bond creation
scenario"}:::decision N_ProcessCanadianPacificRailwayBondCreation_Node0_action["Special Canadian Pacific Railway
bond creation processing is
performed"]:::main N_ProcessCanadianPacificRailwayBondCreation_Node0 -- Yes --> N_ProcessCanadianPacificRailwayBondCreation_Node0_action N_ProcessCanadianPacificRailwayBondCreation_Node0_action --> E_ProcessCanadianPacificRailwayBondCreation S_ProcessCanadianPacificRailwayBondCreation --> N_ProcessCanadianPacificRailwayBondCreation_Node0 N_ProcessCanadianPacificRailwayBondCreation_Node1{"The system processes the
CPR-specific bond creation"}:::decision N_ProcessCanadianPacificRailwayBondCreation_Node1_action["The system should execute Canadian
Pacific Railway bond creation
processing"]:::main N_ProcessCanadianPacificRailwayBondCreation_Node1 -- Yes --> N_ProcessCanadianPacificRailwayBondCreation_Node1_action N_ProcessCanadianPacificRailwayBondCreation_Node1_action --> E_ProcessCanadianPacificRailwayBondCreation N_ProcessCanadianPacificRailwayBondCreation_Node0 -- No --> N_ProcessCanadianPacificRailwayBondCreation_Node1 N_ProcessCanadianPacificRailwayBondCreation_Node1 -- No --> E_ProcessCanadianPacificRailwayBondCreation
File: GCX016E.cbl
GIVEN: CP Rail identifiers are detected in K1 comments
WHEN: The system processes bond creation scenario
THEN: Special Canadian Pacific Railway bond creation processing is performed
File: GCX016E.cbl
GIVEN: A Canadian Pacific Railway bond creation message is detected
WHEN: The system processes the CPR-specific bond creation
THEN: The system should execute Canadian Pacific Railway bond creation processing
βœ“ Consolidated Acceptance Criteria
  • The system adds notification content → bond creation notification is added to the Merlin message
  • Special bond processing requirements are detected → bond creation notification is added to the Merlin message for CP Railway processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AddBondCreationNotification(["Start Step"]) E_AddBondCreationNotification(["End Step"]) N_AddBondCreationNotification_Node0{"The system adds notification
content"}:::decision N_AddBondCreationNotification_Node0_action["Bond creation notification is added
to the Merlin message"]:::main N_AddBondCreationNotification_Node0 -- Yes --> N_AddBondCreationNotification_Node0_action N_AddBondCreationNotification_Node0_action --> E_AddBondCreationNotification S_AddBondCreationNotification --> N_AddBondCreationNotification_Node0 N_AddBondCreationNotification_Node1{"Special bond processing
requirements are detected"}:::decision N_AddBondCreationNotification_Node1_action["Bond creation notification is added
to the Merlin message for CP Railway
processing"]:::main N_AddBondCreationNotification_Node1 -- Yes --> N_AddBondCreationNotification_Node1_action N_AddBondCreationNotification_Node1_action --> E_AddBondCreationNotification N_AddBondCreationNotification_Node0 -- No --> N_AddBondCreationNotification_Node1 N_AddBondCreationNotification_Node1 -- No --> E_AddBondCreationNotification
File: GCX016E.cbl
GIVEN: Canadian Pacific Railway bond creation has been processed
WHEN: The system adds notification content
THEN: Bond creation notification is added to the Merlin message
File: GCX016E.cbl
GIVEN: Canadian Pacific Railway bond processing is identified
WHEN: Special bond processing requirements are detected
THEN: Bond creation notification is added to the Merlin message for CP Railway processing
βœ“ Consolidated Acceptance Criteria
  • The system adds time information → uSCS processing time is included in the Merlin message content
  • USCS processing time is available → the system adds the USCS processing timestamp to the message
  • Building comprehensive message content → uSCS processing time is added to the message 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_AddUSCSProcessingTime(["Start Step"]) E_AddUSCSProcessingTime(["End Step"]) N_AddUSCSProcessingTime_Node0{"The system adds time information"}:::decision N_AddUSCSProcessingTime_Node0_action["USCS processing time is included in
the Merlin message content"]:::main N_AddUSCSProcessingTime_Node0 -- Yes --> N_AddUSCSProcessingTime_Node0_action N_AddUSCSProcessingTime_Node0_action --> E_AddUSCSProcessingTime S_AddUSCSProcessingTime --> N_AddUSCSProcessingTime_Node0 N_AddUSCSProcessingTime_Node1{"USCS processing time is available"}:::decision N_AddUSCSProcessingTime_Node1_action["The system adds the USCS processing
timestamp to the message"]:::main N_AddUSCSProcessingTime_Node1 -- Yes --> N_AddUSCSProcessingTime_Node1_action N_AddUSCSProcessingTime_Node1_action --> E_AddUSCSProcessingTime N_AddUSCSProcessingTime_Node0 -- No --> N_AddUSCSProcessingTime_Node1 N_AddUSCSProcessingTime_Node2{"Building comprehensive message
content"}:::decision N_AddUSCSProcessingTime_Node2_action["USCS processing time is added to
the message for tracking purposes"]:::main N_AddUSCSProcessingTime_Node2 -- Yes --> N_AddUSCSProcessingTime_Node2_action N_AddUSCSProcessingTime_Node2_action --> E_AddUSCSProcessingTime N_AddUSCSProcessingTime_Node1 -- No --> N_AddUSCSProcessingTime_Node2 N_AddUSCSProcessingTime_Node2 -- No --> E_AddUSCSProcessingTime
File: GCX016E.cbl
GIVEN: USCS processing time is available
WHEN: The system adds time information
THEN: USCS processing time is included in the Merlin message content
File: GCX016E.cbl
GIVEN: Date/time information formatting has been initiated
WHEN: USCS processing time is available
THEN: The system adds the USCS processing timestamp to the message
File: GCX016E.cbl
GIVEN: USCS processing time is available for the cargo event
WHEN: Building comprehensive message content
THEN: USCS processing time is added to the message for tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system adds time information → system processing time is included in the Merlin message content
  • System processing time needs to be recorded → the system adds the internal processing timestamp to the message
  • Creating Merlin notification message → system processing time is included in the message for complete 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_AddSystemProcessingTime(["Start Step"]) E_AddSystemProcessingTime(["End Step"]) N_AddSystemProcessingTime_Node0{"The system adds time information"}:::decision N_AddSystemProcessingTime_Node0_action["System processing time is included
in the Merlin message content"]:::main N_AddSystemProcessingTime_Node0 -- Yes --> N_AddSystemProcessingTime_Node0_action N_AddSystemProcessingTime_Node0_action --> E_AddSystemProcessingTime S_AddSystemProcessingTime --> N_AddSystemProcessingTime_Node0 N_AddSystemProcessingTime_Node1{"System processing time needs to be
recorded"}:::decision N_AddSystemProcessingTime_Node1_action["The system adds the internal
processing timestamp to the message"]:::main N_AddSystemProcessingTime_Node1 -- Yes --> N_AddSystemProcessingTime_Node1_action N_AddSystemProcessingTime_Node1_action --> E_AddSystemProcessingTime N_AddSystemProcessingTime_Node0 -- No --> N_AddSystemProcessingTime_Node1 N_AddSystemProcessingTime_Node2{"Creating Merlin notification
message"}:::decision N_AddSystemProcessingTime_Node2_action["System processing time is included
in the message for complete audit
trail"]:::main N_AddSystemProcessingTime_Node2 -- Yes --> N_AddSystemProcessingTime_Node2_action N_AddSystemProcessingTime_Node2_action --> E_AddSystemProcessingTime N_AddSystemProcessingTime_Node1 -- No --> N_AddSystemProcessingTime_Node2 N_AddSystemProcessingTime_Node2 -- No --> E_AddSystemProcessingTime
File: GCX016E.cbl
GIVEN: System processing time is available
WHEN: The system adds time information
THEN: System processing time is included in the Merlin message content
File: GCX016E.cbl
GIVEN: USCS processing time has been added
WHEN: System processing time needs to be recorded
THEN: The system adds the internal processing timestamp to the message
File: GCX016E.cbl
GIVEN: System processing time is recorded for the cargo event
WHEN: Creating Merlin notification message
THEN: System processing time is included in the message for complete audit trail
βœ“ Consolidated Acceptance Criteria
  • The system assembles complete content → all components are combined into complete Merlin 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_AssembleCompleteMessageContent(["Start Step"]) E_AssembleCompleteMessageContent(["End Step"]) N_AssembleCompleteMessageContent_Node0{"The system assembles complete
content"}:::decision N_AssembleCompleteMessageContent_Node0_action["All components are combined into
complete Merlin message content"]:::main N_AssembleCompleteMessageContent_Node0 -- Yes --> N_AssembleCompleteMessageContent_Node0_action N_AssembleCompleteMessageContent_Node0_action --> E_AssembleCompleteMessageContent S_AssembleCompleteMessageContent --> N_AssembleCompleteMessageContent_Node0 N_AssembleCompleteMessageContent_Node0 -- No --> E_AssembleCompleteMessageContent
File: GCX016E.cbl
GIVEN: All message components have been processed and formatted
WHEN: The system assembles complete content
THEN: All components are combined into complete Merlin message content
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the message → merlin message is finalized and 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_FinalizeMerlinMessage(["Start Step"]) E_FinalizeMerlinMessage(["End Step"]) N_FinalizeMerlinMessage_Node0{"The system finalizes the message"}:::decision N_FinalizeMerlinMessage_Node0_action["Merlin message is finalized and
ready for transmission"]:::main N_FinalizeMerlinMessage_Node0 -- Yes --> N_FinalizeMerlinMessage_Node0_action N_FinalizeMerlinMessage_Node0_action --> E_FinalizeMerlinMessage S_FinalizeMerlinMessage --> N_FinalizeMerlinMessage_Node0 N_FinalizeMerlinMessage_Node0 -- No --> E_FinalizeMerlinMessage
File: GCX016E.cbl
GIVEN: Message format has been validated successfully
WHEN: The system finalizes the message
THEN:
  • Merlin message is finalized
  • Ready for transmission
βœ“ Consolidated Acceptance Criteria
  • The system validates the K1 segment format and structure → the segment is accepted if format is valid, otherwise it is rejected and logged 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_ValidateK1SegmentFormat(["Start Step"]) E_ValidateK1SegmentFormat(["End Step"]) N_ValidateK1SegmentFormat_Node0{"The system validates the K1 segment
format and structure"}:::decision N_ValidateK1SegmentFormat_Node0_action["The segment is accepted if format
is valid, otherwise it is rejected
and logged as invalid"]:::exclusion N_ValidateK1SegmentFormat_Node0 -- Yes -->|Alternative| N_ValidateK1SegmentFormat_Node0_action N_ValidateK1SegmentFormat_Node0_action --> E_ValidateK1SegmentFormat S_ValidateK1SegmentFormat --> N_ValidateK1SegmentFormat_Node0 N_ValidateK1SegmentFormat_Node0 -- No --> E_ValidateK1SegmentFormat
File: GCX016E.cbl
GIVEN: A K1 segment is received for processing
WHEN:
  • The system validates the k1 segment format
  • Structure
THEN:
  • The segment is accepted if format is valid, otherwise it is rejected
  • Logged as invalid
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment to extract message content → the free-form text content is extracted and made available for comment 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_ExtractFreeFormTextContent(["Start Step"]) E_ExtractFreeFormTextContent(["End Step"]) N_ExtractFreeFormTextContent_Node0{"The system processes the K1 segment
to extract message content"}:::decision N_ExtractFreeFormTextContent_Node0_action["The free-form text content is
extracted and made available for
comment type determination"]:::main N_ExtractFreeFormTextContent_Node0 -- Yes --> N_ExtractFreeFormTextContent_Node0_action N_ExtractFreeFormTextContent_Node0_action --> E_ExtractFreeFormTextContent S_ExtractFreeFormTextContent --> N_ExtractFreeFormTextContent_Node0 N_ExtractFreeFormTextContent_Node0 -- No --> E_ExtractFreeFormTextContent
File: GCX016E.cbl
GIVEN: A valid K1 segment has been received
WHEN: The system processes the K1 segment to extract message content
THEN:
  • The free-form text content is extracted
  • Made available for comment type determination
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the content to determine comment classification → the comment is classified as either special comment type or standard comment type based on content 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_DetermineCommentType(["Start Step"]) E_DetermineCommentType(["End Step"]) N_DetermineCommentType_Node0{"The system analyzes the content to
determine comment classification"}:::decision N_DetermineCommentType_Node0_action["The comment is classified as either
special comment type or standard
comment type based on content
analysis"]:::main N_DetermineCommentType_Node0 -- Yes --> N_DetermineCommentType_Node0_action N_DetermineCommentType_Node0_action --> E_DetermineCommentType S_DetermineCommentType --> N_DetermineCommentType_Node0 N_DetermineCommentType_Node0 -- No --> E_DetermineCommentType
File: GCX016E.cbl
GIVEN: Free-form text content has been extracted from a K1 segment
WHEN: The system analyzes the content to determine comment classification
THEN: The comment is classified as either special comment type or standard comment type based on content analysis
βœ“ Consolidated Acceptance Criteria
  • The system stores the comment for integration with disposition processing → the K1 comment is stored in memory with up to 4 lines of comment text available for notification 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_StoreK1CommentinMemory(["Start Step"]) E_StoreK1CommentinMemory(["End Step"]) N_StoreK1CommentinMemory_Node0{"The system stores the comment for
integration with disposition
processing"}:::decision N_StoreK1CommentinMemory_Node0_action["The K1 comment is stored in memory
with up to 4 lines of comment text
available for notification
integration"]:::main N_StoreK1CommentinMemory_Node0 -- Yes --> N_StoreK1CommentinMemory_Node0_action N_StoreK1CommentinMemory_Node0_action --> E_StoreK1CommentinMemory S_StoreK1CommentinMemory --> N_StoreK1CommentinMemory_Node0 N_StoreK1CommentinMemory_Node0 -- No --> E_StoreK1CommentinMemory
File: GCX016E.cbl
GIVEN: A K1 comment has been processed and classified
WHEN: The system stores the comment for integration with disposition processing
THEN: The K1 comment is stored in memory with up to 4 lines of comment text available for notification integration
βœ“ Consolidated Acceptance Criteria
  • The system associates the comment with the current disposition code context → the K1 comment becomes available for inclusion in disposition code notifications and Merlin 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_AssociatewithCurrentDispositionCode(["Start Step"]) E_AssociatewithCurrentDispositionCode(["End Step"]) N_AssociatewithCurrentDispositionCode_Node0{"The system associates the comment
with the current disposition code
context"}:::decision N_AssociatewithCurrentDispositionCode_Node0_action["The K1 comment becomes available
for inclusion in disposition code
notifications and Merlin messages"]:::main N_AssociatewithCurrentDispositionCode_Node0 -- Yes --> N_AssociatewithCurrentDispositionCode_Node0_action N_AssociatewithCurrentDispositionCode_Node0_action --> E_AssociatewithCurrentDispositionCode S_AssociatewithCurrentDispositionCode --> N_AssociatewithCurrentDispositionCode_Node0 N_AssociatewithCurrentDispositionCode_Node0 -- No --> E_AssociatewithCurrentDispositionCode
File: GCX016E.cbl
GIVEN: A K1 comment is stored in memory and a disposition code is being processed
WHEN: The system associates the comment with the current disposition code context
THEN:
  • The k1 comment becomes available for inclusion in disposition code notifications
  • Merlin messages
βœ“ Consolidated Acceptance Criteria
  • If the current processing context → the comment is routed to either train disposition notification or cargo disposition notification 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_TrainorCargoContext(["Start Step"]) E_TrainorCargoContext(["End Step"]) N_TrainorCargoContext_Node0{"The system evaluates the current
processing context"}:::decision N_TrainorCargoContext_Node0_action["The comment is routed to either
train disposition notification or
cargo disposition notification based
on the current processing context"]:::main N_TrainorCargoContext_Node0 -- Yes --> N_TrainorCargoContext_Node0_action N_TrainorCargoContext_Node0_action --> E_TrainorCargoContext S_TrainorCargoContext --> N_TrainorCargoContext_Node0 N_TrainorCargoContext_Node0 -- No --> E_TrainorCargoContext
File: GCX016E.cbl
GIVEN: A K1 comment is ready for integration with disposition notifications
WHEN: The system evaluates the current processing context
THEN: The comment is routed to either train disposition notification or cargo disposition notification based on the current processing context
βœ“ Consolidated Acceptance Criteria
  • The system formats Merlin message content including disposition code information → k1 comments are included in the Merlin message content along with cargo information, disposition codes, and other 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_AddtoMerlinMessageContent(["Start Step"]) E_AddtoMerlinMessageContent(["End Step"]) N_AddtoMerlinMessageContent_Node0{"The system formats Merlin message
content including disposition code
information"}:::decision N_AddtoMerlinMessageContent_Node0_action["K1 comments are included in the
Merlin message content along with
cargo information, disposition
codes, and other relevant details"]:::main N_AddtoMerlinMessageContent_Node0 -- Yes --> N_AddtoMerlinMessageContent_Node0_action N_AddtoMerlinMessageContent_Node0_action --> E_AddtoMerlinMessageContent S_AddtoMerlinMessageContent --> N_AddtoMerlinMessageContent_Node0 N_AddtoMerlinMessageContent_Node0 -- No --> E_AddtoMerlinMessageContent
File: GCX016E.cbl
GIVEN: K1 comments are available for integration and Merlin messages are being generated
WHEN: The system formats Merlin message content including disposition code information
THEN: K1 comments are included in the Merlin message content along with cargo information, disposition codes, and other relevant details
βœ“ Consolidated Acceptance Criteria
  • The system generates messages showing quantity impact of disposition codes → k1 comments are included to provide additional context about how release quantities will be affected (add/subtract)
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IncludeinReleaseQuantityImpactMessage(["Start Step"]) E_IncludeinReleaseQuantityImpactMessage(["End Step"]) N_IncludeinReleaseQuantityImpactMessage_Node0{"The system generates messages
showing quantity impact of
disposition codes"}:::decision N_IncludeinReleaseQuantityImpactMessage_Node0_action["K1 comments are included to provide
additional context about how release
quantities will be affected
addsubtract"]:::main N_IncludeinReleaseQuantityImpactMessage_Node0 -- Yes --> N_IncludeinReleaseQuantityImpactMessage_Node0_action N_IncludeinReleaseQuantityImpactMessage_Node0_action --> E_IncludeinReleaseQuantityImpactMessage S_IncludeinReleaseQuantityImpactMessage --> N_IncludeinReleaseQuantityImpactMessage_Node0 N_IncludeinReleaseQuantityImpactMessage_Node0 -- No --> E_IncludeinReleaseQuantityImpactMessage
File: GCX016E.cbl
GIVEN: K1 comments are integrated with Merlin messages and release quantity impacts are being calculated
WHEN: The system generates messages showing quantity impact of disposition codes
THEN: K1 comments are included to provide additional context about how release quantities will be affected (add/subtract)
βœ“ Consolidated Acceptance Criteria
  • The system processes the invalid segment → the invalid K1 segment is logged for audit purposes and processing continues without including the invalid comment
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_LogInvalidK1Segment(["Start Step"]) E_LogInvalidK1Segment(["End Step"]) N_LogInvalidK1Segment_Node0{"The system processes the invalid
segment"}:::decision N_LogInvalidK1Segment_Node0_action["The invalid K1 segment is logged
for audit purposes and processing
continues without including the
invalid comment"]:::exclusion N_LogInvalidK1Segment_Node0 -- Yes -->|Alternative| N_LogInvalidK1Segment_Node0_action N_LogInvalidK1Segment_Node0_action --> E_LogInvalidK1Segment S_LogInvalidK1Segment --> N_LogInvalidK1Segment_Node0 N_LogInvalidK1Segment_Node0 -- No --> E_LogInvalidK1Segment
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A K1 segment fails format validation
WHEN: The system processes the invalid segment
THEN:
  • The invalid k1 segment is logged for audit purposes
  • Processing continues without including the invalid comment
βœ“ Consolidated Acceptance Criteria
  • The comment text contains 'DIRECTOR OF CUSTOMS, CP RAIL':
    • 'CANADIAN PACIFIC LIMITED'
    • 'CANADIAN PACIFIC RAILWAY CO'
    → the system identifies this as a CPR bond creation comment and sets the special comment flag for broker bond 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_IdentifyasCPRBondCreationComment(["Start Step"]) E_IdentifyasCPRBondCreationComment(["End Step"]) N_IdentifyasCPRBondCreationComment_Node0{"The comment text contains DIRECTOR
OF CUSTOMS, CP RAIL OR CANADIAN
PACIFIC LIMITED OR CANADIAN PACIFIC
RAILWAY CO"}:::decision N_IdentifyasCPRBondCreationComment_Node0_action["The system identifies this as a CPR
bond creation comment and sets the
special comment flag for broker bond
message generation"]:::main N_IdentifyasCPRBondCreationComment_Node0 -- Yes --> N_IdentifyasCPRBondCreationComment_Node0_action N_IdentifyasCPRBondCreationComment_Node0_action --> E_IdentifyasCPRBondCreationComment S_IdentifyasCPRBondCreationComment --> N_IdentifyasCPRBondCreationComment_Node0 N_IdentifyasCPRBondCreationComment_Node0 -- No --> E_IdentifyasCPRBondCreationComment
File: GCX016E.cbl
GIVEN: A K1 segment comment is received for processing
WHEN: The comment text contains 'DIRECTOR OF CUSTOMS, CP RAIL' OR 'CANADIAN PACIFIC LIMITED' OR 'CANADIAN PACIFIC RAILWAY CO'
THEN:
  • The system identifies this as a cpr bond creation comment
  • Sets the special comment flag for broker bond message generation
βœ“ Consolidated Acceptance Criteria
  • The comment text does not contain any Canadian Pacific Railway bond creation keywords → the system identifies this as a standard comment and sets the standard comment flag for regular comment processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IdentifyasStandardComment(["Start Step"]) E_IdentifyasStandardComment(["End Step"]) N_IdentifyasStandardComment_Node0{"The comment text does not contain
any Canadian Pacific Railway bond
creation keywords"}:::decision N_IdentifyasStandardComment_Node0_action["The system identifies this as a
standard comment and sets the
standard comment flag for regular
comment processing"]:::main N_IdentifyasStandardComment_Node0 -- Yes --> N_IdentifyasStandardComment_Node0_action N_IdentifyasStandardComment_Node0_action --> E_IdentifyasStandardComment S_IdentifyasStandardComment --> N_IdentifyasStandardComment_Node0 N_IdentifyasStandardComment_Node0 -- No --> E_IdentifyasStandardComment
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A K1 segment comment is received for processing
WHEN: The comment text does not contain any Canadian Pacific Railway bond creation keywords
THEN:
  • The system identifies this as a standard comment
  • Sets the standard comment flag for regular comment processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment → the comment text is extracted from the K1 segment and made available for content 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_ExtractK1CommentText(["Start Step"]) E_ExtractK1CommentText(["End Step"]) N_ExtractK1CommentText_Node0{"The system processes the K1 segment"}:::decision N_ExtractK1CommentText_Node0_action["The comment text is extracted from
the K1 segment and made available
for content analysis"]:::main N_ExtractK1CommentText_Node0 -- Yes --> N_ExtractK1CommentText_Node0_action N_ExtractK1CommentText_Node0_action --> E_ExtractK1CommentText S_ExtractK1CommentText --> N_ExtractK1CommentText_Node0 N_ExtractK1CommentText_Node0 -- No --> E_ExtractK1CommentText
File: GCX016E.cbl
GIVEN: A K1 segment is received in the message
WHEN: The system processes the K1 segment
THEN:
  • The comment text is extracted from the k1 segment
  • Made available for content analysis
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the comment content for specific keywords → the system determines whether the comment requires special CPR bond processing or standard comment 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_AnalyzeCommentContent(["Start Step"]) E_AnalyzeCommentContent(["End Step"]) N_AnalyzeCommentContent_Node0{"The system analyzes the comment
content for specific keywords"}:::decision N_AnalyzeCommentContent_Node0_action["The system determines whether the
comment requires special CPR bond
processing or standard comment
handling"]:::main N_AnalyzeCommentContent_Node0 -- Yes --> N_AnalyzeCommentContent_Node0_action N_AnalyzeCommentContent_Node0_action --> E_AnalyzeCommentContent S_AnalyzeCommentContent --> N_AnalyzeCommentContent_Node0 N_AnalyzeCommentContent_Node0 -- No --> E_AnalyzeCommentContent
File: GCX016E.cbl
GIVEN: K1 comment text has been extracted
WHEN: The system analyzes the comment content for specific keywords
THEN: The system determines whether the comment requires special CPR bond processing or standard comment handling
βœ“ Consolidated Acceptance Criteria
  • The system processes the comment classification → a special comment flag is set to indicate this comment requires broker bond 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_SetSpecialCommentFlag(["Start Step"]) E_SetSpecialCommentFlag(["End Step"]) N_SetSpecialCommentFlag_Node0{"The system processes the comment
classification"}:::decision N_SetSpecialCommentFlag_Node0_action["A special comment flag is set to
indicate this comment requires
broker bond message generation"]:::main N_SetSpecialCommentFlag_Node0 -- Yes --> N_SetSpecialCommentFlag_Node0_action N_SetSpecialCommentFlag_Node0_action --> E_SetSpecialCommentFlag S_SetSpecialCommentFlag --> N_SetSpecialCommentFlag_Node0 N_SetSpecialCommentFlag_Node0 -- No --> E_SetSpecialCommentFlag
File: GCX016E.cbl
GIVEN: A K1 comment has been identified as a CPR bond creation comment
WHEN: The system processes the comment classification
THEN: A special comment flag is set to indicate this comment requires broker bond message generation
βœ“ Consolidated Acceptance Criteria
  • The system processes the comment classification → a standard comment flag is set to indicate this comment follows normal processing 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_SetStandardCommentFlag(["Start Step"]) E_SetStandardCommentFlag(["End Step"]) N_SetStandardCommentFlag_Node0{"The system processes the comment
classification"}:::decision N_SetStandardCommentFlag_Node0_action["A standard comment flag is set to
indicate this comment follows normal
processing procedures"]:::main N_SetStandardCommentFlag_Node0 -- Yes --> N_SetStandardCommentFlag_Node0_action N_SetStandardCommentFlag_Node0_action --> E_SetStandardCommentFlag S_SetStandardCommentFlag --> N_SetStandardCommentFlag_Node0 N_SetStandardCommentFlag_Node0 -- No --> E_SetStandardCommentFlag
File: GCX016E.cbl
GIVEN: A K1 comment has been identified as a standard comment
WHEN: The system processes the comment classification
THEN: A standard comment flag is set to indicate this comment follows normal processing procedures
βœ“ Consolidated Acceptance Criteria
  • The system prepares the comment for processing → the comment text and its classification flags are stored in the appropriate processing structures
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_StoreCommentforProcessing(["Start Step"]) E_StoreCommentforProcessing(["End Step"]) N_StoreCommentforProcessing_Node0{"The system prepares the comment for
processing"}:::decision N_StoreCommentforProcessing_Node0_action["The comment text and its
classification flags are stored in
the appropriate processing
structures"]:::main N_StoreCommentforProcessing_Node0 -- Yes --> N_StoreCommentforProcessing_Node0_action N_StoreCommentforProcessing_Node0_action --> E_StoreCommentforProcessing S_StoreCommentforProcessing --> N_StoreCommentforProcessing_Node0 N_StoreCommentforProcessing_Node0 -- No --> E_StoreCommentforProcessing
File: GCX016E.cbl
GIVEN: A K1 comment has been classified and flagged appropriately
WHEN: The system prepares the comment for processing
THEN:
  • The comment text
  • Its classification flags are stored in the appropriate processing structures
βœ“ Consolidated Acceptance Criteria
  • The system determines the next processing step → the comment is routed to either the CPR bond creation handler or the standard comment handler based on the classification 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_RoutetoAppropriateHandler(["Start Step"]) E_RoutetoAppropriateHandler(["End Step"]) N_RoutetoAppropriateHandler_Node0{"The system determines the next
processing step"}:::decision N_RoutetoAppropriateHandler_Node0_action["The comment is routed to either the
CPR bond creation handler or the
standard comment handler based on
the classification flags"]:::main N_RoutetoAppropriateHandler_Node0 -- Yes --> N_RoutetoAppropriateHandler_Node0_action N_RoutetoAppropriateHandler_Node0_action --> E_RoutetoAppropriateHandler S_RoutetoAppropriateHandler --> N_RoutetoAppropriateHandler_Node0 N_RoutetoAppropriateHandler_Node0 -- No --> E_RoutetoAppropriateHandler
File: GCX016E.cbl
GIVEN: A K1 comment has been classified and stored with appropriate flags
WHEN: The system determines the next processing step
THEN: The comment is routed to either the CPR bond creation handler or the standard comment handler based on the classification flags
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment → the comment text content is extracted and made available for pattern matching 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_ExtractCommentTextContent(["Start Step"]) E_ExtractCommentTextContent(["End Step"]) N_ExtractCommentTextContent_Node0{"The system processes the K1 segment"}:::decision N_ExtractCommentTextContent_Node0_action["The comment text content is
extracted and made available for
pattern matching analysis"]:::main N_ExtractCommentTextContent_Node0 -- Yes --> N_ExtractCommentTextContent_Node0_action N_ExtractCommentTextContent_Node0_action --> E_ExtractCommentTextContent S_ExtractCommentTextContent --> N_ExtractCommentTextContent_Node0 N_ExtractCommentTextContent_Node0 -- No --> E_ExtractCommentTextContent
File: GCX016E.cbl
GIVEN: A K1 segment is received with comment data
WHEN: The system processes the K1 segment
THEN:
  • The comment text content is extracted
  • Made available for pattern matching analysis
βœ“ Consolidated Acceptance Criteria
  • The comment contains 'DIRECTOR OF CUSTOMS, CP RAIL':
    • 'CANADIAN PACIFIC LIMITED'
    • 'CANADIAN PACIFIC RAILWAY CO'
    → the system identifies this as a Canadian Pacific Railway bond creation pattern and sets the bond creation 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_CanadianPacificRailwayBondCreationPattern(["Start Step"]) E_CanadianPacificRailwayBondCreationPattern(["End Step"]) N_CanadianPacificRailwayBondCreationPattern_Node0{"The comment contains DIRECTOR OF
CUSTOMS, CP RAIL OR CANADIAN PACIFIC
LIMITED OR CANADIAN PACIFIC RAILWAY
CO"}:::decision N_CanadianPacificRailwayBondCreationPattern_Node0_action["The system identifies this as a
Canadian Pacific Railway bond
creation pattern and sets the bond
creation processing flag"]:::main N_CanadianPacificRailwayBondCreationPattern_Node0 -- Yes --> N_CanadianPacificRailwayBondCreationPattern_Node0_action N_CanadianPacificRailwayBondCreationPattern_Node0_action --> E_CanadianPacificRailwayBondCreationPattern S_CanadianPacificRailwayBondCreationPattern --> N_CanadianPacificRailwayBondCreationPattern_Node0 N_CanadianPacificRailwayBondCreationPattern_Node0 -- No --> E_CanadianPacificRailwayBondCreationPattern
File: GCX016E.cbl
GIVEN: K1 segment comment text content is available for analysis
WHEN: The comment contains 'DIRECTOR OF CUSTOMS, CP RAIL' OR 'CANADIAN PACIFIC LIMITED' OR 'CANADIAN PACIFIC RAILWAY CO'
THEN:
  • The system identifies this as a canadian pacific railway bond creation pattern
  • Sets the bond creation processing flag
βœ“ Consolidated Acceptance Criteria
  • The comment contains train-related disposition information → the system identifies this as a train disposition comment pattern and sets the train comment 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_TrainDispositionCommentPattern(["Start Step"]) E_TrainDispositionCommentPattern(["End Step"]) N_TrainDispositionCommentPattern_Node0{"The comment contains train-related
disposition information"}:::decision N_TrainDispositionCommentPattern_Node0_action["The system identifies this as a
train disposition comment pattern
and sets the train comment
processing flag"]:::main N_TrainDispositionCommentPattern_Node0 -- Yes --> N_TrainDispositionCommentPattern_Node0_action N_TrainDispositionCommentPattern_Node0_action --> E_TrainDispositionCommentPattern S_TrainDispositionCommentPattern --> N_TrainDispositionCommentPattern_Node0 N_TrainDispositionCommentPattern_Node0 -- No --> E_TrainDispositionCommentPattern
File: GCX016E.cbl
GIVEN: K1 segment comment text content is available for analysis
WHEN: The comment contains train-related disposition information
THEN:
  • The system identifies this as a train disposition comment pattern
  • Sets the train comment processing flag
βœ“ Consolidated Acceptance Criteria
  • The comment contains cargo-related disposition information → the system identifies this as a cargo disposition comment pattern and sets the cargo comment 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_CargoDispositionCommentPattern(["Start Step"]) E_CargoDispositionCommentPattern(["End Step"]) N_CargoDispositionCommentPattern_Node0{"The comment contains cargo-related
disposition information"}:::decision N_CargoDispositionCommentPattern_Node0_action["The system identifies this as a
cargo disposition comment pattern
and sets the cargo comment
processing flag"]:::main N_CargoDispositionCommentPattern_Node0 -- Yes --> N_CargoDispositionCommentPattern_Node0_action N_CargoDispositionCommentPattern_Node0_action --> E_CargoDispositionCommentPattern S_CargoDispositionCommentPattern --> N_CargoDispositionCommentPattern_Node0 N_CargoDispositionCommentPattern_Node0 -- No --> E_CargoDispositionCommentPattern
File: GCX016E.cbl
GIVEN: K1 segment comment text content is available for analysis
WHEN: The comment contains cargo-related disposition information
THEN:
  • The system identifies this as a cargo disposition comment pattern
  • Sets the cargo comment processing flag
βœ“ Consolidated Acceptance Criteria
  • The comment does not match Canadian Pacific Railway, train disposition, or cargo disposition patterns → the system classifies this as a general comment pattern and sets the general comment 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_GeneralCommentPattern(["Start Step"]) E_GeneralCommentPattern(["End Step"]) N_GeneralCommentPattern_Node0{"The comment does not match Canadian
Pacific Railway, train disposition,
or cargo disposition patterns"}:::decision N_GeneralCommentPattern_Node0_action["The system classifies this as a
general comment pattern and sets the
general comment processing flag"]:::main N_GeneralCommentPattern_Node0 -- Yes --> N_GeneralCommentPattern_Node0_action N_GeneralCommentPattern_Node0_action --> E_GeneralCommentPattern S_GeneralCommentPattern --> N_GeneralCommentPattern_Node0 N_GeneralCommentPattern_Node0 -- No --> E_GeneralCommentPattern
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: K1 segment comment text content is available for analysis
WHEN: The comment does not match Canadian Pacific Railway, train disposition, or cargo disposition patterns
THEN:
  • The system classifies this as a general comment pattern
  • Sets the general comment processing flag
βœ“ Consolidated Acceptance Criteria
  • The system processes the pattern detection result → the bond creation processing flag is set to indicate special 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_SetBondCreationProcessingFlag(["Start Step"]) E_SetBondCreationProcessingFlag(["End Step"]) N_SetBondCreationProcessingFlag_Node0{"The system processes the pattern
detection result"}:::decision N_SetBondCreationProcessingFlag_Node0_action["The bond creation processing flag
is set to indicate special bond
processing is required"]:::main N_SetBondCreationProcessingFlag_Node0 -- Yes --> N_SetBondCreationProcessingFlag_Node0_action N_SetBondCreationProcessingFlag_Node0_action --> E_SetBondCreationProcessingFlag S_SetBondCreationProcessingFlag --> N_SetBondCreationProcessingFlag_Node0 N_SetBondCreationProcessingFlag_Node0 -- No --> E_SetBondCreationProcessingFlag
File: GCX016E.cbl
GIVEN: Canadian Pacific Railway bond creation pattern has been detected in the comment
WHEN: The system processes the pattern detection result
THEN: The bond creation processing flag is set to indicate special bond processing is required
βœ“ Consolidated Acceptance Criteria
  • The system processes the pattern detection result → the train comment processing flag is set to indicate special train 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_SetTrainCommentProcessingFlag(["Start Step"]) E_SetTrainCommentProcessingFlag(["End Step"]) N_SetTrainCommentProcessingFlag_Node0{"The system processes the pattern
detection result"}:::decision N_SetTrainCommentProcessingFlag_Node0_action["The train comment processing flag
is set to indicate special train
processing is required"]:::main N_SetTrainCommentProcessingFlag_Node0 -- Yes --> N_SetTrainCommentProcessingFlag_Node0_action N_SetTrainCommentProcessingFlag_Node0_action --> E_SetTrainCommentProcessingFlag S_SetTrainCommentProcessingFlag --> N_SetTrainCommentProcessingFlag_Node0 N_SetTrainCommentProcessingFlag_Node0 -- No --> E_SetTrainCommentProcessingFlag
File: GCX016E.cbl
GIVEN: Train disposition comment pattern has been detected in the comment
WHEN: The system processes the pattern detection result
THEN: The train comment processing flag is set to indicate special train processing is required
βœ“ Consolidated Acceptance Criteria
  • The system processes the pattern detection result → the cargo comment processing flag is set to indicate special cargo 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_SetCargoCommentProcessingFlag(["Start Step"]) E_SetCargoCommentProcessingFlag(["End Step"]) N_SetCargoCommentProcessingFlag_Node0{"The system processes the pattern
detection result"}:::decision N_SetCargoCommentProcessingFlag_Node0_action["The cargo comment processing flag
is set to indicate special cargo
processing is required"]:::main N_SetCargoCommentProcessingFlag_Node0 -- Yes --> N_SetCargoCommentProcessingFlag_Node0_action N_SetCargoCommentProcessingFlag_Node0_action --> E_SetCargoCommentProcessingFlag S_SetCargoCommentProcessingFlag --> N_SetCargoCommentProcessingFlag_Node0 N_SetCargoCommentProcessingFlag_Node0 -- No --> E_SetCargoCommentProcessingFlag
File: GCX016E.cbl
GIVEN: Cargo disposition comment pattern has been detected in the comment
WHEN: The system processes the pattern detection result
THEN: The cargo comment processing flag is set to indicate special cargo processing is required
βœ“ Consolidated Acceptance Criteria
  • The system processes the pattern detection result → the general comment processing flag is set to indicate standard comment 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_SetGeneralCommentProcessingFlag(["Start Step"]) E_SetGeneralCommentProcessingFlag(["End Step"]) N_SetGeneralCommentProcessingFlag_Node0{"The system processes the pattern
detection result"}:::decision N_SetGeneralCommentProcessingFlag_Node0_action["The general comment processing flag
is set to indicate standard comment
processing is required"]:::main N_SetGeneralCommentProcessingFlag_Node0 -- Yes --> N_SetGeneralCommentProcessingFlag_Node0_action N_SetGeneralCommentProcessingFlag_Node0_action --> E_SetGeneralCommentProcessingFlag S_SetGeneralCommentProcessingFlag --> N_SetGeneralCommentProcessingFlag_Node0 N_SetGeneralCommentProcessingFlag_Node0 -- No --> E_SetGeneralCommentProcessingFlag
File: GCX016E.cbl
GIVEN: General comment pattern has been detected in the comment
WHEN: The system processes the pattern detection result
THEN: The general comment processing flag is set to indicate standard comment processing is required
βœ“ Consolidated Acceptance Criteria
  • If the processing requirements → the specific processing requirements are determined based on the comment pattern 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_DetermineProcessingRequirements(["Start Step"]) E_DetermineProcessingRequirements(["End Step"]) N_DetermineProcessingRequirements_Node0{"The system evaluates the processing
requirements"}:::decision N_DetermineProcessingRequirements_Node0_action["The specific processing
requirements are determined based on
the comment pattern type"]:::main N_DetermineProcessingRequirements_Node0 -- Yes --> N_DetermineProcessingRequirements_Node0_action N_DetermineProcessingRequirements_Node0_action --> E_DetermineProcessingRequirements S_DetermineProcessingRequirements --> N_DetermineProcessingRequirements_Node0 N_DetermineProcessingRequirements_Node0 -- No --> E_DetermineProcessingRequirements
File: GCX016E.cbl
GIVEN: A comment processing flag has been set (bond creation, train, cargo, or general)
WHEN: The system evaluates the processing requirements
THEN: The specific processing requirements are determined based on the comment pattern type
βœ“ Consolidated Acceptance Criteria
  • The system prepares the comment for downstream processing → the comment is stored in the appropriate format for Merlin 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_StoreCommentforMerlinIntegration(["Start Step"]) E_StoreCommentforMerlinIntegration(["End Step"]) N_StoreCommentforMerlinIntegration_Node0{"The system prepares the comment for
downstream processing"}:::decision N_StoreCommentforMerlinIntegration_Node0_action["The comment is stored in the
appropriate format for Merlin
integration"]:::main N_StoreCommentforMerlinIntegration_Node0 -- Yes --> N_StoreCommentforMerlinIntegration_Node0_action N_StoreCommentforMerlinIntegration_Node0_action --> E_StoreCommentforMerlinIntegration S_StoreCommentforMerlinIntegration --> N_StoreCommentforMerlinIntegration_Node0 N_StoreCommentforMerlinIntegration_Node0 -- No --> E_StoreCommentforMerlinIntegration
File: GCX016E.cbl
GIVEN: Processing requirements have been determined for the comment
WHEN: The system prepares the comment for downstream processing
THEN: The comment is stored in the appropriate format for Merlin integration
βœ“ Consolidated Acceptance Criteria
  • The comment requires special processing (bond creation, train disposition, or cargo disposition) → the comment is marked for special processing to ensure appropriate 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_MarkforSpecialProcessing(["Start Step"]) E_MarkforSpecialProcessing(["End Step"]) N_MarkforSpecialProcessing_Node0{"The comment requires special
processing bond creation, train
disposition, or cargo disposition"}:::decision N_MarkforSpecialProcessing_Node0_action["The comment is marked for special
processing to ensure appropriate
downstream handling"]:::main N_MarkforSpecialProcessing_Node0 -- Yes --> N_MarkforSpecialProcessing_Node0_action N_MarkforSpecialProcessing_Node0_action --> E_MarkforSpecialProcessing S_MarkforSpecialProcessing --> N_MarkforSpecialProcessing_Node0 N_MarkforSpecialProcessing_Node0 -- No --> E_MarkforSpecialProcessing
File: GCX016E.cbl
GIVEN: Comment has been stored for Merlin integration
WHEN: The comment requires special processing (bond creation, train disposition, or cargo disposition)
THEN: The comment is marked for special processing to ensure appropriate downstream handling
βœ“ Consolidated Acceptance Criteria
  • The system checks the K1 free-form text content for Canadian Pacific Railway identifiers including 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO' → the message is classified as a CP Rail bond creation request and routed for specialized bond processing
  • The system checks the message content for CPR identifiers including 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO' → the message is classified as CPR bond creation if any CPR identifier is found, otherwise it is processed as a regular K1 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_MessageTypeCheck(["Start Step"]) E_MessageTypeCheck(["End Step"]) N_MessageTypeCheck_Node0{"The system checks the K1 free-form
text content for Canadian Pacific
Railway identifiers including
DIRECTOR OF CUSTOMS, CP RAIL ,
CANADIAN PACIFIC LIMITED , or
CANADIAN PACIFIC RAILWAY CO"}:::decision N_MessageTypeCheck_Node0_action["The message is classified as a CP
Rail bond creation request and
routed for specialized bond
processing"]:::main N_MessageTypeCheck_Node0 -- Yes --> N_MessageTypeCheck_Node0_action N_MessageTypeCheck_Node0_action --> E_MessageTypeCheck S_MessageTypeCheck --> N_MessageTypeCheck_Node0 N_MessageTypeCheck_Node1{"The system checks the message
content for CPR identifiers
including DIRECTOR OF CUSTOMS, CP
RAIL , CANADIAN PACIFIC LIMITED , or
CANADIAN PACIFIC RAILWAY CO"}:::decision N_MessageTypeCheck_Node1_action["The message is classified as CPR
bond creation if any CPR identifier
is found, otherwise it is processed
as a regular K1 message"]:::main N_MessageTypeCheck_Node1 -- Yes --> N_MessageTypeCheck_Node1_action N_MessageTypeCheck_Node1_action --> E_MessageTypeCheck N_MessageTypeCheck_Node0 -- No --> N_MessageTypeCheck_Node1 N_MessageTypeCheck_Node1 -- No --> E_MessageTypeCheck
File: GCX016E.cbl
GIVEN: A K1 message segment is received for processing
WHEN: The system checks the K1 free-form text content for Canadian Pacific Railway identifiers including 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO'
THEN:
  • The message is classified as a cp rail bond creation request
  • Routed for specialized bond processing
File: GCX016E.cbl
GIVEN: A K1 segment message has been received
WHEN: The system checks the message content for CPR identifiers including 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO'
THEN: The message is classified as CPR bond creation if any CPR identifier is found, otherwise it is processed as a regular K1 message
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment to extract free-form text content → the K1 text content is captured and made available for bond validation and notification 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_ExtractK1FreeFormText(["Start Step"]) E_ExtractK1FreeFormText(["End Step"]) N_ExtractK1FreeFormText_Node0{"The system processes the K1 segment
to extract free-form text content"}:::decision N_ExtractK1FreeFormText_Node0_action["The K1 text content is captured and
made available for bond validation
and notification formatting"]:::main N_ExtractK1FreeFormText_Node0 -- Yes --> N_ExtractK1FreeFormText_Node0_action N_ExtractK1FreeFormText_Node0_action --> E_ExtractK1FreeFormText S_ExtractK1FreeFormText --> N_ExtractK1FreeFormText_Node0 N_ExtractK1FreeFormText_Node0 -- No --> E_ExtractK1FreeFormText
File: GCX016E.cbl
GIVEN: A K1 message segment identified as CP Rail bond creation
WHEN: The system processes the K1 segment to extract free-form text content
THEN:
  • The k1 text content is captured
  • Made available for bond validation
  • Notification formatting
βœ“ Consolidated Acceptance Criteria
  • The system validates the bond creation request against broker database information and business rules → the bond creation request is either approved for notification processing or rejected with appropriate error handling
  • The system validates the bond creation request → the bond information is verified for completeness 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_ValidateBondCreationRequest(["Start Step"]) E_ValidateBondCreationRequest(["End Step"]) N_ValidateBondCreationRequest_Node0{"The system validates the bond
creation request against broker
database information and business
rules"}:::decision N_ValidateBondCreationRequest_Node0_action["The bond creation request is either
approved for notification processing
or rejected with appropriate error
handling"]:::exclusion N_ValidateBondCreationRequest_Node0 -- Yes -->|Alternative| N_ValidateBondCreationRequest_Node0_action N_ValidateBondCreationRequest_Node0_action --> E_ValidateBondCreationRequest S_ValidateBondCreationRequest --> N_ValidateBondCreationRequest_Node0 N_ValidateBondCreationRequest_Node1{"The system validates the bond
creation request"}:::decision N_ValidateBondCreationRequest_Node1_action["The bond information is verified
for completeness and business rule
compliance"]:::main N_ValidateBondCreationRequest_Node1 -- Yes --> N_ValidateBondCreationRequest_Node1_action N_ValidateBondCreationRequest_Node1_action --> E_ValidateBondCreationRequest N_ValidateBondCreationRequest_Node0 -- No --> N_ValidateBondCreationRequest_Node1 N_ValidateBondCreationRequest_Node1 -- No --> E_ValidateBondCreationRequest
File: GCX016E.cbl
GIVEN: K1 text content has been extracted from a CP Rail bond creation message
WHEN:
  • The system validates the bond creation request against broker database information
  • Business rules
THEN: The bond creation request is either approved for notification processing or rejected with appropriate error handling
File: GCX016E.cbl
GIVEN: Bond information has been extracted from K1 segment
WHEN: The system validates the bond creation request
THEN:
  • The bond information is verified for completeness
  • Business rule compliance
βœ“ Consolidated Acceptance Criteria
  • The system formats the bond creation notification message including cargo information, processing details, and special comments → a properly formatted Merlin message is created containing all necessary bond creation notification information
  • The system formats the bond creation notification → a structured notification message is created containing bond details, broker information, and creation 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_FormatBondCreationNotification(["Start Step"]) E_FormatBondCreationNotification(["End Step"]) N_FormatBondCreationNotification_Node0{"The system formats the bond
creation notification message
including cargo information,
processing details, and special
comments"}:::decision N_FormatBondCreationNotification_Node0_action["A properly formatted Merlin message
is created containing all necessary
bond creation notification
information"]:::main N_FormatBondCreationNotification_Node0 -- Yes --> N_FormatBondCreationNotification_Node0_action N_FormatBondCreationNotification_Node0_action --> E_FormatBondCreationNotification S_FormatBondCreationNotification --> N_FormatBondCreationNotification_Node0 N_FormatBondCreationNotification_Node1{"The system formats the bond
creation notification"}:::decision N_FormatBondCreationNotification_Node1_action["A structured notification message
is created containing bond details,
broker information, and creation
timestamp"]:::main N_FormatBondCreationNotification_Node1 -- Yes --> N_FormatBondCreationNotification_Node1_action N_FormatBondCreationNotification_Node1_action --> E_FormatBondCreationNotification N_FormatBondCreationNotification_Node0 -- No --> N_FormatBondCreationNotification_Node1 N_FormatBondCreationNotification_Node1 -- No --> E_FormatBondCreationNotification
File: GCX016E.cbl
GIVEN: A validated CP Rail bond creation request with extracted K1 text content
WHEN: The system formats the bond creation notification message including cargo information, processing details, and special comments
THEN: A properly formatted Merlin message is created containing all necessary bond creation notification information
File: GCX016E.cbl
GIVEN: Valid bond information has been extracted and validated
WHEN: The system formats the bond creation notification
THEN: A structured notification message is created containing bond details, broker information, and creation timestamp
βœ“ Consolidated Acceptance Criteria
  • The system processes special comments associated with the cargo record → up to 3 lines of special comments are included in the bond creation 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_AddSpecialCommentstoMessage(["Start Step"]) E_AddSpecialCommentstoMessage(["End Step"]) N_AddSpecialCommentstoMessage_Node0{"The system processes special
comments associated with the cargo
record"}:::decision N_AddSpecialCommentstoMessage_Node0_action["Up to 3 lines of special comments
are included in the bond creation
notification message"]:::main N_AddSpecialCommentstoMessage_Node0 -- Yes --> N_AddSpecialCommentstoMessage_Node0_action N_AddSpecialCommentstoMessage_Node0_action --> E_AddSpecialCommentstoMessage S_AddSpecialCommentstoMessage --> N_AddSpecialCommentstoMessage_Node0 N_AddSpecialCommentstoMessage_Node0 -- No --> E_AddSpecialCommentstoMessage
File: GCX016E.cbl
GIVEN: A bond creation notification message is being formatted and special comments exist for the cargo
WHEN: The system processes special comments associated with the cargo record
THEN: Up to 3 lines of special comments are included in the bond creation notification message
βœ“ Consolidated Acceptance Criteria
  • The system adds processing details including car identification, waybill numbers, US CCN, and processing timestamps → the notification message contains complete processing context information for the bond creation request
  • Processing details need to be included → the system adds relevant processing details and context information 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_IncludeProcessingDetails(["Start Step"]) E_IncludeProcessingDetails(["End Step"]) N_IncludeProcessingDetails_Node0{"The system adds processing details
including car identification,
waybill numbers, US CCN, and
processing timestamps"}:::decision N_IncludeProcessingDetails_Node0_action["The notification message contains
complete processing context
information for the bond creation
request"]:::main N_IncludeProcessingDetails_Node0 -- Yes --> N_IncludeProcessingDetails_Node0_action N_IncludeProcessingDetails_Node0_action --> E_IncludeProcessingDetails S_IncludeProcessingDetails --> N_IncludeProcessingDetails_Node0 N_IncludeProcessingDetails_Node1{"Processing details need to be
included"}:::decision N_IncludeProcessingDetails_Node1_action["The system adds relevant processing
details and context information to
the message"]:::main N_IncludeProcessingDetails_Node1 -- Yes --> N_IncludeProcessingDetails_Node1_action N_IncludeProcessingDetails_Node1_action --> E_IncludeProcessingDetails N_IncludeProcessingDetails_Node0 -- No --> N_IncludeProcessingDetails_Node1 N_IncludeProcessingDetails_Node1 -- No --> E_IncludeProcessingDetails
File: GCX016E.cbl
GIVEN: A bond creation notification message is being prepared with validated bond information
WHEN: The system adds processing details including car identification, waybill numbers, US CCN, and processing timestamps
THEN: The notification message contains complete processing context information for the bond creation request
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Free-form text messages have been added or K1 comments are not available
WHEN: Processing details need to be included
THEN:
  • The system adds relevant processing details
  • Context information to the message
βœ“ Consolidated Acceptance Criteria
  • The system assembles the comprehensive Merlin message with all components properly formatted → a complete Merlin message is created ready for routing 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_CreateComprehensiveMerlinMessage(["Start Step"]) E_CreateComprehensiveMerlinMessage(["End Step"]) N_CreateComprehensiveMerlinMessage_Node0{"The system assembles the
comprehensive Merlin message with
all components properly formatted"}:::decision N_CreateComprehensiveMerlinMessage_Node0_action["A complete Merlin message is
created ready for routing to
appropriate recipients"]:::main N_CreateComprehensiveMerlinMessage_Node0 -- Yes --> N_CreateComprehensiveMerlinMessage_Node0_action N_CreateComprehensiveMerlinMessage_Node0_action --> E_CreateComprehensiveMerlinMessage S_CreateComprehensiveMerlinMessage --> N_CreateComprehensiveMerlinMessage_Node0 N_CreateComprehensiveMerlinMessage_Node0 -- No --> E_CreateComprehensiveMerlinMessage
File: GCX016E.cbl
GIVEN: All bond creation notification components have been prepared including special comments and processing details
WHEN: The system assembles the comprehensive Merlin message with all components properly formatted
THEN: A complete Merlin message is created ready for routing to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system determines routing based on broker configuration and notification preferences → the message is routed to the appropriate recipients including brokers, customs officials, and system administrators
  • The notification is routed to recipients → the message is sent to appropriate business users, brokers, and systems based on established 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_RoutetoAppropriateRecipients(["Start Step"]) E_RoutetoAppropriateRecipients(["End Step"]) N_RoutetoAppropriateRecipients_Node0{"The system determines routing based
on broker configuration and
notification preferences"}:::decision N_RoutetoAppropriateRecipients_Node0_action["The message is routed to the
appropriate recipients including
brokers, customs officials, and
system administrators"]:::main N_RoutetoAppropriateRecipients_Node0 -- Yes --> N_RoutetoAppropriateRecipients_Node0_action N_RoutetoAppropriateRecipients_Node0_action --> E_RoutetoAppropriateRecipients S_RoutetoAppropriateRecipients --> N_RoutetoAppropriateRecipients_Node0 N_RoutetoAppropriateRecipients_Node1{"The notification is routed to
recipients"}:::decision N_RoutetoAppropriateRecipients_Node1_action["The message is sent to appropriate
business users, brokers, and systems
based on established routing rules"]:::main N_RoutetoAppropriateRecipients_Node1 -- Yes --> N_RoutetoAppropriateRecipients_Node1_action N_RoutetoAppropriateRecipients_Node1_action --> E_RoutetoAppropriateRecipients N_RoutetoAppropriateRecipients_Node0 -- No --> N_RoutetoAppropriateRecipients_Node1 N_RoutetoAppropriateRecipients_Node1 -- No --> E_RoutetoAppropriateRecipients
File: GCX016E.cbl
GIVEN: A comprehensive bond creation Merlin message has been created
WHEN:
  • The system determines routing based on broker configuration
  • Notification preferences
THEN: The message is routed to the appropriate recipients including brokers, customs officials, and system administrators
File: GCX016E.cbl
GIVEN: A comprehensive Merlin notification has been created
WHEN: The notification is routed to recipients
THEN: The message is sent to appropriate business users, brokers, and systems based on established routing rules
βœ“ Consolidated Acceptance Criteria
  • The system transmits the notification through the Merlin messaging system → the bond creation notification is successfully delivered to all designated 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_SendBondCreationNotification(["Start Step"]) E_SendBondCreationNotification(["End Step"]) N_SendBondCreationNotification_Node0{"The system transmits the
notification through the Merlin
messaging system"}:::decision N_SendBondCreationNotification_Node0_action["The bond creation notification is
successfully delivered to all
designated recipients"]:::main N_SendBondCreationNotification_Node0 -- Yes --> N_SendBondCreationNotification_Node0_action N_SendBondCreationNotification_Node0_action --> E_SendBondCreationNotification S_SendBondCreationNotification --> N_SendBondCreationNotification_Node0 N_SendBondCreationNotification_Node0 -- No --> E_SendBondCreationNotification
File: GCX016E.cbl
GIVEN: A bond creation notification message has been routed to appropriate recipients
WHEN: The system transmits the notification through the Merlin messaging system
THEN: The bond creation notification is successfully delivered to all designated recipients
βœ“ Consolidated Acceptance Criteria
  • The system logs the bond creation action with relevant details and timestamps → the bond creation action is recorded in the system audit trail for compliance and tracking purposes
  • The action is logged → bond creation notification details are recorded in the system log 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_LogBondCreationAction(["Start Step"]) E_LogBondCreationAction(["End Step"]) N_LogBondCreationAction_Node0{"The system logs the bond creation
action with relevant details and
timestamps"}:::decision N_LogBondCreationAction_Node0_action["The bond creation action is
recorded in the system audit trail
for compliance and tracking purposes"]:::main N_LogBondCreationAction_Node0 -- Yes --> N_LogBondCreationAction_Node0_action N_LogBondCreationAction_Node0_action --> E_LogBondCreationAction S_LogBondCreationAction --> N_LogBondCreationAction_Node0 N_LogBondCreationAction_Node1{"The action is logged"}:::decision N_LogBondCreationAction_Node1_action["Bond creation notification details
are recorded in the system log for
audit and tracking purposes"]:::main N_LogBondCreationAction_Node1 -- Yes --> N_LogBondCreationAction_Node1_action N_LogBondCreationAction_Node1_action --> E_LogBondCreationAction N_LogBondCreationAction_Node0 -- No --> N_LogBondCreationAction_Node1 N_LogBondCreationAction_Node1 -- No --> E_LogBondCreationAction
File: GCX016E.cbl
GIVEN: A bond creation notification has been successfully transmitted
WHEN:
  • The system logs the bond creation action with relevant details
  • Timestamps
THEN:
  • The bond creation action is recorded in the system audit trail for compliance
  • Tracking purposes
File: GCX016E.cbl
GIVEN: A bond creation notification has been routed to recipients
WHEN: The action is logged
THEN:
  • Bond creation notification details are recorded in the system log for audit
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine quantity impact → the disposition code type and characteristics are identified 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_IdentifyDispositionCodeType(["Start Step"]) E_IdentifyDispositionCodeType(["End Step"]) N_IdentifyDispositionCodeType_Node0{"The system needs to determine
quantity impact"}:::decision N_IdentifyDispositionCodeType_Node0_action["The disposition code type and
characteristics are identified from
the DC table"]:::main N_IdentifyDispositionCodeType_Node0 -- Yes --> N_IdentifyDispositionCodeType_Node0_action N_IdentifyDispositionCodeType_Node0_action --> E_IdentifyDispositionCodeType S_IdentifyDispositionCodeType --> N_IdentifyDispositionCodeType_Node0 N_IdentifyDispositionCodeType_Node0 -- No --> E_IdentifyDispositionCodeType
File: GCX016E.cbl
GIVEN: A disposition code is being processed
WHEN: The system needs to determine quantity impact
THEN:
  • The disposition code type
  • Characteristics are identified from the dc table
βœ“ Consolidated Acceptance Criteria
  • If quantity impact potential → the system determines if the disposition code affects release quantities based on code type and action 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_DispositionCodeAffectsReleaseQuantity(["Start Step"]) E_DispositionCodeAffectsReleaseQuantity(["End Step"]) N_DispositionCodeAffectsReleaseQuantity_Node0{"The system evaluates quantity
impact potential"}:::decision N_DispositionCodeAffectsReleaseQuantity_Node0_action["The system determines if the
disposition code affects release
quantities based on code type and
action flags"]:::main N_DispositionCodeAffectsReleaseQuantity_Node0 -- Yes --> N_DispositionCodeAffectsReleaseQuantity_Node0_action N_DispositionCodeAffectsReleaseQuantity_Node0_action --> E_DispositionCodeAffectsReleaseQuantity S_DispositionCodeAffectsReleaseQuantity --> N_DispositionCodeAffectsReleaseQuantity_Node0 N_DispositionCodeAffectsReleaseQuantity_Node0 -- No --> E_DispositionCodeAffectsReleaseQuantity
File: GCX016E.cbl
GIVEN: A disposition code with defined characteristics
WHEN: The system evaluates quantity impact potential
THEN:
  • The system determines if the disposition code affects release quantities based on code type
  • Action flags
βœ“ Consolidated Acceptance Criteria
  • The system determines the direction of quantity change → the system identifies whether the action is to add or subtract from current release quantity based on disposition code 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_DetermineAddorSubtractAction(["Start Step"]) E_DetermineAddorSubtractAction(["End Step"]) N_DetermineAddorSubtractAction_Node0{"The system determines the direction
of quantity change"}:::decision N_DetermineAddorSubtractAction_Node0_action["The system identifies whether the
action is to add or subtract from
current release quantity based on
disposition code action type"]:::main N_DetermineAddorSubtractAction_Node0 -- Yes --> N_DetermineAddorSubtractAction_Node0_action N_DetermineAddorSubtractAction_Node0_action --> E_DetermineAddorSubtractAction S_DetermineAddorSubtractAction --> N_DetermineAddorSubtractAction_Node0 N_DetermineAddorSubtractAction_Node0 -- No --> E_DetermineAddorSubtractAction
File: GCX016E.cbl
GIVEN: A disposition code with calculated quantity impact
WHEN: The system determines the direction of quantity change
THEN: The system identifies whether the action is to add or subtract from current release quantity based on disposition code action type
βœ“ Consolidated Acceptance Criteria
  • Impact report formatting is performed → the current quantity is formatted for display as the 'before' value in the impact message
  • The system prepares quantity impact messaging → the current quantity is formatted for display as the 'before' quantity in impact 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_FormatBeforeQuantityDisplay(["Start Step"]) E_FormatBeforeQuantityDisplay(["End Step"]) N_FormatBeforeQuantityDisplay_Node0{"Impact report formatting is
performed"}:::decision N_FormatBeforeQuantityDisplay_Node0_action["The current quantity is formatted
for display as the before value in
the impact message"]:::main N_FormatBeforeQuantityDisplay_Node0 -- Yes --> N_FormatBeforeQuantityDisplay_Node0_action N_FormatBeforeQuantityDisplay_Node0_action --> E_FormatBeforeQuantityDisplay S_FormatBeforeQuantityDisplay --> N_FormatBeforeQuantityDisplay_Node0 N_FormatBeforeQuantityDisplay_Node1{"The system prepares quantity impact
messaging"}:::decision N_FormatBeforeQuantityDisplay_Node1_action["The current quantity is formatted
for display as the before quantity
in impact messages"]:::main N_FormatBeforeQuantityDisplay_Node1 -- Yes --> N_FormatBeforeQuantityDisplay_Node1_action N_FormatBeforeQuantityDisplay_Node1_action --> E_FormatBeforeQuantityDisplay N_FormatBeforeQuantityDisplay_Node0 -- No --> N_FormatBeforeQuantityDisplay_Node1 N_FormatBeforeQuantityDisplay_Node1 -- No --> E_FormatBeforeQuantityDisplay
File: GCX016E.cbl
GIVEN: Current release quantity value
WHEN: Impact report formatting is performed
THEN: The current quantity is formatted for display as the 'before' value in the impact message
File: GCX016E.cbl
GIVEN: Current cargo release quantity retrieved from cargo record
WHEN: The system prepares quantity impact messaging
THEN: The current quantity is formatted for display as the 'before' quantity in impact messages
βœ“ Consolidated Acceptance Criteria
  • Impact report formatting is performed → the new quantity is formatted for display as the 'after' value in the impact message
  • The system prepares quantity impact messaging → the new quantity is formatted for display as the 'after' quantity in impact 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_FormatAfterQuantityDisplay(["Start Step"]) E_FormatAfterQuantityDisplay(["End Step"]) N_FormatAfterQuantityDisplay_Node0{"Impact report formatting is
performed"}:::decision N_FormatAfterQuantityDisplay_Node0_action["The new quantity is formatted for
display as the after value in the
impact message"]:::main N_FormatAfterQuantityDisplay_Node0 -- Yes --> N_FormatAfterQuantityDisplay_Node0_action N_FormatAfterQuantityDisplay_Node0_action --> E_FormatAfterQuantityDisplay S_FormatAfterQuantityDisplay --> N_FormatAfterQuantityDisplay_Node0 N_FormatAfterQuantityDisplay_Node1{"The system prepares quantity impact
messaging"}:::decision N_FormatAfterQuantityDisplay_Node1_action["The new quantity is formatted for
display as the after quantity in
impact messages"]:::main N_FormatAfterQuantityDisplay_Node1 -- Yes --> N_FormatAfterQuantityDisplay_Node1_action N_FormatAfterQuantityDisplay_Node1_action --> E_FormatAfterQuantityDisplay N_FormatAfterQuantityDisplay_Node0 -- No --> N_FormatAfterQuantityDisplay_Node1 N_FormatAfterQuantityDisplay_Node1 -- No --> E_FormatAfterQuantityDisplay
File: GCX016E.cbl
GIVEN: Calculated new release quantity value
WHEN: Impact report formatting is performed
THEN: The new quantity is formatted for display as the 'after' value in the impact message
File: GCX016E.cbl
GIVEN: New release quantity calculated after disposition code processing
WHEN: The system prepares quantity impact messaging
THEN: The new quantity is formatted for display as the 'after' quantity in impact messages
βœ“ Consolidated Acceptance Criteria
  • Impact message formatting is performed → the disposition code description is formatted for inclusion in the impact 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_FormatDispositionCodeDescription(["Start Step"]) E_FormatDispositionCodeDescription(["End Step"]) N_FormatDispositionCodeDescription_Node0{"Impact message formatting is
performed"}:::decision N_FormatDispositionCodeDescription_Node0_action["The disposition code description is
formatted for inclusion in the
impact report"]:::main N_FormatDispositionCodeDescription_Node0 -- Yes --> N_FormatDispositionCodeDescription_Node0_action N_FormatDispositionCodeDescription_Node0_action --> E_FormatDispositionCodeDescription S_FormatDispositionCodeDescription --> N_FormatDispositionCodeDescription_Node0 N_FormatDispositionCodeDescription_Node0 -- No --> E_FormatDispositionCodeDescription
File: GCX016E.cbl
GIVEN: Disposition code information and description from DC table
WHEN: Impact message formatting is performed
THEN: The disposition code description is formatted for inclusion in the impact report
βœ“ Consolidated Acceptance Criteria
  • Impact message creation is performed → the system creates a formatted message showing the quantity impact of the disposition code
  • The system generates quantity impact messaging → a quantity impact message is created showing the quantity change from 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_CreateQuantityImpactMessage(["Start Step"]) E_CreateQuantityImpactMessage(["End Step"]) N_CreateQuantityImpactMessage_Node0{"Impact message creation is
performed"}:::decision N_CreateQuantityImpactMessage_Node0_action["The system creates a formatted
message showing the quantity impact
of the disposition code"]:::main N_CreateQuantityImpactMessage_Node0 -- Yes --> N_CreateQuantityImpactMessage_Node0_action N_CreateQuantityImpactMessage_Node0_action --> E_CreateQuantityImpactMessage S_CreateQuantityImpactMessage --> N_CreateQuantityImpactMessage_Node0 N_CreateQuantityImpactMessage_Node1{"The system generates quantity
impact messaging"}:::decision N_CreateQuantityImpactMessage_Node1_action["A quantity impact message is
created showing the quantity change
from disposition code processing"]:::main N_CreateQuantityImpactMessage_Node1 -- Yes --> N_CreateQuantityImpactMessage_Node1_action N_CreateQuantityImpactMessage_Node1_action --> E_CreateQuantityImpactMessage N_CreateQuantityImpactMessage_Node0 -- No --> N_CreateQuantityImpactMessage_Node1 N_CreateQuantityImpactMessage_Node1 -- No --> E_CreateQuantityImpactMessage
File: GCX016E.cbl
GIVEN: Formatted before quantity, after quantity, and disposition code description
WHEN: Impact message creation is performed
THEN: The system creates a formatted message showing the quantity impact of the disposition code
File: GCX016E.cbl
GIVEN: Formatted before and after quantity displays
WHEN: The system generates quantity impact messaging
THEN: A quantity impact message is created showing the quantity change from disposition code processing
βœ“ Consolidated Acceptance Criteria
  • Merlin message assembly is performed → the quantity impact details are included in the Merlin message for stakeholder 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_IncludeImpactDetailsinMerlinMessage(["Start Step"]) E_IncludeImpactDetailsinMerlinMessage(["End Step"]) N_IncludeImpactDetailsinMerlinMessage_Node0{"Merlin message assembly is
performed"}:::decision N_IncludeImpactDetailsinMerlinMessage_Node0_action["The quantity impact details are
included in the Merlin message for
stakeholder notification"]:::main N_IncludeImpactDetailsinMerlinMessage_Node0 -- Yes --> N_IncludeImpactDetailsinMerlinMessage_Node0_action N_IncludeImpactDetailsinMerlinMessage_Node0_action --> E_IncludeImpactDetailsinMerlinMessage S_IncludeImpactDetailsinMerlinMessage --> N_IncludeImpactDetailsinMerlinMessage_Node0 N_IncludeImpactDetailsinMerlinMessage_Node0 -- No --> E_IncludeImpactDetailsinMerlinMessage
File: GCX016E.cbl
GIVEN: Created quantity impact message and existing Merlin message structure
WHEN: Merlin message assembly is performed
THEN: The quantity impact details are included in the Merlin message for stakeholder notification
βœ“ Consolidated Acceptance Criteria
  • Special comments are available for inclusion → the system adds up to the maximum allowed special comments to the impact 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_AddSpecialCommentsifAvailable(["Start Step"]) E_AddSpecialCommentsifAvailable(["End Step"]) N_AddSpecialCommentsifAvailable_Node0{"Special comments are available for
inclusion"}:::decision N_AddSpecialCommentsifAvailable_Node0_action["The system adds up to the maximum
allowed special comments to the
impact message"]:::main N_AddSpecialCommentsifAvailable_Node0 -- Yes --> N_AddSpecialCommentsifAvailable_Node0_action N_AddSpecialCommentsifAvailable_Node0_action --> E_AddSpecialCommentsifAvailable S_AddSpecialCommentsifAvailable --> N_AddSpecialCommentsifAvailable_Node0 N_AddSpecialCommentsifAvailable_Node0 -- No --> E_AddSpecialCommentsifAvailable
File: GCX016E.cbl
GIVEN: Quantity impact message and available K1 segment comments
WHEN: Special comments are available for inclusion
THEN: The system adds up to the maximum allowed special comments to the impact message
βœ“ Consolidated Acceptance Criteria
  • Final report formatting is performed → the system creates a complete formatted release impact report ready 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_FormatCompleteReleaseImpactReport(["Start Step"]) E_FormatCompleteReleaseImpactReport(["End Step"]) N_FormatCompleteReleaseImpactReport_Node0{"Final report formatting is
performed"}:::decision N_FormatCompleteReleaseImpactReport_Node0_action["The system creates a complete
formatted release impact report
ready for distribution"]:::main N_FormatCompleteReleaseImpactReport_Node0 -- Yes --> N_FormatCompleteReleaseImpactReport_Node0_action N_FormatCompleteReleaseImpactReport_Node0_action --> E_FormatCompleteReleaseImpactReport S_FormatCompleteReleaseImpactReport --> N_FormatCompleteReleaseImpactReport_Node0 N_FormatCompleteReleaseImpactReport_Node0 -- No --> E_FormatCompleteReleaseImpactReport
File: GCX016E.cbl
GIVEN: All impact message components including quantities, descriptions, and comments
WHEN: Final report formatting is performed
THEN: The system creates a complete formatted release impact report ready for distribution
βœ“ Consolidated Acceptance Criteria
  • The system checks the equipment type against valid categories → only containers, trailers, and chassis equipment types are allowed to proceed with GCCIIS integration, all other equipment types are excluded
  • The system checks if the equipment type is valid for GCCIIS processing → the system continues processing if equipment type is container, trailer, chassis, or other valid equipment, otherwise skips GCCIIS 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_EquipmentTypeValid(["Start Step"]) E_EquipmentTypeValid(["End Step"]) N_EquipmentTypeValid_Node0{"The system checks the equipment
type against valid categories"}:::decision N_EquipmentTypeValid_Node0_action["Only containers, trailers, and
chassis equipment types are allowed
to proceed with GCCIIS integration,
all other equipment types are
excluded"]:::main N_EquipmentTypeValid_Node0 -- Yes --> N_EquipmentTypeValid_Node0_action N_EquipmentTypeValid_Node0_action --> E_EquipmentTypeValid S_EquipmentTypeValid --> N_EquipmentTypeValid_Node0 N_EquipmentTypeValid_Node1{"The system checks if the equipment
type is valid for GCCIIS processing"}:::decision N_EquipmentTypeValid_Node1_action["The system continues processing if
equipment type is container,
trailer, chassis, or other valid
equipment, otherwise skips GCCIIS
integration"]:::main N_EquipmentTypeValid_Node1 -- Yes --> N_EquipmentTypeValid_Node1_action N_EquipmentTypeValid_Node1_action --> E_EquipmentTypeValid N_EquipmentTypeValid_Node0 -- No --> N_EquipmentTypeValid_Node1 N_EquipmentTypeValid_Node1 -- No --> E_EquipmentTypeValid
File: GCX016E.cbl
GIVEN: A cargo record with equipment information is being processed for GCCIIS integration
WHEN: The system checks the equipment type against valid categories
THEN: Only containers, trailers, and chassis equipment types are allowed to proceed with GCCIIS integration, all other equipment types are excluded
File: GCX016E.cbl
GIVEN: A cargo has associated equipment information
WHEN: The system checks if the equipment type is valid for GCCIIS processing
THEN: The system continues processing if equipment type is container, trailer, chassis, or other valid equipment, otherwise skips GCCIIS integration
βœ“ Consolidated Acceptance Criteria
  • The system checks for the presence of cargo status information → integration proceeds only when cargo status data is available, otherwise the 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_CargoStatusAvailable(["Start Step"]) E_CargoStatusAvailable(["End Step"]) N_CargoStatusAvailable_Node0{"The system checks for the presence
of cargo status information"}:::decision N_CargoStatusAvailable_Node0_action["Integration proceeds only when
cargo status data is available,
otherwise the integration is skipped"]:::main N_CargoStatusAvailable_Node0 -- Yes --> N_CargoStatusAvailable_Node0_action N_CargoStatusAvailable_Node0_action --> E_CargoStatusAvailable S_CargoStatusAvailable --> N_CargoStatusAvailable_Node0 N_CargoStatusAvailable_Node0 -- No --> E_CargoStatusAvailable
File: GCX016E.cbl
GIVEN: A cargo record with valid equipment type is ready for GCCIIS processing
WHEN: The system checks for the presence of cargo status information
THEN: Integration proceeds only when cargo status data is available, otherwise the integration is skipped
βœ“ Consolidated Acceptance Criteria
  • The system processes the internal status code for GCCIIS transmission → the internal status is mapped to the corresponding GCCIIS status format according to predefined conversion 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_MapInternalStatustoGCCIISFormat(["Start Step"]) E_MapInternalStatustoGCCIISFormat(["End Step"]) N_MapInternalStatustoGCCIISFormat_Node0{"The system processes the internal
status code for GCCIIS transmission"}:::decision N_MapInternalStatustoGCCIISFormat_Node0_action["The internal status is mapped to
the corresponding GCCIIS status
format according to predefined
conversion rules"]:::main N_MapInternalStatustoGCCIISFormat_Node0 -- Yes --> N_MapInternalStatustoGCCIISFormat_Node0_action N_MapInternalStatustoGCCIISFormat_Node0_action --> E_MapInternalStatustoGCCIISFormat S_MapInternalStatustoGCCIISFormat --> N_MapInternalStatustoGCCIISFormat_Node0 N_MapInternalStatustoGCCIISFormat_Node0 -- No --> E_MapInternalStatustoGCCIISFormat
File: GCX016E.cbl
GIVEN: A cargo record with available status information
WHEN: The system processes the internal status code for GCCIIS transmission
THEN: The internal status is mapped to the corresponding GCCIIS status format according to predefined conversion rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold status for GCCIIS integration → the status is mapped to HOLD format with appropriate hold reason codes 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_MaptoHOLDStatus(["Start Step"]) E_MaptoHOLDStatus(["End Step"]) N_MaptoHOLDStatus_Node0{"The system processes the hold
status for GCCIIS integration"}:::decision N_MaptoHOLDStatus_Node0_action["The status is mapped to HOLD format
with appropriate hold reason codes
and location information"]:::main N_MaptoHOLDStatus_Node0 -- Yes --> N_MaptoHOLDStatus_Node0_action N_MaptoHOLDStatus_Node0_action --> E_MaptoHOLDStatus S_MaptoHOLDStatus --> N_MaptoHOLDStatus_Node0 N_MaptoHOLDStatus_Node0 -- No --> E_MaptoHOLDStatus
File: GCX016E.cbl
GIVEN: A cargo status is classified as a hold type
WHEN: The system processes the hold status for GCCIIS integration
THEN:
  • The status is mapped to hold format with appropriate hold reason codes
  • Location information
βœ“ Consolidated Acceptance Criteria
  • The system processes the release status for GCCIIS integration → the status is mapped to RELEASE format with release authorization 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_MaptoRELEASEStatus(["Start Step"]) E_MaptoRELEASEStatus(["End Step"]) N_MaptoRELEASEStatus_Node0{"The system processes the release
status for GCCIIS integration"}:::decision N_MaptoRELEASEStatus_Node0_action["The status is mapped to RELEASE
format with release authorization
and quantity information"]:::main N_MaptoRELEASEStatus_Node0 -- Yes --> N_MaptoRELEASEStatus_Node0_action N_MaptoRELEASEStatus_Node0_action --> E_MaptoRELEASEStatus S_MaptoRELEASEStatus --> N_MaptoRELEASEStatus_Node0 N_MaptoRELEASEStatus_Node0 -- No --> E_MaptoRELEASEStatus
File: GCX016E.cbl
GIVEN: A cargo status is classified as a release type
WHEN: The system processes the release status for GCCIIS integration
THEN:
  • The status is mapped to release format with release authorization
  • Quantity information
βœ“ Consolidated Acceptance Criteria
  • The system processes the PTT status for GCCIIS integration → the status is mapped to PTT format with transit authorization and destination 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_MaptoPTTStatus(["Start Step"]) E_MaptoPTTStatus(["End Step"]) N_MaptoPTTStatus_Node0{"The system processes the PTT status
for GCCIIS integration"}:::decision N_MaptoPTTStatus_Node0_action["The status is mapped to PTT format
with transit authorization and
destination information"]:::main N_MaptoPTTStatus_Node0 -- Yes --> N_MaptoPTTStatus_Node0_action N_MaptoPTTStatus_Node0_action --> E_MaptoPTTStatus S_MaptoPTTStatus --> N_MaptoPTTStatus_Node0 N_MaptoPTTStatus_Node0 -- No --> E_MaptoPTTStatus
File: GCX016E.cbl
GIVEN: A cargo status is classified as Proceed to Transit
WHEN: The system processes the PTT status for GCCIIS integration
THEN:
  • The status is mapped to ptt format with transit authorization
  • Destination information
βœ“ Consolidated Acceptance Criteria
  • The system processes the PTT-EX status for GCCIIS integration → the status is mapped to PTT-EX format with export authorization and port 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_MaptoPTTEXStatus(["Start Step"]) E_MaptoPTTEXStatus(["End Step"]) N_MaptoPTTEXStatus_Node0{"The system processes the PTT-EX
status for GCCIIS integration"}:::decision N_MaptoPTTEXStatus_Node0_action["The status is mapped to PTT-EX
format with export authorization and
port information"]:::main N_MaptoPTTEXStatus_Node0 -- Yes --> N_MaptoPTTEXStatus_Node0_action N_MaptoPTTEXStatus_Node0_action --> E_MaptoPTTEXStatus S_MaptoPTTEXStatus --> N_MaptoPTTEXStatus_Node0 N_MaptoPTTEXStatus_Node0 -- No --> E_MaptoPTTEXStatus
File: GCX016E.cbl
GIVEN: A cargo status is classified as Proceed to Export
WHEN: The system processes the PTT-EX status for GCCIIS integration
THEN:
  • The status is mapped to ptt-ex format with export authorization
  • Port information
βœ“ Consolidated Acceptance Criteria
  • The system compares released quantity against total cargo quantity → full release notification is sent only when released quantity equals total quantity, otherwise partial release 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_VerifyReleasedQuantityTotalQuantity(["Start Step"]) E_VerifyReleasedQuantityTotalQuantity(["End Step"]) N_VerifyReleasedQuantityTotalQuantity_Node0{"The system compares released
quantity against total cargo
quantity"}:::decision N_VerifyReleasedQuantityTotalQuantity_Node0_action["Full release notification is sent
only when released quantity equals
total quantity, otherwise partial
release status is maintained"]:::main N_VerifyReleasedQuantityTotalQuantity_Node0 -- Yes --> N_VerifyReleasedQuantityTotalQuantity_Node0_action N_VerifyReleasedQuantityTotalQuantity_Node0_action --> E_VerifyReleasedQuantityTotalQuantity S_VerifyReleasedQuantityTotalQuantity --> N_VerifyReleasedQuantityTotalQuantity_Node0 N_VerifyReleasedQuantityTotalQuantity_Node0 -- No --> E_VerifyReleasedQuantityTotalQuantity
File: GCX016E.cbl
GIVEN: A cargo with release status requires quantity verification
WHEN: The system compares released quantity against total cargo quantity
THEN: Full release notification is sent only when released quantity equals total quantity, otherwise partial release status is maintained
βœ“ Consolidated Acceptance Criteria
  • The system sends notification to GCCIIS → a full release notification is transmitted with complete cargo and quantity 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_SendFullReleaseNotificationtoGCCIIS(["Start Step"]) E_SendFullReleaseNotificationtoGCCIIS(["End Step"]) N_SendFullReleaseNotificationtoGCCIIS_Node0{"The system sends notification to
GCCIIS"}:::decision N_SendFullReleaseNotificationtoGCCIIS_Node0_action["A full release notification is
transmitted with complete cargo and
quantity details"]:::main N_SendFullReleaseNotificationtoGCCIIS_Node0 -- Yes --> N_SendFullReleaseNotificationtoGCCIIS_Node0_action N_SendFullReleaseNotificationtoGCCIIS_Node0_action --> E_SendFullReleaseNotificationtoGCCIIS S_SendFullReleaseNotificationtoGCCIIS --> N_SendFullReleaseNotificationtoGCCIIS_Node0 N_SendFullReleaseNotificationtoGCCIIS_Node0 -- No --> E_SendFullReleaseNotificationtoGCCIIS
File: GCX016E.cbl
GIVEN: A cargo has been verified as fully released with matching quantities
WHEN: The system sends notification to GCCIIS
THEN:
  • A full release notification is transmitted with complete cargo
  • Quantity details
βœ“ Consolidated Acceptance Criteria
  • The system sends status information to GCCIIS → a status update notification is transmitted with current cargo status and relevant details
  • The system sends the status update to GCCIIS → the system transmits the cargo status information to the GCCIIS equipment tracking 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_SendStatusUpdatetoGCCIIS(["Start Step"]) E_SendStatusUpdatetoGCCIIS(["End Step"]) N_SendStatusUpdatetoGCCIIS_Node0{"The system sends status information
to GCCIIS"}:::decision N_SendStatusUpdatetoGCCIIS_Node0_action["A status update notification is
transmitted with current cargo
status and relevant details"]:::main N_SendStatusUpdatetoGCCIIS_Node0 -- Yes --> N_SendStatusUpdatetoGCCIIS_Node0_action N_SendStatusUpdatetoGCCIIS_Node0_action --> E_SendStatusUpdatetoGCCIIS S_SendStatusUpdatetoGCCIIS --> N_SendStatusUpdatetoGCCIIS_Node0 N_SendStatusUpdatetoGCCIIS_Node1{"The system sends the status update
to GCCIIS"}:::decision N_SendStatusUpdatetoGCCIIS_Node1_action["The system transmits the cargo
status information to the GCCIIS
equipment tracking system"]:::main N_SendStatusUpdatetoGCCIIS_Node1 -- Yes --> N_SendStatusUpdatetoGCCIIS_Node1_action N_SendStatusUpdatetoGCCIIS_Node1_action --> E_SendStatusUpdatetoGCCIIS N_SendStatusUpdatetoGCCIIS_Node0 -- No --> N_SendStatusUpdatetoGCCIIS_Node1 N_SendStatusUpdatetoGCCIIS_Node1 -- No --> E_SendStatusUpdatetoGCCIIS
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo status has been processed and does not require full release verification or quantities do not match
WHEN: The system sends status information to GCCIIS
THEN:
  • A status update notification is transmitted with current cargo status
  • Relevant details
File: GCX016E.cbl
GIVEN: A GCCIIS status update is prepared and ready for transmission
WHEN: The system sends the status update to GCCIIS
THEN: The system transmits the cargo status information to the GCCIIS equipment tracking system
βœ“ Consolidated Acceptance Criteria
  • The system updates internal tracking records → equipment tracking status is updated to reflect the GCCIIS integration completion 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_UpdateEquipmentTrackingStatus(["Start Step"]) E_UpdateEquipmentTrackingStatus(["End Step"]) N_UpdateEquipmentTrackingStatus_Node0{"The system updates internal
tracking records"}:::decision N_UpdateEquipmentTrackingStatus_Node0_action["Equipment tracking status is
updated to reflect the GCCIIS
integration completion and timestamp"]:::main N_UpdateEquipmentTrackingStatus_Node0 -- Yes --> N_UpdateEquipmentTrackingStatus_Node0_action N_UpdateEquipmentTrackingStatus_Node0_action --> E_UpdateEquipmentTrackingStatus S_UpdateEquipmentTrackingStatus --> N_UpdateEquipmentTrackingStatus_Node0 N_UpdateEquipmentTrackingStatus_Node0 -- No --> E_UpdateEquipmentTrackingStatus
File: GCX016E.cbl
GIVEN: GCCIIS notification has been successfully transmitted
WHEN: The system updates internal tracking records
THEN:
  • Equipment tracking status is updated to reflect the gcciis integration completion
  • Timestamp
βœ“ Consolidated Acceptance Criteria
  • The system searches the GCST2RT broker database for freight forwarder disposition codes → the system identifies whether the disposition code exists in the freight forwarder records
  • The system searches the GCSTBRT broker database for freight forwarder disposition codes → the system identifies whether the disposition code requires freight forwarder validation
  • The system searches the broker database for freight forwarder-specific disposition codes → the system determines if the disposition code requires freight forwarder processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SearchBrokerDatabaseforFreightForwarderCodes(["Start Step"]) E_SearchBrokerDatabaseforFreightForwarderCodes(["End Step"]) N_SearchBrokerDatabaseforFreightForwarderCodes_Node0{"The system searches the GCST2RT
broker database for freight
forwarder disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderCodes_Node0_action["The system identifies whether the
disposition code exists in the
freight forwarder records"]:::main N_SearchBrokerDatabaseforFreightForwarderCodes_Node0 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderCodes_Node0_action N_SearchBrokerDatabaseforFreightForwarderCodes_Node0_action --> E_SearchBrokerDatabaseforFreightForwarderCodes S_SearchBrokerDatabaseforFreightForwarderCodes --> N_SearchBrokerDatabaseforFreightForwarderCodes_Node0 N_SearchBrokerDatabaseforFreightForwarderCodes_Node1{"The system searches the GCSTBRT
broker database for freight
forwarder disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderCodes_Node1_action["The system identifies whether the
disposition code requires freight
forwarder validation"]:::main N_SearchBrokerDatabaseforFreightForwarderCodes_Node1 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderCodes_Node1_action N_SearchBrokerDatabaseforFreightForwarderCodes_Node1_action --> E_SearchBrokerDatabaseforFreightForwarderCodes N_SearchBrokerDatabaseforFreightForwarderCodes_Node0 -- No --> N_SearchBrokerDatabaseforFreightForwarderCodes_Node1 N_SearchBrokerDatabaseforFreightForwarderCodes_Node2{"The system searches the broker
database for freight
forwarder-specific disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarderCodes_Node2_action["The system determines if the
disposition code requires freight
forwarder processing"]:::main N_SearchBrokerDatabaseforFreightForwarderCodes_Node2 -- Yes --> N_SearchBrokerDatabaseforFreightForwarderCodes_Node2_action N_SearchBrokerDatabaseforFreightForwarderCodes_Node2_action --> E_SearchBrokerDatabaseforFreightForwarderCodes N_SearchBrokerDatabaseforFreightForwarderCodes_Node1 -- No --> N_SearchBrokerDatabaseforFreightForwarderCodes_Node2 N_SearchBrokerDatabaseforFreightForwarderCodes_Node2 -- No --> E_SearchBrokerDatabaseforFreightForwarderCodes
File: GCX016E.cbl
GIVEN: A disposition code needs to be validated for freight forwarder processing
WHEN: The system searches the GCST2RT broker database for freight forwarder disposition codes
THEN: The system identifies whether the disposition code exists in the freight forwarder records
File: GCX016E.cbl
GIVEN: A disposition code has been retrieved from X4 segment
WHEN: The system searches the GCSTBRT broker database for freight forwarder disposition codes
THEN: The system identifies whether the disposition code requires freight forwarder validation
File: GCX016E.cbl
GIVEN: A disposition code is received for processing
WHEN: The system searches the broker database for freight forwarder-specific disposition codes
THEN: The system determines if the disposition code requires freight forwarder processing
βœ“ Consolidated Acceptance Criteria
  • If if the disposition code was found in the freight forwarder records → the system either proceeds with freight forwarder information retrieval or marks it as a standard disposition code
  • The disposition code is found in the broker database → the system proceeds to retrieve cargo segment data for freight forwarder processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_DispositionCodeFoundinBrokerDatabase(["Start Step"]) E_DispositionCodeFoundinBrokerDatabase(["End Step"]) N_DispositionCodeFoundinBrokerDatabase_Node0{"The system evaluates if the
disposition code was found in the
freight forwarder records"}:::decision N_DispositionCodeFoundinBrokerDatabase_Node0_action["The system either proceeds with
freight forwarder information
retrieval or marks it as a standard
disposition code"]:::main N_DispositionCodeFoundinBrokerDatabase_Node0 -- Yes --> N_DispositionCodeFoundinBrokerDatabase_Node0_action N_DispositionCodeFoundinBrokerDatabase_Node0_action --> E_DispositionCodeFoundinBrokerDatabase S_DispositionCodeFoundinBrokerDatabase --> N_DispositionCodeFoundinBrokerDatabase_Node0 N_DispositionCodeFoundinBrokerDatabase_Node1{"The disposition code is found in
the broker database"}:::decision N_DispositionCodeFoundinBrokerDatabase_Node1_action["The system proceeds to retrieve
cargo segment data for freight
forwarder processing"]:::main N_DispositionCodeFoundinBrokerDatabase_Node1 -- Yes --> N_DispositionCodeFoundinBrokerDatabase_Node1_action N_DispositionCodeFoundinBrokerDatabase_Node1_action --> E_DispositionCodeFoundinBrokerDatabase N_DispositionCodeFoundinBrokerDatabase_Node0 -- No --> N_DispositionCodeFoundinBrokerDatabase_Node1 N_DispositionCodeFoundinBrokerDatabase_Node1 -- No --> E_DispositionCodeFoundinBrokerDatabase
File: GCX016E.cbl
GIVEN: A disposition code has been searched in the broker database
WHEN: The system evaluates if the disposition code was found in the freight forwarder records
THEN: The system either proceeds with freight forwarder information retrieval or marks it as a standard disposition code
File: GCX016E.cbl
GIVEN: The broker database has been searched for the disposition code
WHEN: The disposition code is found in the broker database
THEN: The system proceeds to retrieve cargo segment data for freight forwarder processing
βœ“ Consolidated Acceptance Criteria
  • The system accesses GCSUSS03 and GCSUSS07 cargo segments to retrieve freight forwarder data → the system obtains the complete freight forwarder information 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_RetrieveFreightForwarderInformation(["Start Step"]) E_RetrieveFreightForwarderInformation(["End Step"]) N_RetrieveFreightForwarderInformation_Node0{"The system accesses GCSUSS03 and
GCSUSS07 cargo segments to retrieve
freight forwarder data"}:::decision N_RetrieveFreightForwarderInformation_Node0_action["The system obtains the complete
freight forwarder information for
further validation"]:::main N_RetrieveFreightForwarderInformation_Node0 -- Yes --> N_RetrieveFreightForwarderInformation_Node0_action N_RetrieveFreightForwarderInformation_Node0_action --> E_RetrieveFreightForwarderInformation S_RetrieveFreightForwarderInformation --> N_RetrieveFreightForwarderInformation_Node0 N_RetrieveFreightForwarderInformation_Node0 -- No --> E_RetrieveFreightForwarderInformation
File: GCX016E.cbl
GIVEN: A disposition code has been identified as a freight forwarder code in the broker database
WHEN:
  • The system accesses gcsuss03
  • Gcsuss07 cargo segments to retrieve freight forwarder data
THEN: The system obtains the complete freight forwarder information for further validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the code against freight forwarder records in the broker database → the system determines if the code represents a valid freight forwarder disposition or should be processed as a standard 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_IsValidFreightForwarderCode(["Start Step"]) E_IsValidFreightForwarderCode(["End Step"]) N_IsValidFreightForwarderCode_Node0{"The system validates the code
against freight forwarder records in
the broker database"}:::decision N_IsValidFreightForwarderCode_Node0_action["The system determines if the code
represents a valid freight forwarder
disposition or should be processed
as a standard code"]:::main N_IsValidFreightForwarderCode_Node0 -- Yes --> N_IsValidFreightForwarderCode_Node0_action N_IsValidFreightForwarderCode_Node0_action --> E_IsValidFreightForwarderCode S_IsValidFreightForwarderCode --> N_IsValidFreightForwarderCode_Node0 N_IsValidFreightForwarderCode_Node0 -- No --> E_IsValidFreightForwarderCode
File: GCX016E.cbl
GIVEN: Freight forwarder information has been retrieved from cargo segments
WHEN: The system validates the code against freight forwarder records in the broker database
THEN: The system determines if the code represents a valid freight forwarder disposition or should be processed as a standard code
βœ“ Consolidated Acceptance Criteria
  • The system marks the code as a valid freight forwarder disposition → the system sets the freight forwarder processing flag and continues with freight forwarder-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_MarkCodeasValidFreightForwarderDisposition(["Start Step"]) E_MarkCodeasValidFreightForwarderDisposition(["End Step"]) N_MarkCodeasValidFreightForwarderDisposition_Node0{"The system marks the code as a
valid freight forwarder disposition"}:::decision N_MarkCodeasValidFreightForwarderDisposition_Node0_action["The system sets the freight
forwarder processing flag and
continues with freight
forwarder-specific processing"]:::main N_MarkCodeasValidFreightForwarderDisposition_Node0 -- Yes --> N_MarkCodeasValidFreightForwarderDisposition_Node0_action N_MarkCodeasValidFreightForwarderDisposition_Node0_action --> E_MarkCodeasValidFreightForwarderDisposition S_MarkCodeasValidFreightForwarderDisposition --> N_MarkCodeasValidFreightForwarderDisposition_Node0 N_MarkCodeasValidFreightForwarderDisposition_Node0 -- No --> E_MarkCodeasValidFreightForwarderDisposition
File: GCX016E.cbl
GIVEN: A disposition code has been validated as a legitimate freight forwarder code
WHEN: The system marks the code as a valid freight forwarder disposition
THEN:
  • The system sets the freight forwarder processing flag
  • Continues with freight forwarder-specific processing
βœ“ Consolidated Acceptance Criteria
  • The system marks the code as a standard disposition code → the system continues with standard disposition code processing without freight forwarder-specific 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_MarkCodeasStandardDispositionCode(["Start Step"]) E_MarkCodeasStandardDispositionCode(["End Step"]) N_MarkCodeasStandardDispositionCode_Node0{"The system marks the code as a
standard disposition code"}:::decision N_MarkCodeasStandardDispositionCode_Node0_action["The system continues with standard
disposition code processing without
freight forwarder-specific handling"]:::main N_MarkCodeasStandardDispositionCode_Node0 -- Yes --> N_MarkCodeasStandardDispositionCode_Node0_action N_MarkCodeasStandardDispositionCode_Node0_action --> E_MarkCodeasStandardDispositionCode S_MarkCodeasStandardDispositionCode --> N_MarkCodeasStandardDispositionCode_Node0 N_MarkCodeasStandardDispositionCode_Node0 -- No --> E_MarkCodeasStandardDispositionCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is either not found in the broker database or fails freight forwarder validation
WHEN: The system marks the code as a standard disposition code
THEN: The system continues with standard disposition code processing without freight forwarder-specific handling
βœ“ Consolidated Acceptance Criteria
  • The system initiates cargo segment retrieval from GCSUSS03 → the primary cargo segment data is retrieved from GCSUSS03 for further processing
  • The system needs cargo segment information for freight forwarder processing → the system retrieves cargo segment data from GCSUSS03 database
  • The system needs cargo segment information for processing → the system retrieves cargo segment data from the GCSUSS03 database
  • The system needs cargo information for freight forwarder processing → the system retrieves cargo segment data from the primary 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_RetrieveCargoSegmentDatafromGCSUSS03(["Start Step"]) E_RetrieveCargoSegmentDatafromGCSUSS03(["End Step"]) N_RetrieveCargoSegmentDatafromGCSUSS03_Node0{"The system initiates cargo segment
retrieval from GCSUSS03"}:::decision N_RetrieveCargoSegmentDatafromGCSUSS03_Node0_action["The primary cargo segment data is
retrieved from GCSUSS03 for further
processing"]:::main N_RetrieveCargoSegmentDatafromGCSUSS03_Node0 -- Yes --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node0_action N_RetrieveCargoSegmentDatafromGCSUSS03_Node0_action --> E_RetrieveCargoSegmentDatafromGCSUSS03 S_RetrieveCargoSegmentDatafromGCSUSS03 --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node0 N_RetrieveCargoSegmentDatafromGCSUSS03_Node1{"The system needs cargo segment
information for freight forwarder
processing"}:::decision N_RetrieveCargoSegmentDatafromGCSUSS03_Node1_action["The system retrieves cargo segment
data from GCSUSS03 database"]:::main N_RetrieveCargoSegmentDatafromGCSUSS03_Node1 -- Yes --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node1_action N_RetrieveCargoSegmentDatafromGCSUSS03_Node1_action --> E_RetrieveCargoSegmentDatafromGCSUSS03 N_RetrieveCargoSegmentDatafromGCSUSS03_Node0 -- No --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node1 N_RetrieveCargoSegmentDatafromGCSUSS03_Node2{"The system needs cargo segment
information for processing"}:::decision N_RetrieveCargoSegmentDatafromGCSUSS03_Node2_action["The system retrieves cargo segment
data from the GCSUSS03 database"]:::main N_RetrieveCargoSegmentDatafromGCSUSS03_Node2 -- Yes --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node2_action N_RetrieveCargoSegmentDatafromGCSUSS03_Node2_action --> E_RetrieveCargoSegmentDatafromGCSUSS03 N_RetrieveCargoSegmentDatafromGCSUSS03_Node1 -- No --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node2 N_RetrieveCargoSegmentDatafromGCSUSS03_Node3{"The system needs cargo information
for freight forwarder processing"}:::decision N_RetrieveCargoSegmentDatafromGCSUSS03_Node3_action["The system retrieves cargo segment
data from the primary cargo database"]:::main N_RetrieveCargoSegmentDatafromGCSUSS03_Node3 -- Yes --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node3_action N_RetrieveCargoSegmentDatafromGCSUSS03_Node3_action --> E_RetrieveCargoSegmentDatafromGCSUSS03 N_RetrieveCargoSegmentDatafromGCSUSS03_Node2 -- No --> N_RetrieveCargoSegmentDatafromGCSUSS03_Node3 N_RetrieveCargoSegmentDatafromGCSUSS03_Node3 -- No --> E_RetrieveCargoSegmentDatafromGCSUSS03
File: GCX016E.cbl
GIVEN: A cargo requires freight forwarder analysis
WHEN: The system initiates cargo segment retrieval from GCSUSS03
THEN: The primary cargo segment data is retrieved from GCSUSS03 for further processing
File: GCX016E.cbl
GIVEN: A freight forwarder code has been found in the broker table
WHEN: The system needs cargo segment information for freight forwarder processing
THEN: The system retrieves cargo segment data from GCSUSS03 database
File: GCX016E.cbl
GIVEN: A freight forwarder disposition code has been identified
WHEN: The system needs cargo segment information for processing
THEN: The system retrieves cargo segment data from the GCSUSS03 database
File: GCX016E.cbl
GIVEN: A disposition code is identified as freight forwarder-related
WHEN: The system needs cargo information for freight forwarder processing
THEN: The system retrieves cargo segment data from the primary cargo database
βœ“ Consolidated Acceptance Criteria
  • The system checks if GCSUSS03 segment data was found → the system determines if GCSUSS03 segment exists 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_GCSUSS03SegmentFound(["Start Step"]) E_GCSUSS03SegmentFound(["End Step"]) N_GCSUSS03SegmentFound_Node0{"The system checks if GCSUSS03
segment data was found"}:::decision N_GCSUSS03SegmentFound_Node0_action["The system determines if GCSUSS03
segment exists and routes processing
accordingly"]:::main N_GCSUSS03SegmentFound_Node0 -- Yes --> N_GCSUSS03SegmentFound_Node0_action N_GCSUSS03SegmentFound_Node0_action --> E_GCSUSS03SegmentFound S_GCSUSS03SegmentFound --> N_GCSUSS03SegmentFound_Node0 N_GCSUSS03SegmentFound_Node0 -- No --> E_GCSUSS03SegmentFound
File: GCX016E.cbl
GIVEN: A cargo segment retrieval attempt has been made from GCSUSS03
WHEN: The system checks if GCSUSS03 segment data was found
THEN:
  • The system determines if gcsuss03 segment exists
  • Routes processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the GCSUSS03 segment → freight forwarder information is extracted from the GCSUSS03 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_ExtractFreightForwarderInformationfromGCSUSS03(["Start Step"]) E_ExtractFreightForwarderInformationfromGCSUSS03(["End Step"]) N_ExtractFreightForwarderInformationfromGCSUSS03_Node0{"The system processes the GCSUSS03
segment"}:::decision N_ExtractFreightForwarderInformationfromGCSUSS03_Node0_action["Freight forwarder information is
extracted from the GCSUSS03 segment
data"]:::main N_ExtractFreightForwarderInformationfromGCSUSS03_Node0 -- Yes --> N_ExtractFreightForwarderInformationfromGCSUSS03_Node0_action N_ExtractFreightForwarderInformationfromGCSUSS03_Node0_action --> E_ExtractFreightForwarderInformationfromGCSUSS03 S_ExtractFreightForwarderInformationfromGCSUSS03 --> N_ExtractFreightForwarderInformationfromGCSUSS03_Node0 N_ExtractFreightForwarderInformationfromGCSUSS03_Node0 -- No --> E_ExtractFreightForwarderInformationfromGCSUSS03
File: GCX016E.cbl
GIVEN: GCSUSS03 cargo segment data is available
WHEN: The system processes the GCSUSS03 segment
THEN: Freight forwarder information is extracted from the GCSUSS03 segment data
βœ“ Consolidated Acceptance Criteria
  • The system initiates extended cargo data retrieval from GCSUSS07 → additional cargo segment data is retrieved from GCSUSS07 for enhanced freight forwarder analysis
  • The system requires additional cargo information for freight forwarder processing → the system retrieves additional cargo data from GCSUSS07 database
  • Additional cargo information is needed for freight forwarder processing → the system retrieves additional cargo data from the GCSUSS07 database
  • Additional cargo details are needed for complete freight forwarder information → the system retrieves supplementary cargo data from the extended 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_RetrieveAdditionalCargoDatafromGCSUSS07(["Start Step"]) E_RetrieveAdditionalCargoDatafromGCSUSS07(["End Step"]) N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0{"The system initiates extended cargo
data retrieval from GCSUSS07"}:::decision N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0_action["Additional cargo segment data is
retrieved from GCSUSS07 for enhanced
freight forwarder analysis"]:::main N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0 -- Yes --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0_action N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0_action --> E_RetrieveAdditionalCargoDatafromGCSUSS07 S_RetrieveAdditionalCargoDatafromGCSUSS07 --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1{"The system requires additional
cargo information for freight
forwarder processing"}:::decision N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1_action["The system retrieves additional
cargo data from GCSUSS07 database"]:::main N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1 -- Yes --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1_action N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1_action --> E_RetrieveAdditionalCargoDatafromGCSUSS07 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node0 -- No --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2{"Additional cargo information is
needed for freight forwarder
processing"}:::decision N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2_action["The system retrieves additional
cargo data from the GCSUSS07
database"]:::main N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2 -- Yes --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2_action N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2_action --> E_RetrieveAdditionalCargoDatafromGCSUSS07 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node1 -- No --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3{"Additional cargo details are needed
for complete freight forwarder
information"}:::decision N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3_action["The system retrieves supplementary
cargo data from the extended cargo
database"]:::main N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3 -- Yes --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3_action N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3_action --> E_RetrieveAdditionalCargoDatafromGCSUSS07 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node2 -- No --> N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3 N_RetrieveAdditionalCargoDatafromGCSUSS07_Node3 -- No --> E_RetrieveAdditionalCargoDatafromGCSUSS07
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Primary cargo segment processing is complete or GCSUSS03 segment was not found
WHEN: The system initiates extended cargo data retrieval from GCSUSS07
THEN: Additional cargo segment data is retrieved from GCSUSS07 for enhanced freight forwarder analysis
File: GCX016E.cbl
GIVEN: Primary cargo segment data has been retrieved from GCSUSS03
WHEN: The system requires additional cargo information for freight forwarder processing
THEN: The system retrieves additional cargo data from GCSUSS07 database
File: GCX016E.cbl
GIVEN: Primary cargo segment data has been retrieved from GCSUSS03
WHEN: Additional cargo information is needed for freight forwarder processing
THEN: The system retrieves additional cargo data from the GCSUSS07 database
File: GCX016E.cbl
GIVEN: Primary cargo segment data has been retrieved for freight forwarder processing
WHEN: Additional cargo details are needed for complete freight forwarder information
THEN: The system retrieves supplementary cargo data from the extended cargo database
βœ“ Consolidated Acceptance Criteria
  • The system checks if GCSUSS07 segment data was found → the system determines if GCSUSS07 segment exists 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_GCSUSS07SegmentFound(["Start Step"]) E_GCSUSS07SegmentFound(["End Step"]) N_GCSUSS07SegmentFound_Node0{"The system checks if GCSUSS07
segment data was found"}:::decision N_GCSUSS07SegmentFound_Node0_action["The system determines if GCSUSS07
segment exists and routes processing
accordingly"]:::main N_GCSUSS07SegmentFound_Node0 -- Yes --> N_GCSUSS07SegmentFound_Node0_action N_GCSUSS07SegmentFound_Node0_action --> E_GCSUSS07SegmentFound S_GCSUSS07SegmentFound --> N_GCSUSS07SegmentFound_Node0 N_GCSUSS07SegmentFound_Node0 -- No --> E_GCSUSS07SegmentFound
File: GCX016E.cbl
GIVEN: An extended cargo segment retrieval attempt has been made from GCSUSS07
WHEN: The system checks if GCSUSS07 segment data was found
THEN:
  • The system determines if gcsuss07 segment exists
  • Routes processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the GCSUSS07 segment → extended freight forwarder details are extracted from the GCSUSS07 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_ExtractExtendedFreightForwarderDetailsfromGCSUSS07(["Start Step"]) E_ExtractExtendedFreightForwarderDetailsfromGCSUSS07(["End Step"]) N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0{"The system processes the GCSUSS07
segment"}:::decision N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0_action["Extended freight forwarder details
are extracted from the GCSUSS07
segment data"]:::main N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0 -- Yes --> N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0_action N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0_action --> E_ExtractExtendedFreightForwarderDetailsfromGCSUSS07 S_ExtractExtendedFreightForwarderDetailsfromGCSUSS07 --> N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0 N_ExtractExtendedFreightForwarderDetailsfromGCSUSS07_Node0 -- No --> E_ExtractExtendedFreightForwarderDetailsfromGCSUSS07
File: GCX016E.cbl
GIVEN: GCSUSS07 extended cargo segment data is available
WHEN: The system processes the GCSUSS07 segment
THEN: Extended freight forwarder details are extracted from the GCSUSS07 segment data
βœ“ Consolidated Acceptance Criteria
  • The system consolidates the extracted freight forwarder data → all available freight forwarder information is combined into a unified dataset 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_ConsolidateFreightForwarderInformation(["Start Step"]) E_ConsolidateFreightForwarderInformation(["End Step"]) N_ConsolidateFreightForwarderInformation_Node0{"The system consolidates the
extracted freight forwarder data"}:::decision N_ConsolidateFreightForwarderInformation_Node0_action["All available freight forwarder
information is combined into a
unified dataset for validation"]:::main N_ConsolidateFreightForwarderInformation_Node0 -- Yes --> N_ConsolidateFreightForwarderInformation_Node0_action N_ConsolidateFreightForwarderInformation_Node0_action --> E_ConsolidateFreightForwarderInformation S_ConsolidateFreightForwarderInformation --> N_ConsolidateFreightForwarderInformation_Node0 N_ConsolidateFreightForwarderInformation_Node0 -- No --> E_ConsolidateFreightForwarderInformation
File: GCX016E.cbl
GIVEN: Freight forwarder information has been extracted from available cargo segments
WHEN: The system consolidates the extracted freight forwarder data
THEN: All available freight forwarder information is combined into a unified dataset for validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the completeness of freight forwarder data → the system determines if sufficient freight forwarder information exists 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_ValidateFreightForwarderDataCompleteness(["Start Step"]) E_ValidateFreightForwarderDataCompleteness(["End Step"]) N_ValidateFreightForwarderDataCompleteness_Node0{"The system validates the
completeness of freight forwarder
data"}:::decision N_ValidateFreightForwarderDataCompleteness_Node0_action["The system determines if sufficient
freight forwarder information exists
for further processing"]:::main N_ValidateFreightForwarderDataCompleteness_Node0 -- Yes --> N_ValidateFreightForwarderDataCompleteness_Node0_action N_ValidateFreightForwarderDataCompleteness_Node0_action --> E_ValidateFreightForwarderDataCompleteness S_ValidateFreightForwarderDataCompleteness --> N_ValidateFreightForwarderDataCompleteness_Node0 N_ValidateFreightForwarderDataCompleteness_Node0 -- No --> E_ValidateFreightForwarderDataCompleteness
File: GCX016E.cbl
GIVEN: Freight forwarder information has been consolidated from available cargo segments
WHEN: The system validates the completeness of freight forwarder data
THEN: The system determines if sufficient freight forwarder information exists for further processing
βœ“ Consolidated Acceptance Criteria
  • If if a freight forwarder has been successfully identified → the system determines the freight forwarder identification status 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_FreightForwarderIdentified(["Start Step"]) E_FreightForwarderIdentified(["End Step"]) N_FreightForwarderIdentified_Node0{"The system evaluates if a freight
forwarder has been successfully
identified"}:::decision N_FreightForwarderIdentified_Node0_action["The system determines the freight
forwarder identification status and
routes processing accordingly"]:::main N_FreightForwarderIdentified_Node0 -- Yes --> N_FreightForwarderIdentified_Node0_action N_FreightForwarderIdentified_Node0_action --> E_FreightForwarderIdentified S_FreightForwarderIdentified --> N_FreightForwarderIdentified_Node0 N_FreightForwarderIdentified_Node0 -- No --> E_FreightForwarderIdentified
File: GCX016E.cbl
GIVEN: Freight forwarder data validation has been completed
WHEN: The system evaluates if a freight forwarder has been successfully identified
THEN:
  • The system determines the freight forwarder identification status
  • Routes processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the successful freight forwarder identification → the freight forwarder found flag is set to indicate successful identification
  • The system sets the freight forwarder found flag → the system marks the freight forwarder as available 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_SetFreightForwarderFoundFlag(["Start Step"]) E_SetFreightForwarderFoundFlag(["End Step"]) N_SetFreightForwarderFoundFlag_Node0{"The system processes the successful
freight forwarder identification"}:::decision N_SetFreightForwarderFoundFlag_Node0_action["The freight forwarder found flag is
set to indicate successful
identification"]:::main N_SetFreightForwarderFoundFlag_Node0 -- Yes --> N_SetFreightForwarderFoundFlag_Node0_action N_SetFreightForwarderFoundFlag_Node0_action --> E_SetFreightForwarderFoundFlag S_SetFreightForwarderFoundFlag --> N_SetFreightForwarderFoundFlag_Node0 N_SetFreightForwarderFoundFlag_Node1{"The system sets the freight
forwarder found flag"}:::decision N_SetFreightForwarderFoundFlag_Node1_action["The system marks the freight
forwarder as available for
subsequent processing operations"]:::main N_SetFreightForwarderFoundFlag_Node1 -- Yes --> N_SetFreightForwarderFoundFlag_Node1_action N_SetFreightForwarderFoundFlag_Node1_action --> E_SetFreightForwarderFoundFlag N_SetFreightForwarderFoundFlag_Node0 -- No --> N_SetFreightForwarderFoundFlag_Node1 N_SetFreightForwarderFoundFlag_Node1 -- No --> E_SetFreightForwarderFoundFlag
File: GCX016E.cbl
GIVEN: A valid freight forwarder has been successfully identified from cargo segment analysis
WHEN: The system processes the successful freight forwarder identification
THEN: The freight forwarder found flag is set to indicate successful identification
File: GCX016E.cbl
GIVEN: A freight forwarder has been validated and authorized for disposition code processing
WHEN: The system sets the freight forwarder found flag
THEN: The system marks the freight forwarder as available for subsequent processing operations
βœ“ Consolidated Acceptance Criteria
  • The system prepares the freight forwarder data for downstream processing → freight forwarder data is formatted and made available for subsequent business processes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_PrepareFreightForwarderDataforProcessing(["Start Step"]) E_PrepareFreightForwarderDataforProcessing(["End Step"]) N_PrepareFreightForwarderDataforProcessing_Node0{"The system prepares the freight
forwarder data for downstream
processing"}:::decision N_PrepareFreightForwarderDataforProcessing_Node0_action["Freight forwarder data is formatted
and made available for subsequent
business processes"]:::main N_PrepareFreightForwarderDataforProcessing_Node0 -- Yes --> N_PrepareFreightForwarderDataforProcessing_Node0_action N_PrepareFreightForwarderDataforProcessing_Node0_action --> E_PrepareFreightForwarderDataforProcessing S_PrepareFreightForwarderDataforProcessing --> N_PrepareFreightForwarderDataforProcessing_Node0 N_PrepareFreightForwarderDataforProcessing_Node0 -- No --> E_PrepareFreightForwarderDataforProcessing
File: GCX016E.cbl
GIVEN: A freight forwarder has been successfully identified and the found flag has been set
WHEN: The system prepares the freight forwarder data for downstream processing
THEN:
  • Freight forwarder data is formatted
  • Made available for subsequent business processes
βœ“ Consolidated Acceptance Criteria
  • The system processes the freight forwarder not found condition → a freight forwarder not found event is logged for audit and tracking purposes
  • No valid freight forwarder can be identified for the disposition code → the system logs that the freight forwarder was not found and continues processing without freight forwarder notification
  • The system processes the freight forwarder search failure → the system logs the freight forwarder not found event for audit and troubleshooting purposes
  • The system processes the validation result → a log entry is created indicating that freight forwarder information was not found or 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_LogFreightForwarderNotFound(["Start Step"]) E_LogFreightForwarderNotFound(["End Step"]) N_LogFreightForwarderNotFound_Node0{"The system processes the freight
forwarder not found condition"}:::decision N_LogFreightForwarderNotFound_Node0_action["A freight forwarder not found event
is logged for audit and tracking
purposes"]:::main N_LogFreightForwarderNotFound_Node0 -- Yes --> N_LogFreightForwarderNotFound_Node0_action N_LogFreightForwarderNotFound_Node0_action --> E_LogFreightForwarderNotFound S_LogFreightForwarderNotFound --> N_LogFreightForwarderNotFound_Node0 N_LogFreightForwarderNotFound_Node1{"No valid freight forwarder can be
identified for the disposition code"}:::decision N_LogFreightForwarderNotFound_Node1_action["The system logs that the freight
forwarder was not found and
continues processing without freight
forwarder notification"]:::main N_LogFreightForwarderNotFound_Node1 -- Yes --> N_LogFreightForwarderNotFound_Node1_action N_LogFreightForwarderNotFound_Node1_action --> E_LogFreightForwarderNotFound N_LogFreightForwarderNotFound_Node0 -- No --> N_LogFreightForwarderNotFound_Node1 N_LogFreightForwarderNotFound_Node2{"The system processes the freight
forwarder search failure"}:::decision N_LogFreightForwarderNotFound_Node2_action["The system logs the freight
forwarder not found event for audit
and troubleshooting purposes"]:::main N_LogFreightForwarderNotFound_Node2 -- Yes --> N_LogFreightForwarderNotFound_Node2_action N_LogFreightForwarderNotFound_Node2_action --> E_LogFreightForwarderNotFound N_LogFreightForwarderNotFound_Node1 -- No --> N_LogFreightForwarderNotFound_Node2 N_LogFreightForwarderNotFound_Node3{"The system processes the validation
result"}:::decision N_LogFreightForwarderNotFound_Node3_action["A log entry is created indicating
that freight forwarder information
was not found or is invalid"]:::main N_LogFreightForwarderNotFound_Node3 -- Yes --> N_LogFreightForwarderNotFound_Node3_action N_LogFreightForwarderNotFound_Node3_action --> E_LogFreightForwarderNotFound N_LogFreightForwarderNotFound_Node2 -- No --> N_LogFreightForwarderNotFound_Node3 N_LogFreightForwarderNotFound_Node3 -- No --> E_LogFreightForwarderNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo segment analysis has been completed but no valid freight forwarder was identified
WHEN: The system processes the freight forwarder not found condition
THEN:
  • A freight forwarder not found event is logged for audit
  • Tracking purposes
File: GCX016E.cbl
GIVEN: The freight forwarder identification process has failed at any validation step
WHEN: No valid freight forwarder can be identified for the disposition code
THEN:
  • The system logs that the freight forwarder was not found
  • Continues processing without freight forwarder notification
File: GCX016E.cbl
GIVEN: No valid freight forwarder record exists OR the broker lacks proper authorization OR the freight forwarder relationship is invalid
WHEN: The system processes the freight forwarder search failure
THEN:
  • The system logs the freight forwarder not found event for audit
  • Troubleshooting purposes
File: GCX016E.cbl
GIVEN: The freight forwarder information has been validated as incomplete or invalid
WHEN: The system processes the validation result
THEN: A log entry is created indicating that freight forwarder information was not found or is invalid
βœ“ Consolidated Acceptance Criteria
  • If the search results → the system determines if a freight forwarder code was found and proceeds with appropriate processing path
  • The system checks for freight forwarder code presence → if freight forwarder code exists, proceed to name lookup; otherwise log no code found and end process
  • The search results are evaluated → if a freight forwarder code is found, proceed to retrieve cargo segment data, otherwise log freight forwarder not found
  • The system checks for freight forwarder code presence → if freight forwarder code exists, proceed to broker database search; otherwise set lookup failed flag
  • If the search results for freight forwarder codes → the system determines whether to proceed with email notification or terminate 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_FreightForwarderCodeFound(["Start Step"]) E_FreightForwarderCodeFound(["End Step"]) N_FreightForwarderCodeFound_Node0{"The system evaluates the search
results"}:::decision N_FreightForwarderCodeFound_Node0_action["The system determines if a freight
forwarder code was found and
proceeds with appropriate processing
path"]:::main N_FreightForwarderCodeFound_Node0 -- Yes --> N_FreightForwarderCodeFound_Node0_action N_FreightForwarderCodeFound_Node0_action --> E_FreightForwarderCodeFound S_FreightForwarderCodeFound --> N_FreightForwarderCodeFound_Node0 N_FreightForwarderCodeFound_Node1{"The system checks for freight
forwarder code presence"}:::decision N_FreightForwarderCodeFound_Node1_action["If freight forwarder code exists,
proceed to name lookup otherwise log
no code found and end process"]:::main N_FreightForwarderCodeFound_Node1 -- Yes --> N_FreightForwarderCodeFound_Node1_action N_FreightForwarderCodeFound_Node1_action --> E_FreightForwarderCodeFound N_FreightForwarderCodeFound_Node0 -- No --> N_FreightForwarderCodeFound_Node1 N_FreightForwarderCodeFound_Node2{"The search results are evaluated"}:::decision N_FreightForwarderCodeFound_Node2_action["If a freight forwarder code is
found, proceed to retrieve cargo
segment data, otherwise log freight
forwarder not found"]:::main N_FreightForwarderCodeFound_Node2 -- Yes --> N_FreightForwarderCodeFound_Node2_action N_FreightForwarderCodeFound_Node2_action --> E_FreightForwarderCodeFound N_FreightForwarderCodeFound_Node1 -- No --> N_FreightForwarderCodeFound_Node2 N_FreightForwarderCodeFound_Node3{"The system checks for freight
forwarder code presence"}:::decision N_FreightForwarderCodeFound_Node3_action["If freight forwarder code exists,
proceed to broker database search
otherwise set lookup failed flag"]:::main N_FreightForwarderCodeFound_Node3 -- Yes --> N_FreightForwarderCodeFound_Node3_action N_FreightForwarderCodeFound_Node3_action --> E_FreightForwarderCodeFound N_FreightForwarderCodeFound_Node2 -- No --> N_FreightForwarderCodeFound_Node3 N_FreightForwarderCodeFound_Node4{"The system evaluates the search
results for freight forwarder codes"}:::decision N_FreightForwarderCodeFound_Node4_action["The system determines whether to
proceed with email notification or
terminate the process"]:::exclusion N_FreightForwarderCodeFound_Node4 -- Yes -->|Alternative| N_FreightForwarderCodeFound_Node4_action N_FreightForwarderCodeFound_Node4_action --> E_FreightForwarderCodeFound N_FreightForwarderCodeFound_Node3 -- No --> N_FreightForwarderCodeFound_Node4 N_FreightForwarderCodeFound_Node4 -- No --> E_FreightForwarderCodeFound
File: GCX016E.cbl
GIVEN: The broker table search for freight forwarder disposition codes has been completed
WHEN: The system evaluates the search results
THEN:
  • The system determines if a freight forwarder code was found
  • Proceeds with appropriate processing path
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved
WHEN: The system checks for freight forwarder code presence
THEN:
  • If freight forwarder code exists, proceed to name lookup; otherwise log no code found
  • End process
File: GCX016E.cbl
GIVEN: The broker database has been searched for freight forwarder disposition codes
WHEN: The search results are evaluated
THEN: If a freight forwarder code is found, proceed to retrieve cargo segment data, otherwise log freight forwarder not found
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved
WHEN: The system checks for freight forwarder code presence
THEN: If freight forwarder code exists, proceed to broker database search; otherwise set lookup failed flag
File: GCX016E.cbl
GIVEN: The broker database search has been completed
WHEN: The system evaluates the search results for freight forwarder codes
THEN: The system determines whether to proceed with email notification or terminate the process
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo segment data → the system extracts freight forwarder identification and related information from the cargo segments
  • The system processes the cargo segment information → the system extracts freight forwarder identification details from the cargo segments
  • The system processes the cargo segments to extract freight forwarder information → the system identifies the freight forwarder code and related business information for validation
  • The system processes the cargo segments to extract freight forwarder information → the system obtains freight forwarder identification and contact 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_ExtractFreightForwarderInformationfromCargoSegments(["Start Step"]) E_ExtractFreightForwarderInformationfromCargoSegments(["End Step"]) N_ExtractFreightForwarderInformationfromCargoSegments_Node0{"The system processes the cargo
segment data"}:::decision N_ExtractFreightForwarderInformationfromCargoSegments_Node0_action["The system extracts freight
forwarder identification and related
information from the cargo segments"]:::main N_ExtractFreightForwarderInformationfromCargoSegments_Node0 -- Yes --> N_ExtractFreightForwarderInformationfromCargoSegments_Node0_action N_ExtractFreightForwarderInformationfromCargoSegments_Node0_action --> E_ExtractFreightForwarderInformationfromCargoSegments S_ExtractFreightForwarderInformationfromCargoSegments --> N_ExtractFreightForwarderInformationfromCargoSegments_Node0 N_ExtractFreightForwarderInformationfromCargoSegments_Node1{"The system processes the cargo
segment information"}:::decision N_ExtractFreightForwarderInformationfromCargoSegments_Node1_action["The system extracts freight
forwarder identification details
from the cargo segments"]:::main N_ExtractFreightForwarderInformationfromCargoSegments_Node1 -- Yes --> N_ExtractFreightForwarderInformationfromCargoSegments_Node1_action N_ExtractFreightForwarderInformationfromCargoSegments_Node1_action --> E_ExtractFreightForwarderInformationfromCargoSegments N_ExtractFreightForwarderInformationfromCargoSegments_Node0 -- No --> N_ExtractFreightForwarderInformationfromCargoSegments_Node1 N_ExtractFreightForwarderInformationfromCargoSegments_Node2{"The system processes the cargo
segments to extract freight
forwarder information"}:::decision N_ExtractFreightForwarderInformationfromCargoSegments_Node2_action["The system identifies the freight
forwarder code and related business
information for validation"]:::main N_ExtractFreightForwarderInformationfromCargoSegments_Node2 -- Yes --> N_ExtractFreightForwarderInformationfromCargoSegments_Node2_action N_ExtractFreightForwarderInformationfromCargoSegments_Node2_action --> E_ExtractFreightForwarderInformationfromCargoSegments N_ExtractFreightForwarderInformationfromCargoSegments_Node1 -- No --> N_ExtractFreightForwarderInformationfromCargoSegments_Node2 N_ExtractFreightForwarderInformationfromCargoSegments_Node3{"The system processes the cargo
segments to extract freight
forwarder information"}:::decision N_ExtractFreightForwarderInformationfromCargoSegments_Node3_action["The system obtains freight
forwarder identification and contact
details"]:::main N_ExtractFreightForwarderInformationfromCargoSegments_Node3 -- Yes --> N_ExtractFreightForwarderInformationfromCargoSegments_Node3_action N_ExtractFreightForwarderInformationfromCargoSegments_Node3_action --> E_ExtractFreightForwarderInformationfromCargoSegments N_ExtractFreightForwarderInformationfromCargoSegments_Node2 -- No --> N_ExtractFreightForwarderInformationfromCargoSegments_Node3 N_ExtractFreightForwarderInformationfromCargoSegments_Node3 -- No --> E_ExtractFreightForwarderInformationfromCargoSegments
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved from both GCSUSS03 and GCSUSS07
WHEN: The system processes the cargo segment data
THEN:
  • The system extracts freight forwarder identification
  • Related information from the cargo segments
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved from both GCSUSS03 and GCSUSS07
WHEN: The system processes the cargo segment information
THEN: The system extracts freight forwarder identification details from the cargo segments
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved from GCSUSS03 and GCSUSS07 segments
WHEN: The system processes the cargo segments to extract freight forwarder information
THEN:
  • The system identifies the freight forwarder code
  • Related business information for validation
File: GCX016E.cbl
GIVEN: Cargo segment data has been successfully retrieved from GCSUSS03/GCSUSS07
WHEN: The system processes the cargo segments to extract freight forwarder information
THEN:
  • The system obtains freight forwarder identification
  • Contact details
βœ“ Consolidated Acceptance Criteria
  • The system needs to resolve the freight forwarder name → the system looks up the freight forwarder name in the GCST2RT broker name segments table
  • The system needs complete freight forwarder contact information → the system searches the broker name tables to retrieve freight forwarder name and contact 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_LookupFreightForwarderNameinBrokerTables(["Start Step"]) E_LookupFreightForwarderNameinBrokerTables(["End Step"]) N_LookupFreightForwarderNameinBrokerTables_Node0{"The system needs to resolve the
freight forwarder name"}:::decision N_LookupFreightForwarderNameinBrokerTables_Node0_action["The system looks up the freight
forwarder name in the GCST2RT broker
name segments table"]:::main N_LookupFreightForwarderNameinBrokerTables_Node0 -- Yes --> N_LookupFreightForwarderNameinBrokerTables_Node0_action N_LookupFreightForwarderNameinBrokerTables_Node0_action --> E_LookupFreightForwarderNameinBrokerTables S_LookupFreightForwarderNameinBrokerTables --> N_LookupFreightForwarderNameinBrokerTables_Node0 N_LookupFreightForwarderNameinBrokerTables_Node1{"The system needs complete freight
forwarder contact information"}:::decision N_LookupFreightForwarderNameinBrokerTables_Node1_action["The system searches the broker name
tables to retrieve freight forwarder
name and contact details"]:::main N_LookupFreightForwarderNameinBrokerTables_Node1 -- Yes --> N_LookupFreightForwarderNameinBrokerTables_Node1_action N_LookupFreightForwarderNameinBrokerTables_Node1_action --> E_LookupFreightForwarderNameinBrokerTables N_LookupFreightForwarderNameinBrokerTables_Node0 -- No --> N_LookupFreightForwarderNameinBrokerTables_Node1 N_LookupFreightForwarderNameinBrokerTables_Node1 -- No --> E_LookupFreightForwarderNameinBrokerTables
File: GCX016E.cbl
GIVEN: Freight forwarder information has been extracted from cargo segments
WHEN: The system needs to resolve the freight forwarder name
THEN: The system looks up the freight forwarder name in the GCST2RT broker name segments table
File: GCX016E.cbl
GIVEN: Freight forwarder identification has been extracted from cargo data
WHEN: The system needs complete freight forwarder contact information
THEN:
  • The system searches the broker name tables to retrieve freight forwarder name
  • Contact details
βœ“ Consolidated Acceptance Criteria
  • The system requires complete broker information for the freight forwarder → the system retrieves associated broker information from the GCSTBRT broker table segments
  • The system retrieves associated broker information → the broker details linked to the freight forwarder are obtained for email address lookup
  • The system accesses GCSTBRT broker information tables → associated broker information including contact details is retrieved
  • The system needs complete broker information → the system retrieves associated broker information including broker codes 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_RetrieveAssociatedBrokerInformation(["Start Step"]) E_RetrieveAssociatedBrokerInformation(["End Step"]) N_RetrieveAssociatedBrokerInformation_Node0{"The system requires complete broker
information for the freight
forwarder"}:::decision N_RetrieveAssociatedBrokerInformation_Node0_action["The system retrieves associated
broker information from the GCSTBRT
broker table segments"]:::main N_RetrieveAssociatedBrokerInformation_Node0 -- Yes --> N_RetrieveAssociatedBrokerInformation_Node0_action N_RetrieveAssociatedBrokerInformation_Node0_action --> E_RetrieveAssociatedBrokerInformation S_RetrieveAssociatedBrokerInformation --> N_RetrieveAssociatedBrokerInformation_Node0 N_RetrieveAssociatedBrokerInformation_Node1{"The system retrieves associated
broker information"}:::decision N_RetrieveAssociatedBrokerInformation_Node1_action["The broker details linked to the
freight forwarder are obtained for
email address lookup"]:::main N_RetrieveAssociatedBrokerInformation_Node1 -- Yes --> N_RetrieveAssociatedBrokerInformation_Node1_action N_RetrieveAssociatedBrokerInformation_Node1_action --> E_RetrieveAssociatedBrokerInformation N_RetrieveAssociatedBrokerInformation_Node0 -- No --> N_RetrieveAssociatedBrokerInformation_Node1 N_RetrieveAssociatedBrokerInformation_Node2{"The system accesses GCSTBRT broker
information tables"}:::decision N_RetrieveAssociatedBrokerInformation_Node2_action["Associated broker information
including contact details is
retrieved"]:::main N_RetrieveAssociatedBrokerInformation_Node2 -- Yes --> N_RetrieveAssociatedBrokerInformation_Node2_action N_RetrieveAssociatedBrokerInformation_Node2_action --> E_RetrieveAssociatedBrokerInformation N_RetrieveAssociatedBrokerInformation_Node1 -- No --> N_RetrieveAssociatedBrokerInformation_Node2 N_RetrieveAssociatedBrokerInformation_Node3{"The system needs complete broker
information"}:::decision N_RetrieveAssociatedBrokerInformation_Node3_action["The system retrieves associated
broker information including broker
codes and identifiers"]:::main N_RetrieveAssociatedBrokerInformation_Node3 -- Yes --> N_RetrieveAssociatedBrokerInformation_Node3_action N_RetrieveAssociatedBrokerInformation_Node3_action --> E_RetrieveAssociatedBrokerInformation N_RetrieveAssociatedBrokerInformation_Node2 -- No --> N_RetrieveAssociatedBrokerInformation_Node3 N_RetrieveAssociatedBrokerInformation_Node3 -- No --> E_RetrieveAssociatedBrokerInformation
File: GCX016E.cbl
GIVEN: The freight forwarder name has been successfully looked up in broker tables
WHEN: The system requires complete broker information for the freight forwarder
THEN: The system retrieves associated broker information from the GCSTBRT broker table segments
File: GCX016E.cbl
GIVEN: A valid freight forwarder name has been found
WHEN: The system retrieves associated broker information
THEN: The broker details linked to the freight forwarder are obtained for email address lookup
File: GCX016E.cbl
GIVEN: Broker name has been successfully retrieved from GCST2RT
WHEN: The system accesses GCSTBRT broker information tables
THEN: Associated broker information including contact details is retrieved
File: GCX016E.cbl
GIVEN: Freight forwarder name has been found in broker database
WHEN: The system needs complete broker information
THEN:
  • The system retrieves associated broker information including broker codes
  • Identifiers
βœ“ Consolidated Acceptance Criteria
  • The system needs contact information for freight forwarder notifications → the system retrieves freight forwarder contact details including email addresses and communication preferences from broker table 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_GetFreightForwarderContactDetails(["Start Step"]) E_GetFreightForwarderContactDetails(["End Step"]) N_GetFreightForwarderContactDetails_Node0{"The system needs contact
information for freight forwarder
notifications"}:::decision N_GetFreightForwarderContactDetails_Node0_action["The system retrieves freight
forwarder contact details including
email addresses and communication
preferences from broker table
segments"]:::main N_GetFreightForwarderContactDetails_Node0 -- Yes --> N_GetFreightForwarderContactDetails_Node0_action N_GetFreightForwarderContactDetails_Node0_action --> E_GetFreightForwarderContactDetails S_GetFreightForwarderContactDetails --> N_GetFreightForwarderContactDetails_Node0 N_GetFreightForwarderContactDetails_Node0 -- No --> E_GetFreightForwarderContactDetails
File: GCX016E.cbl
GIVEN: Associated broker information has been retrieved for the freight forwarder
WHEN: The system needs contact information for freight forwarder notifications
THEN:
  • The system retrieves freight forwarder contact details including email addresses
  • Communication preferences from broker table segments
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a complete freight forwarder profile → the system compiles all retrieved information into a comprehensive freight forwarder profile
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CompileCompleteFreightForwarderProfile(["Start Step"]) E_CompileCompleteFreightForwarderProfile(["End Step"]) N_CompileCompleteFreightForwarderProfile_Node0{"The system needs to create a
complete freight forwarder profile"}:::decision N_CompileCompleteFreightForwarderProfile_Node0_action["The system compiles all retrieved
information into a comprehensive
freight forwarder profile"]:::main N_CompileCompleteFreightForwarderProfile_Node0 -- Yes --> N_CompileCompleteFreightForwarderProfile_Node0_action N_CompileCompleteFreightForwarderProfile_Node0_action --> E_CompileCompleteFreightForwarderProfile S_CompileCompleteFreightForwarderProfile --> N_CompileCompleteFreightForwarderProfile_Node0 N_CompileCompleteFreightForwarderProfile_Node0 -- No --> E_CompileCompleteFreightForwarderProfile
File: GCX016E.cbl
GIVEN: All freight forwarder information components have been retrieved including name, broker details, and contact information
WHEN: The system needs to create a complete freight forwarder profile
THEN: The system compiles all retrieved information into a comprehensive freight forwarder profile
βœ“ Consolidated Acceptance Criteria
  • The freight forwarder information retrieval process is complete → the system returns the complete freight forwarder information for use in cargo processing and notifications
  • The system completes the freight forwarder data retrieval process → the freight forwarder information (or indication of not found) 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_ReturnFreightForwarderInformation(["Start Step"]) E_ReturnFreightForwarderInformation(["End Step"]) N_ReturnFreightForwarderInformation_Node0{"The freight forwarder information
retrieval process is complete"}:::decision N_ReturnFreightForwarderInformation_Node0_action["The system returns the complete
freight forwarder information for
use in cargo processing and
notifications"]:::main N_ReturnFreightForwarderInformation_Node0 -- Yes --> N_ReturnFreightForwarderInformation_Node0_action N_ReturnFreightForwarderInformation_Node0_action --> E_ReturnFreightForwarderInformation S_ReturnFreightForwarderInformation --> N_ReturnFreightForwarderInformation_Node0 N_ReturnFreightForwarderInformation_Node1{"The system completes the freight
forwarder data retrieval process"}:::decision N_ReturnFreightForwarderInformation_Node1_action["The freight forwarder information
or indication of not found is
returned to the calling process"]:::main N_ReturnFreightForwarderInformation_Node1 -- Yes --> N_ReturnFreightForwarderInformation_Node1_action N_ReturnFreightForwarderInformation_Node1_action --> E_ReturnFreightForwarderInformation N_ReturnFreightForwarderInformation_Node0 -- No --> N_ReturnFreightForwarderInformation_Node1 N_ReturnFreightForwarderInformation_Node1 -- No --> E_ReturnFreightForwarderInformation
File: GCX016E.cbl
GIVEN: A complete freight forwarder profile has been compiled
WHEN: The freight forwarder information retrieval process is complete
THEN:
  • The system returns the complete freight forwarder information for use in cargo processing
  • Notifications
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Freight forwarder processing has been completed with either successful identification or logging of not found status
WHEN: The system completes the freight forwarder data retrieval process
THEN: The freight forwarder information (or indication of not found) is returned to the calling process
βœ“ Consolidated Acceptance Criteria
  • The system cannot locate freight forwarder information for the disposition code → the system indicates that no freight forwarder information is available and continues processing without freight forwarder-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_NoFreightForwarderInformationAvailable(["Start Step"]) E_NoFreightForwarderInformationAvailable(["End Step"]) N_NoFreightForwarderInformationAvailable_Node0{"The system cannot locate freight
forwarder information for the
disposition code"}:::decision N_NoFreightForwarderInformationAvailable_Node0_action["The system indicates that no
freight forwarder information is
available and continues processing
without freight forwarder-specific
actions"]:::main N_NoFreightForwarderInformationAvailable_Node0 -- Yes --> N_NoFreightForwarderInformationAvailable_Node0_action N_NoFreightForwarderInformationAvailable_Node0_action --> E_NoFreightForwarderInformationAvailable S_NoFreightForwarderInformationAvailable --> N_NoFreightForwarderInformationAvailable_Node0 N_NoFreightForwarderInformationAvailable_Node0 -- No --> E_NoFreightForwarderInformationAvailable
File: GCX016E.cbl
GIVEN: No freight forwarder code was found during the broker table search
WHEN: The system cannot locate freight forwarder information for the disposition code
THEN:
  • The system indicates that no freight forwarder information is available
  • Continues processing without freight forwarder-specific actions
βœ“ Consolidated Acceptance Criteria
  • The system processes freight forwarder contact information retrieval → the freight forwarder code is extracted from the cargo segments 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_RetrieveFreightForwarderInformationfromCargoSegments(["Start Step"]) E_RetrieveFreightForwarderInformationfromCargoSegments(["End Step"]) N_RetrieveFreightForwarderInformationfromCargoSegments_Node0{"The system processes freight
forwarder contact information
retrieval"}:::decision N_RetrieveFreightForwarderInformationfromCargoSegments_Node0_action["The freight forwarder code is
extracted from the cargo segments
for further processing"]:::main N_RetrieveFreightForwarderInformationfromCargoSegments_Node0 -- Yes --> N_RetrieveFreightForwarderInformationfromCargoSegments_Node0_action N_RetrieveFreightForwarderInformationfromCargoSegments_Node0_action --> E_RetrieveFreightForwarderInformationfromCargoSegments S_RetrieveFreightForwarderInformationfromCargoSegments --> N_RetrieveFreightForwarderInformationfromCargoSegments_Node0 N_RetrieveFreightForwarderInformationfromCargoSegments_Node0 -- No --> E_RetrieveFreightForwarderInformationfromCargoSegments
File: GCX016E.cbl
GIVEN: A cargo record exists with segment data
WHEN: The system processes freight forwarder contact information retrieval
THEN: The freight forwarder code is extracted from the cargo segments for further processing
βœ“ Consolidated Acceptance Criteria
  • The system performs a lookup in the GCST2RT broker name segments → the corresponding freight forwarder name is 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_LookupFreightForwarderNameinBrokerDatabase(["Start Step"]) E_LookupFreightForwarderNameinBrokerDatabase(["End Step"]) N_LookupFreightForwarderNameinBrokerDatabase_Node0{"The system performs a lookup in the
GCST2RT broker name segments"}:::decision N_LookupFreightForwarderNameinBrokerDatabase_Node0_action["The corresponding freight forwarder
name is retrieved from the database"]:::main N_LookupFreightForwarderNameinBrokerDatabase_Node0 -- Yes --> N_LookupFreightForwarderNameinBrokerDatabase_Node0_action N_LookupFreightForwarderNameinBrokerDatabase_Node0_action --> E_LookupFreightForwarderNameinBrokerDatabase S_LookupFreightForwarderNameinBrokerDatabase --> N_LookupFreightForwarderNameinBrokerDatabase_Node0 N_LookupFreightForwarderNameinBrokerDatabase_Node0 -- No --> E_LookupFreightForwarderNameinBrokerDatabase
File: GCX016E.cbl
GIVEN: A valid freight forwarder code exists
WHEN: The system performs a lookup in the GCST2RT broker name segments
THEN: The corresponding freight forwarder name is retrieved from the database
βœ“ Consolidated Acceptance Criteria
  • The system checks the lookup results → if freight forwarder name is found, proceed to retrieve broker information; otherwise log name not found and end process
  • The search results are evaluated → if the freight forwarder name is found, proceed to retrieve contact information, otherwise log freight forwarder not found
  • If whether a valid freight forwarder name was found → the system determines whether to proceed with email address retrieval or 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_FreightForwarderNameFound(["Start Step"]) E_FreightForwarderNameFound(["End Step"]) N_FreightForwarderNameFound_Node0{"The system checks the lookup
results"}:::decision N_FreightForwarderNameFound_Node0_action["If freight forwarder name is found,
proceed to retrieve broker
information otherwise log name not
found and end process"]:::main N_FreightForwarderNameFound_Node0 -- Yes --> N_FreightForwarderNameFound_Node0_action N_FreightForwarderNameFound_Node0_action --> E_FreightForwarderNameFound S_FreightForwarderNameFound --> N_FreightForwarderNameFound_Node0 N_FreightForwarderNameFound_Node1{"The search results are evaluated"}:::decision N_FreightForwarderNameFound_Node1_action["If the freight forwarder name is
found, proceed to retrieve contact
information, otherwise log freight
forwarder not found"]:::main N_FreightForwarderNameFound_Node1 -- Yes --> N_FreightForwarderNameFound_Node1_action N_FreightForwarderNameFound_Node1_action --> E_FreightForwarderNameFound N_FreightForwarderNameFound_Node0 -- No --> N_FreightForwarderNameFound_Node1 N_FreightForwarderNameFound_Node2{"The system evaluates whether a
valid freight forwarder name was
found"}:::decision N_FreightForwarderNameFound_Node2_action["The system determines whether to
proceed with email address retrieval
or terminate processing"]:::exclusion N_FreightForwarderNameFound_Node2 -- Yes -->|Alternative| N_FreightForwarderNameFound_Node2_action N_FreightForwarderNameFound_Node2_action --> E_FreightForwarderNameFound N_FreightForwarderNameFound_Node1 -- No --> N_FreightForwarderNameFound_Node2 N_FreightForwarderNameFound_Node2 -- No --> E_FreightForwarderNameFound
File: GCX016E.cbl
GIVEN: A lookup has been performed in the broker name database
WHEN: The system checks the lookup results
THEN:
  • If freight forwarder name is found, proceed to retrieve broker information; otherwise log name not found
  • End process
File: GCX016E.cbl
GIVEN: The broker name table GCST2RT has been searched for the freight forwarder name
WHEN: The search results are evaluated
THEN: If the freight forwarder name is found, proceed to retrieve contact information, otherwise log freight forwarder not found
File: GCX016E.cbl
GIVEN: The freight forwarder name lookup has been completed
WHEN: The system evaluates whether a valid freight forwarder name was found
THEN: The system determines whether to proceed with email address retrieval or terminate processing
βœ“ Consolidated Acceptance Criteria
  • The system accesses the GCSTBRT broker table segments → the email address associated with the broker 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_FetchEmailAddressfromBrokerTable(["Start Step"]) E_FetchEmailAddressfromBrokerTable(["End Step"]) N_FetchEmailAddressfromBrokerTable_Node0{"The system accesses the GCSTBRT
broker table segments"}:::decision N_FetchEmailAddressfromBrokerTable_Node0_action["The email address associated with
the broker is retrieved from the
table"]:::main N_FetchEmailAddressfromBrokerTable_Node0 -- Yes --> N_FetchEmailAddressfromBrokerTable_Node0_action N_FetchEmailAddressfromBrokerTable_Node0_action --> E_FetchEmailAddressfromBrokerTable S_FetchEmailAddressfromBrokerTable --> N_FetchEmailAddressfromBrokerTable_Node0 N_FetchEmailAddressfromBrokerTable_Node0 -- No --> E_FetchEmailAddressfromBrokerTable
File: GCX016E.cbl
GIVEN: Valid broker information is available
WHEN: The system accesses the GCSTBRT broker table segments
THEN: The email address associated with the broker is retrieved from the table
βœ“ Consolidated Acceptance Criteria
  • The system checks if an email address was found → if email address exists, proceed to validation; otherwise log no email address found and end process
  • The email address retrieval results are evaluated → if a valid email address is found, proceed with email content building, otherwise complete notification process without sending email
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_EmailAddressFound(["Start Step"]) E_EmailAddressFound(["End Step"]) N_EmailAddressFound_Node0{"The system checks if an email
address was found"}:::decision N_EmailAddressFound_Node0_action["If email address exists, proceed to
validation otherwise log no email
address found and end process"]:::main N_EmailAddressFound_Node0 -- Yes --> N_EmailAddressFound_Node0_action N_EmailAddressFound_Node0_action --> E_EmailAddressFound S_EmailAddressFound --> N_EmailAddressFound_Node0 N_EmailAddressFound_Node1{"The email address retrieval results
are evaluated"}:::decision N_EmailAddressFound_Node1_action["If a valid email address is found,
proceed with email content building,
otherwise complete notification
process without sending email"]:::main N_EmailAddressFound_Node1 -- Yes --> N_EmailAddressFound_Node1_action N_EmailAddressFound_Node1_action --> E_EmailAddressFound N_EmailAddressFound_Node0 -- No --> N_EmailAddressFound_Node1 N_EmailAddressFound_Node1 -- No --> E_EmailAddressFound
File: GCX016E.cbl
GIVEN: A lookup has been performed in the broker table
WHEN: The system checks if an email address was found
THEN:
  • If email address exists, proceed to validation; otherwise log no email address found
  • End process
File: GCX016E.cbl
GIVEN: The system has attempted to retrieve an email address from the broker table
WHEN: The email address retrieval results are evaluated
THEN: If a valid email address is found, proceed with email content building, otherwise complete notification process without sending email
βœ“ Consolidated Acceptance Criteria
  • The system validates the email address format → the email address format is checked for validity according to standard email formatting 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_ValidateEmailAddressFormat(["Start Step"]) E_ValidateEmailAddressFormat(["End Step"]) N_ValidateEmailAddressFormat_Node0{"The system validates the email
address format"}:::decision N_ValidateEmailAddressFormat_Node0_action["The email address format is checked
for validity according to standard
email formatting rules"]:::main N_ValidateEmailAddressFormat_Node0 -- Yes --> N_ValidateEmailAddressFormat_Node0_action N_ValidateEmailAddressFormat_Node0_action --> E_ValidateEmailAddressFormat S_ValidateEmailAddressFormat --> N_ValidateEmailAddressFormat_Node0 N_ValidateEmailAddressFormat_Node0 -- No --> E_ValidateEmailAddressFormat
File: GCX016E.cbl
GIVEN: An email address has been retrieved from the broker table
WHEN: The system validates the email address format
THEN: The email address format is checked for validity according to standard email formatting rules
βœ“ Consolidated Acceptance Criteria
  • If the validation results → if email format is valid, store for notification; otherwise log invalid format and end 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_EmailValid(["Start Step"]) E_EmailValid(["End Step"]) N_EmailValid_Node0{"The system evaluates the validation
results"}:::decision N_EmailValid_Node0_action["If email format is valid, store for
notification otherwise log invalid
format and end process"]:::main N_EmailValid_Node0 -- Yes --> N_EmailValid_Node0_action N_EmailValid_Node0_action --> E_EmailValid S_EmailValid --> N_EmailValid_Node0 N_EmailValid_Node0 -- No --> E_EmailValid
File: GCX016E.cbl
GIVEN: Email address format validation has been performed
WHEN: The system evaluates the validation results
THEN:
  • If email format is valid, store for notification; otherwise log invalid format
  • End process
βœ“ Consolidated Acceptance Criteria
  • The system stores the email address → the email address is saved for subsequent 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_StoreEmailAddressforNotification(["Start Step"]) E_StoreEmailAddressforNotification(["End Step"]) N_StoreEmailAddressforNotification_Node0{"The system stores the email address"}:::decision N_StoreEmailAddressforNotification_Node0_action["The email address is saved for
subsequent notification processing"]:::main N_StoreEmailAddressforNotification_Node0 -- Yes --> N_StoreEmailAddressforNotification_Node0_action N_StoreEmailAddressforNotification_Node0_action --> E_StoreEmailAddressforNotification S_StoreEmailAddressforNotification --> N_StoreEmailAddressforNotification_Node0 N_StoreEmailAddressforNotification_Node0 -- No --> E_StoreEmailAddressforNotification
File: GCX016E.cbl
GIVEN: A valid email address has been confirmed
WHEN: The system stores the email address
THEN: The email address is saved for subsequent notification processing
βœ“ Consolidated Acceptance Criteria
  • No freight forwarder code is found in the data → a log entry is created indicating no freight forwarder code 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_LogNoFreightForwarderCodeFound(["Start Step"]) E_LogNoFreightForwarderCodeFound(["End Step"]) N_LogNoFreightForwarderCodeFound_Node0{"No freight forwarder code is found
in the data"}:::decision N_LogNoFreightForwarderCodeFound_Node0_action["A log entry is created indicating
no freight forwarder code was found"]:::main N_LogNoFreightForwarderCodeFound_Node0 -- Yes --> N_LogNoFreightForwarderCodeFound_Node0_action N_LogNoFreightForwarderCodeFound_Node0_action --> E_LogNoFreightForwarderCodeFound S_LogNoFreightForwarderCodeFound --> N_LogNoFreightForwarderCodeFound_Node0 N_LogNoFreightForwarderCodeFound_Node0 -- No --> E_LogNoFreightForwarderCodeFound
File: GCX016E.cbl
GIVEN: Cargo segment data has been processed
WHEN: No freight forwarder code is found in the data
THEN: A log entry is created indicating no freight forwarder code was found
βœ“ Consolidated Acceptance Criteria
  • The freight forwarder name is not found in the broker database → a log entry is created indicating the freight forwarder name 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_LogFreightForwarderNameNotFound(["Start Step"]) E_LogFreightForwarderNameNotFound(["End Step"]) N_LogFreightForwarderNameNotFound_Node0{"The freight forwarder name is not
found in the broker database"}:::decision N_LogFreightForwarderNameNotFound_Node0_action["A log entry is created indicating
the freight forwarder name was not
found"]:::main N_LogFreightForwarderNameNotFound_Node0 -- Yes --> N_LogFreightForwarderNameNotFound_Node0_action N_LogFreightForwarderNameNotFound_Node0_action --> E_LogFreightForwarderNameNotFound S_LogFreightForwarderNameNotFound --> N_LogFreightForwarderNameNotFound_Node0 N_LogFreightForwarderNameNotFound_Node0 -- No --> E_LogFreightForwarderNameNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A freight forwarder code exists but name lookup has been performed
WHEN: The freight forwarder name is not found in the broker database
THEN: A log entry is created indicating the freight forwarder name was not found
βœ“ Consolidated Acceptance Criteria
  • No associated broker information is available → a log entry is created indicating no broker information 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_LogNoBrokerInformationAvailable(["Start Step"]) E_LogNoBrokerInformationAvailable(["End Step"]) N_LogNoBrokerInformationAvailable_Node0{"No associated broker information is
available"}:::decision N_LogNoBrokerInformationAvailable_Node0_action["A log entry is created indicating
no broker information is available"]:::main N_LogNoBrokerInformationAvailable_Node0 -- Yes --> N_LogNoBrokerInformationAvailable_Node0_action N_LogNoBrokerInformationAvailable_Node0_action --> E_LogNoBrokerInformationAvailable S_LogNoBrokerInformationAvailable --> N_LogNoBrokerInformationAvailable_Node0 N_LogNoBrokerInformationAvailable_Node0 -- No --> E_LogNoBrokerInformationAvailable
File: GCX016E.cbl
GIVEN: A freight forwarder name has been found
WHEN: No associated broker information is available
THEN: A log entry is created indicating no broker information is available
βœ“ Consolidated Acceptance Criteria
  • No email address is found in the broker table → a log entry is created indicating no email address 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_LogNoEmailAddressFound(["Start Step"]) E_LogNoEmailAddressFound(["End Step"]) N_LogNoEmailAddressFound_Node0{"No email address is found in the
broker table"}:::decision N_LogNoEmailAddressFound_Node0_action["A log entry is created indicating
no email address was found"]:::main N_LogNoEmailAddressFound_Node0 -- Yes --> N_LogNoEmailAddressFound_Node0_action N_LogNoEmailAddressFound_Node0_action --> E_LogNoEmailAddressFound S_LogNoEmailAddressFound --> N_LogNoEmailAddressFound_Node0 N_LogNoEmailAddressFound_Node0 -- No --> E_LogNoEmailAddressFound
File: GCX016E.cbl
GIVEN: Broker information is available and email lookup has been performed
WHEN: No email address is found in the broker table
THEN: A log entry is created indicating no email address was found
βœ“ Consolidated Acceptance Criteria
  • The email address format is determined to be invalid → a log entry is created indicating the email 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_LogInvalidEmailFormat(["Start Step"]) E_LogInvalidEmailFormat(["End Step"]) N_LogInvalidEmailFormat_Node0{"The email address format is
determined to be invalid"}:::decision N_LogInvalidEmailFormat_Node0_action["A log entry is created indicating
the email format is invalid"]:::exclusion N_LogInvalidEmailFormat_Node0 -- Yes -->|Alternative| N_LogInvalidEmailFormat_Node0_action N_LogInvalidEmailFormat_Node0_action --> E_LogInvalidEmailFormat S_LogInvalidEmailFormat --> N_LogInvalidEmailFormat_Node0 N_LogInvalidEmailFormat_Node0 -- No --> E_LogInvalidEmailFormat
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An email address has been retrieved and format validation performed
WHEN: The email address format is determined to be invalid
THEN: A log entry is created indicating the email format is invalid
βœ“ Consolidated Acceptance Criteria
  • The system checks the disposition code value → if the disposition code equals 'CIH', proceed with email notification processing, otherwise skip email 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_IsDispositionCodeCIH(["Start Step"]) E_IsDispositionCodeCIH(["End Step"]) N_IsDispositionCodeCIH_Node0{"The system checks the disposition
code value"}:::decision N_IsDispositionCodeCIH_Node0_action["If the disposition code equals CIH
, proceed with email notification
processing, otherwise skip email
notification"]:::main N_IsDispositionCodeCIH_Node0 -- Yes --> N_IsDispositionCodeCIH_Node0_action N_IsDispositionCodeCIH_Node0_action --> E_IsDispositionCodeCIH S_IsDispositionCodeCIH --> N_IsDispositionCodeCIH_Node0 N_IsDispositionCodeCIH_Node0 -- No --> E_IsDispositionCodeCIH
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo
WHEN: The system checks the disposition code value
THEN: If the disposition code equals 'CIH', proceed with email notification processing, otherwise skip email notification
βœ“ Consolidated Acceptance Criteria
  • The system searches the broker name table for freight forwarder disposition codes → the system retrieves freight forwarder information from the broker database if available
  • The system needs to validate the freight forwarder → the system searches the broker database for matching freight forwarder 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_SearchBrokerDatabaseforFreightForwarder(["Start Step"]) E_SearchBrokerDatabaseforFreightForwarder(["End Step"]) N_SearchBrokerDatabaseforFreightForwarder_Node0{"The system searches the broker name
table for freight forwarder
disposition codes"}:::decision N_SearchBrokerDatabaseforFreightForwarder_Node0_action["The system retrieves freight
forwarder information from the
broker database if available"]:::main N_SearchBrokerDatabaseforFreightForwarder_Node0 -- Yes --> N_SearchBrokerDatabaseforFreightForwarder_Node0_action N_SearchBrokerDatabaseforFreightForwarder_Node0_action --> E_SearchBrokerDatabaseforFreightForwarder S_SearchBrokerDatabaseforFreightForwarder --> N_SearchBrokerDatabaseforFreightForwarder_Node0 N_SearchBrokerDatabaseforFreightForwarder_Node1{"The system needs to validate the
freight forwarder"}:::decision N_SearchBrokerDatabaseforFreightForwarder_Node1_action["The system searches the broker
database for matching freight
forwarder information"]:::main N_SearchBrokerDatabaseforFreightForwarder_Node1 -- Yes --> N_SearchBrokerDatabaseforFreightForwarder_Node1_action N_SearchBrokerDatabaseforFreightForwarder_Node1_action --> E_SearchBrokerDatabaseforFreightForwarder N_SearchBrokerDatabaseforFreightForwarder_Node0 -- No --> N_SearchBrokerDatabaseforFreightForwarder_Node1 N_SearchBrokerDatabaseforFreightForwarder_Node1 -- No --> E_SearchBrokerDatabaseforFreightForwarder
File: GCX016E.cbl
GIVEN: A CIH disposition code has been identified for cargo
WHEN: The system searches the broker name table for freight forwarder disposition codes
THEN: The system retrieves freight forwarder information from the broker database if available
File: GCX016E.cbl
GIVEN: A valid freight forwarder ID has been found in cargo segments
WHEN: The system needs to validate the freight forwarder
THEN: The system searches the broker database for matching freight forwarder information
βœ“ Consolidated Acceptance Criteria
  • The system accesses cargo secondary data segments → the system retrieves forwarder and consignee information from cargo segments GCSUSS03 and GCSUSS07
  • The system processes freight forwarder broker lookup request → the freight forwarder code is extracted from the cargo segment data for further processing
  • The system needs to process freight forwarder notifications → the system retrieves cargo segment data including freight forwarder and consignee information from GCSUSS03 and GCSUSS07 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_RetrieveCargoSegmentData(["Start Step"]) E_RetrieveCargoSegmentData(["End Step"]) N_RetrieveCargoSegmentData_Node0{"The system accesses cargo secondary
data segments"}:::decision N_RetrieveCargoSegmentData_Node0_action["The system retrieves forwarder and
consignee information from cargo
segments GCSUSS03 and GCSUSS07"]:::main N_RetrieveCargoSegmentData_Node0 -- Yes --> N_RetrieveCargoSegmentData_Node0_action N_RetrieveCargoSegmentData_Node0_action --> E_RetrieveCargoSegmentData S_RetrieveCargoSegmentData --> N_RetrieveCargoSegmentData_Node0 N_RetrieveCargoSegmentData_Node1{"The system processes freight
forwarder broker lookup request"}:::decision N_RetrieveCargoSegmentData_Node1_action["The freight forwarder code is
extracted from the cargo segment
data for further processing"]:::main N_RetrieveCargoSegmentData_Node1 -- Yes --> N_RetrieveCargoSegmentData_Node1_action N_RetrieveCargoSegmentData_Node1_action --> E_RetrieveCargoSegmentData N_RetrieveCargoSegmentData_Node0 -- No --> N_RetrieveCargoSegmentData_Node1 N_RetrieveCargoSegmentData_Node2{"The system needs to process freight
forwarder notifications"}:::decision N_RetrieveCargoSegmentData_Node2_action["The system retrieves cargo segment
data including freight forwarder and
consignee information from GCSUSS03
and GCSUSS07 segments"]:::main N_RetrieveCargoSegmentData_Node2 -- Yes --> N_RetrieveCargoSegmentData_Node2_action N_RetrieveCargoSegmentData_Node2_action --> E_RetrieveCargoSegmentData N_RetrieveCargoSegmentData_Node1 -- No --> N_RetrieveCargoSegmentData_Node2 N_RetrieveCargoSegmentData_Node2 -- No --> E_RetrieveCargoSegmentData
File: GCX016E.cbl
GIVEN: A freight forwarder has been found for the cargo
WHEN: The system accesses cargo secondary data segments
THEN:
  • The system retrieves forwarder
  • Consignee information from cargo segments gcsuss03
  • Gcsuss07
File: GCX016E.cbl
GIVEN: A cargo record exists with segment data
WHEN: The system processes freight forwarder broker lookup request
THEN: The freight forwarder code is extracted from the cargo segment data for further processing
File: GCX016E.cbl
GIVEN: A cargo record exists with segment data
WHEN: The system needs to process freight forwarder notifications
THEN:
  • The system retrieves cargo segment data including freight forwarder
  • Consignee information from gcsuss03
  • Gcsuss07 segments
βœ“ Consolidated Acceptance Criteria
  • The system performs a lookup in the broker name segments table (GCST2RT) → the system retrieves the freight forwarder name and associated 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_LookupFreightForwarderNameandBrokerInfo(["Start Step"]) E_LookupFreightForwarderNameandBrokerInfo(["End Step"]) N_LookupFreightForwarderNameandBrokerInfo_Node0{"The system performs a lookup in the
broker name segments table GCST2RT"}:::decision N_LookupFreightForwarderNameandBrokerInfo_Node0_action["The system retrieves the freight
forwarder name and associated broker
information"]:::main N_LookupFreightForwarderNameandBrokerInfo_Node0 -- Yes --> N_LookupFreightForwarderNameandBrokerInfo_Node0_action N_LookupFreightForwarderNameandBrokerInfo_Node0_action --> E_LookupFreightForwarderNameandBrokerInfo S_LookupFreightForwarderNameandBrokerInfo --> N_LookupFreightForwarderNameandBrokerInfo_Node0 N_LookupFreightForwarderNameandBrokerInfo_Node0 -- No --> E_LookupFreightForwarderNameandBrokerInfo
File: GCX016E.cbl
GIVEN: Freight forwarder information has been extracted from cargo segments
WHEN: The system performs a lookup in the broker name segments table (GCST2RT)
THEN:
  • The system retrieves the freight forwarder name
  • Associated broker information
βœ“ Consolidated Acceptance Criteria
  • The system validates the retrieved freight forwarder data → if the freight forwarder information is valid and complete, proceed with email address retrieval, otherwise complete notification process without sending email
  • The system validates the freight forwarder relationship status → the system confirms the broker is authorized to act as a freight forwarder for the given context
  • The validation process is completed → the system determines if the freight forwarder information is valid and 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_ValidFreightForwarder(["Start Step"]) E_ValidFreightForwarder(["End Step"]) N_ValidFreightForwarder_Node0{"The system validates the retrieved
freight forwarder data"}:::decision N_ValidFreightForwarder_Node0_action["If the freight forwarder
information is valid and complete,
proceed with email address
retrieval, otherwise complete
notification process without sending
email"]:::main N_ValidFreightForwarder_Node0 -- Yes --> N_ValidFreightForwarder_Node0_action N_ValidFreightForwarder_Node0_action --> E_ValidFreightForwarder S_ValidFreightForwarder --> N_ValidFreightForwarder_Node0 N_ValidFreightForwarder_Node1{"The system validates the freight
forwarder relationship status"}:::decision N_ValidFreightForwarder_Node1_action["The system confirms the broker is
authorized to act as a freight
forwarder for the given context"]:::main N_ValidFreightForwarder_Node1 -- Yes --> N_ValidFreightForwarder_Node1_action N_ValidFreightForwarder_Node1_action --> E_ValidFreightForwarder N_ValidFreightForwarder_Node0 -- No --> N_ValidFreightForwarder_Node1 N_ValidFreightForwarder_Node2{"The validation process is completed"}:::decision N_ValidFreightForwarder_Node2_action["The system determines if the
freight forwarder information is
valid and complete"]:::main N_ValidFreightForwarder_Node2 -- Yes --> N_ValidFreightForwarder_Node2_action N_ValidFreightForwarder_Node2_action --> E_ValidFreightForwarder N_ValidFreightForwarder_Node1 -- No --> N_ValidFreightForwarder_Node2 N_ValidFreightForwarder_Node2 -- No --> E_ValidFreightForwarder
File: GCX016E.cbl
GIVEN: Freight forwarder name and broker information lookup has been completed
WHEN: The system validates the retrieved freight forwarder data
THEN:
  • If the freight forwarder information is valid
  • Complete, proceed with email address retrieval, otherwise complete notification process without sending email
File: GCX016E.cbl
GIVEN: A broker record has been found in the database
WHEN: The system validates the freight forwarder relationship status
THEN: The system confirms the broker is authorized to act as a freight forwarder for the given context
File: GCX016E.cbl
GIVEN: Freight forwarder data has been validated
WHEN: The validation process is completed
THEN:
  • The system determines if the freight forwarder information is valid
  • Complete
βœ“ Consolidated Acceptance Criteria
  • The system accesses the broker table segments (GCSTBRT) → the system retrieves the email address associated with the freight forwarder
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RetrieveEmailAddressfromBrokerTable(["Start Step"]) E_RetrieveEmailAddressfromBrokerTable(["End Step"]) N_RetrieveEmailAddressfromBrokerTable_Node0{"The system accesses the broker
table segments GCSTBRT"}:::decision N_RetrieveEmailAddressfromBrokerTable_Node0_action["The system retrieves the email
address associated with the freight
forwarder"]:::main N_RetrieveEmailAddressfromBrokerTable_Node0 -- Yes --> N_RetrieveEmailAddressfromBrokerTable_Node0_action N_RetrieveEmailAddressfromBrokerTable_Node0_action --> E_RetrieveEmailAddressfromBrokerTable S_RetrieveEmailAddressfromBrokerTable --> N_RetrieveEmailAddressfromBrokerTable_Node0 N_RetrieveEmailAddressfromBrokerTable_Node0 -- No --> E_RetrieveEmailAddressfromBrokerTable
File: GCX016E.cbl
GIVEN: A valid freight forwarder has been identified
WHEN: The system accesses the broker table segments (GCSTBRT)
THEN: The system retrieves the email address associated with the freight forwarder
βœ“ Consolidated Acceptance Criteria
  • The system processes waybill and CCN information → the system includes waybill number and CCN details in the email notification content
  • Creating debug log entries → the system includes waybill number and CCN details for cargo identification
  • The system processes waybill and CCN information for email inclusion → the system adds waybill numbers and CCN details to the email notification 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_IncludeWaybillandCCNDetails(["Start Step"]) E_IncludeWaybillandCCNDetails(["End Step"]) N_IncludeWaybillandCCNDetails_Node0{"The system processes waybill and
CCN information"}:::decision N_IncludeWaybillandCCNDetails_Node0_action["The system includes waybill number
and CCN details in the email
notification content"]:::main N_IncludeWaybillandCCNDetails_Node0 -- Yes --> N_IncludeWaybillandCCNDetails_Node0_action N_IncludeWaybillandCCNDetails_Node0_action --> E_IncludeWaybillandCCNDetails S_IncludeWaybillandCCNDetails --> N_IncludeWaybillandCCNDetails_Node0 N_IncludeWaybillandCCNDetails_Node1{"Creating debug log entries"}:::decision N_IncludeWaybillandCCNDetails_Node1_action["The system includes waybill number
and CCN details for cargo
identification"]:::main N_IncludeWaybillandCCNDetails_Node1 -- Yes --> N_IncludeWaybillandCCNDetails_Node1_action N_IncludeWaybillandCCNDetails_Node1_action --> E_IncludeWaybillandCCNDetails N_IncludeWaybillandCCNDetails_Node0 -- No --> N_IncludeWaybillandCCNDetails_Node1 N_IncludeWaybillandCCNDetails_Node2{"The system processes waybill and
CCN information for email inclusion"}:::decision N_IncludeWaybillandCCNDetails_Node2_action["The system adds waybill numbers and
CCN details to the email
notification content"]:::main N_IncludeWaybillandCCNDetails_Node2 -- Yes --> N_IncludeWaybillandCCNDetails_Node2_action N_IncludeWaybillandCCNDetails_Node2_action --> E_IncludeWaybillandCCNDetails N_IncludeWaybillandCCNDetails_Node1 -- No --> N_IncludeWaybillandCCNDetails_Node2 N_IncludeWaybillandCCNDetails_Node2 -- No --> E_IncludeWaybillandCCNDetails
File: GCX016E.cbl
GIVEN: Equipment information has been included in the email content
WHEN:
  • The system processes waybill
  • Ccn information
THEN:
  • The system includes waybill number
  • Ccn details in the email notification content
File: GCX016E.cbl
GIVEN: Waybill and CCN information exists for the cargo
WHEN: Creating debug log entries
THEN:
  • The system includes waybill number
  • Ccn details for cargo identification
File: GCX016E.cbl
GIVEN: Equipment information has been included in the email content
WHEN:
  • The system processes waybill
  • Ccn information for email inclusion
THEN:
  • The system adds waybill numbers
  • Ccn details to the email notification content
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo content description data → the system includes detailed cargo content description in the email notification
  • The system processes cargo content description for email inclusion → the system adds detailed cargo content description to the email 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_IncludeContentDescription(["Start Step"]) E_IncludeContentDescription(["End Step"]) N_IncludeContentDescription_Node0{"The system processes cargo content
description data"}:::decision N_IncludeContentDescription_Node0_action["The system includes detailed cargo
content description in the email
notification"]:::main N_IncludeContentDescription_Node0 -- Yes --> N_IncludeContentDescription_Node0_action N_IncludeContentDescription_Node0_action --> E_IncludeContentDescription S_IncludeContentDescription --> N_IncludeContentDescription_Node0 N_IncludeContentDescription_Node1{"The system processes cargo content
description for email inclusion"}:::decision N_IncludeContentDescription_Node1_action["The system adds detailed cargo
content description to the email
notification"]:::main N_IncludeContentDescription_Node1 -- Yes --> N_IncludeContentDescription_Node1_action N_IncludeContentDescription_Node1_action --> E_IncludeContentDescription N_IncludeContentDescription_Node0 -- No --> N_IncludeContentDescription_Node1 N_IncludeContentDescription_Node1 -- No --> E_IncludeContentDescription
File: GCX016E.cbl
GIVEN: Waybill and CCN details have been included in the email content
WHEN: The system processes cargo content description data
THEN: The system includes detailed cargo content description in the email notification
File: GCX016E.cbl
GIVEN: Waybill and CCN details have been included in the email content
WHEN: The system processes cargo content description for email inclusion
THEN: The system adds detailed cargo content description to the email notification
βœ“ Consolidated Acceptance Criteria
  • The system processes CIH disposition information → the system includes CIH disposition code details, hold reasons, and related customs information in the email notification
  • The system processes CIH disposition information for email inclusion → the system adds CIH disposition code details and related information to the email 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_IncludeCIHDispositionInformation(["Start Step"]) E_IncludeCIHDispositionInformation(["End Step"]) N_IncludeCIHDispositionInformation_Node0{"The system processes CIH
disposition information"}:::decision N_IncludeCIHDispositionInformation_Node0_action["The system includes CIH disposition
code details, hold reasons, and
related customs information in the
email notification"]:::main N_IncludeCIHDispositionInformation_Node0 -- Yes --> N_IncludeCIHDispositionInformation_Node0_action N_IncludeCIHDispositionInformation_Node0_action --> E_IncludeCIHDispositionInformation S_IncludeCIHDispositionInformation --> N_IncludeCIHDispositionInformation_Node0 N_IncludeCIHDispositionInformation_Node1{"The system processes CIH
disposition information for email
inclusion"}:::decision N_IncludeCIHDispositionInformation_Node1_action["The system adds CIH disposition
code details and related information
to the email notification"]:::main N_IncludeCIHDispositionInformation_Node1 -- Yes --> N_IncludeCIHDispositionInformation_Node1_action N_IncludeCIHDispositionInformation_Node1_action --> E_IncludeCIHDispositionInformation N_IncludeCIHDispositionInformation_Node0 -- No --> N_IncludeCIHDispositionInformation_Node1 N_IncludeCIHDispositionInformation_Node1 -- No --> E_IncludeCIHDispositionInformation
File: GCX016E.cbl
GIVEN: Origin and destination station information has been included in the email content
WHEN: The system processes CIH disposition information
THEN: The system includes CIH disposition code details, hold reasons, and related customs information in the email notification
File: GCX016E.cbl
GIVEN: Origin and destination station information has been included in the email content
WHEN: The system processes CIH disposition information for email inclusion
THEN:
  • The system adds cih disposition code details
  • Related information to the email notification
βœ“ Consolidated Acceptance Criteria
  • The system processes timestamp information → the system includes processing date, time, and relevant timestamps in the email notification content
  • Creating comprehensive Merlin message → processing timestamps are included to provide audit trail 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_IncludeProcessingTimestamps(["Start Step"]) E_IncludeProcessingTimestamps(["End Step"]) N_IncludeProcessingTimestamps_Node0{"The system processes timestamp
information"}:::decision N_IncludeProcessingTimestamps_Node0_action["The system includes processing
date, time, and relevant timestamps
in the email notification content"]:::main N_IncludeProcessingTimestamps_Node0 -- Yes --> N_IncludeProcessingTimestamps_Node0_action N_IncludeProcessingTimestamps_Node0_action --> E_IncludeProcessingTimestamps S_IncludeProcessingTimestamps --> N_IncludeProcessingTimestamps_Node0 N_IncludeProcessingTimestamps_Node1{"Creating comprehensive Merlin
message"}:::decision N_IncludeProcessingTimestamps_Node1_action["Processing timestamps are included
to provide audit trail information"]:::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: GCX016E.cbl
GIVEN: CIH disposition information has been included in the email content
WHEN: The system processes timestamp information
THEN: The system includes processing date, time, and relevant timestamps in the email notification content
File: GCX016E.cbl
GIVEN: Cargo processing events have occurred with recorded timestamps
WHEN: Creating comprehensive Merlin message
THEN: Processing timestamps are included to provide audit trail information
βœ“ Consolidated Acceptance Criteria
  • The system processes the successful delivery status → the system logs the successful email delivery with timestamp and recipient information
  • The system processes the successful delivery confirmation → the system logs the successful email delivery with timestamp and recipient 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_LogSuccessfulEmailDelivery(["Start Step"]) E_LogSuccessfulEmailDelivery(["End Step"]) N_LogSuccessfulEmailDelivery_Node0{"The system processes the successful
delivery status"}:::decision N_LogSuccessfulEmailDelivery_Node0_action["The system logs the successful
email delivery with timestamp and
recipient information"]:::main N_LogSuccessfulEmailDelivery_Node0 -- Yes --> N_LogSuccessfulEmailDelivery_Node0_action N_LogSuccessfulEmailDelivery_Node0_action --> E_LogSuccessfulEmailDelivery S_LogSuccessfulEmailDelivery --> N_LogSuccessfulEmailDelivery_Node0 N_LogSuccessfulEmailDelivery_Node1{"The system processes the successful
delivery confirmation"}:::decision N_LogSuccessfulEmailDelivery_Node1_action["The system logs the successful
email delivery with timestamp and
recipient information for audit
purposes"]:::main N_LogSuccessfulEmailDelivery_Node1 -- Yes --> N_LogSuccessfulEmailDelivery_Node1_action N_LogSuccessfulEmailDelivery_Node1_action --> E_LogSuccessfulEmailDelivery N_LogSuccessfulEmailDelivery_Node0 -- No --> N_LogSuccessfulEmailDelivery_Node1 N_LogSuccessfulEmailDelivery_Node1 -- No --> E_LogSuccessfulEmailDelivery
File: GCX016E.cbl
GIVEN: Email notification has been successfully delivered
WHEN: The system processes the successful delivery status
THEN:
  • The system logs the successful email delivery with timestamp
  • Recipient information
File: GCX016E.cbl
GIVEN: Email notification has been successfully delivered to the freight forwarder
WHEN: The system processes the successful delivery confirmation
THEN:
  • The system logs the successful email delivery with timestamp
  • Recipient information for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system processes the final delivery failure → the system logs the email delivery failure with error details and retry attempt 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_LogEmailDeliveryFailure(["Start Step"]) E_LogEmailDeliveryFailure(["End Step"]) N_LogEmailDeliveryFailure_Node0{"The system processes the final
delivery failure"}:::decision N_LogEmailDeliveryFailure_Node0_action["The system logs the email delivery
failure with error details and retry
attempt information"]:::main N_LogEmailDeliveryFailure_Node0 -- Yes --> N_LogEmailDeliveryFailure_Node0_action N_LogEmailDeliveryFailure_Node0_action --> E_LogEmailDeliveryFailure S_LogEmailDeliveryFailure --> N_LogEmailDeliveryFailure_Node0 N_LogEmailDeliveryFailure_Node0 -- No --> E_LogEmailDeliveryFailure
File: GCX016E.cbl
GIVEN: Email delivery retry limit has been reached without successful delivery
WHEN: The system processes the final delivery failure
THEN:
  • The system logs the email delivery failure with error details
  • Retry attempt information
βœ“ Consolidated Acceptance Criteria
  • The system routes to error handling → the system invokes error handler to process alternative notification methods such as routing to backup recipients (AEI9999, OM01247)
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RoutetoErrorHandler(["Start Step"]) E_RoutetoErrorHandler(["End Step"]) N_RoutetoErrorHandler_Node0{"The system routes to error handling"}:::decision N_RoutetoErrorHandler_Node0_action["The system invokes error handler to
process alternative notification
methods such as routing to backup
recipients AEI9999, OM01247"]:::exclusion N_RoutetoErrorHandler_Node0 -- Yes -->|Alternative| N_RoutetoErrorHandler_Node0_action N_RoutetoErrorHandler_Node0_action --> E_RoutetoErrorHandler S_RoutetoErrorHandler --> N_RoutetoErrorHandler_Node0 N_RoutetoErrorHandler_Node0 -- No --> E_RoutetoErrorHandler
File: GCX016E.cbl
GIVEN: Email delivery has failed after maximum retry attempts
WHEN: The system routes to error handling
THEN: The system invokes error handler to process alternative notification methods such as routing to backup recipients (AEI9999, OM01247)
βœ“ Consolidated Acceptance Criteria
  • The disposition code is not equal to 'CIH' → the system skips all email notification processing and completes the 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_SkipEmailNoCIHCode(["Start Step"]) E_SkipEmailNoCIHCode(["End Step"]) N_SkipEmailNoCIHCode_Node0{"The disposition code is not equal
to CIH"}:::decision N_SkipEmailNoCIHCode_Node0_action["The system skips all email
notification processing and
completes the notification process"]:::main N_SkipEmailNoCIHCode_Node0 -- Yes --> N_SkipEmailNoCIHCode_Node0_action N_SkipEmailNoCIHCode_Node0_action --> E_SkipEmailNoCIHCode S_SkipEmailNoCIHCode --> N_SkipEmailNoCIHCode_Node0 N_SkipEmailNoCIHCode_Node0 -- No --> E_SkipEmailNoCIHCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is being processed for cargo
WHEN: The disposition code is not equal to 'CIH'
THEN:
  • The system skips all email notification processing
  • Completes the notification process
βœ“ Consolidated Acceptance Criteria
  • The system needs to validate and retrieve complete freight forwarder information → the system looks up the freight forwarder name in the GCST2RT broker name 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_LookupFreightForwarderNameinBrokerTableGCST2RT(["Start Step"]) E_LookupFreightForwarderNameinBrokerTableGCST2RT(["End Step"]) N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0{"The system needs to validate and
retrieve complete freight forwarder
information"}:::decision N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0_action["The system looks up the freight
forwarder name in the GCST2RT broker
name table"]:::main N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0 -- Yes --> N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0_action N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0_action --> E_LookupFreightForwarderNameinBrokerTableGCST2RT S_LookupFreightForwarderNameinBrokerTableGCST2RT --> N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0 N_LookupFreightForwarderNameinBrokerTableGCST2RT_Node0 -- No --> E_LookupFreightForwarderNameinBrokerTableGCST2RT
File: GCX016E.cbl
GIVEN: Freight forwarder identification has been extracted from cargo segments
WHEN:
  • The system needs to validate
  • Retrieve complete freight forwarder information
THEN: The system looks up the freight forwarder name in the GCST2RT broker name table
βœ“ Consolidated Acceptance Criteria
  • Complete contact information is needed for notification processing → the system retrieves freight forwarder contact information from the broker database
  • The system retrieves freight forwarder contact information → the system obtains email addresses and notification preferences for the freight forwarder
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RetrieveFreightForwarderContactInformation(["Start Step"]) E_RetrieveFreightForwarderContactInformation(["End Step"]) N_RetrieveFreightForwarderContactInformation_Node0{"Complete contact information is
needed for notification processing"}:::decision N_RetrieveFreightForwarderContactInformation_Node0_action["The system retrieves freight
forwarder contact information from
the broker database"]:::main N_RetrieveFreightForwarderContactInformation_Node0 -- Yes --> N_RetrieveFreightForwarderContactInformation_Node0_action N_RetrieveFreightForwarderContactInformation_Node0_action --> E_RetrieveFreightForwarderContactInformation S_RetrieveFreightForwarderContactInformation --> N_RetrieveFreightForwarderContactInformation_Node0 N_RetrieveFreightForwarderContactInformation_Node1{"The system retrieves freight
forwarder contact information"}:::decision N_RetrieveFreightForwarderContactInformation_Node1_action["The system obtains email addresses
and notification preferences for the
freight forwarder"]:::main N_RetrieveFreightForwarderContactInformation_Node1 -- Yes --> N_RetrieveFreightForwarderContactInformation_Node1_action N_RetrieveFreightForwarderContactInformation_Node1_action --> E_RetrieveFreightForwarderContactInformation N_RetrieveFreightForwarderContactInformation_Node0 -- No --> N_RetrieveFreightForwarderContactInformation_Node1 N_RetrieveFreightForwarderContactInformation_Node1 -- No --> E_RetrieveFreightForwarderContactInformation
File: GCX016E.cbl
GIVEN: The freight forwarder name has been successfully found in the broker name table
WHEN: Complete contact information is needed for notification processing
THEN: The system retrieves freight forwarder contact information from the broker database
File: GCX016E.cbl
GIVEN: The freight forwarder has been validated and approved
WHEN: The system retrieves freight forwarder contact information
THEN:
  • The system obtains email addresses
  • Notification preferences for the freight forwarder
βœ“ Consolidated Acceptance Criteria
  • An email address is needed for electronic notification → the system retrieves the email address from the GCSTBRT broker 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_GetEmailAddressfromBrokerTableGCSTBRT(["Start Step"]) E_GetEmailAddressfromBrokerTableGCSTBRT(["End Step"]) N_GetEmailAddressfromBrokerTableGCSTBRT_Node0{"An email address is needed for
electronic notification"}:::decision N_GetEmailAddressfromBrokerTableGCSTBRT_Node0_action["The system retrieves the email
address from the GCSTBRT broker
table"]:::main N_GetEmailAddressfromBrokerTableGCSTBRT_Node0 -- Yes --> N_GetEmailAddressfromBrokerTableGCSTBRT_Node0_action N_GetEmailAddressfromBrokerTableGCSTBRT_Node0_action --> E_GetEmailAddressfromBrokerTableGCSTBRT S_GetEmailAddressfromBrokerTableGCSTBRT --> N_GetEmailAddressfromBrokerTableGCSTBRT_Node0 N_GetEmailAddressfromBrokerTableGCSTBRT_Node0 -- No --> E_GetEmailAddressfromBrokerTableGCSTBRT
File: GCX016E.cbl
GIVEN: Freight forwarder contact information has been retrieved
WHEN: An email address is needed for electronic notification
THEN: The system retrieves the email address from the GCSTBRT broker table
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine the notification method → if an email address is available, set the freight forwarder identified flag, otherwise log freight forwarder 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_EmailAddressAvailable(["Start Step"]) E_EmailAddressAvailable(["End Step"]) N_EmailAddressAvailable_Node0{"The system needs to determine the
notification method"}:::decision N_EmailAddressAvailable_Node0_action["If an email address is available,
set the freight forwarder identified
flag, otherwise log freight
forwarder not found"]:::main N_EmailAddressAvailable_Node0 -- Yes --> N_EmailAddressAvailable_Node0_action N_EmailAddressAvailable_Node0_action --> E_EmailAddressAvailable S_EmailAddressAvailable --> N_EmailAddressAvailable_Node0 N_EmailAddressAvailable_Node0 -- No --> E_EmailAddressAvailable
File: GCX016E.cbl
GIVEN: The broker table has been searched for the freight forwarder's email address
WHEN: The system needs to determine the notification method
THEN: If an email address is available, set the freight forwarder identified flag, otherwise log freight forwarder not found
βœ“ Consolidated Acceptance Criteria
  • The freight forwarder validation process is complete → the system sets the freight forwarder identified flag to indicate successful identification
  • The system processes the validation result → a freight forwarder identified flag is set to indicate successful 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_SetFreightForwarderIdentifiedFlag(["Start Step"]) E_SetFreightForwarderIdentifiedFlag(["End Step"]) N_SetFreightForwarderIdentifiedFlag_Node0{"The freight forwarder validation
process is complete"}:::decision N_SetFreightForwarderIdentifiedFlag_Node0_action["The system sets the freight
forwarder identified flag to
indicate successful identification"]:::main N_SetFreightForwarderIdentifiedFlag_Node0 -- Yes --> N_SetFreightForwarderIdentifiedFlag_Node0_action N_SetFreightForwarderIdentifiedFlag_Node0_action --> E_SetFreightForwarderIdentifiedFlag S_SetFreightForwarderIdentifiedFlag --> N_SetFreightForwarderIdentifiedFlag_Node0 N_SetFreightForwarderIdentifiedFlag_Node1{"The system processes the validation
result"}:::decision N_SetFreightForwarderIdentifiedFlag_Node1_action["A freight forwarder identified flag
is set to indicate successful
identification"]:::main N_SetFreightForwarderIdentifiedFlag_Node1 -- Yes --> N_SetFreightForwarderIdentifiedFlag_Node1_action N_SetFreightForwarderIdentifiedFlag_Node1_action --> E_SetFreightForwarderIdentifiedFlag N_SetFreightForwarderIdentifiedFlag_Node0 -- No --> N_SetFreightForwarderIdentifiedFlag_Node1 N_SetFreightForwarderIdentifiedFlag_Node1 -- No --> E_SetFreightForwarderIdentifiedFlag
File: GCX016E.cbl
GIVEN: A freight forwarder has been successfully identified with available contact information
WHEN: The freight forwarder validation process is complete
THEN: The system sets the freight forwarder identified flag to indicate successful identification
File: GCX016E.cbl
GIVEN: The freight forwarder information has been validated as complete and accurate
WHEN: The system processes the validation result
THEN: A freight forwarder identified flag is set to indicate successful identification
βœ“ Consolidated Acceptance Criteria
  • Freight forwarder details need to be preserved for notification processing → the system stores freight forwarder details including contact information and email address 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_StoreFreightForwarderDetailsforProcessing(["Start Step"]) E_StoreFreightForwarderDetailsforProcessing(["End Step"]) N_StoreFreightForwarderDetailsforProcessing_Node0{"Freight forwarder details need to
be preserved for notification
processing"}:::decision N_StoreFreightForwarderDetailsforProcessing_Node0_action["The system stores freight forwarder
details including contact
information and email address for
processing"]:::main N_StoreFreightForwarderDetailsforProcessing_Node0 -- Yes --> N_StoreFreightForwarderDetailsforProcessing_Node0_action N_StoreFreightForwarderDetailsforProcessing_Node0_action --> E_StoreFreightForwarderDetailsforProcessing S_StoreFreightForwarderDetailsforProcessing --> N_StoreFreightForwarderDetailsforProcessing_Node0 N_StoreFreightForwarderDetailsforProcessing_Node0 -- No --> E_StoreFreightForwarderDetailsforProcessing
File: GCX016E.cbl
GIVEN: The freight forwarder identified flag has been set
WHEN: Freight forwarder details need to be preserved for notification processing
THEN:
  • The system stores freight forwarder details including contact information
  • Email address for processing
βœ“ Consolidated Acceptance Criteria
  • The system initiates cargo segment data analysis → the system retrieves GCSUSS03 cargo segment data 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_RetrieveGCSUSS03CargoSegmentData(["Start Step"]) E_RetrieveGCSUSS03CargoSegmentData(["End Step"]) N_RetrieveGCSUSS03CargoSegmentData_Node0{"The system initiates cargo segment
data analysis"}:::decision N_RetrieveGCSUSS03CargoSegmentData_Node0_action["The system retrieves GCSUSS03 cargo
segment data for processing"]:::main N_RetrieveGCSUSS03CargoSegmentData_Node0 -- Yes --> N_RetrieveGCSUSS03CargoSegmentData_Node0_action N_RetrieveGCSUSS03CargoSegmentData_Node0_action --> E_RetrieveGCSUSS03CargoSegmentData S_RetrieveGCSUSS03CargoSegmentData --> N_RetrieveGCSUSS03CargoSegmentData_Node0 N_RetrieveGCSUSS03CargoSegmentData_Node0 -- No --> E_RetrieveGCSUSS03CargoSegmentData
File: GCX016E.cbl
GIVEN: A cargo record exists and requires freight forwarder analysis
WHEN: The system initiates cargo segment data analysis
THEN: The system retrieves GCSUSS03 cargo segment data for processing
βœ“ Consolidated Acceptance Criteria
  • The system continues cargo segment data analysis → the system retrieves GCSUSS07 cargo segment data for 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_RetrieveGCSUSS07CargoSegmentData(["Start Step"]) E_RetrieveGCSUSS07CargoSegmentData(["End Step"]) N_RetrieveGCSUSS07CargoSegmentData_Node0{"The system continues cargo segment
data analysis"}:::decision N_RetrieveGCSUSS07CargoSegmentData_Node0_action["The system retrieves GCSUSS07 cargo
segment data for additional
processing"]:::main N_RetrieveGCSUSS07CargoSegmentData_Node0 -- Yes --> N_RetrieveGCSUSS07CargoSegmentData_Node0_action N_RetrieveGCSUSS07CargoSegmentData_Node0_action --> E_RetrieveGCSUSS07CargoSegmentData S_RetrieveGCSUSS07CargoSegmentData --> N_RetrieveGCSUSS07CargoSegmentData_Node0 N_RetrieveGCSUSS07CargoSegmentData_Node0 -- No --> E_RetrieveGCSUSS07CargoSegmentData
File: GCX016E.cbl
GIVEN: Primary cargo segment data has been retrieved from GCSUSS03
WHEN: The system continues cargo segment data analysis
THEN: The system retrieves GCSUSS07 cargo segment data for additional processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo segment data → the system extracts freight forwarder identifiers 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_ExtractFreightForwarderIdentifiers(["Start Step"]) E_ExtractFreightForwarderIdentifiers(["End Step"]) N_ExtractFreightForwarderIdentifiers_Node0{"The system processes the cargo
segment data"}:::decision N_ExtractFreightForwarderIdentifiers_Node0_action["The system extracts freight
forwarder identifiers from the
segment data"]:::main N_ExtractFreightForwarderIdentifiers_Node0 -- Yes --> N_ExtractFreightForwarderIdentifiers_Node0_action N_ExtractFreightForwarderIdentifiers_Node0_action --> E_ExtractFreightForwarderIdentifiers S_ExtractFreightForwarderIdentifiers --> N_ExtractFreightForwarderIdentifiers_Node0 N_ExtractFreightForwarderIdentifiers_Node0 -- No --> E_ExtractFreightForwarderIdentifiers
File: GCX016E.cbl
GIVEN: GCSUSS03 and GCSUSS07 cargo segment data have been retrieved
WHEN: The system processes the cargo segment data
THEN: The system extracts freight forwarder identifiers from the segment data
βœ“ Consolidated Acceptance Criteria
  • If the extraction results → the system determines if a valid freight forwarder ID 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_FreightForwarderIDFound(["Start Step"]) E_FreightForwarderIDFound(["End Step"]) N_FreightForwarderIDFound_Node0{"The system evaluates the extraction
results"}:::decision N_FreightForwarderIDFound_Node0_action["The system determines if a valid
freight forwarder ID was found and
proceeds accordingly"]:::main N_FreightForwarderIDFound_Node0 -- Yes --> N_FreightForwarderIDFound_Node0_action N_FreightForwarderIDFound_Node0_action --> E_FreightForwarderIDFound S_FreightForwarderIDFound --> N_FreightForwarderIDFound_Node0 N_FreightForwarderIDFound_Node0 -- No --> E_FreightForwarderIDFound
File: GCX016E.cbl
GIVEN: Freight forwarder identifier extraction has been completed
WHEN: The system evaluates the extraction results
THEN:
  • The system determines if a valid freight forwarder id was found
  • Proceeds accordingly
βœ“ Consolidated Acceptance Criteria
  • If the broker-freight forwarder relationship → the system validates whether a legitimate broker relationship 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_ValidateBrokerRelationship(["Start Step"]) E_ValidateBrokerRelationship(["End Step"]) N_ValidateBrokerRelationship_Node0{"The system evaluates the
broker-freight forwarder
relationship"}:::decision N_ValidateBrokerRelationship_Node0_action["The system validates whether a
legitimate broker relationship
exists"]:::main N_ValidateBrokerRelationship_Node0 -- Yes --> N_ValidateBrokerRelationship_Node0_action N_ValidateBrokerRelationship_Node0_action --> E_ValidateBrokerRelationship S_ValidateBrokerRelationship --> N_ValidateBrokerRelationship_Node0 N_ValidateBrokerRelationship_Node0 -- No --> E_ValidateBrokerRelationship
File: GCX016E.cbl
GIVEN: Freight forwarder information has been located in the broker database
WHEN: The system evaluates the broker-freight forwarder relationship
THEN: The system validates whether a legitimate broker relationship exists
βœ“ Consolidated Acceptance Criteria
  • If the validation results → the system determines if the broker relationship is valid 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_ValidBrokerRelationship(["Start Step"]) E_ValidBrokerRelationship(["End Step"]) N_ValidBrokerRelationship_Node0{"The system evaluates the validation
results"}:::decision N_ValidBrokerRelationship_Node0_action["The system determines if the broker
relationship is valid and routes
processing accordingly"]:::main N_ValidBrokerRelationship_Node0 -- Yes --> N_ValidBrokerRelationship_Node0_action N_ValidBrokerRelationship_Node0_action --> E_ValidBrokerRelationship S_ValidBrokerRelationship --> N_ValidBrokerRelationship_Node0 N_ValidBrokerRelationship_Node0 -- No --> E_ValidBrokerRelationship
File: GCX016E.cbl
GIVEN: Broker relationship validation has been completed
WHEN: The system evaluates the validation results
THEN:
  • The system determines if the broker relationship is valid
  • Routes processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system needs freight forwarder identification details → the system retrieves the freight forwarder name from the broker 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_RetrieveFreightForwarderName(["Start Step"]) E_RetrieveFreightForwarderName(["End Step"]) N_RetrieveFreightForwarderName_Node0{"The system needs freight forwarder
identification details"}:::decision N_RetrieveFreightForwarderName_Node0_action["The system retrieves the freight
forwarder name from the broker
records"]:::main N_RetrieveFreightForwarderName_Node0 -- Yes --> N_RetrieveFreightForwarderName_Node0_action N_RetrieveFreightForwarderName_Node0_action --> E_RetrieveFreightForwarderName S_RetrieveFreightForwarderName --> N_RetrieveFreightForwarderName_Node0 N_RetrieveFreightForwarderName_Node0 -- No --> E_RetrieveFreightForwarderName
File: GCX016E.cbl
GIVEN: A valid broker relationship has been established with the freight forwarder
WHEN: The system needs freight forwarder identification details
THEN: The system retrieves the freight forwarder name from the broker records
βœ“ Consolidated Acceptance Criteria
  • The system needs to obtain contact details for notifications → the system retrieves contact information from GCSTBRT table 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_RetrieveContactInformation(["Start Step"]) E_RetrieveContactInformation(["End Step"]) N_RetrieveContactInformation_Node0{"The system needs to obtain contact
details for notifications"}:::decision N_RetrieveContactInformation_Node0_action["The system retrieves contact
information from GCSTBRT table
segments"]:::main N_RetrieveContactInformation_Node0 -- Yes --> N_RetrieveContactInformation_Node0_action N_RetrieveContactInformation_Node0_action --> E_RetrieveContactInformation S_RetrieveContactInformation --> N_RetrieveContactInformation_Node0 N_RetrieveContactInformation_Node0 -- No --> E_RetrieveContactInformation
File: GCX016E.cbl
GIVEN: Freight forwarder name has been retrieved from broker records
WHEN: The system needs to obtain contact details for notifications
THEN: The system retrieves contact information from GCSTBRT table segments
βœ“ Consolidated Acceptance Criteria
  • If notification requirements → the system determines the appropriate notification method and requirements based on freight forwarder setup 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_DetermineNotificationRequirements(["Start Step"]) E_DetermineNotificationRequirements(["End Step"]) N_DetermineNotificationRequirements_Node0{"The system evaluates notification
requirements"}:::decision N_DetermineNotificationRequirements_Node0_action["The system determines the
appropriate notification method and
requirements based on freight
forwarder setup and cargo status"]:::main N_DetermineNotificationRequirements_Node0 -- Yes --> N_DetermineNotificationRequirements_Node0_action N_DetermineNotificationRequirements_Node0_action --> E_DetermineNotificationRequirements S_DetermineNotificationRequirements --> N_DetermineNotificationRequirements_Node0 N_DetermineNotificationRequirements_Node0 -- No --> E_DetermineNotificationRequirements
File: GCX016E.cbl
GIVEN: Freight forwarder contact information has been retrieved
WHEN: The system evaluates notification requirements
THEN:
  • The system determines the appropriate notification method
  • Requirements based on freight forwarder setup
  • Cargo status
βœ“ Consolidated Acceptance Criteria
  • If the cargo hold status → the system determines if the scenario qualifies as a CIH hold requiring email 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_CIHHoldScenario(["Start Step"]) E_CIHHoldScenario(["End Step"]) N_CIHHoldScenario_Node0{"The system evaluates the cargo hold
status"}:::decision N_CIHHoldScenario_Node0_action["The system determines if the
scenario qualifies as a CIH hold
requiring email notification"]:::main N_CIHHoldScenario_Node0 -- Yes --> N_CIHHoldScenario_Node0_action N_CIHHoldScenario_Node0_action --> E_CIHHoldScenario S_CIHHoldScenario --> N_CIHHoldScenario_Node0 N_CIHHoldScenario_Node0 -- No --> E_CIHHoldScenario
File: GCX016E.cbl
GIVEN: Notification requirements have been determined for the freight forwarder
WHEN: The system evaluates the cargo hold status
THEN: The system determines if the scenario qualifies as a CIH hold requiring email notification
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold scenario determination → the system sets the email notification required flag to trigger 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_SetEmailNotificationRequiredFlag(["Start Step"]) E_SetEmailNotificationRequiredFlag(["End Step"]) N_SetEmailNotificationRequiredFlag_Node0{"The system processes the hold
scenario determination"}:::decision N_SetEmailNotificationRequiredFlag_Node0_action["The system sets the email
notification required flag to
trigger email delivery"]:::main N_SetEmailNotificationRequiredFlag_Node0 -- Yes --> N_SetEmailNotificationRequiredFlag_Node0_action N_SetEmailNotificationRequiredFlag_Node0_action --> E_SetEmailNotificationRequiredFlag S_SetEmailNotificationRequiredFlag --> N_SetEmailNotificationRequiredFlag_Node0 N_SetEmailNotificationRequiredFlag_Node0 -- No --> E_SetEmailNotificationRequiredFlag
File: GCX016E.cbl
GIVEN: The cargo situation has been identified as a CIH hold scenario
WHEN: The system processes the hold scenario determination
THEN: The system sets the email notification required flag to trigger email delivery
βœ“ Consolidated Acceptance Criteria
  • The system determines notification requirements → the system sets the no notification required flag to bypass 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_SetNoNotificationRequiredFlag(["Start Step"]) E_SetNoNotificationRequiredFlag(["End Step"]) N_SetNoNotificationRequiredFlag_Node0{"The system determines notification
requirements"}:::decision N_SetNoNotificationRequiredFlag_Node0_action["The system sets the no notification
required flag to bypass email
delivery"]:::main N_SetNoNotificationRequiredFlag_Node0 -- Yes --> N_SetNoNotificationRequiredFlag_Node0_action N_SetNoNotificationRequiredFlag_Node0_action --> E_SetNoNotificationRequiredFlag S_SetNoNotificationRequiredFlag --> N_SetNoNotificationRequiredFlag_Node0 N_SetNoNotificationRequiredFlag_Node0 -- No --> E_SetNoNotificationRequiredFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Either no freight forwarder ID was found, no valid broker relationship exists, or the scenario is not a CIH hold
WHEN: The system determines notification requirements
THEN: The system sets the no notification required flag to bypass email delivery
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the cargo segment data analysis → the system completes the analysis process with all notification requirements 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_CompleteAnalysis(["Start Step"]) E_CompleteAnalysis(["End Step"]) N_CompleteAnalysis_Node0{"The system finalizes the cargo
segment data analysis"}:::decision N_CompleteAnalysis_Node0_action["The system completes the analysis
process with all notification
requirements determined"]:::main N_CompleteAnalysis_Node0 -- Yes --> N_CompleteAnalysis_Node0_action N_CompleteAnalysis_Node0_action --> E_CompleteAnalysis S_CompleteAnalysis --> N_CompleteAnalysis_Node0 N_CompleteAnalysis_Node0 -- No --> E_CompleteAnalysis
File: GCX016E.cbl
GIVEN: Either email notification required flag or no notification required flag has been set
WHEN: The system finalizes the cargo segment data analysis
THEN: The system completes the analysis process with all notification requirements determined
βœ“ Consolidated Acceptance Criteria
  • The system searches the GCST2RT broker database for matching freight forwarder records → the system retrieves broker segments that match the disposition code 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_SearchGCST2RTBrokerDatabase(["Start Step"]) E_SearchGCST2RTBrokerDatabase(["End Step"]) N_SearchGCST2RTBrokerDatabase_Node0{"The system searches the GCST2RT
broker database for matching freight
forwarder records"}:::decision N_SearchGCST2RTBrokerDatabase_Node0_action["The system retrieves broker
segments that match the disposition
code criteria"]:::main N_SearchGCST2RTBrokerDatabase_Node0 -- Yes --> N_SearchGCST2RTBrokerDatabase_Node0_action N_SearchGCST2RTBrokerDatabase_Node0_action --> E_SearchGCST2RTBrokerDatabase S_SearchGCST2RTBrokerDatabase --> N_SearchGCST2RTBrokerDatabase_Node0 N_SearchGCST2RTBrokerDatabase_Node0 -- No --> E_SearchGCST2RTBrokerDatabase
File: GCX016E.cbl
GIVEN: A disposition code needs to be processed for freight forwarder validation
WHEN: The system searches the GCST2RT broker database for matching freight forwarder records
THEN: The system retrieves broker segments that match the disposition code criteria
βœ“ Consolidated Acceptance Criteria
  • If the search results for broker record existence → the system returns true if a broker record is found, false if no matching record exists
  • If search results → if broker record is found, proceed to retrieve broker name; otherwise log broker information 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_BrokerRecordFound(["Start Step"]) E_BrokerRecordFound(["End Step"]) N_BrokerRecordFound_Node0{"The system evaluates the search
results for broker record existence"}:::decision N_BrokerRecordFound_Node0_action["The system returns true if a broker
record is found, false if no
matching record exists"]:::main N_BrokerRecordFound_Node0 -- Yes --> N_BrokerRecordFound_Node0_action N_BrokerRecordFound_Node0_action --> E_BrokerRecordFound S_BrokerRecordFound --> N_BrokerRecordFound_Node0 N_BrokerRecordFound_Node1{"The system evaluates search results"}:::decision N_BrokerRecordFound_Node1_action["If broker record is found, proceed
to retrieve broker name otherwise
log broker information not found"]:::main N_BrokerRecordFound_Node1 -- Yes --> N_BrokerRecordFound_Node1_action N_BrokerRecordFound_Node1_action --> E_BrokerRecordFound N_BrokerRecordFound_Node0 -- No --> N_BrokerRecordFound_Node1 N_BrokerRecordFound_Node1 -- No --> E_BrokerRecordFound
File: GCX016E.cbl
GIVEN: A search has been performed against the GCST2RT broker database
WHEN: The system evaluates the search results for broker record existence
THEN: The system returns true if a broker record is found, false if no matching record exists
File: GCX016E.cbl
GIVEN: Broker database search has been performed using freight forwarder code
WHEN: The system evaluates search results
THEN: If broker record is found, proceed to retrieve broker name; otherwise log broker information not found
βœ“ Consolidated Acceptance Criteria
  • The system retrieves detailed broker information from the record → the system extracts broker identification, contact details, and operational 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_RetrieveBrokerInformation(["Start Step"]) E_RetrieveBrokerInformation(["End Step"]) N_RetrieveBrokerInformation_Node0{"The system retrieves detailed
broker information from the record"}:::decision N_RetrieveBrokerInformation_Node0_action["The system extracts broker
identification, contact details, and
operational parameters"]:::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: GCX016E.cbl
GIVEN: A valid freight forwarder relationship has been confirmed
WHEN: The system retrieves detailed broker information from the record
THEN: The system extracts broker identification, contact details, and operational parameters
βœ“ Consolidated Acceptance Criteria
  • The system validates the broker's authority for the specific disposition code → the system confirms the freight forwarder is authorized to process this 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_AuthorizedforDispositionCode(["Start Step"]) E_AuthorizedforDispositionCode(["End Step"]) N_AuthorizedforDispositionCode_Node0{"The system validates the broker s
authority for the specific
disposition code"}:::decision N_AuthorizedforDispositionCode_Node0_action["The system confirms the freight
forwarder is authorized to process
this disposition code type"]:::main N_AuthorizedforDispositionCode_Node0 -- Yes --> N_AuthorizedforDispositionCode_Node0_action N_AuthorizedforDispositionCode_Node0_action --> E_AuthorizedforDispositionCode S_AuthorizedforDispositionCode --> N_AuthorizedforDispositionCode_Node0 N_AuthorizedforDispositionCode_Node0 -- No --> E_AuthorizedforDispositionCode
File: GCX016E.cbl
GIVEN: Broker information has been retrieved for a freight forwarder
WHEN: The system validates the broker's authority for the specific disposition code
THEN: The system confirms the freight forwarder is authorized to process this disposition code type
βœ“ Consolidated Acceptance Criteria
  • The system stores the broker details in working storage → the system retains broker identification, contact information, and authorization details 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_StoreBrokerDetails(["Start Step"]) E_StoreBrokerDetails(["End Step"]) N_StoreBrokerDetails_Node0{"The system stores the broker
details in working storage"}:::decision N_StoreBrokerDetails_Node0_action["The system retains broker
identification, contact information,
and authorization details for
processing"]:::main N_StoreBrokerDetails_Node0 -- Yes --> N_StoreBrokerDetails_Node0_action N_StoreBrokerDetails_Node0_action --> E_StoreBrokerDetails S_StoreBrokerDetails --> N_StoreBrokerDetails_Node0 N_StoreBrokerDetails_Node0 -- No --> E_StoreBrokerDetails
File: GCX016E.cbl
GIVEN: A freight forwarder has been successfully identified and validated
WHEN: The system stores the broker details in working storage
THEN: The system retains broker identification, contact information, and authorization details for processing
βœ“ Consolidated Acceptance Criteria
  • The system continues with standard processing procedures → the system processes the disposition code using standard business rules without freight forwarder-specific 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_ContinuewithStandardProcessing(["Start Step"]) E_ContinuewithStandardProcessing(["End Step"]) N_ContinuewithStandardProcessing_Node0{"The system continues with standard
processing procedures"}:::decision N_ContinuewithStandardProcessing_Node0_action["The system processes the
disposition code using standard
business rules without freight
forwarder-specific handling"]:::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: GCX016E.cbl
GIVEN: Freight forwarder search has completed without finding a valid authorized freight forwarder
WHEN: The system continues with standard processing procedures
THEN: The system processes the disposition code using standard business rules without freight forwarder-specific handling
βœ“ Consolidated Acceptance Criteria
  • The system looks up the freight forwarder in the GCST2RT broker name table → the system validates whether a valid business relationship exists between the broker and freight forwarder
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidBrokerFreightForwarderRelationship(["Start Step"]) E_ValidBrokerFreightForwarderRelationship(["End Step"]) N_ValidBrokerFreightForwarderRelationship_Node0{"The system looks up the freight
forwarder in the GCST2RT broker name
table"}:::decision N_ValidBrokerFreightForwarderRelationship_Node0_action["The system validates whether a
valid business relationship exists
between the broker and freight
forwarder"]:::main N_ValidBrokerFreightForwarderRelationship_Node0 -- Yes --> N_ValidBrokerFreightForwarderRelationship_Node0_action N_ValidBrokerFreightForwarderRelationship_Node0_action --> E_ValidBrokerFreightForwarderRelationship S_ValidBrokerFreightForwarderRelationship --> N_ValidBrokerFreightForwarderRelationship_Node0 N_ValidBrokerFreightForwarderRelationship_Node0 -- No --> E_ValidBrokerFreightForwarderRelationship
File: GCX016E.cbl
GIVEN: Freight forwarder information has been extracted from cargo segments
WHEN: The system looks up the freight forwarder in the GCST2RT broker name table
THEN:
  • The system validates whether a valid business relationship exists between the broker
  • Freight forwarder
βœ“ Consolidated Acceptance Criteria
  • The system validates authorization for the specific disposition code → the system determines whether the freight forwarder is authorized to use 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_FreightForwarderAuthorizedforThisDisposition(["Start Step"]) E_FreightForwarderAuthorizedforThisDisposition(["End Step"]) N_FreightForwarderAuthorizedforThisDisposition_Node0{"The system validates authorization
for the specific disposition code"}:::decision N_FreightForwarderAuthorizedforThisDisposition_Node0_action["The system determines whether the
freight forwarder is authorized to
use this disposition code"]:::main N_FreightForwarderAuthorizedforThisDisposition_Node0 -- Yes --> N_FreightForwarderAuthorizedforThisDisposition_Node0_action N_FreightForwarderAuthorizedforThisDisposition_Node0_action --> E_FreightForwarderAuthorizedforThisDisposition S_FreightForwarderAuthorizedforThisDisposition --> N_FreightForwarderAuthorizedforThisDisposition_Node0 N_FreightForwarderAuthorizedforThisDisposition_Node0 -- No --> E_FreightForwarderAuthorizedforThisDisposition
File: GCX016E.cbl
GIVEN: A valid broker-freight forwarder relationship has been established
WHEN: The system validates authorization for the specific disposition code
THEN: The system determines whether the freight forwarder is authorized to use this disposition code
βœ“ Consolidated Acceptance Criteria
  • The system sets the freight forwarder validation status → the freight forwarder is marked as validated and approved for email 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_SetFreightForwarderasValidated(["Start Step"]) E_SetFreightForwarderasValidated(["End Step"]) N_SetFreightForwarderasValidated_Node0{"The system sets the freight
forwarder validation status"}:::decision N_SetFreightForwarderasValidated_Node0_action["The freight forwarder is marked as
validated and approved for email
notification processing"]:::main N_SetFreightForwarderasValidated_Node0 -- Yes --> N_SetFreightForwarderasValidated_Node0_action N_SetFreightForwarderasValidated_Node0_action --> E_SetFreightForwarderasValidated S_SetFreightForwarderasValidated --> N_SetFreightForwarderasValidated_Node0 N_SetFreightForwarderasValidated_Node0 -- No --> E_SetFreightForwarderasValidated
File: GCX016E.cbl
GIVEN: The freight forwarder has been authorized for the disposition code
WHEN: The system sets the freight forwarder validation status
THEN:
  • The freight forwarder is marked as validated
  • Approved for email notification processing
βœ“ Consolidated Acceptance Criteria
  • The freight forwarder is not authorized for the disposition code → the system marks validation as failed due to unauthorized access and skips email 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_MarkValidationasFailedUnauthorized(["Start Step"]) E_MarkValidationasFailedUnauthorized(["End Step"]) N_MarkValidationasFailedUnauthorized_Node0{"The freight forwarder is not
authorized for the disposition code"}:::decision N_MarkValidationasFailedUnauthorized_Node0_action["The system marks validation as
failed due to unauthorized access
and skips email notification"]:::main N_MarkValidationasFailedUnauthorized_Node0 -- Yes --> N_MarkValidationasFailedUnauthorized_Node0_action N_MarkValidationasFailedUnauthorized_Node0_action --> E_MarkValidationasFailedUnauthorized S_MarkValidationasFailedUnauthorized --> N_MarkValidationasFailedUnauthorized_Node0 N_MarkValidationasFailedUnauthorized_Node0 -- No --> E_MarkValidationasFailedUnauthorized
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A valid broker-freight forwarder relationship exists but authorization check fails
WHEN: The freight forwarder is not authorized for the disposition code
THEN:
  • The system marks validation as failed due to unauthorized access
  • Skips email notification
βœ“ Consolidated Acceptance Criteria
  • No valid broker-freight forwarder relationship is found → the system marks validation as failed due to invalid relationship and skips email 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_MarkValidationasFailedInvalidRelationship(["Start Step"]) E_MarkValidationasFailedInvalidRelationship(["End Step"]) N_MarkValidationasFailedInvalidRelationship_Node0{"No valid broker-freight forwarder
relationship is found"}:::decision N_MarkValidationasFailedInvalidRelationship_Node0_action["The system marks validation as
failed due to invalid relationship
and skips email notification"]:::main N_MarkValidationasFailedInvalidRelationship_Node0 -- Yes --> N_MarkValidationasFailedInvalidRelationship_Node0_action N_MarkValidationasFailedInvalidRelationship_Node0_action --> E_MarkValidationasFailedInvalidRelationship S_MarkValidationasFailedInvalidRelationship --> N_MarkValidationasFailedInvalidRelationship_Node0 N_MarkValidationasFailedInvalidRelationship_Node0 -- No --> E_MarkValidationasFailedInvalidRelationship
File: GCX016E.cbl
GIVEN: Freight forwarder lookup has been performed in the broker name table
WHEN: No valid broker-freight forwarder relationship is found
THEN:
  • The system marks validation as failed due to invalid relationship
  • Skips email notification
βœ“ Consolidated Acceptance Criteria
  • The system processes the validation failure → the system bypasses email notification processing and continues with standard 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_SkipEmailNotificationValidationFailed(["Start Step"]) E_SkipEmailNotificationValidationFailed(["End Step"]) N_SkipEmailNotificationValidationFailed_Node0{"The system processes the validation
failure"}:::decision N_SkipEmailNotificationValidationFailed_Node0_action["The system bypasses email
notification processing and
continues with standard disposition
code processing"]:::main N_SkipEmailNotificationValidationFailed_Node0 -- Yes --> N_SkipEmailNotificationValidationFailed_Node0_action N_SkipEmailNotificationValidationFailed_Node0_action --> E_SkipEmailNotificationValidationFailed S_SkipEmailNotificationValidationFailed --> N_SkipEmailNotificationValidationFailed_Node0 N_SkipEmailNotificationValidationFailed_Node0 -- No --> E_SkipEmailNotificationValidationFailed
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Freight forwarder validation has failed due to unauthorized access, invalid relationship, or disposition code not found
WHEN: The system processes the validation failure
THEN:
  • The system bypasses email notification processing
  • Continues with standard disposition code processing
βœ“ Consolidated Acceptance Criteria
  • The system processes email content creation → equipment details are retrieved from the cargo 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_RetrieveEquipmentInformation(["Start Step"]) E_RetrieveEquipmentInformation(["End Step"]) N_RetrieveEquipmentInformation_Node0{"The system processes email content
creation"}:::decision N_RetrieveEquipmentInformation_Node0_action["Equipment details are retrieved
from the cargo segment data"]:::main N_RetrieveEquipmentInformation_Node0 -- Yes --> N_RetrieveEquipmentInformation_Node0_action N_RetrieveEquipmentInformation_Node0_action --> E_RetrieveEquipmentInformation S_RetrieveEquipmentInformation --> N_RetrieveEquipmentInformation_Node0 N_RetrieveEquipmentInformation_Node0 -- No --> E_RetrieveEquipmentInformation
File: GCX016E.cbl
GIVEN: A cargo record exists with equipment information
WHEN: The system processes email content creation
THEN: Equipment details are retrieved from the cargo segment data
βœ“ Consolidated Acceptance Criteria
  • The system formats the equipment details → car ID and equipment type are formatted according to business 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_FormatCarIDandEquipmentType(["Start Step"]) E_FormatCarIDandEquipmentType(["End Step"]) N_FormatCarIDandEquipmentType_Node0{"The system formats the equipment
details"}:::decision N_FormatCarIDandEquipmentType_Node0_action["Car ID and equipment type are
formatted according to business
display standards"]:::main N_FormatCarIDandEquipmentType_Node0 -- Yes --> N_FormatCarIDandEquipmentType_Node0_action N_FormatCarIDandEquipmentType_Node0_action --> E_FormatCarIDandEquipmentType S_FormatCarIDandEquipmentType --> N_FormatCarIDandEquipmentType_Node0 N_FormatCarIDandEquipmentType_Node0 -- No --> E_FormatCarIDandEquipmentType
File: GCX016E.cbl
GIVEN: Equipment information has been retrieved from cargo data
WHEN: The system formats the equipment details
THEN:
  • Car id
  • Equipment type are formatted according to business display standards
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo information for email content → the waybill number 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_RetrieveWaybillNumber(["Start Step"]) E_RetrieveWaybillNumber(["End Step"]) N_RetrieveWaybillNumber_Node0{"The system processes cargo
information for email content"}:::decision N_RetrieveWaybillNumber_Node0_action["The waybill number is retrieved
from the cargo record"]:::main N_RetrieveWaybillNumber_Node0 -- Yes --> N_RetrieveWaybillNumber_Node0_action N_RetrieveWaybillNumber_Node0_action --> E_RetrieveWaybillNumber S_RetrieveWaybillNumber --> N_RetrieveWaybillNumber_Node0 N_RetrieveWaybillNumber_Node0 -- No --> E_RetrieveWaybillNumber
File: GCX016E.cbl
GIVEN: A cargo record contains waybill information
WHEN: The system processes cargo information for email content
THEN: The waybill number is retrieved from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo identification information → uS-CCN information 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_GetUSCCNInformation(["Start Step"]) E_GetUSCCNInformation(["End Step"]) N_GetUSCCNInformation_Node0{"The system processes cargo
identification information"}:::decision N_GetUSCCNInformation_Node0_action["US-CCN information is retrieved
from the cargo record"]:::main N_GetUSCCNInformation_Node0 -- Yes --> N_GetUSCCNInformation_Node0_action N_GetUSCCNInformation_Node0_action --> E_GetUSCCNInformation S_GetUSCCNInformation --> N_GetUSCCNInformation_Node0 N_GetUSCCNInformation_Node0 -- No --> E_GetUSCCNInformation
File: GCX016E.cbl
GIVEN: A cargo record contains US-CCN data
WHEN: The system processes cargo identification information
THEN: US-CCN information is retrieved from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo details for email content → content description 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_RetrieveContentDescription(["Start Step"]) E_RetrieveContentDescription(["End Step"]) N_RetrieveContentDescription_Node0{"The system processes cargo details
for email content"}:::decision N_RetrieveContentDescription_Node0_action["Content description is retrieved
from the cargo record"]:::main N_RetrieveContentDescription_Node0 -- Yes --> N_RetrieveContentDescription_Node0_action N_RetrieveContentDescription_Node0_action --> E_RetrieveContentDescription S_RetrieveContentDescription --> N_RetrieveContentDescription_Node0 N_RetrieveContentDescription_Node0 -- No --> E_RetrieveContentDescription
File: GCX016E.cbl
GIVEN: A cargo record contains content description information
WHEN: The system processes cargo details for email content
THEN: Content description is retrieved from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes station information for email content → origin station details are retrieved from station information 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_GetOriginStationInformation(["Start Step"]) E_GetOriginStationInformation(["End Step"]) N_GetOriginStationInformation_Node0{"The system processes station
information for email content"}:::decision N_GetOriginStationInformation_Node0_action["Origin station details are
retrieved from station information
tables"]:::main N_GetOriginStationInformation_Node0 -- Yes --> N_GetOriginStationInformation_Node0_action N_GetOriginStationInformation_Node0_action --> E_GetOriginStationInformation S_GetOriginStationInformation --> N_GetOriginStationInformation_Node0 N_GetOriginStationInformation_Node0 -- No --> E_GetOriginStationInformation
File: GCX016E.cbl
GIVEN: A cargo record contains origin station reference
WHEN: The system processes station information for email content
THEN: Origin station details are retrieved from station information tables
βœ“ Consolidated Acceptance Criteria
  • The system processes station information for email content → destination station details are retrieved from station information 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_GetDestinationStationInformation(["Start Step"]) E_GetDestinationStationInformation(["End Step"]) N_GetDestinationStationInformation_Node0{"The system processes station
information for email content"}:::decision N_GetDestinationStationInformation_Node0_action["Destination station details are
retrieved from station information
tables"]:::main N_GetDestinationStationInformation_Node0 -- Yes --> N_GetDestinationStationInformation_Node0_action N_GetDestinationStationInformation_Node0_action --> E_GetDestinationStationInformation S_GetDestinationStationInformation --> N_GetDestinationStationInformation_Node0 N_GetDestinationStationInformation_Node0 -- No --> E_GetDestinationStationInformation
File: GCX016E.cbl
GIVEN: A cargo record contains destination station reference
WHEN: The system processes station information for email content
THEN: Destination station details are retrieved from station information tables
βœ“ Consolidated Acceptance Criteria
  • The system formats station information for display → station names and codes are formatted according to business 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_FormatStationNamesandCodes(["Start Step"]) E_FormatStationNamesandCodes(["End Step"]) N_FormatStationNamesandCodes_Node0{"The system formats station
information for display"}:::decision N_FormatStationNamesandCodes_Node0_action["Station names and codes are
formatted according to business
display standards"]:::main N_FormatStationNamesandCodes_Node0 -- Yes --> N_FormatStationNamesandCodes_Node0_action N_FormatStationNamesandCodes_Node0_action --> E_FormatStationNamesandCodes S_FormatStationNamesandCodes --> N_FormatStationNamesandCodes_Node0 N_FormatStationNamesandCodes_Node0 -- No --> E_FormatStationNamesandCodes
File: GCX016E.cbl
GIVEN: Origin and destination station information has been retrieved
WHEN: The system formats station information for display
THEN:
  • Station names
  • Codes are formatted according to business display standards
βœ“ Consolidated Acceptance Criteria
  • The system processes disposition information for email content → disposition code details are retrieved from disposition code 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_RetrieveDispositionCodeDetails(["Start Step"]) E_RetrieveDispositionCodeDetails(["End Step"]) N_RetrieveDispositionCodeDetails_Node0{"The system processes disposition
information for email content"}:::decision N_RetrieveDispositionCodeDetails_Node0_action["Disposition code details are
retrieved from disposition code
tables"]:::main N_RetrieveDispositionCodeDetails_Node0 -- Yes --> N_RetrieveDispositionCodeDetails_Node0_action N_RetrieveDispositionCodeDetails_Node0_action --> E_RetrieveDispositionCodeDetails S_RetrieveDispositionCodeDetails --> N_RetrieveDispositionCodeDetails_Node0 N_RetrieveDispositionCodeDetails_Node0 -- No --> E_RetrieveDispositionCodeDetails
File: GCX016E.cbl
GIVEN: A cargo record contains disposition code reference
WHEN: The system processes disposition information for email content
THEN: Disposition code details are retrieved from disposition code tables
βœ“ Consolidated Acceptance Criteria
  • The system formats disposition information for display → disposition description is formatted according to business 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_FormatDispositionDescription(["Start Step"]) E_FormatDispositionDescription(["End Step"]) N_FormatDispositionDescription_Node0{"The system formats disposition
information for display"}:::decision N_FormatDispositionDescription_Node0_action["Disposition description is
formatted according to business
display standards"]:::main N_FormatDispositionDescription_Node0 -- Yes --> N_FormatDispositionDescription_Node0_action N_FormatDispositionDescription_Node0_action --> E_FormatDispositionDescription S_FormatDispositionDescription --> N_FormatDispositionDescription_Node0 N_FormatDispositionDescription_Node0 -- No --> E_FormatDispositionDescription
File: GCX016E.cbl
GIVEN: Disposition code details have been retrieved
WHEN: The system formats disposition information for display
THEN: Disposition description is formatted according to business display standards
βœ“ Consolidated Acceptance Criteria
  • The system processes timestamp information → current processing date and time are retrieved for email 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_GetProcessingDateandTime(["Start Step"]) E_GetProcessingDateandTime(["End Step"]) N_GetProcessingDateandTime_Node0{"The system processes timestamp
information"}:::decision N_GetProcessingDateandTime_Node0_action["Current processing date and time
are retrieved for email content"]:::main N_GetProcessingDateandTime_Node0 -- Yes --> N_GetProcessingDateandTime_Node0_action N_GetProcessingDateandTime_Node0_action --> E_GetProcessingDateandTime S_GetProcessingDateandTime --> N_GetProcessingDateandTime_Node0 N_GetProcessingDateandTime_Node0 -- No --> E_GetProcessingDateandTime
File: GCX016E.cbl
GIVEN: Email content is being created
WHEN: The system processes timestamp information
THEN:
  • Current processing date
  • Time are retrieved for email content
βœ“ Consolidated Acceptance Criteria
  • The system builds the email subject line → email subject line is constructed with relevant cargo and disposition 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_BuildEmailSubjectLine(["Start Step"]) E_BuildEmailSubjectLine(["End Step"]) N_BuildEmailSubjectLine_Node0{"The system builds the email subject
line"}:::decision N_BuildEmailSubjectLine_Node0_action["Email subject line is constructed
with relevant cargo and disposition
details"]:::main N_BuildEmailSubjectLine_Node0 -- Yes --> N_BuildEmailSubjectLine_Node0_action N_BuildEmailSubjectLine_Node0_action --> E_BuildEmailSubjectLine S_BuildEmailSubjectLine --> N_BuildEmailSubjectLine_Node0 N_BuildEmailSubjectLine_Node0 -- No --> E_BuildEmailSubjectLine
File: GCX016E.cbl
GIVEN: All cargo and disposition information has been retrieved and formatted
WHEN: The system builds the email subject line
THEN:
  • Email subject line is constructed with relevant cargo
  • Disposition details
βœ“ Consolidated Acceptance Criteria
  • The system creates the email header section → email header section is created with identification 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_CreateEmailHeaderSection(["Start Step"]) E_CreateEmailHeaderSection(["End Step"]) N_CreateEmailHeaderSection_Node0{"The system creates the email header
section"}:::decision N_CreateEmailHeaderSection_Node0_action["Email header section is created
with identification and routing
information"]:::main N_CreateEmailHeaderSection_Node0 -- Yes --> N_CreateEmailHeaderSection_Node0_action N_CreateEmailHeaderSection_Node0_action --> E_CreateEmailHeaderSection S_CreateEmailHeaderSection --> N_CreateEmailHeaderSection_Node0 N_CreateEmailHeaderSection_Node0 -- No --> E_CreateEmailHeaderSection
File: GCX016E.cbl
GIVEN: Email subject line has been constructed
WHEN: The system creates the email header section
THEN:
  • Email header section is created with identification
  • Routing information
βœ“ Consolidated Acceptance Criteria
  • The system adds equipment details to email content → equipment details section is added with car ID and equipment 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_AddEquipmentDetailsSection(["Start Step"]) E_AddEquipmentDetailsSection(["End Step"]) N_AddEquipmentDetailsSection_Node0{"The system adds equipment details
to email content"}:::decision N_AddEquipmentDetailsSection_Node0_action["Equipment details section is added
with car ID and equipment type
information"]:::main N_AddEquipmentDetailsSection_Node0 -- Yes --> N_AddEquipmentDetailsSection_Node0_action N_AddEquipmentDetailsSection_Node0_action --> E_AddEquipmentDetailsSection S_AddEquipmentDetailsSection --> N_AddEquipmentDetailsSection_Node0 N_AddEquipmentDetailsSection_Node0 -- No --> E_AddEquipmentDetailsSection
File: GCX016E.cbl
GIVEN: Email header section has been created and equipment information is formatted
WHEN: The system adds equipment details to email content
THEN:
  • Equipment details section is added with car id
  • Equipment type information
βœ“ Consolidated Acceptance Criteria
  • The system adds cargo information to email content → cargo information section is added with waybill, US-CCN, and content 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_AddCargoInformationSection(["Start Step"]) E_AddCargoInformationSection(["End Step"]) N_AddCargoInformationSection_Node0{"The system adds cargo information
to email content"}:::decision N_AddCargoInformationSection_Node0_action["Cargo information section is added
with waybill, US-CCN, and content
description"]:::main N_AddCargoInformationSection_Node0 -- Yes --> N_AddCargoInformationSection_Node0_action N_AddCargoInformationSection_Node0_action --> E_AddCargoInformationSection S_AddCargoInformationSection --> N_AddCargoInformationSection_Node0 N_AddCargoInformationSection_Node0 -- No --> E_AddCargoInformationSection
File: GCX016E.cbl
GIVEN: Equipment details section has been added and cargo information is available
WHEN: The system adds cargo information to email content
THEN: Cargo information section is added with waybill, US-CCN, and content description
βœ“ Consolidated Acceptance Criteria
  • The system adds station information to email content → station information section is added with origin and destination 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_AddStationInformationSection(["Start Step"]) E_AddStationInformationSection(["End Step"]) N_AddStationInformationSection_Node0{"The system adds station information
to email content"}:::decision N_AddStationInformationSection_Node0_action["Station information section is
added with origin and destination
station details"]:::main N_AddStationInformationSection_Node0 -- Yes --> N_AddStationInformationSection_Node0_action N_AddStationInformationSection_Node0_action --> E_AddStationInformationSection S_AddStationInformationSection --> N_AddStationInformationSection_Node0 N_AddStationInformationSection_Node0 -- No --> E_AddStationInformationSection
File: GCX016E.cbl
GIVEN: Cargo information section has been added and station information is formatted
WHEN: The system adds station information to email content
THEN:
  • Station information section is added with origin
  • Destination station details
βœ“ Consolidated Acceptance Criteria
  • The system adds disposition information to email content → disposition information section is added with disposition code and 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_AddDispositionInformationSection(["Start Step"]) E_AddDispositionInformationSection(["End Step"]) N_AddDispositionInformationSection_Node0{"The system adds disposition
information to email content"}:::decision N_AddDispositionInformationSection_Node0_action["Disposition information section is
added with disposition code and
description"]:::main N_AddDispositionInformationSection_Node0 -- Yes --> N_AddDispositionInformationSection_Node0_action N_AddDispositionInformationSection_Node0_action --> E_AddDispositionInformationSection S_AddDispositionInformationSection --> N_AddDispositionInformationSection_Node0 N_AddDispositionInformationSection_Node0 -- No --> E_AddDispositionInformationSection
File: GCX016E.cbl
GIVEN: Station information section has been added and disposition information is formatted
WHEN: The system adds disposition information to email content
THEN:
  • Disposition information section is added with disposition code
  • Description
βœ“ Consolidated Acceptance Criteria
  • The system adds timestamp to email content → processing timestamp is added to email content 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_AddProcessingTimestamp(["Start Step"]) E_AddProcessingTimestamp(["End Step"]) N_AddProcessingTimestamp_Node0{"The system adds timestamp to email
content"}:::decision N_AddProcessingTimestamp_Node0_action["Processing timestamp is added to
email content for tracking purposes"]:::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: GCX016E.cbl
GIVEN: Disposition information section has been added and processing date/time is available
WHEN: The system adds timestamp to email content
THEN: Processing timestamp is added to email content for tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system finalizes email content → email content is finalized with proper formatting and ready 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_FinalizeEmailContent(["Start Step"]) E_FinalizeEmailContent(["End Step"]) N_FinalizeEmailContent_Node0{"The system finalizes email content"}:::decision N_FinalizeEmailContent_Node0_action["Email content is finalized with
proper formatting and ready for
distribution"]:::main N_FinalizeEmailContent_Node0 -- Yes --> N_FinalizeEmailContent_Node0_action N_FinalizeEmailContent_Node0_action --> E_FinalizeEmailContent S_FinalizeEmailContent --> N_FinalizeEmailContent_Node0 N_FinalizeEmailContent_Node0 -- No --> E_FinalizeEmailContent
File: GCX016E.cbl
GIVEN: All email sections have been added including timestamp
WHEN: The system finalizes email content
THEN:
  • Email content is finalized with proper formatting
  • Ready for distribution
βœ“ Consolidated Acceptance Criteria
  • The system prepares email for distribution → email content is confirmed ready for distribution 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_EmailContentReadyforDistribution(["Start Step"]) E_EmailContentReadyforDistribution(["End Step"]) N_EmailContentReadyforDistribution_Node0{"The system prepares email for
distribution"}:::decision N_EmailContentReadyforDistribution_Node0_action["Email content is confirmed ready
for distribution to appropriate
recipients"]:::main N_EmailContentReadyforDistribution_Node0 -- Yes --> N_EmailContentReadyforDistribution_Node0_action N_EmailContentReadyforDistribution_Node0_action --> E_EmailContentReadyforDistribution S_EmailContentReadyforDistribution --> N_EmailContentReadyforDistribution_Node0 N_EmailContentReadyforDistribution_Node0 -- No --> E_EmailContentReadyforDistribution
File: GCX016E.cbl
GIVEN: Email content has been finalized
WHEN: The system prepares email for distribution
THEN: Email content is confirmed ready for distribution to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system validates the email recipients → the system determines if recipients are valid based on configuration and proceeds with email preparation or routes to default 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_ValidateEmailRecipients(["Start Step"]) E_ValidateEmailRecipients(["End Step"]) N_ValidateEmailRecipients_Node0{"The system validates the email
recipients"}:::decision N_ValidateEmailRecipients_Node0_action["The system determines if recipients
are valid based on configuration and
proceeds with email preparation or
routes to default recipient"]:::main N_ValidateEmailRecipients_Node0 -- Yes --> N_ValidateEmailRecipients_Node0_action N_ValidateEmailRecipients_Node0_action --> E_ValidateEmailRecipients S_ValidateEmailRecipients --> N_ValidateEmailRecipients_Node0 N_ValidateEmailRecipients_Node0 -- No --> E_ValidateEmailRecipients
File: GCX016E.cbl
GIVEN: An email distribution request is received with recipient information
WHEN: The system validates the email recipients
THEN:
  • The system determines if recipients are valid based on configuration
  • Proceeds with email preparation or routes to default recipient
βœ“ Consolidated Acceptance Criteria
  • The system attempts email delivery → the system executes email delivery process and returns delivery status
  • The system attempts email delivery → the email is transmitted to the freight forwarder's internet address if available, otherwise to the default Merlin 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_AttemptEmailDelivery(["Start Step"]) E_AttemptEmailDelivery(["End Step"]) N_AttemptEmailDelivery_Node0{"The system attempts email delivery"}:::decision N_AttemptEmailDelivery_Node0_action["The system executes email delivery
process and returns delivery status"]:::main N_AttemptEmailDelivery_Node0 -- Yes --> N_AttemptEmailDelivery_Node0_action N_AttemptEmailDelivery_Node0_action --> E_AttemptEmailDelivery S_AttemptEmailDelivery --> N_AttemptEmailDelivery_Node0 N_AttemptEmailDelivery_Node1{"The system attempts email delivery"}:::decision N_AttemptEmailDelivery_Node1_action["The email is transmitted to the
freight forwarder s internet address
if available, otherwise to the
default Merlin ID"]:::main N_AttemptEmailDelivery_Node1 -- Yes --> N_AttemptEmailDelivery_Node1_action N_AttemptEmailDelivery_Node1_action --> E_AttemptEmailDelivery N_AttemptEmailDelivery_Node0 -- No --> N_AttemptEmailDelivery_Node1 N_AttemptEmailDelivery_Node1 -- No --> E_AttemptEmailDelivery
File: GCX016E.cbl
GIVEN: Email message is prepared with valid recipients
WHEN: The system attempts email delivery
THEN:
  • The system executes email delivery process
  • Returns delivery status
File: GCX016E.cbl
GIVEN: Email message is prepared and delivery attempt is initialized
WHEN: The system attempts email delivery
THEN: The email is transmitted to the freight forwarder's internet address if available, otherwise to the default Merlin ID
βœ“ Consolidated Acceptance Criteria
  • The delivery is not successful → the system increments the retry counter to track delivery attempts
  • The system increments the retry counter → the retry counter is increased by one to track the current attempt 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_IncrementRetryCounter(["Start Step"]) E_IncrementRetryCounter(["End Step"]) N_IncrementRetryCounter_Node0{"The delivery is not successful"}:::decision N_IncrementRetryCounter_Node0_action["The system increments the retry
counter to track delivery attempts"]:::main N_IncrementRetryCounter_Node0 -- Yes --> N_IncrementRetryCounter_Node0_action N_IncrementRetryCounter_Node0_action --> E_IncrementRetryCounter S_IncrementRetryCounter --> N_IncrementRetryCounter_Node0 N_IncrementRetryCounter_Node1{"The system increments the retry
counter"}:::decision N_IncrementRetryCounter_Node1_action["The retry counter is increased by
one to track the current attempt
number"]:::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: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Email delivery attempt failed
WHEN: The delivery is not successful
THEN: The system increments the retry counter to track delivery attempts
File: GCX016E.cbl
GIVEN: Email delivery has failed
WHEN: The system increments the retry counter
THEN: The retry counter is increased by one to track the current attempt number
βœ“ Consolidated Acceptance Criteria
  • The system processes retry interval → the system waits for the configured retry interval before attempting delivery again
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_WaitforRetryInterval(["Start Step"]) E_WaitforRetryInterval(["End Step"]) N_WaitforRetryInterval_Node0{"The system processes retry interval"}:::decision N_WaitforRetryInterval_Node0_action["The system waits for the configured
retry interval before attempting
delivery again"]:::main N_WaitforRetryInterval_Node0 -- Yes --> N_WaitforRetryInterval_Node0_action N_WaitforRetryInterval_Node0_action --> E_WaitforRetryInterval S_WaitforRetryInterval --> N_WaitforRetryInterval_Node0 N_WaitforRetryInterval_Node0 -- No --> E_WaitforRetryInterval
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Email delivery failed and retry limit has not been reached
WHEN: The system processes retry interval
THEN: The system waits for the configured retry interval before attempting delivery again
βœ“ Consolidated Acceptance Criteria
  • The system routes to default recipient → the system sends the email to configured default recipient as fallback delivery 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_RoutetoDefaultRecipient(["Start Step"]) E_RoutetoDefaultRecipient(["End Step"]) N_RoutetoDefaultRecipient_Node0{"The system routes to default
recipient"}:::decision N_RoutetoDefaultRecipient_Node0_action["The system sends the email to
configured default recipient as
fallback delivery method"]:::main N_RoutetoDefaultRecipient_Node0 -- Yes --> N_RoutetoDefaultRecipient_Node0_action N_RoutetoDefaultRecipient_Node0_action --> E_RoutetoDefaultRecipient S_RoutetoDefaultRecipient --> N_RoutetoDefaultRecipient_Node0 N_RoutetoDefaultRecipient_Node0 -- No --> E_RoutetoDefaultRecipient
File: GCX016E.cbl
GIVEN: Email delivery has failed completely or recipients are invalid
WHEN: The system routes to default recipient
THEN: The system sends the email to configured default recipient as fallback delivery method
βœ“ Consolidated Acceptance Criteria
  • The system generates error notification → the system creates error notification message indicating the delivery issue and fallback action taken
  • The delivery fails → an error notification should be generated
  • The error handling process executes → an error notification is generated indicating the recipient validation failure
  • The system generates error notifications → error notifications are created with cargo details, error description, and recovery actions taken
  • The delivery is not successful → the system should generate an 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_GenerateErrorNotification(["Start Step"]) E_GenerateErrorNotification(["End Step"]) N_GenerateErrorNotification_Node0{"The system generates error
notification"}:::decision N_GenerateErrorNotification_Node0_action["The system creates error
notification message indicating the
delivery issue and fallback action
taken"]:::exclusion N_GenerateErrorNotification_Node0 -- Yes -->|Alternative| N_GenerateErrorNotification_Node0_action N_GenerateErrorNotification_Node0_action --> E_GenerateErrorNotification S_GenerateErrorNotification --> N_GenerateErrorNotification_Node0 N_GenerateErrorNotification_Node1{"The delivery fails"}:::decision N_GenerateErrorNotification_Node1_action["An error notification should be
generated"]:::main N_GenerateErrorNotification_Node1 -- Yes --> N_GenerateErrorNotification_Node1_action N_GenerateErrorNotification_Node1_action --> E_GenerateErrorNotification N_GenerateErrorNotification_Node0 -- No --> N_GenerateErrorNotification_Node1 N_GenerateErrorNotification_Node2{"The error handling process executes"}:::decision N_GenerateErrorNotification_Node2_action["An error notification is generated
indicating the recipient validation
failure"]:::exclusion N_GenerateErrorNotification_Node2 -- Yes -->|Alternative| N_GenerateErrorNotification_Node2_action N_GenerateErrorNotification_Node2_action --> E_GenerateErrorNotification N_GenerateErrorNotification_Node1 -- No --> N_GenerateErrorNotification_Node2 N_GenerateErrorNotification_Node3{"The system generates error
notifications"}:::decision N_GenerateErrorNotification_Node3_action["Error notifications are created
with cargo details, error
description, and recovery actions
taken"]:::exclusion N_GenerateErrorNotification_Node3 -- Yes -->|Alternative| N_GenerateErrorNotification_Node3_action N_GenerateErrorNotification_Node3_action --> E_GenerateErrorNotification N_GenerateErrorNotification_Node2 -- No --> N_GenerateErrorNotification_Node3 N_GenerateErrorNotification_Node4{"The delivery is not successful"}:::decision N_GenerateErrorNotification_Node4_action["The system should generate an error
notification"]:::main N_GenerateErrorNotification_Node4 -- Yes --> N_GenerateErrorNotification_Node4_action N_GenerateErrorNotification_Node4_action --> E_GenerateErrorNotification N_GenerateErrorNotification_Node3 -- No --> N_GenerateErrorNotification_Node4 N_GenerateErrorNotification_Node4 -- No --> E_GenerateErrorNotification
File: GCX016E.cbl
GIVEN: Email has been routed to default recipient due to delivery failure or invalid recipients
WHEN: The system generates error notification
THEN:
  • The system creates error notification message indicating the delivery issue
  • Fallback action taken
File: GCX016E.cbl
GIVEN: A message has been sent to a recipient's basket
WHEN: The delivery fails
THEN: An error notification should be generated
File: GCX016E.cbl
GIVEN: An invalid recipient was encountered during routing
WHEN: The error handling process executes
THEN: An error notification is generated indicating the recipient validation failure
File: GCX016E.cbl
GIVEN: Status restoration has been completed due to update errors
WHEN: The system generates error notifications
THEN: Error notifications are created with cargo details, error description, and recovery actions taken
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A message has been sent to a recipient
WHEN: The delivery is not successful
THEN: The system should generate an error notification
βœ“ Consolidated Acceptance Criteria
  • Debug logging is requested for status array processing → the system captures the current cargo status including RT10 and RT11 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_CaptureCurrentCargoStatus(["Start Step"]) E_CaptureCurrentCargoStatus(["End Step"]) N_CaptureCurrentCargoStatus_Node0{"Debug logging is requested for
status array processing"}:::decision N_CaptureCurrentCargoStatus_Node0_action["The system captures the current
cargo status including RT10 and RT11
status codes"]:::main N_CaptureCurrentCargoStatus_Node0 -- Yes --> N_CaptureCurrentCargoStatus_Node0_action N_CaptureCurrentCargoStatus_Node0_action --> E_CaptureCurrentCargoStatus S_CaptureCurrentCargoStatus --> N_CaptureCurrentCargoStatus_Node0 N_CaptureCurrentCargoStatus_Node0 -- No --> E_CaptureCurrentCargoStatus
File: GCX016E.cbl
GIVEN: A cargo record exists with status information
WHEN: Debug logging is requested for status array processing
THEN:
  • The system captures the current cargo status including rt10
  • Rt11 status codes
βœ“ Consolidated Acceptance Criteria
  • Creating debug log entries for cargo status → the system records RT10 and RT11 status information for inclusion in debug 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_RecordRT10RT11StatusInformation(["Start Step"]) E_RecordRT10RT11StatusInformation(["End Step"]) N_RecordRT10RT11StatusInformation_Node0{"Creating debug log entries for
cargo status"}:::decision N_RecordRT10RT11StatusInformation_Node0_action["The system records RT10 and RT11
status information for inclusion in
debug output"]:::main N_RecordRT10RT11StatusInformation_Node0 -- Yes --> N_RecordRT10RT11StatusInformation_Node0_action N_RecordRT10RT11StatusInformation_Node0_action --> E_RecordRT10RT11StatusInformation S_RecordRT10RT11StatusInformation --> N_RecordRT10RT11StatusInformation_Node0 N_RecordRT10RT11StatusInformation_Node0 -- No --> E_RecordRT10RT11StatusInformation
File: GCX016E.cbl
GIVEN: Cargo status information is available in RT10 and RT11 fields
WHEN: Creating debug log entries for cargo status
THEN:
  • The system records rt10
  • Rt11 status information for inclusion in debug output
βœ“ Consolidated Acceptance Criteria
  • Debug logging is performed for cargo status changes → the system logs cargo quantities and totals including 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_LogCargoQuantitiesandTotals(["Start Step"]) E_LogCargoQuantitiesandTotals(["End Step"]) N_LogCargoQuantitiesandTotals_Node0{"Debug logging is performed for
cargo status changes"}:::decision N_LogCargoQuantitiesandTotals_Node0_action["The system logs cargo quantities
and totals including released
quantities"]:::main N_LogCargoQuantitiesandTotals_Node0 -- Yes --> N_LogCargoQuantitiesandTotals_Node0_action N_LogCargoQuantitiesandTotals_Node0_action --> E_LogCargoQuantitiesandTotals S_LogCargoQuantitiesandTotals --> N_LogCargoQuantitiesandTotals_Node0 N_LogCargoQuantitiesandTotals_Node0 -- No --> E_LogCargoQuantitiesandTotals
File: GCX016E.cbl
GIVEN: Cargo record contains quantity information
WHEN: Debug logging is performed for cargo status changes
THEN:
  • The system logs cargo quantities
  • Totals including released quantities
βœ“ Consolidated Acceptance Criteria
  • Debug logging is requested for status array processing → the system dumps all S09A status array contents including disposition codes, quantities, and sequence 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_DumpS09AStatusArrayContents(["Start Step"]) E_DumpS09AStatusArrayContents(["End Step"]) N_DumpS09AStatusArrayContents_Node0{"Debug logging is requested for
status array processing"}:::decision N_DumpS09AStatusArrayContents_Node0_action["The system dumps all S09A status
array contents including disposition
codes, quantities, and sequence
information"]:::main N_DumpS09AStatusArrayContents_Node0 -- Yes --> N_DumpS09AStatusArrayContents_Node0_action N_DumpS09AStatusArrayContents_Node0_action --> E_DumpS09AStatusArrayContents S_DumpS09AStatusArrayContents --> N_DumpS09AStatusArrayContents_Node0 N_DumpS09AStatusArrayContents_Node0 -- No --> E_DumpS09AStatusArrayContents
File: GCX016E.cbl
GIVEN: S09A status array contains disposition code information
WHEN: Debug logging is requested for status array processing
THEN: The system dumps all S09A status array contents including disposition codes, quantities, and sequence information
βœ“ Consolidated Acceptance Criteria
  • Creating debug log for status processing → the system records all disposition codes with their 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_RecordAllDispositionCodes(["Start Step"]) E_RecordAllDispositionCodes(["End Step"]) N_RecordAllDispositionCodes_Node0{"Creating debug log for status
processing"}:::decision N_RecordAllDispositionCodes_Node0_action["The system records all disposition
codes with their associated details"]:::main N_RecordAllDispositionCodes_Node0 -- Yes --> N_RecordAllDispositionCodes_Node0_action N_RecordAllDispositionCodes_Node0_action --> E_RecordAllDispositionCodes S_RecordAllDispositionCodes --> N_RecordAllDispositionCodes_Node0 N_RecordAllDispositionCodes_Node0 -- No --> E_RecordAllDispositionCodes
File: GCX016E.cbl
GIVEN: Cargo status array contains disposition codes
WHEN: Creating debug log for status processing
THEN: The system records all disposition codes with their associated details
βœ“ Consolidated Acceptance Criteria
  • Debug logging is enabled for status array changes → the system creates a before processing snapshot of all 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_CreateBeforeProcessingSnapshot(["Start Step"]) E_CreateBeforeProcessingSnapshot(["End Step"]) N_CreateBeforeProcessingSnapshot_Node0{"Debug logging is enabled for status
array changes"}:::decision N_CreateBeforeProcessingSnapshot_Node0_action["The system creates a before
processing snapshot of all cargo
status information"]:::main N_CreateBeforeProcessingSnapshot_Node0 -- Yes --> N_CreateBeforeProcessingSnapshot_Node0_action N_CreateBeforeProcessingSnapshot_Node0_action --> E_CreateBeforeProcessingSnapshot S_CreateBeforeProcessingSnapshot --> N_CreateBeforeProcessingSnapshot_Node0 N_CreateBeforeProcessingSnapshot_Node0 -- No --> E_CreateBeforeProcessingSnapshot
File: GCX016E.cbl
GIVEN: Cargo status information exists before processing
WHEN: Debug logging is enabled for status array changes
THEN: The system creates a before processing snapshot of all cargo status information
βœ“ Consolidated Acceptance Criteria
  • Debug logging is enabled for status array changes → the system creates an after processing snapshot of all 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_CreateAfterProcessingSnapshot(["Start Step"]) E_CreateAfterProcessingSnapshot(["End Step"]) N_CreateAfterProcessingSnapshot_Node0{"Debug logging is enabled for status
array changes"}:::decision N_CreateAfterProcessingSnapshot_Node0_action["The system creates an after
processing snapshot of all cargo
status information"]:::main N_CreateAfterProcessingSnapshot_Node0 -- Yes --> N_CreateAfterProcessingSnapshot_Node0_action N_CreateAfterProcessingSnapshot_Node0_action --> E_CreateAfterProcessingSnapshot S_CreateAfterProcessingSnapshot --> N_CreateAfterProcessingSnapshot_Node0 N_CreateAfterProcessingSnapshot_Node0 -- No --> E_CreateAfterProcessingSnapshot
File: GCX016E.cbl
GIVEN: Cargo status processing has been completed
WHEN: Debug logging is enabled for status array changes
THEN: The system creates an after processing snapshot of all cargo status information
βœ“ Consolidated Acceptance Criteria
  • Debug analysis is performed on status changes → the system compares the snapshots and identifies all status changes that 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_CompareStatusChanges(["Start Step"]) E_CompareStatusChanges(["End Step"]) N_CompareStatusChanges_Node0{"Debug analysis is performed on
status changes"}:::decision N_CompareStatusChanges_Node0_action["The system compares the snapshots
and identifies all status changes
that occurred"]:::main N_CompareStatusChanges_Node0 -- Yes --> N_CompareStatusChanges_Node0_action N_CompareStatusChanges_Node0_action --> E_CompareStatusChanges S_CompareStatusChanges --> N_CompareStatusChanges_Node0 N_CompareStatusChanges_Node0 -- No --> E_CompareStatusChanges
File: GCX016E.cbl
GIVEN: Before and after processing snapshots exist
WHEN: Debug analysis is performed on status changes
THEN:
  • The system compares the snapshots
  • Identifies all status changes that occurred
βœ“ Consolidated Acceptance Criteria
  • Creating debug output message → the system formats all debug information into a structured message format
  • The system prepares debug output → debug information is formatted into a structured message containing header, before/after status, and comparison 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_FormatDebugMessageContent(["Start Step"]) E_FormatDebugMessageContent(["End Step"]) N_FormatDebugMessageContent_Node0{"Creating debug output message"}:::decision N_FormatDebugMessageContent_Node0_action["The system formats all debug
information into a structured
message format"]:::main N_FormatDebugMessageContent_Node0 -- Yes --> N_FormatDebugMessageContent_Node0_action N_FormatDebugMessageContent_Node0_action --> E_FormatDebugMessageContent S_FormatDebugMessageContent --> N_FormatDebugMessageContent_Node0 N_FormatDebugMessageContent_Node1{"The system prepares debug output"}:::decision N_FormatDebugMessageContent_Node1_action["Debug information is formatted into
a structured message containing
header, beforeafter status, and
comparison data"]:::main N_FormatDebugMessageContent_Node1 -- Yes --> N_FormatDebugMessageContent_Node1_action N_FormatDebugMessageContent_Node1_action --> E_FormatDebugMessageContent N_FormatDebugMessageContent_Node0 -- No --> N_FormatDebugMessageContent_Node1 N_FormatDebugMessageContent_Node1 -- No --> E_FormatDebugMessageContent
File: GCX016E.cbl
GIVEN: Debug information has been captured from status processing
WHEN: Creating debug output message
THEN: The system formats all debug information into a structured message format
File: GCX016E.cbl
GIVEN: All debug information has been captured
WHEN: The system prepares debug output
THEN: Debug information is formatted into a structured message containing header, before/after status, and comparison data
βœ“ Consolidated Acceptance Criteria
  • Debug message routing is initiated → the system routes the debug message to appropriate recipients for review
  • The system processes debug message routing → debug messages are routed to designated Merlin recipients for troubleshooting support
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RouteDebugMessagetoRecipients(["Start Step"]) E_RouteDebugMessagetoRecipients(["End Step"]) N_RouteDebugMessagetoRecipients_Node0{"Debug message routing is initiated"}:::decision N_RouteDebugMessagetoRecipients_Node0_action["The system routes the debug message
to appropriate recipients for review"]:::main N_RouteDebugMessagetoRecipients_Node0 -- Yes --> N_RouteDebugMessagetoRecipients_Node0_action N_RouteDebugMessagetoRecipients_Node0_action --> E_RouteDebugMessagetoRecipients S_RouteDebugMessagetoRecipients --> N_RouteDebugMessagetoRecipients_Node0 N_RouteDebugMessagetoRecipients_Node1{"The system processes debug message
routing"}:::decision N_RouteDebugMessagetoRecipients_Node1_action["Debug messages are routed to
designated Merlin recipients for
troubleshooting support"]:::main N_RouteDebugMessagetoRecipients_Node1 -- Yes --> N_RouteDebugMessagetoRecipients_Node1_action N_RouteDebugMessagetoRecipients_Node1_action --> E_RouteDebugMessagetoRecipients N_RouteDebugMessagetoRecipients_Node0 -- No --> N_RouteDebugMessagetoRecipients_Node1 N_RouteDebugMessagetoRecipients_Node1 -- No --> E_RouteDebugMessagetoRecipients
File: GCX016E.cbl
GIVEN: Debug message has been formatted with all required information
WHEN: Debug message routing is initiated
THEN: The system routes the debug message to appropriate recipients for review
File: GCX016E.cbl
GIVEN: Debug message has been formatted and is ready for distribution
WHEN: The system processes debug message routing
THEN: Debug messages are routed to designated Merlin recipients for troubleshooting support
βœ“ Consolidated Acceptance Criteria
  • Sending debug message through Merlin system → the system sends the debug message through Merlin message distribution for 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_SendtoMerlinMessageDistribution(["Start Step"]) E_SendtoMerlinMessageDistribution(["End Step"]) N_SendtoMerlinMessageDistribution_Node0{"Sending debug message through
Merlin system"}:::decision N_SendtoMerlinMessageDistribution_Node0_action["The system sends the debug message
through Merlin message distribution
for delivery"]:::main N_SendtoMerlinMessageDistribution_Node0 -- Yes --> N_SendtoMerlinMessageDistribution_Node0_action N_SendtoMerlinMessageDistribution_Node0_action --> E_SendtoMerlinMessageDistribution S_SendtoMerlinMessageDistribution --> N_SendtoMerlinMessageDistribution_Node0 N_SendtoMerlinMessageDistribution_Node0 -- No --> E_SendtoMerlinMessageDistribution
File: GCX016E.cbl
GIVEN: Debug message is ready for distribution
WHEN: Sending debug message through Merlin system
THEN: The system sends the debug message through Merlin message distribution for delivery
βœ“ Consolidated Acceptance Criteria
  • The message type is ERROR → the message should be routed to the IN destination
  • The message type is ERROR → the message should be routed to the 'IN' 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_RouteERRORMessage(["Start Step"]) E_RouteERRORMessage(["End Step"]) N_RouteERRORMessage_Node0{"The message type is ERROR"}:::decision N_RouteERRORMessage_Node0_action["The message should be routed to the
IN destination"]:::exclusion N_RouteERRORMessage_Node0 -- Yes -->|Alternative| N_RouteERRORMessage_Node0_action N_RouteERRORMessage_Node0_action --> E_RouteERRORMessage S_RouteERRORMessage --> N_RouteERRORMessage_Node0 N_RouteERRORMessage_Node1{"The message type is ERROR"}:::decision N_RouteERRORMessage_Node1_action["The message should be routed to the
IN destination"]:::exclusion N_RouteERRORMessage_Node1 -- Yes -->|Alternative| N_RouteERRORMessage_Node1_action N_RouteERRORMessage_Node1_action --> E_RouteERRORMessage N_RouteERRORMessage_Node0 -- No --> N_RouteERRORMessage_Node1 N_RouteERRORMessage_Node1 -- No --> E_RouteERRORMessage
File: GCX016E.cbl
GIVEN: A Merlin message has been generated
WHEN: The message type is ERROR
THEN: The message should be routed to the IN destination
File: GCX016E.cbl
GIVEN: A Merlin message needs to be delivered
WHEN: The message type is ERROR
THEN: The message should be routed to the 'IN' destination
βœ“ Consolidated Acceptance Criteria
  • The message type is INFO → the message should be routed to the IN destination and all SD segment Merlin IDs
  • The message type is INFO → the message should be routed to 'IN' destination plus SD segment 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_RouteINFOMessage(["Start Step"]) E_RouteINFOMessage(["End Step"]) N_RouteINFOMessage_Node0{"The message type is INFO"}:::decision N_RouteINFOMessage_Node0_action["The message should be routed to the
IN destination and all SD segment
Merlin IDs"]:::main N_RouteINFOMessage_Node0 -- Yes --> N_RouteINFOMessage_Node0_action N_RouteINFOMessage_Node0_action --> E_RouteINFOMessage S_RouteINFOMessage --> N_RouteINFOMessage_Node0 N_RouteINFOMessage_Node1{"The message type is INFO"}:::decision N_RouteINFOMessage_Node1_action["The message should be routed to IN
destination plus SD segment Merlin
IDs"]:::main N_RouteINFOMessage_Node1 -- Yes --> N_RouteINFOMessage_Node1_action N_RouteINFOMessage_Node1_action --> E_RouteINFOMessage N_RouteINFOMessage_Node0 -- No --> N_RouteINFOMessage_Node1 N_RouteINFOMessage_Node1 -- No --> E_RouteINFOMessage
File: GCX016E.cbl
GIVEN: A Merlin message has been generated with SD segment recipient information
WHEN: The message type is INFO
THEN:
  • The message should be routed to the in destination
  • All sd segment merlin ids
File: GCX016E.cbl
GIVEN: A Merlin message needs to be delivered
WHEN: The message type is INFO
THEN: The message should be routed to 'IN' destination plus SD segment Merlin IDs
βœ“ Consolidated Acceptance Criteria
  • The message type is RELEASE → the message should be routed only to SD segment Merlin IDs
  • The message type is RELEASE → the message should be routed to SD segment 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_RouteRELEASEMessage(["Start Step"]) E_RouteRELEASEMessage(["End Step"]) N_RouteRELEASEMessage_Node0{"The message type is RELEASE"}:::decision N_RouteRELEASEMessage_Node0_action["The message should be routed only
to SD segment Merlin IDs"]:::main N_RouteRELEASEMessage_Node0 -- Yes --> N_RouteRELEASEMessage_Node0_action N_RouteRELEASEMessage_Node0_action --> E_RouteRELEASEMessage S_RouteRELEASEMessage --> N_RouteRELEASEMessage_Node0 N_RouteRELEASEMessage_Node1{"The message type is RELEASE"}:::decision N_RouteRELEASEMessage_Node1_action["The message should be routed to SD
segment Merlin IDs only"]:::main N_RouteRELEASEMessage_Node1 -- Yes --> N_RouteRELEASEMessage_Node1_action N_RouteRELEASEMessage_Node1_action --> E_RouteRELEASEMessage N_RouteRELEASEMessage_Node0 -- No --> N_RouteRELEASEMessage_Node1 N_RouteRELEASEMessage_Node1 -- No --> E_RouteRELEASEMessage
File: GCX016E.cbl
GIVEN: A Merlin message has been generated with SD segment recipient information
WHEN: The message type is RELEASE
THEN: The message should be routed only to SD segment Merlin IDs
File: GCX016E.cbl
GIVEN: A Merlin message needs to be delivered
WHEN: The message type is RELEASE
THEN: The message should be routed to SD segment Merlin IDs only
βœ“ Consolidated Acceptance Criteria
  • The message type is EXPORT → the message should be routed based on equipment type routing rules
  • The message type is EXPORT → the message should be routed based on equipment type 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_RouteEXPORTMessage(["Start Step"]) E_RouteEXPORTMessage(["End Step"]) N_RouteEXPORTMessage_Node0{"The message type is EXPORT"}:::decision N_RouteEXPORTMessage_Node0_action["The message should be routed based
on equipment type routing rules"]:::main N_RouteEXPORTMessage_Node0 -- Yes --> N_RouteEXPORTMessage_Node0_action N_RouteEXPORTMessage_Node0_action --> E_RouteEXPORTMessage S_RouteEXPORTMessage --> N_RouteEXPORTMessage_Node0 N_RouteEXPORTMessage_Node1{"The message type is EXPORT"}:::decision N_RouteEXPORTMessage_Node1_action["The message should be routed based
on equipment type settings"]:::main N_RouteEXPORTMessage_Node1 -- Yes --> N_RouteEXPORTMessage_Node1_action N_RouteEXPORTMessage_Node1_action --> E_RouteEXPORTMessage N_RouteEXPORTMessage_Node0 -- No --> N_RouteEXPORTMessage_Node1 N_RouteEXPORTMessage_Node1 -- No --> E_RouteEXPORTMessage
File: GCX016E.cbl
GIVEN: A Merlin message has been generated for an export transaction with equipment information
WHEN: The message type is EXPORT
THEN: The message should be routed based on equipment type routing rules
File: GCX016E.cbl
GIVEN: A Merlin message needs to be delivered
WHEN: The message type is EXPORT
THEN: The message should be routed based on equipment type settings
βœ“ Consolidated Acceptance Criteria
  • The message type is UNRLSE → the message should be routed to OM01247 and all SD segment cancel Merlin IDs
  • The message type is UNRLSE → the message should be routed to OM01247 plus SD cancel 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_RouteUNRLSEMessage(["Start Step"]) E_RouteUNRLSEMessage(["End Step"]) N_RouteUNRLSEMessage_Node0{"The message type is UNRLSE"}:::decision N_RouteUNRLSEMessage_Node0_action["The message should be routed to
OM01247 and all SD segment cancel
Merlin IDs"]:::main N_RouteUNRLSEMessage_Node0 -- Yes --> N_RouteUNRLSEMessage_Node0_action N_RouteUNRLSEMessage_Node0_action --> E_RouteUNRLSEMessage S_RouteUNRLSEMessage --> N_RouteUNRLSEMessage_Node0 N_RouteUNRLSEMessage_Node1{"The message type is UNRLSE"}:::decision N_RouteUNRLSEMessage_Node1_action["The message should be routed to
OM01247 plus SD cancel Merlin IDs"]:::main N_RouteUNRLSEMessage_Node1 -- Yes --> N_RouteUNRLSEMessage_Node1_action N_RouteUNRLSEMessage_Node1_action --> E_RouteUNRLSEMessage N_RouteUNRLSEMessage_Node0 -- No --> N_RouteUNRLSEMessage_Node1 N_RouteUNRLSEMessage_Node1 -- No --> E_RouteUNRLSEMessage
File: GCX016E.cbl
GIVEN: A Merlin message has been generated with SD segment cancel recipient information
WHEN: The message type is UNRLSE
THEN:
  • The message should be routed to om01247
  • All sd segment cancel merlin ids
File: GCX016E.cbl
GIVEN: A Merlin message needs to be delivered
WHEN: The message type is UNRLSE
THEN: The message should be routed to OM01247 plus SD cancel Merlin IDs
βœ“ Consolidated Acceptance Criteria
  • The message type is ARRCANL → the message should be routed to configured arrival cancellation recipients
  • The message type is ARRCANL → the message should be routed to arrival cancellation 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_RouteARRCANLMessage(["Start Step"]) E_RouteARRCANLMessage(["End Step"]) N_RouteARRCANLMessage_Node0{"The message type is ARRCANL"}:::decision N_RouteARRCANLMessage_Node0_action["The message should be routed to
configured arrival cancellation
recipients"]:::main N_RouteARRCANLMessage_Node0 -- Yes --> N_RouteARRCANLMessage_Node0_action N_RouteARRCANLMessage_Node0_action --> E_RouteARRCANLMessage S_RouteARRCANLMessage --> N_RouteARRCANLMessage_Node0 N_RouteARRCANLMessage_Node1{"The message type is ARRCANL"}:::decision N_RouteARRCANLMessage_Node1_action["The message should be routed to
arrival cancellation recipients"]:::main N_RouteARRCANLMessage_Node1 -- Yes --> N_RouteARRCANLMessage_Node1_action N_RouteARRCANLMessage_Node1_action --> E_RouteARRCANLMessage N_RouteARRCANLMessage_Node0 -- No --> N_RouteARRCANLMessage_Node1 N_RouteARRCANLMessage_Node1 -- No --> E_RouteARRCANLMessage
File: GCX016E.cbl
GIVEN: A Merlin message has been generated for arrival cancellation
WHEN: The message type is ARRCANL
THEN: The message should be routed to configured arrival cancellation recipients
File: GCX016E.cbl
GIVEN: A Merlin message needs to be delivered
WHEN: The message type is ARRCANL
THEN: The message should be routed to arrival cancellation recipients
βœ“ Consolidated Acceptance Criteria
  • Recipient determination is required → the system should check AD segment configuration for valid recipients
  • The system needs to identify message recipients → the AD segment configuration should be checked to find valid recipient 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_CheckADSegmentConfiguration(["Start Step"]) E_CheckADSegmentConfiguration(["End Step"]) N_CheckADSegmentConfiguration_Node0{"Recipient determination is required"}:::decision N_CheckADSegmentConfiguration_Node0_action["The system should check AD segment
configuration for valid recipients"]:::main N_CheckADSegmentConfiguration_Node0 -- Yes --> N_CheckADSegmentConfiguration_Node0_action N_CheckADSegmentConfiguration_Node0_action --> E_CheckADSegmentConfiguration S_CheckADSegmentConfiguration --> N_CheckADSegmentConfiguration_Node0 N_CheckADSegmentConfiguration_Node1{"The system needs to identify
message recipients"}:::decision N_CheckADSegmentConfiguration_Node1_action["The AD segment configuration should
be checked to find valid recipient
Merlin IDs"]:::main N_CheckADSegmentConfiguration_Node1 -- Yes --> N_CheckADSegmentConfiguration_Node1_action N_CheckADSegmentConfiguration_Node1_action --> E_CheckADSegmentConfiguration N_CheckADSegmentConfiguration_Node0 -- No --> N_CheckADSegmentConfiguration_Node1 N_CheckADSegmentConfiguration_Node1 -- No --> E_CheckADSegmentConfiguration
File: GCX016E.cbl
GIVEN: A message needs to be distributed
WHEN: Recipient determination is required
THEN: The system should check AD segment configuration for valid recipients
File: GCX016E.cbl
GIVEN: A message type has been determined for a Merlin message
WHEN: The system needs to identify message recipients
THEN: The AD segment configuration should be checked to find valid recipient Merlin IDs
βœ“ Consolidated Acceptance Criteria
  • A valid recipient is found in the configuration → the configured recipient should be used for message delivery
  • The system finalizes recipient selection → the system uses the configured recipient from the AD segment for message delivery
  • The recipient validation passes successfully → the system uses the configured recipient 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_UseConfiguredRecipient(["Start Step"]) E_UseConfiguredRecipient(["End Step"]) N_UseConfiguredRecipient_Node0{"A valid recipient is found in the
configuration"}:::decision N_UseConfiguredRecipient_Node0_action["The configured recipient should be
used for message delivery"]:::main N_UseConfiguredRecipient_Node0 -- Yes --> N_UseConfiguredRecipient_Node0_action N_UseConfiguredRecipient_Node0_action --> E_UseConfiguredRecipient S_UseConfiguredRecipient --> N_UseConfiguredRecipient_Node0 N_UseConfiguredRecipient_Node1{"The system finalizes recipient
selection"}:::decision N_UseConfiguredRecipient_Node1_action["The system uses the configured
recipient from the AD segment for
message delivery"]:::main N_UseConfiguredRecipient_Node1 -- Yes --> N_UseConfiguredRecipient_Node1_action N_UseConfiguredRecipient_Node1_action --> E_UseConfiguredRecipient N_UseConfiguredRecipient_Node0 -- No --> N_UseConfiguredRecipient_Node1 N_UseConfiguredRecipient_Node2{"The recipient validation passes
successfully"}:::decision N_UseConfiguredRecipient_Node2_action["The system uses the configured
recipient for message delivery"]:::main N_UseConfiguredRecipient_Node2 -- Yes --> N_UseConfiguredRecipient_Node2_action N_UseConfiguredRecipient_Node2_action --> E_UseConfiguredRecipient N_UseConfiguredRecipient_Node1 -- No --> N_UseConfiguredRecipient_Node2 N_UseConfiguredRecipient_Node2 -- No --> E_UseConfiguredRecipient
File: GCX016E.cbl
GIVEN: AD segment configuration has been checked
WHEN: A valid recipient is found in the configuration
THEN: The configured recipient should be used for message delivery
File: GCX016E.cbl
GIVEN: The recipient identifier has passed format validation
WHEN: The system finalizes recipient selection
THEN: The system uses the configured recipient from the AD segment for message delivery
File: GCX016E.cbl
GIVEN: A Merlin message has a valid recipient configured in the AD segment
WHEN: The recipient validation passes successfully
THEN: The system uses the configured recipient for message delivery
βœ“ Consolidated Acceptance Criteria
  • No valid recipient is found in the configuration → the default recipient OM01247 should be used for message delivery
  • The recipient is not valid → the system should use default recipient OM01247
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UseDefaultRecipientOM01247(["Start Step"]) E_UseDefaultRecipientOM01247(["End Step"]) N_UseDefaultRecipientOM01247_Node0{"No valid recipient is found in the
configuration"}:::decision N_UseDefaultRecipientOM01247_Node0_action["The default recipient OM01247
should be used for message delivery"]:::main N_UseDefaultRecipientOM01247_Node0 -- Yes --> N_UseDefaultRecipientOM01247_Node0_action N_UseDefaultRecipientOM01247_Node0_action --> E_UseDefaultRecipientOM01247 S_UseDefaultRecipientOM01247 --> N_UseDefaultRecipientOM01247_Node0 N_UseDefaultRecipientOM01247_Node1{"The recipient is not valid"}:::decision N_UseDefaultRecipientOM01247_Node1_action["The system should use default
recipient OM01247"]:::main N_UseDefaultRecipientOM01247_Node1 -- Yes --> N_UseDefaultRecipientOM01247_Node1_action N_UseDefaultRecipientOM01247_Node1_action --> E_UseDefaultRecipientOM01247 N_UseDefaultRecipientOM01247_Node0 -- No --> N_UseDefaultRecipientOM01247_Node1 N_UseDefaultRecipientOM01247_Node1 -- No --> E_UseDefaultRecipientOM01247
File: GCX016E.cbl
GIVEN: AD segment configuration has been checked
WHEN: No valid recipient is found in the configuration
THEN: The default recipient OM01247 should be used for message delivery
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A message recipient has been determined
WHEN: The recipient is not valid
THEN: The system should use default recipient OM01247
βœ“ Consolidated Acceptance Criteria
  • Message delivery is initiated → the message should be sent to the recipient's designated 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_SendMessagetoBasket(["Start Step"]) E_SendMessagetoBasket(["End Step"]) N_SendMessagetoBasket_Node0{"Message delivery is initiated"}:::decision N_SendMessagetoBasket_Node0_action["The message should be sent to the
recipient s designated basket"]:::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: GCX016E.cbl
GIVEN: A message recipient has been determined
WHEN: Message delivery is initiated
THEN: The message should be sent to the recipient's designated basket
βœ“ Consolidated Acceptance Criteria
  • The delivery is successful → the system should confirm successful message delivery
  • The delivery is determined to be successful → the system marks the message as delivered successfully and 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_MessageDeliveredSuccessfully(["Start Step"]) E_MessageDeliveredSuccessfully(["End Step"]) N_MessageDeliveredSuccessfully_Node0{"The delivery is successful"}:::decision N_MessageDeliveredSuccessfully_Node0_action["The system should confirm
successful message delivery"]:::main N_MessageDeliveredSuccessfully_Node0 -- Yes --> N_MessageDeliveredSuccessfully_Node0_action N_MessageDeliveredSuccessfully_Node0_action --> E_MessageDeliveredSuccessfully S_MessageDeliveredSuccessfully --> N_MessageDeliveredSuccessfully_Node0 N_MessageDeliveredSuccessfully_Node1{"The delivery is determined to be
successful"}:::decision N_MessageDeliveredSuccessfully_Node1_action["The system marks the message as
delivered successfully and completes
the process"]:::main N_MessageDeliveredSuccessfully_Node1 -- Yes --> N_MessageDeliveredSuccessfully_Node1_action N_MessageDeliveredSuccessfully_Node1_action --> E_MessageDeliveredSuccessfully N_MessageDeliveredSuccessfully_Node0 -- No --> N_MessageDeliveredSuccessfully_Node1 N_MessageDeliveredSuccessfully_Node1 -- No --> E_MessageDeliveredSuccessfully
File: GCX016E.cbl
GIVEN: A message has been sent to a recipient's basket
WHEN: The delivery is successful
THEN: The system should confirm successful message delivery
File: GCX016E.cbl
GIVEN: A Merlin message delivery attempt has been completed
WHEN: The delivery is determined to be successful
THEN:
  • The system marks the message as delivered successfully
  • Completes the process
βœ“ Consolidated Acceptance Criteria
  • Rerouting is attempted → the message should be rerouted to the default recipient
  • The system implements fallback notification procedures → the system reroutes the notification to default recipients (AEI9999, OM01247) to ensure notification delivery
  • The system initiates the retry process → the message should be rerouted to the default recipient as a fallback delivery method
  • Rerouting is attempted → the message should be sent to the default 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_ReroutetoDefaultRecipient(["Start Step"]) E_ReroutetoDefaultRecipient(["End Step"]) N_ReroutetoDefaultRecipient_Node0{"Rerouting is attempted"}:::decision N_ReroutetoDefaultRecipient_Node0_action["The message should be rerouted to
the default recipient"]:::main N_ReroutetoDefaultRecipient_Node0 -- Yes --> N_ReroutetoDefaultRecipient_Node0_action N_ReroutetoDefaultRecipient_Node0_action --> E_ReroutetoDefaultRecipient S_ReroutetoDefaultRecipient --> N_ReroutetoDefaultRecipient_Node0 N_ReroutetoDefaultRecipient_Node1{"The system implements fallback
notification procedures"}:::decision N_ReroutetoDefaultRecipient_Node1_action["The system reroutes the
notification to default recipients
AEI9999, OM01247 to ensure
notification delivery"]:::main N_ReroutetoDefaultRecipient_Node1 -- Yes --> N_ReroutetoDefaultRecipient_Node1_action N_ReroutetoDefaultRecipient_Node1_action --> E_ReroutetoDefaultRecipient N_ReroutetoDefaultRecipient_Node0 -- No --> N_ReroutetoDefaultRecipient_Node1 N_ReroutetoDefaultRecipient_Node2{"The system initiates the retry
process"}:::decision N_ReroutetoDefaultRecipient_Node2_action["The message should be rerouted to
the default recipient as a fallback
delivery method"]:::main N_ReroutetoDefaultRecipient_Node2 -- Yes --> N_ReroutetoDefaultRecipient_Node2_action N_ReroutetoDefaultRecipient_Node2_action --> E_ReroutetoDefaultRecipient N_ReroutetoDefaultRecipient_Node1 -- No --> N_ReroutetoDefaultRecipient_Node2 N_ReroutetoDefaultRecipient_Node3{"Rerouting is attempted"}:::decision N_ReroutetoDefaultRecipient_Node3_action["The message should be sent to the
default recipient"]:::main N_ReroutetoDefaultRecipient_Node3 -- Yes --> N_ReroutetoDefaultRecipient_Node3_action N_ReroutetoDefaultRecipient_Node3_action --> E_ReroutetoDefaultRecipient N_ReroutetoDefaultRecipient_Node2 -- No --> N_ReroutetoDefaultRecipient_Node3 N_ReroutetoDefaultRecipient_Node3 -- No --> E_ReroutetoDefaultRecipient
File: GCX016E.cbl
GIVEN: A message delivery has failed and an error notification has been generated
WHEN: Rerouting is attempted
THEN: The message should be rerouted to the default recipient
File: GCX016E.cbl
GIVEN: Email delivery has failed and alternative handling has been initiated
WHEN: The system implements fallback notification procedures
THEN: The system reroutes the notification to default recipients (AEI9999, OM01247) to ensure notification delivery
File: GCX016E.cbl
GIVEN: A delivery failure has occurred and retry is required
WHEN: The system initiates the retry process
THEN: The message should be rerouted to the default recipient as a fallback delivery method
File: GCX016E.cbl
GIVEN: A message delivery has failed and error notification has been generated
WHEN: Rerouting is attempted
THEN: The message should be sent to the default recipient
βœ“ Consolidated Acceptance Criteria
  • If AD segment availability → the system identifies whether AD segment configuration exists for recipient 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_ADSegmentAvailable(["Start Step"]) E_ADSegmentAvailable(["End Step"]) N_ADSegmentAvailable_Node0{"The system evaluates AD segment
availability"}:::decision N_ADSegmentAvailable_Node0_action["The system identifies whether AD
segment configuration exists for
recipient lookup"]:::main N_ADSegmentAvailable_Node0 -- Yes --> N_ADSegmentAvailable_Node0_action N_ADSegmentAvailable_Node0_action --> E_ADSegmentAvailable S_ADSegmentAvailable --> N_ADSegmentAvailable_Node0 N_ADSegmentAvailable_Node0 -- No --> E_ADSegmentAvailable
File: GCX016E.cbl
GIVEN: A message requires recipient determination
WHEN: The system evaluates AD segment availability
THEN: The system identifies whether AD segment configuration exists for recipient lookup
βœ“ Consolidated Acceptance Criteria
  • The system reads the AD segment configuration → the system loads the recipient configuration data from the AD 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_ReadADSegmentConfiguration(["Start Step"]) E_ReadADSegmentConfiguration(["End Step"]) N_ReadADSegmentConfiguration_Node0{"The system reads the AD segment
configuration"}:::decision N_ReadADSegmentConfiguration_Node0_action["The system loads the recipient
configuration data from the AD
segment"]:::main N_ReadADSegmentConfiguration_Node0 -- Yes --> N_ReadADSegmentConfiguration_Node0_action N_ReadADSegmentConfiguration_Node0_action --> E_ReadADSegmentConfiguration S_ReadADSegmentConfiguration --> N_ReadADSegmentConfiguration_Node0 N_ReadADSegmentConfiguration_Node0 -- No --> E_ReadADSegmentConfiguration
File: GCX016E.cbl
GIVEN: AD segment is available for the message
WHEN: The system reads the AD segment configuration
THEN: The system loads the recipient configuration data from the AD segment
βœ“ Consolidated Acceptance Criteria
  • The system processes the configuration data → the system extracts recipient identification 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_ExtractRecipientInformation(["Start Step"]) E_ExtractRecipientInformation(["End Step"]) N_ExtractRecipientInformation_Node0{"The system processes the
configuration data"}:::decision N_ExtractRecipientInformation_Node0_action["The system extracts recipient
identification and routing
information"]:::main N_ExtractRecipientInformation_Node0 -- Yes --> N_ExtractRecipientInformation_Node0_action N_ExtractRecipientInformation_Node0_action --> E_ExtractRecipientInformation S_ExtractRecipientInformation --> N_ExtractRecipientInformation_Node0 N_ExtractRecipientInformation_Node0 -- No --> E_ExtractRecipientInformation
File: GCX016E.cbl
GIVEN: AD segment configuration has been read successfully
WHEN: The system processes the configuration data
THEN:
  • The system extracts recipient identification
  • Routing information
βœ“ Consolidated Acceptance Criteria
  • If the extracted recipient data → the system determines if a valid recipient identifier exists
  • The system validates the recipient configuration → the recipient is confirmed as valid or invalid for delivery
  • If recipient validity → if valid recipients are found, proceed with configured routing; if no valid recipients exist, use 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_ValidRecipientFound(["Start Step"]) E_ValidRecipientFound(["End Step"]) N_ValidRecipientFound_Node0{"The system evaluates the extracted
recipient data"}:::decision N_ValidRecipientFound_Node0_action["The system determines if a valid
recipient identifier exists"]:::main N_ValidRecipientFound_Node0 -- Yes --> N_ValidRecipientFound_Node0_action N_ValidRecipientFound_Node0_action --> E_ValidRecipientFound S_ValidRecipientFound --> N_ValidRecipientFound_Node0 N_ValidRecipientFound_Node1{"The system validates the recipient
configuration"}:::decision N_ValidRecipientFound_Node1_action["The recipient is confirmed as valid
or invalid for delivery"]:::main N_ValidRecipientFound_Node1 -- Yes --> N_ValidRecipientFound_Node1_action N_ValidRecipientFound_Node1_action --> E_ValidRecipientFound N_ValidRecipientFound_Node0 -- No --> N_ValidRecipientFound_Node1 N_ValidRecipientFound_Node2{"The system evaluates recipient
validity"}:::decision N_ValidRecipientFound_Node2_action["If valid recipients are found,
proceed with configured routing if
no valid recipients exist, use
default routing"]:::main N_ValidRecipientFound_Node2 -- Yes --> N_ValidRecipientFound_Node2_action N_ValidRecipientFound_Node2_action --> E_ValidRecipientFound N_ValidRecipientFound_Node1 -- No --> N_ValidRecipientFound_Node2 N_ValidRecipientFound_Node2 -- No --> E_ValidRecipientFound
File: GCX016E.cbl
GIVEN: Recipient information has been extracted from AD segment
WHEN: The system evaluates the extracted recipient data
THEN: The system determines if a valid recipient identifier exists
File: GCX016E.cbl
GIVEN: A recipient has been determined for the message
WHEN: The system validates the recipient configuration
THEN: The recipient is confirmed as valid or invalid for delivery
File: GCX016E.cbl
GIVEN: AD segment configuration has been checked for a message
WHEN: The system evaluates recipient validity
THEN: If valid recipients are found, proceed with configured routing; if no valid recipients exist, use default routing
βœ“ Consolidated Acceptance Criteria
  • The system applies default recipient logic → the system sets OM01247 as the message recipient
  • The system needs to assign a fallback recipient → the system sets OM01247 as the default recipient 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_SetDefaultRecipientOM01247(["Start Step"]) E_SetDefaultRecipientOM01247(["End Step"]) N_SetDefaultRecipientOM01247_Node0{"The system applies default
recipient logic"}:::decision N_SetDefaultRecipientOM01247_Node0_action["The system sets OM01247 as the
message recipient"]:::main N_SetDefaultRecipientOM01247_Node0 -- Yes --> N_SetDefaultRecipientOM01247_Node0_action N_SetDefaultRecipientOM01247_Node0_action --> E_SetDefaultRecipientOM01247 S_SetDefaultRecipientOM01247 --> N_SetDefaultRecipientOM01247_Node0 N_SetDefaultRecipientOM01247_Node1{"The system needs to assign a
fallback recipient"}:::decision N_SetDefaultRecipientOM01247_Node1_action["The system sets OM01247 as the
default recipient for message
delivery"]:::main N_SetDefaultRecipientOM01247_Node1 -- Yes --> N_SetDefaultRecipientOM01247_Node1_action N_SetDefaultRecipientOM01247_Node1_action --> E_SetDefaultRecipientOM01247 N_SetDefaultRecipientOM01247_Node0 -- No --> N_SetDefaultRecipientOM01247_Node1 N_SetDefaultRecipientOM01247_Node1 -- No --> E_SetDefaultRecipientOM01247
File: GCX016E.cbl
GIVEN: Either no AD segment is available or no valid recipient was found in AD segment
WHEN: The system applies default recipient logic
THEN: The system sets OM01247 as the message recipient
File: GCX016E.cbl
GIVEN: A Merlin message has an invalid recipient and an error notification has been generated
WHEN: The system needs to assign a fallback recipient
THEN: The system sets OM01247 as the default recipient for message delivery
βœ“ Consolidated Acceptance Criteria
  • The system validates the recipient format → the system verifies the recipient identifier meets required format 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_ValidateRecipientFormat(["Start Step"]) E_ValidateRecipientFormat(["End Step"]) N_ValidateRecipientFormat_Node0{"The system validates the recipient
format"}:::decision N_ValidateRecipientFormat_Node0_action["The system verifies the recipient
identifier meets required format
standards"]:::main N_ValidateRecipientFormat_Node0 -- Yes --> N_ValidateRecipientFormat_Node0_action N_ValidateRecipientFormat_Node0_action --> E_ValidateRecipientFormat S_ValidateRecipientFormat --> N_ValidateRecipientFormat_Node0 N_ValidateRecipientFormat_Node0 -- No --> E_ValidateRecipientFormat
File: GCX016E.cbl
GIVEN: A valid recipient was found in the AD segment configuration
WHEN: The system validates the recipient format
THEN: The system verifies the recipient identifier meets required format standards
βœ“ Consolidated Acceptance Criteria
  • If validation results → the system confirms whether the recipient identifier is valid 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_RecipientValid(["Start Step"]) E_RecipientValid(["End Step"]) N_RecipientValid_Node0{"The system evaluates validation
results"}:::decision N_RecipientValid_Node0_action["The system confirms whether the
recipient identifier is valid for
message routing"]:::main N_RecipientValid_Node0 -- Yes --> N_RecipientValid_Node0_action N_RecipientValid_Node0_action --> E_RecipientValid S_RecipientValid --> N_RecipientValid_Node0 N_RecipientValid_Node0 -- No --> E_RecipientValid
File: GCX016E.cbl
GIVEN: Recipient format validation has been performed
WHEN: The system evaluates validation results
THEN: The system confirms whether the recipient identifier is valid for message routing
βœ“ Consolidated Acceptance Criteria
  • The system processes the validation failure → the system generates an invalid recipient error and initiates rerouting logic
  • The system validates recipient information → an invalid recipient error should be generated for tracking and 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_GenerateInvalidRecipientError(["Start Step"]) E_GenerateInvalidRecipientError(["End Step"]) N_GenerateInvalidRecipientError_Node0{"The system processes the validation
failure"}:::decision N_GenerateInvalidRecipientError_Node0_action["The system generates an invalid
recipient error and initiates
rerouting logic"]:::main N_GenerateInvalidRecipientError_Node0 -- Yes --> N_GenerateInvalidRecipientError_Node0_action N_GenerateInvalidRecipientError_Node0_action --> E_GenerateInvalidRecipientError S_GenerateInvalidRecipientError --> N_GenerateInvalidRecipientError_Node0 N_GenerateInvalidRecipientError_Node1{"The system validates recipient
information"}:::decision N_GenerateInvalidRecipientError_Node1_action["An invalid recipient error should
be generated for tracking and
correction"]:::main N_GenerateInvalidRecipientError_Node1 -- Yes --> N_GenerateInvalidRecipientError_Node1_action N_GenerateInvalidRecipientError_Node1_action --> E_GenerateInvalidRecipientError N_GenerateInvalidRecipientError_Node0 -- No --> N_GenerateInvalidRecipientError_Node1 N_GenerateInvalidRecipientError_Node1 -- No --> E_GenerateInvalidRecipientError
File: GCX016E.cbl
GIVEN: The recipient identifier failed format validation
WHEN: The system processes the validation failure
THEN:
  • The system generates an invalid recipient error
  • Initiates rerouting logic
File: GCX016E.cbl
GIVEN: An invalid recipient is detected in the routing configuration
WHEN: The system validates recipient information
THEN:
  • An invalid recipient error should be generated for tracking
  • Correction
βœ“ Consolidated Acceptance Criteria
  • The system applies rerouting logic → the system redirects the message to alternative routing paths 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_ApplyReroutingLogic(["Start Step"]) E_ApplyReroutingLogic(["End Step"]) N_ApplyReroutingLogic_Node0{"The system applies rerouting logic"}:::decision N_ApplyReroutingLogic_Node0_action["The system redirects the message to
alternative routing paths to ensure
delivery"]:::main N_ApplyReroutingLogic_Node0 -- Yes --> N_ApplyReroutingLogic_Node0_action N_ApplyReroutingLogic_Node0_action --> E_ApplyReroutingLogic S_ApplyReroutingLogic --> N_ApplyReroutingLogic_Node0 N_ApplyReroutingLogic_Node0 -- No --> E_ApplyReroutingLogic
File: GCX016E.cbl
GIVEN: An invalid recipient error has been generated
WHEN: The system applies rerouting logic
THEN: The system redirects the message to alternative routing paths to ensure delivery
βœ“ Consolidated Acceptance Criteria
  • The system completes recipient determination process → the system sets the final message recipient for delivery 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_SetFinalMessageRecipient(["Start Step"]) E_SetFinalMessageRecipient(["End Step"]) N_SetFinalMessageRecipient_Node0{"The system completes recipient
determination process"}:::decision N_SetFinalMessageRecipient_Node0_action["The system sets the final message
recipient for delivery routing"]:::main N_SetFinalMessageRecipient_Node0 -- Yes --> N_SetFinalMessageRecipient_Node0_action N_SetFinalMessageRecipient_Node0_action --> E_SetFinalMessageRecipient S_SetFinalMessageRecipient --> N_SetFinalMessageRecipient_Node0 N_SetFinalMessageRecipient_Node0 -- No --> E_SetFinalMessageRecipient
File: GCX016E.cbl
GIVEN: Either a configured recipient is validated or default recipient is assigned
WHEN: The system completes recipient determination process
THEN: The system sets the final message recipient for delivery routing
βœ“ Consolidated Acceptance Criteria
  • If the message type indicator → the message is classified as ERROR, INFO, RELEASE, EXPORT, UNRLSE, or ARRCANL type for routing 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_MessageTypeClassification(["Start Step"]) E_MessageTypeClassification(["End Step"]) N_MessageTypeClassification_Node0{"The system evaluates the message
type indicator"}:::decision N_MessageTypeClassification_Node0_action["The message is classified as ERROR,
INFO, RELEASE, EXPORT, UNRLSE, or
ARRCANL type for routing purposes"]:::main N_MessageTypeClassification_Node0 -- Yes --> N_MessageTypeClassification_Node0_action N_MessageTypeClassification_Node0_action --> E_MessageTypeClassification S_MessageTypeClassification --> N_MessageTypeClassification_Node0 N_MessageTypeClassification_Node0 -- No --> E_MessageTypeClassification
File: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution
WHEN: The system evaluates the message type indicator
THEN: The message is classified as ERROR, INFO, RELEASE, EXPORT, UNRLSE, or ARRCANL type for routing purposes
βœ“ Consolidated Acceptance Criteria
  • The routing process begins → the message is directed to the 'IN' destination 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_RouteERRORMessages(["Start Step"]) E_RouteERRORMessages(["End Step"]) N_RouteERRORMessages_Node0{"The routing process begins"}:::decision N_RouteERRORMessages_Node0_action["The message is directed to the IN
destination queue"]:::main N_RouteERRORMessages_Node0 -- Yes --> N_RouteERRORMessages_Node0_action N_RouteERRORMessages_Node0_action --> E_RouteERRORMessages S_RouteERRORMessages --> N_RouteERRORMessages_Node0 N_RouteERRORMessages_Node0 -- No --> E_RouteERRORMessages
File: GCX016E.cbl
GIVEN: A message has been classified as ERROR type
WHEN: The routing process begins
THEN: The message is directed to the 'IN' destination queue
βœ“ Consolidated Acceptance Criteria
  • The routing process begins → the message is sent to 'IN' destination and all configured SD segment 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_RouteINFOMessages(["Start Step"]) E_RouteINFOMessages(["End Step"]) N_RouteINFOMessages_Node0{"The routing process begins"}:::decision N_RouteINFOMessages_Node0_action["The message is sent to IN
destination and all configured SD
segment Merlin IDs"]:::main N_RouteINFOMessages_Node0 -- Yes --> N_RouteINFOMessages_Node0_action N_RouteINFOMessages_Node0_action --> E_RouteINFOMessages S_RouteINFOMessages --> N_RouteINFOMessages_Node0 N_RouteINFOMessages_Node0 -- No --> E_RouteINFOMessages
File: GCX016E.cbl
GIVEN: A message has been classified as INFO type
WHEN: The routing process begins
THEN:
  • The message is sent to 'in' destination
  • All configured sd segment merlin ids
βœ“ Consolidated Acceptance Criteria
  • The routing process begins → the message is sent only to configured SD segment 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_RouteRELEASEMessages(["Start Step"]) E_RouteRELEASEMessages(["End Step"]) N_RouteRELEASEMessages_Node0{"The routing process begins"}:::decision N_RouteRELEASEMessages_Node0_action["The message is sent only to
configured SD segment Merlin IDs"]:::main N_RouteRELEASEMessages_Node0 -- Yes --> N_RouteRELEASEMessages_Node0_action N_RouteRELEASEMessages_Node0_action --> E_RouteRELEASEMessages S_RouteRELEASEMessages --> N_RouteRELEASEMessages_Node0 N_RouteRELEASEMessages_Node0 -- No --> E_RouteRELEASEMessages
File: GCX016E.cbl
GIVEN: A message has been classified as RELEASE type
WHEN: The routing process begins
THEN: The message is sent only to configured SD segment Merlin IDs
βœ“ Consolidated Acceptance Criteria
  • The routing process evaluates the equipment type → the message is routed to destinations specific to the 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_RouteEXPORTMessages(["Start Step"]) E_RouteEXPORTMessages(["End Step"]) N_RouteEXPORTMessages_Node0{"The routing process evaluates the
equipment type"}:::decision N_RouteEXPORTMessages_Node0_action["The message is routed to
destinations specific to the
equipment type"]:::main N_RouteEXPORTMessages_Node0 -- Yes --> N_RouteEXPORTMessages_Node0_action N_RouteEXPORTMessages_Node0_action --> E_RouteEXPORTMessages S_RouteEXPORTMessages --> N_RouteEXPORTMessages_Node0 N_RouteEXPORTMessages_Node0 -- No --> E_RouteEXPORTMessages
File: GCX016E.cbl
GIVEN: A message has been classified as EXPORT type
WHEN: The routing process evaluates the equipment type
THEN: The message is routed to destinations specific to the equipment type
βœ“ Consolidated Acceptance Criteria
  • The routing process begins → the message is sent to OM01247 and all configured SD cancel 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_RouteUNRLSEMessages(["Start Step"]) E_RouteUNRLSEMessages(["End Step"]) N_RouteUNRLSEMessages_Node0{"The routing process begins"}:::decision N_RouteUNRLSEMessages_Node0_action["The message is sent to OM01247 and
all configured SD cancel Merlin IDs"]:::main N_RouteUNRLSEMessages_Node0 -- Yes --> N_RouteUNRLSEMessages_Node0_action N_RouteUNRLSEMessages_Node0_action --> E_RouteUNRLSEMessages S_RouteUNRLSEMessages --> N_RouteUNRLSEMessages_Node0 N_RouteUNRLSEMessages_Node0 -- No --> E_RouteUNRLSEMessages
File: GCX016E.cbl
GIVEN: A message has been classified as UNRLSE type
WHEN: The routing process begins
THEN:
  • The message is sent to om01247
  • All configured sd cancel merlin ids
βœ“ Consolidated Acceptance Criteria
  • The routing process begins → the message is routed according to arrival cancellation notification 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_RouteARRCANLMessages(["Start Step"]) E_RouteARRCANLMessages(["End Step"]) N_RouteARRCANLMessages_Node0{"The routing process begins"}:::decision N_RouteARRCANLMessages_Node0_action["The message is routed according to
arrival cancellation notification
rules"]:::main N_RouteARRCANLMessages_Node0 -- Yes --> N_RouteARRCANLMessages_Node0_action N_RouteARRCANLMessages_Node0_action --> E_RouteARRCANLMessages S_RouteARRCANLMessages --> N_RouteARRCANLMessages_Node0 N_RouteARRCANLMessages_Node0 -- No --> E_RouteARRCANLMessages
File: GCX016E.cbl
GIVEN: A message has been classified as ARRCANL type
WHEN: The routing process begins
THEN: The message is routed according to arrival cancellation notification rules
βœ“ Consolidated Acceptance Criteria
  • The system looks up recipient configuration → the appropriate recipient Merlin ID or destination 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_DetermineMessageRecipient(["Start Step"]) E_DetermineMessageRecipient(["End Step"]) N_DetermineMessageRecipient_Node0{"The system looks up recipient
configuration"}:::decision N_DetermineMessageRecipient_Node0_action["The appropriate recipient Merlin ID
or destination is identified"]:::main N_DetermineMessageRecipient_Node0 -- Yes --> N_DetermineMessageRecipient_Node0_action N_DetermineMessageRecipient_Node0_action --> E_DetermineMessageRecipient S_DetermineMessageRecipient --> N_DetermineMessageRecipient_Node0 N_DetermineMessageRecipient_Node0 -- No --> E_DetermineMessageRecipient
File: GCX016E.cbl
GIVEN: A message has been classified and routing rules applied
WHEN: The system looks up recipient configuration
THEN: The appropriate recipient Merlin ID or destination is identified
βœ“ Consolidated Acceptance Criteria
  • The delivery process executes → the message is sent to the configured 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_SendtoConfiguredRecipient(["Start Step"]) E_SendtoConfiguredRecipient(["End Step"]) N_SendtoConfiguredRecipient_Node0{"The delivery process executes"}:::decision N_SendtoConfiguredRecipient_Node0_action["The message is sent to the
configured recipient"]:::main N_SendtoConfiguredRecipient_Node0 -- Yes --> N_SendtoConfiguredRecipient_Node0_action N_SendtoConfiguredRecipient_Node0_action --> E_SendtoConfiguredRecipient S_SendtoConfiguredRecipient --> N_SendtoConfiguredRecipient_Node0 N_SendtoConfiguredRecipient_Node0 -- No --> E_SendtoConfiguredRecipient
File: GCX016E.cbl
GIVEN: A valid recipient has been identified
WHEN: The delivery process executes
THEN: The message is sent to the configured recipient
βœ“ Consolidated Acceptance Criteria
  • The fallback process activates → the message is automatically sent to default recipient OM01247
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendtoDefaultRecipientOM01247(["Start Step"]) E_SendtoDefaultRecipientOM01247(["End Step"]) N_SendtoDefaultRecipientOM01247_Node0{"The fallback process activates"}:::decision N_SendtoDefaultRecipientOM01247_Node0_action["The message is automatically sent
to default recipient OM01247"]:::main N_SendtoDefaultRecipientOM01247_Node0 -- Yes --> N_SendtoDefaultRecipientOM01247_Node0_action N_SendtoDefaultRecipientOM01247_Node0_action --> E_SendtoDefaultRecipientOM01247 S_SendtoDefaultRecipientOM01247 --> N_SendtoDefaultRecipientOM01247_Node0 N_SendtoDefaultRecipientOM01247_Node0 -- No --> E_SendtoDefaultRecipientOM01247
File: GCX016E.cbl
GIVEN: No valid configured recipient was found
WHEN: The fallback process activates
THEN: The message is automatically sent to default recipient OM01247
βœ“ Consolidated Acceptance Criteria
  • The rerouting process is triggered → alternative delivery routes are identified and 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_InitiateReroutingProcess(["Start Step"]) E_InitiateReroutingProcess(["End Step"]) N_InitiateReroutingProcess_Node0{"The rerouting process is triggered"}:::decision N_InitiateReroutingProcess_Node0_action["Alternative delivery routes are
identified and activated"]:::main N_InitiateReroutingProcess_Node0 -- Yes --> N_InitiateReroutingProcess_Node0_action N_InitiateReroutingProcess_Node0_action --> E_InitiateReroutingProcess S_InitiateReroutingProcess --> N_InitiateReroutingProcess_Node0 N_InitiateReroutingProcess_Node0 -- No --> E_InitiateReroutingProcess
File: GCX016E.cbl
GIVEN: A message delivery has failed
WHEN: The rerouting process is triggered
THEN:
  • Alternative delivery routes are identified
  • Activated
βœ“ Consolidated Acceptance Criteria
  • The alternative delivery executes → the message is sent to backup recipients AEI9999 and OM01247
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SendtoAlternativeRecipient(["Start Step"]) E_SendtoAlternativeRecipient(["End Step"]) N_SendtoAlternativeRecipient_Node0{"The alternative delivery executes"}:::decision N_SendtoAlternativeRecipient_Node0_action["The message is sent to backup
recipients AEI9999 and OM01247"]:::main N_SendtoAlternativeRecipient_Node0 -- Yes --> N_SendtoAlternativeRecipient_Node0_action N_SendtoAlternativeRecipient_Node0_action --> E_SendtoAlternativeRecipient S_SendtoAlternativeRecipient --> N_SendtoAlternativeRecipient_Node0 N_SendtoAlternativeRecipient_Node0 -- No --> E_SendtoAlternativeRecipient
File: GCX016E.cbl
GIVEN: Rerouting process has identified alternative recipients
WHEN: The alternative delivery executes
THEN:
  • The message is sent to backup recipients aei9999
  • Om01247
βœ“ Consolidated Acceptance Criteria
  • The system checks rerouting delivery status → the rerouting is confirmed as 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_ReroutingSuccessful(["Start Step"]) E_ReroutingSuccessful(["End Step"]) N_ReroutingSuccessful_Node0{"The system checks rerouting
delivery status"}:::decision N_ReroutingSuccessful_Node0_action["The rerouting is confirmed as
successful or failed"]:::main N_ReroutingSuccessful_Node0 -- Yes --> N_ReroutingSuccessful_Node0_action N_ReroutingSuccessful_Node0_action --> E_ReroutingSuccessful S_ReroutingSuccessful --> N_ReroutingSuccessful_Node0 N_ReroutingSuccessful_Node0 -- No --> E_ReroutingSuccessful
File: GCX016E.cbl
GIVEN: A rerouting delivery attempt has been made
WHEN: The system checks rerouting delivery status
THEN: The rerouting is confirmed as successful or failed
βœ“ Consolidated Acceptance Criteria
  • The logging process executes → the successful rerouting is recorded with timestamp and alternative recipient 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_LogReroutingSuccess(["Start Step"]) E_LogReroutingSuccess(["End Step"]) N_LogReroutingSuccess_Node0{"The logging process executes"}:::decision N_LogReroutingSuccess_Node0_action["The successful rerouting is
recorded with timestamp and
alternative recipient information"]:::main N_LogReroutingSuccess_Node0 -- Yes --> N_LogReroutingSuccess_Node0_action N_LogReroutingSuccess_Node0_action --> E_LogReroutingSuccess S_LogReroutingSuccess --> N_LogReroutingSuccess_Node0 N_LogReroutingSuccess_Node0 -- No --> E_LogReroutingSuccess
File: GCX016E.cbl
GIVEN: A rerouting delivery was successful
WHEN: The logging process executes
THEN:
  • The successful rerouting is recorded with timestamp
  • Alternative recipient information
βœ“ Consolidated Acceptance Criteria
  • The alert generation process executes → a delivery failure alert is generated for system administrators
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateDeliveryFailureAlert(["Start Step"]) E_GenerateDeliveryFailureAlert(["End Step"]) N_GenerateDeliveryFailureAlert_Node0{"The alert generation process
executes"}:::decision N_GenerateDeliveryFailureAlert_Node0_action["A delivery failure alert is
generated for system administrators"]:::main N_GenerateDeliveryFailureAlert_Node0 -- Yes --> N_GenerateDeliveryFailureAlert_Node0_action N_GenerateDeliveryFailureAlert_Node0_action --> E_GenerateDeliveryFailureAlert S_GenerateDeliveryFailureAlert --> N_GenerateDeliveryFailureAlert_Node0 N_GenerateDeliveryFailureAlert_Node0 -- No --> E_GenerateDeliveryFailureAlert
File: GCX016E.cbl
GIVEN: Both primary delivery and rerouting have failed
WHEN: The alert generation process executes
THEN: A delivery failure alert is generated for system administrators
βœ“ Consolidated Acceptance Criteria
  • The completion process executes → the message distribution process is marked as complete with 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_CompleteMessageDistribution(["Start Step"]) E_CompleteMessageDistribution(["End Step"]) N_CompleteMessageDistribution_Node0{"The completion process executes"}:::decision N_CompleteMessageDistribution_Node0_action["The message distribution process is
marked as complete with final status"]:::main N_CompleteMessageDistribution_Node0 -- Yes --> N_CompleteMessageDistribution_Node0_action N_CompleteMessageDistribution_Node0_action --> E_CompleteMessageDistribution S_CompleteMessageDistribution --> N_CompleteMessageDistribution_Node0 N_CompleteMessageDistribution_Node0 -- No --> E_CompleteMessageDistribution
File: GCX016E.cbl
GIVEN: All delivery attempts have been completed
WHEN: The completion process executes
THEN: The message distribution process is marked as complete with final status
βœ“ Consolidated Acceptance Criteria
  • MQ connection management process starts → all MQ connection parameters are 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_InitializeMQConnectionParameters(["Start Step"]) E_InitializeMQConnectionParameters(["End Step"]) N_InitializeMQConnectionParameters_Node0{"MQ connection management process
starts"}:::decision N_InitializeMQConnectionParameters_Node0_action["All MQ connection parameters are
initialized to default values"]:::main N_InitializeMQConnectionParameters_Node0 -- Yes --> N_InitializeMQConnectionParameters_Node0_action N_InitializeMQConnectionParameters_Node0_action --> E_InitializeMQConnectionParameters S_InitializeMQConnectionParameters --> N_InitializeMQConnectionParameters_Node0 N_InitializeMQConnectionParameters_Node0 -- No --> E_InitializeMQConnectionParameters
File: GCX016E.cbl
GIVEN: The system needs to connect to message queue services
WHEN: MQ connection management process starts
THEN: All MQ connection parameters are initialized to default values
βœ“ Consolidated Acceptance Criteria
  • System attempts to connect to MQ Manager → connection to MQ Manager 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_EstablishMQManagerConnection(["Start Step"]) E_EstablishMQManagerConnection(["End Step"]) N_EstablishMQManagerConnection_Node0{"System attempts to connect to MQ
Manager"}:::decision N_EstablishMQManagerConnection_Node0_action["Connection to MQ Manager is
established"]:::main N_EstablishMQManagerConnection_Node0 -- Yes --> N_EstablishMQManagerConnection_Node0_action N_EstablishMQManagerConnection_Node0_action --> E_EstablishMQManagerConnection S_EstablishMQManagerConnection --> N_EstablishMQManagerConnection_Node0 N_EstablishMQManagerConnection_Node0 -- No --> E_EstablishMQManagerConnection
File: GCX016E.cbl
GIVEN: MQ connection parameters are initialized
WHEN: System attempts to connect to MQ Manager
THEN: Connection to MQ Manager is established
βœ“ Consolidated Acceptance Criteria
  • Connection attempt completes → system determines if connection 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_ConnectionSuccessful(["Start Step"]) E_ConnectionSuccessful(["End Step"]) N_ConnectionSuccessful_Node0{"Connection attempt completes"}:::decision N_ConnectionSuccessful_Node0_action["System determines if connection was
successful or failed"]:::main N_ConnectionSuccessful_Node0 -- Yes --> N_ConnectionSuccessful_Node0_action N_ConnectionSuccessful_Node0_action --> E_ConnectionSuccessful S_ConnectionSuccessful --> N_ConnectionSuccessful_Node0 N_ConnectionSuccessful_Node0 -- No --> E_ConnectionSuccessful
File: GCX016E.cbl
GIVEN: System has attempted to connect to MQ Manager
WHEN: Connection attempt completes
THEN: System determines if connection was successful or failed
βœ“ Consolidated Acceptance Criteria
  • Both connection and queue opening are validated as successful → 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{"Both connection and queue opening
are validated as successful"}:::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: GCX016E.cbl
GIVEN: MQ Manager connection is established AND GC350.EXP.INPUT queue is successfully opened
WHEN:
  • Both connection
  • Queue opening are validated as successful
THEN: Queue status is set to ready for message processing
βœ“ Consolidated Acceptance Criteria
  • MQ connection setup is complete → connection success is logged to system 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_LogConnectionSuccess(["Start Step"]) E_LogConnectionSuccess(["End Step"]) N_LogConnectionSuccess_Node0{"MQ connection setup is complete"}:::decision N_LogConnectionSuccess_Node0_action["Connection success is logged to
system audit trail"]:::main N_LogConnectionSuccess_Node0 -- Yes --> N_LogConnectionSuccess_Node0_action N_LogConnectionSuccess_Node0_action --> E_LogConnectionSuccess S_LogConnectionSuccess --> N_LogConnectionSuccess_Node0 N_LogConnectionSuccess_Node0 -- No --> E_LogConnectionSuccess
File: GCX016E.cbl
GIVEN: Queue status has been set to ready
WHEN: MQ connection setup is complete
THEN: Connection success is logged to system audit trail
βœ“ Consolidated Acceptance Criteria
  • MQ Manager connection fails → connection error is handled and appropriate error 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_HandleConnectionError(["Start Step"]) E_HandleConnectionError(["End Step"]) N_HandleConnectionError_Node0{"MQ Manager connection fails"}:::decision N_HandleConnectionError_Node0_action["Connection error is handled and
appropriate error processing is
initiated"]:::main N_HandleConnectionError_Node0 -- Yes --> N_HandleConnectionError_Node0_action N_HandleConnectionError_Node0_action --> E_HandleConnectionError S_HandleConnectionError --> N_HandleConnectionError_Node0 N_HandleConnectionError_Node0 -- No --> E_HandleConnectionError
File: GCX016E.cbl
GIVEN: System attempted to connect to MQ Manager
WHEN: MQ Manager connection fails
THEN:
  • Connection error is handled
  • Appropriate error processing is initiated
βœ“ Consolidated Acceptance Criteria
  • Connection error handling is processed → connection failure details are logged to system 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_LogConnectionFailure(["Start Step"]) E_LogConnectionFailure(["End Step"]) N_LogConnectionFailure_Node0{"Connection error handling is
processed"}:::decision N_LogConnectionFailure_Node0_action["Connection failure details are
logged to system audit trail"]:::exclusion N_LogConnectionFailure_Node0 -- Yes -->|Alternative| N_LogConnectionFailure_Node0_action N_LogConnectionFailure_Node0_action --> E_LogConnectionFailure S_LogConnectionFailure --> N_LogConnectionFailure_Node0 N_LogConnectionFailure_Node0 -- No --> E_LogConnectionFailure
File: GCX016E.cbl
GIVEN: MQ Manager connection has failed
WHEN: Connection error handling is processed
THEN: Connection failure details are logged to system audit trail
βœ“ Consolidated Acceptance Criteria
  • Queue opening fails → queue opening error is handled and appropriate error 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_HandleQueueOpenError(["Start Step"]) E_HandleQueueOpenError(["End Step"]) N_HandleQueueOpenError_Node0{"Queue opening fails"}:::decision N_HandleQueueOpenError_Node0_action["Queue opening error is handled and
appropriate error processing is
initiated"]:::main N_HandleQueueOpenError_Node0 -- Yes --> N_HandleQueueOpenError_Node0_action N_HandleQueueOpenError_Node0_action --> E_HandleQueueOpenError S_HandleQueueOpenError --> N_HandleQueueOpenError_Node0 N_HandleQueueOpenError_Node0 -- No --> E_HandleQueueOpenError
File: GCX016E.cbl
GIVEN: MQ Manager connection is successful AND system attempted to open GC350.EXP.INPUT queue
WHEN: Queue opening fails
THEN:
  • Queue opening error is handled
  • Appropriate error processing is initiated
βœ“ Consolidated Acceptance Criteria
  • Queue opening error handling is processed → queue opening failure details are logged to system 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_LogQueueOpenFailure(["Start Step"]) E_LogQueueOpenFailure(["End Step"]) N_LogQueueOpenFailure_Node0{"Queue opening error handling is
processed"}:::decision N_LogQueueOpenFailure_Node0_action["Queue opening failure details are
logged to system audit trail"]:::exclusion N_LogQueueOpenFailure_Node0 -- Yes -->|Alternative| N_LogQueueOpenFailure_Node0_action N_LogQueueOpenFailure_Node0_action --> E_LogQueueOpenFailure S_LogQueueOpenFailure --> N_LogQueueOpenFailure_Node0 N_LogQueueOpenFailure_Node0 -- No --> E_LogQueueOpenFailure
File: GCX016E.cbl
GIVEN: GC350.EXP.INPUT queue opening has failed
WHEN: Queue opening error handling is processed
THEN: Queue opening failure details are logged to system audit trail
βœ“ Consolidated Acceptance Criteria
  • All MQ setup operations are complete → mQ connection is confirmed ready for processing export messages from GC350.EXP.INPUT 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_MQConnectionReadyforProcessing(["Start Step"]) E_MQConnectionReadyforProcessing(["End Step"]) N_MQConnectionReadyforProcessing_Node0{"All MQ setup operations are
complete"}:::decision N_MQConnectionReadyforProcessing_Node0_action["MQ connection is confirmed ready
for processing export messages from
GC350.EXP.INPUT queue"]:::main N_MQConnectionReadyforProcessing_Node0 -- Yes --> N_MQConnectionReadyforProcessing_Node0_action N_MQConnectionReadyforProcessing_Node0_action --> E_MQConnectionReadyforProcessing S_MQConnectionReadyforProcessing --> N_MQConnectionReadyforProcessing_Node0 N_MQConnectionReadyforProcessing_Node0 -- No --> E_MQConnectionReadyforProcessing
File: GCX016E.cbl
GIVEN: Connection success has been logged
WHEN: All MQ setup operations are complete
THEN: MQ connection is confirmed ready for processing export messages from GC350.EXP.INPUT queue
βœ“ Consolidated Acceptance Criteria
  • Error handling is complete → mQ connection management process exits without establishing ready 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_ConnectionFailedExit(["Start Step"]) E_ConnectionFailedExit(["End Step"]) N_ConnectionFailedExit_Node0{"Error handling is complete"}:::decision N_ConnectionFailedExit_Node0_action["MQ connection management process
exits without establishing ready
status"]:::exclusion N_ConnectionFailedExit_Node0 -- Yes -->|Alternative| N_ConnectionFailedExit_Node0_action N_ConnectionFailedExit_Node0_action --> E_ConnectionFailedExit S_ConnectionFailedExit --> N_ConnectionFailedExit_Node0 N_ConnectionFailedExit_Node0 -- No --> E_ConnectionFailedExit
File: GCX016E.cbl
GIVEN: Either connection failure OR queue opening failure has been logged
WHEN: Error handling is complete
THEN: MQ connection management process exits without establishing ready status
βœ“ Consolidated Acceptance Criteria
  • The system initializes cargo message arrays → the system creates empty array structures ready to receive X4 and N7 segment 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_InitializeCargoMessageArrays(["Start Step"]) E_InitializeCargoMessageArrays(["End Step"]) N_InitializeCargoMessageArrays_Node0{"The system initializes cargo
message arrays"}:::decision N_InitializeCargoMessageArrays_Node0_action["The system creates empty array
structures ready to receive X4 and
N7 segment information"]:::main N_InitializeCargoMessageArrays_Node0 -- Yes --> N_InitializeCargoMessageArrays_Node0_action N_InitializeCargoMessageArrays_Node0_action --> E_InitializeCargoMessageArrays S_InitializeCargoMessageArrays --> N_InitializeCargoMessageArrays_Node0 N_InitializeCargoMessageArrays_Node0 -- No --> E_InitializeCargoMessageArrays
File: GCX016E.cbl
GIVEN: A cargo message type has been identified
WHEN: The system initializes cargo message arrays
THEN:
  • The system creates empty array structures ready to receive x4
  • N7 segment information
βœ“ Consolidated Acceptance Criteria
  • The system creates X4 segment structure → the system defines fields for disposition codes, entry numbers, quantities, 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_CreateX4SegmentStructure(["Start Step"]) E_CreateX4SegmentStructure(["End Step"]) N_CreateX4SegmentStructure_Node0{"The system creates X4 segment
structure"}:::decision N_CreateX4SegmentStructure_Node0_action["The system defines fields for
disposition codes, entry numbers,
quantities, and processing
instructions"]:::main N_CreateX4SegmentStructure_Node0 -- Yes --> N_CreateX4SegmentStructure_Node0_action N_CreateX4SegmentStructure_Node0_action --> E_CreateX4SegmentStructure S_CreateX4SegmentStructure --> N_CreateX4SegmentStructure_Node0 N_CreateX4SegmentStructure_Node0 -- No --> E_CreateX4SegmentStructure
File: GCX016E.cbl
GIVEN: Cargo message arrays are being initialized
WHEN: The system creates X4 segment structure
THEN: The system defines fields for disposition codes, entry numbers, quantities, and processing instructions
βœ“ Consolidated Acceptance Criteria
  • The system sets equipment information → the system assigns equipment type, equipment number, and related identification data to 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_SetEquipmentInformation(["Start Step"]) E_SetEquipmentInformation(["End Step"]) N_SetEquipmentInformation_Node0{"The system sets equipment
information"}:::decision N_SetEquipmentInformation_Node0_action["The system assigns equipment type,
equipment number, and related
identification data to the X4
segment"]:::main N_SetEquipmentInformation_Node0 -- Yes --> N_SetEquipmentInformation_Node0_action N_SetEquipmentInformation_Node0_action --> E_SetEquipmentInformation S_SetEquipmentInformation --> N_SetEquipmentInformation_Node0 N_SetEquipmentInformation_Node0 -- No --> E_SetEquipmentInformation
File: GCX016E.cbl
GIVEN: X4 segment structure has been created
WHEN: The system sets equipment information
THEN: The system assigns equipment type, equipment number, and related identification data to the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets disposition code data → the system populates disposition code, associated quantities, entry 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_SetDispositionCodeData(["Start Step"]) E_SetDispositionCodeData(["End Step"]) N_SetDispositionCodeData_Node0{"The system sets disposition code
data"}:::decision N_SetDispositionCodeData_Node0_action["The system populates disposition
code, associated quantities, entry
numbers, and processing flags"]:::main N_SetDispositionCodeData_Node0 -- Yes --> N_SetDispositionCodeData_Node0_action N_SetDispositionCodeData_Node0_action --> E_SetDispositionCodeData S_SetDispositionCodeData --> N_SetDispositionCodeData_Node0 N_SetDispositionCodeData_Node0 -- No --> E_SetDispositionCodeData
File: GCX016E.cbl
GIVEN: Equipment information has been set in the X4 segment
WHEN: The system sets disposition code data
THEN: The system populates disposition code, associated quantities, entry numbers, and processing flags
βœ“ Consolidated Acceptance Criteria
  • The system sets date/time information → the system assigns current date, time, and timezone information to 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_SetDateTimeInformation(["Start Step"]) E_SetDateTimeInformation(["End Step"]) N_SetDateTimeInformation_Node0{"The system sets datetime
information"}:::decision N_SetDateTimeInformation_Node0_action["The system assigns current date,
time, and timezone information to
the X4 segment"]:::main N_SetDateTimeInformation_Node0 -- Yes --> N_SetDateTimeInformation_Node0_action N_SetDateTimeInformation_Node0_action --> E_SetDateTimeInformation S_SetDateTimeInformation --> N_SetDateTimeInformation_Node0 N_SetDateTimeInformation_Node0 -- No --> E_SetDateTimeInformation
File: GCX016E.cbl
GIVEN: Disposition code data has been set in the X4 segment
WHEN: The system sets date/time information
THEN: The system assigns current date, time, and timezone information to the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system creates N7 segment structure → the system defines fields for equipment details, cargo identification, 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_CreateN7SegmentStructure(["Start Step"]) E_CreateN7SegmentStructure(["End Step"]) N_CreateN7SegmentStructure_Node0{"The system creates N7 segment
structure"}:::decision N_CreateN7SegmentStructure_Node0_action["The system defines fields for
equipment details, cargo
identification, and quantity
information"]:::main N_CreateN7SegmentStructure_Node0 -- Yes --> N_CreateN7SegmentStructure_Node0_action N_CreateN7SegmentStructure_Node0_action --> E_CreateN7SegmentStructure S_CreateN7SegmentStructure --> N_CreateN7SegmentStructure_Node0 N_CreateN7SegmentStructure_Node0 -- No --> E_CreateN7SegmentStructure
File: GCX016E.cbl
GIVEN: X4 segment has been completed with date/time information
WHEN: The system creates N7 segment structure
THEN: The system defines fields for equipment details, cargo identification, and quantity information
βœ“ Consolidated Acceptance Criteria
  • The system sets equipment details → the system assigns equipment initial, equipment number, equipment type, and equipment specifications to 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_SetEquipmentDetails(["Start Step"]) E_SetEquipmentDetails(["End Step"]) N_SetEquipmentDetails_Node0{"The system sets equipment details"}:::decision N_SetEquipmentDetails_Node0_action["The system assigns equipment
initial, equipment number, equipment
type, and equipment specifications
to the N7 segment"]:::main N_SetEquipmentDetails_Node0 -- Yes --> N_SetEquipmentDetails_Node0_action N_SetEquipmentDetails_Node0_action --> E_SetEquipmentDetails S_SetEquipmentDetails --> N_SetEquipmentDetails_Node0 N_SetEquipmentDetails_Node0 -- No --> E_SetEquipmentDetails
File: GCX016E.cbl
GIVEN: N7 segment structure has been created
WHEN: The system sets equipment details
THEN: The system assigns equipment initial, equipment number, equipment type, and equipment specifications to the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets quantity information → the system populates quantity values, unit of measure, and weight information in 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_SetQuantityInformation(["Start Step"]) E_SetQuantityInformation(["End Step"]) N_SetQuantityInformation_Node0{"The system sets quantity
information"}:::decision N_SetQuantityInformation_Node0_action["The system populates quantity
values, unit of measure, and weight
information in the N7 segment"]:::main N_SetQuantityInformation_Node0 -- Yes --> N_SetQuantityInformation_Node0_action N_SetQuantityInformation_Node0_action --> E_SetQuantityInformation S_SetQuantityInformation --> N_SetQuantityInformation_Node0 N_SetQuantityInformation_Node0 -- No --> E_SetQuantityInformation
File: GCX016E.cbl
GIVEN: Equipment details have been set in the N7 segment
WHEN: The system sets quantity information
THEN: The system populates quantity values, unit of measure, and weight information in the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets car ID and waybill → the system assigns car identification number and waybill reference to 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_SetCarIDandWaybill(["Start Step"]) E_SetCarIDandWaybill(["End Step"]) N_SetCarIDandWaybill_Node0{"The system sets car ID and waybill"}:::decision N_SetCarIDandWaybill_Node0_action["The system assigns car
identification number and waybill
reference to the N7 segment"]:::main N_SetCarIDandWaybill_Node0 -- Yes --> N_SetCarIDandWaybill_Node0_action N_SetCarIDandWaybill_Node0_action --> E_SetCarIDandWaybill S_SetCarIDandWaybill --> N_SetCarIDandWaybill_Node0 N_SetCarIDandWaybill_Node0 -- No --> E_SetCarIDandWaybill
File: GCX016E.cbl
GIVEN: Quantity information has been set in the N7 segment
WHEN:
  • The system sets car id
  • Waybill
THEN:
  • The system assigns car identification number
  • Waybill reference to the n7 segment
βœ“ Consolidated Acceptance Criteria
  • The system initializes train message arrays → the system creates empty array structures ready to receive M10 and V9 segment information
  • The system begins message array initialization → message arrays are initialized and prepared for M10 and V9 segment 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_InitializeTrainMessageArrays(["Start Step"]) E_InitializeTrainMessageArrays(["End Step"]) N_InitializeTrainMessageArrays_Node0{"The system initializes train
message arrays"}:::decision N_InitializeTrainMessageArrays_Node0_action["The system creates empty array
structures ready to receive M10 and
V9 segment information"]:::main N_InitializeTrainMessageArrays_Node0 -- Yes --> N_InitializeTrainMessageArrays_Node0_action N_InitializeTrainMessageArrays_Node0_action --> E_InitializeTrainMessageArrays S_InitializeTrainMessageArrays --> N_InitializeTrainMessageArrays_Node0 N_InitializeTrainMessageArrays_Node1{"The system begins message array
initialization"}:::decision N_InitializeTrainMessageArrays_Node1_action["Message arrays are initialized and
prepared for M10 and V9 segment
storage"]:::main N_InitializeTrainMessageArrays_Node1 -- Yes --> N_InitializeTrainMessageArrays_Node1_action N_InitializeTrainMessageArrays_Node1_action --> E_InitializeTrainMessageArrays N_InitializeTrainMessageArrays_Node0 -- No --> N_InitializeTrainMessageArrays_Node1 N_InitializeTrainMessageArrays_Node1 -- No --> E_InitializeTrainMessageArrays
File: GCX016E.cbl
GIVEN: A train message type has been identified
WHEN: The system initializes train message arrays
THEN:
  • The system creates empty array structures ready to receive m10
  • V9 segment information
File: GCX016E.cbl
GIVEN: A train processing request is received
WHEN: The system begins message array initialization
THEN:
  • Message arrays are initialized
  • Prepared for m10
  • V9 segment storage
βœ“ Consolidated Acceptance Criteria
  • The system creates M10 segment structure → the system defines fields for vessel name, train identification, and transport 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_CreateM10SegmentStructure(["Start Step"]) E_CreateM10SegmentStructure(["End Step"]) N_CreateM10SegmentStructure_Node0{"The system creates M10 segment
structure"}:::decision N_CreateM10SegmentStructure_Node0_action["The system defines fields for
vessel name, train identification,
and transport details"]:::main N_CreateM10SegmentStructure_Node0 -- Yes --> N_CreateM10SegmentStructure_Node0_action N_CreateM10SegmentStructure_Node0_action --> E_CreateM10SegmentStructure S_CreateM10SegmentStructure --> N_CreateM10SegmentStructure_Node0 N_CreateM10SegmentStructure_Node0 -- No --> E_CreateM10SegmentStructure
File: GCX016E.cbl
GIVEN: Train message arrays are being initialized
WHEN: The system creates M10 segment structure
THEN: The system defines fields for vessel name, train identification, and transport details
βœ“ Consolidated Acceptance Criteria
  • The system sets vessel/train information → the system assigns vessel name, train number, and train identification data to the 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_SetVesselTrainInformation(["Start Step"]) E_SetVesselTrainInformation(["End Step"]) N_SetVesselTrainInformation_Node0{"The system sets vesseltrain
information"}:::decision N_SetVesselTrainInformation_Node0_action["The system assigns vessel name,
train number, and train
identification data to the M10
segment"]:::main N_SetVesselTrainInformation_Node0 -- Yes --> N_SetVesselTrainInformation_Node0_action N_SetVesselTrainInformation_Node0_action --> E_SetVesselTrainInformation S_SetVesselTrainInformation --> N_SetVesselTrainInformation_Node0 N_SetVesselTrainInformation_Node0 -- No --> E_SetVesselTrainInformation
File: GCX016E.cbl
GIVEN: M10 segment structure has been created
WHEN: The system sets vessel/train information
THEN: The system assigns vessel name, train number, and train identification data to the M10 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets SCAC and transport type → the system populates SCAC code and transport mode information in the 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_SetSCACandTransportType(["Start Step"]) E_SetSCACandTransportType(["End Step"]) N_SetSCACandTransportType_Node0{"The system sets SCAC and transport
type"}:::decision N_SetSCACandTransportType_Node0_action["The system populates SCAC code and
transport mode information in the
M10 segment"]:::main N_SetSCACandTransportType_Node0 -- Yes --> N_SetSCACandTransportType_Node0_action N_SetSCACandTransportType_Node0_action --> E_SetSCACandTransportType S_SetSCACandTransportType --> N_SetSCACandTransportType_Node0 N_SetSCACandTransportType_Node0 -- No --> E_SetSCACandTransportType
File: GCX016E.cbl
GIVEN: Vessel/train information has been set in the M10 segment
WHEN:
  • The system sets scac
  • Transport type
THEN:
  • The system populates scac code
  • Transport mode information in the m10 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets country code details → the system assigns origin country code and destination country code to the 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_SetCountryCodeDetails(["Start Step"]) E_SetCountryCodeDetails(["End Step"]) N_SetCountryCodeDetails_Node0{"The system sets country code
details"}:::decision N_SetCountryCodeDetails_Node0_action["The system assigns origin country
code and destination country code to
the M10 segment"]:::main N_SetCountryCodeDetails_Node0 -- Yes --> N_SetCountryCodeDetails_Node0_action N_SetCountryCodeDetails_Node0_action --> E_SetCountryCodeDetails S_SetCountryCodeDetails --> N_SetCountryCodeDetails_Node0 N_SetCountryCodeDetails_Node0 -- No --> E_SetCountryCodeDetails
File: GCX016E.cbl
GIVEN: SCAC and transport type have been set in the M10 segment
WHEN: The system sets country code details
THEN:
  • The system assigns origin country code
  • Destination country code to the m10 segment
βœ“ Consolidated Acceptance Criteria
  • The system creates V9 segment structure → the system defines fields for event codes, status information, and location 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_CreateV9SegmentStructure(["Start Step"]) E_CreateV9SegmentStructure(["End Step"]) N_CreateV9SegmentStructure_Node0{"The system creates V9 segment
structure"}:::decision N_CreateV9SegmentStructure_Node0_action["The system defines fields for event
codes, status information, and
location data"]:::main N_CreateV9SegmentStructure_Node0 -- Yes --> N_CreateV9SegmentStructure_Node0_action N_CreateV9SegmentStructure_Node0_action --> E_CreateV9SegmentStructure S_CreateV9SegmentStructure --> N_CreateV9SegmentStructure_Node0 N_CreateV9SegmentStructure_Node0 -- No --> E_CreateV9SegmentStructure
File: GCX016E.cbl
GIVEN: M10 segment has been completed with country code details
WHEN: The system creates V9 segment structure
THEN: The system defines fields for event codes, status information, and location data
βœ“ Consolidated Acceptance Criteria
  • The system sets event information → the system assigns event code, event date, event time, and event description to the V9 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_SetEventInformation(["Start Step"]) E_SetEventInformation(["End Step"]) N_SetEventInformation_Node0{"The system sets event information"}:::decision N_SetEventInformation_Node0_action["The system assigns event code,
event date, event time, and event
description to the V9 segment"]:::main N_SetEventInformation_Node0 -- Yes --> N_SetEventInformation_Node0_action N_SetEventInformation_Node0_action --> E_SetEventInformation S_SetEventInformation --> N_SetEventInformation_Node0 N_SetEventInformation_Node0 -- No --> E_SetEventInformation
File: GCX016E.cbl
GIVEN: V9 segment structure has been created
WHEN: The system sets event information
THEN: The system assigns event code, event date, event time, and event description to the V9 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets disposition code → the system populates disposition code and related processing flags in the V9 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_SetDispositionCode(["Start Step"]) E_SetDispositionCode(["End Step"]) N_SetDispositionCode_Node0{"The system sets disposition code"}:::decision N_SetDispositionCode_Node0_action["The system populates disposition
code and related processing flags in
the V9 segment"]:::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: GCX016E.cbl
GIVEN: Event information has been set in the V9 segment
WHEN: The system sets disposition code
THEN:
  • The system populates disposition code
  • Related processing flags in the v9 segment
βœ“ Consolidated Acceptance Criteria
  • The system sets location data → the system assigns location code, location name, and geographic coordinates to the V9 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_SetLocationData(["Start Step"]) E_SetLocationData(["End Step"]) N_SetLocationData_Node0{"The system sets location data"}:::decision N_SetLocationData_Node0_action["The system assigns location code,
location name, and geographic
coordinates to the V9 segment"]:::main N_SetLocationData_Node0 -- Yes --> N_SetLocationData_Node0_action N_SetLocationData_Node0_action --> E_SetLocationData S_SetLocationData --> N_SetLocationData_Node0 N_SetLocationData_Node0 -- No --> E_SetLocationData
File: GCX016E.cbl
GIVEN: Disposition code has been set in the V9 segment
WHEN: The system sets location data
THEN: The system assigns location code, location name, and geographic coordinates to the V9 segment
βœ“ Consolidated Acceptance Criteria
  • The system validates segment completeness → the system checks that all mandatory fields contain valid data and all segment structures are properly formed
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateSegmentCompleteness(["Start Step"]) E_ValidateSegmentCompleteness(["End Step"]) N_ValidateSegmentCompleteness_Node0{"The system validates segment
completeness"}:::decision N_ValidateSegmentCompleteness_Node0_action["The system checks that all
mandatory fields contain valid data
and all segment structures are
properly formed"]:::main N_ValidateSegmentCompleteness_Node0 -- Yes --> N_ValidateSegmentCompleteness_Node0_action N_ValidateSegmentCompleteness_Node0_action --> E_ValidateSegmentCompleteness S_ValidateSegmentCompleteness --> N_ValidateSegmentCompleteness_Node0 N_ValidateSegmentCompleteness_Node0 -- No --> E_ValidateSegmentCompleteness
File: GCX016E.cbl
GIVEN: All segment structures have been created and populated
WHEN: The system validates segment completeness
THEN:
  • The system checks that all mandatory fields contain valid data
  • All segment structures are properly formed
βœ“ Consolidated Acceptance Criteria
  • The system checks if all required fields are set → the system returns true if all mandatory fields contain valid data, otherwise returns 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_AllRequiredFieldsSet(["Start Step"]) E_AllRequiredFieldsSet(["End Step"]) N_AllRequiredFieldsSet_Node0{"The system checks if all required
fields are set"}:::decision N_AllRequiredFieldsSet_Node0_action["The system returns true if all
mandatory fields contain valid data,
otherwise returns false"]:::main N_AllRequiredFieldsSet_Node0 -- Yes --> N_AllRequiredFieldsSet_Node0_action N_AllRequiredFieldsSet_Node0_action --> E_AllRequiredFieldsSet S_AllRequiredFieldsSet --> N_AllRequiredFieldsSet_Node0 N_AllRequiredFieldsSet_Node0 -- No --> E_AllRequiredFieldsSet
File: GCX016E.cbl
GIVEN: Segment completeness validation has been performed
WHEN: The system checks if all required fields are set
THEN: The system returns true if all mandatory fields contain valid data, otherwise returns false
βœ“ Consolidated Acceptance Criteria
  • The system marks arrays ready for processing → the system sets the ready status flag and makes the arrays available for message processing
  • The system marks arrays ready for processing → arrays are flagged as ready and available for subsequent train 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_MarkArraysReadyforProcessing(["Start Step"]) E_MarkArraysReadyforProcessing(["End Step"]) N_MarkArraysReadyforProcessing_Node0{"The system marks arrays ready for
processing"}:::decision N_MarkArraysReadyforProcessing_Node0_action["The system sets the ready status
flag and makes the arrays available
for message processing"]:::main N_MarkArraysReadyforProcessing_Node0 -- Yes --> N_MarkArraysReadyforProcessing_Node0_action N_MarkArraysReadyforProcessing_Node0_action --> E_MarkArraysReadyforProcessing S_MarkArraysReadyforProcessing --> N_MarkArraysReadyforProcessing_Node0 N_MarkArraysReadyforProcessing_Node1{"The system marks arrays ready for
processing"}:::decision N_MarkArraysReadyforProcessing_Node1_action["Arrays are flagged as ready and
available for subsequent train
processing operations"]:::main N_MarkArraysReadyforProcessing_Node1 -- Yes --> N_MarkArraysReadyforProcessing_Node1_action N_MarkArraysReadyforProcessing_Node1_action --> E_MarkArraysReadyforProcessing N_MarkArraysReadyforProcessing_Node0 -- No --> N_MarkArraysReadyforProcessing_Node1 N_MarkArraysReadyforProcessing_Node1 -- No --> E_MarkArraysReadyforProcessing
File: GCX016E.cbl
GIVEN: All required fields validation check returns true
WHEN: The system marks arrays ready for processing
THEN:
  • The system sets the ready status flag
  • Makes the arrays available for message processing
File: GCX016E.cbl
GIVEN: Array counters are set and segments are properly stored
WHEN: The system marks arrays ready for processing
THEN:
  • Arrays are flagged as ready
  • Available for subsequent train processing operations
βœ“ Consolidated Acceptance Criteria
  • The system logs initialization error → the system records error details including missing fields and sets error status for the initialization 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_LogInitializationError(["Start Step"]) E_LogInitializationError(["End Step"]) N_LogInitializationError_Node0{"The system logs initialization
error"}:::decision N_LogInitializationError_Node0_action["The system records error details
including missing fields and sets
error status for the initialization
process"]:::exclusion N_LogInitializationError_Node0 -- Yes -->|Alternative| N_LogInitializationError_Node0_action N_LogInitializationError_Node0_action --> E_LogInitializationError S_LogInitializationError --> N_LogInitializationError_Node0 N_LogInitializationError_Node0 -- No --> E_LogInitializationError
File: GCX016E.cbl
GIVEN: All required fields validation check returns false
WHEN: The system logs initialization error
THEN:
  • The system records error details including missing fields
  • Sets error status for the initialization process
βœ“ Consolidated Acceptance Criteria
  • The system detects a cargo processing event → the system should trigger the audit 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_CargoProcessingActionOccurs(["Start Step"]) E_CargoProcessingActionOccurs(["End Step"]) N_CargoProcessingActionOccurs_Node0{"The system detects a cargo
processing event"}:::decision N_CargoProcessingActionOccurs_Node0_action["The system should trigger the audit
logging process"]:::main N_CargoProcessingActionOccurs_Node0 -- Yes --> N_CargoProcessingActionOccurs_Node0_action N_CargoProcessingActionOccurs_Node0_action --> E_CargoProcessingActionOccurs S_CargoProcessingActionOccurs --> N_CargoProcessingActionOccurs_Node0 N_CargoProcessingActionOccurs_Node0 -- No --> E_CargoProcessingActionOccurs
File: GCX016E.cbl
GIVEN: A cargo processing action has been initiated
WHEN: The system detects a cargo processing event
THEN: The system should trigger the audit logging process
βœ“ Consolidated Acceptance Criteria
  • The audit logging process is initiated → the system should prepare the audit log entry structure with all required fields
  • The system initiates audit log preparation → an audit log entry structure is prepared to capture the cargo processing action 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_PrepareAuditLogEntry(["Start Step"]) E_PrepareAuditLogEntry(["End Step"]) N_PrepareAuditLogEntry_Node0{"The audit logging process is
initiated"}:::decision N_PrepareAuditLogEntry_Node0_action["The system should prepare the audit
log entry structure with all
required fields"]:::main N_PrepareAuditLogEntry_Node0 -- Yes --> N_PrepareAuditLogEntry_Node0_action N_PrepareAuditLogEntry_Node0_action --> E_PrepareAuditLogEntry S_PrepareAuditLogEntry --> N_PrepareAuditLogEntry_Node0 N_PrepareAuditLogEntry_Node1{"The system initiates audit log
preparation"}:::decision N_PrepareAuditLogEntry_Node1_action["An audit log entry structure is
prepared to capture the cargo
processing action details"]:::main N_PrepareAuditLogEntry_Node1 -- Yes --> N_PrepareAuditLogEntry_Node1_action N_PrepareAuditLogEntry_Node1_action --> E_PrepareAuditLogEntry N_PrepareAuditLogEntry_Node0 -- No --> N_PrepareAuditLogEntry_Node1 N_PrepareAuditLogEntry_Node1 -- No --> E_PrepareAuditLogEntry
File: GCX016E.cbl
GIVEN: A cargo processing action needs to be logged
WHEN: The audit logging process is initiated
THEN: The system should prepare the audit log entry structure with all required fields
File: GCX016E.cbl
GIVEN: A cargo processing action has occurred that requires audit logging
WHEN: The system initiates audit log preparation
THEN: An audit log entry structure is prepared to capture the cargo processing action details
βœ“ Consolidated Acceptance Criteria
  • The system sets up the log entry parameters → the action code should be set to LOG-USE-INPUT-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_SetLOGUSEINPUTMESSAGEActionCode(["Start Step"]) E_SetLOGUSEINPUTMESSAGEActionCode(["End Step"]) N_SetLOGUSEINPUTMESSAGEActionCode_Node0{"The system sets up the log entry
parameters"}:::decision N_SetLOGUSEINPUTMESSAGEActionCode_Node0_action["The action code should be set to
LOG-USE-INPUT-MESSAGE"]:::main N_SetLOGUSEINPUTMESSAGEActionCode_Node0 -- Yes --> N_SetLOGUSEINPUTMESSAGEActionCode_Node0_action N_SetLOGUSEINPUTMESSAGEActionCode_Node0_action --> E_SetLOGUSEINPUTMESSAGEActionCode S_SetLOGUSEINPUTMESSAGEActionCode --> N_SetLOGUSEINPUTMESSAGEActionCode_Node0 N_SetLOGUSEINPUTMESSAGEActionCode_Node0 -- No --> E_SetLOGUSEINPUTMESSAGEActionCode
File: GCX016E.cbl
GIVEN: An audit log entry is being prepared for cargo processing
WHEN: The system sets up the log entry parameters
THEN: The action code should be set to LOG-USE-INPUT-MESSAGE
βœ“ Consolidated Acceptance Criteria
  • The system captures audit information → the current timestamp should be recorded in the log entry
  • The system captures timestamp information → the current date and time are recorded in the audit log entry for tracking when the action 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_CaptureTimestampInformation(["Start Step"]) E_CaptureTimestampInformation(["End Step"]) N_CaptureTimestampInformation_Node0{"The system captures audit
information"}:::decision N_CaptureTimestampInformation_Node0_action["The current timestamp should be
recorded in the log entry"]:::main N_CaptureTimestampInformation_Node0 -- Yes --> N_CaptureTimestampInformation_Node0_action N_CaptureTimestampInformation_Node0_action --> E_CaptureTimestampInformation S_CaptureTimestampInformation --> N_CaptureTimestampInformation_Node0 N_CaptureTimestampInformation_Node1{"The system captures timestamp
information"}:::decision N_CaptureTimestampInformation_Node1_action["The current date and time are
recorded in the audit log entry for
tracking when the action occurred"]:::main N_CaptureTimestampInformation_Node1 -- Yes --> N_CaptureTimestampInformation_Node1_action N_CaptureTimestampInformation_Node1_action --> E_CaptureTimestampInformation N_CaptureTimestampInformation_Node0 -- No --> N_CaptureTimestampInformation_Node1 N_CaptureTimestampInformation_Node1 -- No --> E_CaptureTimestampInformation
File: GCX016E.cbl
GIVEN: An audit log entry is being created
WHEN: The system captures audit information
THEN: The current timestamp should be recorded in the log entry
File: GCX016E.cbl
GIVEN: An audit log entry is being prepared for a cargo processing action
WHEN: The system captures timestamp information
THEN:
  • The current date
  • Time are recorded in the audit log entry for tracking when the action occurred
βœ“ Consolidated Acceptance Criteria
  • The system captures audit information → the user identification information should be recorded in the log entry
  • The system captures user information → the user identification and relevant user context are recorded in the audit log entry for accountability 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_CaptureUserInformation(["Start Step"]) E_CaptureUserInformation(["End Step"]) N_CaptureUserInformation_Node0{"The system captures audit
information"}:::decision N_CaptureUserInformation_Node0_action["The user identification information
should be recorded in the log entry"]:::main N_CaptureUserInformation_Node0 -- Yes --> N_CaptureUserInformation_Node0_action N_CaptureUserInformation_Node0_action --> E_CaptureUserInformation S_CaptureUserInformation --> N_CaptureUserInformation_Node0 N_CaptureUserInformation_Node1{"The system captures user
information"}:::decision N_CaptureUserInformation_Node1_action["The user identification and
relevant user context are recorded
in the audit log entry for
accountability tracking"]:::main N_CaptureUserInformation_Node1 -- Yes --> N_CaptureUserInformation_Node1_action N_CaptureUserInformation_Node1_action --> E_CaptureUserInformation N_CaptureUserInformation_Node0 -- No --> N_CaptureUserInformation_Node1 N_CaptureUserInformation_Node1 -- No --> E_CaptureUserInformation
File: GCX016E.cbl
GIVEN: An audit log entry is being created
WHEN: The system captures audit information
THEN: The user identification information should be recorded in the log entry
File: GCX016E.cbl
GIVEN: An audit log entry is being prepared with timestamp information
WHEN: The system captures user information
THEN:
  • The user identification
  • Relevant user context are recorded in the audit log entry for accountability tracking
βœ“ Consolidated Acceptance Criteria
  • The system captures audit information → the specific cargo processing details should be recorded 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_CaptureCargoProcessingDetails(["Start Step"]) E_CaptureCargoProcessingDetails(["End Step"]) N_CaptureCargoProcessingDetails_Node0{"The system captures audit
information"}:::decision N_CaptureCargoProcessingDetails_Node0_action["The specific cargo processing
details should be recorded in the
log entry"]:::main N_CaptureCargoProcessingDetails_Node0 -- Yes --> N_CaptureCargoProcessingDetails_Node0_action N_CaptureCargoProcessingDetails_Node0_action --> E_CaptureCargoProcessingDetails S_CaptureCargoProcessingDetails --> N_CaptureCargoProcessingDetails_Node0 N_CaptureCargoProcessingDetails_Node0 -- No --> E_CaptureCargoProcessingDetails
File: GCX016E.cbl
GIVEN: An audit log entry is being created for a cargo processing action
WHEN: The system captures audit information
THEN: The specific cargo processing details should be recorded in the log entry
βœ“ Consolidated Acceptance Criteria
  • The system checks the transaction spawn result → the system should determine if the spawn was successful or failed
  • The system checks the transaction spawn result → if the transaction spawn was successful, proceed to log audit entry creation, otherwise handle the logging 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_TransactionSpawnSuccessful(["Start Step"]) E_TransactionSpawnSuccessful(["End Step"]) N_TransactionSpawnSuccessful_Node0{"The system checks the transaction
spawn result"}:::decision N_TransactionSpawnSuccessful_Node0_action["The system should determine if the
spawn was successful or failed"]:::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 checks the transaction
spawn result"}:::decision N_TransactionSpawnSuccessful_Node1_action["If the transaction spawn was
successful, proceed to log audit
entry creation, otherwise handle the
logging error"]:::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: GCX016E.cbl
GIVEN: The GCT1051E transaction has been spawned for audit logging
WHEN: The system checks the transaction spawn result
THEN: The system should determine if the spawn was successful or failed
File: GCX016E.cbl
GIVEN: The GCT1051E transaction has been spawned for audit logging
WHEN: The system checks the transaction spawn result
THEN: If the transaction spawn was successful, proceed to log audit entry creation, otherwise handle the logging error
βœ“ Consolidated Acceptance Criteria
  • The system processes the successful spawn result → the system should confirm the log entry was created 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_LogEntryCreatedSuccessfully(["Start Step"]) E_LogEntryCreatedSuccessfully(["End Step"]) N_LogEntryCreatedSuccessfully_Node0{"The system processes the successful
spawn result"}:::decision N_LogEntryCreatedSuccessfully_Node0_action["The system should confirm the log
entry was created successfully"]:::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: GCX016E.cbl
GIVEN: The GCT1051E transaction spawn was successful
WHEN: The system processes the successful spawn result
THEN: The system should confirm the log entry was created successfully
βœ“ Consolidated Acceptance Criteria
  • Car ID extraction is performed → the car ID is retrieved and made available for report 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_ExtractCarID(["Start Step"]) E_ExtractCarID(["End Step"]) N_ExtractCarID_Node0{"Car ID extraction is performed"}:::decision N_ExtractCarID_Node0_action["The car ID is retrieved and made
available for report formatting"]:::main N_ExtractCarID_Node0 -- Yes --> N_ExtractCarID_Node0_action N_ExtractCarID_Node0_action --> E_ExtractCarID S_ExtractCarID --> N_ExtractCarID_Node0 N_ExtractCarID_Node0 -- No --> E_ExtractCarID
File: GCX016E.cbl
GIVEN: Cargo data contains car identification information
WHEN: Car ID extraction is performed
THEN:
  • The car id is retrieved
  • Made available for report formatting
βœ“ Consolidated Acceptance Criteria
  • Waybill number extraction is performed → the waybill number is retrieved and made available for report 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_ExtractWaybillNumber(["Start Step"]) E_ExtractWaybillNumber(["End Step"]) N_ExtractWaybillNumber_Node0{"Waybill number extraction is
performed"}:::decision N_ExtractWaybillNumber_Node0_action["The waybill number is retrieved and
made available for report formatting"]:::main N_ExtractWaybillNumber_Node0 -- Yes --> N_ExtractWaybillNumber_Node0_action N_ExtractWaybillNumber_Node0_action --> E_ExtractWaybillNumber S_ExtractWaybillNumber --> N_ExtractWaybillNumber_Node0 N_ExtractWaybillNumber_Node0 -- No --> E_ExtractWaybillNumber
File: GCX016E.cbl
GIVEN: Cargo data contains waybill information
WHEN: Waybill number extraction is performed
THEN:
  • The waybill number is retrieved
  • Made available for report formatting
βœ“ Consolidated Acceptance Criteria
  • US-CCN extraction is performed → the US-CCN is retrieved and made available for report 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_ExtractUSCCN(["Start Step"]) E_ExtractUSCCN(["End Step"]) N_ExtractUSCCN_Node0{"US-CCN extraction is performed"}:::decision N_ExtractUSCCN_Node0_action["The US-CCN is retrieved and made
available for report formatting"]:::main N_ExtractUSCCN_Node0 -- Yes --> N_ExtractUSCCN_Node0_action N_ExtractUSCCN_Node0_action --> E_ExtractUSCCN S_ExtractUSCCN --> N_ExtractUSCCN_Node0 N_ExtractUSCCN_Node0 -- No --> E_ExtractUSCCN
File: GCX016E.cbl
GIVEN: Cargo data contains US Customs Control Number information
WHEN: US-CCN extraction is performed
THEN:
  • The us-ccn is retrieved
  • Made available for report formatting
βœ“ Consolidated Acceptance Criteria
  • Disposition code retrieval is performed → the current disposition code is retrieved for formatting
  • The system needs disposition code details for Merlin reporting → the disposition code is retrieved from the disposition code table
  • The disposition code retrieval is executed → the current disposition code is retrieved from the 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_RetrieveDispositionCode(["Start Step"]) E_RetrieveDispositionCode(["End Step"]) N_RetrieveDispositionCode_Node0{"Disposition code retrieval is
performed"}:::decision N_RetrieveDispositionCode_Node0_action["The current disposition code is
retrieved for formatting"]:::main N_RetrieveDispositionCode_Node0 -- Yes --> N_RetrieveDispositionCode_Node0_action N_RetrieveDispositionCode_Node0_action --> E_RetrieveDispositionCode S_RetrieveDispositionCode --> N_RetrieveDispositionCode_Node0 N_RetrieveDispositionCode_Node1{"The system needs disposition code
details for Merlin reporting"}:::decision N_RetrieveDispositionCode_Node1_action["The disposition code is retrieved
from the disposition code table"]:::main N_RetrieveDispositionCode_Node1 -- Yes --> N_RetrieveDispositionCode_Node1_action N_RetrieveDispositionCode_Node1_action --> E_RetrieveDispositionCode N_RetrieveDispositionCode_Node0 -- No --> N_RetrieveDispositionCode_Node1 N_RetrieveDispositionCode_Node2{"The disposition code retrieval is
executed"}:::decision N_RetrieveDispositionCode_Node2_action["The current disposition code is
retrieved from the processing
context"]:::main N_RetrieveDispositionCode_Node2 -- Yes --> N_RetrieveDispositionCode_Node2_action N_RetrieveDispositionCode_Node2_action --> E_RetrieveDispositionCode N_RetrieveDispositionCode_Node1 -- No --> N_RetrieveDispositionCode_Node2 N_RetrieveDispositionCode_Node2 -- No --> E_RetrieveDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is being processed
WHEN: Disposition code retrieval is performed
THEN: The current disposition code is retrieved for formatting
File: GCX016E.cbl
GIVEN: A disposition code identifier exists
WHEN: The system needs disposition code details for Merlin reporting
THEN: The disposition code is retrieved from the disposition code table
File: GCX016E.cbl
GIVEN: A cargo is being processed with a disposition code
WHEN: The disposition code retrieval is executed
THEN: The current disposition code is retrieved from the processing context
βœ“ Consolidated Acceptance Criteria
  • Disposition description lookup is performed → the corresponding description is retrieved from the disposition code table
  • The disposition description lookup is performed → the corresponding description is retrieved 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_RetrieveDispositionDescription(["Start Step"]) E_RetrieveDispositionDescription(["End Step"]) N_RetrieveDispositionDescription_Node0{"Disposition description lookup is
performed"}:::decision N_RetrieveDispositionDescription_Node0_action["The corresponding description is
retrieved from the disposition code
table"]:::main N_RetrieveDispositionDescription_Node0 -- Yes --> N_RetrieveDispositionDescription_Node0_action N_RetrieveDispositionDescription_Node0_action --> E_RetrieveDispositionDescription S_RetrieveDispositionDescription --> N_RetrieveDispositionDescription_Node0 N_RetrieveDispositionDescription_Node1{"The disposition description lookup
is performed"}:::decision N_RetrieveDispositionDescription_Node1_action["The corresponding description is
retrieved from the disposition code
table"]:::main N_RetrieveDispositionDescription_Node1 -- Yes --> N_RetrieveDispositionDescription_Node1_action N_RetrieveDispositionDescription_Node1_action --> E_RetrieveDispositionDescription N_RetrieveDispositionDescription_Node0 -- No --> N_RetrieveDispositionDescription_Node1 N_RetrieveDispositionDescription_Node1 -- No --> E_RetrieveDispositionDescription
File: GCX016E.cbl
GIVEN: A disposition code exists and disposition code table is available
WHEN: Disposition description lookup is performed
THEN: The corresponding description is retrieved from the disposition code table
File: GCX016E.cbl
GIVEN: A disposition code has been identified
WHEN: The disposition description lookup is performed
THEN: The corresponding description is retrieved from the disposition code table
βœ“ Consolidated Acceptance Criteria
  • USCS processing time formatting is performed → uSCS processing time is formatted for the report
  • The system processes USCS timing information for Merlin reporting → the USCS processing time is formatted according to report standards
  • The USCS processing time formatting is executed → the USCS processing time is formatted 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_FormatUSCSProcessingTime(["Start Step"]) E_FormatUSCSProcessingTime(["End Step"]) N_FormatUSCSProcessingTime_Node0{"USCS processing time formatting is
performed"}:::decision N_FormatUSCSProcessingTime_Node0_action["USCS processing time is formatted
for the report"]:::main N_FormatUSCSProcessingTime_Node0 -- Yes --> N_FormatUSCSProcessingTime_Node0_action N_FormatUSCSProcessingTime_Node0_action --> E_FormatUSCSProcessingTime S_FormatUSCSProcessingTime --> N_FormatUSCSProcessingTime_Node0 N_FormatUSCSProcessingTime_Node1{"The system processes USCS timing
information for Merlin reporting"}:::decision N_FormatUSCSProcessingTime_Node1_action["The USCS processing time is
formatted according to report
standards"]:::main N_FormatUSCSProcessingTime_Node1 -- Yes --> N_FormatUSCSProcessingTime_Node1_action N_FormatUSCSProcessingTime_Node1_action --> E_FormatUSCSProcessingTime N_FormatUSCSProcessingTime_Node0 -- No --> N_FormatUSCSProcessingTime_Node1 N_FormatUSCSProcessingTime_Node2{"The USCS processing time formatting
is executed"}:::decision N_FormatUSCSProcessingTime_Node2_action["The USCS processing time is
formatted for report display"]:::main N_FormatUSCSProcessingTime_Node2 -- Yes --> N_FormatUSCSProcessingTime_Node2_action N_FormatUSCSProcessingTime_Node2_action --> E_FormatUSCSProcessingTime N_FormatUSCSProcessingTime_Node1 -- No --> N_FormatUSCSProcessingTime_Node2 N_FormatUSCSProcessingTime_Node2 -- No --> E_FormatUSCSProcessingTime
File: GCX016E.cbl
GIVEN: USCS processing time information is available
WHEN: USCS processing time formatting is performed
THEN: USCS processing time is formatted for the report
File: GCX016E.cbl
GIVEN: USCS processing time data is available
WHEN: The system processes USCS timing information for Merlin reporting
THEN: The USCS processing time is formatted according to report standards
File: GCX016E.cbl
GIVEN: USCS processing time information is available
WHEN: The USCS processing time formatting is executed
THEN: The USCS processing time is formatted for report display
βœ“ Consolidated Acceptance Criteria
  • System processing time formatting is performed → system processing time is formatted for the report
  • The system processes internal timing information for Merlin reporting → the system processing time is formatted according to report requirements
  • The system processing time formatting is executed → the system processing time is formatted 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_FormatSystemProcessingTime(["Start Step"]) E_FormatSystemProcessingTime(["End Step"]) N_FormatSystemProcessingTime_Node0{"System processing time formatting
is performed"}:::decision N_FormatSystemProcessingTime_Node0_action["System processing time is formatted
for the report"]:::main N_FormatSystemProcessingTime_Node0 -- Yes --> N_FormatSystemProcessingTime_Node0_action N_FormatSystemProcessingTime_Node0_action --> E_FormatSystemProcessingTime S_FormatSystemProcessingTime --> N_FormatSystemProcessingTime_Node0 N_FormatSystemProcessingTime_Node1{"The system processes internal
timing information for Merlin
reporting"}:::decision N_FormatSystemProcessingTime_Node1_action["The system processing time is
formatted according to report
requirements"]:::main N_FormatSystemProcessingTime_Node1 -- Yes --> N_FormatSystemProcessingTime_Node1_action N_FormatSystemProcessingTime_Node1_action --> E_FormatSystemProcessingTime N_FormatSystemProcessingTime_Node0 -- No --> N_FormatSystemProcessingTime_Node1 N_FormatSystemProcessingTime_Node2{"The system processing time
formatting is executed"}:::decision N_FormatSystemProcessingTime_Node2_action["The system processing time is
formatted for report display"]:::main N_FormatSystemProcessingTime_Node2 -- Yes --> N_FormatSystemProcessingTime_Node2_action N_FormatSystemProcessingTime_Node2_action --> E_FormatSystemProcessingTime N_FormatSystemProcessingTime_Node1 -- No --> N_FormatSystemProcessingTime_Node2 N_FormatSystemProcessingTime_Node2 -- No --> E_FormatSystemProcessingTime
File: GCX016E.cbl
GIVEN: System processing time information is available
WHEN: System processing time formatting is performed
THEN: System processing time is formatted for the report
File: GCX016E.cbl
GIVEN: System processing time data is available
WHEN: The system processes internal timing information for Merlin reporting
THEN: The system processing time is formatted according to report requirements
File: GCX016E.cbl
GIVEN: System processing time information is available
WHEN: The system processing time formatting is executed
THEN: The system processing time is formatted for report display
βœ“ Consolidated Acceptance Criteria
  • Release quantity impact logic is applied → the system determines whether the disposition code affects release quantities
  • If the disposition code's impact on release quantities → the system determines whether the disposition code affects release quantities based on business rules
  • The release quantity impact logic is applied → the system determines if the disposition code affects 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_ApplyReleaseQuantityImpactLogic(["Start Step"]) E_ApplyReleaseQuantityImpactLogic(["End Step"]) N_ApplyReleaseQuantityImpactLogic_Node0{"Release quantity impact logic is
applied"}:::decision N_ApplyReleaseQuantityImpactLogic_Node0_action["The system determines whether the
disposition code affects release
quantities"]:::main N_ApplyReleaseQuantityImpactLogic_Node0 -- Yes --> N_ApplyReleaseQuantityImpactLogic_Node0_action N_ApplyReleaseQuantityImpactLogic_Node0_action --> E_ApplyReleaseQuantityImpactLogic S_ApplyReleaseQuantityImpactLogic --> N_ApplyReleaseQuantityImpactLogic_Node0 N_ApplyReleaseQuantityImpactLogic_Node1{"The system evaluates the
disposition code s impact on release
quantities"}:::decision N_ApplyReleaseQuantityImpactLogic_Node1_action["The system determines whether the
disposition code affects release
quantities based on business rules"]:::main N_ApplyReleaseQuantityImpactLogic_Node1 -- Yes --> N_ApplyReleaseQuantityImpactLogic_Node1_action N_ApplyReleaseQuantityImpactLogic_Node1_action --> E_ApplyReleaseQuantityImpactLogic N_ApplyReleaseQuantityImpactLogic_Node0 -- No --> N_ApplyReleaseQuantityImpactLogic_Node1 N_ApplyReleaseQuantityImpactLogic_Node2{"The release quantity impact logic
is applied"}:::decision N_ApplyReleaseQuantityImpactLogic_Node2_action["The system determines if the
disposition code affects release
quantities"]:::main N_ApplyReleaseQuantityImpactLogic_Node2 -- Yes --> N_ApplyReleaseQuantityImpactLogic_Node2_action N_ApplyReleaseQuantityImpactLogic_Node2_action --> E_ApplyReleaseQuantityImpactLogic N_ApplyReleaseQuantityImpactLogic_Node1 -- No --> N_ApplyReleaseQuantityImpactLogic_Node2 N_ApplyReleaseQuantityImpactLogic_Node2 -- No --> E_ApplyReleaseQuantityImpactLogic
File: GCX016E.cbl
GIVEN: A disposition code is being processed
WHEN: Release quantity impact logic is applied
THEN: The system determines whether the disposition code affects release quantities
File: GCX016E.cbl
GIVEN: A disposition code is being processed for Merlin reporting
WHEN: The system evaluates the disposition code's impact on release quantities
THEN: The system determines whether the disposition code affects release quantities based on business rules
File: GCX016E.cbl
GIVEN: A disposition code is being processed for a cargo
WHEN: The release quantity impact logic is applied
THEN: The system determines if the disposition code affects release quantities
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code affects release quantities → the system returns yes if the code affects quantities, no if it does not
  • The system checks if the disposition code affects release quantities → the system returns true if the disposition code should affect quantities, 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_ShouldDispositionCodeAffectReleaseQuantities(["Start Step"]) E_ShouldDispositionCodeAffectReleaseQuantities(["End Step"]) N_ShouldDispositionCodeAffectReleaseQuantities_Node0{"The system checks if the
disposition code affects release
quantities"}:::decision N_ShouldDispositionCodeAffectReleaseQuantities_Node0_action["The system returns yes if the code
affects quantities, no if it does
not"]:::main N_ShouldDispositionCodeAffectReleaseQuantities_Node0 -- Yes --> N_ShouldDispositionCodeAffectReleaseQuantities_Node0_action N_ShouldDispositionCodeAffectReleaseQuantities_Node0_action --> E_ShouldDispositionCodeAffectReleaseQuantities S_ShouldDispositionCodeAffectReleaseQuantities --> N_ShouldDispositionCodeAffectReleaseQuantities_Node0 N_ShouldDispositionCodeAffectReleaseQuantities_Node1{"The system checks if the
disposition code affects release
quantities"}:::decision N_ShouldDispositionCodeAffectReleaseQuantities_Node1_action["The system returns true if the
disposition code should affect
quantities, false otherwise"]:::main N_ShouldDispositionCodeAffectReleaseQuantities_Node1 -- Yes --> N_ShouldDispositionCodeAffectReleaseQuantities_Node1_action N_ShouldDispositionCodeAffectReleaseQuantities_Node1_action --> E_ShouldDispositionCodeAffectReleaseQuantities N_ShouldDispositionCodeAffectReleaseQuantities_Node0 -- No --> N_ShouldDispositionCodeAffectReleaseQuantities_Node1 N_ShouldDispositionCodeAffectReleaseQuantities_Node1 -- No --> E_ShouldDispositionCodeAffectReleaseQuantities
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated for quantity impact
WHEN: The system checks if the disposition code affects release quantities
THEN: The system returns yes if the code affects quantities, no if it does not
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated for quantity impact
WHEN: The system checks if the disposition code affects release quantities
THEN: The system returns true if the disposition code should affect quantities, false otherwise
βœ“ Consolidated Acceptance Criteria
  • Report formatting includes quantity impact processing → quantity impact information is included in the report
  • The system formats the Merlin report → the quantity impact information is included in the report
  • The quantity impact inclusion process is executed → the quantity impact information is included in the Merlin report 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_IncludeQuantityImpactinReport(["Start Step"]) E_IncludeQuantityImpactinReport(["End Step"]) N_IncludeQuantityImpactinReport_Node0{"Report formatting includes quantity
impact processing"}:::decision N_IncludeQuantityImpactinReport_Node0_action["Quantity impact information is
included in the report"]:::main N_IncludeQuantityImpactinReport_Node0 -- Yes --> N_IncludeQuantityImpactinReport_Node0_action N_IncludeQuantityImpactinReport_Node0_action --> E_IncludeQuantityImpactinReport S_IncludeQuantityImpactinReport --> N_IncludeQuantityImpactinReport_Node0 N_IncludeQuantityImpactinReport_Node1{"The system formats the Merlin
report"}:::decision N_IncludeQuantityImpactinReport_Node1_action["The quantity impact information is
included in the report"]:::main N_IncludeQuantityImpactinReport_Node1 -- Yes --> N_IncludeQuantityImpactinReport_Node1_action N_IncludeQuantityImpactinReport_Node1_action --> E_IncludeQuantityImpactinReport N_IncludeQuantityImpactinReport_Node0 -- No --> N_IncludeQuantityImpactinReport_Node1 N_IncludeQuantityImpactinReport_Node2{"The quantity impact inclusion
process is executed"}:::decision N_IncludeQuantityImpactinReport_Node2_action["The quantity impact information is
included in the Merlin report fields"]:::main N_IncludeQuantityImpactinReport_Node2 -- Yes --> N_IncludeQuantityImpactinReport_Node2_action N_IncludeQuantityImpactinReport_Node2_action --> E_IncludeQuantityImpactinReport N_IncludeQuantityImpactinReport_Node1 -- No --> N_IncludeQuantityImpactinReport_Node2 N_IncludeQuantityImpactinReport_Node2 -- No --> E_IncludeQuantityImpactinReport
File: GCX016E.cbl
GIVEN: A disposition code affects release quantities
WHEN: Report formatting includes quantity impact processing
THEN: Quantity impact information is included in the report
File: GCX016E.cbl
GIVEN: A disposition code affects release quantities
WHEN: The system formats the Merlin report
THEN: The quantity impact information is included in the report
File: GCX016E.cbl
GIVEN: A disposition code affects release quantities
WHEN: The quantity impact inclusion process is executed
THEN: The quantity impact information is included in the Merlin report fields
βœ“ Consolidated Acceptance Criteria
  • Report formatting excludes quantity impact processing → quantity impact information is excluded from the report
  • The system formats the Merlin report → the quantity impact information is excluded from the report
  • The quantity impact exclusion process is executed → the quantity impact information is excluded from the Merlin report 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_ExcludeQuantityImpactfromReport(["Start Step"]) E_ExcludeQuantityImpactfromReport(["End Step"]) N_ExcludeQuantityImpactfromReport_Node0{"Report formatting excludes quantity
impact processing"}:::decision N_ExcludeQuantityImpactfromReport_Node0_action["Quantity impact information is
excluded from the report"]:::main N_ExcludeQuantityImpactfromReport_Node0 -- Yes --> N_ExcludeQuantityImpactfromReport_Node0_action N_ExcludeQuantityImpactfromReport_Node0_action --> E_ExcludeQuantityImpactfromReport S_ExcludeQuantityImpactfromReport --> N_ExcludeQuantityImpactfromReport_Node0 N_ExcludeQuantityImpactfromReport_Node1{"The system formats the Merlin
report"}:::decision N_ExcludeQuantityImpactfromReport_Node1_action["The quantity impact information is
excluded from the report"]:::main N_ExcludeQuantityImpactfromReport_Node1 -- Yes --> N_ExcludeQuantityImpactfromReport_Node1_action N_ExcludeQuantityImpactfromReport_Node1_action --> E_ExcludeQuantityImpactfromReport N_ExcludeQuantityImpactfromReport_Node0 -- No --> N_ExcludeQuantityImpactfromReport_Node1 N_ExcludeQuantityImpactfromReport_Node2{"The quantity impact exclusion
process is executed"}:::decision N_ExcludeQuantityImpactfromReport_Node2_action["The quantity impact information is
excluded from the Merlin report
fields"]:::main N_ExcludeQuantityImpactfromReport_Node2 -- Yes --> N_ExcludeQuantityImpactfromReport_Node2_action N_ExcludeQuantityImpactfromReport_Node2_action --> E_ExcludeQuantityImpactfromReport N_ExcludeQuantityImpactfromReport_Node1 -- No --> N_ExcludeQuantityImpactfromReport_Node2 N_ExcludeQuantityImpactfromReport_Node2 -- No --> E_ExcludeQuantityImpactfromReport
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code does not affect release quantities
WHEN: Report formatting excludes quantity impact processing
THEN: Quantity impact information is excluded from the report
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code does not affect release quantities
WHEN: The system formats the Merlin report
THEN: The quantity impact information is excluded from the report
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code does not affect release quantities
WHEN: The quantity impact exclusion process is executed
THEN: The quantity impact information is excluded from the Merlin report fields
βœ“ Consolidated Acceptance Criteria
  • Element combination is performed → all formatted elements are combined into a unified report 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_CombineAllFormattedElements(["Start Step"]) E_CombineAllFormattedElements(["End Step"]) N_CombineAllFormattedElements_Node0{"Element combination is performed"}:::decision N_CombineAllFormattedElements_Node0_action["All formatted elements are combined
into a unified report structure"]:::main N_CombineAllFormattedElements_Node0 -- Yes --> N_CombineAllFormattedElements_Node0_action N_CombineAllFormattedElements_Node0_action --> E_CombineAllFormattedElements S_CombineAllFormattedElements --> N_CombineAllFormattedElements_Node0 N_CombineAllFormattedElements_Node0 -- No --> E_CombineAllFormattedElements
File: GCX016E.cbl
GIVEN: All report elements have been individually formatted
WHEN: Element combination is performed
THEN: All formatted elements are combined into a unified report structure
βœ“ Consolidated Acceptance Criteria
  • Final report generation is performed → a complete formatted Merlin report 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_GenerateFinalMerlinReportFormat(["Start Step"]) E_GenerateFinalMerlinReportFormat(["End Step"]) N_GenerateFinalMerlinReportFormat_Node0{"Final report generation is
performed"}:::decision N_GenerateFinalMerlinReportFormat_Node0_action["A complete formatted Merlin report
is generated"]:::main N_GenerateFinalMerlinReportFormat_Node0 -- Yes --> N_GenerateFinalMerlinReportFormat_Node0_action N_GenerateFinalMerlinReportFormat_Node0_action --> E_GenerateFinalMerlinReportFormat S_GenerateFinalMerlinReportFormat --> N_GenerateFinalMerlinReportFormat_Node0 N_GenerateFinalMerlinReportFormat_Node0 -- No --> E_GenerateFinalMerlinReportFormat
File: GCX016E.cbl
GIVEN: All report elements have been combined
WHEN: Final report generation is performed
THEN: A complete formatted Merlin report is generated
βœ“ Consolidated Acceptance Criteria
  • The system retrieves the disposition code configuration → the action type (Add, Subtract, or Status Info) is determined for 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_RetrieveDispositionCodeActionType(["Start Step"]) E_RetrieveDispositionCodeActionType(["End Step"]) N_RetrieveDispositionCodeActionType_Node0{"The system retrieves the
disposition code configuration"}:::decision N_RetrieveDispositionCodeActionType_Node0_action["The action type Add, Subtract, or
Status Info is determined for
quantity processing"]:::main N_RetrieveDispositionCodeActionType_Node0 -- Yes --> N_RetrieveDispositionCodeActionType_Node0_action N_RetrieveDispositionCodeActionType_Node0_action --> E_RetrieveDispositionCodeActionType S_RetrieveDispositionCodeActionType --> N_RetrieveDispositionCodeActionType_Node0 N_RetrieveDispositionCodeActionType_Node0 -- No --> E_RetrieveDispositionCodeActionType
File: GCX016E.cbl
GIVEN: A valid disposition code exists in the DC table
WHEN: The system retrieves the disposition code configuration
THEN: The action type (Add, Subtract, or Status Info) is determined for quantity processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the disposition code → no quantity calculations are performed and processing continues to set impact flag
  • The quantity impact evaluation is performed → no quantity calculations are performed and the release quantity remains 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_NoQuantityImpact(["Start Step"]) E_NoQuantityImpact(["End Step"]) N_NoQuantityImpact_Node0{"The system processes the
disposition code"}:::decision N_NoQuantityImpact_Node0_action["No quantity calculations are
performed and processing continues
to set impact flag"]:::main N_NoQuantityImpact_Node0 -- Yes --> N_NoQuantityImpact_Node0_action N_NoQuantityImpact_Node0_action --> E_NoQuantityImpact S_NoQuantityImpact --> N_NoQuantityImpact_Node0 N_NoQuantityImpact_Node1{"The quantity impact evaluation is
performed"}:::decision N_NoQuantityImpact_Node1_action["No quantity calculations are
performed and the release quantity
remains unchanged"]:::main N_NoQuantityImpact_Node1 -- Yes --> N_NoQuantityImpact_Node1_action N_NoQuantityImpact_Node1_action --> E_NoQuantityImpact N_NoQuantityImpact_Node0 -- No --> N_NoQuantityImpact_Node1 N_NoQuantityImpact_Node1 -- No --> E_NoQuantityImpact
File: GCX016E.cbl
GIVEN: A disposition code has 'Status Info' action type
WHEN: The system processes the disposition code
THEN:
  • No quantity calculations are performed
  • Processing continues to set impact flag
File: GCX016E.cbl
GIVEN: A disposition code with Status Info Only type is being processed
WHEN: The quantity impact evaluation is performed
THEN:
  • No quantity calculations are performed
  • The release quantity remains unchanged
βœ“ Consolidated Acceptance Criteria
  • The system validates the calculated quantity → the quantity must be between zero and the total cargo quantity inclusive
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateQuantityAgainstTotalCargo(["Start Step"]) E_ValidateQuantityAgainstTotalCargo(["End Step"]) N_ValidateQuantityAgainstTotalCargo_Node0{"The system validates the calculated
quantity"}:::decision N_ValidateQuantityAgainstTotalCargo_Node0_action["The quantity must be between zero
and the total cargo quantity
inclusive"]:::main N_ValidateQuantityAgainstTotalCargo_Node0 -- Yes --> N_ValidateQuantityAgainstTotalCargo_Node0_action N_ValidateQuantityAgainstTotalCargo_Node0_action --> E_ValidateQuantityAgainstTotalCargo S_ValidateQuantityAgainstTotalCargo --> N_ValidateQuantityAgainstTotalCargo_Node0 N_ValidateQuantityAgainstTotalCargo_Node0 -- No --> E_ValidateQuantityAgainstTotalCargo
File: GCX016E.cbl
GIVEN: A release quantity has been calculated from disposition code processing
WHEN: The system validates the calculated quantity
THEN:
  • The quantity must be between zero
  • The total cargo quantity inclusive
βœ“ Consolidated Acceptance Criteria
  • The system checks if the quantity is valid → processing continues to update 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_QuantityValid(["Start Step"]) E_QuantityValid(["End Step"]) N_QuantityValid_Node0{"The system checks if the quantity
is valid"}:::decision N_QuantityValid_Node0_action["Processing continues to update if
valid, otherwise an error is
generated"]:::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: GCX016E.cbl
GIVEN: A release quantity has been calculated and validated
WHEN: The system checks if the quantity is valid
THEN: Processing continues to update if valid, otherwise an error is generated
βœ“ Consolidated Acceptance Criteria
  • The system logs the quantity change → the original quantity, new quantity, and disposition code 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_LogBeforeAfterComparison(["Start Step"]) E_LogBeforeAfterComparison(["End Step"]) N_LogBeforeAfterComparison_Node0{"The system logs the quantity change"}:::decision N_LogBeforeAfterComparison_Node0_action["The original quantity, new
quantity, and disposition code are
recorded in the system log"]:::main N_LogBeforeAfterComparison_Node0 -- Yes --> N_LogBeforeAfterComparison_Node0_action N_LogBeforeAfterComparison_Node0_action --> E_LogBeforeAfterComparison S_LogBeforeAfterComparison --> N_LogBeforeAfterComparison_Node0 N_LogBeforeAfterComparison_Node0 -- No --> E_LogBeforeAfterComparison
File: GCX016E.cbl
GIVEN: A quantity impact has been processed and messaged
WHEN: The system logs the quantity change
THEN: The original quantity, new quantity, and disposition code are recorded in the system log
βœ“ Consolidated Acceptance Criteria
  • The system finalizes quantity impact processing → a quantity impact flag is set to indicate whether quantities were affected 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_SetQuantityImpactFlag(["Start Step"]) E_SetQuantityImpactFlag(["End Step"]) N_SetQuantityImpactFlag_Node0{"The system finalizes quantity
impact processing"}:::decision N_SetQuantityImpactFlag_Node0_action["A quantity impact flag is set to
indicate whether quantities were
affected by the disposition code"]:::main N_SetQuantityImpactFlag_Node0 -- Yes --> N_SetQuantityImpactFlag_Node0_action N_SetQuantityImpactFlag_Node0_action --> E_SetQuantityImpactFlag S_SetQuantityImpactFlag --> N_SetQuantityImpactFlag_Node0 N_SetQuantityImpactFlag_Node0 -- No --> E_SetQuantityImpactFlag
File: GCX016E.cbl
GIVEN: Disposition code processing has been completed
WHEN: The system finalizes quantity impact processing
THEN: A quantity impact flag is set to indicate whether quantities were affected by the disposition code
βœ“ Consolidated Acceptance Criteria
  • The system receives a date value for processing → the system validates the date format is correct and numeric before proceeding with 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_ValidateInputDateFormat(["Start Step"]) E_ValidateInputDateFormat(["End Step"]) N_ValidateInputDateFormat_Node0{"The system receives a date value
for processing"}:::decision N_ValidateInputDateFormat_Node0_action["The system validates the date
format is correct and numeric before
proceeding with conversion"]:::main N_ValidateInputDateFormat_Node0 -- Yes --> N_ValidateInputDateFormat_Node0_action N_ValidateInputDateFormat_Node0_action --> E_ValidateInputDateFormat S_ValidateInputDateFormat --> N_ValidateInputDateFormat_Node0 N_ValidateInputDateFormat_Node0 -- No --> E_ValidateInputDateFormat
File: GCX016E.cbl
GIVEN: A date input is required for cargo age calculation
WHEN: The system receives a date value for processing
THEN:
  • The system validates the date format is correct
  • Numeric before proceeding with conversion
βœ“ Consolidated Acceptance Criteria
  • The date format validation fails or date is invalid → the system sets an error flag to indicate 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_SetErrorFlagforInvalidDate(["Start Step"]) E_SetErrorFlagforInvalidDate(["End Step"]) N_SetErrorFlagforInvalidDate_Node0{"The date format validation fails or
date is invalid"}:::decision N_SetErrorFlagforInvalidDate_Node0_action["The system sets an error flag to
indicate date processing failure"]:::exclusion N_SetErrorFlagforInvalidDate_Node0 -- Yes -->|Alternative| N_SetErrorFlagforInvalidDate_Node0_action N_SetErrorFlagforInvalidDate_Node0_action --> E_SetErrorFlagforInvalidDate S_SetErrorFlagforInvalidDate --> N_SetErrorFlagforInvalidDate_Node0 N_SetErrorFlagforInvalidDate_Node0 -- No --> E_SetErrorFlagforInvalidDate
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A date input has been provided for age calculation
WHEN: The date format validation fails or date is invalid
THEN: The system sets an error flag to indicate date processing failure
βœ“ Consolidated Acceptance Criteria
  • The system cannot process the provided date → the system uses the current system date as the default value for age 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_UseDefaultSystemDate(["Start Step"]) E_UseDefaultSystemDate(["End Step"]) N_UseDefaultSystemDate_Node0{"The system cannot process the
provided date"}:::decision N_UseDefaultSystemDate_Node0_action["The system uses the current system
date as the default value for age
calculation"]:::main N_UseDefaultSystemDate_Node0 -- Yes --> N_UseDefaultSystemDate_Node0_action N_UseDefaultSystemDate_Node0_action --> E_UseDefaultSystemDate S_UseDefaultSystemDate --> N_UseDefaultSystemDate_Node0 N_UseDefaultSystemDate_Node0 -- No --> E_UseDefaultSystemDate
File: GCX016E.cbl
GIVEN: An invalid date has been detected during validation
WHEN: The system cannot process the provided date
THEN: The system uses the current system date as the default value for age calculation
βœ“ Consolidated Acceptance Criteria
  • The system needs to perform age calculations → the system converts the date to Julian format using standard conversion algorithms
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 system needs to perform age
calculations"}:::decision N_ConvertDatetoJulianFormat_Node0_action["The system converts the date to
Julian format using standard
conversion algorithms"]:::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: GCX016E.cbl
GIVEN: A valid date has been confirmed through validation
WHEN: The system needs to perform age calculations
THEN: The system converts the date to Julian format using standard conversion algorithms
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine cargo age → the system calculates the difference in days between the Julian date and the established base 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_CalculateDaysSinceBaseDate(["Start Step"]) E_CalculateDaysSinceBaseDate(["End Step"]) N_CalculateDaysSinceBaseDate_Node0{"The system needs to determine cargo
age"}:::decision N_CalculateDaysSinceBaseDate_Node0_action["The system calculates the
difference in days between the
Julian date and the established base
date"]:::main N_CalculateDaysSinceBaseDate_Node0 -- Yes --> N_CalculateDaysSinceBaseDate_Node0_action N_CalculateDaysSinceBaseDate_Node0_action --> E_CalculateDaysSinceBaseDate S_CalculateDaysSinceBaseDate --> N_CalculateDaysSinceBaseDate_Node0 N_CalculateDaysSinceBaseDate_Node0 -- No --> E_CalculateDaysSinceBaseDate
File: GCX016E.cbl
GIVEN: A date has been successfully converted to Julian format
WHEN: The system needs to determine cargo age
THEN:
  • The system calculates the difference in days between the julian date
  • The established base date
βœ“ Consolidated Acceptance Criteria
  • The calling process requires the Julian date result → the system returns the calculated Julian date value 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_ReturnJulianDateValue(["Start Step"]) E_ReturnJulianDateValue(["End Step"]) N_ReturnJulianDateValue_Node0{"The calling process requires the
Julian date result"}:::decision N_ReturnJulianDateValue_Node0_action["The system returns the calculated
Julian date value for further
processing"]:::main N_ReturnJulianDateValue_Node0 -- Yes --> N_ReturnJulianDateValue_Node0_action N_ReturnJulianDateValue_Node0_action --> E_ReturnJulianDateValue S_ReturnJulianDateValue --> N_ReturnJulianDateValue_Node0 N_ReturnJulianDateValue_Node0 -- No --> E_ReturnJulianDateValue
File: GCX016E.cbl
GIVEN: Julian date conversion and age calculation have been completed successfully
WHEN: The calling process requires the Julian date result
THEN: The system returns the calculated Julian date value for further processing
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine cargo age for business rules → the system initiates date input processing for age 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_CargoAgeCalculationRequired(["Start Step"]) E_CargoAgeCalculationRequired(["End Step"]) N_CargoAgeCalculationRequired_Node0{"The system needs to determine cargo
age for business rules"}:::decision N_CargoAgeCalculationRequired_Node0_action["The system initiates date input
processing for age calculation"]:::main N_CargoAgeCalculationRequired_Node0 -- Yes --> N_CargoAgeCalculationRequired_Node0_action N_CargoAgeCalculationRequired_Node0_action --> E_CargoAgeCalculationRequired S_CargoAgeCalculationRequired --> N_CargoAgeCalculationRequired_Node0 N_CargoAgeCalculationRequired_Node0 -- No --> E_CargoAgeCalculationRequired
File: GCX016E.cbl
GIVEN: Cargo processing is being performed
WHEN: The system needs to determine cargo age for business rules
THEN: The system initiates date input processing for age calculation
βœ“ Consolidated Acceptance Criteria
  • The system needs to update destination information → the system uses the Julian date result to manage destination index 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_DestinationIndexManagement(["Start Step"]) E_DestinationIndexManagement(["End Step"]) N_DestinationIndexManagement_Node0{"The system needs to update
destination information"}:::decision N_DestinationIndexManagement_Node0_action["The system uses the Julian date
result to manage destination index
values"]:::main N_DestinationIndexManagement_Node0 -- Yes --> N_DestinationIndexManagement_Node0_action N_DestinationIndexManagement_Node0_action --> E_DestinationIndexManagement S_DestinationIndexManagement --> N_DestinationIndexManagement_Node0 N_DestinationIndexManagement_Node0 -- No --> E_DestinationIndexManagement
File: GCX016E.cbl
GIVEN: Julian date calculation has been completed
WHEN: The system needs to update destination information
THEN: The system uses the Julian date result to manage destination index values
βœ“ Consolidated Acceptance Criteria
  • The system needs to process bond information → the system uses Julian date calculations to determine bond start date 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_BondStartDateProcessing(["Start Step"]) E_BondStartDateProcessing(["End Step"]) N_BondStartDateProcessing_Node0{"The system needs to process bond
information"}:::decision N_BondStartDateProcessing_Node0_action["The system uses Julian date
calculations to determine bond start
date processing requirements"]:::main N_BondStartDateProcessing_Node0 -- Yes --> N_BondStartDateProcessing_Node0_action N_BondStartDateProcessing_Node0_action --> E_BondStartDateProcessing S_BondStartDateProcessing --> N_BondStartDateProcessing_Node0 N_BondStartDateProcessing_Node0 -- No --> E_BondStartDateProcessing
File: GCX016E.cbl
GIVEN: Destination index management has been completed
WHEN: The system needs to process bond information
THEN: The system uses Julian date calculations to determine bond start date processing requirements
βœ“ Consolidated Acceptance Criteria
  • The system queries the SHIPROOT database for the shipment identifier → the system should retrieve the shipment root record 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_QuerySHIPROOTDatabase(["Start Step"]) E_QuerySHIPROOTDatabase(["End Step"]) N_QuerySHIPROOTDatabase_Node0{"The system queries the SHIPROOT
database for the shipment identifier"}:::decision N_QuerySHIPROOTDatabase_Node0_action["The system should retrieve the
shipment root record if it exists"]:::main N_QuerySHIPROOTDatabase_Node0 -- Yes --> N_QuerySHIPROOTDatabase_Node0_action N_QuerySHIPROOTDatabase_Node0_action --> E_QuerySHIPROOTDatabase S_QuerySHIPROOTDatabase --> N_QuerySHIPROOTDatabase_Node0 N_QuerySHIPROOTDatabase_Node0 -- No --> E_QuerySHIPROOTDatabase
File: GCX016E.cbl
GIVEN: A shipment identifier has been extracted from an EDI message
WHEN: The system queries the SHIPROOT database for the shipment identifier
THEN: The system should retrieve the shipment root record if it exists
βœ“ Consolidated Acceptance Criteria
  • The query result indicates whether a shipment root record exists or not → the system should set validation successful flag if record exists, otherwise set 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_ShipmentRootRecordExists(["Start Step"]) E_ShipmentRootRecordExists(["End Step"]) N_ShipmentRootRecordExists_Node0{"The query result indicates whether
a shipment root record exists or not"}:::decision N_ShipmentRootRecordExists_Node0_action["The system should set validation
successful flag if record exists,
otherwise set error 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: GCX016E.cbl
GIVEN: The system has queried the SHIPROOT database for a shipment identifier
WHEN: The query result indicates whether a shipment root record exists or not
THEN: The system should set validation successful flag if record exists, otherwise set error flag
βœ“ Consolidated Acceptance Criteria
  • The validation is successful → the system should continue with normal EDI 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_ContinueEDIProcessing(["Start Step"]) E_ContinueEDIProcessing(["End Step"]) N_ContinueEDIProcessing_Node0{"The validation is successful"}:::decision N_ContinueEDIProcessing_Node0_action["The system should continue with
normal EDI processing workflow"]:::main N_ContinueEDIProcessing_Node0 -- Yes --> N_ContinueEDIProcessing_Node0_action N_ContinueEDIProcessing_Node0_action --> E_ContinueEDIProcessing S_ContinueEDIProcessing --> N_ContinueEDIProcessing_Node0 N_ContinueEDIProcessing_Node0 -- No --> E_ContinueEDIProcessing
File: GCX016E.cbl
GIVEN: A shipment root record exists in the SHIPROOT database
WHEN: The validation is successful
THEN: The system should continue with normal EDI processing workflow
βœ“ Consolidated Acceptance Criteria
  • The validation process completes with failure → the system should skip the EDI processing for this 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_SkipEDIProcessing(["Start Step"]) E_SkipEDIProcessing(["End Step"]) N_SkipEDIProcessing_Node0{"The validation process completes
with failure"}:::decision N_SkipEDIProcessing_Node0_action["The system should skip the EDI
processing for this shipment"]:::main N_SkipEDIProcessing_Node0 -- Yes --> N_SkipEDIProcessing_Node0_action N_SkipEDIProcessing_Node0_action --> E_SkipEDIProcessing S_SkipEDIProcessing --> N_SkipEDIProcessing_Node0 N_SkipEDIProcessing_Node0 -- No --> E_SkipEDIProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A shipment root record does not exist and error flag has been set
WHEN: The validation process completes with failure
THEN: The system should skip the EDI processing for this shipment
βœ“ Consolidated Acceptance Criteria
  • The system attempts to validate the shiproot record existence → the system should verify the shiproot record exists in the database
  • The system attempts to validate shiproot record existence → the system should verify the shiproot record exists in the shipment database and proceed only 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_ValidateShiprootRecordExists(["Start Step"]) E_ValidateShiprootRecordExists(["End Step"]) N_ValidateShiprootRecordExists_Node0{"The system attempts to validate the
shiproot record existence"}:::decision N_ValidateShiprootRecordExists_Node0_action["The system should verify the
shiproot record exists in the
database"]:::main N_ValidateShiprootRecordExists_Node0 -- Yes --> N_ValidateShiprootRecordExists_Node0_action N_ValidateShiprootRecordExists_Node0_action --> E_ValidateShiprootRecordExists S_ValidateShiprootRecordExists --> N_ValidateShiprootRecordExists_Node0 N_ValidateShiprootRecordExists_Node1{"The system attempts to validate
shiproot record existence"}:::decision N_ValidateShiprootRecordExists_Node1_action["The system should verify the
shiproot record exists in the
shipment database and proceed only
if found"]:::main N_ValidateShiprootRecordExists_Node1 -- Yes --> N_ValidateShiprootRecordExists_Node1_action N_ValidateShiprootRecordExists_Node1_action --> E_ValidateShiprootRecordExists N_ValidateShiprootRecordExists_Node0 -- No --> N_ValidateShiprootRecordExists_Node1 N_ValidateShiprootRecordExists_Node1 -- No --> E_ValidateShiprootRecordExists
File: GCX016E.cbl
GIVEN: A shipment requires minimum information processing
WHEN: The system attempts to validate the shiproot record existence
THEN: The system should verify the shiproot record exists in the database
File: GCX016E.cbl
GIVEN: A shipment processing request is initiated
WHEN: The system attempts to validate shiproot record existence
THEN:
  • The system should verify the shiproot record exists in the shipment database
  • Proceed only if found
βœ“ Consolidated Acceptance Criteria
  • The shiproot record is not found in the database → the system should generate an error indicating shiproot not found 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_GenerateErrorShiprootNotFound(["Start Step"]) E_GenerateErrorShiprootNotFound(["End Step"]) N_GenerateErrorShiprootNotFound_Node0{"The shiproot record is not found in
the database"}:::decision N_GenerateErrorShiprootNotFound_Node0_action["The system should generate an error
indicating shiproot not found and
terminate processing"]:::exclusion N_GenerateErrorShiprootNotFound_Node0 -- Yes -->|Alternative| N_GenerateErrorShiprootNotFound_Node0_action N_GenerateErrorShiprootNotFound_Node0_action --> E_GenerateErrorShiprootNotFound S_GenerateErrorShiprootNotFound --> N_GenerateErrorShiprootNotFound_Node0 N_GenerateErrorShiprootNotFound_Node0 -- No --> E_GenerateErrorShiprootNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A shipment requires minimum information processing
WHEN: The shiproot record is not found in the database
THEN:
  • The system should generate an error indicating shiproot not found
  • Terminate processing
βœ“ Consolidated Acceptance Criteria
  • The system processes shipment minimum information → the system should retrieve the applicable in-bond type codes from the shipment 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_RetrieveInBondTypeCodes(["Start Step"]) E_RetrieveInBondTypeCodes(["End Step"]) N_RetrieveInBondTypeCodes_Node0{"The system processes shipment
minimum information"}:::decision N_RetrieveInBondTypeCodes_Node0_action["The system should retrieve the
applicable in-bond type codes from
the shipment data"]:::main N_RetrieveInBondTypeCodes_Node0 -- Yes --> N_RetrieveInBondTypeCodes_Node0_action N_RetrieveInBondTypeCodes_Node0_action --> E_RetrieveInBondTypeCodes S_RetrieveInBondTypeCodes --> N_RetrieveInBondTypeCodes_Node0 N_RetrieveInBondTypeCodes_Node0 -- No --> E_RetrieveInBondTypeCodes
File: GCX016E.cbl
GIVEN: A valid shiproot record exists for the shipment
WHEN: The system processes shipment minimum information
THEN: The system should retrieve the applicable in-bond type codes from the shipment data
βœ“ Consolidated Acceptance Criteria
  • The system processes shipment minimum information → the system should retrieve all applicable entry numbers 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_RetrieveEntryNumbers(["Start Step"]) E_RetrieveEntryNumbers(["End Step"]) N_RetrieveEntryNumbers_Node0{"The system processes shipment
minimum information"}:::decision N_RetrieveEntryNumbers_Node0_action["The system should retrieve all
applicable entry numbers for the
shipment"]:::main N_RetrieveEntryNumbers_Node0 -- Yes --> N_RetrieveEntryNumbers_Node0_action N_RetrieveEntryNumbers_Node0_action --> E_RetrieveEntryNumbers S_RetrieveEntryNumbers --> N_RetrieveEntryNumbers_Node0 N_RetrieveEntryNumbers_Node0 -- No --> E_RetrieveEntryNumbers
File: GCX016E.cbl
GIVEN: A valid shiproot record exists and in-bond type codes are retrieved
WHEN: The system processes shipment minimum information
THEN: The system should retrieve all applicable entry numbers for the shipment
βœ“ Consolidated Acceptance Criteria
  • The system processes location information → the system should retrieve all relevant location identifiers 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_RetrieveLocationIdentifiers(["Start Step"]) E_RetrieveLocationIdentifiers(["End Step"]) N_RetrieveLocationIdentifiers_Node0{"The system processes location
information"}:::decision N_RetrieveLocationIdentifiers_Node0_action["The system should retrieve all
relevant location identifiers for
the shipment"]:::main N_RetrieveLocationIdentifiers_Node0 -- Yes --> N_RetrieveLocationIdentifiers_Node0_action N_RetrieveLocationIdentifiers_Node0_action --> E_RetrieveLocationIdentifiers S_RetrieveLocationIdentifiers --> N_RetrieveLocationIdentifiers_Node0 N_RetrieveLocationIdentifiers_Node0 -- No --> E_RetrieveLocationIdentifiers
File: GCX016E.cbl
GIVEN: Entry numbers have been successfully retrieved for the shipment
WHEN: The system processes location information
THEN: The system should retrieve all relevant location identifiers for the shipment
βœ“ Consolidated Acceptance Criteria
  • The system processes destination station information → the system should extract destination station data from X4 segments and validate the 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_ProcessDestinationStationInformationfromX4Segments(["Start Step"]) E_ProcessDestinationStationInformationfromX4Segments(["End Step"]) N_ProcessDestinationStationInformationfromX4Segments_Node0{"The system processes destination
station information"}:::decision N_ProcessDestinationStationInformationfromX4Segments_Node0_action["The system should extract
destination station data from X4
segments and validate the
information"]:::main N_ProcessDestinationStationInformationfromX4Segments_Node0 -- Yes --> N_ProcessDestinationStationInformationfromX4Segments_Node0_action N_ProcessDestinationStationInformationfromX4Segments_Node0_action --> E_ProcessDestinationStationInformationfromX4Segments S_ProcessDestinationStationInformationfromX4Segments --> N_ProcessDestinationStationInformationfromX4Segments_Node0 N_ProcessDestinationStationInformationfromX4Segments_Node0 -- No --> E_ProcessDestinationStationInformationfromX4Segments
File: GCX016E.cbl
GIVEN: Location identifiers have been retrieved and X4 segments are available
WHEN: The system processes destination station information
THEN:
  • The system should extract destination station data from x4 segments
  • Validate the information
βœ“ Consolidated Acceptance Criteria
  • The system processes key station information → the system should identify and validate key station data for shipment routing
  • The system processes key station information → key station information should be processed and prepared for U1 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_ProcessKeyStationInformation(["Start Step"]) E_ProcessKeyStationInformation(["End Step"]) N_ProcessKeyStationInformation_Node0{"The system processes key station
information"}:::decision N_ProcessKeyStationInformation_Node0_action["The system should identify and
validate key station data for
shipment routing"]:::main N_ProcessKeyStationInformation_Node0 -- Yes --> N_ProcessKeyStationInformation_Node0_action N_ProcessKeyStationInformation_Node0_action --> E_ProcessKeyStationInformation S_ProcessKeyStationInformation --> N_ProcessKeyStationInformation_Node0 N_ProcessKeyStationInformation_Node1{"The system processes key station
information"}:::decision N_ProcessKeyStationInformation_Node1_action["Key station information should be
processed and prepared for U1
segment creation"]:::main N_ProcessKeyStationInformation_Node1 -- Yes --> N_ProcessKeyStationInformation_Node1_action N_ProcessKeyStationInformation_Node1_action --> E_ProcessKeyStationInformation N_ProcessKeyStationInformation_Node0 -- No --> N_ProcessKeyStationInformation_Node1 N_ProcessKeyStationInformation_Node1 -- No --> E_ProcessKeyStationInformation
File: GCX016E.cbl
GIVEN: Destination station information has been processed from X4 segments
WHEN: The system processes key station information
THEN:
  • The system should identify
  • Validate key station data for shipment routing
File: GCX016E.cbl
GIVEN: Destination station information has been processed
WHEN: The system processes key station information
THEN:
  • Key station information should be processed
  • Prepared for u1 segment creation
βœ“ Consolidated Acceptance Criteria
  • The system creates the U1 segment → the system should initialize a new U1 shipment minimum segment with proper structure
  • The system creates a U1 shipment minimum segment → a U1 segment structure should be created and ready 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_CreateU1ShipmentMinimumSegment(["Start Step"]) E_CreateU1ShipmentMinimumSegment(["End Step"]) N_CreateU1ShipmentMinimumSegment_Node0{"The system creates the U1 segment"}:::decision N_CreateU1ShipmentMinimumSegment_Node0_action["The system should initialize a new
U1 shipment minimum segment with
proper structure"]:::main N_CreateU1ShipmentMinimumSegment_Node0 -- Yes --> N_CreateU1ShipmentMinimumSegment_Node0_action N_CreateU1ShipmentMinimumSegment_Node0_action --> E_CreateU1ShipmentMinimumSegment S_CreateU1ShipmentMinimumSegment --> N_CreateU1ShipmentMinimumSegment_Node0 N_CreateU1ShipmentMinimumSegment_Node1{"The system creates a U1 shipment
minimum segment"}:::decision N_CreateU1ShipmentMinimumSegment_Node1_action["A U1 segment structure should be
created and ready for data
population"]:::main N_CreateU1ShipmentMinimumSegment_Node1 -- Yes --> N_CreateU1ShipmentMinimumSegment_Node1_action N_CreateU1ShipmentMinimumSegment_Node1_action --> E_CreateU1ShipmentMinimumSegment N_CreateU1ShipmentMinimumSegment_Node0 -- No --> N_CreateU1ShipmentMinimumSegment_Node1 N_CreateU1ShipmentMinimumSegment_Node1 -- No --> E_CreateU1ShipmentMinimumSegment
File: GCX016E.cbl
GIVEN: All required shipment data including station information has been processed
WHEN: The system creates the U1 segment
THEN: The system should initialize a new U1 shipment minimum segment with proper structure
File: GCX016E.cbl
GIVEN: All required station information has been processed
WHEN: The system creates a U1 shipment minimum segment
THEN:
  • A u1 segment structure should be created
  • Ready for data population
βœ“ Consolidated Acceptance Criteria
  • The system populates the U1 segment with in-bond information → the system should insert all applicable in-bond type codes 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_PopulateInBondTypeCodesinU1(["Start Step"]) E_PopulateInBondTypeCodesinU1(["End Step"]) N_PopulateInBondTypeCodesinU1_Node0{"The system populates the U1 segment
with in-bond information"}:::decision N_PopulateInBondTypeCodesinU1_Node0_action["The system should insert all
applicable in-bond type codes into
the U1 segment"]:::main N_PopulateInBondTypeCodesinU1_Node0 -- Yes --> N_PopulateInBondTypeCodesinU1_Node0_action N_PopulateInBondTypeCodesinU1_Node0_action --> E_PopulateInBondTypeCodesinU1 S_PopulateInBondTypeCodesinU1 --> N_PopulateInBondTypeCodesinU1_Node0 N_PopulateInBondTypeCodesinU1_Node0 -- No --> E_PopulateInBondTypeCodesinU1
File: GCX016E.cbl
GIVEN: A U1 segment has been created and in-bond type codes are available
WHEN: The system populates the U1 segment with in-bond information
THEN: The system should insert all applicable in-bond type codes into the U1 segment
βœ“ Consolidated Acceptance Criteria
  • The system populates entry number information → the system should insert all retrieved entry numbers into the appropriate fields of 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_PopulateEntryNumbersinU1(["Start Step"]) E_PopulateEntryNumbersinU1(["End Step"]) N_PopulateEntryNumbersinU1_Node0{"The system populates entry number
information"}:::decision N_PopulateEntryNumbersinU1_Node0_action["The system should insert all
retrieved entry numbers into the
appropriate fields of the U1 segment"]:::main N_PopulateEntryNumbersinU1_Node0 -- Yes --> N_PopulateEntryNumbersinU1_Node0_action N_PopulateEntryNumbersinU1_Node0_action --> E_PopulateEntryNumbersinU1 S_PopulateEntryNumbersinU1 --> N_PopulateEntryNumbersinU1_Node0 N_PopulateEntryNumbersinU1_Node0 -- No --> E_PopulateEntryNumbersinU1
File: GCX016E.cbl
GIVEN: In-bond type codes have been populated in the U1 segment and entry numbers are available
WHEN: The system populates entry number information
THEN: The system should insert all retrieved entry numbers into the appropriate fields of the U1 segment
βœ“ Consolidated Acceptance Criteria
  • The system populates location information → the system should insert all location identifiers into the appropriate fields of the U1 segment
  • The system populates location identifiers in the U1 segment → location identifiers should be correctly populated in the appropriate fields of 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_PopulateLocationIdentifiersinU1(["Start Step"]) E_PopulateLocationIdentifiersinU1(["End Step"]) N_PopulateLocationIdentifiersinU1_Node0{"The system populates location
information"}:::decision N_PopulateLocationIdentifiersinU1_Node0_action["The system should insert all
location identifiers into the
appropriate fields of the U1 segment"]:::main N_PopulateLocationIdentifiersinU1_Node0 -- Yes --> N_PopulateLocationIdentifiersinU1_Node0_action N_PopulateLocationIdentifiersinU1_Node0_action --> E_PopulateLocationIdentifiersinU1 S_PopulateLocationIdentifiersinU1 --> N_PopulateLocationIdentifiersinU1_Node0 N_PopulateLocationIdentifiersinU1_Node1{"The system populates location
identifiers in the U1 segment"}:::decision N_PopulateLocationIdentifiersinU1_Node1_action["Location identifiers should be
correctly populated in the
appropriate fields of the U1 segment"]:::main N_PopulateLocationIdentifiersinU1_Node1 -- Yes --> N_PopulateLocationIdentifiersinU1_Node1_action N_PopulateLocationIdentifiersinU1_Node1_action --> E_PopulateLocationIdentifiersinU1 N_PopulateLocationIdentifiersinU1_Node0 -- No --> N_PopulateLocationIdentifiersinU1_Node1 N_PopulateLocationIdentifiersinU1_Node1 -- No --> E_PopulateLocationIdentifiersinU1
File: GCX016E.cbl
GIVEN: Entry numbers have been populated in the U1 segment and location identifiers are available
WHEN: The system populates location information
THEN: The system should insert all location identifiers into the appropriate fields of the U1 segment
File: GCX016E.cbl
GIVEN: Entry number has been populated in U1 segment and location identifiers are available
WHEN: The system populates location identifiers in the U1 segment
THEN: Location identifiers should be correctly populated in the appropriate fields of the U1 segment
βœ“ Consolidated Acceptance Criteria
  • The system validates the U1 segment data → the system should verify that all mandatory fields are populated and data formats are correct
  • The system validates U1 segment data completeness and accuracy → the U1 segment should pass validation checks for required fields and data integrity before 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_ValidateU1SegmentData(["Start Step"]) E_ValidateU1SegmentData(["End Step"]) N_ValidateU1SegmentData_Node0{"The system validates the U1 segment
data"}:::decision N_ValidateU1SegmentData_Node0_action["The system should verify that all
mandatory fields are populated and
data formats are correct"]:::main N_ValidateU1SegmentData_Node0 -- Yes --> N_ValidateU1SegmentData_Node0_action N_ValidateU1SegmentData_Node0_action --> E_ValidateU1SegmentData S_ValidateU1SegmentData --> N_ValidateU1SegmentData_Node0 N_ValidateU1SegmentData_Node1{"The system validates U1 segment
data completeness and accuracy"}:::decision N_ValidateU1SegmentData_Node1_action["The U1 segment should pass
validation checks for required
fields and data integrity before
storage"]:::main N_ValidateU1SegmentData_Node1 -- Yes --> N_ValidateU1SegmentData_Node1_action N_ValidateU1SegmentData_Node1_action --> E_ValidateU1SegmentData N_ValidateU1SegmentData_Node0 -- No --> N_ValidateU1SegmentData_Node1 N_ValidateU1SegmentData_Node1 -- No --> E_ValidateU1SegmentData
File: GCX016E.cbl
GIVEN: The U1 segment has been populated with all required data elements
WHEN: The system validates the U1 segment data
THEN:
  • The system should verify that all mandatory fields are populated
  • Data formats are correct
File: GCX016E.cbl
GIVEN: All data fields have been populated in the U1 segment
WHEN:
  • The system validates u1 segment data completeness
  • Accuracy
THEN:
  • The u1 segment should pass validation checks for required fields
  • Data integrity before storage
βœ“ Consolidated Acceptance Criteria
  • The system stores the U1 segment → the system should save the U1 segment to the SHIPMINU database for EDI processing
  • The system stores the U1 segment for EDI processing → the U1 segment should be stored in the shipment minimum segments database and made available for EDI 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_StoreU1SegmentforEDIProcessing(["Start Step"]) E_StoreU1SegmentforEDIProcessing(["End Step"]) N_StoreU1SegmentforEDIProcessing_Node0{"The system stores the U1 segment"}:::decision N_StoreU1SegmentforEDIProcessing_Node0_action["The system should save the U1
segment to the SHIPMINU database for
EDI processing"]:::main N_StoreU1SegmentforEDIProcessing_Node0 -- Yes --> N_StoreU1SegmentforEDIProcessing_Node0_action N_StoreU1SegmentforEDIProcessing_Node0_action --> E_StoreU1SegmentforEDIProcessing S_StoreU1SegmentforEDIProcessing --> N_StoreU1SegmentforEDIProcessing_Node0 N_StoreU1SegmentforEDIProcessing_Node1{"The system stores the U1 segment
for EDI processing"}:::decision N_StoreU1SegmentforEDIProcessing_Node1_action["The U1 segment should be stored in
the shipment minimum segments
database and made available for EDI
transmission"]:::main N_StoreU1SegmentforEDIProcessing_Node1 -- Yes --> N_StoreU1SegmentforEDIProcessing_Node1_action N_StoreU1SegmentforEDIProcessing_Node1_action --> E_StoreU1SegmentforEDIProcessing N_StoreU1SegmentforEDIProcessing_Node0 -- No --> N_StoreU1SegmentforEDIProcessing_Node1 N_StoreU1SegmentforEDIProcessing_Node1 -- No --> E_StoreU1SegmentforEDIProcessing
File: GCX016E.cbl
GIVEN: The U1 segment has been validated and all data is correct
WHEN: The system stores the U1 segment
THEN: The system should save the U1 segment to the SHIPMINU database for EDI processing
File: GCX016E.cbl
GIVEN: U1 segment data has been validated successfully
WHEN: The system stores the U1 segment for EDI processing
THEN:
  • The u1 segment should be stored in the shipment minimum segments database
  • Made available for edi transmission
βœ“ Consolidated Acceptance Criteria
  • The system completes shipment processing → the system should create a log entry documenting the successful completion of shipment minimum 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_LogShipmentProcessingAction(["Start Step"]) E_LogShipmentProcessingAction(["End Step"]) N_LogShipmentProcessingAction_Node0{"The system completes shipment
processing"}:::decision N_LogShipmentProcessingAction_Node0_action["The system should create a log
entry documenting the successful
completion of shipment minimum
information processing"]:::main N_LogShipmentProcessingAction_Node0 -- Yes --> N_LogShipmentProcessingAction_Node0_action N_LogShipmentProcessingAction_Node0_action --> E_LogShipmentProcessingAction S_LogShipmentProcessingAction --> N_LogShipmentProcessingAction_Node0 N_LogShipmentProcessingAction_Node0 -- No --> E_LogShipmentProcessingAction
File: GCX016E.cbl
GIVEN: The U1 segment has been successfully stored for EDI processing
WHEN: The system completes shipment processing
THEN: The system should create a log entry documenting the successful completion of shipment minimum information processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment → the destination station code is extracted 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_ExtractDestinationStationCode(["Start Step"]) E_ExtractDestinationStationCode(["End Step"]) N_ExtractDestinationStationCode_Node0{"The system processes the X4 segment"}:::decision N_ExtractDestinationStationCode_Node0_action["The destination station code is
extracted from the segment data"]:::main N_ExtractDestinationStationCode_Node0 -- Yes --> N_ExtractDestinationStationCode_Node0_action N_ExtractDestinationStationCode_Node0_action --> E_ExtractDestinationStationCode S_ExtractDestinationStationCode --> N_ExtractDestinationStationCode_Node0 N_ExtractDestinationStationCode_Node0 -- No --> E_ExtractDestinationStationCode
File: GCX016E.cbl
GIVEN: An X4 segment has been received for processing
WHEN: The system processes the X4 segment
THEN: The destination station code is extracted from the segment data
βœ“ Consolidated Acceptance Criteria
  • The system validates the extracted station code → the system determines if the station code is present or 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_StationCodePresent(["Start Step"]) E_StationCodePresent(["End Step"]) N_StationCodePresent_Node0{"The system validates the extracted
station code"}:::decision N_StationCodePresent_Node0_action["The system determines if the
station code is present or missing"]:::main N_StationCodePresent_Node0 -- Yes --> N_StationCodePresent_Node0_action N_StationCodePresent_Node0_action --> E_StationCodePresent S_StationCodePresent --> N_StationCodePresent_Node0 N_StationCodePresent_Node0 -- No --> E_StationCodePresent
File: GCX016E.cbl
GIVEN: A destination station code has been extracted from X4 segment
WHEN: The system validates the extracted station code
THEN: The system determines if the station code is present or missing
βœ“ Consolidated Acceptance Criteria
  • The system validates the station code format → the system determines if the format is valid according to business 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_ValidFormat(["Start Step"]) E_ValidFormat(["End Step"]) N_ValidFormat_Node0{"The system validates the station
code format"}:::decision N_ValidFormat_Node0_action["The system determines if the format
is valid according to business
standards"]:::main N_ValidFormat_Node0 -- Yes --> N_ValidFormat_Node0_action N_ValidFormat_Node0_action --> E_ValidFormat S_ValidFormat --> N_ValidFormat_Node0 N_ValidFormat_Node0 -- No --> E_ValidFormat
File: GCX016E.cbl
GIVEN: A destination station code is present
WHEN: The system validates the station code format
THEN: The system determines if the format is valid according to business standards
βœ“ Consolidated Acceptance Criteria
  • The system performs a lookup in the destination station table → the system searches for matching 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_LookupStationinDestinationTable(["Start Step"]) E_LookupStationinDestinationTable(["End Step"]) N_LookupStationinDestinationTable_Node0{"The system performs a lookup in the
destination station table"}:::decision N_LookupStationinDestinationTable_Node0_action["The system searches for matching
station information"]:::main N_LookupStationinDestinationTable_Node0 -- Yes --> N_LookupStationinDestinationTable_Node0_action N_LookupStationinDestinationTable_Node0_action --> E_LookupStationinDestinationTable S_LookupStationinDestinationTable --> N_LookupStationinDestinationTable_Node0 N_LookupStationinDestinationTable_Node0 -- No --> E_LookupStationinDestinationTable
File: GCX016E.cbl
GIVEN: A valid format destination station code exists
WHEN: The system performs a lookup in the destination station table
THEN: The system searches for matching station information
βœ“ Consolidated Acceptance Criteria
  • The system retrieves station data → complete station information including name and attributes is retrieved
  • The system processes the successful lookup result → the complete station information is retrieved from 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_RetrieveStationInformation(["Start Step"]) E_RetrieveStationInformation(["End Step"]) N_RetrieveStationInformation_Node0{"The system retrieves station data"}:::decision N_RetrieveStationInformation_Node0_action["Complete station information
including name and attributes is
retrieved"]:::main N_RetrieveStationInformation_Node0 -- Yes --> N_RetrieveStationInformation_Node0_action N_RetrieveStationInformation_Node0_action --> E_RetrieveStationInformation S_RetrieveStationInformation --> N_RetrieveStationInformation_Node0 N_RetrieveStationInformation_Node1{"The system processes the successful
lookup result"}:::decision N_RetrieveStationInformation_Node1_action["The complete station information is
retrieved from the DS table"]:::main N_RetrieveStationInformation_Node1 -- Yes --> N_RetrieveStationInformation_Node1_action N_RetrieveStationInformation_Node1_action --> E_RetrieveStationInformation N_RetrieveStationInformation_Node0 -- No --> N_RetrieveStationInformation_Node1 N_RetrieveStationInformation_Node1 -- No --> E_RetrieveStationInformation
File: GCX016E.cbl
GIVEN: A destination station is found in the reference table
WHEN: The system retrieves station data
THEN:
  • Complete station information including name
  • Attributes is retrieved
File: GCX016E.cbl
GIVEN: A matching station record exists in the DS table
WHEN: The system processes the successful lookup result
THEN: The complete station information is retrieved from the DS table
βœ“ Consolidated Acceptance Criteria
  • The system sets destination station data → all relevant destination station fields are populated with the retrieved 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_SetDestinationStationData(["Start Step"]) E_SetDestinationStationData(["End Step"]) N_SetDestinationStationData_Node0{"The system sets destination station
data"}:::decision N_SetDestinationStationData_Node0_action["All relevant destination station
fields are populated with the
retrieved information"]:::main N_SetDestinationStationData_Node0 -- Yes --> N_SetDestinationStationData_Node0_action N_SetDestinationStationData_Node0_action --> E_SetDestinationStationData S_SetDestinationStationData --> N_SetDestinationStationData_Node0 N_SetDestinationStationData_Node0 -- No --> E_SetDestinationStationData
File: GCX016E.cbl
GIVEN: Complete station information has been retrieved
WHEN: The system sets destination station data
THEN: All relevant destination station fields are populated with the retrieved information
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → the cargo record is updated with the destination 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_UpdateCargoRecordwithStationInfo(["Start Step"]) E_UpdateCargoRecordwithStationInfo(["End Step"]) N_UpdateCargoRecordwithStationInfo_Node0{"The system updates the cargo record"}:::decision N_UpdateCargoRecordwithStationInfo_Node0_action["The cargo record is updated with
the destination station information"]:::main N_UpdateCargoRecordwithStationInfo_Node0 -- Yes --> N_UpdateCargoRecordwithStationInfo_Node0_action N_UpdateCargoRecordwithStationInfo_Node0_action --> E_UpdateCargoRecordwithStationInfo S_UpdateCargoRecordwithStationInfo --> N_UpdateCargoRecordwithStationInfo_Node0 N_UpdateCargoRecordwithStationInfo_Node0 -- No --> E_UpdateCargoRecordwithStationInfo
File: GCX016E.cbl
GIVEN: Destination station data has been set
WHEN: The system updates the cargo record
THEN: The cargo record is updated with the destination station information
βœ“ Consolidated Acceptance Criteria
  • The system completes station processing → a success log entry is created for 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_LogStationProcessingSuccess(["Start Step"]) E_LogStationProcessingSuccess(["End Step"]) N_LogStationProcessingSuccess_Node0{"The system completes station
processing"}:::decision N_LogStationProcessingSuccess_Node0_action["A success log entry is created for
station processing"]:::main N_LogStationProcessingSuccess_Node0 -- Yes --> N_LogStationProcessingSuccess_Node0_action N_LogStationProcessingSuccess_Node0_action --> E_LogStationProcessingSuccess S_LogStationProcessingSuccess --> N_LogStationProcessingSuccess_Node0 N_LogStationProcessingSuccess_Node0 -- No --> E_LogStationProcessingSuccess
File: GCX016E.cbl
GIVEN: Cargo record has been updated with station information
WHEN: The system completes station processing
THEN: A success log entry is created for station processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the missing station code → default station information is applied 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_SetDefaultStationInformation(["Start Step"]) E_SetDefaultStationInformation(["End Step"]) N_SetDefaultStationInformation_Node0{"The system processes the missing
station code"}:::decision N_SetDefaultStationInformation_Node0_action["Default station information is
applied to maintain data integrity"]:::main N_SetDefaultStationInformation_Node0 -- Yes --> N_SetDefaultStationInformation_Node0_action N_SetDefaultStationInformation_Node0_action --> E_SetDefaultStationInformation S_SetDefaultStationInformation --> N_SetDefaultStationInformation_Node0 N_SetDefaultStationInformation_Node0 -- No --> E_SetDefaultStationInformation
File: GCX016E.cbl
GIVEN: No destination station code is present in the X4 segment
WHEN: The system processes the missing station code
THEN: Default station information is applied to maintain data integrity
βœ“ Consolidated Acceptance Criteria
  • The system detects the missing station code → a log entry is created indicating the station code is 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_LogStationCodeMissing(["Start Step"]) E_LogStationCodeMissing(["End Step"]) N_LogStationCodeMissing_Node0{"The system detects the missing
station code"}:::decision N_LogStationCodeMissing_Node0_action["A log entry is created indicating
the station code is missing"]:::main N_LogStationCodeMissing_Node0 -- Yes --> N_LogStationCodeMissing_Node0_action N_LogStationCodeMissing_Node0_action --> E_LogStationCodeMissing S_LogStationCodeMissing --> N_LogStationCodeMissing_Node0 N_LogStationCodeMissing_Node0 -- No --> E_LogStationCodeMissing
File: GCX016E.cbl
GIVEN: An X4 segment is processed without a destination station code
WHEN: The system detects the missing station code
THEN: A log entry is created indicating the station code is missing
βœ“ Consolidated Acceptance Criteria
  • The system validates the station code format → a log entry is created indicating invalid station 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_LogInvalidStationFormat(["Start Step"]) E_LogInvalidStationFormat(["End Step"]) N_LogInvalidStationFormat_Node0{"The system validates the station
code format"}:::decision N_LogInvalidStationFormat_Node0_action["A log entry is created indicating
invalid station format"]:::main N_LogInvalidStationFormat_Node0 -- Yes --> N_LogInvalidStationFormat_Node0_action N_LogInvalidStationFormat_Node0_action --> E_LogInvalidStationFormat S_LogInvalidStationFormat --> N_LogInvalidStationFormat_Node0 N_LogInvalidStationFormat_Node0 -- No --> E_LogInvalidStationFormat
File: GCX016E.cbl
GIVEN: A destination station code is present but has invalid format
WHEN: The system validates the station code format
THEN: A log entry is created indicating invalid station format
βœ“ Consolidated Acceptance Criteria
  • The system completes the lookup process → an error log entry is created indicating the station was not found
  • No matching station record is found in the DS table → a station not found error is logged for tracking 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_LogStationNotFoundError(["Start Step"]) E_LogStationNotFoundError(["End Step"]) N_LogStationNotFoundError_Node0{"The system completes the lookup
process"}:::decision N_LogStationNotFoundError_Node0_action["An error log entry is created
indicating the station was not found"]:::main N_LogStationNotFoundError_Node0 -- Yes --> N_LogStationNotFoundError_Node0_action N_LogStationNotFoundError_Node0_action --> E_LogStationNotFoundError S_LogStationNotFoundError --> N_LogStationNotFoundError_Node0 N_LogStationNotFoundError_Node1{"No matching station record is found
in the DS table"}:::decision N_LogStationNotFoundError_Node1_action["A station not found error is logged
for tracking and audit purposes"]:::main N_LogStationNotFoundError_Node1 -- Yes --> N_LogStationNotFoundError_Node1_action N_LogStationNotFoundError_Node1_action --> E_LogStationNotFoundError N_LogStationNotFoundError_Node0 -- No --> N_LogStationNotFoundError_Node1 N_LogStationNotFoundError_Node1 -- No --> E_LogStationNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A valid format destination station code is not found in the reference table
WHEN: The system completes the lookup process
THEN: An error log entry is created indicating the station was not found
File: GCX016E.cbl
GIVEN: A station lookup has been performed with a valid location identifier
WHEN: No matching station record is found in the DS table
THEN:
  • A station not found error is logged for tracking
  • Audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system finishes station processing → processing continues with the next components of 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_ContinueX4Processing(["Start Step"]) E_ContinueX4Processing(["End Step"]) N_ContinueX4Processing_Node0{"The system finishes station
processing"}:::decision N_ContinueX4Processing_Node0_action["Processing continues with the next
components of the X4 segment"]:::main N_ContinueX4Processing_Node0 -- Yes --> N_ContinueX4Processing_Node0_action N_ContinueX4Processing_Node0_action --> E_ContinueX4Processing S_ContinueX4Processing --> N_ContinueX4Processing_Node0 N_ContinueX4Processing_Node0 -- No --> E_ContinueX4Processing
File: GCX016E.cbl
GIVEN: Destination station processing is complete (successful or with defaults)
WHEN: The system finishes station processing
THEN: Processing continues with the next components of the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system validates the location identifier format → the location identifier format is confirmed as valid or invalid
  • The system validates the location identifier format → the location identifier is confirmed as valid or invalid based on 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_ValidateLocationIdentifierFormat(["Start Step"]) E_ValidateLocationIdentifierFormat(["End Step"]) N_ValidateLocationIdentifierFormat_Node0{"The system validates the location
identifier format"}:::decision N_ValidateLocationIdentifierFormat_Node0_action["The location identifier format is
confirmed as valid or invalid"]:::main N_ValidateLocationIdentifierFormat_Node0 -- Yes --> N_ValidateLocationIdentifierFormat_Node0_action N_ValidateLocationIdentifierFormat_Node0_action --> E_ValidateLocationIdentifierFormat S_ValidateLocationIdentifierFormat --> N_ValidateLocationIdentifierFormat_Node0 N_ValidateLocationIdentifierFormat_Node1{"The system validates the location
identifier format"}:::decision N_ValidateLocationIdentifierFormat_Node1_action["The location identifier is
confirmed as valid or invalid based
on format requirements"]:::main N_ValidateLocationIdentifierFormat_Node1 -- Yes --> N_ValidateLocationIdentifierFormat_Node1_action N_ValidateLocationIdentifierFormat_Node1_action --> E_ValidateLocationIdentifierFormat N_ValidateLocationIdentifierFormat_Node0 -- No --> N_ValidateLocationIdentifierFormat_Node1 N_ValidateLocationIdentifierFormat_Node1 -- No --> E_ValidateLocationIdentifierFormat
File: GCX016E.cbl
GIVEN: A location identifier has been extracted from X4 segment data
WHEN: The system validates the location identifier format
THEN: The location identifier format is confirmed as valid or invalid
File: GCX016E.cbl
GIVEN: A location identifier has been extracted from M1203 segment
WHEN: The system validates the location identifier format
THEN: The location identifier is confirmed as valid or invalid based on format requirements
βœ“ Consolidated Acceptance Criteria
  • If the validation results → the system proceeds with key station lookup if valid or generates error message if invalid
  • The system checks if the location identifier is valid → if valid, proceed to call generic table interface; if invalid, log error and return error 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_LocationIdentifierValid(["Start Step"]) E_LocationIdentifierValid(["End Step"]) N_LocationIdentifierValid_Node0{"The system evaluates the validation
results"}:::decision N_LocationIdentifierValid_Node0_action["The system proceeds with key
station lookup if valid or generates
error message if invalid"]:::main N_LocationIdentifierValid_Node0 -- Yes --> N_LocationIdentifierValid_Node0_action N_LocationIdentifierValid_Node0_action --> E_LocationIdentifierValid S_LocationIdentifierValid --> N_LocationIdentifierValid_Node0 N_LocationIdentifierValid_Node1{"The system checks if the location
identifier is valid"}:::decision N_LocationIdentifierValid_Node1_action["If valid, proceed to call generic
table interface if invalid, log
error and return error to calling
process"]:::main N_LocationIdentifierValid_Node1 -- Yes --> N_LocationIdentifierValid_Node1_action N_LocationIdentifierValid_Node1_action --> E_LocationIdentifierValid N_LocationIdentifierValid_Node0 -- No --> N_LocationIdentifierValid_Node1 N_LocationIdentifierValid_Node1 -- No --> E_LocationIdentifierValid
File: GCX016E.cbl
GIVEN: A location identifier has undergone format validation
WHEN: The system evaluates the validation results
THEN: The system proceeds with key station lookup if valid or generates error message if invalid
File: GCX016E.cbl
GIVEN: A location identifier has been validated for format compliance
WHEN: The system checks if the location identifier is valid
THEN:
  • If valid, proceed to call generic table interface; if invalid, log error
  • Return error to calling process
βœ“ Consolidated Acceptance Criteria
  • The system queries the KS table for key station information → the system retrieves matching key station data from the 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_RetrieveKeyStationInformationfromKSTable(["Start Step"]) E_RetrieveKeyStationInformationfromKSTable(["End Step"]) N_RetrieveKeyStationInformationfromKSTable_Node0{"The system queries the KS table for
key station information"}:::decision N_RetrieveKeyStationInformationfromKSTable_Node0_action["The system retrieves matching key
station data from the KS table"]:::main N_RetrieveKeyStationInformationfromKSTable_Node0 -- Yes --> N_RetrieveKeyStationInformationfromKSTable_Node0_action N_RetrieveKeyStationInformationfromKSTable_Node0_action --> E_RetrieveKeyStationInformationfromKSTable S_RetrieveKeyStationInformationfromKSTable --> N_RetrieveKeyStationInformationfromKSTable_Node0 N_RetrieveKeyStationInformationfromKSTable_Node0 -- No --> E_RetrieveKeyStationInformationfromKSTable
File: GCX016E.cbl
GIVEN: A valid location identifier has been confirmed
WHEN: The system queries the KS table for key station information
THEN: The system retrieves matching key station data from the KS table
βœ“ Consolidated Acceptance Criteria
  • The system calls GCCTBIO with the location identifier → gCCTBIO performs the table lookup and returns 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_CallGCCTBIOforTableLookup(["Start Step"]) E_CallGCCTBIOforTableLookup(["End Step"]) N_CallGCCTBIOforTableLookup_Node0{"The system calls GCCTBIO with the
location identifier"}:::decision N_CallGCCTBIOforTableLookup_Node0_action["GCCTBIO performs the table lookup
and returns results"]:::main N_CallGCCTBIOforTableLookup_Node0 -- Yes --> N_CallGCCTBIOforTableLookup_Node0_action N_CallGCCTBIOforTableLookup_Node0_action --> E_CallGCCTBIOforTableLookup S_CallGCCTBIOforTableLookup --> N_CallGCCTBIOforTableLookup_Node0 N_CallGCCTBIOforTableLookup_Node0 -- No --> E_CallGCCTBIOforTableLookup
File: GCX016E.cbl
GIVEN: The system needs to lookup key station information in the KS table
WHEN: The system calls GCCTBIO with the location identifier
THEN:
  • Gcctbio performs the table lookup
  • Returns results
βœ“ Consolidated Acceptance Criteria
  • The system loads the station data → key station data is available in working storage for validation and field 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_LoadKeyStationData(["Start Step"]) E_LoadKeyStationData(["End Step"]) N_LoadKeyStationData_Node0{"The system loads the station data"}:::decision N_LoadKeyStationData_Node0_action["Key station data is available in
working storage for validation and
field setting"]:::main N_LoadKeyStationData_Node0 -- Yes --> N_LoadKeyStationData_Node0_action N_LoadKeyStationData_Node0_action --> E_LoadKeyStationData S_LoadKeyStationData --> N_LoadKeyStationData_Node0 N_LoadKeyStationData_Node0 -- No --> E_LoadKeyStationData
File: GCX016E.cbl
GIVEN: Key station information has been successfully retrieved from the KS table
WHEN: The system loads the station data
THEN:
  • Key station data is available in working storage for validation
  • Field setting
βœ“ Consolidated Acceptance Criteria
  • If the validation results → the system proceeds with field setting if valid or generates error message 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_StationDataValid(["Start Step"]) E_StationDataValid(["End Step"]) N_StationDataValid_Node0{"The system evaluates the validation
results"}:::decision N_StationDataValid_Node0_action["The system proceeds with field
setting if valid or generates error
message if invalid"]:::main N_StationDataValid_Node0 -- Yes --> N_StationDataValid_Node0_action N_StationDataValid_Node0_action --> E_StationDataValid S_StationDataValid --> N_StationDataValid_Node0 N_StationDataValid_Node0 -- No --> E_StationDataValid
File: GCX016E.cbl
GIVEN: Station information has undergone validation checks
WHEN: The system evaluates the validation results
THEN: The system proceeds with field setting if valid or generates error message if invalid
βœ“ Consolidated Acceptance Criteria
  • The system sets key station fields → key station fields are populated with validated 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_SetKeyStationFields(["Start Step"]) E_SetKeyStationFields(["End Step"]) N_SetKeyStationFields_Node0{"The system sets key station fields"}:::decision N_SetKeyStationFields_Node0_action["Key station fields are populated
with validated station information"]:::main N_SetKeyStationFields_Node0 -- Yes --> N_SetKeyStationFields_Node0_action N_SetKeyStationFields_Node0_action --> E_SetKeyStationFields S_SetKeyStationFields --> N_SetKeyStationFields_Node0 N_SetKeyStationFields_Node0 -- No --> E_SetKeyStationFields
File: GCX016E.cbl
GIVEN: Valid key station data is available in working storage
WHEN: The system sets key station fields
THEN: Key station fields are populated with validated station information
βœ“ Consolidated Acceptance Criteria
  • The system updates location validation status → location validation status indicates successful key 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_UpdateLocationValidationStatus(["Start Step"]) E_UpdateLocationValidationStatus(["End Step"]) N_UpdateLocationValidationStatus_Node0{"The system updates location
validation status"}:::decision N_UpdateLocationValidationStatus_Node0_action["Location validation status
indicates successful key station
processing"]:::main N_UpdateLocationValidationStatus_Node0 -- Yes --> N_UpdateLocationValidationStatus_Node0_action N_UpdateLocationValidationStatus_Node0_action --> E_UpdateLocationValidationStatus S_UpdateLocationValidationStatus --> N_UpdateLocationValidationStatus_Node0 N_UpdateLocationValidationStatus_Node0 -- No --> E_UpdateLocationValidationStatus
File: GCX016E.cbl
GIVEN: Key station fields have been successfully set
WHEN: The system updates location validation status
THEN: Location validation status indicates successful key station processing
βœ“ Consolidated Acceptance Criteria
  • The system generates an error message → an error message is created indicating invalid location 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_GenerateErrorMessageforInvalidLocation(["Start Step"]) E_GenerateErrorMessageforInvalidLocation(["End Step"]) N_GenerateErrorMessageforInvalidLocation_Node0{"The system generates an error
message"}:::decision N_GenerateErrorMessageforInvalidLocation_Node0_action["An error message is created
indicating invalid location
identifier"]:::exclusion N_GenerateErrorMessageforInvalidLocation_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidLocation_Node0_action N_GenerateErrorMessageforInvalidLocation_Node0_action --> E_GenerateErrorMessageforInvalidLocation S_GenerateErrorMessageforInvalidLocation --> N_GenerateErrorMessageforInvalidLocation_Node0 N_GenerateErrorMessageforInvalidLocation_Node0 -- No --> E_GenerateErrorMessageforInvalidLocation
File: GCX016E.cbl
GIVEN: A location identifier has failed format validation
WHEN: The system generates an error message
THEN: An error message is created indicating invalid location identifier
βœ“ Consolidated Acceptance Criteria
  • The system generates an error message → an error message is created indicating station 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_GenerateErrorMessageforStationNotFound(["Start Step"]) E_GenerateErrorMessageforStationNotFound(["End Step"]) N_GenerateErrorMessageforStationNotFound_Node0{"The system generates an error
message"}:::decision N_GenerateErrorMessageforStationNotFound_Node0_action["An error message is created
indicating station not found"]:::exclusion N_GenerateErrorMessageforStationNotFound_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageforStationNotFound_Node0_action N_GenerateErrorMessageforStationNotFound_Node0_action --> E_GenerateErrorMessageforStationNotFound S_GenerateErrorMessageforStationNotFound --> N_GenerateErrorMessageforStationNotFound_Node0 N_GenerateErrorMessageforStationNotFound_Node0 -- No --> E_GenerateErrorMessageforStationNotFound
File: GCX016E.cbl
GIVEN: Key station lookup has failed to find matching station data
WHEN: The system generates an error message
THEN: An error message is created indicating station not found
βœ“ Consolidated Acceptance Criteria
  • The system begins N9 reference information retrieval → the N9 reference retrieval 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_StartN9ReferenceInformationRetrieval(["Start Step"]) E_StartN9ReferenceInformationRetrieval(["End Step"]) N_StartN9ReferenceInformationRetrieval_Node0{"The system begins N9 reference
information retrieval"}:::decision N_StartN9ReferenceInformationRetrieval_Node0_action["The N9 reference retrieval process
is initiated"]:::main N_StartN9ReferenceInformationRetrieval_Node0 -- Yes --> N_StartN9ReferenceInformationRetrieval_Node0_action N_StartN9ReferenceInformationRetrieval_Node0_action --> E_StartN9ReferenceInformationRetrieval S_StartN9ReferenceInformationRetrieval --> N_StartN9ReferenceInformationRetrieval_Node0 N_StartN9ReferenceInformationRetrieval_Node0 -- No --> E_StartN9ReferenceInformationRetrieval
File: GCX016E.cbl
GIVEN: A cargo processing request is received
WHEN: The system begins N9 reference information retrieval
THEN: The N9 reference retrieval process is initiated
βœ“ Consolidated Acceptance Criteria
  • The system needs to locate the target cargo record → the cargo record is identified using the cargo key 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_IdentifyCargoRecord(["Start Step"]) E_IdentifyCargoRecord(["End Step"]) N_IdentifyCargoRecord_Node0{"The system needs to locate the
target cargo record"}:::decision N_IdentifyCargoRecord_Node0_action["The cargo record is identified
using the cargo key information"]:::main N_IdentifyCargoRecord_Node0 -- Yes --> N_IdentifyCargoRecord_Node0_action N_IdentifyCargoRecord_Node0_action --> E_IdentifyCargoRecord S_IdentifyCargoRecord --> N_IdentifyCargoRecord_Node0 N_IdentifyCargoRecord_Node0 -- No --> E_IdentifyCargoRecord
File: GCX016E.cbl
GIVEN: N9 reference retrieval process has been initiated
WHEN: The system needs to locate the target cargo record
THEN: The cargo record is identified using the cargo key information
βœ“ Consolidated Acceptance Criteria
  • The system needs to access N9 reference segments → the GCSUSS02 cargo segments database is accessed
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AccessCargoSegmentsDatabase(["Start Step"]) E_AccessCargoSegmentsDatabase(["End Step"]) N_AccessCargoSegmentsDatabase_Node0{"The system needs to access N9
reference segments"}:::decision N_AccessCargoSegmentsDatabase_Node0_action["The GCSUSS02 cargo segments
database is accessed"]:::main N_AccessCargoSegmentsDatabase_Node0 -- Yes --> N_AccessCargoSegmentsDatabase_Node0_action N_AccessCargoSegmentsDatabase_Node0_action --> E_AccessCargoSegmentsDatabase S_AccessCargoSegmentsDatabase --> N_AccessCargoSegmentsDatabase_Node0 N_AccessCargoSegmentsDatabase_Node0 -- No --> E_AccessCargoSegmentsDatabase
File: GCX016E.cbl
GIVEN: The cargo record has been identified
WHEN: The system needs to access N9 reference segments
THEN: The GCSUSS02 cargo segments database is accessed
βœ“ Consolidated Acceptance Criteria
  • The system searches for N9 segments for the cargo → the system determines if N9 segments are available or not 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_N9SegmentsAvailable(["Start Step"]) E_N9SegmentsAvailable(["End Step"]) N_N9SegmentsAvailable_Node0{"The system searches for N9 segments
for the cargo"}:::decision N_N9SegmentsAvailable_Node0_action["The system determines if N9
segments are available or not
available"]:::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: GCX016E.cbl
GIVEN: The cargo segments database has been accessed
WHEN: The system searches for N9 segments for the cargo
THEN: The system determines if N9 segments are available or not available
βœ“ Consolidated Acceptance Criteria
  • The system processes the available N9 segments → all N9 reference numbers are retrieved from the 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_RetrieveN9ReferenceNumbers(["Start Step"]) E_RetrieveN9ReferenceNumbers(["End Step"]) N_RetrieveN9ReferenceNumbers_Node0{"The system processes the available
N9 segments"}:::decision N_RetrieveN9ReferenceNumbers_Node0_action["All N9 reference numbers are
retrieved from the segments"]:::main N_RetrieveN9ReferenceNumbers_Node0 -- Yes --> N_RetrieveN9ReferenceNumbers_Node0_action N_RetrieveN9ReferenceNumbers_Node0_action --> E_RetrieveN9ReferenceNumbers S_RetrieveN9ReferenceNumbers --> N_RetrieveN9ReferenceNumbers_Node0 N_RetrieveN9ReferenceNumbers_Node0 -- No --> E_RetrieveN9ReferenceNumbers
File: GCX016E.cbl
GIVEN: N9 segments are available for the cargo
WHEN: The system processes the available N9 segments
THEN: All N9 reference numbers are retrieved from the segments
βœ“ Consolidated Acceptance Criteria
  • The system validates the format of each reference number → each reference number is confirmed to meet 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_ValidateReferenceNumberFormat(["Start Step"]) E_ValidateReferenceNumberFormat(["End Step"]) N_ValidateReferenceNumberFormat_Node0{"The system validates the format of
each reference number"}:::decision N_ValidateReferenceNumberFormat_Node0_action["Each reference number is confirmed
to meet format requirements"]:::main N_ValidateReferenceNumberFormat_Node0 -- Yes --> N_ValidateReferenceNumberFormat_Node0_action N_ValidateReferenceNumberFormat_Node0_action --> E_ValidateReferenceNumberFormat S_ValidateReferenceNumberFormat --> N_ValidateReferenceNumberFormat_Node0 N_ValidateReferenceNumberFormat_Node0 -- No --> E_ValidateReferenceNumberFormat
File: GCX016E.cbl
GIVEN: N9 reference numbers have been retrieved
WHEN: The system validates the format of each reference number
THEN: Each reference number is confirmed to meet format requirements
βœ“ Consolidated Acceptance Criteria
  • The system examines the reference type qualifier → references are classified as either FDA references (A1/A3) or general 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_ReferenceType(["Start Step"]) E_ReferenceType(["End Step"]) N_ReferenceType_Node0{"The system examines the reference
type qualifier"}:::decision N_ReferenceType_Node0_action["References are classified as either
FDA references A1A3 or general
references"]:::main N_ReferenceType_Node0 -- Yes --> N_ReferenceType_Node0_action N_ReferenceType_Node0_action --> E_ReferenceType S_ReferenceType --> N_ReferenceType_Node0 N_ReferenceType_Node0 -- No --> E_ReferenceType
File: GCX016E.cbl
GIVEN: N9 reference numbers have been validated for format
WHEN: The system examines the reference type qualifier
THEN: References are classified as either FDA references (A1/A3) or general references
βœ“ Consolidated Acceptance Criteria
  • The system processes these FDA references → fDA reference numbers are processed with specialized FDA handling 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_ProcessFDAReferenceNumbersA1A3(["Start Step"]) E_ProcessFDAReferenceNumbersA1A3(["End Step"]) N_ProcessFDAReferenceNumbersA1A3_Node0{"The system processes these FDA
references"}:::decision N_ProcessFDAReferenceNumbersA1A3_Node0_action["FDA reference numbers are processed
with specialized FDA handling rules"]:::main N_ProcessFDAReferenceNumbersA1A3_Node0 -- Yes --> N_ProcessFDAReferenceNumbersA1A3_Node0_action N_ProcessFDAReferenceNumbersA1A3_Node0_action --> E_ProcessFDAReferenceNumbersA1A3 S_ProcessFDAReferenceNumbersA1A3 --> N_ProcessFDAReferenceNumbersA1A3_Node0 N_ProcessFDAReferenceNumbersA1A3_Node0 -- No --> E_ProcessFDAReferenceNumbersA1A3
File: GCX016E.cbl
GIVEN: N9 references are classified as FDA type with A1 or A3 qualifiers
WHEN: The system processes these FDA references
THEN: FDA reference numbers are processed with specialized FDA handling rules
βœ“ Consolidated Acceptance Criteria
  • The system processes these general references → general reference numbers are processed using standard reference 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_ProcessGeneralReferenceNumbers(["Start Step"]) E_ProcessGeneralReferenceNumbers(["End Step"]) N_ProcessGeneralReferenceNumbers_Node0{"The system processes these general
references"}:::decision N_ProcessGeneralReferenceNumbers_Node0_action["General reference numbers are
processed using standard reference
handling procedures"]:::main N_ProcessGeneralReferenceNumbers_Node0 -- Yes --> N_ProcessGeneralReferenceNumbers_Node0_action N_ProcessGeneralReferenceNumbers_Node0_action --> E_ProcessGeneralReferenceNumbers S_ProcessGeneralReferenceNumbers --> N_ProcessGeneralReferenceNumbers_Node0 N_ProcessGeneralReferenceNumbers_Node0 -- No --> E_ProcessGeneralReferenceNumbers
File: GCX016E.cbl
GIVEN: N9 references are classified as general (non-FDA) type
WHEN: The system processes these general references
THEN: General reference numbers are processed using standard reference handling procedures
βœ“ Consolidated Acceptance Criteria
  • The system formats the reference information → reference information is formatted into standardized structure with proper qualifiers 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_FormatReferenceInformation(["Start Step"]) E_FormatReferenceInformation(["End Step"]) N_FormatReferenceInformation_Node0{"The system formats the reference
information"}:::decision N_FormatReferenceInformation_Node0_action["Reference information is formatted
into standardized structure with
proper qualifiers and values"]:::main N_FormatReferenceInformation_Node0 -- Yes --> N_FormatReferenceInformation_Node0_action N_FormatReferenceInformation_Node0_action --> E_FormatReferenceInformation S_FormatReferenceInformation --> N_FormatReferenceInformation_Node0 N_FormatReferenceInformation_Node0 -- No --> E_FormatReferenceInformation
File: GCX016E.cbl
GIVEN: Reference numbers have been processed (either FDA or general)
WHEN: The system formats the reference information
THEN:
  • Reference information is formatted into standardized structure with proper qualifiers
  • Values
βœ“ Consolidated Acceptance Criteria
  • The system stores the reference data → formatted reference information is stored in working storage N9 arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_StoreReferenceDatainWorkingStorage(["Start Step"]) E_StoreReferenceDatainWorkingStorage(["End Step"]) N_StoreReferenceDatainWorkingStorage_Node0{"The system stores the reference
data"}:::decision N_StoreReferenceDatainWorkingStorage_Node0_action["Formatted reference information is
stored in working storage N9 arrays"]:::main N_StoreReferenceDatainWorkingStorage_Node0 -- Yes --> N_StoreReferenceDatainWorkingStorage_Node0_action N_StoreReferenceDatainWorkingStorage_Node0_action --> E_StoreReferenceDatainWorkingStorage S_StoreReferenceDatainWorkingStorage --> N_StoreReferenceDatainWorkingStorage_Node0 N_StoreReferenceDatainWorkingStorage_Node0 -- No --> E_StoreReferenceDatainWorkingStorage
File: GCX016E.cbl
GIVEN: Reference information has been formatted
WHEN: The system stores the reference data
THEN: Formatted reference information is stored in working storage N9 arrays
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → the cargo record is updated with all processed N9 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_UpdateCargoRecordwithReferences(["Start Step"]) E_UpdateCargoRecordwithReferences(["End Step"]) N_UpdateCargoRecordwithReferences_Node0{"The system updates the cargo record"}:::decision N_UpdateCargoRecordwithReferences_Node0_action["The cargo record is updated with
all processed N9 reference
information"]:::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: GCX016E.cbl
GIVEN: Reference data has been stored in working storage
WHEN: The system updates the cargo record
THEN: The cargo record is updated with all processed N9 reference information
βœ“ Consolidated Acceptance Criteria
  • The system reaches the end of the N9 reference retrieval process → the N9 reference information retrieval process 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_EndN9ReferenceRetrieval(["Start Step"]) E_EndN9ReferenceRetrieval(["End Step"]) N_EndN9ReferenceRetrieval_Node0{"The system reaches the end of the
N9 reference retrieval process"}:::decision N_EndN9ReferenceRetrieval_Node0_action["The N9 reference information
retrieval process is completed"]:::main N_EndN9ReferenceRetrieval_Node0 -- Yes --> N_EndN9ReferenceRetrieval_Node0_action N_EndN9ReferenceRetrieval_Node0_action --> E_EndN9ReferenceRetrieval S_EndN9ReferenceRetrieval --> N_EndN9ReferenceRetrieval_Node0 N_EndN9ReferenceRetrieval_Node0 -- No --> E_EndN9ReferenceRetrieval
File: GCX016E.cbl
GIVEN: All N9 reference processing has been completed OR no N9 segments were available
WHEN: The system reaches the end of the N9 reference retrieval process
THEN: The N9 reference information retrieval process is completed
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo for cross-border tracking → the equipment ID is extracted from the cargo record for Canadian 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_ExtractEquipmentIDfromUSCargoRecord(["Start Step"]) E_ExtractEquipmentIDfromUSCargoRecord(["End Step"]) N_ExtractEquipmentIDfromUSCargoRecord_Node0{"The system processes the cargo for
cross-border tracking"}:::decision N_ExtractEquipmentIDfromUSCargoRecord_Node0_action["The equipment ID is extracted from
the cargo record for Canadian cargo
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: GCX016E.cbl
GIVEN: A US cargo record exists with equipment information
WHEN: The system processes the cargo for cross-border tracking
THEN: The equipment ID is extracted from the cargo record for Canadian cargo lookup
βœ“ Consolidated Acceptance Criteria
  • The system searches the Canadian cargo database GCCC-CARGO-ROOT → the system retrieves any Canadian cargo records that match 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_SearchCanadianCargoDatabaseGCCCCARGOROOT(["Start Step"]) E_SearchCanadianCargoDatabaseGCCCCARGOROOT(["End Step"]) N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0{"The system searches the Canadian
cargo database GCCC-CARGO-ROOT"}:::decision N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0_action["The system retrieves any Canadian
cargo records that match the
equipment ID"]:::main N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0 -- Yes --> N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0_action N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0_action --> E_SearchCanadianCargoDatabaseGCCCCARGOROOT S_SearchCanadianCargoDatabaseGCCCCARGOROOT --> N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0 N_SearchCanadianCargoDatabaseGCCCCARGOROOT_Node0 -- No --> E_SearchCanadianCargoDatabaseGCCCCARGOROOT
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from the US cargo record
WHEN: The system searches the Canadian cargo database GCCC-CARGO-ROOT
THEN: The system retrieves any Canadian cargo records that match the equipment ID
βœ“ Consolidated Acceptance Criteria
  • If the search results → if a Canadian cargo record is found, proceed to status validation; otherwise, log no Canadian cargo 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_CanadianCargoRecordFound(["Start Step"]) E_CanadianCargoRecordFound(["End Step"]) N_CanadianCargoRecordFound_Node0{"The system evaluates the search
results"}:::decision N_CanadianCargoRecordFound_Node0_action["If a Canadian cargo record is
found, proceed to status validation
otherwise, log no Canadian cargo
found and continue processing"]:::main N_CanadianCargoRecordFound_Node0 -- Yes --> N_CanadianCargoRecordFound_Node0_action N_CanadianCargoRecordFound_Node0_action --> E_CanadianCargoRecordFound S_CanadianCargoRecordFound --> N_CanadianCargoRecordFound_Node0 N_CanadianCargoRecordFound_Node0 -- No --> E_CanadianCargoRecordFound
File: GCX016E.cbl
GIVEN: A search has been performed in the Canadian cargo database
WHEN: The system evaluates the search results
THEN:
  • If a canadian cargo record is found, proceed to status validation; otherwise, log no canadian cargo found
  • Continue processing
βœ“ Consolidated Acceptance Criteria
  • If processing eligibility → if status is valid, proceed to equipment ID matching; if status is deleted or new bond created, skip the record 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_StatusValidforProcessing(["Start Step"]) E_StatusValidforProcessing(["End Step"]) N_StatusValidforProcessing_Node0{"The system evaluates processing
eligibility"}:::decision N_StatusValidforProcessing_Node0_action["If status is valid, proceed to
equipment ID matching if status is
deleted or new bond created, skip
the record and continue processing"]:::main N_StatusValidforProcessing_Node0 -- Yes --> N_StatusValidforProcessing_Node0_action N_StatusValidforProcessing_Node0_action --> E_StatusValidforProcessing S_StatusValidforProcessing --> N_StatusValidforProcessing_Node0 N_StatusValidforProcessing_Node0 -- No --> E_StatusValidforProcessing
File: GCX016E.cbl
GIVEN: A Canadian cargo record status has been validated
WHEN: The system evaluates processing eligibility
THEN:
  • If status is valid, proceed to equipment id matching; if status is deleted or new bond created, skip the record
  • Continue processing
βœ“ Consolidated Acceptance Criteria
  • The system updates the US cargo record → the US cargo record is updated with Canadian cargo reference information for cross-border tracking
  • The system updates US cargo with Canadian reference → uS cargo record is updated with Canadian manifest 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_UpdateCargowithCanadianReference(["Start Step"]) E_UpdateCargowithCanadianReference(["End Step"]) N_UpdateCargowithCanadianReference_Node0{"The system updates the US cargo
record"}:::decision N_UpdateCargowithCanadianReference_Node0_action["The US cargo record is updated with
Canadian cargo reference information
for cross-border tracking"]:::main N_UpdateCargowithCanadianReference_Node0 -- Yes --> N_UpdateCargowithCanadianReference_Node0_action N_UpdateCargowithCanadianReference_Node0_action --> E_UpdateCargowithCanadianReference S_UpdateCargowithCanadianReference --> N_UpdateCargowithCanadianReference_Node0 N_UpdateCargowithCanadianReference_Node1{"The system updates US cargo with
Canadian reference"}:::decision N_UpdateCargowithCanadianReference_Node1_action["US cargo record is updated with
Canadian manifest reference
information"]:::main N_UpdateCargowithCanadianReference_Node1 -- Yes --> N_UpdateCargowithCanadianReference_Node1_action N_UpdateCargowithCanadianReference_Node1_action --> E_UpdateCargowithCanadianReference N_UpdateCargowithCanadianReference_Node0 -- No --> N_UpdateCargowithCanadianReference_Node1 N_UpdateCargowithCanadianReference_Node1 -- No --> E_UpdateCargowithCanadianReference
File: GCX016E.cbl
GIVEN: A cross-border tracking link has been created
WHEN: The system updates the US cargo record
THEN: The US cargo record is updated with Canadian cargo reference information for cross-border tracking
File: GCX016E.cbl
GIVEN: Valid Canadian cargo has been matched and cross-border links created
WHEN: The system updates US cargo with Canadian reference
THEN: US cargo record is updated with Canadian manifest reference information
βœ“ Consolidated Acceptance Criteria
  • The system completes the cross-border linking process → a log entry is created documenting the successful Canadian cargo 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_LogCanadianCargoMatchFound(["Start Step"]) E_LogCanadianCargoMatchFound(["End Step"]) N_LogCanadianCargoMatchFound_Node0{"The system completes the
cross-border linking process"}:::decision N_LogCanadianCargoMatchFound_Node0_action["A log entry is created documenting
the successful Canadian cargo match"]:::main N_LogCanadianCargoMatchFound_Node0 -- Yes --> N_LogCanadianCargoMatchFound_Node0_action N_LogCanadianCargoMatchFound_Node0_action --> E_LogCanadianCargoMatchFound S_LogCanadianCargoMatchFound --> N_LogCanadianCargoMatchFound_Node0 N_LogCanadianCargoMatchFound_Node0 -- No --> E_LogCanadianCargoMatchFound
File: GCX016E.cbl
GIVEN: A Canadian cargo record has been successfully matched and linked
WHEN: The system completes the cross-border linking process
THEN: A log entry is created documenting the successful Canadian cargo match
βœ“ Consolidated Acceptance Criteria
  • The system completes the Canadian cargo search → a log entry is created documenting that no Canadian cargo was found 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_LogNoCanadianCargoFound(["Start Step"]) E_LogNoCanadianCargoFound(["End Step"]) N_LogNoCanadianCargoFound_Node0{"The system completes the Canadian
cargo search"}:::decision N_LogNoCanadianCargoFound_Node0_action["A log entry is created documenting
that no Canadian cargo was found and
processing continues"]:::main N_LogNoCanadianCargoFound_Node0 -- Yes --> N_LogNoCanadianCargoFound_Node0_action N_LogNoCanadianCargoFound_Node0_action --> E_LogNoCanadianCargoFound S_LogNoCanadianCargoFound --> N_LogNoCanadianCargoFound_Node0 N_LogNoCanadianCargoFound_Node0 -- No --> E_LogNoCanadianCargoFound
File: GCX016E.cbl
GIVEN: No Canadian cargo record is found for the equipment ID
WHEN: The system completes the Canadian cargo search
THEN:
  • A log entry is created documenting that no canadian cargo was found
  • Processing continues
βœ“ Consolidated Acceptance Criteria
  • If the record for processing → the record is skipped and excluded from cross-border tracking, and processing continues with the next 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_SkipDeletedInvalidRecords(["Start Step"]) E_SkipDeletedInvalidRecords(["End Step"]) N_SkipDeletedInvalidRecords_Node0{"The system evaluates the record for
processing"}:::decision N_SkipDeletedInvalidRecords_Node0_action["The record is skipped and excluded
from cross-border tracking, and
processing continues with the next
record"]:::main N_SkipDeletedInvalidRecords_Node0 -- Yes --> N_SkipDeletedInvalidRecords_Node0_action N_SkipDeletedInvalidRecords_Node0_action --> E_SkipDeletedInvalidRecords S_SkipDeletedInvalidRecords --> N_SkipDeletedInvalidRecords_Node0 N_SkipDeletedInvalidRecords_Node0 -- No --> E_SkipDeletedInvalidRecords
File: GCX016E.cbl
GIVEN: A Canadian cargo record is found but has deleted or new bond created status
WHEN: The system evaluates the record for processing
THEN:
  • The record is skipped
  • Excluded from cross-border tracking, and processing continues with the next record
βœ“ Consolidated Acceptance Criteria
  • If whether multiple manifests are involved in the current transaction → the system determines if follower manifest processing is required and routes 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_MultiManifestScenario(["Start Step"]) E_MultiManifestScenario(["End Step"]) N_MultiManifestScenario_Node0{"The system evaluates whether
multiple manifests are involved in
the current transaction"}:::decision N_MultiManifestScenario_Node0_action["The system determines if follower
manifest processing is required and
routes accordingly"]:::main N_MultiManifestScenario_Node0 -- Yes --> N_MultiManifestScenario_Node0_action N_MultiManifestScenario_Node0_action --> E_MultiManifestScenario S_MultiManifestScenario --> N_MultiManifestScenario_Node0 N_MultiManifestScenario_Node0 -- No --> E_MultiManifestScenario
File: GCX016E.cbl
GIVEN: A cargo processing transaction is being executed
WHEN: The system evaluates whether multiple manifests are involved in the current transaction
THEN:
  • The system determines if follower manifest processing is required
  • Routes accordingly
βœ“ Consolidated Acceptance Criteria
  • The system needs to process follower manifests → the lead manifest CCN is identified and stored for comparison with follower manifest CCNs
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IdentifyLeadManifestCCN(["Start Step"]) E_IdentifyLeadManifestCCN(["End Step"]) N_IdentifyLeadManifestCCN_Node0{"The system needs to process
follower manifests"}:::decision N_IdentifyLeadManifestCCN_Node0_action["The lead manifest CCN is identified
and stored for comparison with
follower manifest CCNs"]:::main N_IdentifyLeadManifestCCN_Node0 -- Yes --> N_IdentifyLeadManifestCCN_Node0_action N_IdentifyLeadManifestCCN_Node0_action --> E_IdentifyLeadManifestCCN S_IdentifyLeadManifestCCN --> N_IdentifyLeadManifestCCN_Node0 N_IdentifyLeadManifestCCN_Node0 -- No --> E_IdentifyLeadManifestCCN
File: GCX016E.cbl
GIVEN: A multi-manifest scenario has been identified
WHEN: The system needs to process follower manifests
THEN:
  • The lead manifest ccn is identified
  • Stored for comparison with follower manifest ccns
βœ“ Consolidated Acceptance Criteria
  • The system prepares to compare manifests → the US CCN key is extracted and prepared for comparison with the lead manifest 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_IdentifyUSCCNKey(["Start Step"]) E_IdentifyUSCCNKey(["End Step"]) N_IdentifyUSCCNKey_Node0{"The system prepares to compare
manifests"}:::decision N_IdentifyUSCCNKey_Node0_action["The US CCN key is extracted and
prepared for comparison with the
lead manifest CCN"]:::main N_IdentifyUSCCNKey_Node0 -- Yes --> N_IdentifyUSCCNKey_Node0_action N_IdentifyUSCCNKey_Node0_action --> E_IdentifyUSCCNKey S_IdentifyUSCCNKey --> N_IdentifyUSCCNKey_Node0 N_IdentifyUSCCNKey_Node0 -- No --> E_IdentifyUSCCNKey
File: GCX016E.cbl
GIVEN: Lead manifest CCN has been identified
WHEN: The system prepares to compare manifests
THEN:
  • The us ccn key is extracted
  • Prepared for comparison with the lead manifest ccn
βœ“ Consolidated Acceptance Criteria
  • The system compares the lead manifest CCN with the US CCN key → if the CCNs are different, follower manifest processing is initiated; if they are the same, no additional 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_LeadManifestCCNUSCCNKey(["Start Step"]) E_LeadManifestCCNUSCCNKey(["End Step"]) N_LeadManifestCCNUSCCNKey_Node0{"The system compares the lead
manifest CCN with the US CCN key"}:::decision N_LeadManifestCCNUSCCNKey_Node0_action["If the CCNs are different, follower
manifest processing is initiated if
they are the same, no additional
processing is required"]:::main N_LeadManifestCCNUSCCNKey_Node0 -- Yes --> N_LeadManifestCCNUSCCNKey_Node0_action N_LeadManifestCCNUSCCNKey_Node0_action --> E_LeadManifestCCNUSCCNKey S_LeadManifestCCNUSCCNKey --> N_LeadManifestCCNUSCCNKey_Node0 N_LeadManifestCCNUSCCNKey_Node0 -- No --> E_LeadManifestCCNUSCCNKey
File: GCX016E.cbl
GIVEN: Both lead manifest CCN and US CCN key have been identified
WHEN: The system compares the lead manifest CCN with the US CCN key
THEN: If the CCNs are different, follower manifest processing is initiated; if they are the same, no additional processing is required
βœ“ Consolidated Acceptance Criteria
  • The system prepares to spawn a follower manifest transaction → a special action message with action code 350 is prepared for the GCT0162E 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_Prepare350SpecialActionMessage(["Start Step"]) E_Prepare350SpecialActionMessage(["End Step"]) N_Prepare350SpecialActionMessage_Node0{"The system prepares to spawn a
follower manifest transaction"}:::decision N_Prepare350SpecialActionMessage_Node0_action["A special action message with
action code 350 is prepared for the
GCT0162E transaction"]:::main N_Prepare350SpecialActionMessage_Node0 -- Yes --> N_Prepare350SpecialActionMessage_Node0_action N_Prepare350SpecialActionMessage_Node0_action --> E_Prepare350SpecialActionMessage S_Prepare350SpecialActionMessage --> N_Prepare350SpecialActionMessage_Node0 N_Prepare350SpecialActionMessage_Node0 -- No --> E_Prepare350SpecialActionMessage
File: GCX016E.cbl
GIVEN: Lead manifest CCN differs from US CCN key
WHEN: The system prepares to spawn a follower manifest transaction
THEN: A special action message with action code 350 is prepared for the GCT0162E transaction
βœ“ Consolidated Acceptance Criteria
  • The system builds the transaction message content → all relevant disposition codes from the original transaction are included in the follower manifest 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_IncludeDispositionCodes(["Start Step"]) E_IncludeDispositionCodes(["End Step"]) N_IncludeDispositionCodes_Node0{"The system builds the transaction
message content"}:::decision N_IncludeDispositionCodes_Node0_action["All relevant disposition codes from
the original transaction are
included in the follower manifest
message"]:::main N_IncludeDispositionCodes_Node0 -- Yes --> N_IncludeDispositionCodes_Node0_action N_IncludeDispositionCodes_Node0_action --> E_IncludeDispositionCodes S_IncludeDispositionCodes --> N_IncludeDispositionCodes_Node0 N_IncludeDispositionCodes_Node0 -- No --> E_IncludeDispositionCodes
File: GCX016E.cbl
GIVEN: A special action message is being prepared for follower manifest processing
WHEN: The system builds the transaction message content
THEN: All relevant disposition codes from the original transaction are included in the follower manifest message
βœ“ Consolidated Acceptance Criteria
  • The system continues building the transaction message → all relevant quantity information from the original transaction is included in the follower manifest 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_IncludeQuantities(["Start Step"]) E_IncludeQuantities(["End Step"]) N_IncludeQuantities_Node0{"The system continues building the
transaction message"}:::decision N_IncludeQuantities_Node0_action["All relevant quantity information
from the original transaction is
included in the follower manifest
message"]:::main N_IncludeQuantities_Node0 -- Yes --> N_IncludeQuantities_Node0_action N_IncludeQuantities_Node0_action --> E_IncludeQuantities S_IncludeQuantities --> N_IncludeQuantities_Node0 N_IncludeQuantities_Node0 -- No --> E_IncludeQuantities
File: GCX016E.cbl
GIVEN: Disposition codes have been included in the follower manifest message
WHEN: The system continues building the transaction message
THEN: All relevant quantity information from the original transaction is included in the follower manifest message
βœ“ Consolidated Acceptance Criteria
  • The system completes building the transaction message → all relevant entry numbers from the original transaction are included in the follower manifest 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_IncludeEntryNumbers(["Start Step"]) E_IncludeEntryNumbers(["End Step"]) N_IncludeEntryNumbers_Node0{"The system completes building the
transaction message"}:::decision N_IncludeEntryNumbers_Node0_action["All relevant entry numbers from the
original transaction are included in
the follower manifest message"]:::main N_IncludeEntryNumbers_Node0 -- Yes --> N_IncludeEntryNumbers_Node0_action N_IncludeEntryNumbers_Node0_action --> E_IncludeEntryNumbers S_IncludeEntryNumbers --> N_IncludeEntryNumbers_Node0 N_IncludeEntryNumbers_Node0 -- No --> E_IncludeEntryNumbers
File: GCX016E.cbl
GIVEN: Quantities have been included in the follower manifest message
WHEN: The system completes building the transaction message
THEN: All relevant entry numbers from the original transaction are included in the follower manifest message
βœ“ Consolidated Acceptance Criteria
  • The system is ready to process the follower manifest → a GCT0162E transaction is spawned with the prepared message 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_SpawnGCT0162ETransaction(["Start Step"]) E_SpawnGCT0162ETransaction(["End Step"]) N_SpawnGCT0162ETransaction_Node0{"The system is ready to process the
follower manifest"}:::decision N_SpawnGCT0162ETransaction_Node0_action["A GCT0162E transaction is spawned
with the prepared message for
follower manifest processing"]:::main N_SpawnGCT0162ETransaction_Node0 -- Yes --> N_SpawnGCT0162ETransaction_Node0_action N_SpawnGCT0162ETransaction_Node0_action --> E_SpawnGCT0162ETransaction S_SpawnGCT0162ETransaction --> N_SpawnGCT0162ETransaction_Node0 N_SpawnGCT0162ETransaction_Node0 -- No --> E_SpawnGCT0162ETransaction
File: GCX016E.cbl
GIVEN: A complete follower manifest message has been prepared with all required information
WHEN: The system is ready to process the follower manifest
THEN: A GCT0162E transaction is spawned with the prepared message for follower manifest processing
βœ“ Consolidated Acceptance Criteria
  • The system updates processing status → follower manifest processing flags are set to indicate the current processing 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_SetFollowerManifestProcessingFlag(["Start Step"]) E_SetFollowerManifestProcessingFlag(["End Step"]) N_SetFollowerManifestProcessingFlag_Node0{"The system updates processing
status"}:::decision N_SetFollowerManifestProcessingFlag_Node0_action["Follower manifest processing flags
are set to indicate the current
processing state"]:::main N_SetFollowerManifestProcessingFlag_Node0 -- Yes --> N_SetFollowerManifestProcessingFlag_Node0_action N_SetFollowerManifestProcessingFlag_Node0_action --> E_SetFollowerManifestProcessingFlag S_SetFollowerManifestProcessingFlag --> N_SetFollowerManifestProcessingFlag_Node0 N_SetFollowerManifestProcessingFlag_Node0 -- No --> E_SetFollowerManifestProcessingFlag
File: GCX016E.cbl
GIVEN: A GCT0162E transaction has been successfully spawned for follower manifest processing
WHEN: The system updates processing status
THEN: Follower manifest processing flags are set to indicate the current processing state
βœ“ Consolidated Acceptance Criteria
  • The system is ready to process additional manifests → processing continues with the next manifest in the sequence
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ContinuewithNextManifest(["Start Step"]) E_ContinuewithNextManifest(["End Step"]) N_ContinuewithNextManifest_Node0{"The system is ready to process
additional manifests"}:::decision N_ContinuewithNextManifest_Node0_action["Processing continues with the next
manifest in the sequence"]:::main N_ContinuewithNextManifest_Node0 -- Yes --> N_ContinuewithNextManifest_Node0_action N_ContinuewithNextManifest_Node0_action --> E_ContinuewithNextManifest S_ContinuewithNextManifest --> N_ContinuewithNextManifest_Node0 N_ContinuewithNextManifest_Node0 -- No --> E_ContinuewithNextManifest
File: GCX016E.cbl
GIVEN: Follower manifest processing flags have been set for the current manifest
WHEN: The system is ready to process additional manifests
THEN: Processing continues with the next manifest in the sequence
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional manifests in the sequence → if more follower manifests exist, processing continues; otherwise, transaction spawning is completed
  • The system checks for more follower manifests to process → if more follower manifests exist, continue processing the next one, otherwise complete multi-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_MoreFollowerManifests(["Start Step"]) E_MoreFollowerManifests(["End Step"]) N_MoreFollowerManifests_Node0{"The system checks for additional
manifests in the sequence"}:::decision N_MoreFollowerManifests_Node0_action["If more follower manifests exist,
processing continues otherwise,
transaction spawning is completed"]:::main N_MoreFollowerManifests_Node0 -- Yes --> N_MoreFollowerManifests_Node0_action N_MoreFollowerManifests_Node0_action --> E_MoreFollowerManifests S_MoreFollowerManifests --> N_MoreFollowerManifests_Node0 N_MoreFollowerManifests_Node1{"The system checks for more follower
manifests to process"}:::decision N_MoreFollowerManifests_Node1_action["If more follower manifests exist,
continue processing the next one,
otherwise complete multi-manifest
processing"]:::main N_MoreFollowerManifests_Node1 -- Yes --> N_MoreFollowerManifests_Node1_action N_MoreFollowerManifests_Node1_action --> E_MoreFollowerManifests N_MoreFollowerManifests_Node0 -- No --> N_MoreFollowerManifests_Node1 N_MoreFollowerManifests_Node1 -- No --> E_MoreFollowerManifests
File: GCX016E.cbl
GIVEN: The current follower manifest has been processed
WHEN: The system checks for additional manifests in the sequence
THEN: If more follower manifests exist, processing continues; otherwise, transaction spawning is completed
File: GCX016E.cbl
GIVEN: One follower manifest has been processed and there may be additional follower manifests
WHEN: The system checks for more follower manifests to process
THEN: If more follower manifests exist, continue processing the next one, otherwise complete multi-manifest processing
βœ“ Consolidated Acceptance Criteria
  • The transaction spawning process reaches completion → the transaction spawning process is marked as complete and control returns 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_CompleteTransactionSpawning(["Start Step"]) E_CompleteTransactionSpawning(["End Step"]) N_CompleteTransactionSpawning_Node0{"The transaction spawning process
reaches completion"}:::decision N_CompleteTransactionSpawning_Node0_action["The transaction spawning process is
marked as complete and control
returns to the main processing flow"]:::main N_CompleteTransactionSpawning_Node0 -- Yes --> N_CompleteTransactionSpawning_Node0_action N_CompleteTransactionSpawning_Node0_action --> E_CompleteTransactionSpawning S_CompleteTransactionSpawning --> N_CompleteTransactionSpawning_Node0 N_CompleteTransactionSpawning_Node0 -- No --> E_CompleteTransactionSpawning
File: GCX016E.cbl
GIVEN: All follower manifests have been processed or no follower manifests were required
WHEN: The transaction spawning process reaches completion
THEN:
  • The transaction spawning process is marked as complete
  • Control returns to the main processing flow
βœ“ Consolidated Acceptance Criteria
  • The system determines that no follower manifest processing is needed → no transaction spawning occurs and processing continues with the normal 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_NoTransactionSpawningRequired(["Start Step"]) E_NoTransactionSpawningRequired(["End Step"]) N_NoTransactionSpawningRequired_Node0{"The system determines that no
follower manifest processing is
needed"}:::decision N_NoTransactionSpawningRequired_Node0_action["No transaction spawning occurs and
processing continues with the normal
flow"]:::main N_NoTransactionSpawningRequired_Node0 -- Yes --> N_NoTransactionSpawningRequired_Node0_action N_NoTransactionSpawningRequired_Node0_action --> E_NoTransactionSpawningRequired S_NoTransactionSpawningRequired --> N_NoTransactionSpawningRequired_Node0 N_NoTransactionSpawningRequired_Node0 -- No --> E_NoTransactionSpawningRequired
File: GCX016E.cbl
GIVEN: Either no multi-manifest scenario exists or lead manifest CCN equals US CCN key
WHEN: The system determines that no follower manifest processing is needed
THEN:
  • No transaction spawning occurs
  • Processing continues with the normal flow
βœ“ Consolidated Acceptance Criteria
  • MQ completion code is not OK or reason code indicates message unavailable (2033) or backout count is not zero → set appropriate message status flags (message not available or skip message) and generate error notification to Merlin 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_MQMessageError(["Start Step"]) E_MQMessageError(["End Step"]) N_MQMessageError_Node0{"MQ completion code is not OK or
reason code indicates message
unavailable 2033 or backout count is
not zero"}:::decision N_MQMessageError_Node0_action["Set appropriate message status
flags message not available or skip
message and generate error
notification to Merlin system"]:::main N_MQMessageError_Node0 -- Yes --> N_MQMessageError_Node0_action N_MQMessageError_Node0_action --> E_MQMessageError S_MQMessageError --> N_MQMessageError_Node0 N_MQMessageError_Node0 -- No --> E_MQMessageError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A message is being processed from the message queue
WHEN: MQ completion code is not OK or reason code indicates message unavailable (2033) or backout count is not zero
THEN: Set appropriate message status flags (message not available or skip message) and generate error notification to Merlin system
βœ“ Consolidated Acceptance Criteria
  • Database operation returns an error status code → log error information, generate Merlin error message, and either continue processing or abend based on error severity
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_DatabaseIOError(["Start Step"]) E_DatabaseIOError(["End Step"]) N_DatabaseIOError_Node0{"Database operation returns an error
status code"}:::decision N_DatabaseIOError_Node0_action["Log error information, generate
Merlin error message, and either
continue processing or abend based
on error severity"]:::exclusion N_DatabaseIOError_Node0 -- Yes -->|Alternative| N_DatabaseIOError_Node0_action N_DatabaseIOError_Node0_action --> E_DatabaseIOError S_DatabaseIOError --> N_DatabaseIOError_Node0 N_DatabaseIOError_Node0 -- No --> E_DatabaseIOError
File: GCX016E.cbl
GIVEN: A database read, write, or update operation is being performed
WHEN: Database operation returns an error status code
THEN: Log error information, generate Merlin error message, and either continue processing or abend based on error severity
βœ“ Consolidated Acceptance Criteria
  • The lookup operation fails to find matching records or returns an error → generate appropriate error message, log the lookup failure, and continue processing with default values 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_TableLookupError(["Start Step"]) E_TableLookupError(["End Step"]) N_TableLookupError_Node0{"The lookup operation fails to find
matching records or returns an error"}:::decision N_TableLookupError_Node0_action["Generate appropriate error message,
log the lookup failure, and continue
processing with default values or
error handling"]:::exclusion N_TableLookupError_Node0 -- Yes -->|Alternative| N_TableLookupError_Node0_action N_TableLookupError_Node0_action --> E_TableLookupError S_TableLookupError --> N_TableLookupError_Node0 N_TableLookupError_Node0 -- No --> E_TableLookupError
File: GCX016E.cbl
GIVEN: A lookup is performed against reference tables (DC table, train list, broker table, etc.)
WHEN: The lookup operation fails to find matching records or returns an error
THEN: Generate appropriate error message, log the lookup failure, and continue processing with default values or error handling
βœ“ Consolidated Acceptance Criteria
  • Train lookup in train list fails to find matching train record → generate train not found error message to Merlin system and continue processing remaining 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_TrainNotFoundError(["Start Step"]) E_TrainNotFoundError(["End Step"]) N_TrainNotFoundError_Node0{"Train lookup in train list fails to
find matching train record"}:::decision N_TrainNotFoundError_Node0_action["Generate train not found error
message to Merlin system and
continue processing remaining
segments"]:::main N_TrainNotFoundError_Node0 -- Yes --> N_TrainNotFoundError_Node0_action N_TrainNotFoundError_Node0_action --> E_TrainNotFoundError S_TrainNotFoundError --> N_TrainNotFoundError_Node0 N_TrainNotFoundError_Node0 -- No --> E_TrainNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: M10 segment contains vessel name that does not start with 'TRAIN' or 'DAY'
WHEN: Train lookup in train list fails to find matching train record
THEN:
  • Generate train not found error message to merlin system
  • Continue processing remaining segments
βœ“ Consolidated Acceptance Criteria
  • Cargo lookup fails to find matching cargo records in the database → generate cargo not found error message, log the missing cargo information, and continue processing other cargos
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CargoNotFoundError(["Start Step"]) E_CargoNotFoundError(["End Step"]) N_CargoNotFoundError_Node0{"Cargo lookup fails to find matching
cargo records in the database"}:::decision N_CargoNotFoundError_Node0_action["Generate cargo not found error
message, log the missing cargo
information, and continue processing
other cargos"]:::main N_CargoNotFoundError_Node0 -- Yes --> N_CargoNotFoundError_Node0_action N_CargoNotFoundError_Node0_action --> E_CargoNotFoundError S_CargoNotFoundError --> N_CargoNotFoundError_Node0 N_CargoNotFoundError_Node0 -- No --> E_CargoNotFoundError
File: GCX016E.cbl
GIVEN: X4 and N7 segments specify cargo identification information
WHEN: Cargo lookup fails to find matching cargo records in the database
THEN: Generate cargo not found error message, log the missing cargo information, and continue processing other cargos
βœ“ Consolidated Acceptance Criteria
  • Disposition code lookup in DC table fails or returns invalid status → generate invalid disposition code error message, log the invalid code, and skip processing for that 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_InvalidDispositionCodeError(["Start Step"]) E_InvalidDispositionCodeError(["End Step"]) N_InvalidDispositionCodeError_Node0{"Disposition code lookup in DC table
fails or returns invalid status"}:::decision N_InvalidDispositionCodeError_Node0_action["Generate invalid disposition code
error message, log the invalid code,
and skip processing for that
specific disposition code"]:::exclusion N_InvalidDispositionCodeError_Node0 -- Yes -->|Alternative| N_InvalidDispositionCodeError_Node0_action N_InvalidDispositionCodeError_Node0_action --> E_InvalidDispositionCodeError S_InvalidDispositionCodeError --> N_InvalidDispositionCodeError_Node0 N_InvalidDispositionCodeError_Node0 -- No --> E_InvalidDispositionCodeError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: X4 segment contains disposition code information
WHEN: Disposition code lookup in DC table fails or returns invalid status
THEN: Generate invalid disposition code error message, log the invalid code, and skip processing for that specific disposition code
βœ“ Consolidated Acceptance Criteria
  • Error logging is required for audit trail → log error details including message ID, segment information, error type, and relevant business data for debugging 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_LogErrorInformation(["Start Step"]) E_LogErrorInformation(["End Step"]) N_LogErrorInformation_Node0{"Error logging is required for audit
trail"}:::decision N_LogErrorInformation_Node0_action["Log error details including message
ID, segment information, error type,
and relevant business data for
debugging purposes"]:::exclusion N_LogErrorInformation_Node0 -- Yes -->|Alternative| N_LogErrorInformation_Node0_action N_LogErrorInformation_Node0_action --> E_LogErrorInformation S_LogErrorInformation --> N_LogErrorInformation_Node0 N_LogErrorInformation_Node0 -- No --> E_LogErrorInformation
File: GCX016E.cbl
GIVEN: An error has occurred during message processing
WHEN: Error logging is required for audit trail
THEN: Log error details including message ID, segment information, error type, and relevant business data for debugging purposes
βœ“ Consolidated Acceptance Criteria
  • Processing flow needs to be controlled based on error status → set appropriate error flags to indicate error type and severity for downstream processing 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_SetErrorFlags(["Start Step"]) E_SetErrorFlags(["End Step"]) N_SetErrorFlags_Node0{"Processing flow needs to be
controlled based on error status"}:::decision N_SetErrorFlags_Node0_action["Set appropriate error flags to
indicate error type and severity for
downstream processing decisions"]:::exclusion N_SetErrorFlags_Node0 -- Yes -->|Alternative| N_SetErrorFlags_Node0_action N_SetErrorFlags_Node0_action --> E_SetErrorFlags S_SetErrorFlags --> N_SetErrorFlags_Node0 N_SetErrorFlags_Node0 -- No --> E_SetErrorFlags
File: GCX016E.cbl
GIVEN: An error condition has been identified and logged
WHEN: Processing flow needs to be controlled based on error status
THEN:
  • Set appropriate error flags to indicate error type
  • Severity for downstream processing decisions
βœ“ Consolidated Acceptance Criteria
  • Primary Merlin ID routing fails or is unavailable → route error message to default recipients (OM01247, AEI9999) with fallback 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_RouteErrorMessagetoDefaultRecipient(["Start Step"]) E_RouteErrorMessagetoDefaultRecipient(["End Step"]) N_RouteErrorMessagetoDefaultRecipient_Node0{"Primary Merlin ID routing fails or
is unavailable"}:::decision N_RouteErrorMessagetoDefaultRecipient_Node0_action["Route error message to default
recipients OM01247, AEI9999 with
fallback notification"]:::main N_RouteErrorMessagetoDefaultRecipient_Node0 -- Yes --> N_RouteErrorMessagetoDefaultRecipient_Node0_action N_RouteErrorMessagetoDefaultRecipient_Node0_action --> E_RouteErrorMessagetoDefaultRecipient S_RouteErrorMessagetoDefaultRecipient --> N_RouteErrorMessagetoDefaultRecipient_Node0 N_RouteErrorMessagetoDefaultRecipient_Node0 -- No --> E_RouteErrorMessagetoDefaultRecipient
File: GCX016E.cbl
GIVEN: An error message has been generated for routing
WHEN: Primary Merlin ID routing fails or is unavailable
THEN: Route error message to default recipients (OM01247, AEI9999) with fallback notification
βœ“ Consolidated Acceptance Criteria
  • Decision is needed on whether to continue processing remaining messages/segments → continue processing for non-critical errors (train not found, cargo not found) or terminate for critical system errors (database failures, MQ 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_ContinueProcessingorTerminate(["Start Step"]) E_ContinueProcessingorTerminate(["End Step"]) N_ContinueProcessingorTerminate_Node0{"Decision is needed on whether to
continue processing remaining
messagessegments"}:::decision N_ContinueProcessingorTerminate_Node0_action["Continue processing for
non-critical errors train not found,
cargo not found or terminate for
critical system errors database
failures, MQ errors"]:::exclusion N_ContinueProcessingorTerminate_Node0 -- Yes -->|Alternative| N_ContinueProcessingorTerminate_Node0_action N_ContinueProcessingorTerminate_Node0_action --> E_ContinueProcessingorTerminate S_ContinueProcessingorTerminate --> N_ContinueProcessingorTerminate_Node0 N_ContinueProcessingorTerminate_Node0 -- No --> E_ContinueProcessingorTerminate
File: GCX016E.cbl
GIVEN: An error has been detected and appropriate error handling has been performed
WHEN: Decision is needed on whether to continue processing remaining messages/segments
THEN: Continue processing for non-critical errors (train not found, cargo not found) or terminate for critical system errors (database failures, MQ errors)
βœ“ Consolidated Acceptance Criteria
  • Original message routing cannot be completed due to the error → reroute message to backup recipients with error notification explaining the business issue
  • The system needs to handle the failed routing → the message should be rerouted with an error notification indicating the routing 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_RerouteMessagewithErrorNotification(["Start Step"]) E_RerouteMessagewithErrorNotification(["End Step"]) N_RerouteMessagewithErrorNotification_Node0{"Original message routing cannot be
completed due to the error"}:::decision N_RerouteMessagewithErrorNotification_Node0_action["Reroute message to backup
recipients with error notification
explaining the business issue"]:::exclusion N_RerouteMessagewithErrorNotification_Node0 -- Yes -->|Alternative| N_RerouteMessagewithErrorNotification_Node0_action N_RerouteMessagewithErrorNotification_Node0_action --> E_RerouteMessagewithErrorNotification S_RerouteMessagewithErrorNotification --> N_RerouteMessagewithErrorNotification_Node0 N_RerouteMessagewithErrorNotification_Node1{"The system needs to handle the
failed routing"}:::decision N_RerouteMessagewithErrorNotification_Node1_action["The message should be rerouted with
an error notification indicating the
routing failure"]:::exclusion N_RerouteMessagewithErrorNotification_Node1 -- Yes -->|Alternative| N_RerouteMessagewithErrorNotification_Node1_action N_RerouteMessagewithErrorNotification_Node1_action --> E_RerouteMessagewithErrorNotification N_RerouteMessagewithErrorNotification_Node0 -- No --> N_RerouteMessagewithErrorNotification_Node1 N_RerouteMessagewithErrorNotification_Node1 -- No --> E_RerouteMessagewithErrorNotification
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A business-level error has occurred (train not found, cargo not found, invalid disposition code)
WHEN: Original message routing cannot be completed due to the error
THEN: Reroute message to backup recipients with error notification explaining the business issue
File: GCX016E.cbl
GIVEN: An invalid recipient error has been generated
WHEN: The system needs to handle the failed routing
THEN: The message should be rerouted with an error notification indicating the routing failure
βœ“ Consolidated Acceptance Criteria
  • Detailed troubleshooting information is needed for business rule analysis → create debug log entries showing before/after status arrays, disposition codes, and 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_CreateDebugLogEntry(["Start Step"]) E_CreateDebugLogEntry(["End Step"]) N_CreateDebugLogEntry_Node0{"Detailed troubleshooting
information is needed for business
rule analysis"}:::decision N_CreateDebugLogEntry_Node0_action["Create debug log entries showing
beforeafter status arrays,
disposition codes, and cargo status
changes"]:::main N_CreateDebugLogEntry_Node0 -- Yes --> N_CreateDebugLogEntry_Node0_action N_CreateDebugLogEntry_Node0_action --> E_CreateDebugLogEntry S_CreateDebugLogEntry --> N_CreateDebugLogEntry_Node0 N_CreateDebugLogEntry_Node0 -- No --> E_CreateDebugLogEntry
File: GCX016E.cbl
GIVEN: Error handling is in progress and debug logging is enabled
WHEN: Detailed troubleshooting information is needed for business rule analysis
THEN: Create debug log entries showing before/after status arrays, disposition codes, and cargo status changes
βœ“ Consolidated Acceptance Criteria
  • Processing status needs to reflect the current state after error handling → update processing status flags and counters to indicate error resolution and readiness 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_UpdateProcessingStatus(["Start Step"]) E_UpdateProcessingStatus(["End Step"]) N_UpdateProcessingStatus_Node0{"Processing status needs to reflect
the current state after error
handling"}:::decision N_UpdateProcessingStatus_Node0_action["Update processing status flags and
counters to indicate error
resolution and readiness for
continued processing"]:::exclusion N_UpdateProcessingStatus_Node0 -- Yes -->|Alternative| N_UpdateProcessingStatus_Node0_action N_UpdateProcessingStatus_Node0_action --> E_UpdateProcessingStatus S_UpdateProcessingStatus --> N_UpdateProcessingStatus_Node0 N_UpdateProcessingStatus_Node0 -- No --> E_UpdateProcessingStatus
File: GCX016E.cbl
GIVEN: Error handling has been completed for a specific error condition
WHEN: Processing status needs to reflect the current state after error handling
THEN:
  • Update processing status flags
  • Counters to indicate error resolution
  • Readiness for continued processing
βœ“ Consolidated Acceptance Criteria
  • The system checks if a valid train ID was extracted → if train ID is present, proceed to train lookup; if not present, 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_TrainIDPresent(["Start Step"]) E_TrainIDPresent(["End Step"]) N_TrainIDPresent_Node0{"The system checks if a valid train
ID was extracted"}:::decision N_TrainIDPresent_Node0_action["If train ID is present, proceed to
train lookup if not present,
generate train not found error"]:::main N_TrainIDPresent_Node0 -- Yes --> N_TrainIDPresent_Node0_action N_TrainIDPresent_Node0_action --> E_TrainIDPresent S_TrainIDPresent --> N_TrainIDPresent_Node0 N_TrainIDPresent_Node0 -- No --> E_TrainIDPresent
File: GCX016E.cbl
GIVEN: A vessel name has been processed for train ID extraction
WHEN: The system checks if a valid train ID was extracted
THEN: If train ID is present, proceed to train lookup; if not present, generate train not found error
βœ“ Consolidated Acceptance Criteria
  • The system needs to validate the train exists in the system → call GCCUTRIO program to lookup train data from GCWTL train list 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_CallGCCUTRIOtoLookupTraininSystem(["Start Step"]) E_CallGCCUTRIOtoLookupTraininSystem(["End Step"]) N_CallGCCUTRIOtoLookupTraininSystem_Node0{"The system needs to validate the
train exists in the system"}:::decision N_CallGCCUTRIOtoLookupTraininSystem_Node0_action["Call GCCUTRIO program to lookup
train data from GCWTL train list
segments"]:::main N_CallGCCUTRIOtoLookupTraininSystem_Node0 -- Yes --> N_CallGCCUTRIOtoLookupTraininSystem_Node0_action N_CallGCCUTRIOtoLookupTraininSystem_Node0_action --> E_CallGCCUTRIOtoLookupTraininSystem S_CallGCCUTRIOtoLookupTraininSystem --> N_CallGCCUTRIOtoLookupTraininSystem_Node0 N_CallGCCUTRIOtoLookupTraininSystem_Node0 -- No --> E_CallGCCUTRIOtoLookupTraininSystem
File: GCX016E.cbl
GIVEN: A valid train ID has been extracted from the vessel name
WHEN: The system needs to validate the train exists in the system
THEN: Call GCCUTRIO program to lookup train data from GCWTL train list segments
βœ“ Consolidated Acceptance Criteria
  • The system validates the train record status → check if the train is a CPRS train for special 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_ValidateTrainRecordStatus(["Start Step"]) E_ValidateTrainRecordStatus(["End Step"]) N_ValidateTrainRecordStatus_Node0{"The system validates the train
record status"}:::decision N_ValidateTrainRecordStatus_Node0_action["Check if the train is a CPRS train
for special processing requirements"]:::main N_ValidateTrainRecordStatus_Node0 -- Yes --> N_ValidateTrainRecordStatus_Node0_action N_ValidateTrainRecordStatus_Node0_action --> E_ValidateTrainRecordStatus S_ValidateTrainRecordStatus --> N_ValidateTrainRecordStatus_Node0 N_ValidateTrainRecordStatus_Node0 -- No --> E_ValidateTrainRecordStatus
File: GCX016E.cbl
GIVEN: A train record has been found in the system
WHEN: The system validates the train record status
THEN: Check if the train is a CPRS train for special processing requirements
βœ“ Consolidated Acceptance Criteria
  • The system checks the train type → if train is CPRS type, apply CPRS special processing rules; otherwise set train 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_CPRSTrain(["Start Step"]) E_CPRSTrain(["End Step"]) N_CPRSTrain_Node0{"The system checks the train type"}:::decision N_CPRSTrain_Node0_action["If train is CPRS type, apply CPRS
special processing rules otherwise
set train found flag"]:::main N_CPRSTrain_Node0 -- Yes --> N_CPRSTrain_Node0_action N_CPRSTrain_Node0_action --> E_CPRSTrain S_CPRSTrain --> N_CPRSTrain_Node0 N_CPRSTrain_Node0 -- No --> E_CPRSTrain
File: GCX016E.cbl
GIVEN: A train record has been validated and found in the system
WHEN: The system checks the train type
THEN: If train is CPRS type, apply CPRS special processing rules; otherwise set train found flag
βœ“ Consolidated Acceptance Criteria
  • The system applies CPRS-specific processing rules → execute CPRS special processing logic and then set train 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_ApplyCPRSSpecialProcessingRules(["Start Step"]) E_ApplyCPRSSpecialProcessingRules(["End Step"]) N_ApplyCPRSSpecialProcessingRules_Node0{"The system applies CPRS-specific
processing rules"}:::decision N_ApplyCPRSSpecialProcessingRules_Node0_action["Execute CPRS special processing
logic and then set train found flag"]:::main N_ApplyCPRSSpecialProcessingRules_Node0 -- Yes --> N_ApplyCPRSSpecialProcessingRules_Node0_action N_ApplyCPRSSpecialProcessingRules_Node0_action --> E_ApplyCPRSSpecialProcessingRules S_ApplyCPRSSpecialProcessingRules --> N_ApplyCPRSSpecialProcessingRules_Node0 N_ApplyCPRSSpecialProcessingRules_Node0 -- No --> E_ApplyCPRSSpecialProcessingRules
File: GCX016E.cbl
GIVEN: A train has been identified as CPRS type
WHEN: The system applies CPRS-specific processing rules
THEN:
  • Execute cprs special processing logic
  • Then set train found flag
βœ“ Consolidated Acceptance Criteria
  • The system encounters train validation failure → generate a train not found error message for Merlin 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_GenerateTrainNotFoundErrorMessage(["Start Step"]) E_GenerateTrainNotFoundErrorMessage(["End Step"]) N_GenerateTrainNotFoundErrorMessage_Node0{"The system encounters train
validation failure"}:::decision N_GenerateTrainNotFoundErrorMessage_Node0_action["Generate a train not found error
message for Merlin system
notification"]:::main N_GenerateTrainNotFoundErrorMessage_Node0 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node0_action N_GenerateTrainNotFoundErrorMessage_Node0_action --> E_GenerateTrainNotFoundErrorMessage S_GenerateTrainNotFoundErrorMessage --> N_GenerateTrainNotFoundErrorMessage_Node0 N_GenerateTrainNotFoundErrorMessage_Node0 -- No --> E_GenerateTrainNotFoundErrorMessage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Train ID is not present in vessel name OR train is not found in system lookup
WHEN: The system encounters train validation failure
THEN: Generate a train not found error message for Merlin system notification
βœ“ Consolidated Acceptance Criteria
  • The system needs to prevent further processing of invalid train → set train processing flag to skip to bypass subsequent train-related 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_SetTrainProcessingFlagtoSkip(["Start Step"]) E_SetTrainProcessingFlagtoSkip(["End Step"]) N_SetTrainProcessingFlagtoSkip_Node0{"The system needs to prevent further
processing of invalid train"}:::decision N_SetTrainProcessingFlagtoSkip_Node0_action["Set train processing flag to skip
to bypass subsequent train-related
operations"]:::exclusion N_SetTrainProcessingFlagtoSkip_Node0 -- Yes -->|Alternative| N_SetTrainProcessingFlagtoSkip_Node0_action N_SetTrainProcessingFlagtoSkip_Node0_action --> E_SetTrainProcessingFlagtoSkip S_SetTrainProcessingFlagtoSkip --> N_SetTrainProcessingFlagtoSkip_Node0 N_SetTrainProcessingFlagtoSkip_Node0 -- No --> E_SetTrainProcessingFlagtoSkip
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An error message has been sent to Merlin system for train not found
WHEN: The system needs to prevent further processing of invalid train
THEN: Set train processing flag to skip to bypass subsequent train-related operations
βœ“ Consolidated Acceptance Criteria
  • The system needs to record validation results → log the train validation results including success/failure status and any 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_LogTrainValidationResults(["Start Step"]) E_LogTrainValidationResults(["End Step"]) N_LogTrainValidationResults_Node0{"The system needs to record
validation results"}:::decision N_LogTrainValidationResults_Node0_action["Log the train validation results
including successfailure status and
any relevant details"]:::main N_LogTrainValidationResults_Node0 -- Yes --> N_LogTrainValidationResults_Node0_action N_LogTrainValidationResults_Node0_action --> E_LogTrainValidationResults S_LogTrainValidationResults --> N_LogTrainValidationResults_Node0 N_LogTrainValidationResults_Node0 -- No --> E_LogTrainValidationResults
File: GCX016E.cbl
GIVEN: Train validation processing has completed (either successful or failed)
WHEN: The system needs to record validation results
THEN:
  • Log the train validation results including success/failure status
  • Any relevant details
βœ“ Consolidated Acceptance Criteria
  • The system processes the VID segment → 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
  • The system processes the VID segment → the equipment ID is extracted and made available for validation
  • The VID segment contains equipment ID information → the system extracts the equipment ID for further processing
  • The system processes the VID segment to extract equipment identification → the equipment ID is extracted from the VID segment 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_ExtractEquipmentIDfromVIDSegment(["Start Step"]) E_ExtractEquipmentIDfromVIDSegment(["End Step"]) N_ExtractEquipmentIDfromVIDSegment_Node0{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node0_action["The equipment ID is extracted from
the VID segment data"]:::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"}:::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 and
made available for validation"]:::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 VID segment contains equipment
ID information"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node3_action["The system extracts the equipment
ID for further processing"]:::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
identification"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node4_action["The equipment ID is extracted from
the VID segment data structure"]:::main N_ExtractEquipmentIDfromVIDSegment_Node4 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node4_action N_ExtractEquipmentIDfromVIDSegment_Node4_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node3 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node4 N_ExtractEquipmentIDfromVIDSegment_Node4 -- No --> E_ExtractEquipmentIDfromVIDSegment
File: GCX016E.cbl
GIVEN: A VID segment has been received for equipment hold processing
WHEN: The system processes the VID segment
THEN: The equipment ID is extracted from the VID segment data
File: GCX016E.cbl
GIVEN: A VID segment is received for equipment release processing
WHEN: The system processes the VID segment
THEN: The equipment ID is extracted from the VID segment data
File: GCX016E.cbl
GIVEN: A VID segment contains equipment identification data
WHEN: The system processes the VID segment
THEN:
  • The equipment id is extracted
  • Made available for validation
File: GCX016E.cbl
GIVEN: A VID segment is received in the message
WHEN: The VID segment contains equipment ID information
THEN: The system extracts the equipment ID for further processing
File: GCX016E.cbl
GIVEN: A VID segment has been received for processing
WHEN: The system processes the VID segment to extract equipment identification
THEN: The equipment ID is extracted from the VID segment data structure
βœ“ Consolidated Acceptance Criteria
  • The system validates the equipment ID format → the equipment ID format is checked against validation criteria
  • The system validates the equipment ID format → the equipment ID format is checked against validation 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_ValidateEquipmentIDFormat(["Start Step"]) E_ValidateEquipmentIDFormat(["End Step"]) N_ValidateEquipmentIDFormat_Node0{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node0_action["The 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 format is checked
against validation rules"]:::main N_ValidateEquipmentIDFormat_Node1 -- Yes --> N_ValidateEquipmentIDFormat_Node1_action N_ValidateEquipmentIDFormat_Node1_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node0 -- No --> N_ValidateEquipmentIDFormat_Node1 N_ValidateEquipmentIDFormat_Node1 -- No --> E_ValidateEquipmentIDFormat
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from a VID segment
WHEN: The system validates the equipment ID format
THEN: The equipment ID format is checked against validation criteria
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from VID segment and disposition code is SEI
WHEN: The system validates the equipment ID format
THEN: The equipment ID format is checked against validation rules
βœ“ Consolidated Acceptance Criteria
  • The system searches for the equipment in the train consist → the equipment is located within the train's equipment list
  • The system searches the train consist → the system attempts to locate the equipment within the train's equipment list
  • The system searches the train consist for the equipment → the system determines whether the equipment is found in the train list
  • The system searches for the equipment in the current train consist → the equipment location is identified within the train consist 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_LocateEquipmentinTrainConsist(["Start Step"]) E_LocateEquipmentinTrainConsist(["End Step"]) N_LocateEquipmentinTrainConsist_Node0{"The system searches for the
equipment in the train consist"}:::decision N_LocateEquipmentinTrainConsist_Node0_action["The equipment is located within the
train s equipment list"]:::main N_LocateEquipmentinTrainConsist_Node0 -- Yes --> N_LocateEquipmentinTrainConsist_Node0_action N_LocateEquipmentinTrainConsist_Node0_action --> E_LocateEquipmentinTrainConsist S_LocateEquipmentinTrainConsist --> N_LocateEquipmentinTrainConsist_Node0 N_LocateEquipmentinTrainConsist_Node1{"The system searches the train
consist"}:::decision N_LocateEquipmentinTrainConsist_Node1_action["The system attempts to locate the
equipment within the train s
equipment list"]:::main N_LocateEquipmentinTrainConsist_Node1 -- Yes --> N_LocateEquipmentinTrainConsist_Node1_action N_LocateEquipmentinTrainConsist_Node1_action --> E_LocateEquipmentinTrainConsist N_LocateEquipmentinTrainConsist_Node0 -- No --> N_LocateEquipmentinTrainConsist_Node1 N_LocateEquipmentinTrainConsist_Node2{"The system searches the train
consist for the equipment"}:::decision N_LocateEquipmentinTrainConsist_Node2_action["The system determines whether the
equipment is found in the train list"]:::main N_LocateEquipmentinTrainConsist_Node2 -- Yes --> N_LocateEquipmentinTrainConsist_Node2_action N_LocateEquipmentinTrainConsist_Node2_action --> E_LocateEquipmentinTrainConsist N_LocateEquipmentinTrainConsist_Node1 -- No --> N_LocateEquipmentinTrainConsist_Node2 N_LocateEquipmentinTrainConsist_Node3{"The system searches for the
equipment in the current train
consist"}:::decision N_LocateEquipmentinTrainConsist_Node3_action["The equipment location is
identified within the train consist
data structure"]:::main N_LocateEquipmentinTrainConsist_Node3 -- Yes --> N_LocateEquipmentinTrainConsist_Node3_action N_LocateEquipmentinTrainConsist_Node3_action --> E_LocateEquipmentinTrainConsist N_LocateEquipmentinTrainConsist_Node2 -- No --> N_LocateEquipmentinTrainConsist_Node3 N_LocateEquipmentinTrainConsist_Node3 -- No --> E_LocateEquipmentinTrainConsist
File: GCX016E.cbl
GIVEN: A valid equipment ID has been confirmed
WHEN: The system searches for the equipment in the train consist
THEN: The equipment is located within the train's equipment list
File: GCX016E.cbl
GIVEN: Equipment ID is valid and formatted correctly
WHEN: The system searches the train consist
THEN: The system attempts to locate the equipment within the train's equipment list
File: GCX016E.cbl
GIVEN: An equipment ID has been extracted from VID segment
WHEN: The system searches the train consist for the equipment
THEN: The system determines whether the equipment is found in the train list
File: GCX016E.cbl
GIVEN: A valid equipment ID has been extracted from a VID segment
WHEN: The system searches for the equipment in the current train consist
THEN: The equipment location is identified within the train consist data structure
βœ“ Consolidated Acceptance Criteria
  • The system checks the current equipment status → the current hold status of the equipment is retrieved
  • The system checks equipment status → the current seizure status of the equipment is retrieved and 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_CheckCurrentEquipmentStatus(["Start Step"]) E_CheckCurrentEquipmentStatus(["End Step"]) N_CheckCurrentEquipmentStatus_Node0{"The system checks the current
equipment status"}:::decision N_CheckCurrentEquipmentStatus_Node0_action["The current hold status of the
equipment is retrieved"]:::main N_CheckCurrentEquipmentStatus_Node0 -- Yes --> N_CheckCurrentEquipmentStatus_Node0_action N_CheckCurrentEquipmentStatus_Node0_action --> E_CheckCurrentEquipmentStatus S_CheckCurrentEquipmentStatus --> N_CheckCurrentEquipmentStatus_Node0 N_CheckCurrentEquipmentStatus_Node1{"The system checks equipment status"}:::decision N_CheckCurrentEquipmentStatus_Node1_action["The current seizure status of the
equipment is retrieved and evaluated"]:::main N_CheckCurrentEquipmentStatus_Node1 -- Yes --> N_CheckCurrentEquipmentStatus_Node1_action N_CheckCurrentEquipmentStatus_Node1_action --> E_CheckCurrentEquipmentStatus N_CheckCurrentEquipmentStatus_Node0 -- No --> N_CheckCurrentEquipmentStatus_Node1 N_CheckCurrentEquipmentStatus_Node1 -- No --> E_CheckCurrentEquipmentStatus
File: GCX016E.cbl
GIVEN: Equipment has been found in the train consist
WHEN: The system checks the current equipment status
THEN: The current hold status of the equipment is retrieved
File: GCX016E.cbl
GIVEN: Equipment has been found in the train consist
WHEN: The system checks equipment status
THEN:
  • The current seizure status of the equipment is retrieved
  • Evaluated
βœ“ Consolidated Acceptance Criteria
  • If the equipment hold status → if equipment is already held, generate already held warning, otherwise apply hold status to 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_EquipmentAlreadyHeld(["Start Step"]) E_EquipmentAlreadyHeld(["End Step"]) N_EquipmentAlreadyHeld_Node0{"The system evaluates the equipment
hold status"}:::decision N_EquipmentAlreadyHeld_Node0_action["If equipment is already held,
generate already held warning,
otherwise apply hold status to
equipment"]:::main N_EquipmentAlreadyHeld_Node0 -- Yes --> N_EquipmentAlreadyHeld_Node0_action N_EquipmentAlreadyHeld_Node0_action --> E_EquipmentAlreadyHeld S_EquipmentAlreadyHeld --> N_EquipmentAlreadyHeld_Node0 N_EquipmentAlreadyHeld_Node0 -- No --> E_EquipmentAlreadyHeld
File: GCX016E.cbl
GIVEN: The current equipment status has been checked
WHEN: The system evaluates the equipment hold status
THEN: If equipment is already held, generate already held warning, otherwise apply hold status to equipment
βœ“ Consolidated Acceptance Criteria
  • The system applies hold status to the equipment → the equipment hold 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_ApplyHoldStatustoEquipment(["Start Step"]) E_ApplyHoldStatustoEquipment(["End Step"]) N_ApplyHoldStatustoEquipment_Node0{"The system applies hold status to
the equipment"}:::decision N_ApplyHoldStatustoEquipment_Node0_action["The equipment hold status is set"]:::main N_ApplyHoldStatustoEquipment_Node0 -- Yes --> N_ApplyHoldStatustoEquipment_Node0_action N_ApplyHoldStatustoEquipment_Node0_action --> E_ApplyHoldStatustoEquipment S_ApplyHoldStatustoEquipment --> N_ApplyHoldStatustoEquipment_Node0 N_ApplyHoldStatustoEquipment_Node0 -- No --> E_ApplyHoldStatustoEquipment
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment is not currently held
WHEN: The system applies hold status to the equipment
THEN: The equipment hold status is set
βœ“ Consolidated Acceptance Criteria
  • The system updates equipment status flags → equipment status flags are updated to reflect held status
  • The system updates equipment status information → all equipment status flags must be updated to reflect the released from 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_UpdateEquipmentStatusFlags(["Start Step"]) E_UpdateEquipmentStatusFlags(["End Step"]) N_UpdateEquipmentStatusFlags_Node0{"The system updates equipment status
flags"}:::decision N_UpdateEquipmentStatusFlags_Node0_action["Equipment status flags are updated
to reflect held status"]:::main N_UpdateEquipmentStatusFlags_Node0 -- Yes --> N_UpdateEquipmentStatusFlags_Node0_action N_UpdateEquipmentStatusFlags_Node0_action --> E_UpdateEquipmentStatusFlags S_UpdateEquipmentStatusFlags --> N_UpdateEquipmentStatusFlags_Node0 N_UpdateEquipmentStatusFlags_Node1{"The system updates equipment status
information"}:::decision N_UpdateEquipmentStatusFlags_Node1_action["All equipment status flags must be
updated to reflect the released from
seizure state"]:::main N_UpdateEquipmentStatusFlags_Node1 -- Yes --> N_UpdateEquipmentStatusFlags_Node1_action N_UpdateEquipmentStatusFlags_Node1_action --> E_UpdateEquipmentStatusFlags N_UpdateEquipmentStatusFlags_Node0 -- No --> N_UpdateEquipmentStatusFlags_Node1 N_UpdateEquipmentStatusFlags_Node1 -- No --> E_UpdateEquipmentStatusFlags
File: GCX016E.cbl
GIVEN: Hold status has been applied to equipment
WHEN: The system updates equipment status flags
THEN: Equipment status flags are updated to reflect held status
File: GCX016E.cbl
GIVEN: Equipment seizure status has been removed
WHEN: The system updates equipment status information
THEN: All equipment status flags must be updated to reflect the released from seizure state
βœ“ Consolidated Acceptance Criteria
  • The system increments the train hold counter → the train hold 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_IncrementTrainHoldCounter(["Start Step"]) E_IncrementTrainHoldCounter(["End Step"]) N_IncrementTrainHoldCounter_Node0{"The system increments the train
hold counter"}:::decision N_IncrementTrainHoldCounter_Node0_action["The train hold counter is increased
by one"]:::main N_IncrementTrainHoldCounter_Node0 -- Yes --> N_IncrementTrainHoldCounter_Node0_action N_IncrementTrainHoldCounter_Node0_action --> E_IncrementTrainHoldCounter S_IncrementTrainHoldCounter --> N_IncrementTrainHoldCounter_Node0 N_IncrementTrainHoldCounter_Node0 -- No --> E_IncrementTrainHoldCounter
File: GCX016E.cbl
GIVEN: Equipment status flags have been updated
WHEN: The system increments the train hold counter
THEN: The train hold counter is increased by one
βœ“ Consolidated Acceptance Criteria
  • The system logs the equipment hold action → a log entry is created documenting the equipment hold with timestamp 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_LogEquipmentHoldAction(["Start Step"]) E_LogEquipmentHoldAction(["End Step"]) N_LogEquipmentHoldAction_Node0{"The system logs the equipment hold
action"}:::decision N_LogEquipmentHoldAction_Node0_action["A log entry is created documenting
the equipment hold with timestamp
and equipment details"]:::main N_LogEquipmentHoldAction_Node0 -- Yes --> N_LogEquipmentHoldAction_Node0_action N_LogEquipmentHoldAction_Node0_action --> E_LogEquipmentHoldAction S_LogEquipmentHoldAction --> N_LogEquipmentHoldAction_Node0 N_LogEquipmentHoldAction_Node0 -- No --> E_LogEquipmentHoldAction
File: GCX016E.cbl
GIVEN: Train hold counter has been incremented
WHEN: The system logs the equipment hold action
THEN:
  • A log entry is created documenting the equipment hold with timestamp
  • Equipment details
βœ“ Consolidated Acceptance Criteria
  • The system generates hold confirmation message → a confirmation message is created indicating successful equipment 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_GenerateHoldConfirmationMessage(["Start Step"]) E_GenerateHoldConfirmationMessage(["End Step"]) N_GenerateHoldConfirmationMessage_Node0{"The system generates hold
confirmation message"}:::decision N_GenerateHoldConfirmationMessage_Node0_action["A confirmation message is created
indicating successful equipment hold"]:::main N_GenerateHoldConfirmationMessage_Node0 -- Yes --> N_GenerateHoldConfirmationMessage_Node0_action N_GenerateHoldConfirmationMessage_Node0_action --> E_GenerateHoldConfirmationMessage S_GenerateHoldConfirmationMessage --> N_GenerateHoldConfirmationMessage_Node0 N_GenerateHoldConfirmationMessage_Node0 -- No --> E_GenerateHoldConfirmationMessage
File: GCX016E.cbl
GIVEN: Equipment hold action has been logged
WHEN: The system generates hold confirmation message
THEN: A confirmation message is created indicating successful equipment hold
βœ“ Consolidated Acceptance Criteria
  • The system updates the train equipment list → the train equipment list is updated with the equipment's new held status
  • The system completes status processing for the equipment → the system updates the train equipment list with the current equipment status and counter values
  • The system updates the train equipment list → the train equipment list reflects the current status information for the processed 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_UpdateTrainEquipmentList(["Start Step"]) E_UpdateTrainEquipmentList(["End Step"]) N_UpdateTrainEquipmentList_Node0{"The system updates the train
equipment list"}:::decision N_UpdateTrainEquipmentList_Node0_action["The train equipment list is updated
with the equipment s new held status"]:::main N_UpdateTrainEquipmentList_Node0 -- Yes --> N_UpdateTrainEquipmentList_Node0_action N_UpdateTrainEquipmentList_Node0_action --> E_UpdateTrainEquipmentList S_UpdateTrainEquipmentList --> N_UpdateTrainEquipmentList_Node0 N_UpdateTrainEquipmentList_Node1{"The system completes status
processing for the equipment"}:::decision N_UpdateTrainEquipmentList_Node1_action["The system updates the train
equipment list with the current
equipment status and counter values"]:::main N_UpdateTrainEquipmentList_Node1 -- Yes --> N_UpdateTrainEquipmentList_Node1_action N_UpdateTrainEquipmentList_Node1_action --> E_UpdateTrainEquipmentList N_UpdateTrainEquipmentList_Node0 -- No --> N_UpdateTrainEquipmentList_Node1 N_UpdateTrainEquipmentList_Node2{"The system updates the train
equipment list"}:::decision N_UpdateTrainEquipmentList_Node2_action["The train equipment list reflects
the current status information for
the processed equipment"]:::main N_UpdateTrainEquipmentList_Node2 -- Yes --> N_UpdateTrainEquipmentList_Node2_action N_UpdateTrainEquipmentList_Node2_action --> E_UpdateTrainEquipmentList N_UpdateTrainEquipmentList_Node1 -- No --> N_UpdateTrainEquipmentList_Node2 N_UpdateTrainEquipmentList_Node2 -- No --> E_UpdateTrainEquipmentList
File: GCX016E.cbl
GIVEN: Hold confirmation message has been generated
WHEN: The system updates the train equipment list
THEN: The train equipment list is updated with the equipment's new held status
File: GCX016E.cbl
GIVEN: Equipment status flags and counters have been updated
WHEN: The system completes status processing for the equipment
THEN:
  • The system updates the train equipment list with the current equipment status
  • Counter values
File: GCX016E.cbl
GIVEN: Equipment status counters have been updated for specific equipment
WHEN: The system updates the train equipment list
THEN: The train equipment list reflects the current status information for the processed equipment
βœ“ Consolidated Acceptance Criteria
  • Equipment is not found in the train → an equipment not found error message is generated
  • The specified equipment is not found in the train consist → equipment not found error is generated with appropriate 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_GenerateEquipmentNotFoundError(["Start Step"]) E_GenerateEquipmentNotFoundError(["End Step"]) N_GenerateEquipmentNotFoundError_Node0{"Equipment is not found in the train"}:::decision N_GenerateEquipmentNotFoundError_Node0_action["An equipment not found error
message is generated"]:::main N_GenerateEquipmentNotFoundError_Node0 -- Yes --> N_GenerateEquipmentNotFoundError_Node0_action N_GenerateEquipmentNotFoundError_Node0_action --> E_GenerateEquipmentNotFoundError S_GenerateEquipmentNotFoundError --> N_GenerateEquipmentNotFoundError_Node0 N_GenerateEquipmentNotFoundError_Node1{"The specified equipment is not
found in the train consist"}:::decision N_GenerateEquipmentNotFoundError_Node1_action["Equipment not found error is
generated with appropriate error
details"]:::main N_GenerateEquipmentNotFoundError_Node1 -- Yes --> N_GenerateEquipmentNotFoundError_Node1_action N_GenerateEquipmentNotFoundError_Node1_action --> E_GenerateEquipmentNotFoundError N_GenerateEquipmentNotFoundError_Node0 -- No --> N_GenerateEquipmentNotFoundError_Node1 N_GenerateEquipmentNotFoundError_Node1 -- No --> E_GenerateEquipmentNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment search in train consist has been completed
WHEN: Equipment is not found in the train
THEN: An equipment not found error message is generated
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment search in train consist has been completed
WHEN: The specified equipment is not found in the train consist
THEN: Equipment not found error is generated with appropriate error details
βœ“ Consolidated Acceptance Criteria
  • Equipment ID is determined to be invalid → an invalid equipment ID error message is generated
  • The equipment ID fails validation requirements → invalid equipment ID error is generated with appropriate 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_GenerateInvalidEquipmentIDError(["Start Step"]) E_GenerateInvalidEquipmentIDError(["End Step"]) N_GenerateInvalidEquipmentIDError_Node0{"Equipment ID is determined to be
invalid"}:::decision N_GenerateInvalidEquipmentIDError_Node0_action["An invalid equipment ID error
message is generated"]:::exclusion N_GenerateInvalidEquipmentIDError_Node0 -- Yes -->|Alternative| N_GenerateInvalidEquipmentIDError_Node0_action N_GenerateInvalidEquipmentIDError_Node0_action --> E_GenerateInvalidEquipmentIDError S_GenerateInvalidEquipmentIDError --> N_GenerateInvalidEquipmentIDError_Node0 N_GenerateInvalidEquipmentIDError_Node1{"The equipment ID fails validation
requirements"}:::decision N_GenerateInvalidEquipmentIDError_Node1_action["Invalid equipment ID error is
generated with appropriate error
details"]:::main N_GenerateInvalidEquipmentIDError_Node1 -- Yes --> N_GenerateInvalidEquipmentIDError_Node1_action N_GenerateInvalidEquipmentIDError_Node1_action --> E_GenerateInvalidEquipmentIDError N_GenerateInvalidEquipmentIDError_Node0 -- No --> N_GenerateInvalidEquipmentIDError_Node1 N_GenerateInvalidEquipmentIDError_Node1 -- No --> E_GenerateInvalidEquipmentIDError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment ID format validation has been performed
WHEN: Equipment ID is determined to be invalid
THEN: An invalid equipment ID error message is generated
File: GCX016E.cbl
GIVEN: Equipment ID has been extracted from VID segment
WHEN: The equipment ID fails validation requirements
THEN: Invalid equipment ID error is generated with appropriate error details
βœ“ Consolidated Acceptance Criteria
  • Equipment is already in held status → an already held warning message 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_GenerateAlreadyHeldWarning(["Start Step"]) E_GenerateAlreadyHeldWarning(["End Step"]) N_GenerateAlreadyHeldWarning_Node0{"Equipment is already in held status"}:::decision N_GenerateAlreadyHeldWarning_Node0_action["An already held warning message is
generated"]:::main N_GenerateAlreadyHeldWarning_Node0 -- Yes --> N_GenerateAlreadyHeldWarning_Node0_action N_GenerateAlreadyHeldWarning_Node0_action --> E_GenerateAlreadyHeldWarning S_GenerateAlreadyHeldWarning --> N_GenerateAlreadyHeldWarning_Node0 N_GenerateAlreadyHeldWarning_Node0 -- No --> E_GenerateAlreadyHeldWarning
File: GCX016E.cbl
GIVEN: Equipment hold status has been evaluated
WHEN: Equipment is already in held status
THEN: An already held warning message is generated
βœ“ Consolidated Acceptance Criteria
  • The system validates the release request parameters → the system determines if the release request is valid or generates invalid release request 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_ValidReleaseRequest(["Start Step"]) E_ValidReleaseRequest(["End Step"]) N_ValidReleaseRequest_Node0{"The system validates the release
request parameters"}:::decision N_ValidReleaseRequest_Node0_action["The system determines if the
release request is valid or
generates invalid release request
error"]:::main N_ValidReleaseRequest_Node0 -- Yes --> N_ValidReleaseRequest_Node0_action N_ValidReleaseRequest_Node0_action --> E_ValidReleaseRequest S_ValidReleaseRequest --> N_ValidReleaseRequest_Node0 N_ValidReleaseRequest_Node0 -- No --> E_ValidReleaseRequest
File: GCX016E.cbl
GIVEN: Equipment exists in the train and release request data is available
WHEN: The system validates the release request parameters
THEN: The system determines if the release request is valid or generates invalid release request error
βœ“ Consolidated Acceptance Criteria
  • The system checks the current hold status of the equipment → the system determines if equipment is held or generates warning for equipment not 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_EquipmentCurrentlyHeld(["Start Step"]) E_EquipmentCurrentlyHeld(["End Step"]) N_EquipmentCurrentlyHeld_Node0{"The system checks the current hold
status of the equipment"}:::decision N_EquipmentCurrentlyHeld_Node0_action["The system determines if equipment
is held or generates warning for
equipment not held"]:::main N_EquipmentCurrentlyHeld_Node0 -- Yes --> N_EquipmentCurrentlyHeld_Node0_action N_EquipmentCurrentlyHeld_Node0_action --> E_EquipmentCurrentlyHeld S_EquipmentCurrentlyHeld --> N_EquipmentCurrentlyHeld_Node0 N_EquipmentCurrentlyHeld_Node0 -- No --> E_EquipmentCurrentlyHeld
File: GCX016E.cbl
GIVEN: A valid release request exists for equipment found in train
WHEN: The system checks the current hold status of the equipment
THEN: The system determines if equipment is held or generates warning for equipment not held
βœ“ Consolidated Acceptance Criteria
  • The system processes the equipment release → the equipment release is processed and hold 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_ProcessEquipmentRelease(["Start Step"]) E_ProcessEquipmentRelease(["End Step"]) N_ProcessEquipmentRelease_Node0{"The system processes the equipment
release"}:::decision N_ProcessEquipmentRelease_Node0_action["The equipment release is processed
and hold counter is decremented"]:::main N_ProcessEquipmentRelease_Node0 -- Yes --> N_ProcessEquipmentRelease_Node0_action N_ProcessEquipmentRelease_Node0_action --> E_ProcessEquipmentRelease S_ProcessEquipmentRelease --> N_ProcessEquipmentRelease_Node0 N_ProcessEquipmentRelease_Node0 -- No --> E_ProcessEquipmentRelease
File: GCX016E.cbl
GIVEN: Equipment is currently held and release request is valid
WHEN: The system processes the equipment release
THEN:
  • The equipment release is processed
  • Hold counter is decremented
βœ“ Consolidated Acceptance Criteria
  • The system updates the hold counter → the hold 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_DecrementHoldCounter(["Start Step"]) E_DecrementHoldCounter(["End Step"]) N_DecrementHoldCounter_Node0{"The system updates the hold counter"}:::decision N_DecrementHoldCounter_Node0_action["The hold counter is decremented by
one"]:::main N_DecrementHoldCounter_Node0 -- Yes --> N_DecrementHoldCounter_Node0_action N_DecrementHoldCounter_Node0_action --> E_DecrementHoldCounter S_DecrementHoldCounter --> N_DecrementHoldCounter_Node0 N_DecrementHoldCounter_Node0 -- No --> E_DecrementHoldCounter
File: GCX016E.cbl
GIVEN: Equipment release is being processed
WHEN: The system updates the hold counter
THEN: The hold counter is decremented by one
βœ“ Consolidated Acceptance Criteria
  • The system updates equipment status → the equipment 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_SetEquipmentStatustoReleased(["Start Step"]) E_SetEquipmentStatustoReleased(["End Step"]) N_SetEquipmentStatustoReleased_Node0{"The system updates equipment status"}:::decision N_SetEquipmentStatustoReleased_Node0_action["The equipment status is set to
released"]:::main N_SetEquipmentStatustoReleased_Node0 -- Yes --> N_SetEquipmentStatustoReleased_Node0_action N_SetEquipmentStatustoReleased_Node0_action --> E_SetEquipmentStatustoReleased S_SetEquipmentStatustoReleased --> N_SetEquipmentStatustoReleased_Node0 N_SetEquipmentStatustoReleased_Node0 -- No --> E_SetEquipmentStatustoReleased
File: GCX016E.cbl
GIVEN: Hold counter equals zero after decrement
WHEN: The system updates equipment status
THEN: The equipment status is set to released
βœ“ Consolidated Acceptance Criteria
  • The system logs the release action → the equipment release action is logged 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_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
logged with relevant details"]:::main N_LogEquipmentReleaseAction_Node0 -- Yes --> N_LogEquipmentReleaseAction_Node0_action N_LogEquipmentReleaseAction_Node0_action --> E_LogEquipmentReleaseAction S_LogEquipmentReleaseAction --> N_LogEquipmentReleaseAction_Node0 N_LogEquipmentReleaseAction_Node0 -- No --> E_LogEquipmentReleaseAction
File: GCX016E.cbl
GIVEN: Equipment status has been updated in train list
WHEN: The system logs the release action
THEN: The equipment release action is logged with relevant details
βœ“ Consolidated Acceptance Criteria
  • The system updates train equipment status flags → the train equipment status flags are updated to reflect current equipment states
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UpdateTrainEquipmentStatusFlags(["Start Step"]) E_UpdateTrainEquipmentStatusFlags(["End Step"]) N_UpdateTrainEquipmentStatusFlags_Node0{"The system updates train equipment
status flags"}:::decision N_UpdateTrainEquipmentStatusFlags_Node0_action["The train equipment status flags
are updated to reflect current
equipment states"]:::main N_UpdateTrainEquipmentStatusFlags_Node0 -- Yes --> N_UpdateTrainEquipmentStatusFlags_Node0_action N_UpdateTrainEquipmentStatusFlags_Node0_action --> E_UpdateTrainEquipmentStatusFlags S_UpdateTrainEquipmentStatusFlags --> N_UpdateTrainEquipmentStatusFlags_Node0 N_UpdateTrainEquipmentStatusFlags_Node0 -- No --> E_UpdateTrainEquipmentStatusFlags
File: GCX016E.cbl
GIVEN: Equipment release notification has been generated
WHEN: The system updates train equipment status flags
THEN: The train equipment status flags are updated to reflect current equipment states
βœ“ Consolidated Acceptance Criteria
  • The system checks if all equipment in train is released → the system determines if all equipment is released or if some 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_AllEquipmentinTrainReleased(["Start Step"]) E_AllEquipmentinTrainReleased(["End Step"]) N_AllEquipmentinTrainReleased_Node0{"The system checks if all equipment
in train is released"}:::decision N_AllEquipmentinTrainReleased_Node0_action["The system determines if all
equipment is released or if some
equipment remains held"]:::main N_AllEquipmentinTrainReleased_Node0 -- Yes --> N_AllEquipmentinTrainReleased_Node0_action N_AllEquipmentinTrainReleased_Node0_action --> E_AllEquipmentinTrainReleased S_AllEquipmentinTrainReleased --> N_AllEquipmentinTrainReleased_Node0 N_AllEquipmentinTrainReleased_Node0 -- No --> E_AllEquipmentinTrainReleased
File: GCX016E.cbl
GIVEN: Train equipment status flags have been updated
WHEN: The system checks if all equipment in train is released
THEN: The system determines if all equipment is released or if some equipment remains held
βœ“ Consolidated Acceptance Criteria
  • The system updates overall train status → the overall train status is updated to reflect that all equipment is 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_UpdateOverallTrainStatus(["Start Step"]) E_UpdateOverallTrainStatus(["End Step"]) N_UpdateOverallTrainStatus_Node0{"The system updates overall train
status"}:::decision N_UpdateOverallTrainStatus_Node0_action["The overall train status is updated
to reflect that all equipment is
released"]:::main N_UpdateOverallTrainStatus_Node0 -- Yes --> N_UpdateOverallTrainStatus_Node0_action N_UpdateOverallTrainStatus_Node0_action --> E_UpdateOverallTrainStatus S_UpdateOverallTrainStatus --> N_UpdateOverallTrainStatus_Node0 N_UpdateOverallTrainStatus_Node0 -- No --> E_UpdateOverallTrainStatus
File: GCX016E.cbl
GIVEN: All equipment in the train has been released
WHEN: The system updates overall train status
THEN: The overall train status is updated to reflect that all equipment is released
βœ“ Consolidated Acceptance Criteria
  • The system sends release confirmation → a release confirmation message is 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_SendReleaseConfirmationMessage(["Start Step"]) E_SendReleaseConfirmationMessage(["End Step"]) N_SendReleaseConfirmationMessage_Node0{"The system sends release
confirmation"}:::decision N_SendReleaseConfirmationMessage_Node0_action["A release confirmation message is
sent"]:::main N_SendReleaseConfirmationMessage_Node0 -- Yes --> N_SendReleaseConfirmationMessage_Node0_action N_SendReleaseConfirmationMessage_Node0_action --> E_SendReleaseConfirmationMessage S_SendReleaseConfirmationMessage --> N_SendReleaseConfirmationMessage_Node0 N_SendReleaseConfirmationMessage_Node0 -- No --> E_SendReleaseConfirmationMessage
File: GCX016E.cbl
GIVEN: Equipment release processing is complete and train status is updated
WHEN: The system sends release confirmation
THEN: A release confirmation message is sent
βœ“ Consolidated Acceptance Criteria
  • Release request validation fails → an invalid release request 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_GenerateErrorInvalidReleaseRequest(["Start Step"]) E_GenerateErrorInvalidReleaseRequest(["End Step"]) N_GenerateErrorInvalidReleaseRequest_Node0{"Release request validation fails"}:::decision N_GenerateErrorInvalidReleaseRequest_Node0_action["An invalid release request error is
generated"]:::main N_GenerateErrorInvalidReleaseRequest_Node0 -- Yes --> N_GenerateErrorInvalidReleaseRequest_Node0_action N_GenerateErrorInvalidReleaseRequest_Node0_action --> E_GenerateErrorInvalidReleaseRequest S_GenerateErrorInvalidReleaseRequest --> N_GenerateErrorInvalidReleaseRequest_Node0 N_GenerateErrorInvalidReleaseRequest_Node0 -- No --> E_GenerateErrorInvalidReleaseRequest
File: GCX016E.cbl
GIVEN: Equipment exists in train but release request validation is performed
WHEN: Release request validation fails
THEN: An invalid release request error is generated
βœ“ Consolidated Acceptance Criteria
  • The system processes the VID segment → the equipment ID is extracted from the VID segment 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_VIDSegmentReceived(["Start Step"]) E_VIDSegmentReceived(["End Step"]) N_VIDSegmentReceived_Node0{"The system processes the VID
segment"}:::decision N_VIDSegmentReceived_Node0_action["The equipment ID is extracted from
the VID segment for further
processing"]:::main N_VIDSegmentReceived_Node0 -- Yes --> N_VIDSegmentReceived_Node0_action N_VIDSegmentReceived_Node0_action --> E_VIDSegmentReceived S_VIDSegmentReceived --> N_VIDSegmentReceived_Node0 N_VIDSegmentReceived_Node0 -- No --> E_VIDSegmentReceived
File: GCX016E.cbl
GIVEN: A VID segment is received in the message queue
WHEN: The system processes the VID segment
THEN: The equipment ID is extracted from the VID segment for further processing
βœ“ Consolidated Acceptance Criteria
  • The system generates notifications → seizure notification messages are 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_GenerateEquipmentSeizureNotification(["Start Step"]) E_GenerateEquipmentSeizureNotification(["End Step"]) N_GenerateEquipmentSeizureNotification_Node0{"The system generates notifications"}:::decision N_GenerateEquipmentSeizureNotification_Node0_action["Seizure notification messages are
created and sent to appropriate
recipients"]:::main N_GenerateEquipmentSeizureNotification_Node0 -- Yes --> N_GenerateEquipmentSeizureNotification_Node0_action N_GenerateEquipmentSeizureNotification_Node0_action --> E_GenerateEquipmentSeizureNotification S_GenerateEquipmentSeizureNotification --> N_GenerateEquipmentSeizureNotification_Node0 N_GenerateEquipmentSeizureNotification_Node0 -- No --> E_GenerateEquipmentSeizureNotification
File: GCX016E.cbl
GIVEN: Equipment seizure action has been logged
WHEN: The system generates notifications
THEN:
  • Seizure notification messages are created
  • Sent to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • The system updates counters → train equipment counters are updated to reflect the newly seized 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_UpdateTrainEquipmentCounter(["Start Step"]) E_UpdateTrainEquipmentCounter(["End Step"]) N_UpdateTrainEquipmentCounter_Node0{"The system updates counters"}:::decision N_UpdateTrainEquipmentCounter_Node0_action["Train equipment counters are
updated to reflect the newly seized
equipment"]:::main N_UpdateTrainEquipmentCounter_Node0 -- Yes --> N_UpdateTrainEquipmentCounter_Node0_action N_UpdateTrainEquipmentCounter_Node0_action --> E_UpdateTrainEquipmentCounter S_UpdateTrainEquipmentCounter --> N_UpdateTrainEquipmentCounter_Node0 N_UpdateTrainEquipmentCounter_Node0 -- No --> E_UpdateTrainEquipmentCounter
File: GCX016E.cbl
GIVEN: Equipment seizure notification has been generated
WHEN: The system updates counters
THEN: Train equipment counters are updated to reflect the newly seized equipment
βœ“ Consolidated Acceptance Criteria
  • The system finalizes processing → the equipment seizure process 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_ProcessCompleteEquipmentSeized(["Start Step"]) E_ProcessCompleteEquipmentSeized(["End Step"]) N_ProcessCompleteEquipmentSeized_Node0{"The system finalizes processing"}:::decision N_ProcessCompleteEquipmentSeized_Node0_action["The equipment seizure process is
marked as complete"]:::main N_ProcessCompleteEquipmentSeized_Node0 -- Yes --> N_ProcessCompleteEquipmentSeized_Node0_action N_ProcessCompleteEquipmentSeized_Node0_action --> E_ProcessCompleteEquipmentSeized S_ProcessCompleteEquipmentSeized --> N_ProcessCompleteEquipmentSeized_Node0 N_ProcessCompleteEquipmentSeized_Node0 -- No --> E_ProcessCompleteEquipmentSeized
File: GCX016E.cbl
GIVEN: All seizure processing steps have been completed successfully
WHEN: The system finalizes processing
THEN: The equipment seizure process is marked as complete
βœ“ Consolidated Acceptance Criteria
  • The system detects duplicate seizure attempt → a warning message is generated indicating equipment is already 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_GenerateWarningEquipmentAlreadySeized(["Start Step"]) E_GenerateWarningEquipmentAlreadySeized(["End Step"]) N_GenerateWarningEquipmentAlreadySeized_Node0{"The system detects duplicate
seizure attempt"}:::decision N_GenerateWarningEquipmentAlreadySeized_Node0_action["A warning message is generated
indicating equipment is already
seized"]:::main N_GenerateWarningEquipmentAlreadySeized_Node0 -- Yes --> N_GenerateWarningEquipmentAlreadySeized_Node0_action N_GenerateWarningEquipmentAlreadySeized_Node0_action --> E_GenerateWarningEquipmentAlreadySeized S_GenerateWarningEquipmentAlreadySeized --> N_GenerateWarningEquipmentAlreadySeized_Node0 N_GenerateWarningEquipmentAlreadySeized_Node0 -- No --> E_GenerateWarningEquipmentAlreadySeized
File: GCX016E.cbl
GIVEN: Equipment is found but already has seized status
WHEN: The system detects duplicate seizure attempt
THEN: A warning message is generated indicating equipment is already seized
βœ“ Consolidated Acceptance Criteria
  • The system searches the train equipment consist → the equipment must be found in the train's equipment list to proceed with 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_LookupEquipmentinTrainConsist(["Start Step"]) E_LookupEquipmentinTrainConsist(["End Step"]) N_LookupEquipmentinTrainConsist_Node0{"The system searches the train
equipment consist"}:::decision N_LookupEquipmentinTrainConsist_Node0_action["The equipment must be found in the
train s equipment list to proceed
with seizure release"]:::main N_LookupEquipmentinTrainConsist_Node0 -- Yes --> N_LookupEquipmentinTrainConsist_Node0_action N_LookupEquipmentinTrainConsist_Node0_action --> E_LookupEquipmentinTrainConsist S_LookupEquipmentinTrainConsist --> N_LookupEquipmentinTrainConsist_Node0 N_LookupEquipmentinTrainConsist_Node0 -- No --> E_LookupEquipmentinTrainConsist
File: GCX016E.cbl
GIVEN: A valid equipment ID from VID segment
WHEN: The system searches the train equipment consist
THEN: The equipment must be found in the train's equipment list to proceed with seizure release
βœ“ Consolidated Acceptance Criteria
  • The system checks the equipment's current seizure status flags → the equipment must currently be in seized status to allow 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_CheckCurrentSeizureStatus(["Start Step"]) E_CheckCurrentSeizureStatus(["End Step"]) N_CheckCurrentSeizureStatus_Node0{"The system checks the equipment s
current seizure status flags"}:::decision N_CheckCurrentSeizureStatus_Node0_action["The equipment must currently be in
seized status to allow seizure
release"]:::main N_CheckCurrentSeizureStatus_Node0 -- Yes --> N_CheckCurrentSeizureStatus_Node0_action N_CheckCurrentSeizureStatus_Node0_action --> E_CheckCurrentSeizureStatus S_CheckCurrentSeizureStatus --> N_CheckCurrentSeizureStatus_Node0 N_CheckCurrentSeizureStatus_Node0 -- No --> E_CheckCurrentSeizureStatus
File: GCX016E.cbl
GIVEN: Equipment is found in the train consist
WHEN: The system checks the equipment's current seizure status flags
THEN: The equipment must currently be in seized status to allow seizure release
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure release request → the seizure status flag must be removed from the equipment 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_RemoveSeizureStatusfromEquipment(["Start Step"]) E_RemoveSeizureStatusfromEquipment(["End Step"]) N_RemoveSeizureStatusfromEquipment_Node0{"The system processes the seizure
release request"}:::decision N_RemoveSeizureStatusfromEquipment_Node0_action["The seizure status flag must be
removed 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_Node0 -- No --> E_RemoveSeizureStatusfromEquipment
File: GCX016E.cbl
GIVEN: Equipment is currently seized and seizure release is authorized
WHEN: The system processes the seizure release request
THEN: The seizure status flag must be removed from the equipment record
βœ“ Consolidated Acceptance Criteria
  • The system updates train status information → the train seizure status flag must be cleared to indicate no equipment is 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_UpdateTrainSeizureStatusFlag(["Start Step"]) E_UpdateTrainSeizureStatusFlag(["End Step"]) N_UpdateTrainSeizureStatusFlag_Node0{"The system updates train status
information"}:::decision N_UpdateTrainSeizureStatusFlag_Node0_action["The train seizure status flag must
be cleared to indicate no equipment
is seized"]:::main N_UpdateTrainSeizureStatusFlag_Node0 -- Yes --> N_UpdateTrainSeizureStatusFlag_Node0_action N_UpdateTrainSeizureStatusFlag_Node0_action --> E_UpdateTrainSeizureStatusFlag S_UpdateTrainSeizureStatusFlag --> N_UpdateTrainSeizureStatusFlag_Node0 N_UpdateTrainSeizureStatusFlag_Node0 -- No --> E_UpdateTrainSeizureStatusFlag
File: GCX016E.cbl
GIVEN: All equipment in the train has been released from seizure
WHEN: The system updates train status information
THEN: The train seizure status flag must be cleared to indicate no equipment is seized
βœ“ Consolidated Acceptance Criteria
  • The system commits the changes → the equipment status must be updated in the database to reflect the 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_UpdateEquipmentStatusinDatabase(["Start Step"]) E_UpdateEquipmentStatusinDatabase(["End Step"]) N_UpdateEquipmentStatusinDatabase_Node0{"The system commits the changes"}:::decision N_UpdateEquipmentStatusinDatabase_Node0_action["The equipment status must be
updated in the database to reflect
the seizure release"]:::main N_UpdateEquipmentStatusinDatabase_Node0 -- Yes --> N_UpdateEquipmentStatusinDatabase_Node0_action N_UpdateEquipmentStatusinDatabase_Node0_action --> E_UpdateEquipmentStatusinDatabase S_UpdateEquipmentStatusinDatabase --> N_UpdateEquipmentStatusinDatabase_Node0 N_UpdateEquipmentStatusinDatabase_Node0 -- No --> E_UpdateEquipmentStatusinDatabase
File: GCX016E.cbl
GIVEN: Equipment status flags have been updated and notifications generated
WHEN: The system commits the changes
THEN: The equipment status must be updated in the database to reflect the seizure release
βœ“ Consolidated Acceptance Criteria
  • The equipment is not currently in seized status → an error must be generated 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_GenerateErrorEquipmentNotSeized(["Start Step"]) E_GenerateErrorEquipmentNotSeized(["End Step"]) N_GenerateErrorEquipmentNotSeized_Node0{"The equipment is not currently in
seized status"}:::decision N_GenerateErrorEquipmentNotSeized_Node0_action["An error must be generated
indicating equipment is not
currently seized"]:::main N_GenerateErrorEquipmentNotSeized_Node0 -- Yes --> N_GenerateErrorEquipmentNotSeized_Node0_action N_GenerateErrorEquipmentNotSeized_Node0_action --> E_GenerateErrorEquipmentNotSeized S_GenerateErrorEquipmentNotSeized --> N_GenerateErrorEquipmentNotSeized_Node0 N_GenerateErrorEquipmentNotSeized_Node0 -- No --> E_GenerateErrorEquipmentNotSeized
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment is found in train consist but seizure release is requested
WHEN: The equipment is not currently in seized status
THEN: An error must be generated indicating equipment is not currently seized
βœ“ Consolidated Acceptance Criteria
  • The system checks the port against the export port validation table → if port is designated for export manifests, proceed with export processing, otherwise generate port 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_IsPortDesignatedforExportManifests(["Start Step"]) E_IsPortDesignatedforExportManifests(["End Step"]) N_IsPortDesignatedforExportManifests_Node0{"The system checks the port against
the export port validation table"}:::decision N_IsPortDesignatedforExportManifests_Node0_action["If port is designated for export
manifests, proceed with export
processing, otherwise generate port
validation error"]:::main N_IsPortDesignatedforExportManifests_Node0 -- Yes --> N_IsPortDesignatedforExportManifests_Node0_action N_IsPortDesignatedforExportManifests_Node0_action --> E_IsPortDesignatedforExportManifests S_IsPortDesignatedforExportManifests --> N_IsPortDesignatedforExportManifests_Node0 N_IsPortDesignatedforExportManifests_Node0 -- No --> E_IsPortDesignatedforExportManifests
File: GCX016E.cbl
GIVEN: An export manifest train has been identified and arrival port has been extracted from P4 location segment
WHEN: The system checks the port against the export port validation table
THEN: If port is designated for export manifests, proceed with export processing, otherwise generate port validation error
βœ“ Consolidated Acceptance Criteria
  • The system processes the export manifest pre-arrival → set the train status to export manifest pre-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_SetExportManifestPreArrivalStatus(["Start Step"]) E_SetExportManifestPreArrivalStatus(["End Step"]) N_SetExportManifestPreArrivalStatus_Node0{"The system processes the export
manifest pre-arrival"}:::decision N_SetExportManifestPreArrivalStatus_Node0_action["Set the train status to export
manifest pre-arrival status"]:::main N_SetExportManifestPreArrivalStatus_Node0 -- Yes --> N_SetExportManifestPreArrivalStatus_Node0_action N_SetExportManifestPreArrivalStatus_Node0_action --> E_SetExportManifestPreArrivalStatus S_SetExportManifestPreArrivalStatus --> N_SetExportManifestPreArrivalStatus_Node0 N_SetExportManifestPreArrivalStatus_Node0 -- No --> E_SetExportManifestPreArrivalStatus
File: GCX016E.cbl
GIVEN: An export manifest train has been identified and port validation has been successful
WHEN: The system processes the export manifest pre-arrival
THEN: Set the train status to export manifest pre-arrival status
βœ“ Consolidated Acceptance Criteria
  • The system completes export manifest processing → log the export manifest pre-arrival action with relevant train and port 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_LogExportManifestPreArrivalAction(["Start Step"]) E_LogExportManifestPreArrivalAction(["End Step"]) N_LogExportManifestPreArrivalAction_Node0{"The system completes export
manifest processing"}:::decision N_LogExportManifestPreArrivalAction_Node0_action["Log the export manifest pre-arrival
action with relevant train and port
information"]:::main N_LogExportManifestPreArrivalAction_Node0 -- Yes --> N_LogExportManifestPreArrivalAction_Node0_action N_LogExportManifestPreArrivalAction_Node0_action --> E_LogExportManifestPreArrivalAction S_LogExportManifestPreArrivalAction --> N_LogExportManifestPreArrivalAction_Node0 N_LogExportManifestPreArrivalAction_Node0 -- No --> E_LogExportManifestPreArrivalAction
File: GCX016E.cbl
GIVEN: Train status flags have been updated for export manifest pre-arrival
WHEN: The system completes export manifest processing
THEN:
  • Log the export manifest pre-arrival action with relevant train
  • Port information
βœ“ Consolidated Acceptance Criteria
  • The system completes export processing workflow → generate pre-arrival notification message for the export manifest 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_GeneratePreArrivalNotification(["Start Step"]) E_GeneratePreArrivalNotification(["End Step"]) N_GeneratePreArrivalNotification_Node0{"The system completes export
processing workflow"}:::decision N_GeneratePreArrivalNotification_Node0_action["Generate pre-arrival notification
message for the export manifest
train"]:::main N_GeneratePreArrivalNotification_Node0 -- Yes --> N_GeneratePreArrivalNotification_Node0_action N_GeneratePreArrivalNotification_Node0_action --> E_GeneratePreArrivalNotification S_GeneratePreArrivalNotification --> N_GeneratePreArrivalNotification_Node0 N_GeneratePreArrivalNotification_Node0 -- No --> E_GeneratePreArrivalNotification
File: GCX016E.cbl
GIVEN: Export manifest pre-arrival action has been logged
WHEN: The system completes export processing workflow
THEN: Generate pre-arrival notification message for the export manifest train
βœ“ Consolidated Acceptance Criteria
  • The system processes the error routing → route the port validation error message to the default error recipient for 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_RouteErrortoDefaultRecipient(["Start Step"]) E_RouteErrortoDefaultRecipient(["End Step"]) N_RouteErrortoDefaultRecipient_Node0{"The system processes the error
routing"}:::decision N_RouteErrortoDefaultRecipient_Node0_action["Route the port validation error
message to the default error
recipient for resolution"]:::exclusion N_RouteErrortoDefaultRecipient_Node0 -- Yes -->|Alternative| N_RouteErrortoDefaultRecipient_Node0_action N_RouteErrortoDefaultRecipient_Node0_action --> E_RouteErrortoDefaultRecipient S_RouteErrortoDefaultRecipient --> N_RouteErrortoDefaultRecipient_Node0 N_RouteErrortoDefaultRecipient_Node0 -- No --> E_RouteErrortoDefaultRecipient
File: GCX016E.cbl
GIVEN: A port validation error has been generated for an export manifest train
WHEN: The system processes the error routing
THEN: Route the port validation error message to the default error recipient for resolution
βœ“ Consolidated Acceptance Criteria
  • The system determines the train is not an export manifest train → continue processing the train using standard import manifest 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_ContinuewithStandardImportProcessing(["Start Step"]) E_ContinuewithStandardImportProcessing(["End Step"]) N_ContinuewithStandardImportProcessing_Node0{"The system determines the train is
not an export manifest train"}:::decision N_ContinuewithStandardImportProcessing_Node0_action["Continue processing the train using
standard import manifest procedures"]:::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: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A train arrival event is being processed and train ID does not end with 'T'
WHEN: The system determines the train is not an export manifest train
THEN: Continue processing the train using standard import manifest procedures
βœ“ Consolidated Acceptance Criteria
  • The system validates the arrival date format and content → if arrival date is valid, use it for train arrival processing, otherwise use system current date/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_ValidArrivalDate(["Start Step"]) E_ValidArrivalDate(["End Step"]) N_ValidArrivalDate_Node0{"The system validates the arrival
date format and content"}:::decision N_ValidArrivalDate_Node0_action["If arrival date is valid, use it
for train arrival processing,
otherwise use system current
datetime"]:::main N_ValidArrivalDate_Node0 -- Yes --> N_ValidArrivalDate_Node0_action N_ValidArrivalDate_Node0_action --> E_ValidArrivalDate S_ValidArrivalDate --> N_ValidArrivalDate_Node0 N_ValidArrivalDate_Node0 -- No --> E_ValidArrivalDate
File: GCX016E.cbl
GIVEN: An import manifest train arrival is being processed and arrival date/time is extracted from V9 segment
WHEN:
  • The system validates the arrival date format
  • Content
THEN: If arrival date is valid, use it for train arrival processing, otherwise use system current date/time
βœ“ Consolidated Acceptance Criteria
  • The system needs to set train arrival date/time → use system current date/time as the train arrival date/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_UseSystemCurrentDateTime(["Start Step"]) E_UseSystemCurrentDateTime(["End Step"]) N_UseSystemCurrentDateTime_Node0{"The system needs to set train
arrival datetime"}:::decision N_UseSystemCurrentDateTime_Node0_action["Use system current datetime as the
train arrival datetime"]:::main N_UseSystemCurrentDateTime_Node0 -- Yes --> N_UseSystemCurrentDateTime_Node0_action N_UseSystemCurrentDateTime_Node0_action --> E_UseSystemCurrentDateTime S_UseSystemCurrentDateTime --> N_UseSystemCurrentDateTime_Node0 N_UseSystemCurrentDateTime_Node0 -- No --> E_UseSystemCurrentDateTime
File: GCX016E.cbl
GIVEN: An import manifest train arrival is being processed and the V9 segment arrival date is invalid or missing
WHEN: The system needs to set train arrival date/time
THEN: Use system current date/time as the train arrival date/time
βœ“ Consolidated Acceptance Criteria
  • The system processes the train arrival → set the train arrival status flag to indicate successful 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_SetTrainArrivalStatusFlag(["Start Step"]) E_SetTrainArrivalStatusFlag(["End Step"]) N_SetTrainArrivalStatusFlag_Node0{"The system processes the train
arrival"}:::decision N_SetTrainArrivalStatusFlag_Node0_action["Set the train arrival status flag
to indicate successful arrival
processing"]:::main N_SetTrainArrivalStatusFlag_Node0 -- Yes --> N_SetTrainArrivalStatusFlag_Node0_action N_SetTrainArrivalStatusFlag_Node0_action --> E_SetTrainArrivalStatusFlag S_SetTrainArrivalStatusFlag --> N_SetTrainArrivalStatusFlag_Node0 N_SetTrainArrivalStatusFlag_Node0 -- No --> E_SetTrainArrivalStatusFlag
File: GCX016E.cbl
GIVEN: An import manifest train has valid arrival date/time established
WHEN: The system processes the train arrival
THEN: Set the train arrival status flag to indicate successful arrival processing
βœ“ Consolidated Acceptance Criteria
  • The system generates internal notifications → generate and send Merlin messages to notify internal stakeholders of the train arrival
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateTrainArrivalMerlinMessages(["Start Step"]) E_GenerateTrainArrivalMerlinMessages(["End Step"]) N_GenerateTrainArrivalMerlinMessages_Node0{"The system generates internal
notifications"}:::decision N_GenerateTrainArrivalMerlinMessages_Node0_action["Generate and send Merlin messages
to notify internal stakeholders of
the train arrival"]:::main N_GenerateTrainArrivalMerlinMessages_Node0 -- Yes --> N_GenerateTrainArrivalMerlinMessages_Node0_action N_GenerateTrainArrivalMerlinMessages_Node0_action --> E_GenerateTrainArrivalMerlinMessages S_GenerateTrainArrivalMerlinMessages --> N_GenerateTrainArrivalMerlinMessages_Node0 N_GenerateTrainArrivalMerlinMessages_Node0 -- No --> E_GenerateTrainArrivalMerlinMessages
File: GCX016E.cbl
GIVEN: AEI messages have been sent for an import manifest train arrival
WHEN: The system generates internal notifications
THEN:
  • Generate
  • Send merlin messages to notify internal stakeholders of the train arrival
βœ“ Consolidated Acceptance Criteria
  • The system checks for equipment ID presence → processing continues if equipment ID is present, otherwise equipment 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_EquipmentIDPresent(["Start Step"]) E_EquipmentIDPresent(["End Step"]) N_EquipmentIDPresent_Node0{"The system checks for equipment ID
presence"}:::decision N_EquipmentIDPresent_Node0_action["Processing continues if equipment
ID is present, otherwise equipment
processing is skipped"]:::main N_EquipmentIDPresent_Node0 -- Yes --> N_EquipmentIDPresent_Node0_action N_EquipmentIDPresent_Node0_action --> E_EquipmentIDPresent S_EquipmentIDPresent --> N_EquipmentIDPresent_Node0 N_EquipmentIDPresent_Node0 -- No --> E_EquipmentIDPresent
File: GCX016E.cbl
GIVEN: A VID segment is received
WHEN: The system checks for equipment ID presence
THEN: Processing continues if equipment ID is present, otherwise equipment processing is skipped
βœ“ Consolidated Acceptance Criteria
  • The system processes the equipment for the first time → the equipment is added to the train equipment list 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_AddEquipmenttoTrainList(["Start Step"]) E_AddEquipmenttoTrainList(["End Step"]) N_AddEquipmenttoTrainList_Node0{"The system processes the equipment
for the first time"}:::decision N_AddEquipmenttoTrainList_Node0_action["The equipment is added to the train
equipment list for future reference"]:::main N_AddEquipmenttoTrainList_Node0 -- Yes --> N_AddEquipmenttoTrainList_Node0_action N_AddEquipmenttoTrainList_Node0_action --> E_AddEquipmenttoTrainList S_AddEquipmenttoTrainList --> N_AddEquipmenttoTrainList_Node0 N_AddEquipmenttoTrainList_Node0 -- No --> E_AddEquipmenttoTrainList
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Equipment is not found in the current train consist
WHEN: The system processes the equipment for the first time
THEN: The equipment is added to the train equipment list for future reference
βœ“ Consolidated Acceptance Criteria
  • The disposition code is not HRE, SEI, or SER → the system sets the equipment hold status flag to indicate the equipment is held
  • The system updates equipment status information → the equipment hold status flag is set to indicate 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_UpdateEquipmentHoldStatusFlag(["Start Step"]) E_UpdateEquipmentHoldStatusFlag(["End Step"]) N_UpdateEquipmentHoldStatusFlag_Node0{"The disposition code is not HRE,
SEI, or SER"}:::decision N_UpdateEquipmentHoldStatusFlag_Node0_action["The system sets the equipment hold
status flag to indicate the
equipment is held"]:::main N_UpdateEquipmentHoldStatusFlag_Node0 -- Yes --> N_UpdateEquipmentHoldStatusFlag_Node0_action N_UpdateEquipmentHoldStatusFlag_Node0_action --> E_UpdateEquipmentHoldStatusFlag S_UpdateEquipmentHoldStatusFlag --> N_UpdateEquipmentHoldStatusFlag_Node0 N_UpdateEquipmentHoldStatusFlag_Node1{"The system updates equipment status
information"}:::decision N_UpdateEquipmentHoldStatusFlag_Node1_action["The equipment hold status flag is
set to indicate hold condition"]:::main N_UpdateEquipmentHoldStatusFlag_Node1 -- Yes --> N_UpdateEquipmentHoldStatusFlag_Node1_action N_UpdateEquipmentHoldStatusFlag_Node1_action --> E_UpdateEquipmentHoldStatusFlag N_UpdateEquipmentHoldStatusFlag_Node0 -- No --> N_UpdateEquipmentHoldStatusFlag_Node1 N_UpdateEquipmentHoldStatusFlag_Node1 -- No --> E_UpdateEquipmentHoldStatusFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A hold-related disposition code is being processed for equipment
WHEN: The disposition code is not HRE, SEI, or SER
THEN: The system sets the equipment hold status flag to indicate the equipment is held
File: GCX016E.cbl
GIVEN: Equipment hold processing has been initiated for specific equipment
WHEN: The system updates equipment status information
THEN: The equipment hold status flag is set to indicate hold condition
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold release action → the system sets the equipment release status flag to indicate the equipment hold is released
  • The system updates equipment status information → the equipment release status flag is set to indicate 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_UpdateEquipmentReleaseStatusFlag(["Start Step"]) E_UpdateEquipmentReleaseStatusFlag(["End Step"]) N_UpdateEquipmentReleaseStatusFlag_Node0{"The system processes the hold
release action"}:::decision N_UpdateEquipmentReleaseStatusFlag_Node0_action["The system sets the equipment
release status flag to indicate the
equipment hold is released"]:::main N_UpdateEquipmentReleaseStatusFlag_Node0 -- Yes --> N_UpdateEquipmentReleaseStatusFlag_Node0_action N_UpdateEquipmentReleaseStatusFlag_Node0_action --> E_UpdateEquipmentReleaseStatusFlag S_UpdateEquipmentReleaseStatusFlag --> N_UpdateEquipmentReleaseStatusFlag_Node0 N_UpdateEquipmentReleaseStatusFlag_Node1{"The system updates equipment status
information"}:::decision N_UpdateEquipmentReleaseStatusFlag_Node1_action["The equipment release status flag
is set to indicate release condition"]:::main N_UpdateEquipmentReleaseStatusFlag_Node1 -- Yes --> N_UpdateEquipmentReleaseStatusFlag_Node1_action N_UpdateEquipmentReleaseStatusFlag_Node1_action --> E_UpdateEquipmentReleaseStatusFlag N_UpdateEquipmentReleaseStatusFlag_Node0 -- No --> N_UpdateEquipmentReleaseStatusFlag_Node1 N_UpdateEquipmentReleaseStatusFlag_Node1 -- No --> E_UpdateEquipmentReleaseStatusFlag
File: GCX016E.cbl
GIVEN: An HRE hold release disposition code is being processed for equipment
WHEN: The system processes the hold release action
THEN: The system sets the equipment release status flag to indicate the equipment hold is released
File: GCX016E.cbl
GIVEN: Equipment release processing has been initiated for specific equipment
WHEN: The system updates equipment status information
THEN: The equipment release status flag is set to indicate release condition
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure action → the system sets the equipment seizure status flag to indicate the equipment is seized
  • The system updates equipment status information → the equipment seizure status flag is set to indicate seizure 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_UpdateEquipmentSeizureStatusFlag(["Start Step"]) E_UpdateEquipmentSeizureStatusFlag(["End Step"]) N_UpdateEquipmentSeizureStatusFlag_Node0{"The system processes the seizure
action"}:::decision N_UpdateEquipmentSeizureStatusFlag_Node0_action["The system sets the equipment
seizure status flag to indicate the
equipment is seized"]:::main N_UpdateEquipmentSeizureStatusFlag_Node0 -- Yes --> N_UpdateEquipmentSeizureStatusFlag_Node0_action N_UpdateEquipmentSeizureStatusFlag_Node0_action --> E_UpdateEquipmentSeizureStatusFlag S_UpdateEquipmentSeizureStatusFlag --> N_UpdateEquipmentSeizureStatusFlag_Node0 N_UpdateEquipmentSeizureStatusFlag_Node1{"The system updates equipment status
information"}:::decision N_UpdateEquipmentSeizureStatusFlag_Node1_action["The equipment seizure status flag
is set to indicate seizure condition"]:::main N_UpdateEquipmentSeizureStatusFlag_Node1 -- Yes --> N_UpdateEquipmentSeizureStatusFlag_Node1_action N_UpdateEquipmentSeizureStatusFlag_Node1_action --> E_UpdateEquipmentSeizureStatusFlag N_UpdateEquipmentSeizureStatusFlag_Node0 -- No --> N_UpdateEquipmentSeizureStatusFlag_Node1 N_UpdateEquipmentSeizureStatusFlag_Node1 -- No --> E_UpdateEquipmentSeizureStatusFlag
File: GCX016E.cbl
GIVEN: An SEI seizure disposition code is being processed for equipment
WHEN: The system processes the seizure action
THEN: The system sets the equipment seizure status flag to indicate the equipment is seized
File: GCX016E.cbl
GIVEN: Equipment seizure processing has been initiated for specific equipment
WHEN: The system updates equipment status information
THEN: The equipment seizure status flag is set to indicate seizure condition
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure release action → the system sets the equipment seizure release status flag to indicate the equipment seizure is released
  • The system updates equipment status information → the equipment seizure release status flag is set to indicate release from seizure 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_UpdateEquipmentSeizureReleaseStatusFlag(["Start Step"]) E_UpdateEquipmentSeizureReleaseStatusFlag(["End Step"]) N_UpdateEquipmentSeizureReleaseStatusFlag_Node0{"The system processes the seizure
release action"}:::decision N_UpdateEquipmentSeizureReleaseStatusFlag_Node0_action["The system sets the equipment
seizure release status flag to
indicate the equipment seizure is
released"]:::main N_UpdateEquipmentSeizureReleaseStatusFlag_Node0 -- Yes --> N_UpdateEquipmentSeizureReleaseStatusFlag_Node0_action N_UpdateEquipmentSeizureReleaseStatusFlag_Node0_action --> E_UpdateEquipmentSeizureReleaseStatusFlag S_UpdateEquipmentSeizureReleaseStatusFlag --> N_UpdateEquipmentSeizureReleaseStatusFlag_Node0 N_UpdateEquipmentSeizureReleaseStatusFlag_Node1{"The system updates equipment status
information"}:::decision N_UpdateEquipmentSeizureReleaseStatusFlag_Node1_action["The equipment seizure release
status flag is set to indicate
release from seizure condition"]:::main N_UpdateEquipmentSeizureReleaseStatusFlag_Node1 -- Yes --> N_UpdateEquipmentSeizureReleaseStatusFlag_Node1_action N_UpdateEquipmentSeizureReleaseStatusFlag_Node1_action --> E_UpdateEquipmentSeizureReleaseStatusFlag N_UpdateEquipmentSeizureReleaseStatusFlag_Node0 -- No --> N_UpdateEquipmentSeizureReleaseStatusFlag_Node1 N_UpdateEquipmentSeizureReleaseStatusFlag_Node1 -- No --> E_UpdateEquipmentSeizureReleaseStatusFlag
File: GCX016E.cbl
GIVEN: An SER seizure release disposition code is being processed for equipment
WHEN: The system processes the seizure release action
THEN: The system sets the equipment seizure release status flag to indicate the equipment seizure is released
File: GCX016E.cbl
GIVEN: Equipment seizure release processing has been initiated for specific equipment
WHEN: The system updates equipment status information
THEN: The equipment seizure release status flag is set to indicate release from seizure condition
βœ“ Consolidated Acceptance Criteria
  • The system processes the hold action → the system increments the equipment hold counter to track the number of holds applied
  • The system updates equipment tracking counters → the equipment hold counter is incremented to reflect the additional hold 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_UpdateEquipmentHoldCounter(["Start Step"]) E_UpdateEquipmentHoldCounter(["End Step"]) N_UpdateEquipmentHoldCounter_Node0{"The system processes the hold
action"}:::decision N_UpdateEquipmentHoldCounter_Node0_action["The system increments the equipment
hold counter to track the number of
holds applied"]:::main N_UpdateEquipmentHoldCounter_Node0 -- Yes --> N_UpdateEquipmentHoldCounter_Node0_action N_UpdateEquipmentHoldCounter_Node0_action --> E_UpdateEquipmentHoldCounter S_UpdateEquipmentHoldCounter --> N_UpdateEquipmentHoldCounter_Node0 N_UpdateEquipmentHoldCounter_Node1{"The system updates equipment
tracking counters"}:::decision N_UpdateEquipmentHoldCounter_Node1_action["The equipment hold counter is
incremented to reflect the
additional hold action"]:::main N_UpdateEquipmentHoldCounter_Node1 -- Yes --> N_UpdateEquipmentHoldCounter_Node1_action N_UpdateEquipmentHoldCounter_Node1_action --> E_UpdateEquipmentHoldCounter N_UpdateEquipmentHoldCounter_Node0 -- No --> N_UpdateEquipmentHoldCounter_Node1 N_UpdateEquipmentHoldCounter_Node1 -- No --> E_UpdateEquipmentHoldCounter
File: GCX016E.cbl
GIVEN: Equipment hold status flag has been updated
WHEN: The system processes the hold action
THEN: The system increments the equipment hold counter to track the number of holds applied
File: GCX016E.cbl
GIVEN: Equipment hold status flag has been updated for specific equipment
WHEN: The system updates equipment tracking counters
THEN: The equipment hold counter is incremented to reflect the additional hold action
βœ“ Consolidated Acceptance Criteria
  • The system processes the release action → the system increments the equipment release counter to track the number of releases applied
  • The system updates equipment tracking counters → the equipment release counter is incremented to reflect the additional 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_UpdateEquipmentReleaseCounter(["Start Step"]) E_UpdateEquipmentReleaseCounter(["End Step"]) N_UpdateEquipmentReleaseCounter_Node0{"The system processes the release
action"}:::decision N_UpdateEquipmentReleaseCounter_Node0_action["The system increments the equipment
release counter to track the number
of releases applied"]:::main N_UpdateEquipmentReleaseCounter_Node0 -- Yes --> N_UpdateEquipmentReleaseCounter_Node0_action N_UpdateEquipmentReleaseCounter_Node0_action --> E_UpdateEquipmentReleaseCounter S_UpdateEquipmentReleaseCounter --> N_UpdateEquipmentReleaseCounter_Node0 N_UpdateEquipmentReleaseCounter_Node1{"The system updates equipment
tracking counters"}:::decision N_UpdateEquipmentReleaseCounter_Node1_action["The equipment release counter is
incremented to reflect the
additional release action"]:::main N_UpdateEquipmentReleaseCounter_Node1 -- Yes --> N_UpdateEquipmentReleaseCounter_Node1_action N_UpdateEquipmentReleaseCounter_Node1_action --> E_UpdateEquipmentReleaseCounter N_UpdateEquipmentReleaseCounter_Node0 -- No --> N_UpdateEquipmentReleaseCounter_Node1 N_UpdateEquipmentReleaseCounter_Node1 -- No --> E_UpdateEquipmentReleaseCounter
File: GCX016E.cbl
GIVEN: Equipment release status flag has been updated
WHEN: The system processes the release action
THEN: The system increments the equipment release counter to track the number of releases applied
File: GCX016E.cbl
GIVEN: Equipment release status flag has been updated for specific equipment
WHEN: The system updates equipment tracking counters
THEN: The equipment release counter is incremented to reflect the additional release action
βœ“ Consolidated Acceptance Criteria
  • The system processes the seizure release action → the system increments the equipment seizure release counter to track the number of seizure releases applied
  • The system updates equipment tracking counters → the equipment seizure release counter is incremented to reflect the additional seizure 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_UpdateEquipmentSeizureReleaseCounter(["Start Step"]) E_UpdateEquipmentSeizureReleaseCounter(["End Step"]) N_UpdateEquipmentSeizureReleaseCounter_Node0{"The system processes the seizure
release action"}:::decision N_UpdateEquipmentSeizureReleaseCounter_Node0_action["The system increments the equipment
seizure release counter to track the
number of seizure releases applied"]:::main N_UpdateEquipmentSeizureReleaseCounter_Node0 -- Yes --> N_UpdateEquipmentSeizureReleaseCounter_Node0_action N_UpdateEquipmentSeizureReleaseCounter_Node0_action --> E_UpdateEquipmentSeizureReleaseCounter S_UpdateEquipmentSeizureReleaseCounter --> N_UpdateEquipmentSeizureReleaseCounter_Node0 N_UpdateEquipmentSeizureReleaseCounter_Node1{"The system updates equipment
tracking counters"}:::decision N_UpdateEquipmentSeizureReleaseCounter_Node1_action["The equipment seizure release
counter is incremented to reflect
the additional seizure release
action"]:::main N_UpdateEquipmentSeizureReleaseCounter_Node1 -- Yes --> N_UpdateEquipmentSeizureReleaseCounter_Node1_action N_UpdateEquipmentSeizureReleaseCounter_Node1_action --> E_UpdateEquipmentSeizureReleaseCounter N_UpdateEquipmentSeizureReleaseCounter_Node0 -- No --> N_UpdateEquipmentSeizureReleaseCounter_Node1 N_UpdateEquipmentSeizureReleaseCounter_Node1 -- No --> E_UpdateEquipmentSeizureReleaseCounter
File: GCX016E.cbl
GIVEN: Equipment seizure release status flag has been updated
WHEN: The system processes the seizure release action
THEN: The system increments the equipment seizure release counter to track the number of seizure releases applied
File: GCX016E.cbl
GIVEN: Equipment seizure release status flag has been updated for specific equipment
WHEN: The system updates equipment tracking counters
THEN: The equipment seizure release counter is incremented to reflect the additional seizure release action
βœ“ Consolidated Acceptance Criteria
  • The system completes equipment status processing → the system logs the equipment status change for audit trail and tracking purposes
  • The system creates audit trail documentation → equipment status change is logged with timestamp, equipment ID, and status change 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_LogEquipmentStatusChange(["Start Step"]) E_LogEquipmentStatusChange(["End Step"]) N_LogEquipmentStatusChange_Node0{"The system completes equipment
status processing"}:::decision N_LogEquipmentStatusChange_Node0_action["The system logs the equipment
status change for audit trail and
tracking purposes"]:::main N_LogEquipmentStatusChange_Node0 -- Yes --> N_LogEquipmentStatusChange_Node0_action N_LogEquipmentStatusChange_Node0_action --> E_LogEquipmentStatusChange S_LogEquipmentStatusChange --> N_LogEquipmentStatusChange_Node0 N_LogEquipmentStatusChange_Node1{"The system creates audit trail
documentation"}:::decision N_LogEquipmentStatusChange_Node1_action["Equipment status change is logged
with timestamp, equipment ID, and
status change details"]:::main N_LogEquipmentStatusChange_Node1 -- Yes --> N_LogEquipmentStatusChange_Node1_action N_LogEquipmentStatusChange_Node1_action --> E_LogEquipmentStatusChange N_LogEquipmentStatusChange_Node0 -- No --> N_LogEquipmentStatusChange_Node1 N_LogEquipmentStatusChange_Node1 -- No --> E_LogEquipmentStatusChange
File: GCX016E.cbl
GIVEN: Train equipment list has been updated with new status information
WHEN: The system completes equipment status processing
THEN:
  • The system logs the equipment status change for audit trail
  • Tracking purposes
File: GCX016E.cbl
GIVEN: Train equipment list has been updated with current equipment status
WHEN: The system creates audit trail documentation
THEN: Equipment status change is logged with timestamp, equipment ID, and status change details
βœ“ Consolidated Acceptance Criteria
  • The system reaches the end of equipment processing → the system marks equipment processing as complete and continues with next 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_EquipmentProcessingComplete(["Start Step"]) E_EquipmentProcessingComplete(["End Step"]) N_EquipmentProcessingComplete_Node0{"The system reaches the end of
equipment processing"}:::decision N_EquipmentProcessingComplete_Node0_action["The system marks equipment
processing as complete and continues
with next segment processing"]:::main N_EquipmentProcessingComplete_Node0 -- Yes --> N_EquipmentProcessingComplete_Node0_action N_EquipmentProcessingComplete_Node0_action --> E_EquipmentProcessingComplete S_EquipmentProcessingComplete --> N_EquipmentProcessingComplete_Node0 N_EquipmentProcessingComplete_Node0 -- No --> E_EquipmentProcessingComplete
File: GCX016E.cbl
GIVEN: All equipment items have been processed or no equipment ID was present in VID segment
WHEN: The system reaches the end of equipment processing
THEN:
  • The system marks equipment processing as complete
  • Continues with next segment processing
βœ“ Consolidated Acceptance Criteria
  • The HMI hold event is processed → the train held flag is set to 'Y' and the hold action 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_ProcessHMIHoldTrain(["Start Step"]) E_ProcessHMIHoldTrain(["End Step"]) N_ProcessHMIHoldTrain_Node0{"The HMI hold event is processed"}:::decision N_ProcessHMIHoldTrain_Node0_action["The train held flag is set to Y and
the hold action is logged"]:::main N_ProcessHMIHoldTrain_Node0 -- Yes --> N_ProcessHMIHoldTrain_Node0_action N_ProcessHMIHoldTrain_Node0_action --> E_ProcessHMIHoldTrain S_ProcessHMIHoldTrain --> N_ProcessHMIHoldTrain_Node0 N_ProcessHMIHoldTrain_Node0 -- No --> E_ProcessHMIHoldTrain
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code HMI is being processed for a train
WHEN: The HMI hold event is processed
THEN: The train held flag is set to 'Y' and the hold action is logged
βœ“ Consolidated Acceptance Criteria
  • The HRE hold release event is processed → the train held flag is set to 'N' and the release action 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_ProcessHREReleaseHold(["Start Step"]) E_ProcessHREReleaseHold(["End Step"]) N_ProcessHREReleaseHold_Node0{"The HRE hold release event is
processed"}:::decision N_ProcessHREReleaseHold_Node0_action["The train held flag is set to N and
the release action is logged"]:::main N_ProcessHREReleaseHold_Node0 -- Yes --> N_ProcessHREReleaseHold_Node0_action N_ProcessHREReleaseHold_Node0_action --> E_ProcessHREReleaseHold S_ProcessHREReleaseHold --> N_ProcessHREReleaseHold_Node0 N_ProcessHREReleaseHold_Node0 -- No --> E_ProcessHREReleaseHold
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code HRE is being processed for a train
WHEN: The HRE hold release event is processed
THEN: The train held flag is set to 'N' and the release action is logged
βœ“ Consolidated Acceptance Criteria
  • The SEI seizure event is processed → the train seized flag is set to 'Y' and the seizure action 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_ProcessSEISeizeTrain(["Start Step"]) E_ProcessSEISeizeTrain(["End Step"]) N_ProcessSEISeizeTrain_Node0{"The SEI seizure event is processed"}:::decision N_ProcessSEISeizeTrain_Node0_action["The train seized flag is set to Y
and the seizure action is logged"]:::main N_ProcessSEISeizeTrain_Node0 -- Yes --> N_ProcessSEISeizeTrain_Node0_action N_ProcessSEISeizeTrain_Node0_action --> E_ProcessSEISeizeTrain S_ProcessSEISeizeTrain --> N_ProcessSEISeizeTrain_Node0 N_ProcessSEISeizeTrain_Node0 -- No --> E_ProcessSEISeizeTrain
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code SEI is being processed for a train
WHEN: The SEI seizure event is processed
THEN: The train seized flag is set to 'Y' and the seizure action is logged
βœ“ Consolidated Acceptance Criteria
  • The SER seizure release event is processed → the train seized flag is set to 'N' and the release action 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_ProcessSERReleaseSeizure(["Start Step"]) E_ProcessSERReleaseSeizure(["End Step"]) N_ProcessSERReleaseSeizure_Node0{"The SER seizure release event is
processed"}:::decision N_ProcessSERReleaseSeizure_Node0_action["The train seized flag is set to N
and the release action is logged"]:::main N_ProcessSERReleaseSeizure_Node0 -- Yes --> N_ProcessSERReleaseSeizure_Node0_action N_ProcessSERReleaseSeizure_Node0_action --> E_ProcessSERReleaseSeizure S_ProcessSERReleaseSeizure --> N_ProcessSERReleaseSeizure_Node0 N_ProcessSERReleaseSeizure_Node0 -- No --> E_ProcessSERReleaseSeizure
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code SER is being processed for a train
WHEN: The SER seizure release event is processed
THEN: The train seized flag is set to 'N' and the release action is logged
βœ“ Consolidated Acceptance Criteria
  • The LCK lock event is processed → the train locked flag is set to 'Y'
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProcessLCKLockTrain(["Start Step"]) E_ProcessLCKLockTrain(["End Step"]) N_ProcessLCKLockTrain_Node0{"The LCK lock event is processed"}:::decision N_ProcessLCKLockTrain_Node0_action["The train locked flag is set to Y"]:::main N_ProcessLCKLockTrain_Node0 -- Yes --> N_ProcessLCKLockTrain_Node0_action N_ProcessLCKLockTrain_Node0_action --> E_ProcessLCKLockTrain S_ProcessLCKLockTrain --> N_ProcessLCKLockTrain_Node0 N_ProcessLCKLockTrain_Node0 -- No --> E_ProcessLCKLockTrain
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code LCK is being processed for a train
WHEN: The LCK lock event is processed
THEN: The train locked flag is set to 'Y'
βœ“ Consolidated Acceptance Criteria
  • The ULC unlock event is processed and the train is currently locked → the train locked flag is set to 'N'
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ProcessULCUnlockTrain(["Start Step"]) E_ProcessULCUnlockTrain(["End Step"]) N_ProcessULCUnlockTrain_Node0{"The ULC unlock event is processed
and the train is currently locked"}:::decision N_ProcessULCUnlockTrain_Node0_action["The train locked flag is set to N"]:::main N_ProcessULCUnlockTrain_Node0 -- Yes --> N_ProcessULCUnlockTrain_Node0_action N_ProcessULCUnlockTrain_Node0_action --> E_ProcessULCUnlockTrain S_ProcessULCUnlockTrain --> N_ProcessULCUnlockTrain_Node0 N_ProcessULCUnlockTrain_Node0 -- No --> E_ProcessULCUnlockTrain
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code ULC is being processed for a train
WHEN:
  • The ulc unlock event is processed
  • The train is currently locked
THEN: The train locked flag is set to 'N'
βœ“ Consolidated Acceptance Criteria
  • The arrival event is processed → the train arrival flag is set to 'Y' and the train 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_ProcessPODAADTrainArrival(["Start Step"]) E_ProcessPODAADTrainArrival(["End Step"]) N_ProcessPODAADTrainArrival_Node0{"The arrival event is processed"}:::decision N_ProcessPODAADTrainArrival_Node0_action["The train arrival flag is set to Y
and the train arrival date is
recorded"]:::main N_ProcessPODAADTrainArrival_Node0 -- Yes --> N_ProcessPODAADTrainArrival_Node0_action N_ProcessPODAADTrainArrival_Node0_action --> E_ProcessPODAADTrainArrival S_ProcessPODAADTrainArrival --> N_ProcessPODAADTrainArrival_Node0 N_ProcessPODAADTrainArrival_Node0 -- No --> E_ProcessPODAADTrainArrival
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code POD or AAD is being processed for a train
WHEN: The arrival event is processed
THEN: The train arrival flag is set to 'Y' and the train arrival date is recorded
βœ“ Consolidated Acceptance Criteria
  • The COC cancellation event is processed → the train arrival flag is set to 'N' and the train arrival date 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_ProcessCOCCancelArrival(["Start Step"]) E_ProcessCOCCancelArrival(["End Step"]) N_ProcessCOCCancelArrival_Node0{"The COC cancellation event is
processed"}:::decision N_ProcessCOCCancelArrival_Node0_action["The train arrival flag is set to N
and the train arrival date is
cleared"]:::main N_ProcessCOCCancelArrival_Node0 -- Yes --> N_ProcessCOCCancelArrival_Node0_action N_ProcessCOCCancelArrival_Node0_action --> E_ProcessCOCCancelArrival S_ProcessCOCCancelArrival --> N_ProcessCOCCancelArrival_Node0 N_ProcessCOCCancelArrival_Node0 -- No --> E_ProcessCOCCancelArrival
File: GCX016E.cbl
GIVEN: A V9 segment with disposition code COC is being processed for a train
WHEN: The COC cancellation event is processed
THEN: The train arrival flag is set to 'N' and the train arrival date is cleared
βœ“ Consolidated Acceptance Criteria
  • Individual equipment processing is performed → equipment hold status is updated, equipment seizure status is updated, and equipment hold/seizure counters are incremented or decremented 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_UpdateIndividualEquipmentHoldStatus(["Start Step"]) E_UpdateIndividualEquipmentHoldStatus(["End Step"]) N_UpdateIndividualEquipmentHoldStatus_Node0{"Individual equipment processing is
performed"}:::decision N_UpdateIndividualEquipmentHoldStatus_Node0_action["Equipment hold status is updated,
equipment seizure status is updated,
and equipment holdseizure counters
are incremented or decremented
accordingly"]:::main N_UpdateIndividualEquipmentHoldStatus_Node0 -- Yes --> N_UpdateIndividualEquipmentHoldStatus_Node0_action N_UpdateIndividualEquipmentHoldStatus_Node0_action --> E_UpdateIndividualEquipmentHoldStatus S_UpdateIndividualEquipmentHoldStatus --> N_UpdateIndividualEquipmentHoldStatus_Node0 N_UpdateIndividualEquipmentHoldStatus_Node0 -- No --> E_UpdateIndividualEquipmentHoldStatus
File: GCX016E.cbl
GIVEN: A train status event requires VID equipment processing for hold or seizure actions
WHEN: Individual equipment processing is performed
THEN: Equipment hold status is updated, equipment seizure status is updated, and equipment hold/seizure counters are incremented or decremented accordingly
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the VID segment for disposition code information → the specific disposition code (HMI, HRE, SEI, SER) is determined for equipment 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_DetermineVIDDispositionCode(["Start Step"]) E_DetermineVIDDispositionCode(["End Step"]) N_DetermineVIDDispositionCode_Node0{"The system analyzes the VID segment
for disposition code information"}:::decision N_DetermineVIDDispositionCode_Node0_action["The specific disposition code HMI,
HRE, SEI, SER is determined for
equipment status processing"]:::main N_DetermineVIDDispositionCode_Node0 -- Yes --> N_DetermineVIDDispositionCode_Node0_action N_DetermineVIDDispositionCode_Node0_action --> E_DetermineVIDDispositionCode S_DetermineVIDDispositionCode --> N_DetermineVIDDispositionCode_Node0 N_DetermineVIDDispositionCode_Node0 -- No --> E_DetermineVIDDispositionCode
File: GCX016E.cbl
GIVEN: Equipment has been found in the train consist
WHEN: The system analyzes the VID segment for disposition code information
THEN: The specific disposition code (HMI, HRE, SEI, SER) is determined for equipment status processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the equipment hold request → equipment hold processing is initiated 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_ProcessEquipmentHoldHMI(["Start Step"]) E_ProcessEquipmentHoldHMI(["End Step"]) N_ProcessEquipmentHoldHMI_Node0{"The system processes the equipment
hold request"}:::decision N_ProcessEquipmentHoldHMI_Node0_action["Equipment hold processing is
initiated for the specified
equipment"]:::main N_ProcessEquipmentHoldHMI_Node0 -- Yes --> N_ProcessEquipmentHoldHMI_Node0_action N_ProcessEquipmentHoldHMI_Node0_action --> E_ProcessEquipmentHoldHMI S_ProcessEquipmentHoldHMI --> N_ProcessEquipmentHoldHMI_Node0 N_ProcessEquipmentHoldHMI_Node0 -- No --> E_ProcessEquipmentHoldHMI
File: GCX016E.cbl
GIVEN: A VID segment contains HMI disposition code for valid equipment in train
WHEN: The system processes the equipment hold request
THEN: Equipment hold processing is initiated for the specified equipment
βœ“ Consolidated Acceptance Criteria
  • The system processes the equipment release request → equipment release processing is initiated 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_ProcessEquipmentReleaseHRE(["Start Step"]) E_ProcessEquipmentReleaseHRE(["End Step"]) N_ProcessEquipmentReleaseHRE_Node0{"The system processes the equipment
release request"}:::decision N_ProcessEquipmentReleaseHRE_Node0_action["Equipment release processing is
initiated for the specified
equipment"]:::main N_ProcessEquipmentReleaseHRE_Node0 -- Yes --> N_ProcessEquipmentReleaseHRE_Node0_action N_ProcessEquipmentReleaseHRE_Node0_action --> E_ProcessEquipmentReleaseHRE S_ProcessEquipmentReleaseHRE --> N_ProcessEquipmentReleaseHRE_Node0 N_ProcessEquipmentReleaseHRE_Node0 -- No --> E_ProcessEquipmentReleaseHRE
File: GCX016E.cbl
GIVEN: A VID segment contains HRE disposition code for valid equipment in train
WHEN: The system processes the equipment release request
THEN: Equipment release processing is initiated for the specified equipment
βœ“ Consolidated Acceptance Criteria
  • The system processes the equipment seizure request → equipment seizure processing is initiated 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_ProcessEquipmentSeizureSEI(["Start Step"]) E_ProcessEquipmentSeizureSEI(["End Step"]) N_ProcessEquipmentSeizureSEI_Node0{"The system processes the equipment
seizure request"}:::decision N_ProcessEquipmentSeizureSEI_Node0_action["Equipment seizure processing is
initiated for the specified
equipment"]:::main N_ProcessEquipmentSeizureSEI_Node0 -- Yes --> N_ProcessEquipmentSeizureSEI_Node0_action N_ProcessEquipmentSeizureSEI_Node0_action --> E_ProcessEquipmentSeizureSEI S_ProcessEquipmentSeizureSEI --> N_ProcessEquipmentSeizureSEI_Node0 N_ProcessEquipmentSeizureSEI_Node0 -- No --> E_ProcessEquipmentSeizureSEI
File: GCX016E.cbl
GIVEN: A VID segment contains SEI disposition code for valid equipment in train
WHEN: The system processes the equipment seizure request
THEN: Equipment seizure processing is initiated for the specified equipment
βœ“ Consolidated Acceptance Criteria
  • The system processes the equipment seizure release request → equipment seizure release processing is initiated 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_ProcessEquipmentSeizureReleaseSER(["Start Step"]) E_ProcessEquipmentSeizureReleaseSER(["End Step"]) N_ProcessEquipmentSeizureReleaseSER_Node0{"The system processes the equipment
seizure release request"}:::decision N_ProcessEquipmentSeizureReleaseSER_Node0_action["Equipment seizure release
processing is initiated for the
specified equipment"]:::main N_ProcessEquipmentSeizureReleaseSER_Node0 -- Yes --> N_ProcessEquipmentSeizureReleaseSER_Node0_action N_ProcessEquipmentSeizureReleaseSER_Node0_action --> E_ProcessEquipmentSeizureReleaseSER S_ProcessEquipmentSeizureReleaseSER --> N_ProcessEquipmentSeizureReleaseSER_Node0 N_ProcessEquipmentSeizureReleaseSER_Node0 -- No --> E_ProcessEquipmentSeizureReleaseSER
File: GCX016E.cbl
GIVEN: A VID segment contains SER disposition code for valid equipment in train
WHEN: The system processes the equipment seizure release request
THEN: Equipment seizure release processing is initiated for the specified equipment
βœ“ Consolidated Acceptance Criteria
  • The system generates status notifications → equipment status 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_GenerateEquipmentStatusNotification(["Start Step"]) E_GenerateEquipmentStatusNotification(["End Step"]) N_GenerateEquipmentStatusNotification_Node0{"The system generates status
notifications"}:::decision N_GenerateEquipmentStatusNotification_Node0_action["Equipment status notification is
created and sent to appropriate
recipients"]:::main N_GenerateEquipmentStatusNotification_Node0 -- Yes --> N_GenerateEquipmentStatusNotification_Node0_action N_GenerateEquipmentStatusNotification_Node0_action --> E_GenerateEquipmentStatusNotification S_GenerateEquipmentStatusNotification --> N_GenerateEquipmentStatusNotification_Node0 N_GenerateEquipmentStatusNotification_Node0 -- No --> E_GenerateEquipmentStatusNotification
File: GCX016E.cbl
GIVEN: Equipment status change has been logged in the system
WHEN: The system generates status notifications
THEN:
  • Equipment status notification is created
  • Sent to appropriate recipients
βœ“ Consolidated Acceptance Criteria
  • If the disposition code in the V9 segment → the system identifies POD (Proof of Delivery) or AAD (Actual Arrival Date) events and routes to appropriate 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_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 Proof of
Delivery or AAD Actual Arrival Date
events and routes to appropriate
arrival 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: GCX016E.cbl
GIVEN: A V9 segment is received with event code data
WHEN: The system evaluates the disposition code in the V9 segment
THEN:
  • The system identifies pod (proof of delivery) or aad (actual arrival date) events
  • Routes to appropriate arrival processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the V9 segment for date information → the system extracts the date value from the V9 segment 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_ExtractDatefromV9Segment(["Start Step"]) E_ExtractDatefromV9Segment(["End Step"]) N_ExtractDatefromV9Segment_Node0{"The system processes the V9 segment
for date information"}:::decision N_ExtractDatefromV9Segment_Node0_action["The system extracts the date value
from the V9 segment for validation"]:::main N_ExtractDatefromV9Segment_Node0 -- Yes --> N_ExtractDatefromV9Segment_Node0_action N_ExtractDatefromV9Segment_Node0_action --> E_ExtractDatefromV9Segment S_ExtractDatefromV9Segment --> N_ExtractDatefromV9Segment_Node0 N_ExtractDatefromV9Segment_Node0 -- No --> E_ExtractDatefromV9Segment
File: GCX016E.cbl
GIVEN: A V9 segment contains POD or AAD event code
WHEN: The system processes the V9 segment for date information
THEN: The system extracts the date value from the V9 segment for validation
βœ“ Consolidated Acceptance Criteria
  • The system validates the date format and value → the system determines if the date is valid for business processing or requires default system date
  • The system extracts and validates the disposition code date → if the date is valid, use the extracted date; if the date is invalid or missing, default to 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_DateValid(["Start Step"]) E_DateValid(["End Step"]) N_DateValid_Node0{"The system validates the date
format and value"}:::decision N_DateValid_Node0_action["The system determines if the date
is valid for business processing or
requires default system date"]:::main N_DateValid_Node0 -- Yes --> N_DateValid_Node0_action N_DateValid_Node0_action --> E_DateValid S_DateValid --> N_DateValid_Node0 N_DateValid_Node1{"The system extracts and validates
the disposition code date"}:::decision N_DateValid_Node1_action["If the date is valid, use the
extracted date if the date is
invalid or missing, default to the
current system date"]:::main N_DateValid_Node1 -- Yes --> N_DateValid_Node1_action N_DateValid_Node1_action --> E_DateValid N_DateValid_Node0 -- No --> N_DateValid_Node1 N_DateValid_Node1 -- No --> E_DateValid
File: GCX016E.cbl
GIVEN: A date has been extracted from the V9 segment
WHEN:
  • The system validates the date format
  • Value
THEN: The system determines if the date is valid for business processing or requires default system date
File: GCX016E.cbl
GIVEN: An X4 segment is received with a disposition code date field
WHEN:
  • The system extracts
  • Validates the disposition code date
THEN: If the date is valid, use the extracted date; if the date is invalid or missing, default to the current system date
βœ“ Consolidated Acceptance Criteria
  • The system processes the train arrival date assignment → the system assigns the V9 segment date as the official 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_UseV9SegmentDate(["Start Step"]) E_UseV9SegmentDate(["End Step"]) N_UseV9SegmentDate_Node0{"The system processes the train
arrival date assignment"}:::decision N_UseV9SegmentDate_Node0_action["The system assigns the V9 segment
date as the official train arrival
date"]:::main N_UseV9SegmentDate_Node0 -- Yes --> N_UseV9SegmentDate_Node0_action N_UseV9SegmentDate_Node0_action --> E_UseV9SegmentDate S_UseV9SegmentDate --> N_UseV9SegmentDate_Node0 N_UseV9SegmentDate_Node0 -- No --> E_UseV9SegmentDate
File: GCX016E.cbl
GIVEN: The V9 segment date has been validated as correct
WHEN: The system processes the train arrival date assignment
THEN: The system assigns the V9 segment date as the official train arrival date
βœ“ Consolidated Acceptance Criteria
  • The system requires a train arrival date for processing → the system assigns the current system date as the default train arrival date
  • The date validation fails → use the current system date as the default value 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_DefaulttoSystemDate(["Start Step"]) E_DefaulttoSystemDate(["End Step"]) N_DefaulttoSystemDate_Node0{"The system requires a train arrival
date for processing"}:::decision N_DefaulttoSystemDate_Node0_action["The system assigns the current
system date as the default train
arrival date"]:::main N_DefaulttoSystemDate_Node0 -- Yes --> N_DefaulttoSystemDate_Node0_action N_DefaulttoSystemDate_Node0_action --> E_DefaulttoSystemDate S_DefaulttoSystemDate --> N_DefaulttoSystemDate_Node0 N_DefaulttoSystemDate_Node1{"The date validation fails"}:::decision N_DefaulttoSystemDate_Node1_action["Use the current system date as the
default value for disposition code
processing"]:::main N_DefaulttoSystemDate_Node1 -- Yes --> N_DefaulttoSystemDate_Node1_action N_DefaulttoSystemDate_Node1_action --> E_DefaulttoSystemDate N_DefaulttoSystemDate_Node0 -- No --> N_DefaulttoSystemDate_Node1 N_DefaulttoSystemDate_Node1 -- No --> E_DefaulttoSystemDate
File: GCX016E.cbl
GIVEN: The V9 segment date is invalid, missing, or fails validation
WHEN: The system requires a train arrival date for processing
THEN: The system assigns the current system date as the default train arrival date
File: GCX016E.cbl
GIVEN: A disposition code date has been extracted from X4 segment and is invalid or missing
WHEN: The date validation fails
THEN: Use the current system date as the default value for disposition code processing
βœ“ Consolidated Acceptance Criteria
  • The system prepares the date for train record processing → the system formats the date into the standard format required for train arrival processing
  • The date needs to be formatted for system processing → convert the date into the standard format required for disposition code 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_FormatDateforProcessing(["Start Step"]) E_FormatDateforProcessing(["End Step"]) N_FormatDateforProcessing_Node0{"The system prepares the date for
train record processing"}:::decision N_FormatDateforProcessing_Node0_action["The system formats the date into
the standard format required for
train arrival processing"]:::main N_FormatDateforProcessing_Node0 -- Yes --> N_FormatDateforProcessing_Node0_action N_FormatDateforProcessing_Node0_action --> E_FormatDateforProcessing S_FormatDateforProcessing --> N_FormatDateforProcessing_Node0 N_FormatDateforProcessing_Node1{"The date needs to be formatted for
system processing"}:::decision N_FormatDateforProcessing_Node1_action["Convert the date into the standard
format required for disposition code
operations"]:::main N_FormatDateforProcessing_Node1 -- Yes --> N_FormatDateforProcessing_Node1_action N_FormatDateforProcessing_Node1_action --> E_FormatDateforProcessing N_FormatDateforProcessing_Node0 -- No --> N_FormatDateforProcessing_Node1 N_FormatDateforProcessing_Node1 -- No --> E_FormatDateforProcessing
File: GCX016E.cbl
GIVEN: A train arrival date has been determined (either from V9 segment or system default)
WHEN: The system prepares the date for train record processing
THEN: The system formats the date into the standard format required for train arrival processing
File: GCX016E.cbl
GIVEN: A valid date (either extracted or system default) for disposition code processing
WHEN: The date needs to be formatted for system processing
THEN: Convert the date into the standard format required for disposition code operations
βœ“ Consolidated Acceptance Criteria
  • The system processes the export train arrival → the system validates that the export port is authorized for the train's export operations before proceeding 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_ValidateExportPortAuthorization(["Start Step"]) E_ValidateExportPortAuthorization(["End Step"]) N_ValidateExportPortAuthorization_Node0{"The system processes the export
train arrival"}:::decision N_ValidateExportPortAuthorization_Node0_action["The system validates that the
export port is authorized for the
train s export operations before
proceeding with arrival processing"]:::main N_ValidateExportPortAuthorization_Node0 -- Yes --> N_ValidateExportPortAuthorization_Node0_action N_ValidateExportPortAuthorization_Node0_action --> E_ValidateExportPortAuthorization S_ValidateExportPortAuthorization --> N_ValidateExportPortAuthorization_Node0 N_ValidateExportPortAuthorization_Node0 -- No --> E_ValidateExportPortAuthorization
File: GCX016E.cbl
GIVEN: A train is classified as an export manifest train with 'T' suffix
WHEN: The system processes the export train arrival
THEN: The system validates that the export port is authorized for the train's export operations before proceeding with arrival processing
βœ“ Consolidated Acceptance Criteria
  • The system updates the train record → the system assigns the arrival date to the train record for all 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_SetTrainArrivalDate(["Start Step"]) E_SetTrainArrivalDate(["End Step"]) N_SetTrainArrivalDate_Node0{"The system updates the train record"}:::decision N_SetTrainArrivalDate_Node0_action["The system assigns the arrival date
to the train record for all
subsequent processing"]:::main N_SetTrainArrivalDate_Node0 -- Yes --> N_SetTrainArrivalDate_Node0_action N_SetTrainArrivalDate_Node0_action --> E_SetTrainArrivalDate S_SetTrainArrivalDate --> N_SetTrainArrivalDate_Node0 N_SetTrainArrivalDate_Node0 -- No --> E_SetTrainArrivalDate
File: GCX016E.cbl
GIVEN: A train arrival date has been validated and formatted, and train type processing is complete
WHEN: The system updates the train record
THEN: The system assigns the arrival date to the train record for all subsequent processing
βœ“ Consolidated Acceptance Criteria
  • The system updates the train operational status → the system changes the train status to 'Arrived' to reflect the current operational 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_UpdateTrainStatustoArrived(["Start Step"]) E_UpdateTrainStatustoArrived(["End Step"]) N_UpdateTrainStatustoArrived_Node0{"The system updates the train
operational status"}:::decision N_UpdateTrainStatustoArrived_Node0_action["The system changes the train status
to Arrived to reflect the current
operational state"]:::main N_UpdateTrainStatustoArrived_Node0 -- Yes --> N_UpdateTrainStatustoArrived_Node0_action N_UpdateTrainStatustoArrived_Node0_action --> E_UpdateTrainStatustoArrived S_UpdateTrainStatustoArrived --> N_UpdateTrainStatustoArrived_Node0 N_UpdateTrainStatustoArrived_Node0 -- No --> E_UpdateTrainStatustoArrived
File: GCX016E.cbl
GIVEN: The train arrival date has been successfully set in the train record
WHEN: The system updates the train operational status
THEN: The system changes the train status to 'Arrived' to reflect the current operational state
βœ“ Consolidated Acceptance Criteria
  • The system performs audit logging for the arrival event → the system creates a log entry documenting the arrival date assignment, source of date (V9 segment or system default), and timestamp of the 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_LogArrivalDateAssignment(["Start Step"]) E_LogArrivalDateAssignment(["End Step"]) N_LogArrivalDateAssignment_Node0{"The system performs audit logging
for the arrival event"}:::decision N_LogArrivalDateAssignment_Node0_action["The system creates a log entry
documenting the arrival date
assignment, source of date V9
segment or system default, and
timestamp of the assignment"]:::main N_LogArrivalDateAssignment_Node0 -- Yes --> N_LogArrivalDateAssignment_Node0_action N_LogArrivalDateAssignment_Node0_action --> E_LogArrivalDateAssignment S_LogArrivalDateAssignment --> N_LogArrivalDateAssignment_Node0 N_LogArrivalDateAssignment_Node0 -- No --> E_LogArrivalDateAssignment
File: GCX016E.cbl
GIVEN: The train status has been updated to arrived with the assigned arrival date
WHEN: The system performs audit logging for the arrival event
THEN: The system creates a log entry documenting the arrival date assignment, source of date (V9 segment or system default), and timestamp of the assignment
βœ“ Consolidated Acceptance Criteria
  • The system generates external notifications for the arrival event → the system creates an AEI notification containing train identification, arrival date, and location information for 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_GenerateAEINotification(["Start Step"]) E_GenerateAEINotification(["End Step"]) N_GenerateAEINotification_Node0{"The system generates external
notifications for the arrival event"}:::decision N_GenerateAEINotification_Node0_action["The system creates an AEI
notification containing train
identification, arrival date, and
location information for external
systems"]:::main N_GenerateAEINotification_Node0 -- Yes --> N_GenerateAEINotification_Node0_action N_GenerateAEINotification_Node0_action --> E_GenerateAEINotification S_GenerateAEINotification --> N_GenerateAEINotification_Node0 N_GenerateAEINotification_Node0 -- No --> E_GenerateAEINotification
File: GCX016E.cbl
GIVEN: The train arrival has been logged and all arrival processing is complete
WHEN: The system generates external notifications for the arrival event
THEN: The system creates an AEI notification containing train identification, arrival date, and location information for external systems
βœ“ Consolidated Acceptance Criteria
  • The system sends confirmation messages to business stakeholders → the system transmits arrival confirmation containing train details, arrival date, and status to all configured recipients and 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_SendArrivalConfirmation(["Start Step"]) E_SendArrivalConfirmation(["End Step"]) N_SendArrivalConfirmation_Node0{"The system sends confirmation
messages to business stakeholders"}:::decision N_SendArrivalConfirmation_Node0_action["The system transmits arrival
confirmation containing train
details, arrival date, and status to
all configured recipients and
external systems"]:::main N_SendArrivalConfirmation_Node0 -- Yes --> N_SendArrivalConfirmation_Node0_action N_SendArrivalConfirmation_Node0_action --> E_SendArrivalConfirmation S_SendArrivalConfirmation --> N_SendArrivalConfirmation_Node0 N_SendArrivalConfirmation_Node0 -- No --> E_SendArrivalConfirmation
File: GCX016E.cbl
GIVEN: The AEI notification has been generated for the train arrival
WHEN: The system sends confirmation messages to business stakeholders
THEN:
  • The system transmits arrival confirmation containing train details, arrival date, and status to all configured recipients
  • External systems
βœ“ Consolidated Acceptance Criteria
  • The system checks the train manifest type suffix → if the manifest has 'T' suffix, classify as export manifest train, otherwise classify as import manifest 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_TrainTypeCheck(["Start Step"]) E_TrainTypeCheck(["End Step"]) N_TrainTypeCheck_Node0{"The system checks the train
manifest type suffix"}:::decision N_TrainTypeCheck_Node0_action["If the manifest has T suffix,
classify as export manifest train,
otherwise classify as import
manifest train"]:::main N_TrainTypeCheck_Node0 -- Yes --> N_TrainTypeCheck_Node0_action N_TrainTypeCheck_Node0_action --> E_TrainTypeCheck S_TrainTypeCheck --> N_TrainTypeCheck_Node0 N_TrainTypeCheck_Node0 -- No --> E_TrainTypeCheck
File: GCX016E.cbl
GIVEN: A train arrival event (POD/AAD disposition) has been received
WHEN: The system checks the train manifest type suffix
THEN: If the manifest has 'T' suffix, classify as export manifest train, otherwise classify as import manifest train
βœ“ Consolidated Acceptance Criteria
  • The system searches for US cargo in the train manifest → if US cargo is found in the train, proceed with cargo arrival processing, otherwise complete train processing without 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_USCargoFound(["Start Step"]) E_USCargoFound(["End Step"]) N_USCargoFound_Node0{"The system searches for US cargo in
the train manifest"}:::decision N_USCargoFound_Node0_action["If US cargo is found in the train,
proceed with cargo arrival
processing, otherwise complete train
processing without cargo updates"]:::main N_USCargoFound_Node0 -- Yes --> N_USCargoFound_Node0_action N_USCargoFound_Node0_action --> E_USCargoFound S_USCargoFound --> N_USCargoFound_Node0 N_USCargoFound_Node0 -- No --> E_USCargoFound
File: GCX016E.cbl
GIVEN: A train arrival date has been updated
WHEN: The system searches for US cargo in the train manifest
THEN: If US cargo is found in the train, proceed with cargo arrival processing, otherwise complete train processing without cargo updates
βœ“ Consolidated Acceptance Criteria
  • The system generates arrival notifications → create an AEI message containing train and cargo 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_GenerateAEIMessage(["Start Step"]) E_GenerateAEIMessage(["End Step"]) N_GenerateAEIMessage_Node0{"The system generates arrival
notifications"}:::decision N_GenerateAEIMessage_Node0_action["Create an AEI message containing
train and cargo arrival information"]:::main N_GenerateAEIMessage_Node0 -- Yes --> N_GenerateAEIMessage_Node0_action N_GenerateAEIMessage_Node0_action --> E_GenerateAEIMessage S_GenerateAEIMessage --> N_GenerateAEIMessage_Node0 N_GenerateAEIMessage_Node0 -- No --> E_GenerateAEIMessage
File: GCX016E.cbl
GIVEN: Arrival index has been set for cargo
WHEN: The system generates arrival notifications
THEN:
  • Create an aei message containing train
  • Cargo arrival information
βœ“ Consolidated Acceptance Criteria
  • The system sends arrival notifications → transmit the AEI notification to configured recipients and 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_SendAEINotification(["Start Step"]) E_SendAEINotification(["End Step"]) N_SendAEINotification_Node0{"The system sends arrival
notifications"}:::decision N_SendAEINotification_Node0_action["Transmit the AEI notification to
configured recipients and external
systems"]:::main N_SendAEINotification_Node0 -- Yes --> N_SendAEINotification_Node0_action N_SendAEINotification_Node0_action --> E_SendAEINotification S_SendAEINotification --> N_SendAEINotification_Node0 N_SendAEINotification_Node0 -- No --> E_SendAEINotification
File: GCX016E.cbl
GIVEN: AEI message has been generated
WHEN: The system sends arrival notifications
THEN:
  • Transmit the aei notification to configured recipients
  • External systems
βœ“ Consolidated Acceptance Criteria
  • The segment type is 'K1' and train context is being evaluated → the system should identify the K1 segment and check if train processing context is 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_K1SegmentDetectedinMessageStream(["Start Step"]) E_K1SegmentDetectedinMessageStream(["End Step"]) N_K1SegmentDetectedinMessageStream_Node0{"The segment type is K1 and train
context is being evaluated"}:::decision N_K1SegmentDetectedinMessageStream_Node0_action["The system should identify the K1
segment and check if train
processing context is active"]:::main N_K1SegmentDetectedinMessageStream_Node0 -- Yes --> N_K1SegmentDetectedinMessageStream_Node0_action N_K1SegmentDetectedinMessageStream_Node0_action --> E_K1SegmentDetectedinMessageStream S_K1SegmentDetectedinMessageStream --> N_K1SegmentDetectedinMessageStream_Node0 N_K1SegmentDetectedinMessageStream_Node0 -- No --> E_K1SegmentDetectedinMessageStream
File: GCX016E.cbl
GIVEN: A message segment is being processed
WHEN: The segment type is 'K1' and train context is being evaluated
THEN:
  • The system should identify the k1 segment
  • Check if train processing context is active
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment content → the free-form text should be extracted from the K1 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_ExtractFreeFormTextfromK1Segment(["Start Step"]) E_ExtractFreeFormTextfromK1Segment(["End Step"]) N_ExtractFreeFormTextfromK1Segment_Node0{"The system processes the K1 segment
content"}:::decision N_ExtractFreeFormTextfromK1Segment_Node0_action["The free-form text should be
extracted from the K1 segment data"]:::main N_ExtractFreeFormTextfromK1Segment_Node0 -- Yes --> N_ExtractFreeFormTextfromK1Segment_Node0_action N_ExtractFreeFormTextfromK1Segment_Node0_action --> E_ExtractFreeFormTextfromK1Segment S_ExtractFreeFormTextfromK1Segment --> N_ExtractFreeFormTextfromK1Segment_Node0 N_ExtractFreeFormTextfromK1Segment_Node0 -- No --> E_ExtractFreeFormTextfromK1Segment
File: GCX016E.cbl
GIVEN: A K1 segment is detected and train context is active
WHEN: The system processes the K1 segment content
THEN: The free-form text should be extracted from the K1 segment data
βœ“ Consolidated Acceptance Criteria
  • The system processes train identification → the K1 text should be 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_AssociateTextwithCurrentTrainID(["Start Step"]) E_AssociateTextwithCurrentTrainID(["End Step"]) N_AssociateTextwithCurrentTrainID_Node0{"The system processes train
identification"}:::decision N_AssociateTextwithCurrentTrainID_Node0_action["The K1 text should be associated
with the current train ID"]:::main N_AssociateTextwithCurrentTrainID_Node0 -- Yes --> N_AssociateTextwithCurrentTrainID_Node0_action N_AssociateTextwithCurrentTrainID_Node0_action --> E_AssociateTextwithCurrentTrainID S_AssociateTextwithCurrentTrainID --> N_AssociateTextwithCurrentTrainID_Node0 N_AssociateTextwithCurrentTrainID_Node0 -- No --> E_AssociateTextwithCurrentTrainID
File: GCX016E.cbl
GIVEN: Free-form text has been extracted from K1 segment
WHEN: The system processes train identification
THEN: The K1 text should be associated with the current train ID
βœ“ Consolidated Acceptance Criteria
  • The system processes disposition code context → the K1 text should be linked to the train 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_LinkTexttoTrainDispositionCode(["Start Step"]) E_LinkTexttoTrainDispositionCode(["End Step"]) N_LinkTexttoTrainDispositionCode_Node0{"The system processes disposition
code context"}:::decision N_LinkTexttoTrainDispositionCode_Node0_action["The K1 text should be linked to the
train disposition code"]:::main N_LinkTexttoTrainDispositionCode_Node0 -- Yes --> N_LinkTexttoTrainDispositionCode_Node0_action N_LinkTexttoTrainDispositionCode_Node0_action --> E_LinkTexttoTrainDispositionCode S_LinkTexttoTrainDispositionCode --> N_LinkTexttoTrainDispositionCode_Node0 N_LinkTexttoTrainDispositionCode_Node0 -- No --> E_LinkTexttoTrainDispositionCode
File: GCX016E.cbl
GIVEN: K1 text is associated with current train ID
WHEN: The system processes disposition code context
THEN: The K1 text should be linked to the train disposition code
βœ“ Consolidated Acceptance Criteria
  • The system checks for Canadian Pacific Railway identifiers including 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO' → the system should identify if this is a special CPR bond creation 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_SpecialBondCreationMessage(["Start Step"]) E_SpecialBondCreationMessage(["End Step"]) N_SpecialBondCreationMessage_Node0{"The system checks for Canadian
Pacific Railway identifiers
including DIRECTOR OF CUSTOMS, CP
RAIL , CANADIAN PACIFIC LIMITED , or
CANADIAN PACIFIC RAILWAY CO"}:::decision N_SpecialBondCreationMessage_Node0_action["The system should identify if this
is a special CPR bond creation
message"]:::main N_SpecialBondCreationMessage_Node0 -- Yes --> N_SpecialBondCreationMessage_Node0_action N_SpecialBondCreationMessage_Node0_action --> E_SpecialBondCreationMessage S_SpecialBondCreationMessage --> N_SpecialBondCreationMessage_Node0 N_SpecialBondCreationMessage_Node0 -- No --> E_SpecialBondCreationMessage
File: GCX016E.cbl
GIVEN: K1 text is linked to train disposition code
WHEN: The system checks for Canadian Pacific Railway identifiers including 'DIRECTOR OF CUSTOMS, CP RAIL', 'CANADIAN PACIFIC LIMITED', or 'CANADIAN PACIFIC RAILWAY CO'
THEN: The system should identify if this is a special CPR bond creation message
βœ“ Consolidated Acceptance Criteria
  • The system stores the K1 text information → the K1 text should be stored in the train 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_StoreK1TextinTrainProcessingContext(["Start Step"]) E_StoreK1TextinTrainProcessingContext(["End Step"]) N_StoreK1TextinTrainProcessingContext_Node0{"The system stores the K1 text
information"}:::decision N_StoreK1TextinTrainProcessingContext_Node0_action["The K1 text should be stored in the
train processing context"]:::main N_StoreK1TextinTrainProcessingContext_Node0 -- Yes --> N_StoreK1TextinTrainProcessingContext_Node0_action N_StoreK1TextinTrainProcessingContext_Node0_action --> E_StoreK1TextinTrainProcessingContext S_StoreK1TextinTrainProcessingContext --> N_StoreK1TextinTrainProcessingContext_Node0 N_StoreK1TextinTrainProcessingContext_Node0 -- No --> E_StoreK1TextinTrainProcessingContext
File: GCX016E.cbl
GIVEN: K1 text processing is complete (either regular or CPR bond processing)
WHEN: The system stores the K1 text information
THEN: The K1 text should be stored in the train processing context
βœ“ Consolidated Acceptance Criteria
  • The system performs logging operations → the K1 remark should be logged for 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_LogK1RemarkforTrain(["Start Step"]) E_LogK1RemarkforTrain(["End Step"]) N_LogK1RemarkforTrain_Node0{"The system performs logging
operations"}:::decision N_LogK1RemarkforTrain_Node0_action["The K1 remark should be logged for
the train"]:::main N_LogK1RemarkforTrain_Node0 -- Yes --> N_LogK1RemarkforTrain_Node0_action N_LogK1RemarkforTrain_Node0_action --> E_LogK1RemarkforTrain S_LogK1RemarkforTrain --> N_LogK1RemarkforTrain_Node0 N_LogK1RemarkforTrain_Node0 -- No --> E_LogK1RemarkforTrain
File: GCX016E.cbl
GIVEN: K1 text is stored in train processing context
WHEN: The system performs logging operations
THEN: The K1 remark should be logged for the train
βœ“ Consolidated Acceptance Criteria
  • The system generates Merlin messages for the train → the K1 text should be included in the train Merlin 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_IncludeK1TextinTrainMerlinMessages(["Start Step"]) E_IncludeK1TextinTrainMerlinMessages(["End Step"]) N_IncludeK1TextinTrainMerlinMessages_Node0{"The system generates Merlin
messages for the train"}:::decision N_IncludeK1TextinTrainMerlinMessages_Node0_action["The K1 text should be included in
the train Merlin messages"]:::main N_IncludeK1TextinTrainMerlinMessages_Node0 -- Yes --> N_IncludeK1TextinTrainMerlinMessages_Node0_action N_IncludeK1TextinTrainMerlinMessages_Node0_action --> E_IncludeK1TextinTrainMerlinMessages S_IncludeK1TextinTrainMerlinMessages --> N_IncludeK1TextinTrainMerlinMessages_Node0 N_IncludeK1TextinTrainMerlinMessages_Node0 -- No --> E_IncludeK1TextinTrainMerlinMessages
File: GCX016E.cbl
GIVEN: K1 remark is logged for the train
WHEN: The system generates Merlin messages for the train
THEN: The K1 text should be included in the train Merlin messages
βœ“ Consolidated Acceptance Criteria
  • The segment type is identified as 'K1' → the system should invoke B400-PROCESS-K1-SEGMENT routine
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_K1SegmentDetectedinMessage(["Start Step"]) E_K1SegmentDetectedinMessage(["End Step"]) N_K1SegmentDetectedinMessage_Node0{"The segment type is identified as
K1"}:::decision N_K1SegmentDetectedinMessage_Node0_action["The system should invoke
B400-PROCESS-K1-SEGMENT routine"]:::main N_K1SegmentDetectedinMessage_Node0 -- Yes --> N_K1SegmentDetectedinMessage_Node0_action N_K1SegmentDetectedinMessage_Node0_action --> E_K1SegmentDetectedinMessage S_K1SegmentDetectedinMessage --> N_K1SegmentDetectedinMessage_Node0 N_K1SegmentDetectedinMessage_Node0 -- No --> E_K1SegmentDetectedinMessage
File: GCX016E.cbl
GIVEN: A message segment is being processed
WHEN: The segment type is identified as 'K1'
THEN: The system should invoke B400-PROCESS-K1-SEGMENT routine
βœ“ Consolidated Acceptance Criteria
  • The segment contains free-form text data → the system should extract and store the text 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_ExtractFreeFormTextMessage(["Start Step"]) E_ExtractFreeFormTextMessage(["End Step"]) N_ExtractFreeFormTextMessage_Node0{"The segment contains free-form text
data"}:::decision N_ExtractFreeFormTextMessage_Node0_action["The system should extract and store
the text message content"]:::main N_ExtractFreeFormTextMessage_Node0 -- Yes --> N_ExtractFreeFormTextMessage_Node0_action N_ExtractFreeFormTextMessage_Node0_action --> E_ExtractFreeFormTextMessage S_ExtractFreeFormTextMessage --> N_ExtractFreeFormTextMessage_Node0 N_ExtractFreeFormTextMessage_Node0 -- No --> E_ExtractFreeFormTextMessage
File: GCX016E.cbl
GIVEN: A K1 segment is being processed
WHEN: The segment contains free-form text data
THEN:
  • The system should extract
  • Store the text message content
βœ“ Consolidated Acceptance Criteria
  • If the processing context → the system should determine if the comment is cargo-related and route 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_AssociatedwithCargo(["Start Step"]) E_AssociatedwithCargo(["End Step"]) N_AssociatedwithCargo_Node0{"The system evaluates the processing
context"}:::decision N_AssociatedwithCargo_Node0_action["The system should determine if the
comment is cargo-related and route
accordingly"]:::main N_AssociatedwithCargo_Node0 -- Yes --> N_AssociatedwithCargo_Node0_action N_AssociatedwithCargo_Node0_action --> E_AssociatedwithCargo S_AssociatedwithCargo --> N_AssociatedwithCargo_Node0 N_AssociatedwithCargo_Node0 -- No --> E_AssociatedwithCargo
File: GCX016E.cbl
GIVEN: A K1 comment has been extracted from the segment
WHEN: The system evaluates the processing context
THEN:
  • The system should determine if the comment is cargo-related
  • Route accordingly
βœ“ Consolidated Acceptance Criteria
  • The comment text needs to be preserved → the system should store the K1 text in the cargo 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_StoreK1TextinCargoContext(["Start Step"]) E_StoreK1TextinCargoContext(["End Step"]) N_StoreK1TextinCargoContext_Node0{"The comment text needs to be
preserved"}:::decision N_StoreK1TextinCargoContext_Node0_action["The system should store the K1 text
in the cargo processing context"]:::main N_StoreK1TextinCargoContext_Node0 -- Yes --> N_StoreK1TextinCargoContext_Node0_action N_StoreK1TextinCargoContext_Node0_action --> E_StoreK1TextinCargoContext S_StoreK1TextinCargoContext --> N_StoreK1TextinCargoContext_Node0 N_StoreK1TextinCargoContext_Node0 -- No --> E_StoreK1TextinCargoContext
File: GCX016E.cbl
GIVEN: A K1 comment is determined to be cargo-associated
WHEN: The comment text needs to be preserved
THEN: The system should store the K1 text in the cargo processing context
βœ“ Consolidated Acceptance Criteria
  • A disposition code is being processed → the system should link the K1 message to the appropriate 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_LinkK1MessagetoDispositionCode(["Start Step"]) E_LinkK1MessagetoDispositionCode(["End Step"]) N_LinkK1MessagetoDispositionCode_Node0{"A disposition code is being
processed"}:::decision N_LinkK1MessagetoDispositionCode_Node0_action["The system should link the K1
message to the appropriate
disposition code"]:::main N_LinkK1MessagetoDispositionCode_Node0 -- Yes --> N_LinkK1MessagetoDispositionCode_Node0_action N_LinkK1MessagetoDispositionCode_Node0_action --> E_LinkK1MessagetoDispositionCode S_LinkK1MessagetoDispositionCode --> N_LinkK1MessagetoDispositionCode_Node0 N_LinkK1MessagetoDispositionCode_Node0 -- No --> E_LinkK1MessagetoDispositionCode
File: GCX016E.cbl
GIVEN: A K1 comment is stored in cargo context
WHEN: A disposition code is being processed
THEN: The system should link the K1 message to the appropriate disposition code
βœ“ Consolidated Acceptance Criteria
  • The comment needs to be stored in the array structure → the system should add the K1 comment to the appropriate comment 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_AddtoK1CommentArray(["Start Step"]) E_AddtoK1CommentArray(["End Step"]) N_AddtoK1CommentArray_Node0{"The comment needs to be stored in
the array structure"}:::decision N_AddtoK1CommentArray_Node0_action["The system should add the K1
comment to the appropriate comment
array position"]:::main N_AddtoK1CommentArray_Node0 -- Yes --> N_AddtoK1CommentArray_Node0_action N_AddtoK1CommentArray_Node0_action --> E_AddtoK1CommentArray S_AddtoK1CommentArray --> N_AddtoK1CommentArray_Node0 N_AddtoK1CommentArray_Node0 -- No --> E_AddtoK1CommentArray
File: GCX016E.cbl
GIVEN: A K1 comment is linked to a disposition code
WHEN: The comment needs to be stored in the array structure
THEN: The system should add the K1 comment to the appropriate comment array position
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional K1 segments in the message → the system should continue K1 processing if more segments exist or proceed to integration 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_MoreK1Segments(["Start Step"]) E_MoreK1Segments(["End Step"]) N_MoreK1Segments_Node0{"The system checks for additional K1
segments in the message"}:::decision N_MoreK1Segments_Node0_action["The system should continue K1
processing if more segments exist or
proceed to integration if complete"]:::main N_MoreK1Segments_Node0 -- Yes --> N_MoreK1Segments_Node0_action N_MoreK1Segments_Node0_action --> E_MoreK1Segments S_MoreK1Segments --> N_MoreK1Segments_Node0 N_MoreK1Segments_Node0 -- No --> E_MoreK1Segments
File: GCX016E.cbl
GIVEN: A K1 segment has been processed and stored
WHEN: The system checks for additional K1 segments in the message
THEN: The system should continue K1 processing if more segments exist or proceed to integration if complete
βœ“ Consolidated Acceptance Criteria
  • The system needs to integrate comments into cargo processing → the system should make K1 comments available for 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_IntegrateK1CommentsintoProcessing(["Start Step"]) E_IntegrateK1CommentsintoProcessing(["End Step"]) N_IntegrateK1CommentsintoProcessing_Node0{"The system needs to integrate
comments into cargo processing"}:::decision N_IntegrateK1CommentsintoProcessing_Node0_action["The system should make K1 comments
available for subsequent processing
steps"]:::main N_IntegrateK1CommentsintoProcessing_Node0 -- Yes --> N_IntegrateK1CommentsintoProcessing_Node0_action N_IntegrateK1CommentsintoProcessing_Node0_action --> E_IntegrateK1CommentsintoProcessing S_IntegrateK1CommentsintoProcessing --> N_IntegrateK1CommentsintoProcessing_Node0 N_IntegrateK1CommentsintoProcessing_Node0 -- No --> E_IntegrateK1CommentsintoProcessing
File: GCX016E.cbl
GIVEN: All K1 segments have been processed and stored
WHEN: The system needs to integrate comments into cargo processing
THEN: The system should make K1 comments available for subsequent processing steps
βœ“ Consolidated Acceptance Criteria
  • The system creates notification messages → the system should include relevant K1 comment text in the Merlin notification 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_IncludeK1TextinMerlinNotifications(["Start Step"]) E_IncludeK1TextinMerlinNotifications(["End Step"]) N_IncludeK1TextinMerlinNotifications_Node0{"The system creates notification
messages"}:::decision N_IncludeK1TextinMerlinNotifications_Node0_action["The system should include relevant
K1 comment text in the Merlin
notification content"]:::main N_IncludeK1TextinMerlinNotifications_Node0 -- Yes --> N_IncludeK1TextinMerlinNotifications_Node0_action N_IncludeK1TextinMerlinNotifications_Node0_action --> E_IncludeK1TextinMerlinNotifications S_IncludeK1TextinMerlinNotifications --> N_IncludeK1TextinMerlinNotifications_Node0 N_IncludeK1TextinMerlinNotifications_Node0 -- No --> E_IncludeK1TextinMerlinNotifications
File: GCX016E.cbl
GIVEN: K1 comments are integrated into processing and Merlin notifications are being generated
WHEN: The system creates notification messages
THEN: The system should include relevant K1 comment text in the Merlin notification content
βœ“ Consolidated Acceptance Criteria
  • The system needs to maintain audit trail records → the system should log K1 message details for audit 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_LogK1MessageforAuditTrail(["Start Step"]) E_LogK1MessageforAuditTrail(["End Step"]) N_LogK1MessageforAuditTrail_Node0{"The system needs to maintain audit
trail records"}:::decision N_LogK1MessageforAuditTrail_Node0_action["The system should log K1 message
details for audit and compliance
purposes"]:::main N_LogK1MessageforAuditTrail_Node0 -- Yes --> N_LogK1MessageforAuditTrail_Node0_action N_LogK1MessageforAuditTrail_Node0_action --> E_LogK1MessageforAuditTrail S_LogK1MessageforAuditTrail --> N_LogK1MessageforAuditTrail_Node0 N_LogK1MessageforAuditTrail_Node0 -- No --> E_LogK1MessageforAuditTrail
File: GCX016E.cbl
GIVEN: K1 comments have been included in Merlin notifications
WHEN: The system needs to maintain audit trail records
THEN:
  • The system should log k1 message details for audit
  • Compliance purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs to continue with remaining message segments → the system should proceed to process the next segment in the message sequence
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 needs to continue with
remaining message segments"}:::decision N_ContinueMessageProcessing_Node0_action["The system should proceed to
process the next segment in the
message sequence"]:::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: GCX016E.cbl
GIVEN: K1 segment processing is complete including logging
WHEN: The system needs to continue with remaining message segments
THEN: The system should proceed to process the next segment in the message sequence
βœ“ Consolidated Acceptance Criteria
  • The system extracts and validates the disposition code time → if the time is valid, use the extracted time; if the time is invalid or missing, default to the current system 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_TimeValid(["Start Step"]) E_TimeValid(["End Step"]) N_TimeValid_Node0{"The system extracts and validates
the disposition code time"}:::decision N_TimeValid_Node0_action["If the time is valid, use the
extracted time if the time is
invalid or missing, default to the
current system time"]:::main N_TimeValid_Node0 -- Yes --> N_TimeValid_Node0_action N_TimeValid_Node0_action --> E_TimeValid S_TimeValid --> N_TimeValid_Node0 N_TimeValid_Node0 -- No --> E_TimeValid
File: GCX016E.cbl
GIVEN: An X4 segment is received with a disposition code time field
WHEN:
  • The system extracts
  • Validates the disposition code time
THEN: If the time is valid, use the extracted time; if the time is invalid or missing, default to the current system time
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment → extract the date field from the disposition code data 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_ExtractDispositionCodeDate(["Start Step"]) E_ExtractDispositionCodeDate(["End Step"]) N_ExtractDispositionCodeDate_Node0{"The system processes the X4 segment"}:::decision N_ExtractDispositionCodeDate_Node0_action["Extract the date field from the
disposition code data for further
validation"]:::main N_ExtractDispositionCodeDate_Node0 -- Yes --> N_ExtractDispositionCodeDate_Node0_action N_ExtractDispositionCodeDate_Node0_action --> E_ExtractDispositionCodeDate S_ExtractDispositionCodeDate --> N_ExtractDispositionCodeDate_Node0 N_ExtractDispositionCodeDate_Node0 -- No --> E_ExtractDispositionCodeDate
File: GCX016E.cbl
GIVEN: An X4 segment containing disposition code information
WHEN: The system processes the X4 segment
THEN: Extract the date field from the disposition code data for further validation
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment → extract the time field from the disposition code data 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_ExtractDispositionCodeTime(["Start Step"]) E_ExtractDispositionCodeTime(["End Step"]) N_ExtractDispositionCodeTime_Node0{"The system processes the X4 segment"}:::decision N_ExtractDispositionCodeTime_Node0_action["Extract the time field from the
disposition code data for further
validation"]:::main N_ExtractDispositionCodeTime_Node0 -- Yes --> N_ExtractDispositionCodeTime_Node0_action N_ExtractDispositionCodeTime_Node0_action --> E_ExtractDispositionCodeTime S_ExtractDispositionCodeTime --> N_ExtractDispositionCodeTime_Node0 N_ExtractDispositionCodeTime_Node0 -- No --> E_ExtractDispositionCodeTime
File: GCX016E.cbl
GIVEN: An X4 segment containing disposition code information
WHEN: The system processes the X4 segment
THEN: Extract the time field from the disposition code data for further validation
βœ“ Consolidated Acceptance Criteria
  • The date validation passes → use the extracted date value for disposition code date/time processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UseExtractedDate(["Start Step"]) E_UseExtractedDate(["End Step"]) N_UseExtractedDate_Node0{"The date validation passes"}:::decision N_UseExtractedDate_Node0_action["Use the extracted date value for
disposition code datetime processing"]:::main N_UseExtractedDate_Node0 -- Yes --> N_UseExtractedDate_Node0_action N_UseExtractedDate_Node0_action --> E_UseExtractedDate S_UseExtractedDate --> N_UseExtractedDate_Node0 N_UseExtractedDate_Node0 -- No --> E_UseExtractedDate
File: GCX016E.cbl
GIVEN: A disposition code date has been extracted from X4 segment and validated as correct
WHEN: The date validation passes
THEN: Use the extracted date value for disposition code date/time processing
βœ“ Consolidated Acceptance Criteria
  • The time validation passes → use the extracted time value for disposition code date/time processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_UseExtractedTime(["Start Step"]) E_UseExtractedTime(["End Step"]) N_UseExtractedTime_Node0{"The time validation passes"}:::decision N_UseExtractedTime_Node0_action["Use the extracted time value for
disposition code datetime processing"]:::main N_UseExtractedTime_Node0 -- Yes --> N_UseExtractedTime_Node0_action N_UseExtractedTime_Node0_action --> E_UseExtractedTime S_UseExtractedTime --> N_UseExtractedTime_Node0 N_UseExtractedTime_Node0 -- No --> E_UseExtractedTime
File: GCX016E.cbl
GIVEN: A disposition code time has been extracted from X4 segment and validated as correct
WHEN: The time validation passes
THEN: Use the extracted time value for disposition code date/time processing
βœ“ Consolidated Acceptance Criteria
  • The time validation fails → use the current system time as the default value 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_DefaulttoSystemTime(["Start Step"]) E_DefaulttoSystemTime(["End Step"]) N_DefaulttoSystemTime_Node0{"The time validation fails"}:::decision N_DefaulttoSystemTime_Node0_action["Use the current system time as the
default value for disposition code
processing"]:::main N_DefaulttoSystemTime_Node0 -- Yes --> N_DefaulttoSystemTime_Node0_action N_DefaulttoSystemTime_Node0_action --> E_DefaulttoSystemTime S_DefaulttoSystemTime --> N_DefaulttoSystemTime_Node0 N_DefaulttoSystemTime_Node0 -- No --> E_DefaulttoSystemTime
File: GCX016E.cbl
GIVEN: A disposition code time has been extracted from X4 segment and is invalid or missing
WHEN: The time validation fails
THEN: Use the current system time as the default value for disposition code processing
βœ“ Consolidated Acceptance Criteria
  • The time needs to be formatted for system processing → convert the time into the standard format required for disposition code 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_FormatTimeforProcessing(["Start Step"]) E_FormatTimeforProcessing(["End Step"]) N_FormatTimeforProcessing_Node0{"The time needs to be formatted for
system processing"}:::decision N_FormatTimeforProcessing_Node0_action["Convert the time into the standard
format required for disposition code
operations"]:::main N_FormatTimeforProcessing_Node0 -- Yes --> N_FormatTimeforProcessing_Node0_action N_FormatTimeforProcessing_Node0_action --> E_FormatTimeforProcessing S_FormatTimeforProcessing --> N_FormatTimeforProcessing_Node0 N_FormatTimeforProcessing_Node0 -- No --> E_FormatTimeforProcessing
File: GCX016E.cbl
GIVEN: A valid time (either extracted or system default) for disposition code processing
WHEN: The time needs to be formatted for system processing
THEN: Convert the time into the standard format required for disposition code operations
βœ“ Consolidated Acceptance Criteria
  • Both date and time have been validated and formatted → combine the date and time into a single datetime value for storage 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_CombineDateandTime(["Start Step"]) E_CombineDateandTime(["End Step"]) N_CombineDateandTime_Node0{"Both date and time have been
validated and formatted"}:::decision N_CombineDateandTime_Node0_action["Combine the date and time into a
single datetime value for storage
and processing"]:::main N_CombineDateandTime_Node0 -- Yes --> N_CombineDateandTime_Node0_action N_CombineDateandTime_Node0_action --> E_CombineDateandTime S_CombineDateandTime --> N_CombineDateandTime_Node0 N_CombineDateandTime_Node0 -- No --> E_CombineDateandTime
File: GCX016E.cbl
GIVEN: Formatted date and time components for disposition code processing
WHEN:
  • Both date
  • Time have been validated
  • Formatted
THEN:
  • Combine the date
  • Time into a single datetime value for storage
  • Processing
βœ“ Consolidated Acceptance Criteria
  • The datetime combination is complete → store the formatted datetime value in the appropriate field 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_StoreFormattedDateTime(["Start Step"]) E_StoreFormattedDateTime(["End Step"]) N_StoreFormattedDateTime_Node0{"The datetime combination is
complete"}:::decision N_StoreFormattedDateTime_Node0_action["Store the formatted datetime value
in the appropriate field for
disposition code processing"]:::main N_StoreFormattedDateTime_Node0 -- Yes --> N_StoreFormattedDateTime_Node0_action N_StoreFormattedDateTime_Node0_action --> E_StoreFormattedDateTime S_StoreFormattedDateTime --> N_StoreFormattedDateTime_Node0 N_StoreFormattedDateTime_Node0 -- No --> E_StoreFormattedDateTime
File: GCX016E.cbl
GIVEN: A combined datetime value from validated date and time components
WHEN: The datetime combination is complete
THEN: Store the formatted datetime value in the appropriate field for disposition code processing
βœ“ Consolidated Acceptance Criteria
  • The disposition code is 'PROCEED' and the cargo arrival status is checked → if cargo has arrived, apply standard proceed processing; if cargo has not arrived, skip proceed processing and continue with normal 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_IsDispositionCodeProceed(["Start Step"]) E_IsDispositionCodeProceed(["End Step"]) N_IsDispositionCodeProceed_Node0{"The disposition code is PROCEED and
the cargo arrival status is checked"}:::decision N_IsDispositionCodeProceed_Node0_action["If cargo has arrived, apply
standard proceed processing if cargo
has not arrived, skip proceed
processing and continue with normal
flow"]:::main N_IsDispositionCodeProceed_Node0 -- Yes --> N_IsDispositionCodeProceed_Node0_action N_IsDispositionCodeProceed_Node0_action --> E_IsDispositionCodeProceed S_IsDispositionCodeProceed --> N_IsDispositionCodeProceed_Node0 N_IsDispositionCodeProceed_Node0 -- No --> E_IsDispositionCodeProceed
File: GCX016E.cbl
GIVEN: A disposition code is being processed for a cargo shipment
WHEN: The disposition code is 'PROCEED' and the cargo arrival status is checked
THEN:
  • If cargo has arrived, apply standard proceed processing; if cargo has not arrived, skip proceed processing
  • Continue with normal flow
βœ“ Consolidated Acceptance Criteria
  • The disposition code is 'CANCEL-XJ' and previous disposition codes are searched → if a matching proceed code is found, remove the previous proceed code and then apply cancel processing; if no matching code is found, proceed directly to cancel processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_IsDispositionCodeCancel(["Start Step"]) E_IsDispositionCodeCancel(["End Step"]) N_IsDispositionCodeCancel_Node0{"The disposition code is CANCEL-XJ
and previous disposition codes are
searched"}:::decision N_IsDispositionCodeCancel_Node0_action["If a matching proceed code is
found, remove the previous proceed
code and then apply cancel
processing if no matching code is
found, proceed directly to cancel
processing"]:::main N_IsDispositionCodeCancel_Node0 -- Yes --> N_IsDispositionCodeCancel_Node0_action N_IsDispositionCodeCancel_Node0_action --> E_IsDispositionCodeCancel S_IsDispositionCodeCancel --> N_IsDispositionCodeCancel_Node0 N_IsDispositionCodeCancel_Node0 -- No --> E_IsDispositionCodeCancel
File: GCX016E.cbl
GIVEN: A disposition code is being processed for a cargo shipment
WHEN: The disposition code is 'CANCEL-XJ' and previous disposition codes are searched
THEN:
  • If a matching proceed code is found, remove the previous proceed code
  • Then apply cancel processing; if no matching code is found, proceed directly to cancel processing
βœ“ Consolidated Acceptance Criteria
  • The cargo arrival status is evaluated → return true if cargo arrival date exists and cargo status indicates arrival, otherwise return 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_HasCargoArrived(["Start Step"]) E_HasCargoArrived(["End Step"]) N_HasCargoArrived_Node0{"The cargo arrival status is
evaluated"}:::decision N_HasCargoArrived_Node0_action["Return true if cargo arrival date
exists and cargo status indicates
arrival, otherwise return false"]:::main N_HasCargoArrived_Node0 -- Yes --> N_HasCargoArrived_Node0_action N_HasCargoArrived_Node0_action --> E_HasCargoArrived S_HasCargoArrived --> N_HasCargoArrived_Node0 N_HasCargoArrived_Node0 -- No --> E_HasCargoArrived
File: GCX016E.cbl
GIVEN: A proceed disposition code is being processed for a cargo shipment
WHEN: The cargo arrival status is evaluated
THEN:
  • Return true if cargo arrival date exists
  • Cargo status indicates arrival, otherwise return false
βœ“ Consolidated Acceptance Criteria
  • The system searches through the cargo's disposition code history → return true if a proceed disposition code with matching entry number and quantity is found, otherwise return 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_FindMatchingProceedCode(["Start Step"]) E_FindMatchingProceedCode(["End Step"]) N_FindMatchingProceedCode_Node0{"The system searches through the
cargo s disposition code history"}:::decision N_FindMatchingProceedCode_Node0_action["Return true if a proceed
disposition code with matching entry
number and quantity is found,
otherwise return false"]:::main N_FindMatchingProceedCode_Node0 -- Yes --> N_FindMatchingProceedCode_Node0_action N_FindMatchingProceedCode_Node0_action --> E_FindMatchingProceedCode S_FindMatchingProceedCode --> N_FindMatchingProceedCode_Node0 N_FindMatchingProceedCode_Node0 -- No --> E_FindMatchingProceedCode
File: GCX016E.cbl
GIVEN: A cancel disposition code is being processed and previous disposition codes exist
WHEN: The system searches through the cargo's disposition code history
THEN:
  • Return true if a proceed disposition code with matching entry number
  • Quantity is found, otherwise return false
βœ“ Consolidated Acceptance Criteria
  • The cancel disposition processing requires removal of the previous code → remove the proceed code from the disposition array and update the array sequence numbers 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_RemovePreviousProceedCode(["Start Step"]) E_RemovePreviousProceedCode(["End Step"]) N_RemovePreviousProceedCode_Node0{"The cancel disposition processing
requires removal of the previous
code"}:::decision N_RemovePreviousProceedCode_Node0_action["Remove the proceed code from the
disposition array and update the
array sequence numbers accordingly"]:::main N_RemovePreviousProceedCode_Node0 -- Yes --> N_RemovePreviousProceedCode_Node0_action N_RemovePreviousProceedCode_Node0_action --> E_RemovePreviousProceedCode S_RemovePreviousProceedCode --> N_RemovePreviousProceedCode_Node0 N_RemovePreviousProceedCode_Node0 -- No --> E_RemovePreviousProceedCode
File: GCX016E.cbl
GIVEN: A matching proceed disposition code has been identified in the cargo's disposition history
WHEN: The cancel disposition processing requires removal of the previous code
THEN:
  • Remove the proceed code from the disposition array
  • Update the array sequence numbers accordingly
βœ“ Consolidated Acceptance Criteria
  • The cargo status before and after cancel processing is compared → return true if the cargo status flags, release quantities, or arrival status have changed, otherwise return false
  • If whether cargo status has been modified during processing → the system proceeds with GCCIIS integration if status changed, otherwise skips 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_CargoStatusChanged(["Start Step"]) E_CargoStatusChanged(["End Step"]) N_CargoStatusChanged_Node0{"The cargo status before and after
cancel processing is compared"}:::decision N_CargoStatusChanged_Node0_action["Return true if the cargo status
flags, release quantities, or
arrival status have changed,
otherwise return false"]:::main N_CargoStatusChanged_Node0 -- Yes --> N_CargoStatusChanged_Node0_action N_CargoStatusChanged_Node0_action --> E_CargoStatusChanged S_CargoStatusChanged --> N_CargoStatusChanged_Node0 N_CargoStatusChanged_Node1{"The system evaluates whether cargo
status has been modified during
processing"}:::decision N_CargoStatusChanged_Node1_action["The system proceeds with GCCIIS
integration if status changed,
otherwise skips integration"]:::main N_CargoStatusChanged_Node1 -- Yes --> N_CargoStatusChanged_Node1_action N_CargoStatusChanged_Node1_action --> E_CargoStatusChanged N_CargoStatusChanged_Node0 -- No --> N_CargoStatusChanged_Node1 N_CargoStatusChanged_Node1 -- No --> E_CargoStatusChanged
File: GCX016E.cbl
GIVEN: Cancel disposition processing has been completed for a cargo shipment
WHEN:
  • The cargo status before
  • After cancel processing is compared
THEN: Return true if the cargo status flags, release quantities, or arrival status have changed, otherwise return false
File: GCX016E.cbl
GIVEN: A cargo processing transaction is being executed
WHEN: The system evaluates whether cargo status has been modified during processing
THEN: The system proceeds with GCCIIS integration if status changed, otherwise skips integration
βœ“ Consolidated Acceptance Criteria
  • The re-processing action needs to be recorded → create a log entry containing the original disposition code, re-processing type, cargo identifier, 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_LogReprocessingAction(["Start Step"]) E_LogReprocessingAction(["End Step"]) N_LogReprocessingAction_Node0{"The re-processing action needs to
be recorded"}:::decision N_LogReprocessingAction_Node0_action["Create a log entry containing the
original disposition code,
re-processing type, cargo
identifier, and timestamp"]:::main N_LogReprocessingAction_Node0 -- Yes --> N_LogReprocessingAction_Node0_action N_LogReprocessingAction_Node0_action --> E_LogReprocessingAction S_LogReprocessingAction --> N_LogReprocessingAction_Node0 N_LogReprocessingAction_Node0 -- No --> E_LogReprocessingAction
File: GCX016E.cbl
GIVEN: Disposition code re-processing has occurred for a cargo shipment
WHEN: The re-processing action needs to be recorded
THEN: Create a log entry containing the original disposition code, re-processing type, cargo identifier, and timestamp
βœ“ Consolidated Acceptance Criteria
  • The system checks for US CCN key availability in the cargo record → if US CCN key exists and is not empty, proceed with US CCN search; otherwise generate 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_USCCNKeyAvailable(["Start Step"]) E_USCCNKeyAvailable(["End Step"]) N_USCCNKeyAvailable_Node0{"The system checks for US CCN key
availability in the cargo record"}:::decision N_USCCNKeyAvailable_Node0_action["If US CCN key exists and is not
empty, proceed with US CCN search
otherwise generate cargo not found
error"]:::main N_USCCNKeyAvailable_Node0 -- Yes --> N_USCCNKeyAvailable_Node0_action N_USCCNKeyAvailable_Node0_action --> E_USCCNKeyAvailable S_USCCNKeyAvailable --> N_USCCNKeyAvailable_Node0 N_USCCNKeyAvailable_Node0 -- No --> E_USCCNKeyAvailable
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo has not been found via primary search methods
WHEN: The system checks for US CCN key availability in the cargo record
THEN:
  • If us ccn key exists
  • Is not empty, proceed with us ccn search; otherwise generate cargo not found error
βœ“ Consolidated Acceptance Criteria
  • The system extracts the US CCN value from the cargo record → the US CCN value is retrieved and prepared 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_ExtractUSCCNfromCargoRecord(["Start Step"]) E_ExtractUSCCNfromCargoRecord(["End Step"]) N_ExtractUSCCNfromCargoRecord_Node0{"The system extracts the US CCN
value from the cargo record"}:::decision N_ExtractUSCCNfromCargoRecord_Node0_action["The US CCN value is retrieved and
prepared for formatting"]:::main N_ExtractUSCCNfromCargoRecord_Node0 -- Yes --> N_ExtractUSCCNfromCargoRecord_Node0_action N_ExtractUSCCNfromCargoRecord_Node0_action --> E_ExtractUSCCNfromCargoRecord S_ExtractUSCCNfromCargoRecord --> N_ExtractUSCCNfromCargoRecord_Node0 N_ExtractUSCCNfromCargoRecord_Node0 -- No --> E_ExtractUSCCNfromCargoRecord
File: GCX016E.cbl
GIVEN: A valid cargo record exists and US CCN key is available
WHEN: The system extracts the US CCN value from the cargo record
THEN:
  • The us ccn value is retrieved
  • Prepared for formatting
βœ“ Consolidated Acceptance Criteria
  • The system formats the US CCN into a search key → the US CCN is properly formatted according to database key 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_FormatUSCCNKeyforSearch(["Start Step"]) E_FormatUSCCNKeyforSearch(["End Step"]) N_FormatUSCCNKeyforSearch_Node0{"The system formats the US CCN into
a search key"}:::decision N_FormatUSCCNKeyforSearch_Node0_action["The US CCN is properly formatted
according to database key
requirements"]:::main N_FormatUSCCNKeyforSearch_Node0 -- Yes --> N_FormatUSCCNKeyforSearch_Node0_action N_FormatUSCCNKeyforSearch_Node0_action --> E_FormatUSCCNKeyforSearch S_FormatUSCCNKeyforSearch --> N_FormatUSCCNKeyforSearch_Node0 N_FormatUSCCNKeyforSearch_Node0 -- No --> E_FormatUSCCNKeyforSearch
File: GCX016E.cbl
GIVEN: US CCN has been extracted from the cargo record
WHEN: The system formats the US CCN into a search key
THEN: The US CCN is properly formatted according to database key requirements
βœ“ Consolidated Acceptance Criteria
  • The system searches the cargo database using the US CCN key → database search is executed against GCSUSRT using the 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_SearchCargoDatabasebyUSCCNKey(["Start Step"]) E_SearchCargoDatabasebyUSCCNKey(["End Step"]) N_SearchCargoDatabasebyUSCCNKey_Node0{"The system searches the cargo
database using the US CCN key"}:::decision N_SearchCargoDatabasebyUSCCNKey_Node0_action["Database search is executed against
GCSUSRT using the US CCN key"]:::main N_SearchCargoDatabasebyUSCCNKey_Node0 -- Yes --> N_SearchCargoDatabasebyUSCCNKey_Node0_action N_SearchCargoDatabasebyUSCCNKey_Node0_action --> E_SearchCargoDatabasebyUSCCNKey S_SearchCargoDatabasebyUSCCNKey --> N_SearchCargoDatabasebyUSCCNKey_Node0 N_SearchCargoDatabasebyUSCCNKey_Node0 -- No --> E_SearchCargoDatabasebyUSCCNKey
File: GCX016E.cbl
GIVEN: US CCN key has been properly formatted for search
WHEN: The system searches the cargo database using the US CCN key
THEN: Database search is executed against GCSUSRT using the US CCN key
βœ“ Consolidated Acceptance Criteria
  • If the search results → if cargo record is found, proceed with record retrieval; otherwise generate 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_CargoFoundbyUSCCN(["Start Step"]) E_CargoFoundbyUSCCN(["End Step"]) N_CargoFoundbyUSCCN_Node0{"The system evaluates the search
results"}:::decision N_CargoFoundbyUSCCN_Node0_action["If cargo record is found, proceed
with record retrieval otherwise
generate cargo not found error"]:::main N_CargoFoundbyUSCCN_Node0 -- Yes --> N_CargoFoundbyUSCCN_Node0_action N_CargoFoundbyUSCCN_Node0_action --> E_CargoFoundbyUSCCN S_CargoFoundbyUSCCN --> N_CargoFoundbyUSCCN_Node0 N_CargoFoundbyUSCCN_Node0 -- No --> E_CargoFoundbyUSCCN
File: GCX016E.cbl
GIVEN: Database search by US CCN has been completed
WHEN: The system evaluates the search results
THEN: If cargo record is found, proceed with record retrieval; otherwise generate cargo not found error
βœ“ Consolidated Acceptance Criteria
  • The system validates the cargo record status using GCSCCRT → cargo record status is checked for validity and 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_ValidateCargoRecordStatus(["Start Step"]) E_ValidateCargoRecordStatus(["End Step"]) N_ValidateCargoRecordStatus_Node0{"The system validates the cargo
record status using GCSCCRT"}:::decision N_ValidateCargoRecordStatus_Node0_action["Cargo record status is checked for
validity and processing eligibility"]:::main N_ValidateCargoRecordStatus_Node0 -- Yes --> N_ValidateCargoRecordStatus_Node0_action N_ValidateCargoRecordStatus_Node0_action --> E_ValidateCargoRecordStatus S_ValidateCargoRecordStatus --> N_ValidateCargoRecordStatus_Node0 N_ValidateCargoRecordStatus_Node0 -- No --> E_ValidateCargoRecordStatus
File: GCX016E.cbl
GIVEN: Cargo record has been retrieved from the database
WHEN: The system validates the cargo record status using GCSCCRT
THEN:
  • Cargo record status is checked for validity
  • Processing eligibility
βœ“ Consolidated Acceptance Criteria
  • If cargo record validity → if cargo record is valid, proceed with cargo processing; otherwise generate 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_ValidCargoRecord(["Start Step"]) E_ValidCargoRecord(["End Step"]) N_ValidCargoRecord_Node0{"The system evaluates cargo record
validity"}:::decision N_ValidCargoRecord_Node0_action["If cargo record is valid, proceed
with cargo processing otherwise
generate cargo not found error"]:::main N_ValidCargoRecord_Node0 -- Yes --> N_ValidCargoRecord_Node0_action N_ValidCargoRecord_Node0_action --> E_ValidCargoRecord S_ValidCargoRecord --> N_ValidCargoRecord_Node0 N_ValidCargoRecord_Node0 -- No --> E_ValidCargoRecord
File: GCX016E.cbl
GIVEN: Cargo record status validation has been completed
WHEN: The system evaluates cargo record validity
THEN: If cargo record is valid, proceed with cargo processing; otherwise generate cargo not found error
βœ“ Consolidated Acceptance Criteria
  • The system begins cargo processing operations → cargo processing is initiated with the validated 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_ProcessFoundCargo(["Start Step"]) E_ProcessFoundCargo(["End Step"]) N_ProcessFoundCargo_Node0{"The system begins cargo processing
operations"}:::decision N_ProcessFoundCargo_Node0_action["Cargo processing is initiated with
the validated cargo record"]:::main N_ProcessFoundCargo_Node0 -- Yes --> N_ProcessFoundCargo_Node0_action N_ProcessFoundCargo_Node0_action --> E_ProcessFoundCargo S_ProcessFoundCargo --> N_ProcessFoundCargo_Node0 N_ProcessFoundCargo_Node0 -- No --> E_ProcessFoundCargo
File: GCX016E.cbl
GIVEN: Cargo record has been found and validated as eligible for processing
WHEN: The system begins cargo processing operations
THEN: Cargo processing is initiated with the validated cargo record
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo processing status flags → processing flags are set to indicate successful cargo location and 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_UpdateCargoProcessingFlags(["Start Step"]) E_UpdateCargoProcessingFlags(["End Step"]) N_UpdateCargoProcessingFlags_Node0{"The system updates cargo processing
status flags"}:::decision N_UpdateCargoProcessingFlags_Node0_action["Processing flags are set to
indicate successful cargo location
and processing status"]:::main N_UpdateCargoProcessingFlags_Node0 -- Yes --> N_UpdateCargoProcessingFlags_Node0_action N_UpdateCargoProcessingFlags_Node0_action --> E_UpdateCargoProcessingFlags S_UpdateCargoProcessingFlags --> N_UpdateCargoProcessingFlags_Node0 N_UpdateCargoProcessingFlags_Node0 -- No --> E_UpdateCargoProcessingFlags
File: GCX016E.cbl
GIVEN: Cargo processing has been initiated
WHEN: The system updates cargo processing status flags
THEN:
  • Processing flags are set to indicate successful cargo location
  • Processing status
βœ“ Consolidated Acceptance Criteria
  • The system continues with disposition processing → disposition code processing proceeds with the located cargo record
  • The system continues with cargo processing → the system should proceed with disposition code processing for the newly created CPRS 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_ContinuewithDispositionProcessing(["Start Step"]) E_ContinuewithDispositionProcessing(["End Step"]) N_ContinuewithDispositionProcessing_Node0{"The system continues with
disposition processing"}:::decision N_ContinuewithDispositionProcessing_Node0_action["Disposition code processing
proceeds with the located cargo
record"]:::main N_ContinuewithDispositionProcessing_Node0 -- Yes --> N_ContinuewithDispositionProcessing_Node0_action N_ContinuewithDispositionProcessing_Node0_action --> E_ContinuewithDispositionProcessing S_ContinuewithDispositionProcessing --> N_ContinuewithDispositionProcessing_Node0 N_ContinuewithDispositionProcessing_Node1{"The system continues with cargo
processing"}:::decision N_ContinuewithDispositionProcessing_Node1_action["The system should proceed with
disposition code processing for the
newly created CPRS cargo record"]:::main N_ContinuewithDispositionProcessing_Node1 -- Yes --> N_ContinuewithDispositionProcessing_Node1_action N_ContinuewithDispositionProcessing_Node1_action --> E_ContinuewithDispositionProcessing N_ContinuewithDispositionProcessing_Node0 -- No --> N_ContinuewithDispositionProcessing_Node1 N_ContinuewithDispositionProcessing_Node1 -- No --> E_ContinuewithDispositionProcessing
File: GCX016E.cbl
GIVEN: Cargo has been found, validated, and processing flags updated
WHEN: The system continues with disposition processing
THEN: Disposition code processing proceeds with the located cargo record
File: GCX016E.cbl
GIVEN: Cargo processing counters have been updated after successful CPRS cargo creation
WHEN: The system continues with cargo processing
THEN: The system should proceed with disposition code processing for the newly created CPRS cargo record
βœ“ Consolidated Acceptance Criteria
  • The system generates a cargo not found error → error is generated indicating cargo could not be located for processing
  • The system cannot locate any matching cargo record → the system generates a cargo not found error for business exception 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_GenerateCargoNotFoundError(["Start Step"]) E_GenerateCargoNotFoundError(["End Step"]) N_GenerateCargoNotFoundError_Node0{"The system generates a cargo not
found error"}:::decision N_GenerateCargoNotFoundError_Node0_action["Error is generated 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_Node1{"The system cannot locate any
matching cargo record"}:::decision N_GenerateCargoNotFoundError_Node1_action["The system generates a cargo not
found error for business exception
handling"]:::main N_GenerateCargoNotFoundError_Node1 -- Yes --> N_GenerateCargoNotFoundError_Node1_action N_GenerateCargoNotFoundError_Node1_action --> E_GenerateCargoNotFoundError N_GenerateCargoNotFoundError_Node0 -- No --> N_GenerateCargoNotFoundError_Node1 N_GenerateCargoNotFoundError_Node1 -- No --> E_GenerateCargoNotFoundError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: US CCN key is not available, cargo is not found by US CCN search, or cargo record validation fails
WHEN: The system generates a cargo not found error
THEN: Error is generated indicating cargo could not be located for processing
File: GCX016E.cbl
GIVEN: Cargo search has failed in both initial search and secondary search with renumbered key
WHEN: The system cannot locate any matching cargo record
THEN: The system generates a cargo not found error for business exception handling
βœ“ Consolidated Acceptance Criteria
  • The system logs the search attempt → search attempt 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_LogSearchAttempt(["Start Step"]) E_LogSearchAttempt(["End Step"]) N_LogSearchAttempt_Node0{"The system logs the search attempt"}:::decision N_LogSearchAttempt_Node0_action["Search attempt details are recorded
for audit trail"]:::main N_LogSearchAttempt_Node0 -- Yes --> N_LogSearchAttempt_Node0_action N_LogSearchAttempt_Node0_action --> E_LogSearchAttempt S_LogSearchAttempt --> N_LogSearchAttempt_Node0 N_LogSearchAttempt_Node0 -- No --> E_LogSearchAttempt
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo not found error has been generated
WHEN: The system logs the search attempt
THEN: Search attempt details are recorded for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system creates audit log entries → a log entry is created with timestamp, user information, and details of the bond clearing action for audit trail purposes
  • The system completes bond clearing process → a log entry should be created documenting the bond clearing action 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_LogBondClearingAction(["Start Step"]) E_LogBondClearingAction(["End Step"]) N_LogBondClearingAction_Node0{"The system creates audit log
entries"}:::decision N_LogBondClearingAction_Node0_action["A log entry is created with
timestamp, user information, and
details of the bond clearing action
for audit trail purposes"]:::main N_LogBondClearingAction_Node0 -- Yes --> N_LogBondClearingAction_Node0_action N_LogBondClearingAction_Node0_action --> E_LogBondClearingAction S_LogBondClearingAction --> N_LogBondClearingAction_Node0 N_LogBondClearingAction_Node1{"The system completes bond clearing
process"}:::decision N_LogBondClearingAction_Node1_action["A log entry should be created
documenting the bond clearing action
with relevant 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: GCX016E.cbl
GIVEN: Cargo status arrays have been updated with the bond cancellation
WHEN: The system creates audit log entries
THEN: A log entry is created with timestamp, user information, and details of the bond clearing action for audit trail purposes
File: GCX016E.cbl
GIVEN: All bond information has been cleared
WHEN: The system completes bond clearing process
THEN: A log entry should be created documenting the bond clearing action with relevant details
βœ“ Consolidated Acceptance Criteria
  • DC95 is not found in the disposition code table → generate an error message indicating invalid disposition code and terminate the bond cancellation 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_DC95NotFoundGenerateError(["Start Step"]) E_DC95NotFoundGenerateError(["End Step"]) N_DC95NotFoundGenerateError_Node0{"DC95 is not found in the
disposition code table"}:::decision N_DC95NotFoundGenerateError_Node0_action["Generate an error message
indicating invalid disposition code
and terminate the bond cancellation
process"]:::exclusion N_DC95NotFoundGenerateError_Node0 -- Yes -->|Alternative| N_DC95NotFoundGenerateError_Node0_action N_DC95NotFoundGenerateError_Node0_action --> E_DC95NotFoundGenerateError S_DC95NotFoundGenerateError --> N_DC95NotFoundGenerateError_Node0 N_DC95NotFoundGenerateError_Node0 -- No --> E_DC95NotFoundGenerateError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Disposition code 95 is being validated against the disposition code table
WHEN: DC95 is not found in the disposition code table
THEN:
  • Generate an error message indicating invalid disposition code
  • Terminate the bond cancellation process
βœ“ Consolidated Acceptance Criteria
  • The system needs to process entry type code conversion → retrieve the current entry type code value from the US cargo root segment 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_RetrieveCurrentEntryTypeCodeValue(["Start Step"]) E_RetrieveCurrentEntryTypeCodeValue(["End Step"]) N_RetrieveCurrentEntryTypeCodeValue_Node0{"The system needs to process entry
type code conversion"}:::decision N_RetrieveCurrentEntryTypeCodeValue_Node0_action["Retrieve the current entry type
code value from the US cargo root
segment record"]:::main N_RetrieveCurrentEntryTypeCodeValue_Node0 -- Yes --> N_RetrieveCurrentEntryTypeCodeValue_Node0_action N_RetrieveCurrentEntryTypeCodeValue_Node0_action --> E_RetrieveCurrentEntryTypeCodeValue S_RetrieveCurrentEntryTypeCodeValue --> N_RetrieveCurrentEntryTypeCodeValue_Node0 N_RetrieveCurrentEntryTypeCodeValue_Node0 -- No --> E_RetrieveCurrentEntryTypeCodeValue
File: GCX016E.cbl
GIVEN: An entry type code is present in the X4 segment
WHEN: The system needs to process entry type code conversion
THEN: Retrieve the current entry type code value from the US cargo root segment record
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry type code for internal use → convert the EDI entry type code to the corresponding internal system value using entry type code lookup arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ConvertEDIEntryTypeCodetoInternalSystemValue(["Start Step"]) E_ConvertEDIEntryTypeCodetoInternalSystemValue(["End Step"]) N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0{"The system processes the entry type
code for internal use"}:::decision N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0_action["Convert the EDI entry type code to
the corresponding internal system
value using entry type code lookup
arrays"]:::main N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0 -- Yes --> N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0_action N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0_action --> E_ConvertEDIEntryTypeCodetoInternalSystemValue S_ConvertEDIEntryTypeCodetoInternalSystemValue --> N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0 N_ConvertEDIEntryTypeCodetoInternalSystemValue_Node0 -- No --> E_ConvertEDIEntryTypeCodetoInternalSystemValue
File: GCX016E.cbl
GIVEN: An EDI entry type code is received from the X4 segment
WHEN: The system processes the entry type code for internal use
THEN: Convert the EDI entry type code to the corresponding internal system value using entry type code lookup arrays
βœ“ Consolidated Acceptance Criteria
  • If the entry type code for in-bond classification → if entry type code equals 61, 62, 63, or 69, classify as in-bond and set master in-bond flag, otherwise proceed with standard entry type processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_EntryTypeCode616263or69(["Start Step"]) E_EntryTypeCode616263or69(["End Step"]) N_EntryTypeCode616263or69_Node0{"The system evaluates the entry type
code for in-bond classification"}:::decision N_EntryTypeCode616263or69_Node0_action["If entry type code equals 61, 62,
63, or 69, classify as in-bond and
set master in-bond flag, otherwise
proceed with standard entry type
processing"]:::main N_EntryTypeCode616263or69_Node0 -- Yes --> N_EntryTypeCode616263or69_Node0_action N_EntryTypeCode616263or69_Node0_action --> E_EntryTypeCode616263or69 S_EntryTypeCode616263or69 --> N_EntryTypeCode616263or69_Node0 N_EntryTypeCode616263or69_Node0 -- No --> E_EntryTypeCode616263or69
File: GCX016E.cbl
GIVEN: An entry type code has been converted to internal system value
WHEN: The system evaluates the entry type code for in-bond classification
THEN:
  • If entry type code equals 61, 62, 63, or 69, classify as in-bond
  • Set master in-bond flag, otherwise proceed with standard entry type processing
βœ“ Consolidated Acceptance Criteria
  • The system completes entry type code processing → update the entry type code field in the US cargo root segment record with the converted internal 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_UpdateEntryTypeCodeinCargoRecord(["Start Step"]) E_UpdateEntryTypeCodeinCargoRecord(["End Step"]) N_UpdateEntryTypeCodeinCargoRecord_Node0{"The system completes entry type
code processing"}:::decision N_UpdateEntryTypeCodeinCargoRecord_Node0_action["Update the entry type code field in
the US cargo root segment record
with the converted internal value"]:::main N_UpdateEntryTypeCodeinCargoRecord_Node0 -- Yes --> N_UpdateEntryTypeCodeinCargoRecord_Node0_action N_UpdateEntryTypeCodeinCargoRecord_Node0_action --> E_UpdateEntryTypeCodeinCargoRecord S_UpdateEntryTypeCodeinCargoRecord --> N_UpdateEntryTypeCodeinCargoRecord_Node0 N_UpdateEntryTypeCodeinCargoRecord_Node0 -- No --> E_UpdateEntryTypeCodeinCargoRecord
File: GCX016E.cbl
GIVEN: An entry type code has been converted to internal system value
WHEN: The system completes entry type code processing
THEN: Update the entry type code field in the US cargo root segment record with the converted internal value
βœ“ Consolidated Acceptance Criteria
  • The system processes entry type code for border crossing cargo → apply special border crossing rules for entry type code processing and validation
  • The system applies special border crossing processing rules → execute border crossing specific logic before updating 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_ApplySpecialBorderCrossingRules(["Start Step"]) E_ApplySpecialBorderCrossingRules(["End Step"]) N_ApplySpecialBorderCrossingRules_Node0{"The system processes entry type
code for border crossing cargo"}:::decision N_ApplySpecialBorderCrossingRules_Node0_action["Apply special border crossing rules
for entry type code processing and
validation"]:::main N_ApplySpecialBorderCrossingRules_Node0 -- Yes --> N_ApplySpecialBorderCrossingRules_Node0_action N_ApplySpecialBorderCrossingRules_Node0_action --> E_ApplySpecialBorderCrossingRules S_ApplySpecialBorderCrossingRules --> N_ApplySpecialBorderCrossingRules_Node0 N_ApplySpecialBorderCrossingRules_Node1{"The system applies special border
crossing processing rules"}:::decision N_ApplySpecialBorderCrossingRules_Node1_action["Execute border crossing specific
logic before updating the cargo
record"]:::main N_ApplySpecialBorderCrossingRules_Node1 -- Yes --> N_ApplySpecialBorderCrossingRules_Node1_action N_ApplySpecialBorderCrossingRules_Node1_action --> E_ApplySpecialBorderCrossingRules N_ApplySpecialBorderCrossingRules_Node0 -- No --> N_ApplySpecialBorderCrossingRules_Node1 N_ApplySpecialBorderCrossingRules_Node1 -- No --> E_ApplySpecialBorderCrossingRules
File: GCX016E.cbl
GIVEN: A border crossing scenario has been detected
WHEN: The system processes entry type code for border crossing cargo
THEN:
  • Apply special border crossing rules for entry type code processing
  • Validation
File: GCX016E.cbl
GIVEN: A border crossing scenario has been detected
WHEN: The system applies special border crossing processing rules
THEN: Execute border crossing specific logic before updating the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system validates the converted entry type code → verify that the converted entry type code is valid and meets 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_ValidateConvertedEntryTypeCode(["Start Step"]) E_ValidateConvertedEntryTypeCode(["End Step"]) N_ValidateConvertedEntryTypeCode_Node0{"The system validates the converted
entry type code"}:::decision N_ValidateConvertedEntryTypeCode_Node0_action["Verify that the converted entry
type code is valid and meets system
requirements"]:::main N_ValidateConvertedEntryTypeCode_Node0 -- Yes --> N_ValidateConvertedEntryTypeCode_Node0_action N_ValidateConvertedEntryTypeCode_Node0_action --> E_ValidateConvertedEntryTypeCode S_ValidateConvertedEntryTypeCode --> N_ValidateConvertedEntryTypeCode_Node0 N_ValidateConvertedEntryTypeCode_Node0 -- No --> E_ValidateConvertedEntryTypeCode
File: GCX016E.cbl
GIVEN: An entry type code has been converted and potentially processed for border crossing
WHEN: The system validates the converted entry type code
THEN:
  • Verify that the converted entry type code is valid
  • Meets system requirements
βœ“ Consolidated Acceptance Criteria
  • The system completes entry type code processing → store the validated internal entry type code value in the cargo record 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_StoreInternalEntryTypeCodeValue(["Start Step"]) E_StoreInternalEntryTypeCodeValue(["End Step"]) N_StoreInternalEntryTypeCodeValue_Node0{"The system completes entry type
code processing"}:::decision N_StoreInternalEntryTypeCodeValue_Node0_action["Store the validated internal entry
type code value in the cargo record
for future processing"]:::main N_StoreInternalEntryTypeCodeValue_Node0 -- Yes --> N_StoreInternalEntryTypeCodeValue_Node0_action N_StoreInternalEntryTypeCodeValue_Node0_action --> E_StoreInternalEntryTypeCodeValue S_StoreInternalEntryTypeCodeValue --> N_StoreInternalEntryTypeCodeValue_Node0 N_StoreInternalEntryTypeCodeValue_Node0 -- No --> E_StoreInternalEntryTypeCodeValue
File: GCX016E.cbl
GIVEN: The converted entry type code has passed validation
WHEN: The system completes entry type code processing
THEN: Store the validated internal entry type code value in the cargo record for future processing
βœ“ Consolidated Acceptance Criteria
  • The system completes entry type code conversion processing → log the entry type code conversion details for audit trail 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_LogEntryTypeCodeConversion(["Start Step"]) E_LogEntryTypeCodeConversion(["End Step"]) N_LogEntryTypeCodeConversion_Node0{"The system completes entry type
code conversion processing"}:::decision N_LogEntryTypeCodeConversion_Node0_action["Log the entry type code conversion
details for audit trail and tracking
purposes"]:::main N_LogEntryTypeCodeConversion_Node0 -- Yes --> N_LogEntryTypeCodeConversion_Node0_action N_LogEntryTypeCodeConversion_Node0_action --> E_LogEntryTypeCodeConversion S_LogEntryTypeCodeConversion --> N_LogEntryTypeCodeConversion_Node0 N_LogEntryTypeCodeConversion_Node0 -- No --> E_LogEntryTypeCodeConversion
File: GCX016E.cbl
GIVEN: The entry type code has been successfully stored
WHEN: The system completes entry type code conversion processing
THEN:
  • Log the entry type code conversion details for audit trail
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system detects an invalid entry type code → generate an error message indicating invalid entry type code and continue with 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_GenerateErrorforInvalidEntryTypeCode(["Start Step"]) E_GenerateErrorforInvalidEntryTypeCode(["End Step"]) N_GenerateErrorforInvalidEntryTypeCode_Node0{"The system detects an invalid entry
type code"}:::decision N_GenerateErrorforInvalidEntryTypeCode_Node0_action["Generate an error message
indicating invalid entry type code
and continue with cargo processing"]:::exclusion N_GenerateErrorforInvalidEntryTypeCode_Node0 -- Yes -->|Alternative| N_GenerateErrorforInvalidEntryTypeCode_Node0_action N_GenerateErrorforInvalidEntryTypeCode_Node0_action --> E_GenerateErrorforInvalidEntryTypeCode S_GenerateErrorforInvalidEntryTypeCode --> N_GenerateErrorforInvalidEntryTypeCode_Node0 N_GenerateErrorforInvalidEntryTypeCode_Node0 -- No --> E_GenerateErrorforInvalidEntryTypeCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: The converted entry type code fails validation
WHEN: The system detects an invalid entry type code
THEN:
  • Generate an error message indicating invalid entry type code
  • Continue with cargo processing
βœ“ Consolidated Acceptance Criteria
  • The system requires Canadian location mapping → the Canadian border mapping table is accessed for lookup operations
  • The system needs to find the corresponding Canadian border port name → the Canadian border mapping table is accessed for port 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_AccessCanadianBorderMappingTable(["Start Step"]) E_AccessCanadianBorderMappingTable(["End Step"]) N_AccessCanadianBorderMappingTable_Node0{"The system requires Canadian
location mapping"}:::decision N_AccessCanadianBorderMappingTable_Node0_action["The Canadian border mapping table
is accessed for lookup operations"]:::main N_AccessCanadianBorderMappingTable_Node0 -- Yes --> N_AccessCanadianBorderMappingTable_Node0_action N_AccessCanadianBorderMappingTable_Node0_action --> E_AccessCanadianBorderMappingTable S_AccessCanadianBorderMappingTable --> N_AccessCanadianBorderMappingTable_Node0 N_AccessCanadianBorderMappingTable_Node1{"The system needs to find the
corresponding Canadian border port
name"}:::decision N_AccessCanadianBorderMappingTable_Node1_action["The Canadian border mapping table
is accessed for port code lookup"]:::main N_AccessCanadianBorderMappingTable_Node1 -- Yes --> N_AccessCanadianBorderMappingTable_Node1_action N_AccessCanadianBorderMappingTable_Node1_action --> E_AccessCanadianBorderMappingTable N_AccessCanadianBorderMappingTable_Node0 -- No --> N_AccessCanadianBorderMappingTable_Node1 N_AccessCanadianBorderMappingTable_Node1 -- No --> E_AccessCanadianBorderMappingTable
File: GCX016E.cbl
GIVEN: A US port code needs to be mapped to a Canadian border location
WHEN: The system requires Canadian location mapping
THEN: The Canadian border mapping table is accessed for lookup operations
File: GCX016E.cbl
GIVEN: A US port code has been extracted from cargo location data
WHEN: The system needs to find the corresponding Canadian border port name
THEN: The Canadian border mapping table is accessed for port code lookup
βœ“ Consolidated Acceptance Criteria
  • The system performs a lookup operation for the US port code → the system searches the mapping table to find a corresponding Canadian border 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_LookupUSPortCodeinMappingTable(["Start Step"]) E_LookupUSPortCodeinMappingTable(["End Step"]) N_LookupUSPortCodeinMappingTable_Node0{"The system performs a lookup
operation for the US port code"}:::decision N_LookupUSPortCodeinMappingTable_Node0_action["The system searches the mapping
table to find a corresponding
Canadian border location"]:::main N_LookupUSPortCodeinMappingTable_Node0 -- Yes --> N_LookupUSPortCodeinMappingTable_Node0_action N_LookupUSPortCodeinMappingTable_Node0_action --> E_LookupUSPortCodeinMappingTable S_LookupUSPortCodeinMappingTable --> N_LookupUSPortCodeinMappingTable_Node0 N_LookupUSPortCodeinMappingTable_Node0 -- No --> E_LookupUSPortCodeinMappingTable
File: GCX016E.cbl
GIVEN: A US port code is available and the Canadian border mapping table is accessible
WHEN: The system performs a lookup operation for the US port code
THEN: The system searches the mapping table to find a corresponding Canadian border location
βœ“ Consolidated Acceptance Criteria
  • If the lookup results → the system determines if a valid mapping exists for the 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_MappingFound(["Start Step"]) E_MappingFound(["End Step"]) N_MappingFound_Node0{"The system evaluates the lookup
results"}:::decision N_MappingFound_Node0_action["The system determines if a valid
mapping exists for the US port code"]:::main N_MappingFound_Node0 -- Yes --> N_MappingFound_Node0_action N_MappingFound_Node0_action --> E_MappingFound S_MappingFound --> N_MappingFound_Node0 N_MappingFound_Node0 -- No --> E_MappingFound
File: GCX016E.cbl
GIVEN: A US port code lookup has been performed in the Canadian border mapping table
WHEN: The system evaluates the lookup results
THEN: The system determines if a valid mapping exists for the US port code
βœ“ Consolidated Acceptance Criteria
  • The mapping is found during lookup → the system retrieves the corresponding Canadian border 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_RetrieveCanadianBorderLocationName(["Start Step"]) E_RetrieveCanadianBorderLocationName(["End Step"]) N_RetrieveCanadianBorderLocationName_Node0{"The mapping is found during lookup"}:::decision N_RetrieveCanadianBorderLocationName_Node0_action["The system retrieves the
corresponding Canadian border
location name"]:::main N_RetrieveCanadianBorderLocationName_Node0 -- Yes --> N_RetrieveCanadianBorderLocationName_Node0_action N_RetrieveCanadianBorderLocationName_Node0_action --> E_RetrieveCanadianBorderLocationName S_RetrieveCanadianBorderLocationName --> N_RetrieveCanadianBorderLocationName_Node0 N_RetrieveCanadianBorderLocationName_Node0 -- No --> E_RetrieveCanadianBorderLocationName
File: GCX016E.cbl
GIVEN: A valid mapping exists for the US port code in the Canadian border mapping table
WHEN: The mapping is found during lookup
THEN: The system retrieves the corresponding Canadian border location name
βœ“ Consolidated Acceptance Criteria
  • The location mapping is successful → the cargo record is updated with the Canadian border 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_UpdateCargoRecordwithCanadianLocation(["Start Step"]) E_UpdateCargoRecordwithCanadianLocation(["End Step"]) N_UpdateCargoRecordwithCanadianLocation_Node0{"The location mapping is successful"}:::decision N_UpdateCargoRecordwithCanadianLocation_Node0_action["The cargo record is updated with
the Canadian border location
information"]:::main N_UpdateCargoRecordwithCanadianLocation_Node0 -- Yes --> N_UpdateCargoRecordwithCanadianLocation_Node0_action N_UpdateCargoRecordwithCanadianLocation_Node0_action --> E_UpdateCargoRecordwithCanadianLocation S_UpdateCargoRecordwithCanadianLocation --> N_UpdateCargoRecordwithCanadianLocation_Node0 N_UpdateCargoRecordwithCanadianLocation_Node0 -- No --> E_UpdateCargoRecordwithCanadianLocation
File: GCX016E.cbl
GIVEN: A Canadian border location name has been retrieved from the mapping table
WHEN: The location mapping is successful
THEN: The cargo record is updated with the Canadian border location information
βœ“ Consolidated Acceptance Criteria
  • The location update is completed → a cross-border flag is set to indicate the cargo involves cross-border 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_SetCrossBorderFlag(["Start Step"]) E_SetCrossBorderFlag(["End Step"]) N_SetCrossBorderFlag_Node0{"The location update is completed"}:::decision N_SetCrossBorderFlag_Node0_action["A cross-border flag is set to
indicate the cargo involves
cross-border movement"]:::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: GCX016E.cbl
GIVEN: A cargo record has been updated with Canadian border location information
WHEN: The location update is completed
THEN: A cross-border flag is set to indicate the cargo involves cross-border movement
βœ“ Consolidated Acceptance Criteria
  • The mapping process completes successfully → the system logs the successful mapping operation 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_LogMappingSuccess(["Start Step"]) E_LogMappingSuccess(["End Step"]) N_LogMappingSuccess_Node0{"The mapping process completes
successfully"}:::decision N_LogMappingSuccess_Node0_action["The system logs the successful
mapping operation for audit purposes"]:::main N_LogMappingSuccess_Node0 -- Yes --> N_LogMappingSuccess_Node0_action N_LogMappingSuccess_Node0_action --> E_LogMappingSuccess S_LogMappingSuccess --> N_LogMappingSuccess_Node0 N_LogMappingSuccess_Node0 -- No --> E_LogMappingSuccess
File: GCX016E.cbl
GIVEN: A cross-border flag has been set for the cargo
WHEN: The mapping process completes successfully
THEN: The system logs the successful mapping operation for audit purposes
βœ“ Consolidated Acceptance Criteria
  • No valid mapping is found for the US port code → the system generates an error indicating the port code cannot be mapped
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateErrorforUnmappedPort(["Start Step"]) E_GenerateErrorforUnmappedPort(["End Step"]) N_GenerateErrorforUnmappedPort_Node0{"No valid mapping is found for the
US port code"}:::decision N_GenerateErrorforUnmappedPort_Node0_action["The system generates an error
indicating the port code cannot be
mapped"]:::main N_GenerateErrorforUnmappedPort_Node0 -- Yes --> N_GenerateErrorforUnmappedPort_Node0_action N_GenerateErrorforUnmappedPort_Node0_action --> E_GenerateErrorforUnmappedPort S_GenerateErrorforUnmappedPort --> N_GenerateErrorforUnmappedPort_Node0 N_GenerateErrorforUnmappedPort_Node0 -- No --> E_GenerateErrorforUnmappedPort
File: GCX016E.cbl
GIVEN: A US port code lookup in the Canadian border mapping table returns no results
WHEN: No valid mapping is found for the US port code
THEN: The system generates an error indicating the port code cannot be mapped
βœ“ Consolidated Acceptance Criteria
  • No specific mapping is available → the system uses a default Canadian location to 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_UseDefaultCanadianLocation(["Start Step"]) E_UseDefaultCanadianLocation(["End Step"]) N_UseDefaultCanadianLocation_Node0{"No specific mapping is available"}:::decision N_UseDefaultCanadianLocation_Node0_action["The system uses a default Canadian
location to continue processing"]:::main N_UseDefaultCanadianLocation_Node0 -- Yes --> N_UseDefaultCanadianLocation_Node0_action N_UseDefaultCanadianLocation_Node0_action --> E_UseDefaultCanadianLocation S_UseDefaultCanadianLocation --> N_UseDefaultCanadianLocation_Node0 N_UseDefaultCanadianLocation_Node0 -- No --> E_UseDefaultCanadianLocation
File: GCX016E.cbl
GIVEN: An error has been generated for an unmapped US port code
WHEN: No specific mapping is available
THEN: The system uses a default Canadian location to continue processing
βœ“ Consolidated Acceptance Criteria
  • The system formats the FDA reference number → the FDA reference number is formatted according to A1 disposition code 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_FormatFDAReferenceNumberforA1(["Start Step"]) E_FormatFDAReferenceNumberforA1(["End Step"]) N_FormatFDAReferenceNumberforA1_Node0{"The system formats the FDA
reference number"}:::decision N_FormatFDAReferenceNumberforA1_Node0_action["The FDA reference number is
formatted according to A1
disposition code requirements"]:::main N_FormatFDAReferenceNumberforA1_Node0 -- Yes --> N_FormatFDAReferenceNumberforA1_Node0_action N_FormatFDAReferenceNumberforA1_Node0_action --> E_FormatFDAReferenceNumberforA1 S_FormatFDAReferenceNumberforA1 --> N_FormatFDAReferenceNumberforA1_Node0 N_FormatFDAReferenceNumberforA1_Node0 -- No --> E_FormatFDAReferenceNumberforA1
File: GCX016E.cbl
GIVEN: An A1 disposition code is being processed with an FDA reference number
WHEN: The system formats the FDA reference number
THEN: The FDA reference number is formatted according to A1 disposition code requirements
βœ“ Consolidated Acceptance Criteria
  • The system formats the FDA reference number → the FDA reference number is formatted according to A3 disposition code 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_FormatFDAReferenceNumberforA3(["Start Step"]) E_FormatFDAReferenceNumberforA3(["End Step"]) N_FormatFDAReferenceNumberforA3_Node0{"The system formats the FDA
reference number"}:::decision N_FormatFDAReferenceNumberforA3_Node0_action["The FDA reference number is
formatted according to A3
disposition code requirements"]:::main N_FormatFDAReferenceNumberforA3_Node0 -- Yes --> N_FormatFDAReferenceNumberforA3_Node0_action N_FormatFDAReferenceNumberforA3_Node0_action --> E_FormatFDAReferenceNumberforA3 S_FormatFDAReferenceNumberforA3 --> N_FormatFDAReferenceNumberforA3_Node0 N_FormatFDAReferenceNumberforA3_Node0 -- No --> E_FormatFDAReferenceNumberforA3
File: GCX016E.cbl
GIVEN: An A3 disposition code is being processed with an FDA reference number
WHEN: The system formats the FDA reference number
THEN: The FDA reference number is formatted according to A3 disposition code requirements
βœ“ Consolidated Acceptance Criteria
  • The system adds the required prefix → the FDA reference number is prefixed with 'FDA PN'
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AddFDAPNPrefixforA1(["Start Step"]) E_AddFDAPNPrefixforA1(["End Step"]) N_AddFDAPNPrefixforA1_Node0{"The system adds the required prefix"}:::decision N_AddFDAPNPrefixforA1_Node0_action["The FDA reference number is
prefixed with FDA PN"]:::main N_AddFDAPNPrefixforA1_Node0 -- Yes --> N_AddFDAPNPrefixforA1_Node0_action N_AddFDAPNPrefixforA1_Node0_action --> E_AddFDAPNPrefixforA1 S_AddFDAPNPrefixforA1 --> N_AddFDAPNPrefixforA1_Node0 N_AddFDAPNPrefixforA1_Node0 -- No --> E_AddFDAPNPrefixforA1
File: GCX016E.cbl
GIVEN: An A1 disposition code is being processed with an FDA reference number
WHEN: The system adds the required prefix
THEN: The FDA reference number is prefixed with 'FDA PN'
βœ“ Consolidated Acceptance Criteria
  • The system adds the required prefix → the FDA reference number is prefixed with 'FDA'
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AddFDAPrefixforA3(["Start Step"]) E_AddFDAPrefixforA3(["End Step"]) N_AddFDAPrefixforA3_Node0{"The system adds the required prefix"}:::decision N_AddFDAPrefixforA3_Node0_action["The FDA reference number is
prefixed with FDA"]:::main N_AddFDAPrefixforA3_Node0 -- Yes --> N_AddFDAPrefixforA3_Node0_action N_AddFDAPrefixforA3_Node0_action --> E_AddFDAPrefixforA3 S_AddFDAPrefixforA3 --> N_AddFDAPrefixforA3_Node0 N_AddFDAPrefixforA3_Node0 -- No --> E_AddFDAPrefixforA3
File: GCX016E.cbl
GIVEN: An A3 disposition code is being processed with an FDA reference number
WHEN: The system adds the required prefix
THEN: The FDA reference number is prefixed with 'FDA'
βœ“ Consolidated Acceptance Criteria
  • The system checks for existing N9 reference segments → the system determines if an N9 segment exists and routes processing accordingly
  • The system checks for N9 segment existence → the system creates a new N9 segment if none exists, or updates the existing N9 segment if one 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_N9SegmentExists(["Start Step"]) E_N9SegmentExists(["End Step"]) N_N9SegmentExists_Node0{"The system checks for existing N9
reference segments"}:::decision N_N9SegmentExists_Node0_action["The system determines if an N9
segment exists and routes processing
accordingly"]:::main N_N9SegmentExists_Node0 -- Yes --> N_N9SegmentExists_Node0_action N_N9SegmentExists_Node0_action --> E_N9SegmentExists S_N9SegmentExists --> N_N9SegmentExists_Node0 N_N9SegmentExists_Node1{"The system checks for N9 segment
existence"}:::decision N_N9SegmentExists_Node1_action["The system creates a new N9 segment
if none exists, or updates the
existing N9 segment if one is found"]:::main N_N9SegmentExists_Node1 -- Yes --> N_N9SegmentExists_Node1_action N_N9SegmentExists_Node1_action --> E_N9SegmentExists N_N9SegmentExists_Node0 -- No --> N_N9SegmentExists_Node1 N_N9SegmentExists_Node1 -- No --> E_N9SegmentExists
File: GCX016E.cbl
GIVEN: FDA reference number processing is required for a cargo
WHEN: The system checks for existing N9 reference segments
THEN:
  • The system determines if an n9 segment exists
  • Routes processing accordingly
File: GCX016E.cbl
GIVEN: The system has retrieved existing N9 reference data from the database
WHEN: The system checks for N9 segment existence
THEN: The system creates a new N9 segment if none exists, or updates the existing N9 segment if one is found
βœ“ Consolidated Acceptance Criteria
  • FDA reference number processing is required → a new N9 reference segment is created to store the FDA 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_CreateNewN9ReferenceSegment(["Start Step"]) E_CreateNewN9ReferenceSegment(["End Step"]) N_CreateNewN9ReferenceSegment_Node0{"FDA reference number processing is
required"}:::decision N_CreateNewN9ReferenceSegment_Node0_action["A new N9 reference segment is
created to store the FDA reference
number"]:::main N_CreateNewN9ReferenceSegment_Node0 -- Yes --> N_CreateNewN9ReferenceSegment_Node0_action N_CreateNewN9ReferenceSegment_Node0_action --> E_CreateNewN9ReferenceSegment S_CreateNewN9ReferenceSegment --> N_CreateNewN9ReferenceSegment_Node0 N_CreateNewN9ReferenceSegment_Node0 -- No --> E_CreateNewN9ReferenceSegment
File: GCX016E.cbl
GIVEN: No existing N9 reference segment exists for the cargo
WHEN: FDA reference number processing is required
THEN: A new N9 reference segment is created to store the FDA reference number
βœ“ Consolidated Acceptance Criteria
  • FDA reference number processing is required → the existing N9 reference segment is updated with the FDA 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_UpdateExistingN9ReferenceSegment(["Start Step"]) E_UpdateExistingN9ReferenceSegment(["End Step"]) N_UpdateExistingN9ReferenceSegment_Node0{"FDA reference number processing is
required"}:::decision N_UpdateExistingN9ReferenceSegment_Node0_action["The existing N9 reference segment
is updated with the FDA reference
number"]:::main N_UpdateExistingN9ReferenceSegment_Node0 -- Yes --> N_UpdateExistingN9ReferenceSegment_Node0_action N_UpdateExistingN9ReferenceSegment_Node0_action --> E_UpdateExistingN9ReferenceSegment S_UpdateExistingN9ReferenceSegment --> N_UpdateExistingN9ReferenceSegment_Node0 N_UpdateExistingN9ReferenceSegment_Node0 -- No --> E_UpdateExistingN9ReferenceSegment
File: GCX016E.cbl
GIVEN: An existing N9 reference segment exists for the cargo
WHEN: FDA reference number processing is required
THEN: The existing N9 reference segment is updated with the FDA reference number
βœ“ Consolidated Acceptance Criteria
  • The system validates the reference number format → the FDA reference number format is verified to meet business requirements
  • The system validates the FDA reference number format → the FDA reference number format should be verified as compliant with regulatory 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_ValidateFDAReferenceNumberFormat(["Start Step"]) E_ValidateFDAReferenceNumberFormat(["End Step"]) N_ValidateFDAReferenceNumberFormat_Node0{"The system validates the reference
number format"}:::decision N_ValidateFDAReferenceNumberFormat_Node0_action["The FDA reference number format is
verified to meet business
requirements"]:::main N_ValidateFDAReferenceNumberFormat_Node0 -- Yes --> N_ValidateFDAReferenceNumberFormat_Node0_action N_ValidateFDAReferenceNumberFormat_Node0_action --> E_ValidateFDAReferenceNumberFormat S_ValidateFDAReferenceNumberFormat --> N_ValidateFDAReferenceNumberFormat_Node0 N_ValidateFDAReferenceNumberFormat_Node1{"The system validates the FDA
reference number format"}:::decision N_ValidateFDAReferenceNumberFormat_Node1_action["The FDA reference number format
should be verified as compliant with
regulatory standards"]:::main N_ValidateFDAReferenceNumberFormat_Node1 -- Yes --> N_ValidateFDAReferenceNumberFormat_Node1_action N_ValidateFDAReferenceNumberFormat_Node1_action --> E_ValidateFDAReferenceNumberFormat N_ValidateFDAReferenceNumberFormat_Node0 -- No --> N_ValidateFDAReferenceNumberFormat_Node1 N_ValidateFDAReferenceNumberFormat_Node1 -- No --> E_ValidateFDAReferenceNumberFormat
File: GCX016E.cbl
GIVEN: An FDA reference number is being processed for A1 or A3 disposition codes
WHEN: The system validates the reference number format
THEN: The FDA reference number format is verified to meet business requirements
File: GCX016E.cbl
GIVEN: An FDA reference number has been formatted with appropriate prefix
WHEN: The system validates the FDA reference number format
THEN: The FDA reference number format should be verified as compliant with regulatory standards
βœ“ Consolidated Acceptance Criteria
  • The system processes the segment replacement → the N9 reference segment is replaced with the updated 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_ReplaceN9ReferenceSegment(["Start Step"]) E_ReplaceN9ReferenceSegment(["End Step"]) N_ReplaceN9ReferenceSegment_Node0{"The system processes the segment
replacement"}:::decision N_ReplaceN9ReferenceSegment_Node0_action["The N9 reference segment is
replaced with the updated FDA
reference information"]:::main N_ReplaceN9ReferenceSegment_Node0 -- Yes --> N_ReplaceN9ReferenceSegment_Node0_action N_ReplaceN9ReferenceSegment_Node0_action --> E_ReplaceN9ReferenceSegment S_ReplaceN9ReferenceSegment --> N_ReplaceN9ReferenceSegment_Node0 N_ReplaceN9ReferenceSegment_Node0 -- No --> E_ReplaceN9ReferenceSegment
File: GCX016E.cbl
GIVEN: An existing N9 reference segment needs to be updated with FDA reference number
WHEN: The system processes the segment replacement
THEN: The N9 reference segment is replaced with the updated FDA reference information
βœ“ Consolidated Acceptance Criteria
  • The system processes the segment insertion → the N9 reference segment is inserted with the FDA reference information 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_InsertN9ReferenceSegment(["Start Step"]) E_InsertN9ReferenceSegment(["End Step"]) N_InsertN9ReferenceSegment_Node0{"The system processes the segment
insertion"}:::decision N_InsertN9ReferenceSegment_Node0_action["The N9 reference segment is
inserted with the FDA reference
information into the cargo record"]:::main N_InsertN9ReferenceSegment_Node0 -- Yes --> N_InsertN9ReferenceSegment_Node0_action N_InsertN9ReferenceSegment_Node0_action --> E_InsertN9ReferenceSegment S_InsertN9ReferenceSegment --> N_InsertN9ReferenceSegment_Node0 N_InsertN9ReferenceSegment_Node0 -- No --> E_InsertN9ReferenceSegment
File: GCX016E.cbl
GIVEN: A new N9 reference segment needs to be created with FDA reference number
WHEN: The system processes the segment insertion
THEN: The N9 reference segment is inserted with the FDA reference information into the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system prepares follower manifest data → all required manifest data elements including cargo information, quantities, and entry numbers are prepared for message 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_PrepareFollowerManifestData(["Start Step"]) E_PrepareFollowerManifestData(["End Step"]) N_PrepareFollowerManifestData_Node0{"The system prepares follower
manifest data"}:::decision N_PrepareFollowerManifestData_Node0_action["All required manifest data elements
including cargo information,
quantities, and entry numbers are
prepared for message creation"]:::main N_PrepareFollowerManifestData_Node0 -- Yes --> N_PrepareFollowerManifestData_Node0_action N_PrepareFollowerManifestData_Node0_action --> E_PrepareFollowerManifestData S_PrepareFollowerManifestData --> N_PrepareFollowerManifestData_Node0 N_PrepareFollowerManifestData_Node0 -- No --> E_PrepareFollowerManifestData
File: GCX016E.cbl
GIVEN: A follower manifest has been identified for processing
WHEN: The system prepares follower manifest data
THEN: All required manifest data elements including cargo information, quantities, and entry numbers are prepared for message creation
βœ“ Consolidated Acceptance Criteria
  • The system creates a special action message → a message with special action code 350 is created and general information is copied for the follower 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_Create350SpecialActionMessage(["Start Step"]) E_Create350SpecialActionMessage(["End Step"]) N_Create350SpecialActionMessage_Node0{"The system creates a special action
message"}:::decision N_Create350SpecialActionMessage_Node0_action["A message with special action code
350 is created and general
information is copied for the
follower manifest"]:::main N_Create350SpecialActionMessage_Node0 -- Yes --> N_Create350SpecialActionMessage_Node0_action N_Create350SpecialActionMessage_Node0_action --> E_Create350SpecialActionMessage S_Create350SpecialActionMessage --> N_Create350SpecialActionMessage_Node0 N_Create350SpecialActionMessage_Node0 -- No --> E_Create350SpecialActionMessage
File: GCX016E.cbl
GIVEN: A follower manifest requires processing and the message type is GCW016
WHEN: The system creates a special action message
THEN:
  • A message with special action code 350 is created
  • General information is copied for the follower manifest
βœ“ Consolidated Acceptance Criteria
  • The system includes cargo quantities in the message → all relevant cargo quantities are included in the follower manifest 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_IncludeCargoQuantitiesinMessage(["Start Step"]) E_IncludeCargoQuantitiesinMessage(["End Step"]) N_IncludeCargoQuantitiesinMessage_Node0{"The system includes cargo
quantities in the message"}:::decision N_IncludeCargoQuantitiesinMessage_Node0_action["All relevant cargo quantities are
included in the follower manifest
message"]:::main N_IncludeCargoQuantitiesinMessage_Node0 -- Yes --> N_IncludeCargoQuantitiesinMessage_Node0_action N_IncludeCargoQuantitiesinMessage_Node0_action --> E_IncludeCargoQuantitiesinMessage S_IncludeCargoQuantitiesinMessage --> N_IncludeCargoQuantitiesinMessage_Node0 N_IncludeCargoQuantitiesinMessage_Node0 -- No --> E_IncludeCargoQuantitiesinMessage
File: GCX016E.cbl
GIVEN: A follower manifest message is being prepared and cargo quantities are available
WHEN: The system includes cargo quantities in the message
THEN: All relevant cargo quantities are included in the follower manifest message
βœ“ Consolidated Acceptance Criteria
  • The system links the follower manifest to the lead manifest → the relationship between the follower and lead manifest is established for comprehensive 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_LinkFollowerManifesttoLeadManifest(["Start Step"]) E_LinkFollowerManifesttoLeadManifest(["End Step"]) N_LinkFollowerManifesttoLeadManifest_Node0{"The system links the follower
manifest to the lead manifest"}:::decision N_LinkFollowerManifesttoLeadManifest_Node0_action["The relationship between the
follower and lead manifest is
established for comprehensive
tracking"]:::main N_LinkFollowerManifesttoLeadManifest_Node0 -- Yes --> N_LinkFollowerManifesttoLeadManifest_Node0_action N_LinkFollowerManifesttoLeadManifest_Node0_action --> E_LinkFollowerManifesttoLeadManifest S_LinkFollowerManifesttoLeadManifest --> N_LinkFollowerManifesttoLeadManifest_Node0 N_LinkFollowerManifesttoLeadManifest_Node0 -- No --> E_LinkFollowerManifesttoLeadManifest
File: GCX016E.cbl
GIVEN: A follower manifest and its corresponding lead manifest are identified
WHEN: The system links the follower manifest to the lead manifest
THEN:
  • The relationship between the follower
  • Lead manifest is established for comprehensive tracking
βœ“ Consolidated Acceptance Criteria
  • The system logs the processing action → the follower manifest processing action is recorded in the system log 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_LogFollowerManifestProcessingAction(["Start Step"]) E_LogFollowerManifestProcessingAction(["End Step"]) N_LogFollowerManifestProcessingAction_Node0{"The system logs the processing
action"}:::decision N_LogFollowerManifestProcessingAction_Node0_action["The follower manifest processing
action is recorded in the system log
for audit and monitoring purposes"]:::main N_LogFollowerManifestProcessingAction_Node0 -- Yes --> N_LogFollowerManifestProcessingAction_Node0_action N_LogFollowerManifestProcessingAction_Node0_action --> E_LogFollowerManifestProcessingAction S_LogFollowerManifestProcessingAction --> N_LogFollowerManifestProcessingAction_Node0 N_LogFollowerManifestProcessingAction_Node0 -- No --> E_LogFollowerManifestProcessingAction
File: GCX016E.cbl
GIVEN: A follower manifest processing action has been completed
WHEN: The system logs the processing action
THEN:
  • The follower manifest processing action is recorded in the system log for audit
  • Monitoring purposes
βœ“ Consolidated Acceptance Criteria
  • The system receives the search parameters → the bond number must be present and valid as the primary 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_ReceiveBondNumberasSearchKey(["Start Step"]) E_ReceiveBondNumberasSearchKey(["End Step"]) N_ReceiveBondNumberasSearchKey_Node0{"The system receives the search
parameters"}:::decision N_ReceiveBondNumberasSearchKey_Node0_action["The bond number must be present and
valid as the primary search key"]:::main N_ReceiveBondNumberasSearchKey_Node0 -- Yes --> N_ReceiveBondNumberasSearchKey_Node0_action N_ReceiveBondNumberasSearchKey_Node0_action --> E_ReceiveBondNumberasSearchKey S_ReceiveBondNumberasSearchKey --> N_ReceiveBondNumberasSearchKey_Node0 N_ReceiveBondNumberasSearchKey_Node0 -- No --> E_ReceiveBondNumberasSearchKey
File: GCX016E.cbl
GIVEN: A cargo lookup request is initiated
WHEN: The system receives the search parameters
THEN:
  • The bond number must be present
  • Valid as the primary search key
βœ“ Consolidated Acceptance Criteria
  • The system needs to access cargo database records → the GCCUSIO2 database interface program must be invoked with the bond number parameter
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CallGCCUSIO2DatabaseInterface(["Start Step"]) E_CallGCCUSIO2DatabaseInterface(["End Step"]) N_CallGCCUSIO2DatabaseInterface_Node0{"The system needs to access cargo
database records"}:::decision N_CallGCCUSIO2DatabaseInterface_Node0_action["The GCCUSIO2 database interface
program must be invoked with the
bond number parameter"]:::main N_CallGCCUSIO2DatabaseInterface_Node0 -- Yes --> N_CallGCCUSIO2DatabaseInterface_Node0_action N_CallGCCUSIO2DatabaseInterface_Node0_action --> E_CallGCCUSIO2DatabaseInterface S_CallGCCUSIO2DatabaseInterface --> N_CallGCCUSIO2DatabaseInterface_Node0 N_CallGCCUSIO2DatabaseInterface_Node0 -- No --> E_CallGCCUSIO2DatabaseInterface
File: GCX016E.cbl
GIVEN: A valid bond number is provided for search
WHEN: The system needs to access cargo database records
THEN: The GCCUSIO2 database interface program must be invoked with the bond number parameter
βœ“ Consolidated Acceptance Criteria
  • The system searches the GCSUSRT table → all cargo root segments with matching bond numbers must be identified 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_SearchGCSUSRTUSCargoRootSegments(["Start Step"]) E_SearchGCSUSRTUSCargoRootSegments(["End Step"]) N_SearchGCSUSRTUSCargoRootSegments_Node0{"The system searches the GCSUSRT
table"}:::decision N_SearchGCSUSRTUSCargoRootSegments_Node0_action["All cargo root segments with
matching bond numbers must be
identified and retrieved"]:::main N_SearchGCSUSRTUSCargoRootSegments_Node0 -- Yes --> N_SearchGCSUSRTUSCargoRootSegments_Node0_action N_SearchGCSUSRTUSCargoRootSegments_Node0_action --> E_SearchGCSUSRTUSCargoRootSegments S_SearchGCSUSRTUSCargoRootSegments --> N_SearchGCSUSRTUSCargoRootSegments_Node0 N_SearchGCSUSRTUSCargoRootSegments_Node0 -- No --> E_SearchGCSUSRTUSCargoRootSegments
File: GCX016E.cbl
GIVEN: The database interface is active and bond number is provided
WHEN: The system searches the GCSUSRT table
THEN:
  • All cargo root segments with matching bond numbers must be identified
  • Retrieved
βœ“ Consolidated Acceptance Criteria
  • The system prepares for additional record searches → the bond index position must be set to enable sequential access to remaining records with the same 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_SetBondIndexPosition(["Start Step"]) E_SetBondIndexPosition(["End Step"]) N_SetBondIndexPosition_Node0{"The system prepares for additional
record searches"}:::decision N_SetBondIndexPosition_Node0_action["The bond index position must be set
to enable sequential access to
remaining records with the same bond
number"]:::main N_SetBondIndexPosition_Node0 -- Yes --> N_SetBondIndexPosition_Node0_action N_SetBondIndexPosition_Node0_action --> E_SetBondIndexPosition S_SetBondIndexPosition --> N_SetBondIndexPosition_Node0 N_SetBondIndexPosition_Node0 -- No --> E_SetBondIndexPosition
File: GCX016E.cbl
GIVEN: The first cargo record has been successfully retrieved
WHEN: The system prepares for additional record searches
THEN: The bond index position must be set to enable sequential access to remaining records with the same bond number
βœ“ Consolidated Acceptance Criteria
  • The system searches for additional records → all remaining cargo records with the same bond number must be identified in 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_SearchforSubsequentRecords(["Start Step"]) E_SearchforSubsequentRecords(["End Step"]) N_SearchforSubsequentRecords_Node0{"The system searches for additional
records"}:::decision N_SearchforSubsequentRecords_Node0_action["All remaining cargo records with
the same bond number must be
identified in sequential order"]:::main N_SearchforSubsequentRecords_Node0 -- Yes --> N_SearchforSubsequentRecords_Node0_action N_SearchforSubsequentRecords_Node0_action --> E_SearchforSubsequentRecords S_SearchforSubsequentRecords --> N_SearchforSubsequentRecords_Node0 N_SearchforSubsequentRecords_Node0 -- No --> E_SearchforSubsequentRecords
File: GCX016E.cbl
GIVEN: The first cargo record has been processed and bond index position is set
WHEN: The system searches for additional records
THEN: All remaining cargo records with the same bond number must be identified in sequential order
βœ“ Consolidated Acceptance Criteria
  • The system needs to check for additional records → the search loop must continue to evaluate remaining cargo records with the same 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_ContinueSearchLoop(["Start Step"]) E_ContinueSearchLoop(["End Step"]) N_ContinueSearchLoop_Node0{"The system needs to check for
additional records"}:::decision N_ContinueSearchLoop_Node0_action["The search loop must continue to
evaluate remaining cargo records
with the same bond number"]:::main N_ContinueSearchLoop_Node0 -- Yes --> N_ContinueSearchLoop_Node0_action N_ContinueSearchLoop_Node0_action --> E_ContinueSearchLoop S_ContinueSearchLoop --> N_ContinueSearchLoop_Node0 N_ContinueSearchLoop_Node0 -- No --> E_ContinueSearchLoop
File: GCX016E.cbl
GIVEN: A cargo record has been processed (either included or excluded)
WHEN: The system needs to check for additional records
THEN: The search loop must continue to evaluate remaining cargo records with the same bond number
βœ“ Consolidated Acceptance Criteria
  • No more records exist with the same bond number → the bond lookup process must be completed and the system must prepare to return the cargo record 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_CompleteBondLookup(["Start Step"]) E_CompleteBondLookup(["End Step"]) N_CompleteBondLookup_Node0{"No more records exist with the same
bond number"}:::decision N_CompleteBondLookup_Node0_action["The bond lookup process must be
completed and the system must
prepare to return the cargo record
set"]:::main N_CompleteBondLookup_Node0 -- Yes --> N_CompleteBondLookup_Node0_action N_CompleteBondLookup_Node0_action --> E_CompleteBondLookup S_CompleteBondLookup --> N_CompleteBondLookup_Node0 N_CompleteBondLookup_Node0 -- No --> E_CompleteBondLookup
File: GCX016E.cbl
GIVEN: All cargo records with the specified bond number have been evaluated
WHEN: No more records exist with the same bond number
THEN:
  • The bond lookup process must be completed
  • The system must prepare to return the cargo record set
βœ“ Consolidated Acceptance Criteria
  • The system has identified all valid cargo records for the bond number → the complete set of cargo records must be returned to the calling process for further 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_ReturnCargoRecordSet(["Start Step"]) E_ReturnCargoRecordSet(["End Step"]) N_ReturnCargoRecordSet_Node0{"The system has identified all valid
cargo records for the bond number"}:::decision N_ReturnCargoRecordSet_Node0_action["The complete set of cargo records
must be returned to the calling
process for further business
operations"]:::main N_ReturnCargoRecordSet_Node0 -- Yes --> N_ReturnCargoRecordSet_Node0_action N_ReturnCargoRecordSet_Node0_action --> E_ReturnCargoRecordSet S_ReturnCargoRecordSet --> N_ReturnCargoRecordSet_Node0 N_ReturnCargoRecordSet_Node0 -- No --> E_ReturnCargoRecordSet
File: GCX016E.cbl
GIVEN: The bond lookup process has been completed
WHEN: The system has identified all valid cargo records for the bond number
THEN: The complete set of cargo records must be returned to the calling process for further business operations
βœ“ Consolidated Acceptance Criteria
  • The system encounters a database access error or invalid search condition → the error details must be logged and the system must prepare to return a 'No Records 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_LogBondLookupError(["Start Step"]) E_LogBondLookupError(["End Step"]) N_LogBondLookupError_Node0{"The system encounters a database
access error or invalid search
condition"}:::decision N_LogBondLookupError_Node0_action["The error details must be logged
and the system must prepare to
return a No Records Found status"]:::exclusion N_LogBondLookupError_Node0 -- Yes -->|Alternative| N_LogBondLookupError_Node0_action N_LogBondLookupError_Node0_action --> E_LogBondLookupError S_LogBondLookupError --> N_LogBondLookupError_Node0 N_LogBondLookupError_Node0 -- No --> E_LogBondLookupError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An error occurs during the bond lookup process
WHEN: The system encounters a database access error or invalid search condition
THEN:
  • The error details must be logged
  • The system must prepare to return a 'no records found' status
βœ“ Consolidated Acceptance Criteria
  • The system completes the lookup process → a 'No Records Found' status must be returned to indicate that no valid cargo records are available for processing
  • No cargo records are found for the specified bond → return 'No Records Found' status to indicate that no cargo exists for 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_ReturnNoRecordsFound(["Start Step"]) E_ReturnNoRecordsFound(["End Step"]) N_ReturnNoRecordsFound_Node0{"The system completes the lookup
process"}:::decision N_ReturnNoRecordsFound_Node0_action["A No Records Found status must be
returned to indicate that no valid
cargo records are available for
processing"]:::main N_ReturnNoRecordsFound_Node0 -- Yes --> N_ReturnNoRecordsFound_Node0_action N_ReturnNoRecordsFound_Node0_action --> E_ReturnNoRecordsFound S_ReturnNoRecordsFound --> N_ReturnNoRecordsFound_Node0 N_ReturnNoRecordsFound_Node1{"No cargo records are found for the
specified bond"}:::decision N_ReturnNoRecordsFound_Node1_action["Return No Records Found status to
indicate that no cargo exists for
the bond number"]:::main N_ReturnNoRecordsFound_Node1 -- Yes --> N_ReturnNoRecordsFound_Node1_action N_ReturnNoRecordsFound_Node1_action --> E_ReturnNoRecordsFound N_ReturnNoRecordsFound_Node0 -- No --> N_ReturnNoRecordsFound_Node1 N_ReturnNoRecordsFound_Node1 -- No --> E_ReturnNoRecordsFound
File: GCX016E.cbl
GIVEN: No cargo records exist for the bond number or an error has occurred
WHEN: The system completes the lookup process
THEN: A 'No Records Found' status must be returned to indicate that no valid cargo records are available for processing
File: GCX016E.cbl
GIVEN: A bond number search has been performed
WHEN: No cargo records are found for the specified bond
THEN: Return 'No Records Found' status to indicate that no cargo exists for the bond number
βœ“ Consolidated Acceptance Criteria
  • The system processes the message to extract car ID → the car ID is extracted and made available 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_ExtractCarIDfromInputMessage(["Start Step"]) E_ExtractCarIDfromInputMessage(["End Step"]) N_ExtractCarIDfromInputMessage_Node0{"The system processes the message to
extract car ID"}:::decision N_ExtractCarIDfromInputMessage_Node0_action["The car ID is extracted and made
available for database search
operations"]:::main N_ExtractCarIDfromInputMessage_Node0 -- Yes --> N_ExtractCarIDfromInputMessage_Node0_action N_ExtractCarIDfromInputMessage_Node0_action --> E_ExtractCarIDfromInputMessage S_ExtractCarIDfromInputMessage --> N_ExtractCarIDfromInputMessage_Node0 N_ExtractCarIDfromInputMessage_Node0 -- No --> E_ExtractCarIDfromInputMessage
File: GCX016E.cbl
GIVEN: An input message containing car identification information is received
WHEN: The system processes the message to extract car ID
THEN:
  • The car id is extracted
  • Made available for database search operations
βœ“ Consolidated Acceptance Criteria
  • The system processes the message to extract waybill number → the waybill number is extracted and prepared for use in database search key construction
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExtractWaybillNumberfromInputMessage(["Start Step"]) E_ExtractWaybillNumberfromInputMessage(["End Step"]) N_ExtractWaybillNumberfromInputMessage_Node0{"The system processes the message to
extract waybill number"}:::decision N_ExtractWaybillNumberfromInputMessage_Node0_action["The waybill number is extracted and
prepared for use in database search
key construction"]:::main N_ExtractWaybillNumberfromInputMessage_Node0 -- Yes --> N_ExtractWaybillNumberfromInputMessage_Node0_action N_ExtractWaybillNumberfromInputMessage_Node0_action --> E_ExtractWaybillNumberfromInputMessage S_ExtractWaybillNumberfromInputMessage --> N_ExtractWaybillNumberfromInputMessage_Node0 N_ExtractWaybillNumberfromInputMessage_Node0 -- No --> E_ExtractWaybillNumberfromInputMessage
File: GCX016E.cbl
GIVEN: An input message containing waybill number information is received
WHEN: The system processes the message to extract waybill number
THEN:
  • The waybill number is extracted
  • Prepared for use in database search key construction
βœ“ Consolidated Acceptance Criteria
  • The system formats the car ID for database compatibility → the car ID is properly formatted and ready for use in 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_FormatCarIDforDatabaseSearch(["Start Step"]) E_FormatCarIDforDatabaseSearch(["End Step"]) N_FormatCarIDforDatabaseSearch_Node0{"The system formats the car ID for
database compatibility"}:::decision N_FormatCarIDforDatabaseSearch_Node0_action["The car ID is properly formatted
and ready for use in database search
operations"]:::main N_FormatCarIDforDatabaseSearch_Node0 -- Yes --> N_FormatCarIDforDatabaseSearch_Node0_action N_FormatCarIDforDatabaseSearch_Node0_action --> E_FormatCarIDforDatabaseSearch S_FormatCarIDforDatabaseSearch --> N_FormatCarIDforDatabaseSearch_Node0 N_FormatCarIDforDatabaseSearch_Node0 -- No --> E_FormatCarIDforDatabaseSearch
File: GCX016E.cbl
GIVEN: A raw car ID has been extracted from the input message
WHEN: The system formats the car ID for database compatibility
THEN:
  • The car id is properly formatted
  • Ready for use in database search operations
βœ“ Consolidated Acceptance Criteria
  • The system constructs the combined search key → a composite car/waybill search key is created for database query 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_ConstructCarWaybillSearchKey(["Start Step"]) E_ConstructCarWaybillSearchKey(["End Step"]) N_ConstructCarWaybillSearchKey_Node0{"The system constructs the combined
search key"}:::decision N_ConstructCarWaybillSearchKey_Node0_action["A composite carwaybill search key
is created for database query
operations"]:::main N_ConstructCarWaybillSearchKey_Node0 -- Yes --> N_ConstructCarWaybillSearchKey_Node0_action N_ConstructCarWaybillSearchKey_Node0_action --> E_ConstructCarWaybillSearchKey S_ConstructCarWaybillSearchKey --> N_ConstructCarWaybillSearchKey_Node0 N_ConstructCarWaybillSearchKey_Node0 -- No --> E_ConstructCarWaybillSearchKey
File: GCX016E.cbl
GIVEN: A formatted car ID and extracted waybill number are available
WHEN: The system constructs the combined search key
THEN: A composite car/waybill search key is created for database query operations
βœ“ Consolidated Acceptance Criteria
  • The system accesses the GCSUSRT database → database connection is established and ready for cargo record 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_AccessGCSUSRTDatabase(["Start Step"]) E_AccessGCSUSRTDatabase(["End Step"]) N_AccessGCSUSRTDatabase_Node0{"The system accesses the GCSUSRT
database"}:::decision N_AccessGCSUSRTDatabase_Node0_action["Database connection is established
and ready for cargo record search
operations"]:::main N_AccessGCSUSRTDatabase_Node0 -- Yes --> N_AccessGCSUSRTDatabase_Node0_action N_AccessGCSUSRTDatabase_Node0_action --> E_AccessGCSUSRTDatabase S_AccessGCSUSRTDatabase --> N_AccessGCSUSRTDatabase_Node0 N_AccessGCSUSRTDatabase_Node0 -- No --> E_AccessGCSUSRTDatabase
File: GCX016E.cbl
GIVEN: A car/waybill search key has been constructed
WHEN: The system accesses the GCSUSRT database
THEN:
  • Database connection is established
  • Ready for cargo record search operations
βœ“ Consolidated Acceptance Criteria
  • The system searches for the first matching cargo record → the system determines whether a matching cargo record exists 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_FirstRecordFound(["Start Step"]) E_FirstRecordFound(["End Step"]) N_FirstRecordFound_Node0{"The system searches for the first
matching cargo record"}:::decision N_FirstRecordFound_Node0_action["The system determines whether a
matching cargo record exists or not"]:::main N_FirstRecordFound_Node0 -- Yes --> N_FirstRecordFound_Node0_action N_FirstRecordFound_Node0_action --> E_FirstRecordFound S_FirstRecordFound --> N_FirstRecordFound_Node0 N_FirstRecordFound_Node0 -- No --> E_FirstRecordFound
File: GCX016E.cbl
GIVEN: The GCSUSRT database has been accessed with a car/waybill search key
WHEN: The system searches for the first matching cargo record
THEN: The system determines whether a matching cargo record exists or not
βœ“ Consolidated Acceptance Criteria
  • The system updates the record found status → the record found flag is set to indicate successful cargo record 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_SetRecordFoundFlag(["Start Step"]) E_SetRecordFoundFlag(["End Step"]) N_SetRecordFoundFlag_Node0{"The system updates the record found
status"}:::decision N_SetRecordFoundFlag_Node0_action["The record found flag is set to
indicate successful cargo record
retrieval"]:::main N_SetRecordFoundFlag_Node0 -- Yes --> N_SetRecordFoundFlag_Node0_action N_SetRecordFoundFlag_Node0_action --> E_SetRecordFoundFlag S_SetRecordFoundFlag --> N_SetRecordFoundFlag_Node0 N_SetRecordFoundFlag_Node0 -- No --> E_SetRecordFoundFlag
File: GCX016E.cbl
GIVEN: The first cargo record has been successfully retrieved
WHEN: The system updates the record found status
THEN: The record found flag is set to indicate successful cargo record retrieval
βœ“ Consolidated Acceptance Criteria
  • The database search continues for more records with the same key → the system determines if additional matching records are available for 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_MoreRecordswithSameKey(["Start Step"]) E_MoreRecordswithSameKey(["End Step"]) N_MoreRecordswithSameKey_Node0{"The database search continues for
more records with the same key"}:::decision N_MoreRecordswithSameKey_Node0_action["The system determines if additional
matching records are available for
retrieval"]:::main N_MoreRecordswithSameKey_Node0 -- Yes --> N_MoreRecordswithSameKey_Node0_action N_MoreRecordswithSameKey_Node0_action --> E_MoreRecordswithSameKey S_MoreRecordswithSameKey --> N_MoreRecordswithSameKey_Node0 N_MoreRecordswithSameKey_Node0 -- No --> E_MoreRecordswithSameKey
File: GCX016E.cbl
GIVEN: The system is checking for additional cargo records
WHEN: The database search continues for more records with the same key
THEN: The system determines if additional matching records are available for retrieval
βœ“ Consolidated Acceptance Criteria
  • The system adds the record to the cargo record collection → the cargo record is included in the list of 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_AddtoCargoRecordList(["Start Step"]) E_AddtoCargoRecordList(["End Step"]) N_AddtoCargoRecordList_Node0{"The system adds the record to the
cargo record collection"}:::decision N_AddtoCargoRecordList_Node0_action["The cargo record is included in the
list of records for processing"]:::main N_AddtoCargoRecordList_Node0 -- Yes --> N_AddtoCargoRecordList_Node0_action N_AddtoCargoRecordList_Node0_action --> E_AddtoCargoRecordList S_AddtoCargoRecordList --> N_AddtoCargoRecordList_Node0 N_AddtoCargoRecordList_Node0 -- No --> E_AddtoCargoRecordList
File: GCX016E.cbl
GIVEN: A cargo record has been successfully retrieved from the database
WHEN: The system adds the record to the cargo record collection
THEN: The cargo record is included in the list of records for processing
βœ“ Consolidated Acceptance Criteria
  • The system continues searching for additional records → the search process loops back to check for more 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_ContinueSearchforAdditionalRecords(["Start Step"]) E_ContinueSearchforAdditionalRecords(["End Step"]) N_ContinueSearchforAdditionalRecords_Node0{"The system continues searching for
additional records"}:::decision N_ContinueSearchforAdditionalRecords_Node0_action["The search process loops back to
check for more matching cargo
records"]:::main N_ContinueSearchforAdditionalRecords_Node0 -- Yes --> N_ContinueSearchforAdditionalRecords_Node0_action N_ContinueSearchforAdditionalRecords_Node0_action --> E_ContinueSearchforAdditionalRecords S_ContinueSearchforAdditionalRecords --> N_ContinueSearchforAdditionalRecords_Node0 N_ContinueSearchforAdditionalRecords_Node0 -- No --> E_ContinueSearchforAdditionalRecords
File: GCX016E.cbl
GIVEN: A cargo record has been added to the collection
WHEN: The system continues searching for additional records
THEN: The search process loops back to check for more matching cargo records
βœ“ Consolidated Acceptance Criteria
  • No more matching records exist in the database → the complete collection of found cargo records is returned 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_ReturnAllFoundRecords(["Start Step"]) E_ReturnAllFoundRecords(["End Step"]) N_ReturnAllFoundRecords_Node0{"No more matching records exist in
the database"}:::decision N_ReturnAllFoundRecords_Node0_action["The complete collection of found
cargo records is returned for
business processing"]:::main N_ReturnAllFoundRecords_Node0 -- Yes --> N_ReturnAllFoundRecords_Node0_action N_ReturnAllFoundRecords_Node0_action --> E_ReturnAllFoundRecords S_ReturnAllFoundRecords --> N_ReturnAllFoundRecords_Node0 N_ReturnAllFoundRecords_Node0 -- No --> E_ReturnAllFoundRecords
File: GCX016E.cbl
GIVEN: All matching cargo records have been retrieved and collected
WHEN: No more matching records exist in the database
THEN: The complete collection of found cargo records is returned for business processing
βœ“ Consolidated Acceptance Criteria
  • No cargo records match the car/waybill search criteria → the no records found flag is set to indicate unsuccessful 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_SetNoRecordsFoundFlag(["Start Step"]) E_SetNoRecordsFoundFlag(["End Step"]) N_SetNoRecordsFoundFlag_Node0{"No cargo records match the
carwaybill search criteria"}:::decision N_SetNoRecordsFoundFlag_Node0_action["The no records found flag is set to
indicate unsuccessful search results"]:::main N_SetNoRecordsFoundFlag_Node0 -- Yes --> N_SetNoRecordsFoundFlag_Node0_action N_SetNoRecordsFoundFlag_Node0_action --> E_SetNoRecordsFoundFlag S_SetNoRecordsFoundFlag --> N_SetNoRecordsFoundFlag_Node0 N_SetNoRecordsFoundFlag_Node0 -- No --> E_SetNoRecordsFoundFlag
File: GCX016E.cbl
GIVEN: The database search has been completed
WHEN: No cargo records match the car/waybill search criteria
THEN: The no records found flag is set to indicate unsuccessful search results
βœ“ Consolidated Acceptance Criteria
  • The system generates a not found message → an appropriate message is created indicating that no matching cargo 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_GenerateNotFoundMessage(["Start Step"]) E_GenerateNotFoundMessage(["End Step"]) N_GenerateNotFoundMessage_Node0{"The system generates a not found
message"}:::decision N_GenerateNotFoundMessage_Node0_action["An appropriate message is created
indicating that no matching cargo
records exist"]:::main N_GenerateNotFoundMessage_Node0 -- Yes --> N_GenerateNotFoundMessage_Node0_action N_GenerateNotFoundMessage_Node0_action --> E_GenerateNotFoundMessage S_GenerateNotFoundMessage --> N_GenerateNotFoundMessage_Node0 N_GenerateNotFoundMessage_Node0 -- No --> E_GenerateNotFoundMessage
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: No cargo records were found matching the search criteria
WHEN: The system generates a not found message
THEN: An appropriate message is created indicating that no matching cargo records exist
βœ“ Consolidated Acceptance Criteria
  • The system searches for existing CPRS cargo records using the car ID and waybill as search criteria → the system returns whether the CPRS cargo record exists or not 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_CPRSCargoFoundinSystem(["Start Step"]) E_CPRSCargoFoundinSystem(["End Step"]) N_CPRSCargoFoundinSystem_Node0{"The system searches for existing
CPRS cargo records using the car ID
and waybill as search criteria"}:::decision N_CPRSCargoFoundinSystem_Node0_action["The system returns whether the CPRS
cargo record exists or not in the
database"]:::main N_CPRSCargoFoundinSystem_Node0 -- Yes --> N_CPRSCargoFoundinSystem_Node0_action N_CPRSCargoFoundinSystem_Node0_action --> E_CPRSCargoFoundinSystem S_CPRSCargoFoundinSystem --> N_CPRSCargoFoundinSystem_Node0 N_CPRSCargoFoundinSystem_Node0 -- No --> E_CPRSCargoFoundinSystem
File: GCX016E.cbl
GIVEN: A CPRS cargo lookup request with car ID and waybill information
WHEN:
  • The system searches for existing cprs cargo records using the car id
  • Waybill as search criteria
THEN: The system returns whether the CPRS cargo record exists or not in the database
βœ“ Consolidated Acceptance Criteria
  • The system initializes CPRS cargo attributes → the system sets CPRS-specific processing flags and identifiers to enable proper CPRS 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_SetCPRSSpecificFlagsandIdentifiers(["Start Step"]) E_SetCPRSSpecificFlagsandIdentifiers(["End Step"]) N_SetCPRSSpecificFlagsandIdentifiers_Node0{"The system initializes CPRS cargo
attributes"}:::decision N_SetCPRSSpecificFlagsandIdentifiers_Node0_action["The system sets CPRS-specific
processing flags and identifiers to
enable proper CPRS handling"]:::main N_SetCPRSSpecificFlagsandIdentifiers_Node0 -- Yes --> N_SetCPRSSpecificFlagsandIdentifiers_Node0_action N_SetCPRSSpecificFlagsandIdentifiers_Node0_action --> E_SetCPRSSpecificFlagsandIdentifiers S_SetCPRSSpecificFlagsandIdentifiers --> N_SetCPRSSpecificFlagsandIdentifiers_Node0 N_SetCPRSSpecificFlagsandIdentifiers_Node0 -- No --> E_SetCPRSSpecificFlagsandIdentifiers
File: GCX016E.cbl
GIVEN: A new CPRS cargo record being created
WHEN: The system initializes CPRS cargo attributes
THEN:
  • The system sets cprs-specific processing flags
  • Identifiers to enable proper cprs handling
βœ“ Consolidated Acceptance Criteria
  • The system builds a new CPRS cargo record → the system populates cargo record fields with disposition code, quantity, entry number, and related X4 segment 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_BuildCargoRecordfromX4SegmentData(["Start Step"]) E_BuildCargoRecordfromX4SegmentData(["End Step"]) N_BuildCargoRecordfromX4SegmentData_Node0{"The system builds a new CPRS cargo
record"}:::decision N_BuildCargoRecordfromX4SegmentData_Node0_action["The system populates cargo record
fields with disposition code,
quantity, entry number, and related
X4 segment information"]:::main N_BuildCargoRecordfromX4SegmentData_Node0 -- Yes --> N_BuildCargoRecordfromX4SegmentData_Node0_action N_BuildCargoRecordfromX4SegmentData_Node0_action --> E_BuildCargoRecordfromX4SegmentData S_BuildCargoRecordfromX4SegmentData --> N_BuildCargoRecordfromX4SegmentData_Node0 N_BuildCargoRecordfromX4SegmentData_Node0 -- No --> E_BuildCargoRecordfromX4SegmentData
File: GCX016E.cbl
GIVEN: X4 segment data containing disposition codes, quantities, and entry information
WHEN: The system builds a new CPRS cargo record
THEN: The system populates cargo record fields with disposition code, quantity, entry number, and related X4 segment information
βœ“ Consolidated Acceptance Criteria
  • The system builds a new CPRS cargo record → the system populates cargo record fields with equipment information, car ID, and related 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_BuildCargoRecordfromN7SegmentData(["Start Step"]) E_BuildCargoRecordfromN7SegmentData(["End Step"]) N_BuildCargoRecordfromN7SegmentData_Node0{"The system builds a new CPRS cargo
record"}:::decision N_BuildCargoRecordfromN7SegmentData_Node0_action["The system populates cargo record
fields with equipment information,
car ID, and related N7 segment data"]:::main N_BuildCargoRecordfromN7SegmentData_Node0 -- Yes --> N_BuildCargoRecordfromN7SegmentData_Node0_action N_BuildCargoRecordfromN7SegmentData_Node0_action --> E_BuildCargoRecordfromN7SegmentData S_BuildCargoRecordfromN7SegmentData --> N_BuildCargoRecordfromN7SegmentData_Node0 N_BuildCargoRecordfromN7SegmentData_Node0 -- No --> E_BuildCargoRecordfromN7SegmentData
File: GCX016E.cbl
GIVEN: N7 segment data containing equipment initial, number, and related equipment information
WHEN: The system builds a new CPRS cargo record
THEN: The system populates cargo record fields with equipment information, car ID, and related N7 segment data
βœ“ Consolidated Acceptance Criteria
  • The system sets bond information for the CPRS cargo → the system assigns bond number and related bond information based on CPRS 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_SetCPRSBondInformation(["Start Step"]) E_SetCPRSBondInformation(["End Step"]) N_SetCPRSBondInformation_Node0{"The system sets bond information
for the CPRS cargo"}:::decision N_SetCPRSBondInformation_Node0_action["The system assigns bond number and
related bond information based on
CPRS processing rules"]:::main N_SetCPRSBondInformation_Node0 -- Yes --> N_SetCPRSBondInformation_Node0_action N_SetCPRSBondInformation_Node0_action --> E_SetCPRSBondInformation S_SetCPRSBondInformation --> N_SetCPRSBondInformation_Node0 N_SetCPRSBondInformation_Node0 -- No --> E_SetCPRSBondInformation
File: GCX016E.cbl
GIVEN: A new CPRS cargo record with disposition code and entry information
WHEN: The system sets bond information for the CPRS cargo
THEN:
  • The system assigns bond number
  • Related bond information based on cprs processing rules
βœ“ Consolidated Acceptance Criteria
  • The system sets broker information for the CPRS cargo → the system assigns broker code and related broker information from the carrier information 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_SetCPRSBrokerInformation(["Start Step"]) E_SetCPRSBrokerInformation(["End Step"]) N_SetCPRSBrokerInformation_Node0{"The system sets broker information
for the CPRS cargo"}:::decision N_SetCPRSBrokerInformation_Node0_action["The system assigns broker code and
related broker information from the
carrier information database"]:::main N_SetCPRSBrokerInformation_Node0 -- Yes --> N_SetCPRSBrokerInformation_Node0_action N_SetCPRSBrokerInformation_Node0_action --> E_SetCPRSBrokerInformation S_SetCPRSBrokerInformation --> N_SetCPRSBrokerInformation_Node0 N_SetCPRSBrokerInformation_Node0 -- No --> E_SetCPRSBrokerInformation
File: GCX016E.cbl
GIVEN: A new CPRS cargo record and access to carrier information database
WHEN: The system sets broker information for the CPRS cargo
THEN:
  • The system assigns broker code
  • Related broker information from the carrier information database
βœ“ Consolidated Acceptance Criteria
  • The system initializes cargo status tracking → the system creates empty status arrays and sets up status segment structures for tracking CPRS cargo 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_InitializeCargoStatusArrays(["Start Step"]) E_InitializeCargoStatusArrays(["End Step"]) N_InitializeCargoStatusArrays_Node0{"The system initializes cargo status
tracking"}:::decision N_InitializeCargoStatusArrays_Node0_action["The system creates empty status
arrays and sets up status segment
structures for tracking CPRS cargo
disposition codes"]:::main N_InitializeCargoStatusArrays_Node0 -- Yes --> N_InitializeCargoStatusArrays_Node0_action N_InitializeCargoStatusArrays_Node0_action --> E_InitializeCargoStatusArrays S_InitializeCargoStatusArrays --> N_InitializeCargoStatusArrays_Node0 N_InitializeCargoStatusArrays_Node0 -- No --> E_InitializeCargoStatusArrays
File: GCX016E.cbl
GIVEN: A new CPRS cargo record being created
WHEN: The system initializes cargo status tracking
THEN:
  • The system creates empty status arrays
  • Sets up status segment structures for tracking cprs cargo disposition codes
βœ“ Consolidated Acceptance Criteria
  • The system sets default processing flags → the system assigns default values for processing flags that control CPRS cargo handling and 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_SetDefaultCPRSProcessingFlags(["Start Step"]) E_SetDefaultCPRSProcessingFlags(["End Step"]) N_SetDefaultCPRSProcessingFlags_Node0{"The system sets default processing
flags"}:::decision N_SetDefaultCPRSProcessingFlags_Node0_action["The system assigns default values
for processing flags that control
CPRS cargo handling and workflow"]:::main N_SetDefaultCPRSProcessingFlags_Node0 -- Yes --> N_SetDefaultCPRSProcessingFlags_Node0_action N_SetDefaultCPRSProcessingFlags_Node0_action --> E_SetDefaultCPRSProcessingFlags S_SetDefaultCPRSProcessingFlags --> N_SetDefaultCPRSProcessingFlags_Node0 N_SetDefaultCPRSProcessingFlags_Node0 -- No --> E_SetDefaultCPRSProcessingFlags
File: GCX016E.cbl
GIVEN: A new CPRS cargo record with basic information populated
WHEN: The system sets default processing flags
THEN:
  • The system assigns default values for processing flags that control cprs cargo handling
  • Workflow
βœ“ Consolidated Acceptance Criteria
  • The system attempts to insert the record into the US cargo root database → the system successfully adds the new CPRS cargo record to the database or returns an insertion 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_InsertNewCPRSCargoRecordintoDatabase(["Start Step"]) E_InsertNewCPRSCargoRecordintoDatabase(["End Step"]) N_InsertNewCPRSCargoRecordintoDatabase_Node0{"The system attempts to insert the
record into the US cargo root
database"}:::decision N_InsertNewCPRSCargoRecordintoDatabase_Node0_action["The system successfully adds the
new CPRS cargo record to the
database or returns an insertion
failure status"]:::main N_InsertNewCPRSCargoRecordintoDatabase_Node0 -- Yes --> N_InsertNewCPRSCargoRecordintoDatabase_Node0_action N_InsertNewCPRSCargoRecordintoDatabase_Node0_action --> E_InsertNewCPRSCargoRecordintoDatabase S_InsertNewCPRSCargoRecordintoDatabase --> N_InsertNewCPRSCargoRecordintoDatabase_Node0 N_InsertNewCPRSCargoRecordintoDatabase_Node0 -- No --> E_InsertNewCPRSCargoRecordintoDatabase
File: GCX016E.cbl
GIVEN: A complete CPRS cargo record ready for database insertion
WHEN: The system attempts to insert the record into the US cargo root database
THEN: The system successfully adds the new CPRS cargo record to the database or returns an insertion failure status
βœ“ Consolidated Acceptance Criteria
  • The system checks the database insertion result → the system determines whether the insertion was successful or failed based on the database response
  • The system attempts to insert the cargo record into the database → the system should verify the database insert operation completed successfully and handle any insertion failures
  • The database operation completes → the system should check the operation status and determine if the insertion was successful
  • The database insertion result is evaluated → the system determines whether the insertion was successful or failed based on database response 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_DatabaseInsertSuccessful(["Start Step"]) E_DatabaseInsertSuccessful(["End Step"]) N_DatabaseInsertSuccessful_Node0{"The system checks the database
insertion result"}:::decision N_DatabaseInsertSuccessful_Node0_action["The system determines whether the
insertion was successful or failed
based on the database response"]:::main N_DatabaseInsertSuccessful_Node0 -- Yes --> N_DatabaseInsertSuccessful_Node0_action N_DatabaseInsertSuccessful_Node0_action --> E_DatabaseInsertSuccessful S_DatabaseInsertSuccessful --> N_DatabaseInsertSuccessful_Node0 N_DatabaseInsertSuccessful_Node1{"The system attempts to insert the
cargo record into the database"}:::decision N_DatabaseInsertSuccessful_Node1_action["The system should verify the
database insert operation completed
successfully and handle any
insertion failures"]:::main N_DatabaseInsertSuccessful_Node1 -- Yes --> N_DatabaseInsertSuccessful_Node1_action N_DatabaseInsertSuccessful_Node1_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node0 -- No --> N_DatabaseInsertSuccessful_Node1 N_DatabaseInsertSuccessful_Node2{"The database operation completes"}:::decision N_DatabaseInsertSuccessful_Node2_action["The system should check the
operation status and determine if
the insertion was successful"]:::main N_DatabaseInsertSuccessful_Node2 -- Yes --> N_DatabaseInsertSuccessful_Node2_action N_DatabaseInsertSuccessful_Node2_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node1 -- No --> N_DatabaseInsertSuccessful_Node2 N_DatabaseInsertSuccessful_Node3{"The database insertion result is
evaluated"}:::decision N_DatabaseInsertSuccessful_Node3_action["The system determines whether the
insertion was successful or failed
based on database response codes"]:::main N_DatabaseInsertSuccessful_Node3 -- Yes --> N_DatabaseInsertSuccessful_Node3_action N_DatabaseInsertSuccessful_Node3_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node2 -- No --> N_DatabaseInsertSuccessful_Node3 N_DatabaseInsertSuccessful_Node3 -- No --> E_DatabaseInsertSuccessful
File: GCX016E.cbl
GIVEN: An attempt to insert a new CPRS cargo record into the database
WHEN: The system checks the database insertion result
THEN: The system determines whether the insertion was successful or failed based on the database response
File: GCX016E.cbl
GIVEN: A new cargo record has been prepared with status set to 'New'
WHEN: The system attempts to insert the cargo record into the database
THEN:
  • The system should verify the database insert operation completed successfully
  • Handle any insertion failures
File: GCX016E.cbl
GIVEN: A new cargo record insertion has been attempted
WHEN: The database operation completes
THEN:
  • The system should check the operation status
  • Determine if the insertion was successful
File: GCX016E.cbl
GIVEN: A cargo record insertion operation has been attempted
WHEN: The database insertion result is evaluated
THEN: The system determines whether the insertion was successful or failed based on database response codes
βœ“ Consolidated Acceptance Criteria
  • The system logs the creation action → the system records the CPRS cargo creation event with relevant details 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_LogCPRSCargoCreationAction(["Start Step"]) E_LogCPRSCargoCreationAction(["End Step"]) N_LogCPRSCargoCreationAction_Node0{"The system logs the creation action"}:::decision N_LogCPRSCargoCreationAction_Node0_action["The system records the CPRS cargo
creation event with relevant details
for audit trail and tracking"]:::main N_LogCPRSCargoCreationAction_Node0 -- Yes --> N_LogCPRSCargoCreationAction_Node0_action N_LogCPRSCargoCreationAction_Node0_action --> E_LogCPRSCargoCreationAction S_LogCPRSCargoCreationAction --> N_LogCPRSCargoCreationAction_Node0 N_LogCPRSCargoCreationAction_Node0 -- No --> E_LogCPRSCargoCreationAction
File: GCX016E.cbl
GIVEN: A successfully created CPRS cargo record
WHEN: The system logs the creation action
THEN:
  • The system records the cprs cargo creation event with relevant details for audit trail
  • Tracking
βœ“ Consolidated Acceptance Criteria
  • The system generates creation notifications → the system sends notifications to appropriate recipients about the new CPRS cargo 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_GenerateCPRSCreationNotification(["Start Step"]) E_GenerateCPRSCreationNotification(["End Step"]) N_GenerateCPRSCreationNotification_Node0{"The system generates creation
notifications"}:::decision N_GenerateCPRSCreationNotification_Node0_action["The system sends notifications to
appropriate recipients about the new
CPRS cargo creation"]:::main N_GenerateCPRSCreationNotification_Node0 -- Yes --> N_GenerateCPRSCreationNotification_Node0_action N_GenerateCPRSCreationNotification_Node0_action --> E_GenerateCPRSCreationNotification S_GenerateCPRSCreationNotification --> N_GenerateCPRSCreationNotification_Node0 N_GenerateCPRSCreationNotification_Node0 -- No --> E_GenerateCPRSCreationNotification
File: GCX016E.cbl
GIVEN: A successfully created and logged CPRS cargo record
WHEN: The system generates creation notifications
THEN: The system sends notifications to appropriate recipients about the new CPRS cargo creation
βœ“ Consolidated Acceptance Criteria
  • The system handles the creation error → the system processes the error condition and takes appropriate corrective action or error reporting
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleCPRSCreationError(["Start Step"]) E_HandleCPRSCreationError(["End Step"]) N_HandleCPRSCreationError_Node0{"The system handles the creation
error"}:::decision N_HandleCPRSCreationError_Node0_action["The system processes the error
condition and takes appropriate
corrective action or error reporting"]:::exclusion N_HandleCPRSCreationError_Node0 -- Yes -->|Alternative| N_HandleCPRSCreationError_Node0_action N_HandleCPRSCreationError_Node0_action --> E_HandleCPRSCreationError S_HandleCPRSCreationError --> N_HandleCPRSCreationError_Node0 N_HandleCPRSCreationError_Node0 -- No --> E_HandleCPRSCreationError
File: GCX016E.cbl
GIVEN: A failed CPRS cargo record insertion or creation error
WHEN: The system handles the creation error
THEN:
  • The system processes the error condition
  • Takes appropriate corrective action or error reporting
βœ“ Consolidated Acceptance Criteria
  • The system searches the cargo database for the bill of lading → the system confirms the bill does not exist and proceeds with new cargo creation
  • The system searches for the bill and it is not found in the existing cargo database → the system should trigger the new cargo record 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_ForeignBillNotFoundinSystem(["Start Step"]) E_ForeignBillNotFoundinSystem(["End Step"]) N_ForeignBillNotFoundinSystem_Node0{"The system searches the cargo
database for the bill of lading"}:::decision N_ForeignBillNotFoundinSystem_Node0_action["The system confirms the bill does
not exist and proceeds with new
cargo creation"]:::main N_ForeignBillNotFoundinSystem_Node0 -- Yes --> N_ForeignBillNotFoundinSystem_Node0_action N_ForeignBillNotFoundinSystem_Node0_action --> E_ForeignBillNotFoundinSystem S_ForeignBillNotFoundinSystem --> N_ForeignBillNotFoundinSystem_Node0 N_ForeignBillNotFoundinSystem_Node1{"The system searches for the bill
and it is not found in the existing
cargo database"}:::decision N_ForeignBillNotFoundinSystem_Node1_action["The system should trigger the new
cargo record creation process"]:::main N_ForeignBillNotFoundinSystem_Node1 -- Yes --> N_ForeignBillNotFoundinSystem_Node1_action N_ForeignBillNotFoundinSystem_Node1_action --> E_ForeignBillNotFoundinSystem N_ForeignBillNotFoundinSystem_Node0 -- No --> N_ForeignBillNotFoundinSystem_Node1 N_ForeignBillNotFoundinSystem_Node1 -- No --> E_ForeignBillNotFoundinSystem
File: GCX016E.cbl
GIVEN: A foreign bill of lading number is provided in the X4 segment
WHEN: The system searches the cargo database for the bill of lading
THEN:
  • The system confirms the bill does not exist
  • Proceeds with new cargo creation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A foreign bill of lading number is being processed
WHEN:
  • The system searches for the bill
  • It is not found in the existing cargo database
THEN: The system should trigger the new cargo record creation process
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment for new cargo creation → the cargo record is populated with disposition code, entry number, quantity, and date/time information from the X4 segment
  • The system processes X4 segment information for foreign bill cargo creation → the cargo record is populated with disposition code, entry number, quantity, and other X4 segment data
  • The system processes the X4 segment information → the cargo record should be populated with disposition code, entry number, quantity, and related X4 segment data
  • X4 segment data is processed for cargo record setup → the cargo record is populated with disposition code, entry number, quantity information, and processing flags 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_SetUpCargoRecordwithX4SegmentData(["Start Step"]) E_SetUpCargoRecordwithX4SegmentData(["End Step"]) N_SetUpCargoRecordwithX4SegmentData_Node0{"The system processes the X4 segment
for new cargo creation"}:::decision N_SetUpCargoRecordwithX4SegmentData_Node0_action["The cargo record is populated with
disposition code, entry number,
quantity, and datetime information
from the X4 segment"]:::main N_SetUpCargoRecordwithX4SegmentData_Node0 -- Yes --> N_SetUpCargoRecordwithX4SegmentData_Node0_action N_SetUpCargoRecordwithX4SegmentData_Node0_action --> E_SetUpCargoRecordwithX4SegmentData S_SetUpCargoRecordwithX4SegmentData --> N_SetUpCargoRecordwithX4SegmentData_Node0 N_SetUpCargoRecordwithX4SegmentData_Node1{"The system processes X4 segment
information for foreign bill cargo
creation"}:::decision N_SetUpCargoRecordwithX4SegmentData_Node1_action["The cargo record is populated with
disposition code, entry number,
quantity, and other X4 segment data"]:::main N_SetUpCargoRecordwithX4SegmentData_Node1 -- Yes --> N_SetUpCargoRecordwithX4SegmentData_Node1_action N_SetUpCargoRecordwithX4SegmentData_Node1_action --> E_SetUpCargoRecordwithX4SegmentData N_SetUpCargoRecordwithX4SegmentData_Node0 -- No --> N_SetUpCargoRecordwithX4SegmentData_Node1 N_SetUpCargoRecordwithX4SegmentData_Node2{"The system processes the X4 segment
information"}:::decision N_SetUpCargoRecordwithX4SegmentData_Node2_action["The cargo record should be
populated with disposition code,
entry number, quantity, and related
X4 segment data"]:::main N_SetUpCargoRecordwithX4SegmentData_Node2 -- Yes --> N_SetUpCargoRecordwithX4SegmentData_Node2_action N_SetUpCargoRecordwithX4SegmentData_Node2_action --> E_SetUpCargoRecordwithX4SegmentData N_SetUpCargoRecordwithX4SegmentData_Node1 -- No --> N_SetUpCargoRecordwithX4SegmentData_Node2 N_SetUpCargoRecordwithX4SegmentData_Node3{"X4 segment data is processed for
cargo record setup"}:::decision N_SetUpCargoRecordwithX4SegmentData_Node3_action["The cargo record is populated with
disposition code, entry number,
quantity information, and processing
flags from the X4 segment"]:::main N_SetUpCargoRecordwithX4SegmentData_Node3 -- Yes --> N_SetUpCargoRecordwithX4SegmentData_Node3_action N_SetUpCargoRecordwithX4SegmentData_Node3_action --> E_SetUpCargoRecordwithX4SegmentData N_SetUpCargoRecordwithX4SegmentData_Node2 -- No --> N_SetUpCargoRecordwithX4SegmentData_Node3 N_SetUpCargoRecordwithX4SegmentData_Node3 -- No --> E_SetUpCargoRecordwithX4SegmentData
File: GCX016E.cbl
GIVEN: An X4 segment contains cargo disposition information
WHEN: The system processes the X4 segment for new cargo creation
THEN: The cargo record is populated with disposition code, entry number, quantity, and date/time information from the X4 segment
File: GCX016E.cbl
GIVEN: An initialized cargo record and X4 segment data containing disposition codes and cargo details
WHEN: The system processes X4 segment information for foreign bill cargo creation
THEN: The cargo record is populated with disposition code, entry number, quantity, and other X4 segment data
File: GCX016E.cbl
GIVEN: A new cargo record is being created and X4 segment data is available
WHEN: The system processes the X4 segment information
THEN: The cargo record should be populated with disposition code, entry number, quantity, and related X4 segment data
File: GCX016E.cbl
GIVEN: A cargo record exists and X4 segment data is available with disposition codes and quantities
WHEN: X4 segment data is processed for cargo record setup
THEN: The cargo record is populated with disposition code, entry number, quantity information, and processing flags from the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes the N7 segment for new cargo creation → the cargo record is populated with equipment initial, equipment number, and formatted car ID from the N7 segment
  • The system processes N7 segment information for equipment details → the cargo record is updated with car ID, equipment initial, equipment number, and other N7 equipment data
  • The system processes the N7 segment information → the cargo record should be populated with equipment initial, equipment number, and formatted car ID information
  • N7 segment data is processed for cargo record setup → the cargo record is populated with equipment initial, equipment number, car ID, 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_SetUpCargoRecordwithN7SegmentData(["Start Step"]) E_SetUpCargoRecordwithN7SegmentData(["End Step"]) N_SetUpCargoRecordwithN7SegmentData_Node0{"The system processes the N7 segment
for new cargo creation"}:::decision N_SetUpCargoRecordwithN7SegmentData_Node0_action["The cargo record is populated with
equipment initial, equipment number,
and formatted car ID from the N7
segment"]:::main N_SetUpCargoRecordwithN7SegmentData_Node0 -- Yes --> N_SetUpCargoRecordwithN7SegmentData_Node0_action N_SetUpCargoRecordwithN7SegmentData_Node0_action --> E_SetUpCargoRecordwithN7SegmentData S_SetUpCargoRecordwithN7SegmentData --> N_SetUpCargoRecordwithN7SegmentData_Node0 N_SetUpCargoRecordwithN7SegmentData_Node1{"The system processes N7 segment
information for equipment details"}:::decision N_SetUpCargoRecordwithN7SegmentData_Node1_action["The cargo record is updated with
car ID, equipment initial, equipment
number, and other N7 equipment data"]:::main N_SetUpCargoRecordwithN7SegmentData_Node1 -- Yes --> N_SetUpCargoRecordwithN7SegmentData_Node1_action N_SetUpCargoRecordwithN7SegmentData_Node1_action --> E_SetUpCargoRecordwithN7SegmentData N_SetUpCargoRecordwithN7SegmentData_Node0 -- No --> N_SetUpCargoRecordwithN7SegmentData_Node1 N_SetUpCargoRecordwithN7SegmentData_Node2{"The system processes the N7 segment
information"}:::decision N_SetUpCargoRecordwithN7SegmentData_Node2_action["The cargo record should be
populated with equipment initial,
equipment number, and formatted car
ID information"]:::main N_SetUpCargoRecordwithN7SegmentData_Node2 -- Yes --> N_SetUpCargoRecordwithN7SegmentData_Node2_action N_SetUpCargoRecordwithN7SegmentData_Node2_action --> E_SetUpCargoRecordwithN7SegmentData N_SetUpCargoRecordwithN7SegmentData_Node1 -- No --> N_SetUpCargoRecordwithN7SegmentData_Node2 N_SetUpCargoRecordwithN7SegmentData_Node3{"N7 segment data is processed for
cargo record setup"}:::decision N_SetUpCargoRecordwithN7SegmentData_Node3_action["The cargo record is populated with
equipment initial, equipment number,
car ID, and equipment type
information from the N7 segment"]:::main N_SetUpCargoRecordwithN7SegmentData_Node3 -- Yes --> N_SetUpCargoRecordwithN7SegmentData_Node3_action N_SetUpCargoRecordwithN7SegmentData_Node3_action --> E_SetUpCargoRecordwithN7SegmentData N_SetUpCargoRecordwithN7SegmentData_Node2 -- No --> N_SetUpCargoRecordwithN7SegmentData_Node3 N_SetUpCargoRecordwithN7SegmentData_Node3 -- No --> E_SetUpCargoRecordwithN7SegmentData
File: GCX016E.cbl
GIVEN: An N7 segment contains equipment information
WHEN: The system processes the N7 segment for new cargo creation
THEN: The cargo record is populated with equipment initial, equipment number, and formatted car ID from the N7 segment
File: GCX016E.cbl
GIVEN: A cargo record with X4 data populated and N7 segment data containing equipment information
WHEN: The system processes N7 segment information for equipment details
THEN: The cargo record is updated with car ID, equipment initial, equipment number, and other N7 equipment data
File: GCX016E.cbl
GIVEN: A new cargo record is being created and N7 segment data is available
WHEN: The system processes the N7 segment information
THEN: The cargo record should be populated with equipment initial, equipment number, and formatted car ID information
File: GCX016E.cbl
GIVEN: A cargo record exists and N7 segment data is available with equipment details
WHEN: N7 segment data is processed for cargo record setup
THEN: The cargo record is populated with equipment initial, equipment number, car ID, and equipment type information from the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes M10 segments for foreign cargo creation → the cargo record is populated with vessel name, voyage number, and manifest routing information from the M10 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_BuildForeignManifestfromM10Segments(["Start Step"]) E_BuildForeignManifestfromM10Segments(["End Step"]) N_BuildForeignManifestfromM10Segments_Node0{"The system processes M10 segments
for foreign cargo creation"}:::decision N_BuildForeignManifestfromM10Segments_Node0_action["The cargo record is populated with
vessel name, voyage number, and
manifest routing information from
the M10 segments"]:::main N_BuildForeignManifestfromM10Segments_Node0 -- Yes --> N_BuildForeignManifestfromM10Segments_Node0_action N_BuildForeignManifestfromM10Segments_Node0_action --> E_BuildForeignManifestfromM10Segments S_BuildForeignManifestfromM10Segments --> N_BuildForeignManifestfromM10Segments_Node0 N_BuildForeignManifestfromM10Segments_Node0 -- No --> E_BuildForeignManifestfromM10Segments
File: GCX016E.cbl
GIVEN: M10 segments contain manifest header information
WHEN: The system processes M10 segments for foreign cargo creation
THEN: The cargo record is populated with vessel name, voyage number, and manifest routing information from the M10 segments
βœ“ Consolidated Acceptance Criteria
  • The system processes carrier information for foreign cargo → the SCAC code is extracted and stored in the cargo record 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_ExtractSCACInformation(["Start Step"]) E_ExtractSCACInformation(["End Step"]) N_ExtractSCACInformation_Node0{"The system processes carrier
information for foreign cargo"}:::decision N_ExtractSCACInformation_Node0_action["The SCAC code is extracted and
stored in the cargo record for
carrier identification"]:::main N_ExtractSCACInformation_Node0 -- Yes --> N_ExtractSCACInformation_Node0_action N_ExtractSCACInformation_Node0_action --> E_ExtractSCACInformation S_ExtractSCACInformation --> N_ExtractSCACInformation_Node0 N_ExtractSCACInformation_Node0 -- No --> E_ExtractSCACInformation
File: GCX016E.cbl
GIVEN: Manifest information contains carrier identification
WHEN: The system processes carrier information for foreign cargo
THEN:
  • The scac code is extracted
  • Stored in the cargo record for carrier identification
βœ“ Consolidated Acceptance Criteria
  • The system processes transportation details for foreign cargo → the transport type is identified and recorded in the cargo record
  • The system processes manifest data to classify transport method → the transport type is identified and recorded in the cargo record for proper routing and handling
  • The system processes the transportation information → the system should extract and set the appropriate transport type code
  • The system extracts transport type information → the transport type code is extracted from the designated position in the M10 segment
  • The system processes the transport type field from M10 segment → the transport type is extracted and prepared for manifest structure 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_ExtractTransportType(["Start Step"]) E_ExtractTransportType(["End Step"]) N_ExtractTransportType_Node0{"The system processes transportation
details for foreign cargo"}:::decision N_ExtractTransportType_Node0_action["The transport type is identified
and recorded in the cargo record"]:::main N_ExtractTransportType_Node0 -- Yes --> N_ExtractTransportType_Node0_action N_ExtractTransportType_Node0_action --> E_ExtractTransportType S_ExtractTransportType --> N_ExtractTransportType_Node0 N_ExtractTransportType_Node1{"The system processes manifest data
to classify transport method"}:::decision N_ExtractTransportType_Node1_action["The transport type is identified
and recorded in the cargo record for
proper routing and handling"]:::main N_ExtractTransportType_Node1 -- Yes --> N_ExtractTransportType_Node1_action N_ExtractTransportType_Node1_action --> E_ExtractTransportType N_ExtractTransportType_Node0 -- No --> N_ExtractTransportType_Node1 N_ExtractTransportType_Node2{"The system processes the
transportation information"}:::decision N_ExtractTransportType_Node2_action["The system should extract and set
the appropriate transport type code"]:::main N_ExtractTransportType_Node2 -- Yes --> N_ExtractTransportType_Node2_action N_ExtractTransportType_Node2_action --> E_ExtractTransportType N_ExtractTransportType_Node1 -- No --> N_ExtractTransportType_Node2 N_ExtractTransportType_Node3{"The system extracts transport type
information"}:::decision N_ExtractTransportType_Node3_action["The transport type code is
extracted from the designated
position in the M10 segment"]:::main N_ExtractTransportType_Node3 -- Yes --> N_ExtractTransportType_Node3_action N_ExtractTransportType_Node3_action --> E_ExtractTransportType N_ExtractTransportType_Node2 -- No --> N_ExtractTransportType_Node3 N_ExtractTransportType_Node4{"The system processes the transport
type field from M10 segment"}:::decision N_ExtractTransportType_Node4_action["The transport type is extracted and
prepared for manifest structure
mapping"]:::main N_ExtractTransportType_Node4 -- Yes --> N_ExtractTransportType_Node4_action N_ExtractTransportType_Node4_action --> E_ExtractTransportType N_ExtractTransportType_Node3 -- No --> N_ExtractTransportType_Node4 N_ExtractTransportType_Node4 -- No --> E_ExtractTransportType
File: GCX016E.cbl
GIVEN: Manifest data contains transportation mode information
WHEN: The system processes transportation details for foreign cargo
THEN:
  • The transport type is identified
  • Recorded in the cargo record
File: GCX016E.cbl
GIVEN: M10 manifest segments containing transportation mode information
WHEN: The system processes manifest data to classify transport method
THEN:
  • The transport type is identified
  • Recorded in the cargo record for proper routing
  • Handling
File: GCX016E.cbl
GIVEN: Manifest data is available for a new foreign cargo record
WHEN: The system processes the transportation information
THEN:
  • The system should extract
  • Set the appropriate transport type code
File: GCX016E.cbl
GIVEN: An M10 segment with valid SCAC code is being processed
WHEN: The system extracts transport type information
THEN: The transport type code is extracted from the designated position in the M10 segment
File: GCX016E.cbl
GIVEN: M10 segment SCAC code has been mapped
WHEN: The system processes the transport type field from M10 segment
THEN:
  • The transport type is extracted
  • Prepared for manifest structure mapping
βœ“ Consolidated Acceptance Criteria
  • The system processes location details for foreign cargo → the country code is extracted and assigned to the cargo record
  • The system processes manifest data to identify country details → the appropriate country code is extracted and assigned to the cargo record for customs and regulatory purposes
  • The system processes the origin information → the system should extract and validate the country code from the manifest data
  • The system extracts country code information → the country code is extracted from the designated position in the 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_ExtractCountryCode(["Start Step"]) E_ExtractCountryCode(["End Step"]) N_ExtractCountryCode_Node0{"The system processes location
details for foreign cargo"}:::decision N_ExtractCountryCode_Node0_action["The country code is extracted and
assigned to the cargo record"]:::main N_ExtractCountryCode_Node0 -- Yes --> N_ExtractCountryCode_Node0_action N_ExtractCountryCode_Node0_action --> E_ExtractCountryCode S_ExtractCountryCode --> N_ExtractCountryCode_Node0 N_ExtractCountryCode_Node1{"The system processes manifest data
to identify country details"}:::decision N_ExtractCountryCode_Node1_action["The appropriate country code is
extracted and assigned to the cargo
record for customs and regulatory
purposes"]:::main N_ExtractCountryCode_Node1 -- Yes --> N_ExtractCountryCode_Node1_action N_ExtractCountryCode_Node1_action --> E_ExtractCountryCode N_ExtractCountryCode_Node0 -- No --> N_ExtractCountryCode_Node1 N_ExtractCountryCode_Node2{"The system processes the origin
information"}:::decision N_ExtractCountryCode_Node2_action["The system should extract and
validate the country code from the
manifest data"]:::main N_ExtractCountryCode_Node2 -- Yes --> N_ExtractCountryCode_Node2_action N_ExtractCountryCode_Node2_action --> E_ExtractCountryCode N_ExtractCountryCode_Node1 -- No --> N_ExtractCountryCode_Node2 N_ExtractCountryCode_Node3{"The system extracts country code
information"}:::decision N_ExtractCountryCode_Node3_action["The country code is extracted from
the designated position in the M10
segment"]:::main N_ExtractCountryCode_Node3 -- Yes --> N_ExtractCountryCode_Node3_action N_ExtractCountryCode_Node3_action --> E_ExtractCountryCode N_ExtractCountryCode_Node2 -- No --> N_ExtractCountryCode_Node3 N_ExtractCountryCode_Node3 -- No --> E_ExtractCountryCode
File: GCX016E.cbl
GIVEN: Manifest data contains country identification information
WHEN: The system processes location details for foreign cargo
THEN:
  • The country code is extracted
  • Assigned to the cargo record
File: GCX016E.cbl
GIVEN: M10 manifest segments containing country information
WHEN: The system processes manifest data to identify country details
THEN:
  • The appropriate country code is extracted
  • Assigned to the cargo record for customs
  • Regulatory purposes
File: GCX016E.cbl
GIVEN: Manifest data is available for a new foreign cargo record
WHEN: The system processes the origin information
THEN:
  • The system should extract
  • Validate the country code from the manifest data
File: GCX016E.cbl
GIVEN: An M10 segment with valid transport type is being processed
WHEN: The system extracts country code information
THEN: The country code is extracted from the designated position in the M10 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes vessel details for foreign cargo → vessel name, voyage number, and vessel identifiers are extracted and stored in the cargo record
  • The system processes manifest data to capture vessel details → vessel name, voyage number, and other conveyance details are extracted and recorded in the cargo record
  • The system processes the vessel information → the system should extract vessel name, voyage number, and other vessel identification details
  • The system extracts additional vessel details → voyage number, vessel flag, and other vessel identifiers are extracted from their respective positions in the M10 segment
  • The system processes vessel information fields from M10 segment → vessel name and identification details are extracted and prepared for manifest 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_ExtractVesselDetails(["Start Step"]) E_ExtractVesselDetails(["End Step"]) N_ExtractVesselDetails_Node0{"The system processes vessel details
for foreign cargo"}:::decision N_ExtractVesselDetails_Node0_action["Vessel name, voyage number, and
vessel identifiers are extracted and
stored in the cargo record"]:::main N_ExtractVesselDetails_Node0 -- Yes --> N_ExtractVesselDetails_Node0_action N_ExtractVesselDetails_Node0_action --> E_ExtractVesselDetails S_ExtractVesselDetails --> N_ExtractVesselDetails_Node0 N_ExtractVesselDetails_Node1{"The system processes manifest data
to capture vessel details"}:::decision N_ExtractVesselDetails_Node1_action["Vessel name, voyage number, and
other conveyance details are
extracted and recorded in the cargo
record"]:::main N_ExtractVesselDetails_Node1 -- Yes --> N_ExtractVesselDetails_Node1_action N_ExtractVesselDetails_Node1_action --> E_ExtractVesselDetails N_ExtractVesselDetails_Node0 -- No --> N_ExtractVesselDetails_Node1 N_ExtractVesselDetails_Node2{"The system processes the vessel
information"}:::decision N_ExtractVesselDetails_Node2_action["The system should extract vessel
name, voyage number, and other
vessel identification details"]:::main N_ExtractVesselDetails_Node2 -- Yes --> N_ExtractVesselDetails_Node2_action N_ExtractVesselDetails_Node2_action --> E_ExtractVesselDetails N_ExtractVesselDetails_Node1 -- No --> N_ExtractVesselDetails_Node2 N_ExtractVesselDetails_Node3{"The system extracts additional
vessel details"}:::decision N_ExtractVesselDetails_Node3_action["Voyage number, vessel flag, and
other vessel identifiers are
extracted from their respective
positions in the M10 segment"]:::main N_ExtractVesselDetails_Node3 -- Yes --> N_ExtractVesselDetails_Node3_action N_ExtractVesselDetails_Node3_action --> E_ExtractVesselDetails N_ExtractVesselDetails_Node2 -- No --> N_ExtractVesselDetails_Node3 N_ExtractVesselDetails_Node4{"The system processes vessel
information fields from M10 segment"}:::decision N_ExtractVesselDetails_Node4_action["Vessel name and identification
details are extracted and prepared
for manifest structure"]:::main N_ExtractVesselDetails_Node4 -- Yes --> N_ExtractVesselDetails_Node4_action N_ExtractVesselDetails_Node4_action --> E_ExtractVesselDetails N_ExtractVesselDetails_Node3 -- No --> N_ExtractVesselDetails_Node4 N_ExtractVesselDetails_Node4 -- No --> E_ExtractVesselDetails
File: GCX016E.cbl
GIVEN: M10 segments contain vessel identification and voyage information
WHEN: The system processes vessel details for foreign cargo
THEN:
  • Vessel name, voyage number, and vessel identifiers are extracted
  • Stored in the cargo record
File: GCX016E.cbl
GIVEN: M10 manifest segments containing vessel or conveyance information
WHEN: The system processes manifest data to capture vessel details
THEN:
  • Vessel name, voyage number, and other conveyance details are extracted
  • Recorded in the cargo record
File: GCX016E.cbl
GIVEN: M10 segment data is available for a new foreign cargo record
WHEN: The system processes the vessel information
THEN: The system should extract vessel name, voyage number, and other vessel identification details
File: GCX016E.cbl
GIVEN: A vessel name has been extracted from the M10 segment
WHEN: The system extracts additional vessel details
THEN: Voyage number, vessel flag, and other vessel identifiers are extracted from their respective positions in the M10 segment
File: GCX016E.cbl
GIVEN: Country code has been mapped from M10 segment
WHEN: The system processes vessel information fields from M10 segment
THEN:
  • Vessel name
  • Identification details are extracted
  • Prepared for manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system checks the insertion result → the system confirms successful record creation or identifies creation failures
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateRecordCreation(["Start Step"]) E_ValidateRecordCreation(["End Step"]) N_ValidateRecordCreation_Node0{"The system checks the insertion
result"}:::decision N_ValidateRecordCreation_Node0_action["The system confirms successful
record creation or identifies
creation failures"]:::main N_ValidateRecordCreation_Node0 -- Yes --> N_ValidateRecordCreation_Node0_action N_ValidateRecordCreation_Node0_action --> E_ValidateRecordCreation S_ValidateRecordCreation --> N_ValidateRecordCreation_Node0 N_ValidateRecordCreation_Node0 -- No --> E_ValidateRecordCreation
File: GCX016E.cbl
GIVEN: A cargo record insertion has been attempted
WHEN: The system checks the insertion result
THEN: The system confirms successful record creation or identifies creation failures
βœ“ Consolidated Acceptance Criteria
  • The system completes the cargo creation process → the cargo creation event is logged with relevant details for audit 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_LogForeignCargoCreation(["Start Step"]) E_LogForeignCargoCreation(["End Step"]) N_LogForeignCargoCreation_Node0{"The system completes the cargo
creation process"}:::decision N_LogForeignCargoCreation_Node0_action["The cargo creation event is logged
with relevant details for audit and
tracking"]:::main N_LogForeignCargoCreation_Node0 -- Yes --> N_LogForeignCargoCreation_Node0_action N_LogForeignCargoCreation_Node0_action --> E_LogForeignCargoCreation S_LogForeignCargoCreation --> N_LogForeignCargoCreation_Node0 N_LogForeignCargoCreation_Node0 -- No --> E_LogForeignCargoCreation
File: GCX016E.cbl
GIVEN: A foreign cargo record has been successfully created
WHEN: The system completes the cargo creation process
THEN:
  • The cargo creation event is logged with relevant details for audit
  • Tracking
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the cargo creation process → the system confirms successful creation of the foreign cargo record and makes it 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_ForeignCargoRecordCreatedSuccessfully(["Start Step"]) E_ForeignCargoRecordCreatedSuccessfully(["End Step"]) N_ForeignCargoRecordCreatedSuccessfully_Node0{"The system finalizes the cargo
creation process"}:::decision N_ForeignCargoRecordCreatedSuccessfully_Node0_action["The system confirms successful
creation of the foreign cargo record
and makes it available for further
processing"]:::main N_ForeignCargoRecordCreatedSuccessfully_Node0 -- Yes --> N_ForeignCargoRecordCreatedSuccessfully_Node0_action N_ForeignCargoRecordCreatedSuccessfully_Node0_action --> E_ForeignCargoRecordCreatedSuccessfully S_ForeignCargoRecordCreatedSuccessfully --> N_ForeignCargoRecordCreatedSuccessfully_Node0 N_ForeignCargoRecordCreatedSuccessfully_Node0 -- No --> E_ForeignCargoRecordCreatedSuccessfully
File: GCX016E.cbl
GIVEN: All foreign cargo creation steps have been completed
WHEN: The system finalizes the cargo creation process
THEN:
  • The system confirms successful creation of the foreign cargo record
  • Makes it available for further processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the N7 segment for car ID formatting → the equipment initial and number are concatenated and formatted into a standardized car 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_ApplyStandardFormattingRules(["Start Step"]) E_ApplyStandardFormattingRules(["End Step"]) N_ApplyStandardFormattingRules_Node0{"The system processes the N7 segment
for car ID formatting"}:::decision N_ApplyStandardFormattingRules_Node0_action["The equipment initial and number
are concatenated and formatted into
a standardized car ID format"]:::main N_ApplyStandardFormattingRules_Node0 -- Yes --> N_ApplyStandardFormattingRules_Node0_action N_ApplyStandardFormattingRules_Node0_action --> E_ApplyStandardFormattingRules S_ApplyStandardFormattingRules --> N_ApplyStandardFormattingRules_Node0 N_ApplyStandardFormattingRules_Node0 -- No --> E_ApplyStandardFormattingRules
File: GCX016E.cbl
GIVEN: An N7 segment contains equipment initial and equipment number
WHEN: The system processes the N7 segment for car ID formatting
THEN:
  • The equipment initial
  • Number are concatenated
  • Formatted into a standardized car id format
βœ“ Consolidated Acceptance Criteria
  • The system validates the car ID format → the car ID must meet specified length requirements and contain only valid characters
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateCarIDLengthandCharacters(["Start Step"]) E_ValidateCarIDLengthandCharacters(["End Step"]) N_ValidateCarIDLengthandCharacters_Node0{"The system validates the car ID
format"}:::decision N_ValidateCarIDLengthandCharacters_Node0_action["The car ID must meet specified
length requirements and contain only
valid characters"]:::main N_ValidateCarIDLengthandCharacters_Node0 -- Yes --> N_ValidateCarIDLengthandCharacters_Node0_action N_ValidateCarIDLengthandCharacters_Node0_action --> E_ValidateCarIDLengthandCharacters S_ValidateCarIDLengthandCharacters --> N_ValidateCarIDLengthandCharacters_Node0 N_ValidateCarIDLengthandCharacters_Node0 -- No --> E_ValidateCarIDLengthandCharacters
File: GCX016E.cbl
GIVEN: A formatted car ID from equipment initial and number
WHEN: The system validates the car ID format
THEN:
  • The car id must meet specified length requirements
  • Contain only valid characters
βœ“ Consolidated Acceptance Criteria
  • The system applies CPRS-specific formatting rules → the car ID is formatted according to CPRS business requirements which may clear or modify the standard car 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_ApplyCPRSSpecificFormatting(["Start Step"]) E_ApplyCPRSSpecificFormatting(["End Step"]) N_ApplyCPRSSpecificFormatting_Node0{"The system applies CPRS-specific
formatting rules"}:::decision N_ApplyCPRSSpecificFormatting_Node0_action["The car ID is formatted according
to CPRS business requirements which
may clear or modify the standard car
ID format"]:::main N_ApplyCPRSSpecificFormatting_Node0 -- Yes --> N_ApplyCPRSSpecificFormatting_Node0_action N_ApplyCPRSSpecificFormatting_Node0_action --> E_ApplyCPRSSpecificFormatting S_ApplyCPRSSpecificFormatting --> N_ApplyCPRSSpecificFormatting_Node0 N_ApplyCPRSSpecificFormatting_Node0 -- No --> E_ApplyCPRSSpecificFormatting
File: GCX016E.cbl
GIVEN: A car ID that belongs to CPRS traffic type
WHEN: The system applies CPRS-specific formatting rules
THEN: The car ID is formatted according to CPRS business requirements which may clear or modify the standard car ID format
βœ“ Consolidated Acceptance Criteria
  • The system applies standard formatting rules → the car ID is formatted using standard business 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_ApplyStandardFormatting(["Start Step"]) E_ApplyStandardFormatting(["End Step"]) N_ApplyStandardFormatting_Node0{"The system applies standard
formatting rules"}:::decision N_ApplyStandardFormatting_Node0_action["The car ID is formatted using
standard business formatting
requirements"]:::main N_ApplyStandardFormatting_Node0 -- Yes --> N_ApplyStandardFormatting_Node0_action N_ApplyStandardFormatting_Node0_action --> E_ApplyStandardFormatting S_ApplyStandardFormatting --> N_ApplyStandardFormatting_Node0 N_ApplyStandardFormatting_Node0 -- No --> E_ApplyStandardFormatting
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A car ID that is not CPRS traffic type
WHEN: The system applies standard formatting rules
THEN: The car ID is formatted using standard business formatting requirements
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → the car ID information is stored in the cargo record for future processing 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_UpdateCarIDinCargoRecord(["Start Step"]) E_UpdateCarIDinCargoRecord(["End Step"]) N_UpdateCarIDinCargoRecord_Node0{"The system updates the cargo record"}:::decision N_UpdateCarIDinCargoRecord_Node0_action["The car ID information is stored in
the cargo record for future
processing and tracking"]:::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: GCX016E.cbl
GIVEN: A properly formatted and validated car ID
WHEN: The system updates the cargo record
THEN:
  • The car id information is stored in the cargo record for future processing
  • Tracking
βœ“ Consolidated Acceptance Criteria
  • The system detects invalid car ID format → an appropriate format error is generated to indicate the car ID formatting 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_GenerateFormatError(["Start Step"]) E_GenerateFormatError(["End Step"]) N_GenerateFormatError_Node0{"The system detects invalid car ID
format"}:::decision N_GenerateFormatError_Node0_action["An appropriate format error is
generated to indicate the car ID
formatting issue"]:::exclusion N_GenerateFormatError_Node0 -- Yes -->|Alternative| N_GenerateFormatError_Node0_action N_GenerateFormatError_Node0_action --> E_GenerateFormatError S_GenerateFormatError --> N_GenerateFormatError_Node0 N_GenerateFormatError_Node0 -- No --> E_GenerateFormatError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A car ID that fails format validation
WHEN: The system detects invalid car ID format
THEN: An appropriate format error is generated to indicate the car ID formatting issue
βœ“ Consolidated Acceptance Criteria
  • The system completes car ID formatting (successful or with errors) → the formatting action and results are logged for audit trail 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_LogFormattingAction(["Start Step"]) E_LogFormattingAction(["End Step"]) N_LogFormattingAction_Node0{"The system completes car ID
formatting successful or with errors"}:::decision N_LogFormattingAction_Node0_action["The formatting action and results
are logged for audit trail and
troubleshooting purposes"]:::main N_LogFormattingAction_Node0 -- Yes --> N_LogFormattingAction_Node0_action N_LogFormattingAction_Node0_action --> E_LogFormattingAction S_LogFormattingAction --> N_LogFormattingAction_Node0 N_LogFormattingAction_Node0 -- No --> E_LogFormattingAction
File: GCX016E.cbl
GIVEN: A completed car ID formatting process
WHEN: The system completes car ID formatting (successful or with errors)
THEN:
  • The formatting action
  • Results are logged for audit trail
  • Troubleshooting purposes
βœ“ Consolidated Acceptance Criteria
  • The disposition code is 95 → the system should 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_CargoDispositionCodeProcessing(["Start Step"]) E_CargoDispositionCodeProcessing(["End Step"]) N_CargoDispositionCodeProcessing_Node0{"The disposition code is 95"}:::decision N_CargoDispositionCodeProcessing_Node0_action["The system should initiate bond
information clearing process"]:::main N_CargoDispositionCodeProcessing_Node0 -- Yes --> N_CargoDispositionCodeProcessing_Node0_action N_CargoDispositionCodeProcessing_Node0_action --> E_CargoDispositionCodeProcessing S_CargoDispositionCodeProcessing --> N_CargoDispositionCodeProcessing_Node0 N_CargoDispositionCodeProcessing_Node0 -- No --> E_CargoDispositionCodeProcessing
File: GCX016E.cbl
GIVEN: A cargo is being processed with disposition codes
WHEN: The disposition code is 95
THEN: The system should initiate bond information clearing process
βœ“ Consolidated Acceptance Criteria
  • The system validates the authorization for DC95 → the system should verify the disposition code is valid and authorized before proceeding with 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_ValidateDC95Authorization(["Start Step"]) E_ValidateDC95Authorization(["End Step"]) N_ValidateDC95Authorization_Node0{"The system validates the
authorization for DC95"}:::decision N_ValidateDC95Authorization_Node0_action["The system should verify the
disposition code is valid and
authorized before proceeding with
bond clearing"]:::main N_ValidateDC95Authorization_Node0 -- Yes --> N_ValidateDC95Authorization_Node0_action N_ValidateDC95Authorization_Node0_action --> E_ValidateDC95Authorization S_ValidateDC95Authorization --> N_ValidateDC95Authorization_Node0 N_ValidateDC95Authorization_Node0 -- No --> E_ValidateDC95Authorization
File: GCX016E.cbl
GIVEN: Disposition code 95 has been identified for processing
WHEN: The system validates the authorization for DC95
THEN:
  • The system should verify the disposition code is valid
  • Authorized before proceeding with bond clearing
βœ“ Consolidated Acceptance Criteria
  • The system continues bond information clearing → all M12 data fields should be cleared or 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_ClearM12Data(["Start Step"]) E_ClearM12Data(["End Step"]) N_ClearM12Data_Node0{"The system continues bond
information clearing"}:::decision N_ClearM12Data_Node0_action["All M12 data fields should be
cleared or reset to initial values"]:::main N_ClearM12Data_Node0 -- Yes --> N_ClearM12Data_Node0_action N_ClearM12Data_Node0_action --> E_ClearM12Data S_ClearM12Data --> N_ClearM12Data_Node0 N_ClearM12Data_Node0 -- No --> E_ClearM12Data
File: GCX016E.cbl
GIVEN: BOL type code has been cleared
WHEN: The system continues bond information clearing
THEN: All M12 data fields should be cleared or reset to initial values
βœ“ Consolidated Acceptance Criteria
  • The system generates notifications → a cancellation notification should be generated and sent to appropriate recipients regarding the 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_GenerateCancellationNotification(["Start Step"]) E_GenerateCancellationNotification(["End Step"]) N_GenerateCancellationNotification_Node0{"The system generates notifications"}:::decision N_GenerateCancellationNotification_Node0_action["A cancellation notification should
be generated and sent to appropriate
recipients regarding the bond
clearing"]:::main N_GenerateCancellationNotification_Node0 -- Yes --> N_GenerateCancellationNotification_Node0_action N_GenerateCancellationNotification_Node0_action --> E_GenerateCancellationNotification S_GenerateCancellationNotification --> N_GenerateCancellationNotification_Node0 N_GenerateCancellationNotification_Node0 -- No --> E_GenerateCancellationNotification
File: GCX016E.cbl
GIVEN: Cargo status has been updated after bond clearing
WHEN: The system generates notifications
THEN:
  • A cancellation notification should be generated
  • Sent to appropriate recipients regarding the bond clearing
βœ“ Consolidated Acceptance Criteria
  • The system checks the entry number format → the entry number is validated for proper format structure and marked as valid or invalid 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_CheckEntryNumberFormat(["Start Step"]) E_CheckEntryNumberFormat(["End Step"]) N_CheckEntryNumberFormat_Node0{"The system checks the entry number
format"}:::decision N_CheckEntryNumberFormat_Node0_action["The entry number is validated for
proper format structure and marked
as valid or invalid format"]:::main N_CheckEntryNumberFormat_Node0 -- Yes --> N_CheckEntryNumberFormat_Node0_action N_CheckEntryNumberFormat_Node0_action --> E_CheckEntryNumberFormat S_CheckEntryNumberFormat --> N_CheckEntryNumberFormat_Node0 N_CheckEntryNumberFormat_Node0 -- No --> E_CheckEntryNumberFormat
File: GCX016E.cbl
GIVEN: An entry number is received from X4 segment
WHEN: The system checks the entry number format
THEN:
  • The entry number is validated for proper format structure
  • Marked as valid or invalid format
βœ“ Consolidated Acceptance Criteria
  • The system searches existing broker entry numbers in the database → if broker entry number is found, mark entry number as valid, otherwise continue to next validation 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_SearchExistingBrokerEntryNumbers(["Start Step"]) E_SearchExistingBrokerEntryNumbers(["End Step"]) N_SearchExistingBrokerEntryNumbers_Node0{"The system searches existing broker
entry numbers in the database"}:::decision N_SearchExistingBrokerEntryNumbers_Node0_action["If broker entry number is found,
mark entry number as valid,
otherwise continue to next
validation step"]:::main N_SearchExistingBrokerEntryNumbers_Node0 -- Yes --> N_SearchExistingBrokerEntryNumbers_Node0_action N_SearchExistingBrokerEntryNumbers_Node0_action --> E_SearchExistingBrokerEntryNumbers S_SearchExistingBrokerEntryNumbers --> N_SearchExistingBrokerEntryNumbers_Node0 N_SearchExistingBrokerEntryNumbers_Node0 -- No --> E_SearchExistingBrokerEntryNumbers
File: GCX016E.cbl
GIVEN: An entry number with valid format
WHEN: The system searches existing broker entry numbers in the database
THEN: If broker entry number is found, mark entry number as valid, otherwise continue to next validation step
βœ“ Consolidated Acceptance Criteria
  • The system searches in-bond control numbers in the database → if in-bond control number is found, mark entry number as valid, otherwise continue to next validation 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_SearchInBondControlNumbers(["Start Step"]) E_SearchInBondControlNumbers(["End Step"]) N_SearchInBondControlNumbers_Node0{"The system searches in-bond control
numbers in the database"}:::decision N_SearchInBondControlNumbers_Node0_action["If in-bond control number is found,
mark entry number as valid,
otherwise continue to next
validation step"]:::main N_SearchInBondControlNumbers_Node0 -- Yes --> N_SearchInBondControlNumbers_Node0_action N_SearchInBondControlNumbers_Node0_action --> E_SearchInBondControlNumbers S_SearchInBondControlNumbers --> N_SearchInBondControlNumbers_Node0 N_SearchInBondControlNumbers_Node0 -- No --> E_SearchInBondControlNumbers
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An entry number that was not found in broker entry numbers
WHEN: The system searches in-bond control numbers in the database
THEN: If in-bond control number is found, mark entry number as valid, otherwise continue to next validation step
βœ“ Consolidated Acceptance Criteria
  • The system searches special V37 entries in the database → if V37 entry is found, mark entry number as valid, otherwise generate entry number 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_CheckforSpecialV37Entries(["Start Step"]) E_CheckforSpecialV37Entries(["End Step"]) N_CheckforSpecialV37Entries_Node0{"The system searches special V37
entries in the database"}:::decision N_CheckforSpecialV37Entries_Node0_action["If V37 entry is found, mark entry
number as valid, otherwise generate
entry number error"]:::main N_CheckforSpecialV37Entries_Node0 -- Yes --> N_CheckforSpecialV37Entries_Node0_action N_CheckforSpecialV37Entries_Node0_action --> E_CheckforSpecialV37Entries S_CheckforSpecialV37Entries --> N_CheckforSpecialV37Entries_Node0 N_CheckforSpecialV37Entries_Node0 -- No --> E_CheckforSpecialV37Entries
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An entry number that was not found in broker entry numbers or in-bond control numbers
WHEN: The system searches special V37 entries in the database
THEN: If V37 entry is found, mark entry number as valid, otherwise generate entry number error
βœ“ Consolidated Acceptance Criteria
  • The system marks the entry number as valid → set in-bond processing flag, log entry number validation success, and continue with 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_MarkEntryNumberasValid(["Start Step"]) E_MarkEntryNumberasValid(["End Step"]) N_MarkEntryNumberasValid_Node0{"The system marks the entry number
as valid"}:::decision N_MarkEntryNumberasValid_Node0_action["Set in-bond processing flag, log
entry number validation success, and
continue with in-bond processing"]:::main N_MarkEntryNumberasValid_Node0 -- Yes --> N_MarkEntryNumberasValid_Node0_action N_MarkEntryNumberasValid_Node0_action --> E_MarkEntryNumberasValid S_MarkEntryNumberasValid --> N_MarkEntryNumberasValid_Node0 N_MarkEntryNumberasValid_Node0 -- No --> E_MarkEntryNumberasValid
File: GCX016E.cbl
GIVEN: An entry number that has been found in broker entry numbers, in-bond control numbers, or special V37 entries
WHEN: The system marks the entry number as valid
THEN: Set in-bond processing flag, log entry number validation success, and continue with in-bond processing
βœ“ Consolidated Acceptance Criteria
  • The system generates entry number error → log entry number validation failure and skip 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_GenerateEntryNumberError(["Start Step"]) E_GenerateEntryNumberError(["End Step"]) N_GenerateEntryNumberError_Node0{"The system generates entry number
error"}:::decision N_GenerateEntryNumberError_Node0_action["Log entry number validation failure
and skip in-bond processing"]:::exclusion N_GenerateEntryNumberError_Node0 -- Yes -->|Alternative| N_GenerateEntryNumberError_Node0_action N_GenerateEntryNumberError_Node0_action --> E_GenerateEntryNumberError S_GenerateEntryNumberError --> N_GenerateEntryNumberError_Node0 N_GenerateEntryNumberError_Node0 -- No --> E_GenerateEntryNumberError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An entry number that has invalid format or was not found in any validation databases
WHEN: The system generates entry number error
THEN:
  • Log entry number validation failure
  • Skip in-bond processing
βœ“ Consolidated Acceptance Criteria
  • If if entry number has valid format → if format is valid, proceed to search existing broker entry numbers, otherwise generate entry number 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_EntryNumberValidFormat(["Start Step"]) E_EntryNumberValidFormat(["End Step"]) N_EntryNumberValidFormat_Node0{"The system evaluates if entry
number has valid format"}:::decision N_EntryNumberValidFormat_Node0_action["If format is valid, proceed to
search existing broker entry
numbers, otherwise generate entry
number error"]:::main N_EntryNumberValidFormat_Node0 -- Yes --> N_EntryNumberValidFormat_Node0_action N_EntryNumberValidFormat_Node0_action --> E_EntryNumberValidFormat S_EntryNumberValidFormat --> N_EntryNumberValidFormat_Node0 N_EntryNumberValidFormat_Node0 -- No --> E_EntryNumberValidFormat
File: GCX016E.cbl
GIVEN: An entry number format validation result
WHEN: The system evaluates if entry number has valid format
THEN: If format is valid, proceed to search existing broker entry numbers, otherwise generate entry number error
βœ“ Consolidated Acceptance Criteria
  • If if broker entry number was found → if broker entry number is found, mark entry number as valid, otherwise search in-bond control 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_BrokerEntryNumberFound(["Start Step"]) E_BrokerEntryNumberFound(["End Step"]) N_BrokerEntryNumberFound_Node0{"The system evaluates if broker
entry number was found"}:::decision N_BrokerEntryNumberFound_Node0_action["If broker entry number is found,
mark entry number as valid,
otherwise search in-bond control
numbers"]:::main N_BrokerEntryNumberFound_Node0 -- Yes --> N_BrokerEntryNumberFound_Node0_action N_BrokerEntryNumberFound_Node0_action --> E_BrokerEntryNumberFound S_BrokerEntryNumberFound --> N_BrokerEntryNumberFound_Node0 N_BrokerEntryNumberFound_Node0 -- No --> E_BrokerEntryNumberFound
File: GCX016E.cbl
GIVEN: A broker entry number search result
WHEN: The system evaluates if broker entry number was found
THEN: If broker entry number is found, mark entry number as valid, otherwise search in-bond control numbers
βœ“ Consolidated Acceptance Criteria
  • If if in-bond control number was found → if in-bond control number is found, mark entry number as valid, otherwise check for special V37 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_InBondControlNumberFound(["Start Step"]) E_InBondControlNumberFound(["End Step"]) N_InBondControlNumberFound_Node0{"The system evaluates if in-bond
control number was found"}:::decision N_InBondControlNumberFound_Node0_action["If in-bond control number is found,
mark entry number as valid,
otherwise check for special V37
entries"]:::main N_InBondControlNumberFound_Node0 -- Yes --> N_InBondControlNumberFound_Node0_action N_InBondControlNumberFound_Node0_action --> E_InBondControlNumberFound S_InBondControlNumberFound --> N_InBondControlNumberFound_Node0 N_InBondControlNumberFound_Node0 -- No --> E_InBondControlNumberFound
File: GCX016E.cbl
GIVEN: An in-bond control number search result
WHEN: The system evaluates if in-bond control number was found
THEN: If in-bond control number is found, mark entry number as valid, otherwise check for special V37 entries
βœ“ Consolidated Acceptance Criteria
  • If if V37 entry was found → if V37 entry is found, mark entry number as valid, otherwise generate entry number 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_V37EntryFound(["Start Step"]) E_V37EntryFound(["End Step"]) N_V37EntryFound_Node0{"The system evaluates if V37 entry
was found"}:::decision N_V37EntryFound_Node0_action["If V37 entry is found, mark entry
number as valid, otherwise generate
entry number error"]:::main N_V37EntryFound_Node0 -- Yes --> N_V37EntryFound_Node0_action N_V37EntryFound_Node0_action --> E_V37EntryFound S_V37EntryFound --> N_V37EntryFound_Node0 N_V37EntryFound_Node0 -- No --> E_V37EntryFound
File: GCX016E.cbl
GIVEN: A special V37 entry search result
WHEN: The system evaluates if V37 entry was found
THEN: If V37 entry is found, mark entry number as valid, otherwise generate entry number error
βœ“ Consolidated Acceptance Criteria
  • The system searches the entry type conversion arrays for a matching EDI code → return the corresponding internal system entry type value if found in the conversion arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_LookupEntryTypeinConversionArray(["Start Step"]) E_LookupEntryTypeinConversionArray(["End Step"]) N_LookupEntryTypeinConversionArray_Node0{"The system searches the entry type
conversion arrays for a matching EDI
code"}:::decision N_LookupEntryTypeinConversionArray_Node0_action["Return the corresponding internal
system entry type value if found in
the conversion arrays"]:::main N_LookupEntryTypeinConversionArray_Node0 -- Yes --> N_LookupEntryTypeinConversionArray_Node0_action N_LookupEntryTypeinConversionArray_Node0_action --> E_LookupEntryTypeinConversionArray S_LookupEntryTypeinConversionArray --> N_LookupEntryTypeinConversionArray_Node0 N_LookupEntryTypeinConversionArray_Node0 -- No --> E_LookupEntryTypeinConversionArray
File: GCX016E.cbl
GIVEN: An EDI entry type code is present in the X4 segment
WHEN: The system searches the entry type conversion arrays for a matching EDI code
THEN: Return the corresponding internal system entry type value if found in the conversion arrays
βœ“ Consolidated Acceptance Criteria
  • If the lookup result → if valid entry type found, proceed with conversion; if invalid, generate error; if not found, use default 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_ValidEntryTypeFound(["Start Step"]) E_ValidEntryTypeFound(["End Step"]) N_ValidEntryTypeFound_Node0{"The system evaluates the lookup
result"}:::decision N_ValidEntryTypeFound_Node0_action["If valid entry type found, proceed
with conversion if invalid, generate
error if not found, use default
value"]:::main N_ValidEntryTypeFound_Node0 -- Yes --> N_ValidEntryTypeFound_Node0_action N_ValidEntryTypeFound_Node0_action --> E_ValidEntryTypeFound S_ValidEntryTypeFound --> N_ValidEntryTypeFound_Node0 N_ValidEntryTypeFound_Node0 -- No --> E_ValidEntryTypeFound
File: GCX016E.cbl
GIVEN: Entry type code lookup has been performed in conversion arrays
WHEN: The system evaluates the lookup result
THEN: If valid entry type found, proceed with conversion; if invalid, generate error; if not found, use default value
βœ“ Consolidated Acceptance Criteria
  • The system performs the conversion from EDI format to internal format → the EDI entry type code is converted to the corresponding internal system entry type 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_ConvertEDICodetoInternalSystemValue(["Start Step"]) E_ConvertEDICodetoInternalSystemValue(["End Step"]) N_ConvertEDICodetoInternalSystemValue_Node0{"The system performs the conversion
from EDI format to internal format"}:::decision N_ConvertEDICodetoInternalSystemValue_Node0_action["The EDI entry type code is
converted to the corresponding
internal system entry type value"]:::main N_ConvertEDICodetoInternalSystemValue_Node0 -- Yes --> N_ConvertEDICodetoInternalSystemValue_Node0_action N_ConvertEDICodetoInternalSystemValue_Node0_action --> E_ConvertEDICodetoInternalSystemValue S_ConvertEDICodetoInternalSystemValue --> N_ConvertEDICodetoInternalSystemValue_Node0 N_ConvertEDICodetoInternalSystemValue_Node0 -- No --> E_ConvertEDICodetoInternalSystemValue
File: GCX016E.cbl
GIVEN: A valid entry type code has been found in the conversion arrays
WHEN: The system performs the conversion from EDI format to internal format
THEN: The EDI entry type code is converted to the corresponding internal system entry type value
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → store the converted entry type value 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_UpdateCargoRecordwithConvertedEntryType(["Start Step"]) E_UpdateCargoRecordwithConvertedEntryType(["End Step"]) N_UpdateCargoRecordwithConvertedEntryType_Node0{"The system updates the cargo record"}:::decision N_UpdateCargoRecordwithConvertedEntryType_Node0_action["Store the converted entry type
value in the cargo record"]:::main N_UpdateCargoRecordwithConvertedEntryType_Node0 -- Yes --> N_UpdateCargoRecordwithConvertedEntryType_Node0_action N_UpdateCargoRecordwithConvertedEntryType_Node0_action --> E_UpdateCargoRecordwithConvertedEntryType S_UpdateCargoRecordwithConvertedEntryType --> N_UpdateCargoRecordwithConvertedEntryType_Node0 N_UpdateCargoRecordwithConvertedEntryType_Node0 -- No --> E_UpdateCargoRecordwithConvertedEntryType
File: GCX016E.cbl
GIVEN: Entry type conversion is complete and any special rules have been applied
WHEN: The system updates the cargo record
THEN: Store the converted entry type value in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system performs logging operations → create a log entry documenting the entry type conversion 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_LogEntryTypeConversionAction(["Start Step"]) E_LogEntryTypeConversionAction(["End Step"]) N_LogEntryTypeConversionAction_Node0{"The system performs logging
operations"}:::decision N_LogEntryTypeConversionAction_Node0_action["Create a log entry documenting the
entry type conversion action"]:::main N_LogEntryTypeConversionAction_Node0 -- Yes --> N_LogEntryTypeConversionAction_Node0_action N_LogEntryTypeConversionAction_Node0_action --> E_LogEntryTypeConversionAction S_LogEntryTypeConversionAction --> N_LogEntryTypeConversionAction_Node0 N_LogEntryTypeConversionAction_Node0 -- No --> E_LogEntryTypeConversionAction
File: GCX016E.cbl
GIVEN: Entry type conversion and cargo record update are complete
WHEN: The system performs logging operations
THEN: Create a log entry documenting the entry type conversion action
βœ“ Consolidated Acceptance Criteria
  • The system needs to assign an entry type value → use the default entry type value and proceed with 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_UseDefaultEntryTypeValue(["Start Step"]) E_UseDefaultEntryTypeValue(["End Step"]) N_UseDefaultEntryTypeValue_Node0{"The system needs to assign an entry
type value"}:::decision N_UseDefaultEntryTypeValue_Node0_action["Use the default entry type value
and proceed with cargo record update"]:::main N_UseDefaultEntryTypeValue_Node0 -- Yes --> N_UseDefaultEntryTypeValue_Node0_action N_UseDefaultEntryTypeValue_Node0_action --> E_UseDefaultEntryTypeValue S_UseDefaultEntryTypeValue --> N_UseDefaultEntryTypeValue_Node0 N_UseDefaultEntryTypeValue_Node0 -- No --> E_UseDefaultEntryTypeValue
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Entry type code lookup did not find a valid conversion
WHEN: The system needs to assign an entry type value
THEN:
  • Use the default entry type value
  • Proceed with cargo record update
βœ“ Consolidated Acceptance Criteria
  • The system encounters an invalid entry type code → generate an entry type conversion error 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_GenerateEntryTypeConversionError(["Start Step"]) E_GenerateEntryTypeConversionError(["End Step"]) N_GenerateEntryTypeConversionError_Node0{"The system encounters an invalid
entry type code"}:::decision N_GenerateEntryTypeConversionError_Node0_action["Generate an entry type conversion
error and continue processing"]:::exclusion N_GenerateEntryTypeConversionError_Node0 -- Yes -->|Alternative| N_GenerateEntryTypeConversionError_Node0_action N_GenerateEntryTypeConversionError_Node0_action --> E_GenerateEntryTypeConversionError S_GenerateEntryTypeConversionError --> N_GenerateEntryTypeConversionError_Node0 N_GenerateEntryTypeConversionError_Node0 -- No --> E_GenerateEntryTypeConversionError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Entry type code is present but invalid or conversion fails
WHEN: The system encounters an invalid entry type code
THEN:
  • Generate an entry type conversion error
  • Continue processing
βœ“ Consolidated Acceptance Criteria
  • If entry type processing requirements → skip all entry type conversion processing and continue 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_SkipEntryTypeProcessing(["Start Step"]) E_SkipEntryTypeProcessing(["End Step"]) N_SkipEntryTypeProcessing_Node0{"The system evaluates entry type
processing requirements"}:::decision N_SkipEntryTypeProcessing_Node0_action["Skip all entry type conversion
processing and continue to next
processing step"]:::main N_SkipEntryTypeProcessing_Node0 -- Yes --> N_SkipEntryTypeProcessing_Node0_action N_SkipEntryTypeProcessing_Node0_action --> E_SkipEntryTypeProcessing S_SkipEntryTypeProcessing --> N_SkipEntryTypeProcessing_Node0 N_SkipEntryTypeProcessing_Node0 -- No --> E_SkipEntryTypeProcessing
File: GCX016E.cbl
GIVEN: No entry type code is present in the X4 segment
WHEN: The system evaluates entry type processing requirements
THEN:
  • Skip all entry type conversion processing
  • Continue to next processing step
βœ“ Consolidated Acceptance Criteria
  • The entry type code is not present or the entry type code value is not 61, 62, 63, or 69 → continue with standard entry processing without setting master in-bond 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_ContinuewithStandardEntryProcessing(["Start Step"]) E_ContinuewithStandardEntryProcessing(["End Step"]) N_ContinuewithStandardEntryProcessing_Node0{"The entry type code is not present
or the entry type code value is not
61, 62, 63, or 69"}:::decision N_ContinuewithStandardEntryProcessing_Node0_action["Continue with standard entry
processing without setting master
in-bond flags"]:::main N_ContinuewithStandardEntryProcessing_Node0 -- Yes --> N_ContinuewithStandardEntryProcessing_Node0_action N_ContinuewithStandardEntryProcessing_Node0_action --> E_ContinuewithStandardEntryProcessing S_ContinuewithStandardEntryProcessing --> N_ContinuewithStandardEntryProcessing_Node0 N_ContinuewithStandardEntryProcessing_Node0 -- No --> E_ContinuewithStandardEntryProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An X4 segment is being processed
WHEN: The entry type code is not present or the entry type code value is not 61, 62, 63, or 69
THEN: Continue with standard entry processing without setting master in-bond flags
βœ“ Consolidated Acceptance Criteria
  • The cargo record needs to be updated with the master in-bond status → the cargo record is updated to reflect the master in-bond status for the specific entry type 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_UpdateCargoRecordwithMasterInBondStatus(["Start Step"]) E_UpdateCargoRecordwithMasterInBondStatus(["End Step"]) N_UpdateCargoRecordwithMasterInBondStatus_Node0{"The cargo record needs to be
updated with the master in-bond
status"}:::decision N_UpdateCargoRecordwithMasterInBondStatus_Node0_action["The cargo record is updated to
reflect the master in-bond status
for the specific entry type code"]:::main N_UpdateCargoRecordwithMasterInBondStatus_Node0 -- Yes --> N_UpdateCargoRecordwithMasterInBondStatus_Node0_action N_UpdateCargoRecordwithMasterInBondStatus_Node0_action --> E_UpdateCargoRecordwithMasterInBondStatus S_UpdateCargoRecordwithMasterInBondStatus --> N_UpdateCargoRecordwithMasterInBondStatus_Node0 N_UpdateCargoRecordwithMasterInBondStatus_Node0 -- No --> E_UpdateCargoRecordwithMasterInBondStatus
File: GCX016E.cbl
GIVEN: A master in-bond flag has been set for entry type codes 61, 62, 63, or 69
WHEN: The cargo record needs to be updated with the master in-bond status
THEN: The cargo record is updated to reflect the master in-bond status for the specific entry type code
βœ“ Consolidated Acceptance Criteria
  • The master in-bond flag setting action needs to be logged → the system logs the master in-bond flag setting action 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_LogMasterInBondFlagSettingAction(["Start Step"]) E_LogMasterInBondFlagSettingAction(["End Step"]) N_LogMasterInBondFlagSettingAction_Node0{"The master in-bond flag setting
action needs to be logged"}:::decision N_LogMasterInBondFlagSettingAction_Node0_action["The system logs the master in-bond
flag setting action for audit trail
purposes"]:::main N_LogMasterInBondFlagSettingAction_Node0 -- Yes --> N_LogMasterInBondFlagSettingAction_Node0_action N_LogMasterInBondFlagSettingAction_Node0_action --> E_LogMasterInBondFlagSettingAction S_LogMasterInBondFlagSettingAction --> N_LogMasterInBondFlagSettingAction_Node0 N_LogMasterInBondFlagSettingAction_Node0 -- No --> E_LogMasterInBondFlagSettingAction
File: GCX016E.cbl
GIVEN: A master in-bond flag has been set and cargo record has been updated
WHEN: The master in-bond flag setting action needs to be logged
THEN: The system logs the master in-bond flag setting action for audit trail purposes
βœ“ Consolidated Acceptance Criteria
  • If cargo characteristics for cross-border requirements → the cargo is identified as cross-border if it meets the criteria for international movement between US and Canadian 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_IsCargoCrossBorder(["Start Step"]) E_IsCargoCrossBorder(["End Step"]) N_IsCargoCrossBorder_Node0{"The system evaluates cargo
characteristics for cross-border
requirements"}:::decision N_IsCargoCrossBorder_Node0_action["The cargo is identified as
cross-border if it meets the
criteria for international movement
between US and Canadian borders"]:::main N_IsCargoCrossBorder_Node0 -- Yes --> N_IsCargoCrossBorder_Node0_action N_IsCargoCrossBorder_Node0_action --> E_IsCargoCrossBorder S_IsCargoCrossBorder --> N_IsCargoCrossBorder_Node0 N_IsCargoCrossBorder_Node0 -- No --> E_IsCargoCrossBorder
File: GCX016E.cbl
GIVEN: A cargo record with location and routing data is being processed
WHEN: The system evaluates cargo characteristics for cross-border requirements
THEN:
  • The cargo is identified as cross-border if it meets the criteria for international movement between us
  • Canadian borders
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo location data → the US port code is extracted from the location data 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_ExtractUSPortCodefromLocationData(["Start Step"]) E_ExtractUSPortCodefromLocationData(["End Step"]) N_ExtractUSPortCodefromLocationData_Node0{"The system processes the cargo
location data"}:::decision N_ExtractUSPortCodefromLocationData_Node0_action["The US port code is extracted from
the location data for further
processing"]:::main N_ExtractUSPortCodefromLocationData_Node0 -- Yes --> N_ExtractUSPortCodefromLocationData_Node0_action N_ExtractUSPortCodefromLocationData_Node0_action --> E_ExtractUSPortCodefromLocationData S_ExtractUSPortCodefromLocationData --> N_ExtractUSPortCodefromLocationData_Node0 N_ExtractUSPortCodefromLocationData_Node0 -- No --> E_ExtractUSPortCodefromLocationData
File: GCX016E.cbl
GIVEN: Cross-border cargo with location data containing US port information
WHEN: The system processes the cargo location data
THEN: The US port code is extracted from the location data for further processing
βœ“ Consolidated Acceptance Criteria
  • The system finds a valid mapping entry → the corresponding Canadian border port name is retrieved from the 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_RetrieveCanadianBorderPortName(["Start Step"]) E_RetrieveCanadianBorderPortName(["End Step"]) N_RetrieveCanadianBorderPortName_Node0{"The system finds a valid mapping
entry"}:::decision N_RetrieveCanadianBorderPortName_Node0_action["The corresponding Canadian border
port name is retrieved from the
mapping table"]:::main N_RetrieveCanadianBorderPortName_Node0 -- Yes --> N_RetrieveCanadianBorderPortName_Node0_action N_RetrieveCanadianBorderPortName_Node0_action --> E_RetrieveCanadianBorderPortName S_RetrieveCanadianBorderPortName --> N_RetrieveCanadianBorderPortName_Node0 N_RetrieveCanadianBorderPortName_Node0 -- No --> E_RetrieveCanadianBorderPortName
File: GCX016E.cbl
GIVEN: A US port code that exists in the Canadian border mapping table
WHEN: The system finds a valid mapping entry
THEN: The corresponding Canadian border port name is retrieved from the mapping table
βœ“ Consolidated Acceptance Criteria
  • The system processes the mapping result → the Canadian border location is set in the cargo record 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_SetCanadianBorderLocationforCargo(["Start Step"]) E_SetCanadianBorderLocationforCargo(["End Step"]) N_SetCanadianBorderLocationforCargo_Node0{"The system processes the mapping
result"}:::decision N_SetCanadianBorderLocationforCargo_Node0_action["The Canadian border location is set
in the cargo record for cross-border
processing"]:::main N_SetCanadianBorderLocationforCargo_Node0 -- Yes --> N_SetCanadianBorderLocationforCargo_Node0_action N_SetCanadianBorderLocationforCargo_Node0_action --> E_SetCanadianBorderLocationforCargo S_SetCanadianBorderLocationforCargo --> N_SetCanadianBorderLocationforCargo_Node0 N_SetCanadianBorderLocationforCargo_Node0 -- No --> E_SetCanadianBorderLocationforCargo
File: GCX016E.cbl
GIVEN: A Canadian border port name has been successfully retrieved from the mapping table
WHEN: The system processes the mapping result
THEN: The Canadian border location is set in the cargo record for cross-border processing
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo routing information → the routing information is updated to include the Canadian border location for proper cargo 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_UpdateCargoRoutingInformation(["Start Step"]) E_UpdateCargoRoutingInformation(["End Step"]) N_UpdateCargoRoutingInformation_Node0{"The system updates cargo routing
information"}:::decision N_UpdateCargoRoutingInformation_Node0_action["The routing information is updated
to include the Canadian border
location for proper cargo flow"]:::main N_UpdateCargoRoutingInformation_Node0 -- Yes --> N_UpdateCargoRoutingInformation_Node0_action N_UpdateCargoRoutingInformation_Node0_action --> E_UpdateCargoRoutingInformation S_UpdateCargoRoutingInformation --> N_UpdateCargoRoutingInformation_Node0 N_UpdateCargoRoutingInformation_Node0 -- No --> E_UpdateCargoRoutingInformation
File: GCX016E.cbl
GIVEN: Cargo with a set Canadian border location
WHEN: The system updates cargo routing information
THEN: The routing information is updated to include the Canadian border location for proper cargo flow
βœ“ Consolidated Acceptance Criteria
  • The system completes the border location assignment → border crossing information is logged for audit trail and cargo 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_LogBorderCrossingInformation(["Start Step"]) E_LogBorderCrossingInformation(["End Step"]) N_LogBorderCrossingInformation_Node0{"The system completes the border
location assignment"}:::decision N_LogBorderCrossingInformation_Node0_action["Border crossing information is
logged for audit trail and cargo
tracking purposes"]:::main N_LogBorderCrossingInformation_Node0 -- Yes --> N_LogBorderCrossingInformation_Node0_action N_LogBorderCrossingInformation_Node0_action --> E_LogBorderCrossingInformation S_LogBorderCrossingInformation --> N_LogBorderCrossingInformation_Node0 N_LogBorderCrossingInformation_Node0 -- No --> E_LogBorderCrossingInformation
File: GCX016E.cbl
GIVEN: Cargo with updated routing information including Canadian border location
WHEN: The system completes the border location assignment
THEN:
  • Border crossing information is logged for audit trail
  • Cargo tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system cannot find a valid mapping for the port code → a default border location is assigned 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_UseDefaultBorderLocation(["Start Step"]) E_UseDefaultBorderLocation(["End Step"]) N_UseDefaultBorderLocation_Node0{"The system cannot find a valid
mapping for the port code"}:::decision N_UseDefaultBorderLocation_Node0_action["A default border location is
assigned to ensure cargo processing
can continue"]:::main N_UseDefaultBorderLocation_Node0 -- Yes --> N_UseDefaultBorderLocation_Node0_action N_UseDefaultBorderLocation_Node0_action --> E_UseDefaultBorderLocation S_UseDefaultBorderLocation --> N_UseDefaultBorderLocation_Node0 N_UseDefaultBorderLocation_Node0 -- No --> E_UseDefaultBorderLocation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A US port code that does not exist in the Canadian border mapping table
WHEN: The system cannot find a valid mapping for the port code
THEN: A default border location is assigned to ensure cargo processing can continue
βœ“ Consolidated Acceptance Criteria
  • The system assigns the default border location → a warning message is generated to alert users about the missing port code 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_GenerateWarningMessage(["Start Step"]) E_GenerateWarningMessage(["End Step"]) N_GenerateWarningMessage_Node0{"The system assigns the default
border location"}:::decision N_GenerateWarningMessage_Node0_action["A warning message is generated to
alert users about the missing port
code mapping"]:::main N_GenerateWarningMessage_Node0 -- Yes --> N_GenerateWarningMessage_Node0_action N_GenerateWarningMessage_Node0_action --> E_GenerateWarningMessage S_GenerateWarningMessage --> N_GenerateWarningMessage_Node0 N_GenerateWarningMessage_Node0 -- No --> E_GenerateWarningMessage
File: GCX016E.cbl
GIVEN: A US port code with no mapping found and default border location being used
WHEN: The system assigns the default border location
THEN: A warning message is generated to alert users about the missing port code mapping
βœ“ Consolidated Acceptance Criteria
  • Existing FDA data is found in the segment → the original FDA information should be preserved and not overwritten
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExistingFDADataFound(["Start Step"]) E_ExistingFDADataFound(["End Step"]) N_ExistingFDADataFound_Node0{"Existing FDA data is found in the
segment"}:::decision N_ExistingFDADataFound_Node0_action["The original FDA information should
be preserved and not overwritten"]:::main N_ExistingFDADataFound_Node0 -- Yes --> N_ExistingFDADataFound_Node0_action N_ExistingFDADataFound_Node0_action --> E_ExistingFDADataFound S_ExistingFDADataFound --> N_ExistingFDADataFound_Node0 N_ExistingFDADataFound_Node0 -- No --> E_ExistingFDADataFound
File: GCX016E.cbl
GIVEN: An N9 segment is being processed for FDA reference formatting
WHEN: Existing FDA data is found in the segment
THEN:
  • The original fda information should be preserved
  • Not overwritten
βœ“ Consolidated Acceptance Criteria
  • The system creates a new FDA reference entry → a new FDA reference entry should be created with appropriate prefix 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_CreateNewFDAReferenceEntry(["Start Step"]) E_CreateNewFDAReferenceEntry(["End Step"]) N_CreateNewFDAReferenceEntry_Node0{"The system creates a new FDA
reference entry"}:::decision N_CreateNewFDAReferenceEntry_Node0_action["A new FDA reference entry should be
created with appropriate prefix
formatting"]:::main N_CreateNewFDAReferenceEntry_Node0 -- Yes --> N_CreateNewFDAReferenceEntry_Node0_action N_CreateNewFDAReferenceEntry_Node0_action --> E_CreateNewFDAReferenceEntry S_CreateNewFDAReferenceEntry --> N_CreateNewFDAReferenceEntry_Node0 N_CreateNewFDAReferenceEntry_Node0 -- No --> E_CreateNewFDAReferenceEntry
File: GCX016E.cbl
GIVEN: An N9 segment is being processed and no existing FDA data is found
WHEN: The system creates a new FDA reference entry
THEN: A new FDA reference entry should be created with appropriate prefix formatting
βœ“ Consolidated Acceptance Criteria
  • The system updates the N9 segment with formatted data → the N9 segment should contain the properly formatted 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_UpdateN9SegmentwithFormattedData(["Start Step"]) E_UpdateN9SegmentwithFormattedData(["End Step"]) N_UpdateN9SegmentwithFormattedData_Node0{"The system updates the N9 segment
with formatted data"}:::decision N_UpdateN9SegmentwithFormattedData_Node0_action["The N9 segment should contain the
properly formatted FDA reference
information"]:::main N_UpdateN9SegmentwithFormattedData_Node0 -- Yes --> N_UpdateN9SegmentwithFormattedData_Node0_action N_UpdateN9SegmentwithFormattedData_Node0_action --> E_UpdateN9SegmentwithFormattedData S_UpdateN9SegmentwithFormattedData --> N_UpdateN9SegmentwithFormattedData_Node0 N_UpdateN9SegmentwithFormattedData_Node0 -- No --> E_UpdateN9SegmentwithFormattedData
File: GCX016E.cbl
GIVEN: FDA reference data has been formatted and validated
WHEN: The system updates the N9 segment with formatted data
THEN: The N9 segment should contain the properly formatted FDA reference information
βœ“ Consolidated Acceptance Criteria
  • If the disposition code type → the system routes to A1 code processing if disposition code is A1, routes to A3 code processing if disposition code is A3, or exits processing for any other 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_FDADispositionCode(["Start Step"]) E_FDADispositionCode(["End Step"]) N_FDADispositionCode_Node0{"The system evaluates the
disposition code type"}:::decision N_FDADispositionCode_Node0_action["The system routes to A1 code
processing if disposition code is
A1, routes to A3 code processing if
disposition code is A3, or exits
processing for any other disposition
code"]:::main N_FDADispositionCode_Node0 -- Yes --> N_FDADispositionCode_Node0_action N_FDADispositionCode_Node0_action --> E_FDADispositionCode S_FDADispositionCode --> N_FDADispositionCode_Node0 N_FDADispositionCode_Node0 -- No --> E_FDADispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is being processed for N9 reference segment management
WHEN: The system evaluates the disposition code type
THEN: The system routes to A1 code processing if disposition code is A1, routes to A3 code processing if disposition code is A3, or exits processing for any other disposition code
βœ“ Consolidated Acceptance Criteria
  • The system formats the FDA reference prefix → the system creates a PN prefix format for the FDA 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_FormatFDAPNPrefixforA1(["Start Step"]) E_FormatFDAPNPrefixforA1(["End Step"]) N_FormatFDAPNPrefixforA1_Node0{"The system formats the FDA
reference prefix"}:::decision N_FormatFDAPNPrefixforA1_Node0_action["The system creates a PN prefix
format for the FDA reference number"]:::main N_FormatFDAPNPrefixforA1_Node0 -- Yes --> N_FormatFDAPNPrefixforA1_Node0_action N_FormatFDAPNPrefixforA1_Node0_action --> E_FormatFDAPNPrefixforA1 S_FormatFDAPNPrefixforA1 --> N_FormatFDAPNPrefixforA1_Node0 N_FormatFDAPNPrefixforA1_Node0 -- No --> E_FormatFDAPNPrefixforA1
File: GCX016E.cbl
GIVEN: An A1 disposition code is being processed
WHEN: The system formats the FDA reference prefix
THEN: The system creates a PN prefix format for the FDA reference number
βœ“ Consolidated Acceptance Criteria
  • The system formats the FDA reference prefix → the system creates a standard FDA prefix format for the 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_FormatFDAPrefixforA3(["Start Step"]) E_FormatFDAPrefixforA3(["End Step"]) N_FormatFDAPrefixforA3_Node0{"The system formats the FDA
reference prefix"}:::decision N_FormatFDAPrefixforA3_Node0_action["The system creates a standard FDA
prefix format for the reference
number"]:::main N_FormatFDAPrefixforA3_Node0 -- Yes --> N_FormatFDAPrefixforA3_Node0_action N_FormatFDAPrefixforA3_Node0_action --> E_FormatFDAPrefixforA3 S_FormatFDAPrefixforA3 --> N_FormatFDAPrefixforA3_Node0 N_FormatFDAPrefixforA3_Node0 -- No --> E_FormatFDAPrefixforA3
File: GCX016E.cbl
GIVEN: An A3 disposition code is being processed
WHEN: The system formats the FDA reference prefix
THEN: The system creates a standard FDA prefix format for the reference number
βœ“ Consolidated Acceptance Criteria
  • The system validates the reference number format → the system proceeds with FDA reference information setting if the format is valid, or completes processing without updates if the 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_ReferenceNumberValid(["Start Step"]) E_ReferenceNumberValid(["End Step"]) N_ReferenceNumberValid_Node0{"The system validates the reference
number format"}:::decision N_ReferenceNumberValid_Node0_action["The system proceeds with FDA
reference information setting if the
format is valid, or completes
processing without updates if the
format is invalid"]:::main N_ReferenceNumberValid_Node0 -- Yes --> N_ReferenceNumberValid_Node0_action N_ReferenceNumberValid_Node0_action --> E_ReferenceNumberValid S_ReferenceNumberValid --> N_ReferenceNumberValid_Node0 N_ReferenceNumberValid_Node0 -- No --> E_ReferenceNumberValid
File: GCX016E.cbl
GIVEN: An FDA reference number has been formatted with the appropriate prefix
WHEN: The system validates the reference number format
THEN: The system proceeds with FDA reference information setting if the format is valid, or completes processing without updates if the format is invalid
βœ“ Consolidated Acceptance Criteria
  • The system processes the FDA reference information → the system creates a new N9 segment with the formatted FDA 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_CreateNewN9Segment(["Start Step"]) E_CreateNewN9Segment(["End Step"]) N_CreateNewN9Segment_Node0{"The system processes the FDA
reference information"}:::decision N_CreateNewN9Segment_Node0_action["The system creates a new N9 segment
with the formatted FDA reference
data"]:::main N_CreateNewN9Segment_Node0 -- Yes --> N_CreateNewN9Segment_Node0_action N_CreateNewN9Segment_Node0_action --> E_CreateNewN9Segment S_CreateNewN9Segment --> N_CreateNewN9Segment_Node0 N_CreateNewN9Segment_Node0 -- No --> E_CreateNewN9Segment
File: GCX016E.cbl
GIVEN: No existing N9 segment is found in the database
WHEN: The system processes the FDA reference information
THEN: The system creates a new N9 segment with the formatted FDA reference data
βœ“ Consolidated Acceptance Criteria
  • The system processes new FDA reference information → the system updates the existing N9 segment with the new 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_UpdateExistingN9Segment(["Start Step"]) E_UpdateExistingN9Segment(["End Step"]) N_UpdateExistingN9Segment_Node0{"The system processes new FDA
reference information"}:::decision N_UpdateExistingN9Segment_Node0_action["The system updates the existing N9
segment with the new reference data"]:::main N_UpdateExistingN9Segment_Node0 -- Yes --> N_UpdateExistingN9Segment_Node0_action N_UpdateExistingN9Segment_Node0_action --> E_UpdateExistingN9Segment S_UpdateExistingN9Segment --> N_UpdateExistingN9Segment_Node0 N_UpdateExistingN9Segment_Node0 -- No --> E_UpdateExistingN9Segment
File: GCX016E.cbl
GIVEN: An existing N9 segment is found in the database
WHEN: The system processes new FDA reference information
THEN: The system updates the existing N9 segment with the new reference data
βœ“ Consolidated Acceptance Criteria
  • The system processes the reference information → the system sets the FDA reference information in the N9 segment for database replacement
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetFDAReferenceInformation(["Start Step"]) E_SetFDAReferenceInformation(["End Step"]) N_SetFDAReferenceInformation_Node0{"The system processes the reference
information"}:::decision N_SetFDAReferenceInformation_Node0_action["The system sets the FDA reference
information in the N9 segment for
database replacement"]:::main N_SetFDAReferenceInformation_Node0 -- Yes --> N_SetFDAReferenceInformation_Node0_action N_SetFDAReferenceInformation_Node0_action --> E_SetFDAReferenceInformation S_SetFDAReferenceInformation --> N_SetFDAReferenceInformation_Node0 N_SetFDAReferenceInformation_Node0 -- No --> E_SetFDAReferenceInformation
File: GCX016E.cbl
GIVEN: The FDA reference number format has been validated as correct
WHEN: The system processes the reference information
THEN: The system sets the FDA reference information in the N9 segment for database replacement
βœ“ Consolidated Acceptance Criteria
  • The system completes the reference update process → the system logs the N9 reference update activity for audit trail maintenance
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_LogN9ReferenceUpdate(["Start Step"]) E_LogN9ReferenceUpdate(["End Step"]) N_LogN9ReferenceUpdate_Node0{"The system completes the reference
update process"}:::decision N_LogN9ReferenceUpdate_Node0_action["The system logs the N9 reference
update activity for audit trail
maintenance"]:::main N_LogN9ReferenceUpdate_Node0 -- Yes --> N_LogN9ReferenceUpdate_Node0_action N_LogN9ReferenceUpdate_Node0_action --> E_LogN9ReferenceUpdate S_LogN9ReferenceUpdate --> N_LogN9ReferenceUpdate_Node0 N_LogN9ReferenceUpdate_Node0 -- No --> E_LogN9ReferenceUpdate
File: GCX016E.cbl
GIVEN: The N9 segment has been successfully replaced in the database
WHEN: The system completes the reference update process
THEN: The system logs the N9 reference update activity for audit trail maintenance
βœ“ Consolidated Acceptance Criteria
  • The system receives the bond number parameter → the bond number must be present and not empty 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_ReceiveBondNumberasInput(["Start Step"]) E_ReceiveBondNumberasInput(["End Step"]) N_ReceiveBondNumberasInput_Node0{"The system receives the bond number
parameter"}:::decision N_ReceiveBondNumberasInput_Node0_action["The bond number must be present and
not empty to proceed with cargo
search"]:::main N_ReceiveBondNumberasInput_Node0 -- Yes --> N_ReceiveBondNumberasInput_Node0_action N_ReceiveBondNumberasInput_Node0_action --> E_ReceiveBondNumberasInput S_ReceiveBondNumberasInput --> N_ReceiveBondNumberasInput_Node0 N_ReceiveBondNumberasInput_Node0 -- No --> E_ReceiveBondNumberasInput
File: GCX016E.cbl
GIVEN: A cargo retrieval request is initiated
WHEN: The system receives the bond number parameter
THEN:
  • The bond number must be present
  • Not empty to proceed with cargo search
βœ“ Consolidated Acceptance Criteria
  • The system prepares to search for cargo records → search parameters including bond index key and search criteria must be initialized with proper 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_InitializeBondSearchParameters(["Start Step"]) E_InitializeBondSearchParameters(["End Step"]) N_InitializeBondSearchParameters_Node0{"The system prepares to search for
cargo records"}:::decision N_InitializeBondSearchParameters_Node0_action["Search parameters including bond
index key and search criteria must
be initialized with proper values"]:::main N_InitializeBondSearchParameters_Node0 -- Yes --> N_InitializeBondSearchParameters_Node0_action N_InitializeBondSearchParameters_Node0_action --> E_InitializeBondSearchParameters S_InitializeBondSearchParameters --> N_InitializeBondSearchParameters_Node0 N_InitializeBondSearchParameters_Node0 -- No --> E_InitializeBondSearchParameters
File: GCX016E.cbl
GIVEN: A valid bond number is received
WHEN: The system prepares to search for cargo records
THEN:
  • Search parameters including bond index key
  • Search criteria must be initialized with proper values
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve cargo records for a specific bond → gCCUSIO2 module must be called with bond index parameters to access 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_CallGCCUSIO2withBondIndex(["Start Step"]) E_CallGCCUSIO2withBondIndex(["End Step"]) N_CallGCCUSIO2withBondIndex_Node0{"The system needs to retrieve cargo
records for a specific bond"}:::decision N_CallGCCUSIO2withBondIndex_Node0_action["GCCUSIO2 module must be called with
bond index parameters to access the
cargo database"]:::main N_CallGCCUSIO2withBondIndex_Node0 -- Yes --> N_CallGCCUSIO2withBondIndex_Node0_action N_CallGCCUSIO2withBondIndex_Node0_action --> E_CallGCCUSIO2withBondIndex S_CallGCCUSIO2withBondIndex --> N_CallGCCUSIO2withBondIndex_Node0 N_CallGCCUSIO2withBondIndex_Node0 -- No --> E_CallGCCUSIO2withBondIndex
File: GCX016E.cbl
GIVEN: Bond search parameters are properly initialized
WHEN: The system needs to retrieve cargo records for a specific bond
THEN: GCCUSIO2 module must be called with bond index parameters to access the cargo database
βœ“ Consolidated Acceptance Criteria
  • The system examines the record's status code → the status code must be valid and indicate an active, processable record 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_CheckStatusCode(["Start Step"]) E_CheckStatusCode(["End Step"]) N_CheckStatusCode_Node0{"The system examines the record s
status code"}:::decision N_CheckStatusCode_Node0_action["The status code must be valid and
indicate an active, processable
record state"]:::main N_CheckStatusCode_Node0 -- Yes --> N_CheckStatusCode_Node0_action N_CheckStatusCode_Node0_action --> E_CheckStatusCode S_CheckStatusCode --> N_CheckStatusCode_Node0 N_CheckStatusCode_Node0 -- No --> E_CheckStatusCode
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved from the database
WHEN: The system examines the record's status code
THEN:
  • The status code must be valid
  • Indicate an active, processable record state
βœ“ Consolidated Acceptance Criteria
  • The system needs to process the cargo data → all relevant cargo information must be loaded into working storage areas 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_LoadCargoDataintoWorkingStorage(["Start Step"]) E_LoadCargoDataintoWorkingStorage(["End Step"]) N_LoadCargoDataintoWorkingStorage_Node0{"The system needs to process the
cargo data"}:::decision N_LoadCargoDataintoWorkingStorage_Node0_action["All relevant cargo information must
be loaded into working storage areas
for subsequent processing operations"]:::main N_LoadCargoDataintoWorkingStorage_Node0 -- Yes --> N_LoadCargoDataintoWorkingStorage_Node0_action N_LoadCargoDataintoWorkingStorage_Node0_action --> E_LoadCargoDataintoWorkingStorage S_LoadCargoDataintoWorkingStorage --> N_LoadCargoDataintoWorkingStorage_Node0 N_LoadCargoDataintoWorkingStorage_Node0 -- No --> E_LoadCargoDataintoWorkingStorage
File: GCX016E.cbl
GIVEN: A cargo record with valid status code has been retrieved
WHEN: The system needs to process the cargo data
THEN: All relevant cargo information must be loaded into working storage areas for subsequent processing operations
βœ“ Consolidated Acceptance Criteria
  • The system validates the record before processing → the record status must be checked to ensure it represents an active, processable cargo
  • If the record for processing eligibility → the system validates the record status to ensure it 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_ValidateRecordStatus(["Start Step"]) E_ValidateRecordStatus(["End Step"]) N_ValidateRecordStatus_Node0{"The system validates the record
before processing"}:::decision N_ValidateRecordStatus_Node0_action["The record status must be checked
to ensure it represents an active,
processable cargo"]:::main N_ValidateRecordStatus_Node0 -- Yes --> N_ValidateRecordStatus_Node0_action N_ValidateRecordStatus_Node0_action --> E_ValidateRecordStatus S_ValidateRecordStatus --> N_ValidateRecordStatus_Node0 N_ValidateRecordStatus_Node1{"The system evaluates the record for
processing eligibility"}:::decision N_ValidateRecordStatus_Node1_action["The system validates the record
status to ensure it meets processing
criteria"]:::main N_ValidateRecordStatus_Node1 -- Yes --> N_ValidateRecordStatus_Node1_action N_ValidateRecordStatus_Node1_action --> E_ValidateRecordStatus N_ValidateRecordStatus_Node0 -- No --> N_ValidateRecordStatus_Node1 N_ValidateRecordStatus_Node1 -- No --> E_ValidateRecordStatus
File: GCX016E.cbl
GIVEN: An additional cargo record has been retrieved for the bond
WHEN: The system validates the record before processing
THEN: The record status must be checked to ensure it represents an active, processable cargo
File: GCX016E.cbl
GIVEN: A cargo record has been retrieved from the database
WHEN: The system evaluates the record for processing eligibility
THEN: The system validates the record status to ensure it meets processing criteria
βœ“ Consolidated Acceptance Criteria
  • If whether the record is active → if the record status is active, add it to the cargo processing list, otherwise skip to the next 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_RecordStatusActive(["Start Step"]) E_RecordStatusActive(["End Step"]) N_RecordStatusActive_Node0{"The system evaluates whether the
record is active"}:::decision N_RecordStatusActive_Node0_action["If the record status is active, add
it to the cargo processing list,
otherwise skip to the next record"]:::main N_RecordStatusActive_Node0 -- Yes --> N_RecordStatusActive_Node0_action N_RecordStatusActive_Node0_action --> E_RecordStatusActive S_RecordStatusActive --> N_RecordStatusActive_Node0 N_RecordStatusActive_Node0 -- No --> E_RecordStatusActive
File: GCX016E.cbl
GIVEN: A cargo record status has been validated
WHEN: The system evaluates whether the record is active
THEN: If the record status is active, add it to the cargo processing list, otherwise skip to the next record
βœ“ Consolidated Acceptance Criteria
  • The system processes multiple records for a bond → skip the inactive record and continue processing the next record in the sequence
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ContinuetoNextRecord(["Start Step"]) E_ContinuetoNextRecord(["End Step"]) N_ContinuetoNextRecord_Node0{"The system processes multiple
records for a bond"}:::decision N_ContinuetoNextRecord_Node0_action["Skip the inactive record and
continue processing the next record
in the sequence"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node0 -- No --> E_ContinuetoNextRecord
File: GCX016E.cbl
GIVEN: A cargo record has been determined to be inactive
WHEN: The system processes multiple records for a bond
THEN:
  • Skip the inactive record
  • Continue processing the next record in the sequence
βœ“ Consolidated Acceptance Criteria
  • No more records exist for the current bond → complete the bond index retrieval operation and return the processed cargo 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_CompleteBondIndexRetrieval(["Start Step"]) E_CompleteBondIndexRetrieval(["End Step"]) N_CompleteBondIndexRetrieval_Node0{"No more records exist for the
current bond"}:::decision N_CompleteBondIndexRetrieval_Node0_action["Complete the bond index retrieval
operation and return the processed
cargo list"]:::main N_CompleteBondIndexRetrieval_Node0 -- Yes --> N_CompleteBondIndexRetrieval_Node0_action N_CompleteBondIndexRetrieval_Node0_action --> E_CompleteBondIndexRetrieval S_CompleteBondIndexRetrieval --> N_CompleteBondIndexRetrieval_Node0 N_CompleteBondIndexRetrieval_Node0 -- No --> E_CompleteBondIndexRetrieval
File: GCX016E.cbl
GIVEN: All cargo records for a bond number have been processed
WHEN: No more records exist for the current bond
THEN:
  • Complete the bond index retrieval operation
  • Return the processed cargo list
βœ“ Consolidated Acceptance Criteria
  • The records contain invalid or unprocessable status codes → return 'Invalid Status' error to indicate that the cargo records cannot be processed due to status issues
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ReturnErrorInvalidStatus(["Start Step"]) E_ReturnErrorInvalidStatus(["End Step"]) N_ReturnErrorInvalidStatus_Node0{"The records contain invalid or
unprocessable status codes"}:::decision N_ReturnErrorInvalidStatus_Node0_action["Return Invalid Status error to
indicate that the cargo records
cannot be processed due to status
issues"]:::exclusion N_ReturnErrorInvalidStatus_Node0 -- Yes -->|Alternative| N_ReturnErrorInvalidStatus_Node0_action N_ReturnErrorInvalidStatus_Node0_action --> E_ReturnErrorInvalidStatus S_ReturnErrorInvalidStatus --> N_ReturnErrorInvalidStatus_Node0 N_ReturnErrorInvalidStatus_Node0 -- No --> E_ReturnErrorInvalidStatus
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Cargo records have been retrieved for a bond number
WHEN: The records contain invalid or unprocessable status codes
THEN: Return 'Invalid Status' error to indicate that the cargo records cannot be processed due to status issues
βœ“ Consolidated Acceptance Criteria
  • The system needs to create a car ID for database search → the system concatenates equipment initial and equipment number to form the car ID 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_FormatCarIDforSearch(["Start Step"]) E_FormatCarIDforSearch(["End Step"]) N_FormatCarIDforSearch_Node0{"The system needs to create a car ID
for database search"}:::decision N_FormatCarIDforSearch_Node0_action["The system concatenates equipment
initial and equipment number to form
the car ID search key"]:::main N_FormatCarIDforSearch_Node0 -- Yes --> N_FormatCarIDforSearch_Node0_action N_FormatCarIDforSearch_Node0_action --> E_FormatCarIDforSearch S_FormatCarIDforSearch --> N_FormatCarIDforSearch_Node0 N_FormatCarIDforSearch_Node0 -- No --> E_FormatCarIDforSearch
File: GCX016E.cbl
GIVEN: A cargo record contains equipment initial and equipment number from N7 segment
WHEN: The system needs to create a car ID for database search
THEN:
  • The system concatenates equipment initial
  • Equipment number to form the car id search key
βœ“ Consolidated Acceptance Criteria
  • The system prepares to search for cargo records → the system combines car ID and waybill into a single composite 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_CombineCarIDandWaybillasSearchKey(["Start Step"]) E_CombineCarIDandWaybillasSearchKey(["End Step"]) N_CombineCarIDandWaybillasSearchKey_Node0{"The system prepares to search for
cargo records"}:::decision N_CombineCarIDandWaybillasSearchKey_Node0_action["The system combines car ID and
waybill into a single composite
search key"]:::main N_CombineCarIDandWaybillasSearchKey_Node0 -- Yes --> N_CombineCarIDandWaybillasSearchKey_Node0_action N_CombineCarIDandWaybillasSearchKey_Node0_action --> E_CombineCarIDandWaybillasSearchKey S_CombineCarIDandWaybillasSearchKey --> N_CombineCarIDandWaybillasSearchKey_Node0 N_CombineCarIDandWaybillasSearchKey_Node0 -- No --> E_CombineCarIDandWaybillasSearchKey
File: GCX016E.cbl
GIVEN: A formatted car ID and a waybill number are available
WHEN: The system prepares to search for cargo records
THEN:
  • The system combines car id
  • Waybill into a single composite search key
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve cargo records from the database → the system calls GCCUSIO2 service with the search key to perform the 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_CallGCCUSIO2DatabaseLookup(["Start Step"]) E_CallGCCUSIO2DatabaseLookup(["End Step"]) N_CallGCCUSIO2DatabaseLookup_Node0{"The system needs to retrieve cargo
records from the database"}:::decision N_CallGCCUSIO2DatabaseLookup_Node0_action["The system calls GCCUSIO2 service
with the search key to perform the
database lookup"]:::main N_CallGCCUSIO2DatabaseLookup_Node0 -- Yes --> N_CallGCCUSIO2DatabaseLookup_Node0_action N_CallGCCUSIO2DatabaseLookup_Node0_action --> E_CallGCCUSIO2DatabaseLookup S_CallGCCUSIO2DatabaseLookup --> N_CallGCCUSIO2DatabaseLookup_Node0 N_CallGCCUSIO2DatabaseLookup_Node0 -- No --> E_CallGCCUSIO2DatabaseLookup
File: GCX016E.cbl
GIVEN: A composite search key containing car ID and waybill is prepared
WHEN: The system needs to retrieve cargo records from the database
THEN: The system calls GCCUSIO2 service with the search key to perform the database lookup
βœ“ Consolidated Acceptance Criteria
  • The system continues processing the record set → the system retrieves the next cargo record in the sequence
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RetrieveSubsequentRecords(["Start Step"]) E_RetrieveSubsequentRecords(["End Step"]) N_RetrieveSubsequentRecords_Node0{"The system continues processing the
record set"}:::decision N_RetrieveSubsequentRecords_Node0_action["The system retrieves the next cargo
record in the sequence"]:::main N_RetrieveSubsequentRecords_Node0 -- Yes --> N_RetrieveSubsequentRecords_Node0_action N_RetrieveSubsequentRecords_Node0_action --> E_RetrieveSubsequentRecords S_RetrieveSubsequentRecords --> N_RetrieveSubsequentRecords_Node0 N_RetrieveSubsequentRecords_Node0 -- No --> E_RetrieveSubsequentRecords
File: GCX016E.cbl
GIVEN: Additional cargo records exist with the same car ID and waybill
WHEN: The system continues processing the record set
THEN: The system retrieves the next cargo record in the sequence
βœ“ Consolidated Acceptance Criteria
  • If the validation results → the system decides whether the record is valid for processing or should be 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_RecordValid(["Start Step"]) E_RecordValid(["End Step"]) N_RecordValid_Node0{"The system evaluates the validation
results"}:::decision N_RecordValid_Node0_action["The system decides whether the
record is valid for processing or
should be skipped"]:::main N_RecordValid_Node0 -- Yes --> N_RecordValid_Node0_action N_RecordValid_Node0_action --> E_RecordValid S_RecordValid --> N_RecordValid_Node0 N_RecordValid_Node0 -- No --> E_RecordValid
File: GCX016E.cbl
GIVEN: A cargo record has undergone status validation
WHEN: The system evaluates the validation results
THEN: The system decides whether the record is valid for processing or should be skipped
βœ“ Consolidated Acceptance Criteria
  • The system processes valid records → the system adds the valid cargo record to the processing list 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_AddtoProcessingList(["Start Step"]) E_AddtoProcessingList(["End Step"]) N_AddtoProcessingList_Node0{"The system processes valid records"}:::decision N_AddtoProcessingList_Node0_action["The system adds the valid cargo
record to the processing list for
further operations"]:::main N_AddtoProcessingList_Node0 -- Yes --> N_AddtoProcessingList_Node0_action N_AddtoProcessingList_Node0_action --> E_AddtoProcessingList S_AddtoProcessingList --> N_AddtoProcessingList_Node0 N_AddtoProcessingList_Node0 -- No --> E_AddtoProcessingList
File: GCX016E.cbl
GIVEN: A cargo record has passed validation checks
WHEN: The system processes valid records
THEN: The system adds the valid cargo record to the processing list for further operations
βœ“ Consolidated Acceptance Criteria
  • The system processes invalid records → the system skips the invalid cargo record and continues with the next 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_SkipInvalidRecord(["Start Step"]) E_SkipInvalidRecord(["End Step"]) N_SkipInvalidRecord_Node0{"The system processes invalid
records"}:::decision N_SkipInvalidRecord_Node0_action["The system skips the invalid cargo
record and continues with the next
record"]:::exclusion N_SkipInvalidRecord_Node0 -- Yes -->|Alternative| N_SkipInvalidRecord_Node0_action N_SkipInvalidRecord_Node0_action --> E_SkipInvalidRecord S_SkipInvalidRecord --> N_SkipInvalidRecord_Node0 N_SkipInvalidRecord_Node0 -- No --> E_SkipInvalidRecord
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record has failed validation checks
WHEN: The system processes invalid records
THEN:
  • The system skips the invalid cargo record
  • Continues with the next record
βœ“ Consolidated Acceptance Criteria
  • No more records remain to be processed → the system confirms that the complete record set has been retrieved and 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_CompleteRecordSetRetrieved(["Start Step"]) E_CompleteRecordSetRetrieved(["End Step"]) N_CompleteRecordSetRetrieved_Node0{"No more records remain to be
processed"}:::decision N_CompleteRecordSetRetrieved_Node0_action["The system confirms that the
complete record set has been
retrieved and processed"]:::main N_CompleteRecordSetRetrieved_Node0 -- Yes --> N_CompleteRecordSetRetrieved_Node0_action N_CompleteRecordSetRetrieved_Node0_action --> E_CompleteRecordSetRetrieved S_CompleteRecordSetRetrieved --> N_CompleteRecordSetRetrieved_Node0 N_CompleteRecordSetRetrieved_Node0 -- No --> E_CompleteRecordSetRetrieved
File: GCX016E.cbl
GIVEN: All available cargo records with matching car ID and waybill have been evaluated
WHEN: No more records remain to be processed
THEN:
  • The system confirms that the complete record set has been retrieved
  • Processed
βœ“ Consolidated Acceptance Criteria
  • The system checks the traffic type indicators and CPRS-specific identifiers → the system should validate that this is legitimate CPRS traffic and proceed with creation, or reject invalid traffic types
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateCPRSTrafficType(["Start Step"]) E_ValidateCPRSTrafficType(["End Step"]) N_ValidateCPRSTrafficType_Node0{"The system checks the traffic type
indicators and CPRS-specific
identifiers"}:::decision N_ValidateCPRSTrafficType_Node0_action["The system should validate that
this is legitimate CPRS traffic and
proceed with creation, or reject
invalid traffic types"]:::exclusion N_ValidateCPRSTrafficType_Node0 -- Yes -->|Alternative| N_ValidateCPRSTrafficType_Node0_action N_ValidateCPRSTrafficType_Node0_action --> E_ValidateCPRSTrafficType S_ValidateCPRSTrafficType --> N_ValidateCPRSTrafficType_Node0 N_ValidateCPRSTrafficType_Node0 -- No --> E_ValidateCPRSTrafficType
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A cargo record is not found in the system and CPRS cargo creation is requested
WHEN:
  • The system checks the traffic type indicators
  • Cprs-specific identifiers
THEN:
  • The system should validate that this is legitimate cprs traffic
  • Proceed with creation, or reject invalid traffic types
βœ“ Consolidated Acceptance Criteria
  • The system processes the car initial and car number from the equipment data → the system should validate the car ID format meets CPRS standards and format it 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_CheckCarIDFormat(["Start Step"]) E_CheckCarIDFormat(["End Step"]) N_CheckCarIDFormat_Node0{"The system processes the car
initial and car number from the
equipment data"}:::decision N_CheckCarIDFormat_Node0_action["The system should validate the car
ID format meets CPRS standards and
format it appropriately"]:::main N_CheckCarIDFormat_Node0 -- Yes --> N_CheckCarIDFormat_Node0_action N_CheckCarIDFormat_Node0_action --> E_CheckCarIDFormat S_CheckCarIDFormat --> N_CheckCarIDFormat_Node0 N_CheckCarIDFormat_Node0 -- No --> E_CheckCarIDFormat
File: GCX016E.cbl
GIVEN: CPRS traffic type has been validated and car ID information is available from N7 segment
WHEN:
  • The system processes the car initial
  • Car number from the equipment data
THEN:
  • The system should validate the car id format meets cprs standards
  • Format it appropriately
βœ“ Consolidated Acceptance Criteria
  • The system assigns CPRS-specific field values → the system should set cargo type indicators, processing flags, and other CPRS-specific attributes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetCPRSSpecificFields(["Start Step"]) E_SetCPRSSpecificFields(["End Step"]) N_SetCPRSSpecificFields_Node0{"The system assigns CPRS-specific
field values"}:::decision N_SetCPRSSpecificFields_Node0_action["The system should set cargo type
indicators, processing flags, and
other CPRS-specific attributes"]:::main N_SetCPRSSpecificFields_Node0 -- Yes --> N_SetCPRSSpecificFields_Node0_action N_SetCPRSSpecificFields_Node0_action --> E_SetCPRSSpecificFields S_SetCPRSSpecificFields --> N_SetCPRSSpecificFields_Node0 N_SetCPRSSpecificFields_Node0 -- No --> E_SetCPRSSpecificFields
File: GCX016E.cbl
GIVEN: A new cargo record has been initialized for CPRS traffic
WHEN: The system assigns CPRS-specific field values
THEN: The system should set cargo type indicators, processing flags, and other CPRS-specific attributes
βœ“ Consolidated Acceptance Criteria
  • The system copies X4 segment information to the cargo record → the system should transfer disposition code, entry number, quantity, and date/time information 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_CopyX4SegmentData(["Start Step"]) E_CopyX4SegmentData(["End Step"]) N_CopyX4SegmentData_Node0{"The system copies X4 segment
information to the cargo record"}:::decision N_CopyX4SegmentData_Node0_action["The system should transfer
disposition code, entry number,
quantity, and datetime information
from X4 segment to cargo record"]:::main N_CopyX4SegmentData_Node0 -- Yes --> N_CopyX4SegmentData_Node0_action N_CopyX4SegmentData_Node0_action --> E_CopyX4SegmentData S_CopyX4SegmentData --> N_CopyX4SegmentData_Node0 N_CopyX4SegmentData_Node0 -- No --> E_CopyX4SegmentData
File: GCX016E.cbl
GIVEN: CPRS-specific fields have been set in the new cargo record and X4 segment data is available
WHEN: The system copies X4 segment information to the cargo record
THEN: The system should transfer disposition code, entry number, quantity, and date/time information from X4 segment to cargo record
βœ“ Consolidated Acceptance Criteria
  • The system copies N7 equipment information to the cargo record → the system should transfer car initial, car number, and other equipment details from N7 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_CopyN7EquipmentData(["Start Step"]) E_CopyN7EquipmentData(["End Step"]) N_CopyN7EquipmentData_Node0{"The system copies N7 equipment
information to the cargo record"}:::decision N_CopyN7EquipmentData_Node0_action["The system should transfer car
initial, car number, and other
equipment details from N7 segment to
cargo record"]:::main N_CopyN7EquipmentData_Node0 -- Yes --> N_CopyN7EquipmentData_Node0_action N_CopyN7EquipmentData_Node0_action --> E_CopyN7EquipmentData S_CopyN7EquipmentData --> N_CopyN7EquipmentData_Node0 N_CopyN7EquipmentData_Node0 -- No --> E_CopyN7EquipmentData
File: GCX016E.cbl
GIVEN: X4 segment data has been copied to the cargo record and N7 equipment data is available
WHEN: The system copies N7 equipment information to the cargo record
THEN: The system should transfer car initial, car number, and other equipment details from N7 segment to cargo record
βœ“ Consolidated Acceptance Criteria
  • The system identifies fields that do not have values from the source segments → the system should assign appropriate default values for missing mandatory fields and leave optional fields blank
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetDefaultValuesforMissingFields(["Start Step"]) E_SetDefaultValuesforMissingFields(["End Step"]) N_SetDefaultValuesforMissingFields_Node0{"The system identifies fields that
do not have values from the source
segments"}:::decision N_SetDefaultValuesforMissingFields_Node0_action["The system should assign
appropriate default values for
missing mandatory fields and leave
optional fields blank"]:::main N_SetDefaultValuesforMissingFields_Node0 -- Yes --> N_SetDefaultValuesforMissingFields_Node0_action N_SetDefaultValuesforMissingFields_Node0_action --> E_SetDefaultValuesforMissingFields S_SetDefaultValuesforMissingFields --> N_SetDefaultValuesforMissingFields_Node0 N_SetDefaultValuesforMissingFields_Node0 -- No --> E_SetDefaultValuesforMissingFields
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: X4 and N7 segment data has been copied to the cargo record
WHEN: The system identifies fields that do not have values from the source segments
THEN:
  • The system should assign appropriate default values for missing mandatory fields
  • Leave optional fields blank
βœ“ Consolidated Acceptance Criteria
  • The system formats the car ID for CPRS processing → the system should combine car initial and car number according to CPRS formatting rules 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_FormatCarIDforCPRSStandards(["Start Step"]) E_FormatCarIDforCPRSStandards(["End Step"]) N_FormatCarIDforCPRSStandards_Node0{"The system formats the car ID for
CPRS processing"}:::decision N_FormatCarIDforCPRSStandards_Node0_action["The system should combine car
initial and car number according to
CPRS formatting rules and standards"]:::main N_FormatCarIDforCPRSStandards_Node0 -- Yes --> N_FormatCarIDforCPRSStandards_Node0_action N_FormatCarIDforCPRSStandards_Node0_action --> E_FormatCarIDforCPRSStandards S_FormatCarIDforCPRSStandards --> N_FormatCarIDforCPRSStandards_Node0 N_FormatCarIDforCPRSStandards_Node0 -- No --> E_FormatCarIDforCPRSStandards
File: GCX016E.cbl
GIVEN: Default values have been set for missing fields and raw car ID components are available
WHEN: The system formats the car ID for CPRS processing
THEN:
  • The system should combine car initial
  • Car number according to cprs formatting rules
  • Standards
βœ“ Consolidated Acceptance Criteria
  • The system assigns a US-CCN key to the cargo record → the system should generate or assign a unique US Cargo Control Number that serves as the primary key 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_AssignUSCCNKey(["Start Step"]) E_AssignUSCCNKey(["End Step"]) N_AssignUSCCNKey_Node0{"The system assigns a US-CCN key to
the cargo record"}:::decision N_AssignUSCCNKey_Node0_action["The system should generate or
assign a unique US Cargo Control
Number that serves as the primary
key for the cargo record"]:::main N_AssignUSCCNKey_Node0 -- Yes --> N_AssignUSCCNKey_Node0_action N_AssignUSCCNKey_Node0_action --> E_AssignUSCCNKey S_AssignUSCCNKey --> N_AssignUSCCNKey_Node0 N_AssignUSCCNKey_Node0 -- No --> E_AssignUSCCNKey
File: GCX016E.cbl
GIVEN: Car ID has been formatted according to CPRS standards
WHEN: The system assigns a US-CCN key to the cargo record
THEN: The system should generate or assign a unique US Cargo Control Number that serves as the primary key for the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system sets the initial cargo status → the system should set the cargo status to 'New' to indicate this is a newly created cargo record awaiting processing
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetCargoStatustoNew(["Start Step"]) E_SetCargoStatustoNew(["End Step"]) N_SetCargoStatustoNew_Node0{"The system sets the initial cargo
status"}:::decision N_SetCargoStatustoNew_Node0_action["The system should set the cargo
status to New to indicate this is a
newly created cargo record awaiting
processing"]:::main N_SetCargoStatustoNew_Node0 -- Yes --> N_SetCargoStatustoNew_Node0_action N_SetCargoStatustoNew_Node0_action --> E_SetCargoStatustoNew S_SetCargoStatustoNew --> N_SetCargoStatustoNew_Node0 N_SetCargoStatustoNew_Node0 -- No --> E_SetCargoStatustoNew
File: GCX016E.cbl
GIVEN: US-CCN key has been assigned to the cargo record
WHEN: The system sets the initial cargo status
THEN: The system should set the cargo status to 'New' to indicate this is a newly created cargo record awaiting processing
βœ“ Consolidated Acceptance Criteria
  • The system updates processing counters → the system should increment counters for new cargo records created and total cargos 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_UpdateCargoProcessingCounters(["Start Step"]) E_UpdateCargoProcessingCounters(["End Step"]) N_UpdateCargoProcessingCounters_Node0{"The system updates processing
counters"}:::decision N_UpdateCargoProcessingCounters_Node0_action["The system should increment
counters for new cargo records
created and total cargos processed"]:::main N_UpdateCargoProcessingCounters_Node0 -- Yes --> N_UpdateCargoProcessingCounters_Node0_action N_UpdateCargoProcessingCounters_Node0_action --> E_UpdateCargoProcessingCounters S_UpdateCargoProcessingCounters --> N_UpdateCargoProcessingCounters_Node0 N_UpdateCargoProcessingCounters_Node0 -- No --> E_UpdateCargoProcessingCounters
File: GCX016E.cbl
GIVEN: CPRS cargo creation has been logged successfully
WHEN: The system updates processing counters
THEN:
  • The system should increment counters for new cargo records created
  • Total cargos processed
βœ“ Consolidated Acceptance Criteria
  • The system determines next processing steps → the system should skip all further processing for this cargo and continue with the next cargo or 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_SkipCargoProcessing(["Start Step"]) E_SkipCargoProcessing(["End Step"]) N_SkipCargoProcessing_Node0{"The system determines next
processing steps"}:::decision N_SkipCargoProcessing_Node0_action["The system should skip all further
processing for this cargo and
continue with the next cargo or
segment"]:::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: GCX016E.cbl
GIVEN: An error message has been generated due to CPRS cargo creation failure
WHEN: The system determines next processing steps
THEN:
  • The system should skip all further processing for this cargo
  • Continue with the next cargo or segment
βœ“ Consolidated Acceptance Criteria
  • The system processes manifest data to identify the carrier → the SCAC code is extracted and assigned to the cargo record for carrier identification
  • The system processes the manifest information → the system should extract and validate the SCAC code from the manifest data
  • The system extracts carrier identification information → sCAC code is extracted and assigned to identify the transportation carrier for the foreign 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_ExtractSCACCode(["Start Step"]) E_ExtractSCACCode(["End Step"]) N_ExtractSCACCode_Node0{"The system processes manifest data
to identify the carrier"}:::decision N_ExtractSCACCode_Node0_action["The SCAC code is extracted and
assigned to the cargo record for
carrier identification"]:::main N_ExtractSCACCode_Node0 -- Yes --> N_ExtractSCACCode_Node0_action N_ExtractSCACCode_Node0_action --> E_ExtractSCACCode S_ExtractSCACCode --> N_ExtractSCACCode_Node0 N_ExtractSCACCode_Node1{"The system processes the manifest
information"}:::decision N_ExtractSCACCode_Node1_action["The system should extract and
validate the SCAC code from the
manifest data"]:::main N_ExtractSCACCode_Node1 -- Yes --> N_ExtractSCACCode_Node1_action N_ExtractSCACCode_Node1_action --> E_ExtractSCACCode N_ExtractSCACCode_Node0 -- No --> N_ExtractSCACCode_Node1 N_ExtractSCACCode_Node2{"The system extracts carrier
identification information"}:::decision N_ExtractSCACCode_Node2_action["SCAC code is extracted and assigned
to identify the transportation
carrier for the foreign cargo"]:::main N_ExtractSCACCode_Node2 -- Yes --> N_ExtractSCACCode_Node2_action N_ExtractSCACCode_Node2_action --> E_ExtractSCACCode N_ExtractSCACCode_Node1 -- No --> N_ExtractSCACCode_Node2 N_ExtractSCACCode_Node2 -- No --> E_ExtractSCACCode
File: GCX016E.cbl
GIVEN: M10 manifest segments containing carrier information
WHEN: The system processes manifest data to identify the carrier
THEN:
  • The scac code is extracted
  • Assigned to the cargo record for carrier identification
File: GCX016E.cbl
GIVEN: Manifest data is available for a new foreign cargo record
WHEN: The system processes the manifest information
THEN:
  • The system should extract
  • Validate the scac code from the manifest data
File: GCX016E.cbl
GIVEN: Manifest data from M10 segment is being processed
WHEN: The system extracts carrier identification information
THEN:
  • Scac code is extracted
  • Assigned to identify the transportation carrier for the foreign cargo
βœ“ Consolidated Acceptance Criteria
  • The system completes foreign cargo creation process → a log entry is created documenting the foreign cargo creation with timestamp, cargo details, and creation context 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_LogForeignCargoCreationAction(["Start Step"]) E_LogForeignCargoCreationAction(["End Step"]) N_LogForeignCargoCreationAction_Node0{"The system completes foreign cargo
creation process"}:::decision N_LogForeignCargoCreationAction_Node0_action["A log entry is created documenting
the foreign cargo creation with
timestamp, cargo details, and
creation context for audit trail"]:::main N_LogForeignCargoCreationAction_Node0 -- Yes --> N_LogForeignCargoCreationAction_Node0_action N_LogForeignCargoCreationAction_Node0_action --> E_LogForeignCargoCreationAction S_LogForeignCargoCreationAction --> N_LogForeignCargoCreationAction_Node0 N_LogForeignCargoCreationAction_Node0 -- No --> E_LogForeignCargoCreationAction
File: GCX016E.cbl
GIVEN: A successfully created foreign cargo record in the database
WHEN: The system completes foreign cargo creation process
THEN: A log entry is created documenting the foreign cargo creation with timestamp, cargo details, and creation context for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system checks the SCAC code in the cargo record → the system retrieves and evaluates the SCAC 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_CheckSCACCode(["Start Step"]) E_CheckSCACCode(["End Step"]) N_CheckSCACCode_Node0{"The system checks the SCAC code in
the cargo record"}:::decision N_CheckSCACCode_Node0_action["The system retrieves and evaluates
the SCAC code for further processing"]:::main N_CheckSCACCode_Node0 -- Yes --> N_CheckSCACCode_Node0_action N_CheckSCACCode_Node0_action --> E_CheckSCACCode S_CheckSCACCode --> N_CheckSCACCode_Node0 N_CheckSCACCode_Node0 -- No --> E_CheckSCACCode
File: GCX016E.cbl
GIVEN: A cargo record has been found using car ID search
WHEN: The system checks the SCAC code in the cargo record
THEN:
  • The system retrieves
  • Evaluates the scac code for further processing
βœ“ Consolidated Acceptance Criteria
  • If the SCAC code status → the system determines if the SCAC is unknown and requires US-CCN key renumbering
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SCACUnknown(["Start Step"]) E_SCACUnknown(["End Step"]) N_SCACUnknown_Node0{"The system evaluates the SCAC code
status"}:::decision N_SCACUnknown_Node0_action["The system determines if the SCAC
is unknown and requires US-CCN key
renumbering"]:::main N_SCACUnknown_Node0 -- Yes --> N_SCACUnknown_Node0_action N_SCACUnknown_Node0_action --> E_SCACUnknown S_SCACUnknown --> N_SCACUnknown_Node0 N_SCACUnknown_Node0 -- No --> E_SCACUnknown
File: GCX016E.cbl
GIVEN: A SCAC code has been retrieved from the cargo record
WHEN: The system evaluates the SCAC code status
THEN:
  • The system determines if the scac is unknown
  • Requires us-ccn key renumbering
βœ“ Consolidated Acceptance Criteria
  • The system searches for cargo using the new key → the system queries the cargo database with the renumbered 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_SearchAgainwithNewKey(["Start Step"]) E_SearchAgainwithNewKey(["End Step"]) N_SearchAgainwithNewKey_Node0{"The system searches for cargo using
the new key"}:::decision N_SearchAgainwithNewKey_Node0_action["The system queries the cargo
database with the renumbered US-CCN
key"]:::main N_SearchAgainwithNewKey_Node0 -- Yes --> N_SearchAgainwithNewKey_Node0_action N_SearchAgainwithNewKey_Node0_action --> E_SearchAgainwithNewKey S_SearchAgainwithNewKey --> N_SearchAgainwithNewKey_Node0 N_SearchAgainwithNewKey_Node0 -- No --> E_SearchAgainwithNewKey
File: GCX016E.cbl
GIVEN: US-CCN key renumbering has been completed
WHEN: The system searches for cargo using the new key
THEN: The system queries the cargo database with the renumbered US-CCN key
βœ“ Consolidated Acceptance Criteria
  • If the secondary search results → the system determines if cargo was successfully found with the new 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_CargoFoundwithNewKey(["Start Step"]) E_CargoFoundwithNewKey(["End Step"]) N_CargoFoundwithNewKey_Node0{"The system evaluates the secondary
search results"}:::decision N_CargoFoundwithNewKey_Node0_action["The system determines if cargo was
successfully found with the new key"]:::main N_CargoFoundwithNewKey_Node0 -- Yes --> N_CargoFoundwithNewKey_Node0_action N_CargoFoundwithNewKey_Node0_action --> E_CargoFoundwithNewKey S_CargoFoundwithNewKey --> N_CargoFoundwithNewKey_Node0 N_CargoFoundwithNewKey_Node0 -- No --> E_CargoFoundwithNewKey
File: GCX016E.cbl
GIVEN: A secondary cargo search has been performed with renumbered key
WHEN: The system evaluates the secondary search results
THEN: The system determines if cargo was successfully found with the new key
βœ“ Consolidated Acceptance Criteria
  • The system handles the SCAC unknown scenario → the system applies special processing rules for unknown SCAC situations
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleSCACUnknownScenario(["Start Step"]) E_HandleSCACUnknownScenario(["End Step"]) N_HandleSCACUnknownScenario_Node0{"The system handles the SCAC unknown
scenario"}:::decision N_HandleSCACUnknownScenario_Node0_action["The system applies special
processing rules for unknown SCAC
situations"]:::main N_HandleSCACUnknownScenario_Node0 -- Yes --> N_HandleSCACUnknownScenario_Node0_action N_HandleSCACUnknownScenario_Node0_action --> E_HandleSCACUnknownScenario S_HandleSCACUnknownScenario --> N_HandleSCACUnknownScenario_Node0 N_HandleSCACUnknownScenario_Node0 -- No --> E_HandleSCACUnknownScenario
File: GCX016E.cbl
GIVEN: Cargo has been found using renumbered key after SCAC unknown determination
WHEN: The system handles the SCAC unknown scenario
THEN: The system applies special processing rules for unknown SCAC situations
βœ“ Consolidated Acceptance Criteria
  • The system logs the processing action → the system records the SCAC processing 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_LogSCACProcessingAction(["Start Step"]) E_LogSCACProcessingAction(["End Step"]) N_LogSCACProcessingAction_Node0{"The system logs the processing
action"}:::decision N_LogSCACProcessingAction_Node0_action["The system records the SCAC
processing details for audit trail"]:::main N_LogSCACProcessingAction_Node0 -- Yes --> N_LogSCACProcessingAction_Node0_action N_LogSCACProcessingAction_Node0_action --> E_LogSCACProcessingAction S_LogSCACProcessingAction --> N_LogSCACProcessingAction_Node0 N_LogSCACProcessingAction_Node0 -- No --> E_LogSCACProcessingAction
File: GCX016E.cbl
GIVEN: SCAC unknown scenario processing has been completed
WHEN: The system logs the processing action
THEN: The system records the SCAC processing details for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system continues with cargo processing → the system proceeds with standard cargo business logic using the found 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_ContinuewithFoundCargo(["Start Step"]) E_ContinuewithFoundCargo(["End Step"]) N_ContinuewithFoundCargo_Node0{"The system continues with cargo
processing"}:::decision N_ContinuewithFoundCargo_Node0_action["The system proceeds with standard
cargo business logic using the found
record"]:::main N_ContinuewithFoundCargo_Node0 -- Yes --> N_ContinuewithFoundCargo_Node0_action N_ContinuewithFoundCargo_Node0_action --> E_ContinuewithFoundCargo S_ContinuewithFoundCargo --> N_ContinuewithFoundCargo_Node0 N_ContinuewithFoundCargo_Node0 -- No --> E_ContinuewithFoundCargo
File: GCX016E.cbl
GIVEN: A valid cargo record has been found through either initial search or SCAC unknown processing
WHEN: The system continues with cargo processing
THEN: The system proceeds with standard cargo business logic using the found record
βœ“ Consolidated Acceptance Criteria
  • The system begins status segment processing → all status segment variables, arrays, and counters 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_InitializeStatusSegmentVariables(["Start Step"]) E_InitializeStatusSegmentVariables(["End Step"]) N_InitializeStatusSegmentVariables_Node0{"The system begins status segment
processing"}:::decision N_InitializeStatusSegmentVariables_Node0_action["All status segment variables,
arrays, and counters are initialized
to their default values"]:::main N_InitializeStatusSegmentVariables_Node0 -- Yes --> N_InitializeStatusSegmentVariables_Node0_action N_InitializeStatusSegmentVariables_Node0_action --> E_InitializeStatusSegmentVariables S_InitializeStatusSegmentVariables --> N_InitializeStatusSegmentVariables_Node0 N_InitializeStatusSegmentVariables_Node0 -- No --> E_InitializeStatusSegmentVariables
File: GCX016E.cbl
GIVEN: A cargo status segment retrieval process is starting
WHEN: The system begins status segment processing
THEN: All status segment variables, arrays, and counters are initialized to their default values
βœ“ Consolidated Acceptance Criteria
  • The system prepares to query status segments → the Car ID and US-CCN keys are set to identify the specific 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_SetCarIDandUSCCNKeys(["Start Step"]) E_SetCarIDandUSCCNKeys(["End Step"]) N_SetCarIDandUSCCNKeys_Node0{"The system prepares to query status
segments"}:::decision N_SetCarIDandUSCCNKeys_Node0_action["The Car ID and US-CCN keys are set
to identify the specific cargo"]:::main N_SetCarIDandUSCCNKeys_Node0 -- Yes --> N_SetCarIDandUSCCNKeys_Node0_action N_SetCarIDandUSCCNKeys_Node0_action --> E_SetCarIDandUSCCNKeys S_SetCarIDandUSCCNKeys --> N_SetCarIDandUSCCNKeys_Node0 N_SetCarIDandUSCCNKeys_Node0 -- No --> E_SetCarIDandUSCCNKeys
File: GCX016E.cbl
GIVEN: A cargo requires status segment retrieval
WHEN: The system prepares to query status segments
THEN:
  • The car id
  • Us-ccn keys are set to identify the specific cargo
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve cargo status segments → gCCUSIO2 program is called to fetch S09 segments from GCSUSS09 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_CallGCCUSIO2toRetrieveS09Segments(["Start Step"]) E_CallGCCUSIO2toRetrieveS09Segments(["End Step"]) N_CallGCCUSIO2toRetrieveS09Segments_Node0{"The system needs to retrieve cargo
status segments"}:::decision N_CallGCCUSIO2toRetrieveS09Segments_Node0_action["GCCUSIO2 program is called to fetch
S09 segments from GCSUSS09 database"]:::main N_CallGCCUSIO2toRetrieveS09Segments_Node0 -- Yes --> N_CallGCCUSIO2toRetrieveS09Segments_Node0_action N_CallGCCUSIO2toRetrieveS09Segments_Node0_action --> E_CallGCCUSIO2toRetrieveS09Segments S_CallGCCUSIO2toRetrieveS09Segments --> N_CallGCCUSIO2toRetrieveS09Segments_Node0 N_CallGCCUSIO2toRetrieveS09Segments_Node0 -- No --> E_CallGCCUSIO2toRetrieveS09Segments
File: GCX016E.cbl
GIVEN: Car ID and US-CCN keys are properly set
WHEN: The system needs to retrieve cargo status segments
THEN: GCCUSIO2 program is called to fetch S09 segments from GCSUSS09 database
βœ“ Consolidated Acceptance Criteria
  • If the retrieval results → if segments are found, proceed to process them; if no segments found or database error occurred, initialize empty status arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_S09SegmentsFound(["Start Step"]) E_S09SegmentsFound(["End Step"]) N_S09SegmentsFound_Node0{"The system evaluates the retrieval
results"}:::decision N_S09SegmentsFound_Node0_action["If segments are found, proceed to
process them if no segments found or
database error occurred, initialize
empty status arrays"]:::main N_S09SegmentsFound_Node0 -- Yes --> N_S09SegmentsFound_Node0_action N_S09SegmentsFound_Node0_action --> E_S09SegmentsFound S_S09SegmentsFound --> N_S09SegmentsFound_Node0 N_S09SegmentsFound_Node0 -- No --> E_S09SegmentsFound
File: GCX016E.cbl
GIVEN: GCCUSIO2 has completed the status segment retrieval attempt
WHEN: The system evaluates the retrieval results
THEN: If segments are found, proceed to process them; if no segments found or database error occurred, initialize empty status arrays
βœ“ Consolidated Acceptance Criteria
  • The system processes each retrieved segment → each S09 segment is processed to extract status data for array 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_ProcessRetrievedS09Segments(["Start Step"]) E_ProcessRetrievedS09Segments(["End Step"]) N_ProcessRetrievedS09Segments_Node0{"The system processes each retrieved
segment"}:::decision N_ProcessRetrievedS09Segments_Node0_action["Each S09 segment is processed to
extract status data for array
population"]:::main N_ProcessRetrievedS09Segments_Node0 -- Yes --> N_ProcessRetrievedS09Segments_Node0_action N_ProcessRetrievedS09Segments_Node0_action --> E_ProcessRetrievedS09Segments S_ProcessRetrievedS09Segments --> N_ProcessRetrievedS09Segments_Node0 N_ProcessRetrievedS09Segments_Node0 -- No --> E_ProcessRetrievedS09Segments
File: GCX016E.cbl
GIVEN: S09 status segments have been successfully retrieved from the database
WHEN: The system processes each retrieved segment
THEN: Each S09 segment is processed to extract status data for array population
βœ“ Consolidated Acceptance Criteria
  • The system populates status arrays → s09A status arrays are populated with the extracted status information from each 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_PopulateS09AStatusArrays(["Start Step"]) E_PopulateS09AStatusArrays(["End Step"]) N_PopulateS09AStatusArrays_Node0{"The system populates status arrays"}:::decision N_PopulateS09AStatusArrays_Node0_action["S09A status arrays are populated
with the extracted status
information from each segment"]:::main N_PopulateS09AStatusArrays_Node0 -- Yes --> N_PopulateS09AStatusArrays_Node0_action N_PopulateS09AStatusArrays_Node0_action --> E_PopulateS09AStatusArrays S_PopulateS09AStatusArrays --> N_PopulateS09AStatusArrays_Node0 N_PopulateS09AStatusArrays_Node0 -- No --> E_PopulateS09AStatusArrays
File: GCX016E.cbl
GIVEN: S09 segments have been processed and status data extracted
WHEN: The system populates status arrays
THEN: S09A status arrays are populated with the extracted status information from each segment
βœ“ Consolidated Acceptance Criteria
  • The system completes processing of a segment → if more segments exist, continue processing; if no more segments, proceed to finalize arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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{"The system completes processing of
a segment"}:::decision N_MoreSegmentstoProcess_Node0_action["If more segments exist, continue
processing if no more segments,
proceed to finalize arrays"]:::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: GCX016E.cbl
GIVEN: Status segments are being processed sequentially
WHEN: The system completes processing of a segment
THEN: If more segments exist, continue processing; if no more segments, proceed to finalize arrays
βœ“ Consolidated Acceptance Criteria
  • The status segment retrieval process is complete → the status arrays ready flag is set 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_SetStatusArraysReadyFlag(["Start Step"]) E_SetStatusArraysReadyFlag(["End Step"]) N_SetStatusArraysReadyFlag_Node0{"The status segment retrieval
process is complete"}:::decision N_SetStatusArraysReadyFlag_Node0_action["The status arrays ready flag is set
to indicate successful completion"]:::main N_SetStatusArraysReadyFlag_Node0 -- Yes --> N_SetStatusArraysReadyFlag_Node0_action N_SetStatusArraysReadyFlag_Node0_action --> E_SetStatusArraysReadyFlag S_SetStatusArraysReadyFlag --> N_SetStatusArraysReadyFlag_Node0 N_SetStatusArraysReadyFlag_Node0 -- No --> E_SetStatusArraysReadyFlag
File: GCX016E.cbl
GIVEN: All status segments have been processed and arrays populated
WHEN: The status segment retrieval process is complete
THEN: The status arrays ready flag is set to indicate successful completion
βœ“ Consolidated Acceptance Criteria
  • The status array population process begins → the status array counter is initialized to zero to track 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_InitializeStatusArrayCounter(["Start Step"]) E_InitializeStatusArrayCounter(["End Step"]) N_InitializeStatusArrayCounter_Node0{"The status array population process
begins"}:::decision N_InitializeStatusArrayCounter_Node0_action["The status array counter is
initialized to zero to track
processed segments"]:::main N_InitializeStatusArrayCounter_Node0 -- Yes --> N_InitializeStatusArrayCounter_Node0_action N_InitializeStatusArrayCounter_Node0_action --> E_InitializeStatusArrayCounter S_InitializeStatusArrayCounter --> N_InitializeStatusArrayCounter_Node0 N_InitializeStatusArrayCounter_Node0 -- No --> E_InitializeStatusArrayCounter
File: GCX016E.cbl
GIVEN: A cargo requires status array population from database segments
WHEN: The status array population process begins
THEN: The status array counter is initialized to zero to track processed segments
βœ“ Consolidated Acceptance Criteria
  • The query results are evaluated → if status segments are found, continue with array population, otherwise complete the process without 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_StatusSegmentsFound(["Start Step"]) E_StatusSegmentsFound(["End Step"]) N_StatusSegmentsFound_Node0{"The query results are evaluated"}:::decision N_StatusSegmentsFound_Node0_action["If status segments are found,
continue with array population,
otherwise complete the process
without population"]:::main N_StatusSegmentsFound_Node0 -- Yes --> N_StatusSegmentsFound_Node0_action N_StatusSegmentsFound_Node0_action --> E_StatusSegmentsFound S_StatusSegmentsFound --> N_StatusSegmentsFound_Node0 N_StatusSegmentsFound_Node0 -- No --> E_StatusSegmentsFound
File: GCX016E.cbl
GIVEN: A database query for S09 status segments has been executed
WHEN: The query results are evaluated
THEN: If status segments are found, continue with array population, otherwise complete the process without population
βœ“ Consolidated Acceptance Criteria
  • Disposition code information needs to be extracted → the disposition code, entry number, and quantity information are extracted 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_ExtractDispositionCodeInformation(["Start Step"]) E_ExtractDispositionCodeInformation(["End Step"]) N_ExtractDispositionCodeInformation_Node0{"Disposition code information needs
to be extracted"}:::decision N_ExtractDispositionCodeInformation_Node0_action["The disposition code, entry number,
and quantity information are
extracted from the segment"]:::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: GCX016E.cbl
GIVEN: A status segment is being processed
WHEN: Disposition code information needs to be extracted
THEN: The disposition code, entry number, and quantity information are extracted from the segment
βœ“ Consolidated Acceptance Criteria
  • The segment is being processed for array population → the date and time information is extracted and formatted for storage 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_ExtractDateandTimeInformation(["Start Step"]) E_ExtractDateandTimeInformation(["End Step"]) N_ExtractDateandTimeInformation_Node0{"The segment is being processed for
array population"}:::decision N_ExtractDateandTimeInformation_Node0_action["The date and time information is
extracted and formatted for storage
in the status array"]:::main N_ExtractDateandTimeInformation_Node0 -- Yes --> N_ExtractDateandTimeInformation_Node0_action N_ExtractDateandTimeInformation_Node0_action --> E_ExtractDateandTimeInformation S_ExtractDateandTimeInformation --> N_ExtractDateandTimeInformation_Node0 N_ExtractDateandTimeInformation_Node0 -- No --> E_ExtractDateandTimeInformation
File: GCX016E.cbl
GIVEN: A status segment contains date and time information
WHEN: The segment is being processed for array population
THEN:
  • The date
  • Time information is extracted
  • Formatted for storage in the status array
βœ“ Consolidated Acceptance Criteria
  • Status information needs to be extracted → the status information code is extracted to identify the type of status change 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_ExtractStatusInformationCode(["Start Step"]) E_ExtractStatusInformationCode(["End Step"]) N_ExtractStatusInformationCode_Node0{"Status information needs to be
extracted"}:::decision N_ExtractStatusInformationCode_Node0_action["The status information code is
extracted to identify the type of
status change recorded"]:::main N_ExtractStatusInformationCode_Node0 -- Yes --> N_ExtractStatusInformationCode_Node0_action N_ExtractStatusInformationCode_Node0_action --> E_ExtractStatusInformationCode S_ExtractStatusInformationCode --> N_ExtractStatusInformationCode_Node0 N_ExtractStatusInformationCode_Node0 -- No --> E_ExtractStatusInformationCode
File: GCX016E.cbl
GIVEN: A status segment is being processed
WHEN: Status information needs to be extracted
THEN: The status information code is extracted to identify the type of status change recorded
βœ“ Consolidated Acceptance Criteria
  • The information needs to be stored for processing → the disposition code, dates, times, and status information are stored in the corresponding 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_StoreinS09AStatusArray(["Start Step"]) E_StoreinS09AStatusArray(["End Step"]) N_StoreinS09AStatusArray_Node0{"The information needs to be stored
for processing"}:::decision N_StoreinS09AStatusArray_Node0_action["The disposition code, dates, times,
and status information are stored in
the corresponding S09A array element"]:::main N_StoreinS09AStatusArray_Node0 -- Yes --> N_StoreinS09AStatusArray_Node0_action N_StoreinS09AStatusArray_Node0_action --> E_StoreinS09AStatusArray S_StoreinS09AStatusArray --> N_StoreinS09AStatusArray_Node0 N_StoreinS09AStatusArray_Node0 -- No --> E_StoreinS09AStatusArray
File: GCX016E.cbl
GIVEN: Status information has been extracted from a database segment
WHEN: The information needs to be stored for processing
THEN: The disposition code, dates, times, and status information are stored in the corresponding S09A array element
βœ“ Consolidated Acceptance Criteria
  • The storage operation is complete → the array counter is incremented by one to reflect the additional stored 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_IncrementArrayCounter(["Start Step"]) E_IncrementArrayCounter(["End Step"]) N_IncrementArrayCounter_Node0{"The storage operation is complete"}:::decision N_IncrementArrayCounter_Node0_action["The array counter is incremented by
one to reflect the additional stored
segment"]:::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: GCX016E.cbl
GIVEN: A status segment has been successfully stored in the status array
WHEN: The storage operation is complete
THEN: The array counter is incremented by one to reflect the additional stored segment
βœ“ Consolidated Acceptance Criteria
  • The system checks for remaining segments → if more status segments exist for the cargo, continue processing the next segment, 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_MoreStatusSegments(["Start Step"]) E_MoreStatusSegments(["End Step"]) N_MoreStatusSegments_Node0{"The system checks for remaining
segments"}:::decision N_MoreStatusSegments_Node0_action["If more status segments exist for
the cargo, continue processing the
next segment, otherwise proceed to
completion"]:::main N_MoreStatusSegments_Node0 -- Yes --> N_MoreStatusSegments_Node0_action N_MoreStatusSegments_Node0_action --> E_MoreStatusSegments S_MoreStatusSegments --> N_MoreStatusSegments_Node0 N_MoreStatusSegments_Node0 -- No --> E_MoreStatusSegments
File: GCX016E.cbl
GIVEN: A status segment has been processed and stored
WHEN: The system checks for remaining segments
THEN: If more status segments exist for the cargo, continue processing the next segment, otherwise proceed to completion
βœ“ Consolidated Acceptance Criteria
  • The population process is completing → the maximum sequences fetched counter is updated with the highest sequence number 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_UpdateMaximumSequencesFetched(["Start Step"]) E_UpdateMaximumSequencesFetched(["End Step"]) N_UpdateMaximumSequencesFetched_Node0{"The population process is
completing"}:::decision N_UpdateMaximumSequencesFetched_Node0_action["The maximum sequences fetched
counter is updated with the highest
sequence number processed"]:::main N_UpdateMaximumSequencesFetched_Node0 -- Yes --> N_UpdateMaximumSequencesFetched_Node0_action N_UpdateMaximumSequencesFetched_Node0_action --> E_UpdateMaximumSequencesFetched S_UpdateMaximumSequencesFetched --> N_UpdateMaximumSequencesFetched_Node0 N_UpdateMaximumSequencesFetched_Node0 -- No --> E_UpdateMaximumSequencesFetched
File: GCX016E.cbl
GIVEN: All status segments for a cargo have been processed
WHEN: The population process is completing
THEN: The maximum sequences fetched counter is updated with the highest sequence number processed
βœ“ Consolidated Acceptance Criteria
  • The system checks if the status array has been modified → if the status array is updated, proceed to convert to database format, otherwise complete the process without 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_StatusArrayUpdated(["Start Step"]) E_StatusArrayUpdated(["End Step"]) N_StatusArrayUpdated_Node0{"The system checks if the status
array has been modified"}:::decision N_StatusArrayUpdated_Node0_action["If the status array is updated,
proceed to convert to database
format, otherwise complete the
process without database operations"]:::main N_StatusArrayUpdated_Node0 -- Yes --> N_StatusArrayUpdated_Node0_action N_StatusArrayUpdated_Node0_action --> E_StatusArrayUpdated S_StatusArrayUpdated --> N_StatusArrayUpdated_Node0 N_StatusArrayUpdated_Node0 -- No --> E_StatusArrayUpdated
File: GCX016E.cbl
GIVEN: A cargo status processing operation has been completed
WHEN: The system checks if the status array has been modified
THEN: If the status array is updated, proceed to convert to database format, otherwise complete the process without database operations
βœ“ Consolidated Acceptance Criteria
  • The system needs to prepare data for database storage → convert the status array elements to the proper database segment format maintaining all status codes, quantities, and sequence 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_ConvertStatusArraytoDatabaseFormat(["Start Step"]) E_ConvertStatusArraytoDatabaseFormat(["End Step"]) N_ConvertStatusArraytoDatabaseFormat_Node0{"The system needs to prepare data
for database storage"}:::decision N_ConvertStatusArraytoDatabaseFormat_Node0_action["Convert the status array elements
to the proper database segment
format maintaining all status codes,
quantities, and sequence information"]:::main N_ConvertStatusArraytoDatabaseFormat_Node0 -- Yes --> N_ConvertStatusArraytoDatabaseFormat_Node0_action N_ConvertStatusArraytoDatabaseFormat_Node0_action --> E_ConvertStatusArraytoDatabaseFormat S_ConvertStatusArraytoDatabaseFormat --> N_ConvertStatusArraytoDatabaseFormat_Node0 N_ConvertStatusArraytoDatabaseFormat_Node0 -- No --> E_ConvertStatusArraytoDatabaseFormat
File: GCX016E.cbl
GIVEN: The status array has been updated with new cargo status information
WHEN: The system needs to prepare data for database storage
THEN: Convert the status array elements to the proper database segment format maintaining all status codes, quantities, and sequence information
βœ“ Consolidated Acceptance Criteria
  • If the cargo type → if the cargo is Non-CPRS, proceed to update car ID information, if CPRS, skip car ID updates and proceed directly to database segment 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_CargoTypeCheck(["Start Step"]) E_CargoTypeCheck(["End Step"]) N_CargoTypeCheck_Node0{"The system evaluates the cargo type"}:::decision N_CargoTypeCheck_Node0_action["If the cargo is Non-CPRS, proceed
to update car ID information, if
CPRS, skip car ID updates and
proceed directly to database segment
preparation"]:::main N_CargoTypeCheck_Node0 -- Yes --> N_CargoTypeCheck_Node0_action N_CargoTypeCheck_Node0_action --> E_CargoTypeCheck S_CargoTypeCheck --> N_CargoTypeCheck_Node0 N_CargoTypeCheck_Node0 -- No --> E_CargoTypeCheck
File: GCX016E.cbl
GIVEN: A cargo record is being processed for status segment replacement
WHEN: The system evaluates the cargo type
THEN:
  • If the cargo is non-cprs, proceed to update car id information, if cprs, skip car id updates
  • Proceed directly to database segment preparation
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo information before database storage → update the cargo record with the current car ID information from the equipment 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_UpdateCarIDforNonCPRSCargo(["Start Step"]) E_UpdateCarIDforNonCPRSCargo(["End Step"]) N_UpdateCarIDforNonCPRSCargo_Node0{"The system updates cargo
information before database storage"}:::decision N_UpdateCarIDforNonCPRSCargo_Node0_action["Update the cargo record with the
current car ID information from the
equipment segment data"]:::main N_UpdateCarIDforNonCPRSCargo_Node0 -- Yes --> N_UpdateCarIDforNonCPRSCargo_Node0_action N_UpdateCarIDforNonCPRSCargo_Node0_action --> E_UpdateCarIDforNonCPRSCargo S_UpdateCarIDforNonCPRSCargo --> N_UpdateCarIDforNonCPRSCargo_Node0 N_UpdateCarIDforNonCPRSCargo_Node0 -- No --> E_UpdateCarIDforNonCPRSCargo
File: GCX016E.cbl
GIVEN: A non-CPRS cargo is being processed and car ID information is available from N7 equipment segments
WHEN: The system updates cargo information before database storage
THEN: Update the cargo record with the current car ID information from the equipment segment data
βœ“ Consolidated Acceptance Criteria
  • The system prepares the final database segment for storage → format the segment with proper sequence numbers, status codes, quantities, and cargo identification for database replacement 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_PrepareDatabaseSegment(["Start Step"]) E_PrepareDatabaseSegment(["End Step"]) N_PrepareDatabaseSegment_Node0{"The system prepares the final
database segment for storage"}:::decision N_PrepareDatabaseSegment_Node0_action["Format the segment with proper
sequence numbers, status codes,
quantities, and cargo identification
for database replacement operation"]:::main N_PrepareDatabaseSegment_Node0 -- Yes --> N_PrepareDatabaseSegment_Node0_action N_PrepareDatabaseSegment_Node0_action --> E_PrepareDatabaseSegment S_PrepareDatabaseSegment --> N_PrepareDatabaseSegment_Node0 N_PrepareDatabaseSegment_Node0 -- No --> E_PrepareDatabaseSegment
File: GCX016E.cbl
GIVEN: Status array data has been converted to database format and car ID updates have been applied if applicable
WHEN: The system prepares the final database segment for storage
THEN: Format the segment with proper sequence numbers, status codes, quantities, and cargo identification for database replacement operation
βœ“ Consolidated Acceptance Criteria
  • The system performs the database replacement operation → replace the existing status segment in GCSUSS09 table with the updated segment containing current 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_ReplaceStatusSegmentinGCSUSS09(["Start Step"]) E_ReplaceStatusSegmentinGCSUSS09(["End Step"]) N_ReplaceStatusSegmentinGCSUSS09_Node0{"The system performs the database
replacement operation"}:::decision N_ReplaceStatusSegmentinGCSUSS09_Node0_action["Replace the existing status segment
in GCSUSS09 table with the updated
segment containing current status
information"]:::main N_ReplaceStatusSegmentinGCSUSS09_Node0 -- Yes --> N_ReplaceStatusSegmentinGCSUSS09_Node0_action N_ReplaceStatusSegmentinGCSUSS09_Node0_action --> E_ReplaceStatusSegmentinGCSUSS09 S_ReplaceStatusSegmentinGCSUSS09 --> N_ReplaceStatusSegmentinGCSUSS09_Node0 N_ReplaceStatusSegmentinGCSUSS09_Node0 -- No --> E_ReplaceStatusSegmentinGCSUSS09
File: GCX016E.cbl
GIVEN: A properly formatted database segment is ready for storage
WHEN: The system performs the database replacement operation
THEN: Replace the existing status segment in GCSUSS09 table with the updated segment containing current status information
βœ“ Consolidated Acceptance Criteria
  • The system checks the operation result → if the update was successful, proceed to log successful replacement, if there was an error, handle the database error 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_DatabaseUpdateSuccessful(["Start Step"]) E_DatabaseUpdateSuccessful(["End Step"]) N_DatabaseUpdateSuccessful_Node0{"The system checks the operation
result"}:::decision N_DatabaseUpdateSuccessful_Node0_action["If the update was successful,
proceed to log successful
replacement, if there was an error,
handle the database error
appropriately"]:::main N_DatabaseUpdateSuccessful_Node0 -- Yes --> N_DatabaseUpdateSuccessful_Node0_action N_DatabaseUpdateSuccessful_Node0_action --> E_DatabaseUpdateSuccessful S_DatabaseUpdateSuccessful --> N_DatabaseUpdateSuccessful_Node0 N_DatabaseUpdateSuccessful_Node0 -- No --> E_DatabaseUpdateSuccessful
File: GCX016E.cbl
GIVEN: A database replacement operation has been attempted on GCSUSS09
WHEN: The system checks the operation result
THEN: If the update was successful, proceed to log successful replacement, if there was an error, handle the database error appropriately
βœ“ Consolidated Acceptance Criteria
  • The system needs to record the successful operation → log the successful replacement of status segment with cargo identification 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_LogSuccessfulReplacement(["Start Step"]) E_LogSuccessfulReplacement(["End Step"]) N_LogSuccessfulReplacement_Node0{"The system needs to record the
successful operation"}:::decision N_LogSuccessfulReplacement_Node0_action["Log the successful replacement of
status segment with cargo
identification and timestamp
information"]:::main N_LogSuccessfulReplacement_Node0 -- Yes --> N_LogSuccessfulReplacement_Node0_action N_LogSuccessfulReplacement_Node0_action --> E_LogSuccessfulReplacement S_LogSuccessfulReplacement --> N_LogSuccessfulReplacement_Node0 N_LogSuccessfulReplacement_Node0 -- No --> E_LogSuccessfulReplacement
File: GCX016E.cbl
GIVEN: The database replacement operation completed successfully
WHEN: The system needs to record the successful operation
THEN:
  • Log the successful replacement of status segment with cargo identification
  • Timestamp information
βœ“ Consolidated Acceptance Criteria
  • The system encounters a database error → handle the error by logging the failure details and determining appropriate recovery or notification 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_HandleDatabaseError(["Start Step"]) E_HandleDatabaseError(["End Step"]) N_HandleDatabaseError_Node0{"The system encounters a database
error"}:::decision N_HandleDatabaseError_Node0_action["Handle the error by logging the
failure details and determining
appropriate recovery or notification
actions"]:::exclusion N_HandleDatabaseError_Node0 -- Yes -->|Alternative| N_HandleDatabaseError_Node0_action N_HandleDatabaseError_Node0_action --> E_HandleDatabaseError S_HandleDatabaseError --> N_HandleDatabaseError_Node0 N_HandleDatabaseError_Node0 -- No --> E_HandleDatabaseError
File: GCX016E.cbl
GIVEN: A database replacement operation has failed
WHEN: The system encounters a database error
THEN:
  • Handle the error by logging the failure details
  • Determining appropriate recovery or notification actions
βœ“ Consolidated Acceptance Criteria
  • The system updates internal tracking information → update status tracking records to reflect the current state of the cargo status segment replacement 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_UpdateStatusTracking(["Start Step"]) E_UpdateStatusTracking(["End Step"]) N_UpdateStatusTracking_Node0{"The system updates internal
tracking information"}:::decision N_UpdateStatusTracking_Node0_action["Update status tracking records to
reflect the current state of the
cargo status segment replacement
operation"]:::main N_UpdateStatusTracking_Node0 -- Yes --> N_UpdateStatusTracking_Node0_action N_UpdateStatusTracking_Node0_action --> E_UpdateStatusTracking S_UpdateStatusTracking --> N_UpdateStatusTracking_Node0 N_UpdateStatusTracking_Node0 -- No --> E_UpdateStatusTracking
File: GCX016E.cbl
GIVEN: A database replacement operation has been completed (successfully or with error)
WHEN: The system updates internal tracking information
THEN: Update status tracking records to reflect the current state of the cargo status segment replacement operation
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry for database conversion → the date information is extracted and prepared for database segment 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_ExtractDateInformation(["Start Step"]) E_ExtractDateInformation(["End Step"]) N_ExtractDateInformation_Node0{"The system processes the entry for
database conversion"}:::decision N_ExtractDateInformation_Node0_action["The date information is extracted
and prepared for database segment
formatting"]:::main N_ExtractDateInformation_Node0 -- Yes --> N_ExtractDateInformation_Node0_action N_ExtractDateInformation_Node0_action --> E_ExtractDateInformation S_ExtractDateInformation --> N_ExtractDateInformation_Node0 N_ExtractDateInformation_Node0 -- No --> E_ExtractDateInformation
File: GCX016E.cbl
GIVEN: A status array entry contains date information
WHEN: The system processes the entry for database conversion
THEN:
  • The date information is extracted
  • Prepared for database segment formatting
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry for database conversion → the time information is extracted and prepared for database segment 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_ExtractTimeInformation(["Start Step"]) E_ExtractTimeInformation(["End Step"]) N_ExtractTimeInformation_Node0{"The system processes the entry for
database conversion"}:::decision N_ExtractTimeInformation_Node0_action["The time information is extracted
and prepared for database segment
formatting"]:::main N_ExtractTimeInformation_Node0 -- Yes --> N_ExtractTimeInformation_Node0_action N_ExtractTimeInformation_Node0_action --> E_ExtractTimeInformation S_ExtractTimeInformation --> N_ExtractTimeInformation_Node0 N_ExtractTimeInformation_Node0 -- No --> E_ExtractTimeInformation
File: GCX016E.cbl
GIVEN: A status array entry contains time information
WHEN: The system processes the entry for database conversion
THEN:
  • The time information is extracted
  • Prepared for database segment formatting
βœ“ Consolidated Acceptance Criteria
  • The system processes the entry for database conversion → the quantity information is extracted and prepared for database segment 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_ExtractQuantityInformation(["Start Step"]) E_ExtractQuantityInformation(["End Step"]) N_ExtractQuantityInformation_Node0{"The system processes the entry for
database conversion"}:::decision N_ExtractQuantityInformation_Node0_action["The quantity information is
extracted and prepared for database
segment formatting"]:::main N_ExtractQuantityInformation_Node0 -- Yes --> N_ExtractQuantityInformation_Node0_action N_ExtractQuantityInformation_Node0_action --> E_ExtractQuantityInformation S_ExtractQuantityInformation --> N_ExtractQuantityInformation_Node0 N_ExtractQuantityInformation_Node0 -- No --> E_ExtractQuantityInformation
File: GCX016E.cbl
GIVEN: A status array entry contains quantity information
WHEN: The system processes the entry for database conversion
THEN:
  • The quantity information is extracted
  • Prepared for database segment formatting
βœ“ Consolidated Acceptance Criteria
  • The system prepares data for database storage → all extracted data is formatted according to database segment field 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_FormatDatabaseSegmentFields(["Start Step"]) E_FormatDatabaseSegmentFields(["End Step"]) N_FormatDatabaseSegmentFields_Node0{"The system prepares data for
database storage"}:::decision N_FormatDatabaseSegmentFields_Node0_action["All extracted data is formatted
according to database segment field
specifications"]:::main N_FormatDatabaseSegmentFields_Node0 -- Yes --> N_FormatDatabaseSegmentFields_Node0_action N_FormatDatabaseSegmentFields_Node0_action --> E_FormatDatabaseSegmentFields S_FormatDatabaseSegmentFields --> N_FormatDatabaseSegmentFields_Node0 N_FormatDatabaseSegmentFields_Node0 -- No --> E_FormatDatabaseSegmentFields
File: GCX016E.cbl
GIVEN: Extracted data from status array entry is available
WHEN: The system prepares data for database storage
THEN: All extracted data is formatted according to database segment field specifications
βœ“ Consolidated Acceptance Criteria
  • The system populates the database segment → all formatted data is moved to the appropriate database segment 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_MoveDatatoDatabaseSegment(["Start Step"]) E_MoveDatatoDatabaseSegment(["End Step"]) N_MoveDatatoDatabaseSegment_Node0{"The system populates the database
segment"}:::decision N_MoveDatatoDatabaseSegment_Node0_action["All formatted data is moved to the
appropriate database segment fields"]:::main N_MoveDatatoDatabaseSegment_Node0 -- Yes --> N_MoveDatatoDatabaseSegment_Node0_action N_MoveDatatoDatabaseSegment_Node0_action --> E_MoveDatatoDatabaseSegment S_MoveDatatoDatabaseSegment --> N_MoveDatatoDatabaseSegment_Node0 N_MoveDatatoDatabaseSegment_Node0 -- No --> E_MoveDatatoDatabaseSegment
File: GCX016E.cbl
GIVEN: Formatted data is ready for database storage
WHEN: The system populates the database segment
THEN: All formatted data is moved to the appropriate database segment fields
βœ“ Consolidated Acceptance Criteria
  • The system completes processing of one entry → the database segment 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_IncrementSegmentCounter(["Start Step"]) E_IncrementSegmentCounter(["End Step"]) N_IncrementSegmentCounter_Node0{"The system completes processing of
one entry"}:::decision N_IncrementSegmentCounter_Node0_action["The database segment counter is
incremented by one"]:::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: GCX016E.cbl
GIVEN: A status array entry has been successfully processed into database format
WHEN: The system completes processing of one entry
THEN: The database segment counter is incremented by one
βœ“ Consolidated Acceptance Criteria
  • The system adds an entry to the segment → the system checks if the segment capacity limit has been 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_CheckSegmentCapacity(["Start Step"]) E_CheckSegmentCapacity(["End Step"]) N_CheckSegmentCapacity_Node0{"The system adds an entry to the
segment"}:::decision N_CheckSegmentCapacity_Node0_action["The system checks if the segment
capacity limit has been reached"]:::main N_CheckSegmentCapacity_Node0 -- Yes --> N_CheckSegmentCapacity_Node0_action N_CheckSegmentCapacity_Node0_action --> E_CheckSegmentCapacity S_CheckSegmentCapacity --> N_CheckSegmentCapacity_Node0 N_CheckSegmentCapacity_Node0 -- No --> E_CheckSegmentCapacity
File: GCX016E.cbl
GIVEN: A database segment has a defined maximum capacity for entries
WHEN: The system adds an entry to the segment
THEN: The system checks if the segment capacity limit has been reached
βœ“ Consolidated Acceptance Criteria
  • The system checks segment capacity after adding an entry → the system returns true if segment is at capacity or false if more entries can be added
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SegmentFull(["Start Step"]) E_SegmentFull(["End Step"]) N_SegmentFull_Node0{"The system checks segment capacity
after adding an entry"}:::decision N_SegmentFull_Node0_action["The system returns true if segment
is at capacity or false if more
entries can be added"]:::main N_SegmentFull_Node0 -- Yes --> N_SegmentFull_Node0_action N_SegmentFull_Node0_action --> E_SegmentFull S_SegmentFull --> N_SegmentFull_Node0 N_SegmentFull_Node0 -- No --> E_SegmentFull
File: GCX016E.cbl
GIVEN: A database segment with defined capacity limits
WHEN: The system checks segment capacity after adding an entry
THEN: The system returns true if segment is at capacity or false if more entries can be added
βœ“ Consolidated Acceptance Criteria
  • The system determines the segment is full → the complete segment is written 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_WriteSegmenttoDatabase(["Start Step"]) E_WriteSegmenttoDatabase(["End Step"]) N_WriteSegmenttoDatabase_Node0{"The system determines the segment
is full"}:::decision N_WriteSegmenttoDatabase_Node0_action["The complete segment is written to
the GCSUSS09 status segments
database"]:::main N_WriteSegmenttoDatabase_Node0 -- Yes --> N_WriteSegmenttoDatabase_Node0_action N_WriteSegmenttoDatabase_Node0_action --> E_WriteSegmenttoDatabase S_WriteSegmenttoDatabase --> N_WriteSegmenttoDatabase_Node0 N_WriteSegmenttoDatabase_Node0 -- No --> E_WriteSegmenttoDatabase
File: GCX016E.cbl
GIVEN: A database segment that has reached its capacity limit
WHEN: The system determines the segment is full
THEN: The complete segment is written to the GCSUSS09 status segments database
βœ“ Consolidated Acceptance Criteria
  • More status array entries remain to be processed → a new database segment is initialized with cleared fields and reset 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_InitializeNewSegment(["Start Step"]) E_InitializeNewSegment(["End Step"]) N_InitializeNewSegment_Node0{"More status array entries remain to
be processed"}:::decision N_InitializeNewSegment_Node0_action["A new database segment is
initialized with cleared fields and
reset counter"]:::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: GCX016E.cbl
GIVEN: A database segment has been written to storage
WHEN: More status array entries remain to be processed
THEN:
  • A new database segment is initialized with cleared fields
  • Reset counter
βœ“ Consolidated Acceptance Criteria
  • More entries remain in the status array → the system continues processing with the next available 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_ContinuewithNextEntry(["Start Step"]) E_ContinuewithNextEntry(["End Step"]) N_ContinuewithNextEntry_Node0{"More entries remain in the status
array"}:::decision N_ContinuewithNextEntry_Node0_action["The system continues processing
with the next available entry"]:::main N_ContinuewithNextEntry_Node0 -- Yes --> N_ContinuewithNextEntry_Node0_action N_ContinuewithNextEntry_Node0_action --> E_ContinuewithNextEntry S_ContinuewithNextEntry --> N_ContinuewithNextEntry_Node0 N_ContinuewithNextEntry_Node0 -- No --> E_ContinuewithNextEntry
File: GCX016E.cbl
GIVEN: The current status array entry has been processed
WHEN: More entries remain in the status array
THEN: The system continues processing with the next available entry
βœ“ Consolidated Acceptance Criteria
  • The system completes processing entries → the system returns true if all entries are processed or false if entries 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_AllEntriesProcessed(["Start Step"]) E_AllEntriesProcessed(["End Step"]) N_AllEntriesProcessed_Node0{"The system completes processing
entries"}:::decision N_AllEntriesProcessed_Node0_action["The system returns true if all
entries are processed or false if
entries remain"]:::main N_AllEntriesProcessed_Node0 -- Yes --> N_AllEntriesProcessed_Node0_action N_AllEntriesProcessed_Node0_action --> E_AllEntriesProcessed S_AllEntriesProcessed --> N_AllEntriesProcessed_Node0 N_AllEntriesProcessed_Node0 -- No --> E_AllEntriesProcessed
File: GCX016E.cbl
GIVEN: A status array with a finite number of entries
WHEN: The system completes processing entries
THEN: The system returns true if all entries are processed or false if entries remain
βœ“ Consolidated Acceptance Criteria
  • No more entries remain to be processed → the final database segment is written 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_WriteFinalSegmenttoDatabase(["Start Step"]) E_WriteFinalSegmenttoDatabase(["End Step"]) N_WriteFinalSegmenttoDatabase_Node0{"No more entries remain to be
processed"}:::decision N_WriteFinalSegmenttoDatabase_Node0_action["The final database segment is
written to the GCSUSS09 status
segments database"]:::main N_WriteFinalSegmenttoDatabase_Node0 -- Yes --> N_WriteFinalSegmenttoDatabase_Node0_action N_WriteFinalSegmenttoDatabase_Node0_action --> E_WriteFinalSegmenttoDatabase S_WriteFinalSegmenttoDatabase --> N_WriteFinalSegmenttoDatabase_Node0 N_WriteFinalSegmenttoDatabase_Node0 -- No --> E_WriteFinalSegmenttoDatabase
File: GCX016E.cbl
GIVEN: All status array entries have been processed and a final segment contains data
WHEN: No more entries remain to be processed
THEN: The final database segment is written to the GCSUSS09 status segments database
βœ“ Consolidated Acceptance Criteria
  • The conversion process is complete → the cargo record is updated with the total count of database 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_UpdateCargoRecordwithSegmentCount(["Start Step"]) E_UpdateCargoRecordwithSegmentCount(["End Step"]) N_UpdateCargoRecordwithSegmentCount_Node0{"The conversion process is complete"}:::decision N_UpdateCargoRecordwithSegmentCount_Node0_action["The cargo record is updated with
the total count of database segments
created"]:::main N_UpdateCargoRecordwithSegmentCount_Node0 -- Yes --> N_UpdateCargoRecordwithSegmentCount_Node0_action N_UpdateCargoRecordwithSegmentCount_Node0_action --> E_UpdateCargoRecordwithSegmentCount S_UpdateCargoRecordwithSegmentCount --> N_UpdateCargoRecordwithSegmentCount_Node0 N_UpdateCargoRecordwithSegmentCount_Node0 -- No --> E_UpdateCargoRecordwithSegmentCount
File: GCX016E.cbl
GIVEN: Database segments have been written for a cargo's status information
WHEN: The conversion process is complete
THEN: The cargo record is updated with the total count of database segments created
βœ“ Consolidated Acceptance Criteria
  • The cargo record has been updated with segment information → the conversion process is marked as complete 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_CompleteConversionProcess(["Start Step"]) E_CompleteConversionProcess(["End Step"]) N_CompleteConversionProcess_Node0{"The cargo record has been updated
with segment information"}:::decision N_CompleteConversionProcess_Node0_action["The conversion process is marked as
complete and control returns to
calling process"]:::main N_CompleteConversionProcess_Node0 -- Yes --> N_CompleteConversionProcess_Node0_action N_CompleteConversionProcess_Node0_action --> E_CompleteConversionProcess S_CompleteConversionProcess --> N_CompleteConversionProcess_Node0 N_CompleteConversionProcess_Node0 -- No --> E_CompleteConversionProcess
File: GCX016E.cbl
GIVEN: All status array entries have been converted and written to database segments
WHEN: The cargo record has been updated with segment information
THEN:
  • The conversion process is marked as complete
  • Control returns to calling process
βœ“ Consolidated Acceptance Criteria
  • The system needs to validate the disposition code → the disposition code is extracted from the X4 segment 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_ExtractDispositionCodefromX4Segment(["Start Step"]) E_ExtractDispositionCodefromX4Segment(["End Step"]) N_ExtractDispositionCodefromX4Segment_Node0{"The system needs to validate the
disposition code"}:::decision N_ExtractDispositionCodefromX4Segment_Node0_action["The disposition code is extracted
from the X4 segment for table lookup"]:::main N_ExtractDispositionCodefromX4Segment_Node0 -- Yes --> N_ExtractDispositionCodefromX4Segment_Node0_action N_ExtractDispositionCodefromX4Segment_Node0_action --> E_ExtractDispositionCodefromX4Segment S_ExtractDispositionCodefromX4Segment --> N_ExtractDispositionCodefromX4Segment_Node0 N_ExtractDispositionCodefromX4Segment_Node0 -- No --> E_ExtractDispositionCodefromX4Segment
File: GCX016E.cbl
GIVEN: An X4 segment is being processed
WHEN: The system needs to validate the disposition code
THEN: The disposition code is extracted from the X4 segment for table lookup
βœ“ Consolidated Acceptance Criteria
  • The system calls the table access function → the DC table is accessed through GCCTBIO to retrieve disposition code information
  • The system calls GCCTBIO to access the DC table → the DC table is accessed and made available for 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 calls the table access
function"}:::decision N_CallGCCTBIOtoAccessDCTable_Node0_action["The DC table is accessed through
GCCTBIO to retrieve disposition code
information"]:::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 calls GCCTBIO to access
the DC table"}:::decision N_CallGCCTBIOtoAccessDCTable_Node1_action["The DC table is accessed and made
available for code lookup"]:::main N_CallGCCTBIOtoAccessDCTable_Node1 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node1_action N_CallGCCTBIOtoAccessDCTable_Node1_action --> E_CallGCCTBIOtoAccessDCTable N_CallGCCTBIOtoAccessDCTable_Node0 -- No --> N_CallGCCTBIOtoAccessDCTable_Node1 N_CallGCCTBIOtoAccessDCTable_Node1 -- No --> E_CallGCCTBIOtoAccessDCTable
File: GCX016E.cbl
GIVEN: A disposition code needs to be validated
WHEN: The system calls the table access function
THEN: The DC table is accessed through GCCTBIO to retrieve disposition code information
File: GCX016E.cbl
GIVEN: A disposition code needs to be validated
WHEN: The system calls GCCTBIO to access the DC table
THEN:
  • The dc table is accessed
  • Made available for code lookup
βœ“ Consolidated Acceptance Criteria
  • The system searches the DC table for the code → the system determines if the disposition code is valid and authorized for use
  • The system searches for the code in the DC table → the system determines if the code exists 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_DispositionCodeFoundinTable(["Start Step"]) E_DispositionCodeFoundinTable(["End Step"]) N_DispositionCodeFoundinTable_Node0{"The system searches the DC table
for the code"}:::decision N_DispositionCodeFoundinTable_Node0_action["The system determines if the
disposition code is valid and
authorized for use"]:::main N_DispositionCodeFoundinTable_Node0 -- Yes --> N_DispositionCodeFoundinTable_Node0_action N_DispositionCodeFoundinTable_Node0_action --> E_DispositionCodeFoundinTable S_DispositionCodeFoundinTable --> N_DispositionCodeFoundinTable_Node0 N_DispositionCodeFoundinTable_Node1{"The system searches for the code in
the DC table"}:::decision N_DispositionCodeFoundinTable_Node1_action["The system determines if the code
exists and is valid for processing"]:::main N_DispositionCodeFoundinTable_Node1 -- Yes --> N_DispositionCodeFoundinTable_Node1_action N_DispositionCodeFoundinTable_Node1_action --> E_DispositionCodeFoundinTable N_DispositionCodeFoundinTable_Node0 -- No --> N_DispositionCodeFoundinTable_Node1 N_DispositionCodeFoundinTable_Node1 -- No --> E_DispositionCodeFoundinTable
File: GCX016E.cbl
GIVEN: A disposition code has been extracted from the X4 segment
WHEN: The system searches the DC table for the code
THEN:
  • The system determines if the disposition code is valid
  • Authorized for use
File: GCX016E.cbl
GIVEN: A disposition code from X4 or V9 segment
WHEN: The system searches for the code in the DC table
THEN:
  • The system determines if the code exists
  • Is valid for processing
βœ“ Consolidated Acceptance Criteria
  • The system needs to process the disposition code → all associated processing rules, attributes, and configuration parameters are 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_RetrieveProcessingRulesandAttributes(["Start Step"]) E_RetrieveProcessingRulesandAttributes(["End Step"]) N_RetrieveProcessingRulesandAttributes_Node0{"The system needs to process the
disposition code"}:::decision N_RetrieveProcessingRulesandAttributes_Node0_action["All associated processing rules,
attributes, and configuration
parameters are retrieved from the
table"]:::main N_RetrieveProcessingRulesandAttributes_Node0 -- Yes --> N_RetrieveProcessingRulesandAttributes_Node0_action N_RetrieveProcessingRulesandAttributes_Node0_action --> E_RetrieveProcessingRulesandAttributes S_RetrieveProcessingRulesandAttributes --> N_RetrieveProcessingRulesandAttributes_Node0 N_RetrieveProcessingRulesandAttributes_Node0 -- No --> E_RetrieveProcessingRulesandAttributes
File: GCX016E.cbl
GIVEN: A disposition code is found to be valid in the DC table
WHEN: The system needs to process the disposition code
THEN: All associated processing rules, attributes, and configuration parameters are retrieved from the table
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine quantity impact → the action code for release quantity processing is extracted from the disposition code attributes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExtractActionCodeforReleaseQuantity(["Start Step"]) E_ExtractActionCodeforReleaseQuantity(["End Step"]) N_ExtractActionCodeforReleaseQuantity_Node0{"The system needs to determine
quantity impact"}:::decision N_ExtractActionCodeforReleaseQuantity_Node0_action["The action code for release
quantity processing is extracted
from the disposition code attributes"]:::main N_ExtractActionCodeforReleaseQuantity_Node0 -- Yes --> N_ExtractActionCodeforReleaseQuantity_Node0_action N_ExtractActionCodeforReleaseQuantity_Node0_action --> E_ExtractActionCodeforReleaseQuantity S_ExtractActionCodeforReleaseQuantity --> N_ExtractActionCodeforReleaseQuantity_Node0 N_ExtractActionCodeforReleaseQuantity_Node0 -- No --> E_ExtractActionCodeforReleaseQuantity
File: GCX016E.cbl
GIVEN: A valid disposition code with associated processing rules
WHEN: The system needs to determine quantity impact
THEN: The action code for release quantity processing is extracted from the disposition code attributes
βœ“ Consolidated Acceptance Criteria
  • All validation checks pass successfully → the system continues with cargo processing using the retrieved disposition code rules and attributes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ContinueProcessingwithRetrievedRules(["Start Step"]) E_ContinueProcessingwithRetrievedRules(["End Step"]) N_ContinueProcessingwithRetrievedRules_Node0{"All validation checks pass
successfully"}:::decision N_ContinueProcessingwithRetrievedRules_Node0_action["The system continues with cargo
processing using the retrieved
disposition code rules and
attributes"]:::main N_ContinueProcessingwithRetrievedRules_Node0 -- Yes --> N_ContinueProcessingwithRetrievedRules_Node0_action N_ContinueProcessingwithRetrievedRules_Node0_action --> E_ContinueProcessingwithRetrievedRules S_ContinueProcessingwithRetrievedRules --> N_ContinueProcessingwithRetrievedRules_Node0 N_ContinueProcessingwithRetrievedRules_Node0 -- No --> E_ContinueProcessingwithRetrievedRules
File: GCX016E.cbl
GIVEN: A disposition code has been validated and processing rules retrieved
WHEN: All validation checks pass successfully
THEN:
  • The system continues with cargo processing using the retrieved disposition code rules
  • Attributes
βœ“ Consolidated Acceptance Criteria
  • The code is determined to be invalid or unauthorized → the system skips further processing of the cargo to prevent incorrect 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_SkipProcessingDuetoInvalidCode(["Start Step"]) E_SkipProcessingDuetoInvalidCode(["End Step"]) N_SkipProcessingDuetoInvalidCode_Node0{"The code is determined to be
invalid or unauthorized"}:::decision N_SkipProcessingDuetoInvalidCode_Node0_action["The system skips further processing
of the cargo to prevent incorrect
status updates"]:::exclusion N_SkipProcessingDuetoInvalidCode_Node0 -- Yes -->|Alternative| N_SkipProcessingDuetoInvalidCode_Node0_action N_SkipProcessingDuetoInvalidCode_Node0_action --> E_SkipProcessingDuetoInvalidCode S_SkipProcessingDuetoInvalidCode --> N_SkipProcessingDuetoInvalidCode_Node0 N_SkipProcessingDuetoInvalidCode_Node0 -- No --> E_SkipProcessingDuetoInvalidCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code has failed validation
WHEN: The code is determined to be invalid or unauthorized
THEN: The system skips further processing of the cargo to prevent incorrect status updates
βœ“ Consolidated Acceptance Criteria
  • The system processes the duplicate hold code → the system updates the existing entry's date and time information with the most recent 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_HandleHoldCodeDuplicate(["Start Step"]) E_HandleHoldCodeDuplicate(["End Step"]) N_HandleHoldCodeDuplicate_Node0{"The system processes the duplicate
hold code"}:::decision N_HandleHoldCodeDuplicate_Node0_action["The system updates the existing
entry s date and time information
with the most recent values"]:::main N_HandleHoldCodeDuplicate_Node0 -- Yes --> N_HandleHoldCodeDuplicate_Node0_action N_HandleHoldCodeDuplicate_Node0_action --> E_HandleHoldCodeDuplicate S_HandleHoldCodeDuplicate --> N_HandleHoldCodeDuplicate_Node0 N_HandleHoldCodeDuplicate_Node0 -- No --> E_HandleHoldCodeDuplicate
File: GCX016E.cbl
GIVEN: A duplicate disposition code is identified as a Hold Code type
WHEN: The system processes the duplicate hold code
THEN:
  • The system updates the existing entry's date
  • Time information with the most recent values
βœ“ Consolidated Acceptance Criteria
  • The system processes the duplicate release code → the system updates the existing entry's date and time information with the most recent 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_HandleReleaseCodeDuplicate(["Start Step"]) E_HandleReleaseCodeDuplicate(["End Step"]) N_HandleReleaseCodeDuplicate_Node0{"The system processes the duplicate
release code"}:::decision N_HandleReleaseCodeDuplicate_Node0_action["The system updates the existing
entry s date and time information
with the most recent values"]:::main N_HandleReleaseCodeDuplicate_Node0 -- Yes --> N_HandleReleaseCodeDuplicate_Node0_action N_HandleReleaseCodeDuplicate_Node0_action --> E_HandleReleaseCodeDuplicate S_HandleReleaseCodeDuplicate --> N_HandleReleaseCodeDuplicate_Node0 N_HandleReleaseCodeDuplicate_Node0 -- No --> E_HandleReleaseCodeDuplicate
File: GCX016E.cbl
GIVEN: A duplicate disposition code is identified as a Release Code type
WHEN: The system processes the duplicate release code
THEN:
  • The system updates the existing entry's date
  • Time information with the most recent values
βœ“ Consolidated Acceptance Criteria
  • The system processes the duplicate status info code → the system keeps the most recent entry and maintains the status information without creating additional duplicates
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_HandleStatusInfoCodeDuplicate(["Start Step"]) E_HandleStatusInfoCodeDuplicate(["End Step"]) N_HandleStatusInfoCodeDuplicate_Node0{"The system processes the duplicate
status info code"}:::decision N_HandleStatusInfoCodeDuplicate_Node0_action["The system keeps the most recent
entry and maintains the status
information without creating
additional duplicates"]:::main N_HandleStatusInfoCodeDuplicate_Node0 -- Yes --> N_HandleStatusInfoCodeDuplicate_Node0_action N_HandleStatusInfoCodeDuplicate_Node0_action --> E_HandleStatusInfoCodeDuplicate S_HandleStatusInfoCodeDuplicate --> N_HandleStatusInfoCodeDuplicate_Node0 N_HandleStatusInfoCodeDuplicate_Node0 -- No --> E_HandleStatusInfoCodeDuplicate
File: GCX016E.cbl
GIVEN: A duplicate disposition code is identified as a Status Info Code type
WHEN: The system processes the duplicate status info code
THEN:
  • The system keeps the most recent entry
  • Maintains the status information without creating additional duplicates
βœ“ Consolidated Acceptance Criteria
  • The system processes the duplicate removal code → the system removes the older duplicate entry 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_HandleRemovalCodeDuplicate(["Start Step"]) E_HandleRemovalCodeDuplicate(["End Step"]) N_HandleRemovalCodeDuplicate_Node0{"The system processes the duplicate
removal code"}:::decision N_HandleRemovalCodeDuplicate_Node0_action["The system removes the older
duplicate entry from the status
array"]:::main N_HandleRemovalCodeDuplicate_Node0 -- Yes --> N_HandleRemovalCodeDuplicate_Node0_action N_HandleRemovalCodeDuplicate_Node0_action --> E_HandleRemovalCodeDuplicate S_HandleRemovalCodeDuplicate --> N_HandleRemovalCodeDuplicate_Node0 N_HandleRemovalCodeDuplicate_Node0 -- No --> E_HandleRemovalCodeDuplicate
File: GCX016E.cbl
GIVEN: A duplicate disposition code is identified as a Removal Code type
WHEN: The system processes the duplicate removal code
THEN: The system removes the older duplicate entry from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the duplicate entry → the system updates the existing entry's date and time fields with the current 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_UpdateExistingEntryDateTime(["Start Step"]) E_UpdateExistingEntryDateTime(["End Step"]) N_UpdateExistingEntryDateTime_Node0{"The system processes the duplicate
entry"}:::decision N_UpdateExistingEntryDateTime_Node0_action["The system updates the existing
entry s date and time fields with
the current processing timestamp"]:::main N_UpdateExistingEntryDateTime_Node0 -- Yes --> N_UpdateExistingEntryDateTime_Node0_action N_UpdateExistingEntryDateTime_Node0_action --> E_UpdateExistingEntryDateTime S_UpdateExistingEntryDateTime --> N_UpdateExistingEntryDateTime_Node0 N_UpdateExistingEntryDateTime_Node0 -- No --> E_UpdateExistingEntryDateTime
File: GCX016E.cbl
GIVEN: A duplicate hold or release code requires timestamp updates
WHEN: The system processes the duplicate entry
THEN:
  • The system updates the existing entry's date
  • Time fields with the current processing timestamp
βœ“ Consolidated Acceptance Criteria
  • The system compares entry timestamps → the system keeps the entry with the most recent timestamp and discards older duplicate 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_KeepMostRecentEntry(["Start Step"]) E_KeepMostRecentEntry(["End Step"]) N_KeepMostRecentEntry_Node0{"The system compares entry
timestamps"}:::decision N_KeepMostRecentEntry_Node0_action["The system keeps the entry with the
most recent timestamp and discards
older duplicate information"]:::main N_KeepMostRecentEntry_Node0 -- Yes --> N_KeepMostRecentEntry_Node0_action N_KeepMostRecentEntry_Node0_action --> E_KeepMostRecentEntry S_KeepMostRecentEntry --> N_KeepMostRecentEntry_Node0 N_KeepMostRecentEntry_Node0 -- No --> E_KeepMostRecentEntry
File: GCX016E.cbl
GIVEN: A duplicate status info code is being processed
WHEN: The system compares entry timestamps
THEN:
  • The system keeps the entry with the most recent timestamp
  • Discards older duplicate information
βœ“ Consolidated Acceptance Criteria
  • The system identifies older duplicate entries in the status array → the system removes the older duplicate entries and keeps only the most recent removal 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_RemoveOlderDuplicate(["Start Step"]) E_RemoveOlderDuplicate(["End Step"]) N_RemoveOlderDuplicate_Node0{"The system identifies older
duplicate entries in the status
array"}:::decision N_RemoveOlderDuplicate_Node0_action["The system removes the older
duplicate entries and keeps only the
most recent removal code"]:::main N_RemoveOlderDuplicate_Node0 -- Yes --> N_RemoveOlderDuplicate_Node0_action N_RemoveOlderDuplicate_Node0_action --> E_RemoveOlderDuplicate S_RemoveOlderDuplicate --> N_RemoveOlderDuplicate_Node0 N_RemoveOlderDuplicate_Node0 -- No --> E_RemoveOlderDuplicate
File: GCX016E.cbl
GIVEN: A duplicate removal code is being processed
WHEN: The system identifies older duplicate entries in the status array
THEN:
  • The system removes the older duplicate entries
  • Keeps only the most recent removal code
βœ“ Consolidated Acceptance Criteria
  • The system processes the new disposition code → the system adds the new disposition code to the appropriate status array with all required 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_AddNewCodetoArray(["Start Step"]) E_AddNewCodetoArray(["End Step"]) N_AddNewCodetoArray_Node0{"The system processes the new
disposition code"}:::decision N_AddNewCodetoArray_Node0_action["The system adds the new disposition
code to the appropriate status array
with all required information"]:::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: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not found as a duplicate in existing status arrays
WHEN: The system processes the new disposition code
THEN: The system adds the new disposition code to the appropriate status array with all required information
βœ“ Consolidated Acceptance Criteria
  • The system finishes handling the duplicate or new code → the system logs the processing action taken including code type, action performed, 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_LogDuplicateProcessingAction(["Start Step"]) E_LogDuplicateProcessingAction(["End Step"]) N_LogDuplicateProcessingAction_Node0{"The system finishes handling the
duplicate or new code"}:::decision N_LogDuplicateProcessingAction_Node0_action["The system logs the processing
action taken including code type,
action performed, and timestamp
information"]:::main N_LogDuplicateProcessingAction_Node0 -- Yes --> N_LogDuplicateProcessingAction_Node0_action N_LogDuplicateProcessingAction_Node0_action --> E_LogDuplicateProcessingAction S_LogDuplicateProcessingAction --> N_LogDuplicateProcessingAction_Node0 N_LogDuplicateProcessingAction_Node0 -- No --> E_LogDuplicateProcessingAction
File: GCX016E.cbl
GIVEN: Any duplicate disposition code processing action has been completed
WHEN: The system finishes handling the duplicate or new code
THEN: The system logs the processing action taken including code type, action performed, and timestamp information
βœ“ Consolidated Acceptance Criteria
  • The system needs to check for conflicting codes before adding the new disposition code → the system searches through all existing disposition codes in the status arrays to identify potential 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_SearchforConflictingCodes(["Start Step"]) E_SearchforConflictingCodes(["End Step"]) N_SearchforConflictingCodes_Node0{"The system needs to check for
conflicting codes before adding the
new disposition code"}:::decision N_SearchforConflictingCodes_Node0_action["The system searches through all
existing disposition codes in the
status arrays to identify potential
conflicts"]:::main N_SearchforConflictingCodes_Node0 -- Yes --> N_SearchforConflictingCodes_Node0_action N_SearchforConflictingCodes_Node0_action --> E_SearchforConflictingCodes S_SearchforConflictingCodes --> N_SearchforConflictingCodes_Node0 N_SearchforConflictingCodes_Node0 -- No --> E_SearchforConflictingCodes
File: GCX016E.cbl
GIVEN: A new disposition code is being processed for a cargo AND current status arrays exist with existing disposition codes
WHEN: The system needs to check for conflicting codes before adding the new disposition code
THEN: The system searches through all existing disposition codes in the status arrays to identify potential conflicts
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine if the conflicting code should be removed → the system evaluates the business rules considering factors such as code hierarchy, timing, and business logic to make the removal decision
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_EvaluateBusinessRules(["Start Step"]) E_EvaluateBusinessRules(["End Step"]) N_EvaluateBusinessRules_Node0{"The system needs to determine if
the conflicting code should be
removed"}:::decision N_EvaluateBusinessRules_Node0_action["The system evaluates the business
rules considering factors such as
code hierarchy, timing, and business
logic to make the removal decision"]:::main N_EvaluateBusinessRules_Node0 -- Yes --> N_EvaluateBusinessRules_Node0_action N_EvaluateBusinessRules_Node0_action --> E_EvaluateBusinessRules S_EvaluateBusinessRules --> N_EvaluateBusinessRules_Node0 N_EvaluateBusinessRules_Node0 -- No --> E_EvaluateBusinessRules
File: GCX016E.cbl
GIVEN: Counterpart disposition codes have been identified AND business rules exist for code conflict resolution
WHEN: The system needs to determine if the conflicting code should be removed
THEN: The system evaluates the business rules considering factors such as code hierarchy, timing, and business logic to make the removal decision
βœ“ Consolidated Acceptance Criteria
  • The system processes the removal of the conflicting code → the system removes the conflicting disposition code from the status array
  • The system executes the removal process → the system removes the marked codes from the status array AND maintains the integrity of 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_RemoveConflictingCodefromArray(["Start Step"]) E_RemoveConflictingCodefromArray(["End Step"]) N_RemoveConflictingCodefromArray_Node0{"The system processes the removal of
the conflicting code"}:::decision N_RemoveConflictingCodefromArray_Node0_action["The system removes the conflicting
disposition code from the status
array"]:::main N_RemoveConflictingCodefromArray_Node0 -- Yes --> N_RemoveConflictingCodefromArray_Node0_action N_RemoveConflictingCodefromArray_Node0_action --> E_RemoveConflictingCodefromArray S_RemoveConflictingCodefromArray --> N_RemoveConflictingCodefromArray_Node0 N_RemoveConflictingCodefromArray_Node1{"The system executes the removal
process"}:::decision N_RemoveConflictingCodefromArray_Node1_action["The system removes the marked codes
from the status array AND maintains
the integrity of remaining array
elements"]:::main N_RemoveConflictingCodefromArray_Node1 -- Yes --> N_RemoveConflictingCodefromArray_Node1_action N_RemoveConflictingCodefromArray_Node1_action --> E_RemoveConflictingCodefromArray N_RemoveConflictingCodefromArray_Node0 -- No --> N_RemoveConflictingCodefromArray_Node1 N_RemoveConflictingCodefromArray_Node1 -- No --> E_RemoveConflictingCodefromArray
File: GCX016E.cbl
GIVEN: A conflicting disposition code has been identified AND business rules determine it should be removed
WHEN: The system processes the removal of the conflicting code
THEN: The system removes the conflicting disposition code from the status array
File: GCX016E.cbl
GIVEN: Disposition codes have been marked for removal from the cargo status array
WHEN: The system executes the removal process
THEN:
  • The system removes the marked codes from the status array
  • Maintains the integrity of remaining array elements
βœ“ Consolidated Acceptance Criteria
  • The system completes processing of one code → the system checks if there are more codes remaining to be evaluated and continues the conflict checking process if more codes 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_MoreCodestoCheck(["Start Step"]) E_MoreCodestoCheck(["End Step"]) N_MoreCodestoCheck_Node0{"The system completes processing of
one code"}:::decision N_MoreCodestoCheck_Node0_action["The system checks if there are more
codes remaining to be evaluated and
continues the conflict checking
process if more codes exist"]:::main N_MoreCodestoCheck_Node0 -- Yes --> N_MoreCodestoCheck_Node0_action N_MoreCodestoCheck_Node0_action --> E_MoreCodestoCheck S_MoreCodestoCheck --> N_MoreCodestoCheck_Node0 N_MoreCodestoCheck_Node0 -- No --> E_MoreCodestoCheck
File: GCX016E.cbl
GIVEN: One disposition code has been processed for conflicts AND there are additional codes in the status array
WHEN: The system completes processing of one code
THEN:
  • The system checks if there are more codes remaining to be evaluated
  • Continues the conflict checking process if more codes exist
βœ“ Consolidated Acceptance Criteria
  • The counterpart removal process is finished → the system continues with the normal disposition code 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_ContinuewithStatusProcessing(["Start Step"]) E_ContinuewithStatusProcessing(["End Step"]) N_ContinuewithStatusProcessing_Node0{"The counterpart removal process is
finished"}:::decision N_ContinuewithStatusProcessing_Node0_action["The system continues with the
normal disposition code processing
workflow"]:::main N_ContinuewithStatusProcessing_Node0 -- Yes --> N_ContinuewithStatusProcessing_Node0_action N_ContinuewithStatusProcessing_Node0_action --> E_ContinuewithStatusProcessing S_ContinuewithStatusProcessing --> N_ContinuewithStatusProcessing_Node0 N_ContinuewithStatusProcessing_Node0 -- No --> E_ContinuewithStatusProcessing
File: GCX016E.cbl
GIVEN: All disposition codes have been checked for conflicts AND any necessary removals have been completed
WHEN: The counterpart removal process is finished
THEN: The system continues with the normal disposition code processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system validates the code against the DC table → the code is accepted if it exists in the DC table, otherwise it is rejected 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_StatusInfoCodeValid(["Start Step"]) E_StatusInfoCodeValid(["End Step"]) N_StatusInfoCodeValid_Node0{"The system validates the code
against the DC table"}:::decision N_StatusInfoCodeValid_Node0_action["The code is accepted if it exists
in the DC table, otherwise it is
rejected as invalid"]:::exclusion N_StatusInfoCodeValid_Node0 -- Yes -->|Alternative| N_StatusInfoCodeValid_Node0_action N_StatusInfoCodeValid_Node0_action --> E_StatusInfoCodeValid S_StatusInfoCodeValid --> N_StatusInfoCodeValid_Node0 N_StatusInfoCodeValid_Node0 -- No --> E_StatusInfoCodeValid
File: GCX016E.cbl
GIVEN: A status information code is received for processing
WHEN: The system validates the code against the DC table
THEN: The code is accepted if it exists in the DC table, otherwise it is rejected as invalid
βœ“ Consolidated Acceptance Criteria
  • The system searches the DC table for the code → the lookup returns success if code exists or failure if code 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_ValidateAgainstDCTable(["Start Step"]) E_ValidateAgainstDCTable(["End Step"]) N_ValidateAgainstDCTable_Node0{"The system searches the DC table
for the code"}:::decision N_ValidateAgainstDCTable_Node0_action["The lookup returns success if code
exists or failure if code is not
found"]:::main N_ValidateAgainstDCTable_Node0 -- Yes --> N_ValidateAgainstDCTable_Node0_action N_ValidateAgainstDCTable_Node0_action --> E_ValidateAgainstDCTable S_ValidateAgainstDCTable --> N_ValidateAgainstDCTable_Node0 N_ValidateAgainstDCTable_Node0 -- No --> E_ValidateAgainstDCTable
File: GCX016E.cbl
GIVEN: A status information code needs validation
WHEN: The system searches the DC table for the code
THEN: The lookup returns success if code exists or failure if code is not found
βœ“ Consolidated Acceptance Criteria
  • The system checks the current array size against maximum capacity → the check returns true if array is at maximum capacity, false if space 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_ArrayFull(["Start Step"]) E_ArrayFull(["End Step"]) N_ArrayFull_Node0{"The system checks the current array
size against maximum capacity"}:::decision N_ArrayFull_Node0_action["The check returns true if array is
at maximum capacity, false if space
is available"]:::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: GCX016E.cbl
GIVEN: A status array and a new status information code to be added
WHEN: The system checks the current array size against maximum capacity
THEN: The check returns true if array is at maximum capacity, false if space is available
βœ“ Consolidated Acceptance Criteria
  • The system determines the insertion position based on array sequence rules → the position is identified where the code should be inserted to maintain proper array 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_FindInsertionPosition(["Start Step"]) E_FindInsertionPosition(["End Step"]) N_FindInsertionPosition_Node0{"The system determines the insertion
position based on array sequence
rules"}:::decision N_FindInsertionPosition_Node0_action["The position is identified where
the code should be inserted to
maintain proper array order"]:::main N_FindInsertionPosition_Node0 -- Yes --> N_FindInsertionPosition_Node0_action N_FindInsertionPosition_Node0_action --> E_FindInsertionPosition S_FindInsertionPosition --> N_FindInsertionPosition_Node0 N_FindInsertionPosition_Node0 -- No --> E_FindInsertionPosition
File: GCX016E.cbl
GIVEN: A status array with available capacity and a new status information code
WHEN: The system determines the insertion position based on array sequence rules
THEN: The position is identified where the code should be inserted to maintain proper array order
βœ“ Consolidated Acceptance Criteria
  • The system inserts the code into the status array → the code is successfully added to the array at the specified 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_InsertStatusInfoCode(["Start Step"]) E_InsertStatusInfoCode(["End Step"]) N_InsertStatusInfoCode_Node0{"The system inserts the code into
the status array"}:::decision N_InsertStatusInfoCode_Node0_action["The code is successfully added to
the array at the specified position"]:::main N_InsertStatusInfoCode_Node0 -- Yes --> N_InsertStatusInfoCode_Node0_action N_InsertStatusInfoCode_Node0_action --> E_InsertStatusInfoCode S_InsertStatusInfoCode --> N_InsertStatusInfoCode_Node0 N_InsertStatusInfoCode_Node0 -- No --> E_InsertStatusInfoCode
File: GCX016E.cbl
GIVEN: A validated status information code and determined insertion position
WHEN: The system inserts the code into the status array
THEN: The code is successfully added to the array at the specified position
βœ“ Consolidated Acceptance Criteria
  • The system updates the array sequence numbers → all sequence numbers are properly maintained to reflect the current array 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_UpdateArraySequence(["Start Step"]) E_UpdateArraySequence(["End Step"]) N_UpdateArraySequence_Node0{"The system updates the array
sequence numbers"}:::decision N_UpdateArraySequence_Node0_action["All sequence numbers are properly
maintained to reflect the current
array state"]:::main N_UpdateArraySequence_Node0 -- Yes --> N_UpdateArraySequence_Node0_action N_UpdateArraySequence_Node0_action --> E_UpdateArraySequence S_UpdateArraySequence --> N_UpdateArraySequence_Node0 N_UpdateArraySequence_Node0 -- No --> E_UpdateArraySequence
File: GCX016E.cbl
GIVEN: A status array with a newly inserted status information code
WHEN: The system updates the array sequence numbers
THEN: All sequence numbers are properly maintained to reflect the current array state
βœ“ Consolidated Acceptance Criteria
  • The system logs the status addition activity → the activity 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_LogStatusAddition(["Start Step"]) E_LogStatusAddition(["End Step"]) N_LogStatusAddition_Node0{"The system logs the status addition
activity"}:::decision N_LogStatusAddition_Node0_action["The activity is recorded with
relevant details for audit trail"]:::main N_LogStatusAddition_Node0 -- Yes --> N_LogStatusAddition_Node0_action N_LogStatusAddition_Node0_action --> E_LogStatusAddition S_LogStatusAddition --> N_LogStatusAddition_Node0 N_LogStatusAddition_Node0 -- No --> E_LogStatusAddition
File: GCX016E.cbl
GIVEN: A successfully processed status information code
WHEN: The system logs the status addition activity
THEN: The activity is recorded with relevant details for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system detects the duplicate code → the processing is skipped and no duplicate entry is 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_SkipDuplicateCode(["Start Step"]) E_SkipDuplicateCode(["End Step"]) N_SkipDuplicateCode_Node0{"The system detects the duplicate
code"}:::decision N_SkipDuplicateCode_Node0_action["The processing is skipped and no
duplicate entry is created"]:::main N_SkipDuplicateCode_Node0 -- Yes --> N_SkipDuplicateCode_Node0_action N_SkipDuplicateCode_Node0_action --> E_SkipDuplicateCode S_SkipDuplicateCode --> N_SkipDuplicateCode_Node0 N_SkipDuplicateCode_Node0 -- No --> E_SkipDuplicateCode
File: GCX016E.cbl
GIVEN: A status information code that already exists in the status arrays
WHEN: The system detects the duplicate code
THEN:
  • The processing is skipped
  • No duplicate entry is created
βœ“ Consolidated Acceptance Criteria
  • The system attempts to add the code to the full array → an array capacity error is generated 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_ArrayCapacityError(["Start Step"]) E_ArrayCapacityError(["End Step"]) N_ArrayCapacityError_Node0{"The system attempts to add the code
to the full array"}:::decision N_ArrayCapacityError_Node0_action["An array capacity error is
generated and processing is
terminated"]:::main N_ArrayCapacityError_Node0 -- Yes --> N_ArrayCapacityError_Node0_action N_ArrayCapacityError_Node0_action --> E_ArrayCapacityError S_ArrayCapacityError --> N_ArrayCapacityError_Node0 N_ArrayCapacityError_Node0 -- No --> E_ArrayCapacityError
File: GCX016E.cbl
GIVEN: A status array at maximum capacity and a new status information code to add
WHEN: The system attempts to add the code to the full array
THEN:
  • An array capacity error is generated
  • Processing is terminated
βœ“ Consolidated Acceptance Criteria
  • The system searches the status array for the matching disposition code → the disposition code must exist in the status array to proceed with 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_SearchStatusArrayforMatchingCode(["Start Step"]) E_SearchStatusArrayforMatchingCode(["End Step"]) N_SearchStatusArrayforMatchingCode_Node0{"The system searches the status
array for the matching disposition
code"}:::decision N_SearchStatusArrayforMatchingCode_Node0_action["The disposition code must exist in
the status array to proceed with
removal"]:::main N_SearchStatusArrayforMatchingCode_Node0 -- Yes --> N_SearchStatusArrayforMatchingCode_Node0_action N_SearchStatusArrayforMatchingCode_Node0_action --> E_SearchStatusArrayforMatchingCode S_SearchStatusArrayforMatchingCode --> N_SearchStatusArrayforMatchingCode_Node0 N_SearchStatusArrayforMatchingCode_Node0 -- No --> E_SearchStatusArrayforMatchingCode
File: GCX016E.cbl
GIVEN: A valid disposition code is provided for removal
WHEN: The system searches the status array for the matching disposition code
THEN: The disposition code must exist in the status array to proceed with removal
βœ“ Consolidated Acceptance Criteria
  • The system checks removal authorization for the requesting entity → the requesting entity must have proper authorization to remove 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_ValidateRemovalAuthority(["Start Step"]) E_ValidateRemovalAuthority(["End Step"]) N_ValidateRemovalAuthority_Node0{"The system checks removal
authorization for the requesting
entity"}:::decision N_ValidateRemovalAuthority_Node0_action["The requesting entity must have
proper authorization to remove the
disposition code"]:::main N_ValidateRemovalAuthority_Node0 -- Yes --> N_ValidateRemovalAuthority_Node0_action N_ValidateRemovalAuthority_Node0_action --> E_ValidateRemovalAuthority S_ValidateRemovalAuthority --> N_ValidateRemovalAuthority_Node0 N_ValidateRemovalAuthority_Node0 -- No --> E_ValidateRemovalAuthority
File: GCX016E.cbl
GIVEN: A disposition code exists in the status array
WHEN: The system checks removal authorization for the requesting entity
THEN: The requesting entity must have proper authorization to remove the disposition code
βœ“ Consolidated Acceptance Criteria
  • The system removes the disposition code from the status array → the disposition code is marked for removal and remaining array elements are shifted to fill the gap
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_MarkDispositionCodeforRemoval(["Start Step"]) E_MarkDispositionCodeforRemoval(["End Step"]) N_MarkDispositionCodeforRemoval_Node0{"The system removes the disposition
code from the status array"}:::decision N_MarkDispositionCodeforRemoval_Node0_action["The disposition code is marked for
removal and remaining array elements
are shifted to fill the gap"]:::main N_MarkDispositionCodeforRemoval_Node0 -- Yes --> N_MarkDispositionCodeforRemoval_Node0_action N_MarkDispositionCodeforRemoval_Node0_action --> E_MarkDispositionCodeforRemoval S_MarkDispositionCodeforRemoval --> N_MarkDispositionCodeforRemoval_Node0 N_MarkDispositionCodeforRemoval_Node0 -- No --> E_MarkDispositionCodeforRemoval
File: GCX016E.cbl
GIVEN: Authorization is confirmed for disposition code removal
WHEN: The system removes the disposition code from the status array
THEN:
  • The disposition code is marked for removal
  • Remaining array elements are shifted to fill the gap
βœ“ Consolidated Acceptance Criteria
  • The disposition code format validation fails → an error message must be generated indicating invalid code format and processing must terminate
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateErrorInvalidCodeFormat(["Start Step"]) E_GenerateErrorInvalidCodeFormat(["End Step"]) N_GenerateErrorInvalidCodeFormat_Node0{"The disposition code format
validation fails"}:::decision N_GenerateErrorInvalidCodeFormat_Node0_action["An error message must be generated
indicating invalid code format and
processing must terminate"]:::exclusion N_GenerateErrorInvalidCodeFormat_Node0 -- Yes -->|Alternative| N_GenerateErrorInvalidCodeFormat_Node0_action N_GenerateErrorInvalidCodeFormat_Node0_action --> E_GenerateErrorInvalidCodeFormat S_GenerateErrorInvalidCodeFormat --> N_GenerateErrorInvalidCodeFormat_Node0 N_GenerateErrorInvalidCodeFormat_Node0 -- No --> E_GenerateErrorInvalidCodeFormat
File: GCX016E.cbl
GIVEN: A disposition code removal request is received
WHEN: The disposition code format validation fails
THEN:
  • An error message must be generated indicating invalid code format
  • Processing must terminate
βœ“ Consolidated Acceptance Criteria
  • The disposition code is not found in the status array → an error message must be generated indicating code not found and processing must terminate
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 status array"}:::decision N_GenerateErrorCodeNotFound_Node0_action["An error message must be generated
indicating code not found and
processing must terminate"]:::exclusion N_GenerateErrorCodeNotFound_Node0 -- Yes -->|Alternative| N_GenerateErrorCodeNotFound_Node0_action N_GenerateErrorCodeNotFound_Node0_action --> E_GenerateErrorCodeNotFound S_GenerateErrorCodeNotFound --> N_GenerateErrorCodeNotFound_Node0 N_GenerateErrorCodeNotFound_Node0 -- No --> E_GenerateErrorCodeNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A valid format disposition code is provided for removal
WHEN: The disposition code is not found in the status array
THEN:
  • An error message must be generated indicating code not found
  • Processing must terminate
βœ“ Consolidated Acceptance Criteria
  • The requesting entity lacks proper removal authorization → an error message must be generated indicating unauthorized removal attempt and processing must terminate
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateErrorUnauthorizedRemoval(["Start Step"]) E_GenerateErrorUnauthorizedRemoval(["End Step"]) N_GenerateErrorUnauthorizedRemoval_Node0{"The requesting entity lacks proper
removal authorization"}:::decision N_GenerateErrorUnauthorizedRemoval_Node0_action["An error message must be generated
indicating unauthorized removal
attempt and processing must
terminate"]:::exclusion N_GenerateErrorUnauthorizedRemoval_Node0 -- Yes -->|Alternative| N_GenerateErrorUnauthorizedRemoval_Node0_action N_GenerateErrorUnauthorizedRemoval_Node0_action --> E_GenerateErrorUnauthorizedRemoval S_GenerateErrorUnauthorizedRemoval --> N_GenerateErrorUnauthorizedRemoval_Node0 N_GenerateErrorUnauthorizedRemoval_Node0 -- No --> E_GenerateErrorUnauthorizedRemoval
File: GCX016E.cbl
GIVEN: A disposition code exists in the status array
WHEN: The requesting entity lacks proper removal authorization
THEN:
  • An error message must be generated indicating unauthorized removal attempt
  • Processing must terminate
βœ“ Consolidated Acceptance Criteria
  • The system needs to process the release request → the system must retrieve and examine the current status array from cargo status segments to identify existing 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 needs to process the
release request"}:::decision N_CheckCurrentStatusArray_Node0_action["The system must retrieve and
examine the current status array
from cargo status segments to
identify existing 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: GCX016E.cbl
GIVEN: A release request has been received for a cargo
WHEN: The system needs to process the release request
THEN:
  • The system must retrieve
  • Examine the current status array from cargo status segments to identify existing disposition codes
βœ“ Consolidated Acceptance Criteria
  • Processing a new release request → the system must search through all disposition codes in the status array to identify existing 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_SearchforExistingReleaseCodes(["Start Step"]) E_SearchforExistingReleaseCodes(["End Step"]) N_SearchforExistingReleaseCodes_Node0{"Processing a new release request"}:::decision N_SearchforExistingReleaseCodes_Node0_action["The system must search through all
disposition codes in the status
array to identify existing release
codes"]:::main N_SearchforExistingReleaseCodes_Node0 -- Yes --> N_SearchforExistingReleaseCodes_Node0_action N_SearchforExistingReleaseCodes_Node0_action --> E_SearchforExistingReleaseCodes S_SearchforExistingReleaseCodes --> N_SearchforExistingReleaseCodes_Node0 N_SearchforExistingReleaseCodes_Node0 -- No --> E_SearchforExistingReleaseCodes
File: GCX016E.cbl
GIVEN: The current status array has been retrieved for a cargo
WHEN: Processing a new release request
THEN: The system must search through all disposition codes in the status array to identify existing release codes
βœ“ Consolidated Acceptance Criteria
  • Processing a new release request → the system must remove all existing release disposition codes from the status array before adding the new release 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_RemoveExistingReleaseCodes(["Start Step"]) E_RemoveExistingReleaseCodes(["End Step"]) N_RemoveExistingReleaseCodes_Node0{"Processing a new release request"}:::decision N_RemoveExistingReleaseCodes_Node0_action["The system must remove all existing
release disposition codes from the
status array before adding the new
release code"]:::main N_RemoveExistingReleaseCodes_Node0 -- Yes --> N_RemoveExistingReleaseCodes_Node0_action N_RemoveExistingReleaseCodes_Node0_action --> E_RemoveExistingReleaseCodes S_RemoveExistingReleaseCodes --> N_RemoveExistingReleaseCodes_Node0 N_RemoveExistingReleaseCodes_Node0 -- No --> E_RemoveExistingReleaseCodes
File: GCX016E.cbl
GIVEN: Existing release codes have been found in the status array
WHEN: Processing a new release request
THEN: The system must remove all existing release disposition codes from the status array before adding the new release code
βœ“ Consolidated Acceptance Criteria
  • The system has processed existing release codes → the system must search the status array for hold disposition codes that conflict with 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_SearchforConflictingHoldCodes(["Start Step"]) E_SearchforConflictingHoldCodes(["End Step"]) N_SearchforConflictingHoldCodes_Node0{"The system has processed existing
release codes"}:::decision N_SearchforConflictingHoldCodes_Node0_action["The system must search the status
array for hold disposition codes
that conflict with the release
action"]:::main N_SearchforConflictingHoldCodes_Node0 -- Yes --> N_SearchforConflictingHoldCodes_Node0_action N_SearchforConflictingHoldCodes_Node0_action --> E_SearchforConflictingHoldCodes S_SearchforConflictingHoldCodes --> N_SearchforConflictingHoldCodes_Node0 N_SearchforConflictingHoldCodes_Node0 -- No --> E_SearchforConflictingHoldCodes
File: GCX016E.cbl
GIVEN: A release request is being processed
WHEN: The system has processed existing release codes
THEN: The system must search the status array for hold disposition codes that conflict with the release action
βœ“ Consolidated Acceptance Criteria
  • The system has cleared conflicting codes from the status array → the system must validate the new release disposition code exists in the disposition code table and is classified as a valid release 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_ValidateNewReleaseDispositionCode(["Start Step"]) E_ValidateNewReleaseDispositionCode(["End Step"]) N_ValidateNewReleaseDispositionCode_Node0{"The system has cleared conflicting
codes from the status array"}:::decision N_ValidateNewReleaseDispositionCode_Node0_action["The system must validate the new
release disposition code exists in
the disposition code table and is
classified as a valid release code"]:::main N_ValidateNewReleaseDispositionCode_Node0 -- Yes --> N_ValidateNewReleaseDispositionCode_Node0_action N_ValidateNewReleaseDispositionCode_Node0_action --> E_ValidateNewReleaseDispositionCode S_ValidateNewReleaseDispositionCode --> N_ValidateNewReleaseDispositionCode_Node0 N_ValidateNewReleaseDispositionCode_Node0 -- No --> E_ValidateNewReleaseDispositionCode
File: GCX016E.cbl
GIVEN: A new release disposition code needs to be added
WHEN: The system has cleared conflicting codes from the status array
THEN:
  • The system must validate the new release disposition code exists in the disposition code table
  • Is classified as a valid release code
βœ“ Consolidated Acceptance Criteria
  • The status array has been cleared of conflicting codes → the system must add the new release disposition code to the status array with appropriate sequence number and occurrence 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_AddNewReleaseDispositionCodetoStatusArray(["Start Step"]) E_AddNewReleaseDispositionCodetoStatusArray(["End Step"]) N_AddNewReleaseDispositionCodetoStatusArray_Node0{"The status array has been cleared
of conflicting codes"}:::decision N_AddNewReleaseDispositionCodetoStatusArray_Node0_action["The system must add the new release
disposition code to the status array
with appropriate sequence number and
occurrence data"]:::main N_AddNewReleaseDispositionCodetoStatusArray_Node0 -- Yes --> N_AddNewReleaseDispositionCodetoStatusArray_Node0_action N_AddNewReleaseDispositionCodetoStatusArray_Node0_action --> E_AddNewReleaseDispositionCodetoStatusArray S_AddNewReleaseDispositionCodetoStatusArray --> N_AddNewReleaseDispositionCodetoStatusArray_Node0 N_AddNewReleaseDispositionCodetoStatusArray_Node0 -- No --> E_AddNewReleaseDispositionCodetoStatusArray
File: GCX016E.cbl
GIVEN: The new release disposition code has been validated as correct
WHEN: The status array has been cleared of conflicting codes
THEN:
  • The system must add the new release disposition code to the status array with appropriate sequence number
  • Occurrence data
βœ“ Consolidated Acceptance Criteria
  • The cargo status needs to be updated → the system must set appropriate release status flags to reflect the current release state of the cargo
  • Release quantity changes require status flag updates → appropriate release status flags are set on 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_SetReleaseStatusFlags(["Start Step"]) E_SetReleaseStatusFlags(["End Step"]) N_SetReleaseStatusFlags_Node0{"The cargo status needs to be
updated"}:::decision N_SetReleaseStatusFlags_Node0_action["The system must set appropriate
release status flags to reflect the
current release state of the cargo"]:::main N_SetReleaseStatusFlags_Node0 -- Yes --> N_SetReleaseStatusFlags_Node0_action N_SetReleaseStatusFlags_Node0_action --> E_SetReleaseStatusFlags S_SetReleaseStatusFlags --> N_SetReleaseStatusFlags_Node0 N_SetReleaseStatusFlags_Node1{"Release quantity changes require
status flag updates"}:::decision N_SetReleaseStatusFlags_Node1_action["Appropriate release status flags
are set on the cargo record"]:::main N_SetReleaseStatusFlags_Node1 -- Yes --> N_SetReleaseStatusFlags_Node1_action N_SetReleaseStatusFlags_Node1_action --> E_SetReleaseStatusFlags N_SetReleaseStatusFlags_Node0 -- No --> N_SetReleaseStatusFlags_Node1 N_SetReleaseStatusFlags_Node1 -- No --> E_SetReleaseStatusFlags
File: GCX016E.cbl
GIVEN: Release quantity impact has been calculated
WHEN: The cargo status needs to be updated
THEN: The system must set appropriate release status flags to reflect the current release state of the cargo
File: GCX016E.cbl
GIVEN: Cargo release quantity has been updated
WHEN: Release quantity changes require status flag updates
THEN: Appropriate release status flags are set on the cargo record
βœ“ Consolidated Acceptance Criteria
  • The release request processing is complete → the system must log the release request action with timestamp and details 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_LogReleaseRequestAction(["Start Step"]) E_LogReleaseRequestAction(["End Step"]) N_LogReleaseRequestAction_Node0{"The release request processing is
complete"}:::decision N_LogReleaseRequestAction_Node0_action["The system must log the release
request action with timestamp and
details for audit trail purposes"]:::main N_LogReleaseRequestAction_Node0 -- Yes --> N_LogReleaseRequestAction_Node0_action N_LogReleaseRequestAction_Node0_action --> E_LogReleaseRequestAction S_LogReleaseRequestAction --> N_LogReleaseRequestAction_Node0 N_LogReleaseRequestAction_Node0 -- No --> E_LogReleaseRequestAction
File: GCX016E.cbl
GIVEN: Release notifications have been generated
WHEN: The release request processing is complete
THEN:
  • The system must log the release request action with timestamp
  • Details for audit trail purposes
βœ“ Consolidated Acceptance Criteria
  • The release request cannot be processed due to validation failure → the system must reject the release request and maintain the original cargo status without 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_RejectReleaseRequest(["Start Step"]) E_RejectReleaseRequest(["End Step"]) N_RejectReleaseRequest_Node0{"The release request cannot be
processed due to validation failure"}:::decision N_RejectReleaseRequest_Node0_action["The system must reject the release
request and maintain the original
cargo status without any changes"]:::exclusion N_RejectReleaseRequest_Node0 -- Yes -->|Alternative| N_RejectReleaseRequest_Node0_action N_RejectReleaseRequest_Node0_action --> E_RejectReleaseRequest S_RejectReleaseRequest --> N_RejectReleaseRequest_Node0 N_RejectReleaseRequest_Node0 -- No --> E_RejectReleaseRequest
File: GCX016E.cbl
GIVEN: An error message has been generated for invalid release code
WHEN: The release request cannot be processed due to validation failure
THEN:
  • The system must reject the release request
  • Maintain the original cargo status without any changes
βœ“ Consolidated Acceptance Criteria
  • The system validates the request parameters including disposition code format, cargo identification, and request authorization → the system determines if the request is valid and can proceed with manual 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_ValidateManualReleaseRequest(["Start Step"]) E_ValidateManualReleaseRequest(["End Step"]) N_ValidateManualReleaseRequest_Node0{"The system validates the request
parameters including disposition
code format, cargo identification,
and request authorization"}:::decision N_ValidateManualReleaseRequest_Node0_action["The system determines if the
request is valid and can proceed
with manual release processing"]:::main N_ValidateManualReleaseRequest_Node0 -- Yes --> N_ValidateManualReleaseRequest_Node0_action N_ValidateManualReleaseRequest_Node0_action --> E_ValidateManualReleaseRequest S_ValidateManualReleaseRequest --> N_ValidateManualReleaseRequest_Node0 N_ValidateManualReleaseRequest_Node0 -- No --> E_ValidateManualReleaseRequest
File: GCX016E.cbl
GIVEN: A manual release request is received for a cargo
WHEN: The system validates the request parameters including disposition code format, cargo identification, and request authorization
THEN:
  • The system determines if the request is valid
  • Can proceed with manual release processing
βœ“ Consolidated Acceptance Criteria
  • A manual release is being processed → the system removes all conflicting disposition codes from the status array to clear the path 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_RemoveExistingHoldRestrictionCodes(["Start Step"]) E_RemoveExistingHoldRestrictionCodes(["End Step"]) N_RemoveExistingHoldRestrictionCodes_Node0{"A manual release is being processed"}:::decision N_RemoveExistingHoldRestrictionCodes_Node0_action["The system removes all conflicting
disposition codes from the status
array to clear the path for manual
release"]:::main N_RemoveExistingHoldRestrictionCodes_Node0 -- Yes --> N_RemoveExistingHoldRestrictionCodes_Node0_action N_RemoveExistingHoldRestrictionCodes_Node0_action --> E_RemoveExistingHoldRestrictionCodes S_RemoveExistingHoldRestrictionCodes --> N_RemoveExistingHoldRestrictionCodes_Node0 N_RemoveExistingHoldRestrictionCodes_Node0 -- No --> E_RemoveExistingHoldRestrictionCodes
File: GCX016E.cbl
GIVEN: Conflicting hold or restriction codes exist in the cargo status array
WHEN: A manual release is being processed
THEN: The system removes all conflicting disposition codes from the status array to clear the path for manual release
βœ“ Consolidated Acceptance Criteria
  • A manual release is being applied → the system adds the manual release disposition code (MRL) to the status array with appropriate sequence number and metadata
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AddManualReleaseDispositionCode(["Start Step"]) E_AddManualReleaseDispositionCode(["End Step"]) N_AddManualReleaseDispositionCode_Node0{"A manual release is being applied"}:::decision N_AddManualReleaseDispositionCode_Node0_action["The system adds the manual release
disposition code MRL to the status
array with appropriate sequence
number and metadata"]:::main N_AddManualReleaseDispositionCode_Node0 -- Yes --> N_AddManualReleaseDispositionCode_Node0_action N_AddManualReleaseDispositionCode_Node0_action --> E_AddManualReleaseDispositionCode S_AddManualReleaseDispositionCode --> N_AddManualReleaseDispositionCode_Node0 N_AddManualReleaseDispositionCode_Node0 -- No --> E_AddManualReleaseDispositionCode
File: GCX016E.cbl
GIVEN: The cargo status array has been cleared of conflicting codes
WHEN: A manual release is being applied
THEN:
  • The system adds the manual release disposition code (mrl) to the status array with appropriate sequence number
  • Metadata
βœ“ Consolidated Acceptance Criteria
  • The system validates the disposition code against the disposition code table → the system confirms the code is valid for auto release processing 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_ValidateAutoReleaseDispositionCode(["Start Step"]) E_ValidateAutoReleaseDispositionCode(["End Step"]) N_ValidateAutoReleaseDispositionCode_Node0{"The system validates the
disposition code against the
disposition code table"}:::decision N_ValidateAutoReleaseDispositionCode_Node0_action["The system confirms the code is
valid for auto release processing or
rejects invalid codes"]:::main N_ValidateAutoReleaseDispositionCode_Node0 -- Yes --> N_ValidateAutoReleaseDispositionCode_Node0_action N_ValidateAutoReleaseDispositionCode_Node0_action --> E_ValidateAutoReleaseDispositionCode S_ValidateAutoReleaseDispositionCode --> N_ValidateAutoReleaseDispositionCode_Node0 N_ValidateAutoReleaseDispositionCode_Node0 -- No --> E_ValidateAutoReleaseDispositionCode
File: GCX016E.cbl
GIVEN: An auto release request is received with a disposition code
WHEN: The system validates the disposition code against the disposition code table
THEN: The system confirms the code is valid for auto release processing or rejects invalid codes
βœ“ Consolidated Acceptance Criteria
  • The system searches the existing status arrays for the same auto release code → the system identifies if a duplicate auto release code exists and flags it 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_DuplicateAutoReleaseFound(["Start Step"]) E_DuplicateAutoReleaseFound(["End Step"]) N_DuplicateAutoReleaseFound_Node0{"The system searches the existing
status arrays for the same auto
release code"}:::decision N_DuplicateAutoReleaseFound_Node0_action["The system identifies if a
duplicate auto release code exists
and flags it for removal"]:::main N_DuplicateAutoReleaseFound_Node0 -- Yes --> N_DuplicateAutoReleaseFound_Node0_action N_DuplicateAutoReleaseFound_Node0_action --> E_DuplicateAutoReleaseFound S_DuplicateAutoReleaseFound --> N_DuplicateAutoReleaseFound_Node0 N_DuplicateAutoReleaseFound_Node0 -- No --> E_DuplicateAutoReleaseFound
File: GCX016E.cbl
GIVEN: A valid auto release disposition code is being processed
WHEN: The system searches the existing status arrays for the same auto release code
THEN:
  • The system identifies if a duplicate auto release code exists
  • Flags it for removal
βœ“ Consolidated Acceptance Criteria
  • The system processes the new auto release request → the system removes the existing auto release code 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_RemoveExistingAutoReleaseCode(["Start Step"]) E_RemoveExistingAutoReleaseCode(["End Step"]) N_RemoveExistingAutoReleaseCode_Node0{"The system processes the new auto
release request"}:::decision N_RemoveExistingAutoReleaseCode_Node0_action["The system removes the existing
auto release code from the status
array"]:::main N_RemoveExistingAutoReleaseCode_Node0 -- Yes --> N_RemoveExistingAutoReleaseCode_Node0_action N_RemoveExistingAutoReleaseCode_Node0_action --> E_RemoveExistingAutoReleaseCode S_RemoveExistingAutoReleaseCode --> N_RemoveExistingAutoReleaseCode_Node0 N_RemoveExistingAutoReleaseCode_Node0 -- No --> E_RemoveExistingAutoReleaseCode
File: GCX016E.cbl
GIVEN: A duplicate auto release code is found in the status array
WHEN: The system processes the new auto release request
THEN: The system removes the existing auto release code from the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes a valid auto release request → the system adds the new auto release code to the cargo's status array with appropriate sequence and occurrence 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_AddNewAutoReleaseCodetoStatusArray(["Start Step"]) E_AddNewAutoReleaseCodetoStatusArray(["End Step"]) N_AddNewAutoReleaseCodetoStatusArray_Node0{"The system processes a valid auto
release request"}:::decision N_AddNewAutoReleaseCodetoStatusArray_Node0_action["The system adds the new auto
release code to the cargo s status
array with appropriate sequence and
occurrence data"]:::main N_AddNewAutoReleaseCodetoStatusArray_Node0 -- Yes --> N_AddNewAutoReleaseCodetoStatusArray_Node0_action N_AddNewAutoReleaseCodetoStatusArray_Node0_action --> E_AddNewAutoReleaseCodetoStatusArray S_AddNewAutoReleaseCodetoStatusArray --> N_AddNewAutoReleaseCodetoStatusArray_Node0 N_AddNewAutoReleaseCodetoStatusArray_Node0 -- No --> E_AddNewAutoReleaseCodetoStatusArray
File: GCX016E.cbl
GIVEN: Any existing duplicate auto release codes have been removed
WHEN: The system processes a valid auto release request
THEN:
  • The system adds the new auto release code to the cargo's status array with appropriate sequence
  • Occurrence data
βœ“ Consolidated Acceptance Criteria
  • If the current cargo status including all active holds → the system determines if the cargo is currently held and requires release processing or if no release action 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_CargoCurrentlyHeld(["Start Step"]) E_CargoCurrentlyHeld(["End Step"]) N_CargoCurrentlyHeld_Node0{"The system evaluates the current
cargo status including all active
holds"}:::decision N_CargoCurrentlyHeld_Node0_action["The system determines if the cargo
is currently held and requires
release processing or if no release
action is needed"]:::main N_CargoCurrentlyHeld_Node0 -- Yes --> N_CargoCurrentlyHeld_Node0_action N_CargoCurrentlyHeld_Node0_action --> E_CargoCurrentlyHeld S_CargoCurrentlyHeld --> N_CargoCurrentlyHeld_Node0 N_CargoCurrentlyHeld_Node0 -- No --> E_CargoCurrentlyHeld
File: GCX016E.cbl
GIVEN: An auto release code has been added to the status array
WHEN: The system evaluates the current cargo status including all active holds
THEN:
  • The system determines if the cargo is currently held
  • Requires release processing or if no release action is needed
βœ“ Consolidated Acceptance Criteria
  • The system calculates the impact on release quantities based on current held amounts and requested release quantities → the system determines the quantity impact and whether full or partial release is possible
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CalculateReleaseImpactonQuantities(["Start Step"]) E_CalculateReleaseImpactonQuantities(["End Step"]) N_CalculateReleaseImpactonQuantities_Node0{"The system calculates the impact on
release quantities based on current
held amounts and requested release
quantities"}:::decision N_CalculateReleaseImpactonQuantities_Node0_action["The system determines the quantity
impact and whether full or partial
release is possible"]:::main N_CalculateReleaseImpactonQuantities_Node0 -- Yes --> N_CalculateReleaseImpactonQuantities_Node0_action N_CalculateReleaseImpactonQuantities_Node0_action --> E_CalculateReleaseImpactonQuantities S_CalculateReleaseImpactonQuantities --> N_CalculateReleaseImpactonQuantities_Node0 N_CalculateReleaseImpactonQuantities_Node0 -- No --> E_CalculateReleaseImpactonQuantities
File: GCX016E.cbl
GIVEN: Cargo is currently held and eligible for auto release
WHEN:
  • The system calculates the impact on release quantities based on current held amounts
  • Requested release quantities
THEN:
  • The system determines the quantity impact
  • Whether full or partial release is possible
βœ“ Consolidated Acceptance Criteria
  • If if all cargo quantities can be fully released without restrictions → the system determines if full release is feasible or if 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_FullReleasePossible(["Start Step"]) E_FullReleasePossible(["End Step"]) N_FullReleasePossible_Node0{"The system evaluates if all cargo
quantities can be fully released
without restrictions"}:::decision N_FullReleasePossible_Node0_action["The system determines if full
release is feasible or if partial
release processing is required"]:::main N_FullReleasePossible_Node0 -- Yes --> N_FullReleasePossible_Node0_action N_FullReleasePossible_Node0_action --> E_FullReleasePossible S_FullReleasePossible --> N_FullReleasePossible_Node0 N_FullReleasePossible_Node0 -- No --> E_FullReleasePossible
File: GCX016E.cbl
GIVEN: Release quantity impact has been calculated
WHEN: The system evaluates if all cargo quantities can be fully released without restrictions
THEN: The system determines if full release is feasible or if partial release processing is required
βœ“ Consolidated Acceptance Criteria
  • The system processes the auto release request → the system sets the cargo status to released and updates all 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_SetCargoStatustoReleased(["Start Step"]) E_SetCargoStatustoReleased(["End Step"]) N_SetCargoStatustoReleased_Node0{"The system processes the auto
release request"}:::decision N_SetCargoStatustoReleased_Node0_action["The system sets the cargo status to
released and updates all related
status indicators"]:::main N_SetCargoStatustoReleased_Node0 -- Yes --> N_SetCargoStatustoReleased_Node0_action N_SetCargoStatustoReleased_Node0_action --> E_SetCargoStatustoReleased S_SetCargoStatustoReleased --> N_SetCargoStatustoReleased_Node0 N_SetCargoStatustoReleased_Node0 -- No --> E_SetCargoStatustoReleased
File: GCX016E.cbl
GIVEN: Full release is determined to be possible
WHEN: The system processes the auto release request
THEN:
  • The system sets the cargo status to released
  • Updates all related status indicators
βœ“ Consolidated Acceptance Criteria
  • The system generates notifications for the auto release action → the system creates Merlin messages or email notifications to inform relevant parties of the 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_GenerateAutoReleaseNotification(["Start Step"]) E_GenerateAutoReleaseNotification(["End Step"]) N_GenerateAutoReleaseNotification_Node0{"The system generates notifications
for the auto release action"}:::decision N_GenerateAutoReleaseNotification_Node0_action["The system creates Merlin messages
or email notifications to inform
relevant parties of the auto release"]:::main N_GenerateAutoReleaseNotification_Node0 -- Yes --> N_GenerateAutoReleaseNotification_Node0_action N_GenerateAutoReleaseNotification_Node0_action --> E_GenerateAutoReleaseNotification S_GenerateAutoReleaseNotification --> N_GenerateAutoReleaseNotification_Node0 N_GenerateAutoReleaseNotification_Node0 -- No --> E_GenerateAutoReleaseNotification
File: GCX016E.cbl
GIVEN: Auto release processing has been completed with quantity updates
WHEN: The system generates notifications for the auto release action
THEN: The system creates Merlin messages or email notifications to inform relevant parties of the auto release
βœ“ Consolidated Acceptance Criteria
  • The system logs the auto release action → the system creates audit records with cargo details, release quantities, 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_LogAutoReleaseAction(["Start Step"]) E_LogAutoReleaseAction(["End Step"]) N_LogAutoReleaseAction_Node0{"The system logs the auto release
action"}:::decision N_LogAutoReleaseAction_Node0_action["The system creates audit records
with cargo details, release
quantities, and timestamp
information"]:::main N_LogAutoReleaseAction_Node0 -- Yes --> N_LogAutoReleaseAction_Node0_action N_LogAutoReleaseAction_Node0_action --> E_LogAutoReleaseAction S_LogAutoReleaseAction --> N_LogAutoReleaseAction_Node0 N_LogAutoReleaseAction_Node0 -- No --> E_LogAutoReleaseAction
File: GCX016E.cbl
GIVEN: Auto release notifications have been generated
WHEN: The system logs the auto release action
THEN: The system creates audit records with cargo details, release quantities, and timestamp information
βœ“ Consolidated Acceptance Criteria
  • The system updates the database with the modified status array → the system replaces the cargo's S09 status segments 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_UpdateStatusArrayinDatabase(["Start Step"]) E_UpdateStatusArrayinDatabase(["End Step"]) N_UpdateStatusArrayinDatabase_Node0{"The system updates the database
with the modified status array"}:::decision N_UpdateStatusArrayinDatabase_Node0_action["The system replaces the cargo s S09
status segments with the updated
status array information"]:::main N_UpdateStatusArrayinDatabase_Node0 -- Yes --> N_UpdateStatusArrayinDatabase_Node0_action N_UpdateStatusArrayinDatabase_Node0_action --> E_UpdateStatusArrayinDatabase S_UpdateStatusArrayinDatabase --> N_UpdateStatusArrayinDatabase_Node0 N_UpdateStatusArrayinDatabase_Node0 -- No --> E_UpdateStatusArrayinDatabase
File: GCX016E.cbl
GIVEN: Auto release action has been logged
WHEN: The system updates the database with the modified status array
THEN: The system replaces the cargo's S09 status segments with the updated status array information
βœ“ Consolidated Acceptance Criteria
  • The system determines cargo is not currently held → the system skips release quantity processing and proceeds to completion without release 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_SkipAutoReleaseProcessing(["Start Step"]) E_SkipAutoReleaseProcessing(["End Step"]) N_SkipAutoReleaseProcessing_Node0{"The system determines cargo is not
currently held"}:::decision N_SkipAutoReleaseProcessing_Node0_action["The system skips release quantity
processing and proceeds to
completion without release actions"]:::main N_SkipAutoReleaseProcessing_Node0 -- Yes --> N_SkipAutoReleaseProcessing_Node0_action N_SkipAutoReleaseProcessing_Node0_action --> E_SkipAutoReleaseProcessing S_SkipAutoReleaseProcessing --> N_SkipAutoReleaseProcessing_Node0 N_SkipAutoReleaseProcessing_Node0 -- No --> E_SkipAutoReleaseProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Auto release code has been added to status array
WHEN: The system determines cargo is not currently held
THEN:
  • The system skips release quantity processing
  • Proceeds to completion without release actions
βœ“ Consolidated Acceptance Criteria
  • The system processes the code information → the code description is extracted and made available for use in messages 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_ExtractCodeDescription(["Start Step"]) E_ExtractCodeDescription(["End Step"]) N_ExtractCodeDescription_Node0{"The system processes the code
information"}:::decision N_ExtractCodeDescription_Node0_action["The code description is extracted
and made available for use in
messages and 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: GCX016E.cbl
GIVEN: Disposition code information has been retrieved from the table
WHEN: The system processes the code information
THEN:
  • The code description is extracted
  • Made available for use in messages
  • Processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the code details → the processing rules and business logic for the code are extracted and prepared for 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_ExtractProcessingRules(["Start Step"]) E_ExtractProcessingRules(["End Step"]) N_ExtractProcessingRules_Node0{"The system processes the code
details"}:::decision N_ExtractProcessingRules_Node0_action["The processing rules and business
logic for the code are extracted and
prepared for execution"]:::main N_ExtractProcessingRules_Node0 -- Yes --> N_ExtractProcessingRules_Node0_action N_ExtractProcessingRules_Node0_action --> E_ExtractProcessingRules S_ExtractProcessingRules --> N_ExtractProcessingRules_Node0 N_ExtractProcessingRules_Node0 -- No --> E_ExtractProcessingRules
File: GCX016E.cbl
GIVEN: Disposition code information has been retrieved and description extracted
WHEN: The system processes the code details
THEN:
  • The processing rules
  • Business logic for the code are extracted
  • Prepared for execution
βœ“ Consolidated Acceptance Criteria
  • All code validation steps are complete → the system sets the valid code flag to allow 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_SetValidCodeFlag(["Start Step"]) E_SetValidCodeFlag(["End Step"]) N_SetValidCodeFlag_Node0{"All code validation steps are
complete"}:::decision N_SetValidCodeFlag_Node0_action["The system sets the valid code flag
to allow continued processing"]:::main N_SetValidCodeFlag_Node0 -- Yes --> N_SetValidCodeFlag_Node0_action N_SetValidCodeFlag_Node0_action --> E_SetValidCodeFlag S_SetValidCodeFlag --> N_SetValidCodeFlag_Node0 N_SetValidCodeFlag_Node0 -- No --> E_SetValidCodeFlag
File: GCX016E.cbl
GIVEN: Disposition code has been successfully validated and information extracted
WHEN: All code validation steps are complete
THEN: The system sets the valid code flag to allow continued processing
βœ“ Consolidated Acceptance Criteria
  • The invalid code flag is set → the system logs the unknown code error 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_LogUnknownCodeError(["Start Step"]) E_LogUnknownCodeError(["End Step"]) N_LogUnknownCodeError_Node0{"The invalid code flag is set"}:::decision N_LogUnknownCodeError_Node0_action["The system logs the unknown code
error with relevant details for
audit trail"]:::exclusion N_LogUnknownCodeError_Node0 -- Yes -->|Alternative| N_LogUnknownCodeError_Node0_action N_LogUnknownCodeError_Node0_action --> E_LogUnknownCodeError S_LogUnknownCodeError --> N_LogUnknownCodeError_Node0 N_LogUnknownCodeError_Node0 -- No --> E_LogUnknownCodeError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: An invalid disposition code has been identified and flagged
WHEN: The invalid code flag is set
THEN: The system logs the unknown code error with relevant details for audit trail
βœ“ Consolidated Acceptance Criteria
  • The valid code flag is set → the system continues with normal disposition code processing using the extracted 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_ContinuewithCodeProcessing(["Start Step"]) E_ContinuewithCodeProcessing(["End Step"]) N_ContinuewithCodeProcessing_Node0{"The valid code flag is set"}:::decision N_ContinuewithCodeProcessing_Node0_action["The system continues with normal
disposition code processing using
the extracted information"]:::main N_ContinuewithCodeProcessing_Node0 -- Yes --> N_ContinuewithCodeProcessing_Node0_action N_ContinuewithCodeProcessing_Node0_action --> E_ContinuewithCodeProcessing S_ContinuewithCodeProcessing --> N_ContinuewithCodeProcessing_Node0 N_ContinuewithCodeProcessing_Node0 -- No --> E_ContinuewithCodeProcessing
File: GCX016E.cbl
GIVEN: A disposition code has been validated and marked as valid
WHEN: The valid code flag is set
THEN: The system continues with normal disposition code processing using the extracted information
βœ“ Consolidated Acceptance Criteria
  • The invalid code flag is set and error is logged → the system skips normal disposition code processing to prevent further 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_SkipCodeProcessing(["Start Step"]) E_SkipCodeProcessing(["End Step"]) N_SkipCodeProcessing_Node0{"The invalid code flag is set and
error is logged"}:::decision N_SkipCodeProcessing_Node0_action["The system skips normal disposition
code processing to prevent further
errors"]:::exclusion N_SkipCodeProcessing_Node0 -- Yes -->|Alternative| N_SkipCodeProcessing_Node0_action N_SkipCodeProcessing_Node0_action --> E_SkipCodeProcessing S_SkipCodeProcessing --> N_SkipCodeProcessing_Node0 N_SkipCodeProcessing_Node0 -- No --> E_SkipCodeProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code has been identified as invalid and logged
WHEN:
  • The invalid code flag is set
  • Error is logged
THEN: The system skips normal disposition code processing to prevent further errors
βœ“ Consolidated Acceptance Criteria
  • The system checks for hold vs release conflicts → the system identifies the conflicting hold codes that should be removed when the release code is 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_HoldvsReleaseConflict(["Start Step"]) E_HoldvsReleaseConflict(["End Step"]) N_HoldvsReleaseConflict_Node0{"The system checks for hold vs
release conflicts"}:::decision N_HoldvsReleaseConflict_Node0_action["The system identifies the
conflicting hold codes that should
be removed when the release code is
applied"]:::main N_HoldvsReleaseConflict_Node0 -- Yes --> N_HoldvsReleaseConflict_Node0_action N_HoldvsReleaseConflict_Node0_action --> E_HoldvsReleaseConflict S_HoldvsReleaseConflict --> N_HoldvsReleaseConflict_Node0 N_HoldvsReleaseConflict_Node0 -- No --> E_HoldvsReleaseConflict
File: GCX016E.cbl
GIVEN: A cargo has existing hold disposition codes in its status array AND a new release disposition code is being processed
WHEN: The system checks for hold vs release conflicts
THEN: The system identifies the conflicting hold codes that should be removed when the release code is applied
βœ“ Consolidated Acceptance Criteria
  • The system checks for proceed vs hold conflicts → the system identifies the conflicting codes that should be removed based on the business precedence 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_ProceedvsHoldConflict(["Start Step"]) E_ProceedvsHoldConflict(["End Step"]) N_ProceedvsHoldConflict_Node0{"The system checks for proceed vs
hold conflicts"}:::decision N_ProceedvsHoldConflict_Node0_action["The system identifies the
conflicting codes that should be
removed based on the business
precedence rules"]:::main N_ProceedvsHoldConflict_Node0 -- Yes --> N_ProceedvsHoldConflict_Node0_action N_ProceedvsHoldConflict_Node0_action --> E_ProceedvsHoldConflict S_ProceedvsHoldConflict --> N_ProceedvsHoldConflict_Node0 N_ProceedvsHoldConflict_Node0 -- No --> E_ProceedvsHoldConflict
File: GCX016E.cbl
GIVEN: A cargo has existing proceed disposition codes in its status array AND a new hold disposition code is being processed OR a cargo has existing hold codes AND a new proceed code is being processed
WHEN: The system checks for proceed vs hold conflicts
THEN: The system identifies the conflicting codes that should be removed based on the business precedence rules
βœ“ Consolidated Acceptance Criteria
  • The system checks for seizure vs release conflicts → the system identifies the conflicting seizure codes that should be removed when the release code is 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_SeizurevsReleaseConflict(["Start Step"]) E_SeizurevsReleaseConflict(["End Step"]) N_SeizurevsReleaseConflict_Node0{"The system checks for seizure vs
release conflicts"}:::decision N_SeizurevsReleaseConflict_Node0_action["The system identifies the
conflicting seizure codes that
should be removed when the release
code is applied"]:::main N_SeizurevsReleaseConflict_Node0 -- Yes --> N_SeizurevsReleaseConflict_Node0_action N_SeizurevsReleaseConflict_Node0_action --> E_SeizurevsReleaseConflict S_SeizurevsReleaseConflict --> N_SeizurevsReleaseConflict_Node0 N_SeizurevsReleaseConflict_Node0 -- No --> E_SeizurevsReleaseConflict
File: GCX016E.cbl
GIVEN: A cargo has existing seizure disposition codes in its status array AND a new release disposition code is being processed
WHEN: The system checks for seizure vs release conflicts
THEN: The system identifies the conflicting seizure codes that should be removed when the release code is applied
βœ“ Consolidated Acceptance Criteria
  • The system checks for arrival vs cancel conflicts → the system identifies the conflicting codes that should be removed based on the most recent 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_ArrivalvsCancelConflict(["Start Step"]) E_ArrivalvsCancelConflict(["End Step"]) N_ArrivalvsCancelConflict_Node0{"The system checks for arrival vs
cancel conflicts"}:::decision N_ArrivalvsCancelConflict_Node0_action["The system identifies the
conflicting codes that should be
removed based on the most recent
action"]:::main N_ArrivalvsCancelConflict_Node0 -- Yes --> N_ArrivalvsCancelConflict_Node0_action N_ArrivalvsCancelConflict_Node0_action --> E_ArrivalvsCancelConflict S_ArrivalvsCancelConflict --> N_ArrivalvsCancelConflict_Node0 N_ArrivalvsCancelConflict_Node0 -- No --> E_ArrivalvsCancelConflict
File: GCX016E.cbl
GIVEN: A cargo has existing arrival disposition codes in its status array AND a new cancellation disposition code is being processed OR a cargo has existing cancellation codes AND a new arrival code is being processed
WHEN: The system checks for arrival vs cancel conflicts
THEN: The system identifies the conflicting codes that should be removed based on the most recent action
βœ“ Consolidated Acceptance Criteria
  • The system applies business rules to determine code precedence → the system decides whether the existing conflicting code should be removed to allow the new code 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_CodeShouldBeRemoved(["Start Step"]) E_CodeShouldBeRemoved(["End Step"]) N_CodeShouldBeRemoved_Node0{"The system applies business rules
to determine code precedence"}:::decision N_CodeShouldBeRemoved_Node0_action["The system decides whether the
existing conflicting code should be
removed to allow the new code to be
processed"]:::main N_CodeShouldBeRemoved_Node0 -- Yes --> N_CodeShouldBeRemoved_Node0_action N_CodeShouldBeRemoved_Node0_action --> E_CodeShouldBeRemoved S_CodeShouldBeRemoved --> N_CodeShouldBeRemoved_Node0 N_CodeShouldBeRemoved_Node0 -- No --> E_CodeShouldBeRemoved
File: GCX016E.cbl
GIVEN: A conflicting disposition code has been identified in the cargo status array AND business rules define the precedence between the codes
WHEN: The system applies business rules to determine code precedence
THEN: The system decides whether the existing conflicting code should be removed to allow the new code to be processed
βœ“ Consolidated Acceptance Criteria
  • The system processes the removal decision → the system marks the conflicting code for removal while preserving other status 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_MarkCounterpartCodeforRemoval(["Start Step"]) E_MarkCounterpartCodeforRemoval(["End Step"]) N_MarkCounterpartCodeforRemoval_Node0{"The system processes the removal
decision"}:::decision N_MarkCounterpartCodeforRemoval_Node0_action["The system marks the conflicting
code for removal while preserving
other status array elements"]:::main N_MarkCounterpartCodeforRemoval_Node0 -- Yes --> N_MarkCounterpartCodeforRemoval_Node0_action N_MarkCounterpartCodeforRemoval_Node0_action --> E_MarkCounterpartCodeforRemoval S_MarkCounterpartCodeforRemoval --> N_MarkCounterpartCodeforRemoval_Node0 N_MarkCounterpartCodeforRemoval_Node0 -- No --> E_MarkCounterpartCodeforRemoval
File: GCX016E.cbl
GIVEN: A conflicting disposition code has been identified for removal AND the code exists in the cargo status array
WHEN: The system processes the removal decision
THEN: The system marks the conflicting code for removal while preserving other status array elements
βœ“ Consolidated Acceptance Criteria
  • The system reorganizes the array → the system compacts the array by moving remaining elements to eliminate gaps AND preserves the logical order of 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_ReorganizeStatusArray(["Start Step"]) E_ReorganizeStatusArray(["End Step"]) N_ReorganizeStatusArray_Node0{"The system reorganizes the array"}:::decision N_ReorganizeStatusArray_Node0_action["The system compacts the array by
moving remaining elements to
eliminate gaps AND preserves the
logical order of disposition codes"]:::main N_ReorganizeStatusArray_Node0 -- Yes --> N_ReorganizeStatusArray_Node0_action N_ReorganizeStatusArray_Node0_action --> E_ReorganizeStatusArray S_ReorganizeStatusArray --> N_ReorganizeStatusArray_Node0 N_ReorganizeStatusArray_Node0 -- No --> E_ReorganizeStatusArray
File: GCX016E.cbl
GIVEN: Disposition codes have been removed from the cargo status array creating gaps in the array structure
WHEN: The system reorganizes the array
THEN:
  • The system compacts the array by moving remaining elements to eliminate gaps
  • Preserves the logical order of disposition codes
βœ“ Consolidated Acceptance Criteria
  • The system retrieves the segments successfully → the system populates S09A status arrays with disposition codes, quantities, entry numbers, and sequence information from the database 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_PopulateS09AStatusArraysfromDatabaseSegments(["Start Step"]) E_PopulateS09AStatusArraysfromDatabaseSegments(["End Step"]) N_PopulateS09AStatusArraysfromDatabaseSegments_Node0{"The system retrieves the segments
successfully"}:::decision N_PopulateS09AStatusArraysfromDatabaseSegments_Node0_action["The system populates S09A status
arrays with disposition codes,
quantities, entry numbers, and
sequence information from the
database segments"]:::main N_PopulateS09AStatusArraysfromDatabaseSegments_Node0 -- Yes --> N_PopulateS09AStatusArraysfromDatabaseSegments_Node0_action N_PopulateS09AStatusArraysfromDatabaseSegments_Node0_action --> E_PopulateS09AStatusArraysfromDatabaseSegments S_PopulateS09AStatusArraysfromDatabaseSegments --> N_PopulateS09AStatusArraysfromDatabaseSegments_Node0 N_PopulateS09AStatusArraysfromDatabaseSegments_Node0 -- No --> E_PopulateS09AStatusArraysfromDatabaseSegments
File: GCX016E.cbl
GIVEN: S09 status segments exist in the database for a cargo
WHEN: The system retrieves the segments successfully
THEN: The system populates S09A status arrays with disposition codes, quantities, entry numbers, and sequence information from the database segments
βœ“ Consolidated Acceptance Criteria
  • The system processes all retrieved segments → the system identifies and stores the maximum sequence number found across all status arrays for future 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_TrackMaximumSequencesFetched(["Start Step"]) E_TrackMaximumSequencesFetched(["End Step"]) N_TrackMaximumSequencesFetched_Node0{"The system processes all retrieved
segments"}:::decision N_TrackMaximumSequencesFetched_Node0_action["The system identifies and stores
the maximum sequence number found
across all status arrays for future
sequencing"]:::main N_TrackMaximumSequencesFetched_Node0 -- Yes --> N_TrackMaximumSequencesFetched_Node0_action N_TrackMaximumSequencesFetched_Node0_action --> E_TrackMaximumSequencesFetched S_TrackMaximumSequencesFetched --> N_TrackMaximumSequencesFetched_Node0 N_TrackMaximumSequencesFetched_Node0 -- No --> E_TrackMaximumSequencesFetched
File: GCX016E.cbl
GIVEN: Status segments are populated from database with various sequence numbers
WHEN: The system processes all retrieved segments
THEN:
  • The system identifies
  • Stores the maximum sequence number found across all status arrays for future sequencing
βœ“ Consolidated Acceptance Criteria
  • The system processes the new disposition code → the system searches all status arrays to determine if the same disposition code with matching entry number and quantity 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_SearchforDuplicateDispositionCodes(["Start Step"]) E_SearchforDuplicateDispositionCodes(["End Step"]) N_SearchforDuplicateDispositionCodes_Node0{"The system processes the new
disposition code"}:::decision N_SearchforDuplicateDispositionCodes_Node0_action["The system searches all status
arrays to determine if the same
disposition code with matching entry
number and quantity already exists"]:::main N_SearchforDuplicateDispositionCodes_Node0 -- Yes --> N_SearchforDuplicateDispositionCodes_Node0_action N_SearchforDuplicateDispositionCodes_Node0_action --> E_SearchforDuplicateDispositionCodes S_SearchforDuplicateDispositionCodes --> N_SearchforDuplicateDispositionCodes_Node0 N_SearchforDuplicateDispositionCodes_Node0 -- No --> E_SearchforDuplicateDispositionCodes
File: GCX016E.cbl
GIVEN: A new disposition code is received for processing and existing status arrays contain disposition codes
WHEN: The system processes the new disposition code
THEN:
  • The system searches all status arrays to determine if the same disposition code with matching entry number
  • Quantity already exists
βœ“ Consolidated Acceptance Criteria
  • The duplicate has matching entry number and quantity → the system applies business rules such as removal, replacement, or skip processing based on the disposition code type and 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_HandleDuplicateAccordingtoBusinessRules(["Start Step"]) E_HandleDuplicateAccordingtoBusinessRules(["End Step"]) N_HandleDuplicateAccordingtoBusinessRules_Node0{"The duplicate has matching entry
number and quantity"}:::decision N_HandleDuplicateAccordingtoBusinessRules_Node0_action["The system applies business rules
such as removal, replacement, or
skip processing based on the
disposition code type and current
cargo status"]:::main N_HandleDuplicateAccordingtoBusinessRules_Node0 -- Yes --> N_HandleDuplicateAccordingtoBusinessRules_Node0_action N_HandleDuplicateAccordingtoBusinessRules_Node0_action --> E_HandleDuplicateAccordingtoBusinessRules S_HandleDuplicateAccordingtoBusinessRules --> N_HandleDuplicateAccordingtoBusinessRules_Node0 N_HandleDuplicateAccordingtoBusinessRules_Node0 -- No --> E_HandleDuplicateAccordingtoBusinessRules
File: GCX016E.cbl
GIVEN: A duplicate disposition code is found in the status arrays
WHEN:
  • The duplicate has matching entry number
  • Quantity
THEN:
  • The system applies business rules such as removal, replacement, or skip processing based on the disposition code type
  • Current cargo status
βœ“ Consolidated Acceptance Criteria
  • The system needs to insert the disposition code → the system finds the appropriate insertion point to maintain proper sequence numbering and array organization
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_FindInsertionPointforProperSequencing(["Start Step"]) E_FindInsertionPointforProperSequencing(["End Step"]) N_FindInsertionPointforProperSequencing_Node0{"The system needs to insert the
disposition code"}:::decision N_FindInsertionPointforProperSequencing_Node0_action["The system finds the appropriate
insertion point to maintain proper
sequence numbering and array
organization"]:::main N_FindInsertionPointforProperSequencing_Node0 -- Yes --> N_FindInsertionPointforProperSequencing_Node0_action N_FindInsertionPointforProperSequencing_Node0_action --> E_FindInsertionPointforProperSequencing S_FindInsertionPointforProperSequencing --> N_FindInsertionPointforProperSequencing_Node0 N_FindInsertionPointforProperSequencing_Node0 -- No --> E_FindInsertionPointforProperSequencing
File: GCX016E.cbl
GIVEN: A new disposition code needs to be added to status arrays and no duplicates exist
WHEN: The system needs to insert the disposition code
THEN:
  • The system finds the appropriate insertion point to maintain proper sequence numbering
  • Array organization
βœ“ Consolidated Acceptance Criteria
  • The system inserts the disposition code → the system adds the disposition code with its associated quantity, entry number, and sequence information to the appropriate status 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_InsertNewDispositionCodeinArray(["Start Step"]) E_InsertNewDispositionCodeinArray(["End Step"]) N_InsertNewDispositionCodeinArray_Node0{"The system inserts the disposition
code"}:::decision N_InsertNewDispositionCodeinArray_Node0_action["The system adds the disposition
code with its associated quantity,
entry number, and sequence
information to the appropriate
status array position"]:::main N_InsertNewDispositionCodeinArray_Node0 -- Yes --> N_InsertNewDispositionCodeinArray_Node0_action N_InsertNewDispositionCodeinArray_Node0_action --> E_InsertNewDispositionCodeinArray S_InsertNewDispositionCodeinArray --> N_InsertNewDispositionCodeinArray_Node0 N_InsertNewDispositionCodeinArray_Node0 -- No --> E_InsertNewDispositionCodeinArray
File: GCX016E.cbl
GIVEN: An insertion point has been determined for a new disposition code
WHEN: The system inserts the disposition code
THEN: The system adds the disposition code with its associated quantity, entry number, and sequence information to the appropriate status array position
βœ“ Consolidated Acceptance Criteria
  • The system checks for business rule conflicts → the system identifies any existing disposition codes that are counterparts or conflicts with the newly added code and must 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_CheckforCounterpartCodestoRemove(["Start Step"]) E_CheckforCounterpartCodestoRemove(["End Step"]) N_CheckforCounterpartCodestoRemove_Node0{"The system checks for business rule
conflicts"}:::decision N_CheckforCounterpartCodestoRemove_Node0_action["The system identifies any existing
disposition codes that are
counterparts or conflicts with the
newly added code and must be removed"]:::main N_CheckforCounterpartCodestoRemove_Node0 -- Yes --> N_CheckforCounterpartCodestoRemove_Node0_action N_CheckforCounterpartCodestoRemove_Node0_action --> E_CheckforCounterpartCodestoRemove S_CheckforCounterpartCodestoRemove --> N_CheckforCounterpartCodestoRemove_Node0 N_CheckforCounterpartCodestoRemove_Node0 -- No --> E_CheckforCounterpartCodestoRemove
File: GCX016E.cbl
GIVEN: A new disposition code has been inserted into the status array
WHEN: The system checks for business rule conflicts
THEN:
  • The system identifies any existing disposition codes that are counterparts or conflicts with the newly added code
  • Must be removed
βœ“ Consolidated Acceptance Criteria
  • Business rules require their removal → the system removes the conflicting disposition codes from the status arrays
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RemoveConflictingDispositionCodes(["Start Step"]) E_RemoveConflictingDispositionCodes(["End Step"]) N_RemoveConflictingDispositionCodes_Node0{"Business rules require their
removal"}:::decision N_RemoveConflictingDispositionCodes_Node0_action["The system removes the conflicting
disposition codes from the status
arrays"]:::main N_RemoveConflictingDispositionCodes_Node0 -- Yes --> N_RemoveConflictingDispositionCodes_Node0_action N_RemoveConflictingDispositionCodes_Node0_action --> E_RemoveConflictingDispositionCodes S_RemoveConflictingDispositionCodes --> N_RemoveConflictingDispositionCodes_Node0 N_RemoveConflictingDispositionCodes_Node0 -- No --> E_RemoveConflictingDispositionCodes
File: GCX016E.cbl
GIVEN: Counterpart or conflicting disposition codes are identified in the status arrays
WHEN: Business rules require their removal
THEN: The system removes the conflicting disposition codes from the status arrays
βœ“ Consolidated Acceptance Criteria
  • The removal process is complete → the system reorganizes the arrays by moving remaining entries to eliminate gaps and maintain proper 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_ReorganizeArrayAfterRemoval(["Start Step"]) E_ReorganizeArrayAfterRemoval(["End Step"]) N_ReorganizeArrayAfterRemoval_Node0{"The removal process is complete"}:::decision N_ReorganizeArrayAfterRemoval_Node0_action["The system reorganizes the arrays
by moving remaining entries to
eliminate gaps and maintain proper
array structure"]:::main N_ReorganizeArrayAfterRemoval_Node0 -- Yes --> N_ReorganizeArrayAfterRemoval_Node0_action N_ReorganizeArrayAfterRemoval_Node0_action --> E_ReorganizeArrayAfterRemoval S_ReorganizeArrayAfterRemoval --> N_ReorganizeArrayAfterRemoval_Node0 N_ReorganizeArrayAfterRemoval_Node0 -- No --> E_ReorganizeArrayAfterRemoval
File: GCX016E.cbl
GIVEN: Disposition codes have been removed from status arrays creating gaps
WHEN: The removal process is complete
THEN:
  • The system reorganizes the arrays by moving remaining entries to eliminate gaps
  • Maintain proper array structure
βœ“ Consolidated Acceptance Criteria
  • The system validates the array integrity → the system verifies that sequence numbers are properly ordered and consistent across all 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_ValidateArraySequenceNumbers(["Start Step"]) E_ValidateArraySequenceNumbers(["End Step"]) N_ValidateArraySequenceNumbers_Node0{"The system validates the array
integrity"}:::decision N_ValidateArraySequenceNumbers_Node0_action["The system verifies that sequence
numbers are properly ordered and
consistent across all status array
entries"]:::main N_ValidateArraySequenceNumbers_Node0 -- Yes --> N_ValidateArraySequenceNumbers_Node0_action N_ValidateArraySequenceNumbers_Node0_action --> E_ValidateArraySequenceNumbers S_ValidateArraySequenceNumbers --> N_ValidateArraySequenceNumbers_Node0 N_ValidateArraySequenceNumbers_Node0 -- No --> E_ValidateArraySequenceNumbers
File: GCX016E.cbl
GIVEN: Status arrays have been modified through insertion and removal operations
WHEN: The system validates the array integrity
THEN:
  • The system verifies that sequence numbers are properly ordered
  • Consistent across all status array entries
βœ“ Consolidated Acceptance Criteria
  • The system completes array processing → the system updates the maximum sequence counter to reflect the highest sequence number currently in 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_UpdateMaximumSequenceCounter(["Start Step"]) E_UpdateMaximumSequenceCounter(["End Step"]) N_UpdateMaximumSequenceCounter_Node0{"The system completes array
processing"}:::decision N_UpdateMaximumSequenceCounter_Node0_action["The system updates the maximum
sequence counter to reflect the
highest sequence number currently in
use"]:::main N_UpdateMaximumSequenceCounter_Node0 -- Yes --> N_UpdateMaximumSequenceCounter_Node0_action N_UpdateMaximumSequenceCounter_Node0_action --> E_UpdateMaximumSequenceCounter S_UpdateMaximumSequenceCounter --> N_UpdateMaximumSequenceCounter_Node0 N_UpdateMaximumSequenceCounter_Node0 -- No --> E_UpdateMaximumSequenceCounter
File: GCX016E.cbl
GIVEN: Status arrays have been modified and sequence numbers validated
WHEN: The system completes array processing
THEN: The system updates the maximum sequence counter to reflect the highest sequence number currently in use
βœ“ Consolidated Acceptance Criteria
  • The system needs to save the updated status information → the system converts the S09A status arrays back to S09 database segment format with proper structure and 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_ConvertStatusArrayBacktoDatabaseFormat(["Start Step"]) E_ConvertStatusArrayBacktoDatabaseFormat(["End Step"]) N_ConvertStatusArrayBacktoDatabaseFormat_Node0{"The system needs to save the
updated status information"}:::decision N_ConvertStatusArrayBacktoDatabaseFormat_Node0_action["The system converts the S09A status
arrays back to S09 database segment
format with proper structure and
sequencing"]:::main N_ConvertStatusArrayBacktoDatabaseFormat_Node0 -- Yes --> N_ConvertStatusArrayBacktoDatabaseFormat_Node0_action N_ConvertStatusArrayBacktoDatabaseFormat_Node0_action --> E_ConvertStatusArrayBacktoDatabaseFormat S_ConvertStatusArrayBacktoDatabaseFormat --> N_ConvertStatusArrayBacktoDatabaseFormat_Node0 N_ConvertStatusArrayBacktoDatabaseFormat_Node0 -- No --> E_ConvertStatusArrayBacktoDatabaseFormat
File: GCX016E.cbl
GIVEN: Status arrays have been processed and are ready for database storage
WHEN: The system needs to save the updated status information
THEN:
  • The system converts the s09a status arrays back to s09 database segment format with proper structure
  • Sequencing
βœ“ Consolidated Acceptance Criteria
  • The calculated quantity is less than zero → the quantity calculation is rejected and processing terminates with 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_QuantityCannotBeNegative(["Start Step"]) E_QuantityCannotBeNegative(["End Step"]) N_QuantityCannotBeNegative_Node0{"The calculated quantity is less
than zero"}:::decision N_QuantityCannotBeNegative_Node0_action["The quantity calculation is
rejected and processing terminates
with validation error"]:::exclusion N_QuantityCannotBeNegative_Node0 -- Yes -->|Alternative| N_QuantityCannotBeNegative_Node0_action N_QuantityCannotBeNegative_Node0_action --> E_QuantityCannotBeNegative S_QuantityCannotBeNegative --> N_QuantityCannotBeNegative_Node0 N_QuantityCannotBeNegative_Node0 -- No --> E_QuantityCannotBeNegative
File: GCX016E.cbl
GIVEN: A new release quantity has been calculated
WHEN: The calculated quantity is less than zero
THEN:
  • The quantity calculation is rejected
  • Processing terminates with validation error
βœ“ Consolidated Acceptance Criteria
  • The calculated release quantity exceeds the total cargo quantity → the quantity calculation is rejected and processing terminates with 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_QuantityCannotExceedTotal(["Start Step"]) E_QuantityCannotExceedTotal(["End Step"]) N_QuantityCannotExceedTotal_Node0{"The calculated release quantity
exceeds the total cargo quantity"}:::decision N_QuantityCannotExceedTotal_Node0_action["The quantity calculation is
rejected and processing terminates
with validation error"]:::exclusion N_QuantityCannotExceedTotal_Node0 -- Yes -->|Alternative| N_QuantityCannotExceedTotal_Node0_action N_QuantityCannotExceedTotal_Node0_action --> E_QuantityCannotExceedTotal S_QuantityCannotExceedTotal --> N_QuantityCannotExceedTotal_Node0 N_QuantityCannotExceedTotal_Node0 -- No --> E_QuantityCannotExceedTotal
File: GCX016E.cbl
GIVEN: A new release quantity has been calculated and total cargo quantity is known
WHEN: The calculated release quantity exceeds the total cargo quantity
THEN:
  • The quantity calculation is rejected
  • Processing terminates with validation error
βœ“ Consolidated Acceptance Criteria
  • The system needs to determine release completion status → if release quantity equals total quantity, cargo is fully released; otherwise cargo is 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_FullRelease(["Start Step"]) E_FullRelease(["End Step"]) N_FullRelease_Node0{"The system needs to determine
release completion status"}:::decision N_FullRelease_Node0_action["If release quantity equals total
quantity, cargo is fully released
otherwise cargo is partially
released"]:::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: GCX016E.cbl
GIVEN: Cargo has an updated release quantity and known total quantity
WHEN: The system needs to determine release completion status
THEN: If release quantity equals total quantity, cargo is fully released; otherwise cargo is partially released
βœ“ Consolidated Acceptance Criteria
  • Full release status is determined → cargo is marked with fully released 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_MarkCargoasFullyReleased(["Start Step"]) E_MarkCargoasFullyReleased(["End Step"]) N_MarkCargoasFullyReleased_Node0{"Full release status is determined"}:::decision N_MarkCargoasFullyReleased_Node0_action["Cargo is marked with fully released
status"]:::main N_MarkCargoasFullyReleased_Node0 -- Yes --> N_MarkCargoasFullyReleased_Node0_action N_MarkCargoasFullyReleased_Node0_action --> E_MarkCargoasFullyReleased S_MarkCargoasFullyReleased --> N_MarkCargoasFullyReleased_Node0 N_MarkCargoasFullyReleased_Node0 -- No --> E_MarkCargoasFullyReleased
File: GCX016E.cbl
GIVEN: Cargo release quantity equals the total cargo quantity
WHEN: Full release status is determined
THEN: Cargo is marked with fully released status
βœ“ Consolidated Acceptance Criteria
  • Partial release status is determined → cargo is marked with partially released 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_MarkCargoasPartiallyReleased(["Start Step"]) E_MarkCargoasPartiallyReleased(["End Step"]) N_MarkCargoasPartiallyReleased_Node0{"Partial release status is
determined"}:::decision N_MarkCargoasPartiallyReleased_Node0_action["Cargo is marked with partially
released status"]:::main N_MarkCargoasPartiallyReleased_Node0 -- Yes --> N_MarkCargoasPartiallyReleased_Node0_action N_MarkCargoasPartiallyReleased_Node0_action --> E_MarkCargoasPartiallyReleased S_MarkCargoasPartiallyReleased --> N_MarkCargoasPartiallyReleased_Node0 N_MarkCargoasPartiallyReleased_Node0 -- No --> E_MarkCargoasPartiallyReleased
File: GCX016E.cbl
GIVEN: Cargo release quantity is less than the total cargo quantity
WHEN: Partial release status is determined
THEN: Cargo is marked with partially released status
βœ“ Consolidated Acceptance Criteria
  • Stakeholders need to be notified of quantity changes → a release impact message is generated showing the quantity change and its business impact
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenerateReleaseImpactMessage(["Start Step"]) E_GenerateReleaseImpactMessage(["End Step"]) N_GenerateReleaseImpactMessage_Node0{"Stakeholders need to be notified of
quantity changes"}:::decision N_GenerateReleaseImpactMessage_Node0_action["A release impact message is
generated showing the quantity
change and its business impact"]:::main N_GenerateReleaseImpactMessage_Node0 -- Yes --> N_GenerateReleaseImpactMessage_Node0_action N_GenerateReleaseImpactMessage_Node0_action --> E_GenerateReleaseImpactMessage S_GenerateReleaseImpactMessage --> N_GenerateReleaseImpactMessage_Node0 N_GenerateReleaseImpactMessage_Node0 -- No --> E_GenerateReleaseImpactMessage
File: GCX016E.cbl
GIVEN: Release quantity calculation has been completed and logged
WHEN: Stakeholders need to be notified of quantity changes
THEN:
  • A release impact message is generated showing the quantity change
  • Its business impact
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo's current status flags → the system identifies if the cargo has any active hold conditions (border hold, destination hold, FDA hold, piece count hold, or general hold) and proceeds with hold notification processing if holds are detected, otherwise ends the 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_CargoHoldStatusDetected(["Start Step"]) E_CargoHoldStatusDetected(["End Step"]) N_CargoHoldStatusDetected_Node0{"The system checks the cargo s
current status flags"}:::decision N_CargoHoldStatusDetected_Node0_action["The system identifies if the cargo
has any active hold conditions
border hold, destination hold, FDA
hold, piece count hold, or general
hold and proceeds with hold
notification processing if holds are
detected, otherwise ends the
notification process"]:::main N_CargoHoldStatusDetected_Node0 -- Yes --> N_CargoHoldStatusDetected_Node0_action N_CargoHoldStatusDetected_Node0_action --> E_CargoHoldStatusDetected S_CargoHoldStatusDetected --> N_CargoHoldStatusDetected_Node0 N_CargoHoldStatusDetected_Node0 -- No --> E_CargoHoldStatusDetected
File: GCX016E.cbl
GIVEN: A cargo has completed status evaluation processing
WHEN: The system checks the cargo's current status flags
THEN: The system identifies if the cargo has any active hold conditions (border hold, destination hold, FDA hold, piece count hold, or general hold) and proceeds with hold notification processing if holds are detected, otherwise ends the notification process
βœ“ Consolidated Acceptance Criteria
  • The system processes disposition code information → the system gathers disposition code details from status segments (GCSUSS09) and disposition code tables including code descriptions, entry numbers, quantities, and associated business reasons for 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_GatherDispositionCodeDetails(["Start Step"]) E_GatherDispositionCodeDetails(["End Step"]) N_GatherDispositionCodeDetails_Node0{"The system processes disposition
code information"}:::decision N_GatherDispositionCodeDetails_Node0_action["The system gathers disposition code
details from status segments
GCSUSS09 and disposition code tables
including code descriptions, entry
numbers, quantities, and associated
business reasons for the hold"]:::main N_GatherDispositionCodeDetails_Node0 -- Yes --> N_GatherDispositionCodeDetails_Node0_action N_GatherDispositionCodeDetails_Node0_action --> E_GatherDispositionCodeDetails S_GatherDispositionCodeDetails --> N_GatherDispositionCodeDetails_Node0 N_GatherDispositionCodeDetails_Node0 -- No --> E_GatherDispositionCodeDetails
File: GCX016E.cbl
GIVEN: Location information has been retrieved for a held cargo
WHEN: The system processes disposition code information
THEN: The system gathers disposition code details from status segments (GCSUSS09) and disposition code tables including code descriptions, entry numbers, quantities, and associated business reasons for the hold
βœ“ Consolidated Acceptance Criteria
  • If the hold conditions and status flags → the system determines the specific hold type (Border Hold, Destination Hold, FDA Hold, Piece Count Hold, or General Hold) based on the cargo's status flags 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_DetermineHoldType(["Start Step"]) E_DetermineHoldType(["End Step"]) N_DetermineHoldType_Node0{"The system evaluates the hold
conditions and status flags"}:::decision N_DetermineHoldType_Node0_action["The system determines the specific
hold type Border Hold, Destination
Hold, FDA Hold, Piece Count Hold, or
General Hold based on the cargo s
status flags and disposition codes"]:::main N_DetermineHoldType_Node0 -- Yes --> N_DetermineHoldType_Node0_action N_DetermineHoldType_Node0_action --> E_DetermineHoldType S_DetermineHoldType --> N_DetermineHoldType_Node0 N_DetermineHoldType_Node0 -- No --> E_DetermineHoldType
File: GCX016E.cbl
GIVEN: Disposition code details have been gathered for a held cargo
WHEN:
  • The system evaluates the hold conditions
  • Status flags
THEN:
  • The system determines the specific hold type (border hold, destination hold, fda hold, piece count hold, or general hold) based on the cargo's status flags
  • Disposition codes
βœ“ Consolidated Acceptance Criteria
  • The system processes the border hold notification → the system creates a border-specific hold notification with appropriate border location context, regulatory information, and routes the notification to border processing personnel
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_BorderHoldNotification(["Start Step"]) E_BorderHoldNotification(["End Step"]) N_BorderHoldNotification_Node0{"The system processes the border
hold notification"}:::decision N_BorderHoldNotification_Node0_action["The system creates a
border-specific hold notification
with appropriate border location
context, regulatory information, and
routes the notification to border
processing personnel"]:::main N_BorderHoldNotification_Node0 -- Yes --> N_BorderHoldNotification_Node0_action N_BorderHoldNotification_Node0_action --> E_BorderHoldNotification S_BorderHoldNotification --> N_BorderHoldNotification_Node0 N_BorderHoldNotification_Node0 -- No --> E_BorderHoldNotification
File: GCX016E.cbl
GIVEN: A cargo has been classified as having a border hold type
WHEN: The system processes the border hold notification
THEN: The system creates a border-specific hold notification with appropriate border location context, regulatory information, and routes the notification to border processing personnel
βœ“ Consolidated Acceptance Criteria
  • The system processes the destination hold notification → the system creates a destination-specific hold notification with destination location details, consignee information, and routes the notification to destination processing personnel
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_DestinationHoldNotification(["Start Step"]) E_DestinationHoldNotification(["End Step"]) N_DestinationHoldNotification_Node0{"The system processes the
destination hold notification"}:::decision N_DestinationHoldNotification_Node0_action["The system creates a
destination-specific hold
notification with destination
location details, consignee
information, and routes the
notification to destination
processing personnel"]:::main N_DestinationHoldNotification_Node0 -- Yes --> N_DestinationHoldNotification_Node0_action N_DestinationHoldNotification_Node0_action --> E_DestinationHoldNotification S_DestinationHoldNotification --> N_DestinationHoldNotification_Node0 N_DestinationHoldNotification_Node0 -- No --> E_DestinationHoldNotification
File: GCX016E.cbl
GIVEN: A cargo has been classified as having a destination hold type
WHEN: The system processes the destination hold notification
THEN: The system creates a destination-specific hold notification with destination location details, consignee information, and routes the notification to destination processing personnel
βœ“ Consolidated Acceptance Criteria
  • The system processes the FDA hold notification → the system creates an FDA-specific hold notification with regulatory compliance details, FDA examination requirements, and routes the notification to FDA processing personnel and relevant regulatory contacts
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_FDAHoldNotification(["Start Step"]) E_FDAHoldNotification(["End Step"]) N_FDAHoldNotification_Node0{"The system processes the FDA hold
notification"}:::decision N_FDAHoldNotification_Node0_action["The system creates an FDA-specific
hold notification with regulatory
compliance details, FDA examination
requirements, and routes the
notification to FDA processing
personnel and relevant regulatory
contacts"]:::main N_FDAHoldNotification_Node0 -- Yes --> N_FDAHoldNotification_Node0_action N_FDAHoldNotification_Node0_action --> E_FDAHoldNotification S_FDAHoldNotification --> N_FDAHoldNotification_Node0 N_FDAHoldNotification_Node0 -- No --> E_FDAHoldNotification
File: GCX016E.cbl
GIVEN: A cargo has been classified as having an FDA hold type
WHEN: The system processes the FDA hold notification
THEN:
  • The system creates an fda-specific hold notification with regulatory compliance details, fda examination requirements, and routes the notification to fda processing personnel
  • Relevant regulatory contacts
βœ“ Consolidated Acceptance Criteria
  • The system processes the piece count hold notification → the system creates a piece count-specific hold notification with quantity details, release information, partial hold status, and routes the notification to quantity verification personnel
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_PieceCountHoldNotification(["Start Step"]) E_PieceCountHoldNotification(["End Step"]) N_PieceCountHoldNotification_Node0{"The system processes the piece
count hold notification"}:::decision N_PieceCountHoldNotification_Node0_action["The system creates a piece
count-specific hold notification
with quantity details, release
information, partial hold status,
and routes the notification to
quantity verification personnel"]:::main N_PieceCountHoldNotification_Node0 -- Yes --> N_PieceCountHoldNotification_Node0_action N_PieceCountHoldNotification_Node0_action --> E_PieceCountHoldNotification S_PieceCountHoldNotification --> N_PieceCountHoldNotification_Node0 N_PieceCountHoldNotification_Node0 -- No --> E_PieceCountHoldNotification
File: GCX016E.cbl
GIVEN: A cargo has been classified as having a piece count hold type
WHEN: The system processes the piece count hold notification
THEN: The system creates a piece count-specific hold notification with quantity details, release information, partial hold status, and routes the notification to quantity verification personnel
βœ“ Consolidated Acceptance Criteria
  • The system processes the general hold notification → the system creates a general hold notification with standard hold information, disposition code details, and routes the notification to general processing personnel
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GeneralHoldNotification(["Start Step"]) E_GeneralHoldNotification(["End Step"]) N_GeneralHoldNotification_Node0{"The system processes the general
hold notification"}:::decision N_GeneralHoldNotification_Node0_action["The system creates a general hold
notification with standard hold
information, disposition code
details, and routes the notification
to general processing personnel"]:::main N_GeneralHoldNotification_Node0 -- Yes --> N_GeneralHoldNotification_Node0_action N_GeneralHoldNotification_Node0_action --> E_GeneralHoldNotification S_GeneralHoldNotification --> N_GeneralHoldNotification_Node0 N_GeneralHoldNotification_Node0 -- No --> E_GeneralHoldNotification
File: GCX016E.cbl
GIVEN: A cargo has been classified as having a general hold type (not border, destination, FDA, or piece count)
WHEN: The system processes the general hold notification
THEN: The system creates a general hold notification with standard hold information, disposition code details, and routes the notification to general processing personnel
βœ“ Consolidated Acceptance Criteria
  • The system formats the hold details → the system structures the hold information into a standardized format including hold type, reason codes, dates, quantities, and regulatory information for consistent business 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_FormatHoldDetails(["Start Step"]) E_FormatHoldDetails(["End Step"]) N_FormatHoldDetails_Node0{"The system formats the hold details"}:::decision N_FormatHoldDetails_Node0_action["The system structures the hold
information into a standardized
format including hold type, reason
codes, dates, quantities, and
regulatory information for
consistent business presentation"]:::main N_FormatHoldDetails_Node0 -- Yes --> N_FormatHoldDetails_Node0_action N_FormatHoldDetails_Node0_action --> E_FormatHoldDetails S_FormatHoldDetails --> N_FormatHoldDetails_Node0 N_FormatHoldDetails_Node0 -- No --> E_FormatHoldDetails
File: GCX016E.cbl
GIVEN: A specific hold type notification has been processed
WHEN: The system formats the hold details
THEN: The system structures the hold information into a standardized format including hold type, reason codes, dates, quantities, and regulatory information for consistent business presentation
βœ“ Consolidated Acceptance Criteria
  • The system includes CCN information → the system adds Cargo Control Number (CCN) details including US CCN, Canadian CCN if applicable, and related manifest information to the hold 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_IncludeCCNInformation(["Start Step"]) E_IncludeCCNInformation(["End Step"]) N_IncludeCCNInformation_Node0{"The system includes CCN information"}:::decision N_IncludeCCNInformation_Node0_action["The system adds Cargo Control
Number CCN details including US CCN,
Canadian CCN if applicable, and
related manifest information to the
hold notification"]:::main N_IncludeCCNInformation_Node0 -- Yes --> N_IncludeCCNInformation_Node0_action N_IncludeCCNInformation_Node0_action --> E_IncludeCCNInformation S_IncludeCCNInformation --> N_IncludeCCNInformation_Node0 N_IncludeCCNInformation_Node0 -- No --> E_IncludeCCNInformation
File: GCX016E.cbl
GIVEN: Waybill information has been included in the hold notification
WHEN: The system includes CCN information
THEN: The system adds Cargo Control Number (CCN) details including US CCN, Canadian CCN if applicable, and related manifest information to the hold notification
βœ“ Consolidated Acceptance Criteria
  • The system adds location context → the system includes location context from retrieved location information including origin location, destination location, current location, border crossing points, and relevant geographic 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_AddLocationContext(["Start Step"]) E_AddLocationContext(["End Step"]) N_AddLocationContext_Node0{"The system adds location context"}:::decision N_AddLocationContext_Node0_action["The system includes location
context from retrieved location
information including origin
location, destination location,
current location, border crossing
points, and relevant geographic
identifiers"]:::main N_AddLocationContext_Node0 -- Yes --> N_AddLocationContext_Node0_action N_AddLocationContext_Node0_action --> E_AddLocationContext S_AddLocationContext --> N_AddLocationContext_Node0 N_AddLocationContext_Node0 -- No --> E_AddLocationContext
File: GCX016E.cbl
GIVEN: CCN information has been included in the hold notification
WHEN: The system adds location context
THEN: The system includes location context from retrieved location information including origin location, destination location, current location, border crossing points, and relevant geographic identifiers
βœ“ Consolidated Acceptance Criteria
  • The system adds disposition code descriptions → the system includes disposition code descriptions from disposition code tables providing business-friendly explanations of the codes, regulatory requirements, and action items associated with the hold
  • A disposition code description is available in the system → the system adds the descriptive text explaining the disposition code action 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_AddDispositionCodeDescription(["Start Step"]) E_AddDispositionCodeDescription(["End Step"]) N_AddDispositionCodeDescription_Node0{"The system adds disposition code
descriptions"}:::decision N_AddDispositionCodeDescription_Node0_action["The system includes disposition
code descriptions from disposition
code tables providing
business-friendly explanations of
the codes, regulatory requirements,
and action items associated with the
hold"]:::main N_AddDispositionCodeDescription_Node0 -- Yes --> N_AddDispositionCodeDescription_Node0_action N_AddDispositionCodeDescription_Node0_action --> E_AddDispositionCodeDescription S_AddDispositionCodeDescription --> N_AddDispositionCodeDescription_Node0 N_AddDispositionCodeDescription_Node1{"A disposition code description is
available in the system"}:::decision N_AddDispositionCodeDescription_Node1_action["The system adds the descriptive
text explaining the disposition code
action to the message"]:::main N_AddDispositionCodeDescription_Node1 -- Yes --> N_AddDispositionCodeDescription_Node1_action N_AddDispositionCodeDescription_Node1_action --> E_AddDispositionCodeDescription N_AddDispositionCodeDescription_Node0 -- No --> N_AddDispositionCodeDescription_Node1 N_AddDispositionCodeDescription_Node1 -- No --> E_AddDispositionCodeDescription
File: GCX016E.cbl
GIVEN: Location context has been added to the hold notification
WHEN: The system adds disposition code descriptions
THEN: The system includes disposition code descriptions from disposition code tables providing business-friendly explanations of the codes, regulatory requirements, and action items associated with the hold
File: GCX016E.cbl
GIVEN: Disposition code details have been formatted
WHEN: A disposition code description is available in the system
THEN: The system adds the descriptive text explaining the disposition code action to the message
βœ“ Consolidated Acceptance Criteria
  • The system creates the detailed hold message → the system assembles all information into a structured, comprehensive hold message with proper formatting, business terminology, and complete cargo context for effective business communication
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CreateDetailedHoldMessage(["Start Step"]) E_CreateDetailedHoldMessage(["End Step"]) N_CreateDetailedHoldMessage_Node0{"The system creates the detailed
hold message"}:::decision N_CreateDetailedHoldMessage_Node0_action["The system assembles all
information into a structured,
comprehensive hold message with
proper formatting, business
terminology, and complete cargo
context for effective business
communication"]:::main N_CreateDetailedHoldMessage_Node0 -- Yes --> N_CreateDetailedHoldMessage_Node0_action N_CreateDetailedHoldMessage_Node0_action --> E_CreateDetailedHoldMessage S_CreateDetailedHoldMessage --> N_CreateDetailedHoldMessage_Node0 N_CreateDetailedHoldMessage_Node0 -- No --> E_CreateDetailedHoldMessage
File: GCX016E.cbl
GIVEN: All hold notification components (equipment, waybill, CCN, location, disposition codes) have been gathered
WHEN: The system creates the detailed hold message
THEN: The system assembles all information into a structured, comprehensive hold message with proper formatting, business terminology, and complete cargo context for effective business communication
βœ“ Consolidated Acceptance Criteria
  • The system routes the notification to business users → the system determines appropriate recipients based on hold type, location, and business rules, then routes the notification through appropriate channels (Merlin system, email, or other communication methods) to relevant business personnel
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RoutetoBusinessUsers(["Start Step"]) E_RoutetoBusinessUsers(["End Step"]) N_RoutetoBusinessUsers_Node0{"The system routes the notification
to business users"}:::decision N_RoutetoBusinessUsers_Node0_action["The system determines appropriate
recipients based on hold type,
location, and business rules, then
routes the notification through
appropriate channels Merlin system,
email, or other communication
methods to relevant business
personnel"]:::main N_RoutetoBusinessUsers_Node0 -- Yes --> N_RoutetoBusinessUsers_Node0_action N_RoutetoBusinessUsers_Node0_action --> E_RoutetoBusinessUsers S_RoutetoBusinessUsers --> N_RoutetoBusinessUsers_Node0 N_RoutetoBusinessUsers_Node0 -- No --> E_RoutetoBusinessUsers
File: GCX016E.cbl
GIVEN: A detailed hold message has been created
WHEN: The system routes the notification to business users
THEN: The system determines appropriate recipients based on hold type, location, and business rules, then routes the notification through appropriate channels (Merlin system, email, or other communication methods) to relevant business personnel
βœ“ Consolidated Acceptance Criteria
  • The system logs the notification activity → the system creates audit records documenting the hold notification including timestamp, recipients, hold details, and notification status for compliance and business 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_LogHoldNotification(["Start Step"]) E_LogHoldNotification(["End Step"]) N_LogHoldNotification_Node0{"The system logs the notification
activity"}:::decision N_LogHoldNotification_Node0_action["The system creates audit records
documenting the hold notification
including timestamp, recipients,
hold details, and notification
status for compliance and business
tracking purposes"]:::main N_LogHoldNotification_Node0 -- Yes --> N_LogHoldNotification_Node0_action N_LogHoldNotification_Node0_action --> E_LogHoldNotification S_LogHoldNotification --> N_LogHoldNotification_Node0 N_LogHoldNotification_Node0 -- No --> E_LogHoldNotification
File: GCX016E.cbl
GIVEN: A hold notification has been routed to business users
WHEN: The system logs the notification activity
THEN:
  • The system creates audit records documenting the hold notification including timestamp, recipients, hold details, and notification status for compliance
  • Business tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs to evaluate cargo status → all S09A status array segments are retrieved and made available 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_RetrieveCompleteS09AStatusArrays(["Start Step"]) E_RetrieveCompleteS09AStatusArrays(["End Step"]) N_RetrieveCompleteS09AStatusArrays_Node0{"The system needs to evaluate cargo
status"}:::decision N_RetrieveCompleteS09AStatusArrays_Node0_action["All S09A status array segments are
retrieved and made available for
analysis"]:::main N_RetrieveCompleteS09AStatusArrays_Node0 -- Yes --> N_RetrieveCompleteS09AStatusArrays_Node0_action N_RetrieveCompleteS09AStatusArrays_Node0_action --> E_RetrieveCompleteS09AStatusArrays S_RetrieveCompleteS09AStatusArrays --> N_RetrieveCompleteS09AStatusArrays_Node0 N_RetrieveCompleteS09AStatusArrays_Node0 -- No --> E_RetrieveCompleteS09AStatusArrays
File: GCX016E.cbl
GIVEN: A cargo record exists with associated status segments
WHEN: The system needs to evaluate cargo status
THEN:
  • All s09a status array segments are retrieved
  • Made available for analysis
βœ“ Consolidated Acceptance Criteria
  • The system processes the status array → each individual status entry is analyzed for disposition code, quantity, and entry 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_AnalyzeIndividualStatusEntries(["Start Step"]) E_AnalyzeIndividualStatusEntries(["End Step"]) N_AnalyzeIndividualStatusEntries_Node0{"The system processes the status
array"}:::decision N_AnalyzeIndividualStatusEntries_Node0_action["Each individual status entry is
analyzed for disposition code,
quantity, and entry number
information"]:::main N_AnalyzeIndividualStatusEntries_Node0 -- Yes --> N_AnalyzeIndividualStatusEntries_Node0_action N_AnalyzeIndividualStatusEntries_Node0_action --> E_AnalyzeIndividualStatusEntries S_AnalyzeIndividualStatusEntries --> N_AnalyzeIndividualStatusEntries_Node0 N_AnalyzeIndividualStatusEntries_Node0 -- No --> E_AnalyzeIndividualStatusEntries
File: GCX016E.cbl
GIVEN: S09A status arrays have been retrieved for a cargo
WHEN: The system processes the status array
THEN: Each individual status entry is analyzed for disposition code, quantity, and entry number information
βœ“ Consolidated Acceptance Criteria
  • If for hold conditions → hold disposition codes are identified if present 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_HoldDispositionCodesPresent(["Start Step"]) E_HoldDispositionCodesPresent(["End Step"]) N_HoldDispositionCodesPresent_Node0{"The system evaluates for hold
conditions"}:::decision N_HoldDispositionCodesPresent_Node0_action["Hold disposition codes are
identified if present in the status
array"]:::main N_HoldDispositionCodesPresent_Node0 -- Yes --> N_HoldDispositionCodesPresent_Node0_action N_HoldDispositionCodesPresent_Node0_action --> E_HoldDispositionCodesPresent S_HoldDispositionCodesPresent --> N_HoldDispositionCodesPresent_Node0 N_HoldDispositionCodesPresent_Node0 -- No --> E_HoldDispositionCodesPresent
File: GCX016E.cbl
GIVEN: Individual status entries have been analyzed
WHEN: The system evaluates for hold conditions
THEN: Hold disposition codes are identified if present in the status array
βœ“ Consolidated Acceptance Criteria
  • If hold types → hold codes are categorized as border hold, destination hold, FDA hold, piece count hold, or customs intensive 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_EvaluateHoldTypes(["Start Step"]) E_EvaluateHoldTypes(["End Step"]) N_EvaluateHoldTypes_Node0{"The system evaluates hold types"}:::decision N_EvaluateHoldTypes_Node0_action["Hold codes are categorized as
border hold, destination hold, FDA
hold, piece count hold, or customs
intensive hold"]:::main N_EvaluateHoldTypes_Node0 -- Yes --> N_EvaluateHoldTypes_Node0_action N_EvaluateHoldTypes_Node0_action --> E_EvaluateHoldTypes S_EvaluateHoldTypes --> N_EvaluateHoldTypes_Node0 N_EvaluateHoldTypes_Node0 -- No --> E_EvaluateHoldTypes
File: GCX016E.cbl
GIVEN: Hold disposition codes are present in the status array
WHEN: The system evaluates hold types
THEN: Hold codes are categorized as border hold, destination hold, FDA hold, piece count hold, or customs intensive hold
βœ“ Consolidated Acceptance Criteria
  • If for release conditions → release disposition codes are identified if present 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_ReleaseDispositionCodesPresent(["Start Step"]) E_ReleaseDispositionCodesPresent(["End Step"]) N_ReleaseDispositionCodesPresent_Node0{"The system evaluates for release
conditions"}:::decision N_ReleaseDispositionCodesPresent_Node0_action["Release disposition codes are
identified if present in the status
array"]:::main N_ReleaseDispositionCodesPresent_Node0 -- Yes --> N_ReleaseDispositionCodesPresent_Node0_action N_ReleaseDispositionCodesPresent_Node0_action --> E_ReleaseDispositionCodesPresent S_ReleaseDispositionCodesPresent --> N_ReleaseDispositionCodesPresent_Node0 N_ReleaseDispositionCodesPresent_Node0 -- No --> E_ReleaseDispositionCodesPresent
File: GCX016E.cbl
GIVEN: Hold evaluation has been completed
WHEN: The system evaluates for release conditions
THEN: Release disposition codes are identified if present in the status array
βœ“ Consolidated Acceptance Criteria
  • If for proceed conditions → proceed disposition codes are identified if present 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_ProceedDispositionCodesPresent(["Start Step"]) E_ProceedDispositionCodesPresent(["End Step"]) N_ProceedDispositionCodesPresent_Node0{"The system evaluates for proceed
conditions"}:::decision N_ProceedDispositionCodesPresent_Node0_action["Proceed disposition codes are
identified if present in the status
array"]:::main N_ProceedDispositionCodesPresent_Node0 -- Yes --> N_ProceedDispositionCodesPresent_Node0_action N_ProceedDispositionCodesPresent_Node0_action --> E_ProceedDispositionCodesPresent S_ProceedDispositionCodesPresent --> N_ProceedDispositionCodesPresent_Node0 N_ProceedDispositionCodesPresent_Node0 -- No --> E_ProceedDispositionCodesPresent
File: GCX016E.cbl
GIVEN: Release evaluation has been completed
WHEN: The system evaluates for proceed conditions
THEN: Proceed disposition codes are identified if present in the status array
βœ“ Consolidated Acceptance Criteria
  • The system validates in-bond requirements → in-bond entry status is verified as valid for 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_CheckInBondEntryStatus(["Start Step"]) E_CheckInBondEntryStatus(["End Step"]) N_CheckInBondEntryStatus_Node0{"The system validates in-bond
requirements"}:::decision N_CheckInBondEntryStatus_Node0_action["In-bond entry status is verified as
valid for proceed processing"]:::main N_CheckInBondEntryStatus_Node0 -- Yes --> N_CheckInBondEntryStatus_Node0_action N_CheckInBondEntryStatus_Node0_action --> E_CheckInBondEntryStatus S_CheckInBondEntryStatus --> N_CheckInBondEntryStatus_Node0 N_CheckInBondEntryStatus_Node0 -- No --> E_CheckInBondEntryStatus
File: GCX016E.cbl
GIVEN: Proceed disposition codes are present in the status array
WHEN: The system validates in-bond requirements
THEN: In-bond entry status is verified as valid for proceed processing
βœ“ Consolidated Acceptance Criteria
  • If for arrival or export conditions → arrival or export disposition codes are identified if present 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_ArrivalExportCodesPresent(["Start Step"]) E_ArrivalExportCodesPresent(["End Step"]) N_ArrivalExportCodesPresent_Node0{"The system evaluates for arrival or
export conditions"}:::decision N_ArrivalExportCodesPresent_Node0_action["Arrival or export disposition codes
are identified if present in the
status array"]:::main N_ArrivalExportCodesPresent_Node0 -- Yes --> N_ArrivalExportCodesPresent_Node0_action N_ArrivalExportCodesPresent_Node0_action --> E_ArrivalExportCodesPresent S_ArrivalExportCodesPresent --> N_ArrivalExportCodesPresent_Node0 N_ArrivalExportCodesPresent_Node0 -- No --> E_ArrivalExportCodesPresent
File: GCX016E.cbl
GIVEN: Proceed evaluation has been completed
WHEN: The system evaluates for arrival or export conditions
THEN: Arrival or export disposition codes are identified if present in the status array
βœ“ Consolidated Acceptance Criteria
  • The system validates location requirements → location and port information are verified as valid for arrival or 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_ValidateLocationandPort(["Start Step"]) E_ValidateLocationandPort(["End Step"]) N_ValidateLocationandPort_Node0{"The system validates location
requirements"}:::decision N_ValidateLocationandPort_Node0_action["Location and port information are
verified as valid for arrival or
export processing"]:::main N_ValidateLocationandPort_Node0 -- Yes --> N_ValidateLocationandPort_Node0_action N_ValidateLocationandPort_Node0_action --> E_ValidateLocationandPort S_ValidateLocationandPort --> N_ValidateLocationandPort_Node0 N_ValidateLocationandPort_Node0 -- No --> E_ValidateLocationandPort
File: GCX016E.cbl
GIVEN: Arrival or export disposition codes are present
WHEN: The system validates location requirements
THEN:
  • Location
  • Port information are verified as valid for arrival or export processing
βœ“ Consolidated Acceptance Criteria
  • The system processes manual release override → system-generated hold status is overridden and cargo is marked 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_OverrideHoldStatus(["Start Step"]) E_OverrideHoldStatus(["End Step"]) N_OverrideHoldStatus_Node0{"The system processes manual release
override"}:::decision N_OverrideHoldStatus_Node0_action["System-generated hold status is
overridden and cargo is marked for
release processing"]:::main N_OverrideHoldStatus_Node0 -- Yes --> N_OverrideHoldStatus_Node0_action N_OverrideHoldStatus_Node0_action --> E_OverrideHoldStatus S_OverrideHoldStatus --> N_OverrideHoldStatus_Node0 N_OverrideHoldStatus_Node0 -- No --> E_OverrideHoldStatus
File: GCX016E.cbl
GIVEN: Manual release disposition codes are present in the status array
WHEN: The system processes manual release override
THEN:
  • System-generated hold status is overridden
  • Cargo is marked for release processing
βœ“ Consolidated Acceptance Criteria
  • If for conflicting disposition codes → multiple conflicting disposition codes are identified if they exist 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_MultipleConflictingCodes(["Start Step"]) E_MultipleConflictingCodes(["End Step"]) N_MultipleConflictingCodes_Node0{"The system evaluates for
conflicting disposition codes"}:::decision N_MultipleConflictingCodes_Node0_action["Multiple conflicting disposition
codes are identified if they exist
in the status array"]:::main N_MultipleConflictingCodes_Node0 -- Yes --> N_MultipleConflictingCodes_Node0_action N_MultipleConflictingCodes_Node0_action --> E_MultipleConflictingCodes S_MultipleConflictingCodes --> N_MultipleConflictingCodes_Node0 N_MultipleConflictingCodes_Node0 -- No --> E_MultipleConflictingCodes
File: GCX016E.cbl
GIVEN: Manual release evaluation has been completed
WHEN: The system evaluates for conflicting disposition codes
THEN: Multiple conflicting disposition codes are identified if they exist in the status array
βœ“ Consolidated Acceptance Criteria
  • The system applies business rule priority → disposition codes are prioritized with hold taking priority over release, manual release overriding system hold, proceed requiring valid in-bond, and export requiring port 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_ApplyBusinessRulePriority(["Start Step"]) E_ApplyBusinessRulePriority(["End Step"]) N_ApplyBusinessRulePriority_Node0{"The system applies business rule
priority"}:::decision N_ApplyBusinessRulePriority_Node0_action["Disposition codes are prioritized
with hold taking priority over
release, manual release overriding
system hold, proceed requiring valid
in-bond, and export requiring port
validation"]:::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: GCX016E.cbl
GIVEN: Multiple conflicting disposition codes exist in the status array
WHEN: The system applies business rule priority
THEN: Disposition codes are prioritized with hold taking priority over release, manual release overriding system hold, proceed requiring valid in-bond, and export requiring port validation
βœ“ Consolidated Acceptance Criteria
  • The system calculates final release quantity → final release quantity is computed by summing all release quantities and subtracting hold quantities 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_CalculateFinalReleaseQuantity(["Start Step"]) E_CalculateFinalReleaseQuantity(["End Step"]) N_CalculateFinalReleaseQuantity_Node0{"The system calculates final release
quantity"}:::decision N_CalculateFinalReleaseQuantity_Node0_action["Final release quantity is computed
by summing all release quantities
and subtracting hold quantities from
the status array"]:::main N_CalculateFinalReleaseQuantity_Node0 -- Yes --> N_CalculateFinalReleaseQuantity_Node0_action N_CalculateFinalReleaseQuantity_Node0_action --> E_CalculateFinalReleaseQuantity S_CalculateFinalReleaseQuantity --> N_CalculateFinalReleaseQuantity_Node0 N_CalculateFinalReleaseQuantity_Node0 -- No --> E_CalculateFinalReleaseQuantity
File: GCX016E.cbl
GIVEN: Business rule priority has been applied to conflicting codes
WHEN: The system calculates final release quantity
THEN:
  • Final release quantity is computed by summing all release quantities
  • Subtracting hold quantities from the status array
βœ“ Consolidated Acceptance Criteria
  • The system validates release conditions → all conditions are verified as met if no active holds exist, release quantity equals or exceeds cargo quantity, and all regulatory requirements 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_AllConditionsMetforRelease(["Start Step"]) E_AllConditionsMetforRelease(["End Step"]) N_AllConditionsMetforRelease_Node0{"The system validates release
conditions"}:::decision N_AllConditionsMetforRelease_Node0_action["All conditions are verified as met
if no active holds exist, release
quantity equals or exceeds cargo
quantity, and all regulatory
requirements are satisfied"]:::main N_AllConditionsMetforRelease_Node0 -- Yes --> N_AllConditionsMetforRelease_Node0_action N_AllConditionsMetforRelease_Node0_action --> E_AllConditionsMetforRelease S_AllConditionsMetforRelease --> N_AllConditionsMetforRelease_Node0 N_AllConditionsMetforRelease_Node0 -- No --> E_AllConditionsMetforRelease
File: GCX016E.cbl
GIVEN: Final release quantity has been calculated
WHEN: The system validates release conditions
THEN: All conditions are verified as met if no active holds exist, release quantity equals or exceeds cargo quantity, and all regulatory requirements are satisfied
βœ“ Consolidated Acceptance Criteria
  • The system sets final cargo status → cargo status is set to RELEASED and release flags 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_SetStatusRELEASED(["Start Step"]) E_SetStatusRELEASED(["End Step"]) N_SetStatusRELEASED_Node0{"The system sets final cargo status"}:::decision N_SetStatusRELEASED_Node0_action["Cargo status is set to RELEASED and
release flags are activated"]:::main N_SetStatusRELEASED_Node0 -- Yes --> N_SetStatusRELEASED_Node0_action N_SetStatusRELEASED_Node0_action --> E_SetStatusRELEASED S_SetStatusRELEASED --> N_SetStatusRELEASED_Node0 N_SetStatusRELEASED_Node0 -- No --> E_SetStatusRELEASED
File: GCX016E.cbl
GIVEN: All conditions for release have been met
WHEN: The system sets final cargo status
THEN:
  • Cargo status is set to released
  • Release flags are activated
βœ“ Consolidated Acceptance Criteria
  • The system sets final cargo status → cargo status is set to HELD with appropriate hold type designation and hold flags 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_SetStatusHELD(["Start Step"]) E_SetStatusHELD(["End Step"]) N_SetStatusHELD_Node0{"The system sets final cargo status"}:::decision N_SetStatusHELD_Node0_action["Cargo status is set to HELD with
appropriate hold type designation
and hold flags are activated"]:::main N_SetStatusHELD_Node0 -- Yes --> N_SetStatusHELD_Node0_action N_SetStatusHELD_Node0_action --> E_SetStatusHELD S_SetStatusHELD --> N_SetStatusHELD_Node0 N_SetStatusHELD_Node0 -- No --> E_SetStatusHELD
File: GCX016E.cbl
GIVEN: Not all conditions for release have been met
WHEN: The system sets final cargo status
THEN:
  • Cargo status is set to held with appropriate hold type designation
  • Hold flags are activated
βœ“ Consolidated Acceptance Criteria
  • If export processing requirements → export processing is required if export disposition codes are present and cargo destination is outside 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_ExportProcessingRequired(["Start Step"]) E_ExportProcessingRequired(["End Step"]) N_ExportProcessingRequired_Node0{"The system evaluates export
processing requirements"}:::decision N_ExportProcessingRequired_Node0_action["Export processing is required if
export disposition codes are present
and cargo destination is outside the
country"]:::main N_ExportProcessingRequired_Node0 -- Yes --> N_ExportProcessingRequired_Node0_action N_ExportProcessingRequired_Node0_action --> E_ExportProcessingRequired S_ExportProcessingRequired --> N_ExportProcessingRequired_Node0 N_ExportProcessingRequired_Node0 -- No --> E_ExportProcessingRequired
File: GCX016E.cbl
GIVEN: Cargo status has been set to either RELEASED or HELD
WHEN: The system evaluates export processing requirements
THEN:
  • Export processing is required if export disposition codes are present
  • Cargo destination is outside the country
βœ“ Consolidated Acceptance Criteria
  • The system processes export status → cargo status is set to EXPORTED and export flags are activated with appropriate 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_SetStatusEXPORTED(["Start Step"]) E_SetStatusEXPORTED(["End Step"]) N_SetStatusEXPORTED_Node0{"The system processes export status"}:::decision N_SetStatusEXPORTED_Node0_action["Cargo status is set to EXPORTED and
export flags are activated with
appropriate export date"]:::main N_SetStatusEXPORTED_Node0 -- Yes --> N_SetStatusEXPORTED_Node0_action N_SetStatusEXPORTED_Node0_action --> E_SetStatusEXPORTED S_SetStatusEXPORTED --> N_SetStatusEXPORTED_Node0 N_SetStatusEXPORTED_Node0 -- No --> E_SetStatusEXPORTED
File: GCX016E.cbl
GIVEN: Export processing is required for the cargo
WHEN: The system processes export status
THEN:
  • Cargo status is set to exported
  • Export flags are activated with appropriate export date
βœ“ Consolidated Acceptance Criteria
  • If arrival processing requirements → arrival processing is required if arrival disposition codes are present and 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_ArrivalProcessingRequired(["Start Step"]) E_ArrivalProcessingRequired(["End Step"]) N_ArrivalProcessingRequired_Node0{"The system evaluates arrival
processing requirements"}:::decision N_ArrivalProcessingRequired_Node0_action["Arrival processing is required if
arrival disposition codes are
present and cargo has reached its
destination"]:::main N_ArrivalProcessingRequired_Node0 -- Yes --> N_ArrivalProcessingRequired_Node0_action N_ArrivalProcessingRequired_Node0_action --> E_ArrivalProcessingRequired S_ArrivalProcessingRequired --> N_ArrivalProcessingRequired_Node0 N_ArrivalProcessingRequired_Node0 -- No --> E_ArrivalProcessingRequired
File: GCX016E.cbl
GIVEN: Export processing evaluation has been completed
WHEN: The system evaluates arrival processing requirements
THEN:
  • Arrival processing is required if arrival disposition codes are present
  • Cargo has reached its destination
βœ“ Consolidated Acceptance Criteria
  • The system processes arrival status → cargo status is set to ARRIVED and arrival flags are activated with appropriate 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_SetStatusARRIVED(["Start Step"]) E_SetStatusARRIVED(["End Step"]) N_SetStatusARRIVED_Node0{"The system processes arrival status"}:::decision N_SetStatusARRIVED_Node0_action["Cargo status is set to ARRIVED and
arrival flags are activated with
appropriate arrival date"]:::main N_SetStatusARRIVED_Node0 -- Yes --> N_SetStatusARRIVED_Node0_action N_SetStatusARRIVED_Node0_action --> E_SetStatusARRIVED S_SetStatusARRIVED --> N_SetStatusARRIVED_Node0 N_SetStatusARRIVED_Node0 -- No --> E_SetStatusARRIVED
File: GCX016E.cbl
GIVEN: Arrival processing is required for the cargo
WHEN: The system processes arrival status
THEN:
  • Cargo status is set to arrived
  • Arrival flags are activated with appropriate arrival date
βœ“ Consolidated Acceptance Criteria
  • The system generates status change notifications → notifications are sent to brokers, freight forwarders, and other relevant parties based on the status change type and notification preferences
  • The system completes the status change processing → a status change notification is generated to inform relevant parties of the status update
  • Status change processing is complete → generate notifications to relevant parties about the 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_GenerateStatusChangeNotification(["Start Step"]) E_GenerateStatusChangeNotification(["End Step"]) N_GenerateStatusChangeNotification_Node0{"The system generates status change
notifications"}:::decision N_GenerateStatusChangeNotification_Node0_action["Notifications are sent to brokers,
freight forwarders, and other
relevant parties based on the status
change type and notification
preferences"]:::main N_GenerateStatusChangeNotification_Node0 -- Yes --> N_GenerateStatusChangeNotification_Node0_action N_GenerateStatusChangeNotification_Node0_action --> E_GenerateStatusChangeNotification S_GenerateStatusChangeNotification --> N_GenerateStatusChangeNotification_Node0 N_GenerateStatusChangeNotification_Node1{"The system completes the status
change processing"}:::decision N_GenerateStatusChangeNotification_Node1_action["A status change notification is
generated to inform relevant parties
of the status update"]:::main N_GenerateStatusChangeNotification_Node1 -- Yes --> N_GenerateStatusChangeNotification_Node1_action N_GenerateStatusChangeNotification_Node1_action --> E_GenerateStatusChangeNotification N_GenerateStatusChangeNotification_Node0 -- No --> N_GenerateStatusChangeNotification_Node1 N_GenerateStatusChangeNotification_Node2{"Status change processing is
complete"}:::decision N_GenerateStatusChangeNotification_Node2_action["Generate notifications to relevant
parties about the status change"]:::main N_GenerateStatusChangeNotification_Node2 -- Yes --> N_GenerateStatusChangeNotification_Node2_action N_GenerateStatusChangeNotification_Node2_action --> E_GenerateStatusChangeNotification N_GenerateStatusChangeNotification_Node1 -- No --> N_GenerateStatusChangeNotification_Node2 N_GenerateStatusChangeNotification_Node2 -- No --> E_GenerateStatusChangeNotification
File: GCX016E.cbl
GIVEN: Cargo status flags have been updated
WHEN: The system generates status change notifications
THEN:
  • Notifications are sent to brokers, freight forwarders, and other relevant parties based on the status change type
  • Notification preferences
File: GCX016E.cbl
GIVEN: Cargo arrival or export status has been updated or cancelled
WHEN: The system completes the status change processing
THEN: A status change notification is generated to inform relevant parties of the status update
File: GCX016E.cbl
GIVEN: Cargo status has been updated
WHEN: Status change processing is complete
THEN: Generate notifications to relevant parties about the status change
βœ“ Consolidated Acceptance Criteria
  • The system checks the cargo's entry type → the cargo is classified as in-bond if it has entry types 61, 62, 63, or 69, otherwise it is classified as non-in-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_IsCargoInBondEntry(["Start Step"]) E_IsCargoInBondEntry(["End Step"]) N_IsCargoInBondEntry_Node0{"The system checks the cargo s entry
type"}:::decision N_IsCargoInBondEntry_Node0_action["The cargo is classified as in-bond
if it has entry types 61, 62, 63, or
69, otherwise it is classified as
non-in-bond"]:::main N_IsCargoInBondEntry_Node0 -- Yes --> N_IsCargoInBondEntry_Node0_action N_IsCargoInBondEntry_Node0_action --> E_IsCargoInBondEntry S_IsCargoInBondEntry --> N_IsCargoInBondEntry_Node0 N_IsCargoInBondEntry_Node0 -- No --> E_IsCargoInBondEntry
File: GCX016E.cbl
GIVEN: A proceed disposition code is being processed for a cargo
WHEN: The system checks the cargo's entry type
THEN: The cargo is classified as in-bond if it has entry types 61, 62, 63, or 69, otherwise it is classified as non-in-bond
βœ“ Consolidated Acceptance Criteria
  • The entry type is 61, 62, 63, or 69 → the master in-bond flag is set to indicate this is a master in-bond 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_SetMasterInBondFlagforEntryTypes61626369(["Start Step"]) E_SetMasterInBondFlagforEntryTypes61626369(["End Step"]) N_SetMasterInBondFlagforEntryTypes61626369_Node0{"The entry type is 61, 62, 63, or 69"}:::decision N_SetMasterInBondFlagforEntryTypes61626369_Node0_action["The master in-bond flag is set to
indicate this is a master in-bond
movement"]:::main N_SetMasterInBondFlagforEntryTypes61626369_Node0 -- Yes --> N_SetMasterInBondFlagforEntryTypes61626369_Node0_action N_SetMasterInBondFlagforEntryTypes61626369_Node0_action --> E_SetMasterInBondFlagforEntryTypes61626369 S_SetMasterInBondFlagforEntryTypes61626369 --> N_SetMasterInBondFlagforEntryTypes61626369_Node0 N_SetMasterInBondFlagforEntryTypes61626369_Node0 -- No --> E_SetMasterInBondFlagforEntryTypes61626369
File: GCX016E.cbl
GIVEN: A cargo has an in-bond entry type and is undergoing proceed disposition processing
WHEN: The entry type is 61, 62, 63, or 69
THEN: The master in-bond flag is set to indicate this is a master in-bond movement
βœ“ Consolidated Acceptance Criteria
  • The system checks for existing bond information → bond processing continues if bond data exists, otherwise entry number validation is performed
  • The system checks for existing bond information → the system determines if bond data is available 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_BondInformationAvailable(["Start Step"]) E_BondInformationAvailable(["End Step"]) N_BondInformationAvailable_Node0{"The system checks for existing bond
information"}:::decision N_BondInformationAvailable_Node0_action["Bond processing continues if bond
data exists, otherwise entry number
validation is performed"]:::main N_BondInformationAvailable_Node0 -- Yes --> N_BondInformationAvailable_Node0_action N_BondInformationAvailable_Node0_action --> E_BondInformationAvailable S_BondInformationAvailable --> N_BondInformationAvailable_Node0 N_BondInformationAvailable_Node1{"The system checks for existing bond
information"}:::decision N_BondInformationAvailable_Node1_action["The system determines if bond data
is available and routes processing
accordingly"]:::main N_BondInformationAvailable_Node1 -- Yes --> N_BondInformationAvailable_Node1_action N_BondInformationAvailable_Node1_action --> E_BondInformationAvailable N_BondInformationAvailable_Node0 -- No --> N_BondInformationAvailable_Node1 N_BondInformationAvailable_Node1 -- No --> E_BondInformationAvailable
File: GCX016E.cbl
GIVEN: A cargo is being processed for proceed disposition with in-bond requirements
WHEN: The system checks for existing bond information
THEN: Bond processing continues if bond data exists, otherwise entry number validation is performed
File: GCX016E.cbl
GIVEN: A cargo status change has been detected
WHEN: The system checks for existing bond information
THEN:
  • The system determines if bond data is available
  • Routes processing accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the bond information → all existing bond data fields are cleared to prepare for new bond information 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_ClearExistingBondData(["Start Step"]) E_ClearExistingBondData(["End Step"]) N_ClearExistingBondData_Node0{"The system processes the bond
information"}:::decision N_ClearExistingBondData_Node0_action["All existing bond data fields are
cleared to prepare for new bond
information updates"]:::main N_ClearExistingBondData_Node0 -- Yes --> N_ClearExistingBondData_Node0_action N_ClearExistingBondData_Node0_action --> E_ClearExistingBondData S_ClearExistingBondData --> N_ClearExistingBondData_Node0 N_ClearExistingBondData_Node0 -- No --> E_ClearExistingBondData
File: GCX016E.cbl
GIVEN: Bond information is available for a cargo undergoing proceed disposition processing
WHEN: The system processes the bond information
THEN: All existing bond data fields are cleared to prepare for new bond information updates
βœ“ Consolidated Acceptance Criteria
  • New bond information is being processed → the bond number index is updated with the new bond number 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_UpdateBondNumberIndex(["Start Step"]) E_UpdateBondNumberIndex(["End Step"]) N_UpdateBondNumberIndex_Node0{"New bond information is being
processed"}:::decision N_UpdateBondNumberIndex_Node0_action["The bond number index is updated
with the new bond number for
tracking purposes"]:::main N_UpdateBondNumberIndex_Node0 -- Yes --> N_UpdateBondNumberIndex_Node0_action N_UpdateBondNumberIndex_Node0_action --> E_UpdateBondNumberIndex S_UpdateBondNumberIndex --> N_UpdateBondNumberIndex_Node0 N_UpdateBondNumberIndex_Node0 -- No --> E_UpdateBondNumberIndex
File: GCX016E.cbl
GIVEN: Existing bond data has been cleared for a cargo
WHEN: New bond information is being processed
THEN: The bond number index is updated with the new bond number for tracking purposes
βœ“ Consolidated Acceptance Criteria
  • Broker information is being processed → the broker qualifying party information is set to establish broker responsibility 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_SetBrokerQPInformation(["Start Step"]) E_SetBrokerQPInformation(["End Step"]) N_SetBrokerQPInformation_Node0{"Broker information is being
processed"}:::decision N_SetBrokerQPInformation_Node0_action["The broker qualifying party
information is set to establish
broker responsibility for the bond"]:::main N_SetBrokerQPInformation_Node0 -- Yes --> N_SetBrokerQPInformation_Node0_action N_SetBrokerQPInformation_Node0_action --> E_SetBrokerQPInformation S_SetBrokerQPInformation --> N_SetBrokerQPInformation_Node0 N_SetBrokerQPInformation_Node0 -- No --> E_SetBrokerQPInformation
File: GCX016E.cbl
GIVEN: Bond number index has been updated for a cargo
WHEN: Broker information is being processed
THEN: The broker qualifying party information is set to establish broker responsibility for the bond
βœ“ Consolidated Acceptance Criteria
  • Bond owner information is being processed → bond owner details are updated to reflect the current bond ownership 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_UpdateBondOwnerDetails(["Start Step"]) E_UpdateBondOwnerDetails(["End Step"]) N_UpdateBondOwnerDetails_Node0{"Bond owner information is being
processed"}:::decision N_UpdateBondOwnerDetails_Node0_action["Bond owner details are updated to
reflect the current bond ownership
information"]:::main N_UpdateBondOwnerDetails_Node0 -- Yes --> N_UpdateBondOwnerDetails_Node0_action N_UpdateBondOwnerDetails_Node0_action --> E_UpdateBondOwnerDetails S_UpdateBondOwnerDetails --> N_UpdateBondOwnerDetails_Node0 N_UpdateBondOwnerDetails_Node0 -- No --> E_UpdateBondOwnerDetails
File: GCX016E.cbl
GIVEN: Broker QP information has been set for a cargo
WHEN: Bond owner information is being processed
THEN: Bond owner details are updated to reflect the current bond ownership information
βœ“ Consolidated Acceptance Criteria
  • The system validates the entry number → the entry number is checked against existing broker entry number records to ensure validity
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateEntryNumberAgainstExistingRecords(["Start Step"]) E_ValidateEntryNumberAgainstExistingRecords(["End Step"]) N_ValidateEntryNumberAgainstExistingRecords_Node0{"The system validates the entry
number"}:::decision N_ValidateEntryNumberAgainstExistingRecords_Node0_action["The entry number is checked against
existing broker entry number records
to ensure validity"]:::main N_ValidateEntryNumberAgainstExistingRecords_Node0 -- Yes --> N_ValidateEntryNumberAgainstExistingRecords_Node0_action N_ValidateEntryNumberAgainstExistingRecords_Node0_action --> E_ValidateEntryNumberAgainstExistingRecords S_ValidateEntryNumberAgainstExistingRecords --> N_ValidateEntryNumberAgainstExistingRecords_Node0 N_ValidateEntryNumberAgainstExistingRecords_Node0 -- No --> E_ValidateEntryNumberAgainstExistingRecords
File: GCX016E.cbl
GIVEN: Bond processing is complete or no bond information is available
WHEN: The system validates the entry number
THEN: The entry number is checked against existing broker entry number records to ensure validity
βœ“ Consolidated Acceptance Criteria
  • In-bond control number processing is initiated → the in-bond control number is processed and 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_ProcessInBondControlNumber(["Start Step"]) E_ProcessInBondControlNumber(["End Step"]) N_ProcessInBondControlNumber_Node0{"In-bond control number processing
is initiated"}:::decision N_ProcessInBondControlNumber_Node0_action["The in-bond control number is
processed and associated with the
cargo record"]:::main N_ProcessInBondControlNumber_Node0 -- Yes --> N_ProcessInBondControlNumber_Node0_action N_ProcessInBondControlNumber_Node0_action --> E_ProcessInBondControlNumber S_ProcessInBondControlNumber --> N_ProcessInBondControlNumber_Node0 N_ProcessInBondControlNumber_Node0 -- No --> E_ProcessInBondControlNumber
File: GCX016E.cbl
GIVEN: The entry number has been validated as valid
WHEN: In-bond control number processing is initiated
THEN:
  • The in-bond control number is processed
  • Associated with the cargo record
βœ“ Consolidated Acceptance Criteria
  • EDI entry type codes need to be converted → eDI entry type codes are converted to corresponding internal system values 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_ConvertEDIEntryTypeCodestoInternalValues(["Start Step"]) E_ConvertEDIEntryTypeCodestoInternalValues(["End Step"]) N_ConvertEDIEntryTypeCodestoInternalValues_Node0{"EDI entry type codes need to be
converted"}:::decision N_ConvertEDIEntryTypeCodestoInternalValues_Node0_action["EDI entry type codes are converted
to corresponding internal system
values for processing"]:::main N_ConvertEDIEntryTypeCodestoInternalValues_Node0 -- Yes --> N_ConvertEDIEntryTypeCodestoInternalValues_Node0_action N_ConvertEDIEntryTypeCodestoInternalValues_Node0_action --> E_ConvertEDIEntryTypeCodestoInternalValues S_ConvertEDIEntryTypeCodestoInternalValues --> N_ConvertEDIEntryTypeCodestoInternalValues_Node0 N_ConvertEDIEntryTypeCodestoInternalValues_Node0 -- No --> E_ConvertEDIEntryTypeCodestoInternalValues
File: GCX016E.cbl
GIVEN: In-bond control number has been processed
WHEN: EDI entry type codes need to be converted
THEN: EDI entry type codes are converted to corresponding internal system values for processing
βœ“ Consolidated Acceptance Criteria
  • In-bond processing flags need to be set → appropriate flags are set to indicate the cargo is undergoing 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_SetInBondProcessingFlags(["Start Step"]) E_SetInBondProcessingFlags(["End Step"]) N_SetInBondProcessingFlags_Node0{"In-bond processing flags need to be
set"}:::decision N_SetInBondProcessingFlags_Node0_action["Appropriate flags are set to
indicate the cargo is undergoing
in-bond processing"]:::main N_SetInBondProcessingFlags_Node0 -- Yes --> N_SetInBondProcessingFlags_Node0_action N_SetInBondProcessingFlags_Node0_action --> E_SetInBondProcessingFlags S_SetInBondProcessingFlags --> N_SetInBondProcessingFlags_Node0 N_SetInBondProcessingFlags_Node0 -- No --> E_SetInBondProcessingFlags
File: GCX016E.cbl
GIVEN: EDI entry type codes have been converted to internal values
WHEN: In-bond processing flags need to be set
THEN: Appropriate flags are set to indicate the cargo is undergoing in-bond processing
βœ“ Consolidated Acceptance Criteria
  • The cargo status needs to be updated → the cargo status is updated to proceed to indicate the cargo can move forward 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_UpdateCargoStatustoProceed(["Start Step"]) E_UpdateCargoStatustoProceed(["End Step"]) N_UpdateCargoStatustoProceed_Node0{"The cargo status needs to be
updated"}:::decision N_UpdateCargoStatustoProceed_Node0_action["The cargo status is updated to
proceed to indicate the cargo can
move forward in the process"]:::main N_UpdateCargoStatustoProceed_Node0 -- Yes --> N_UpdateCargoStatustoProceed_Node0_action N_UpdateCargoStatustoProceed_Node0_action --> E_UpdateCargoStatustoProceed S_UpdateCargoStatustoProceed --> N_UpdateCargoStatustoProceed_Node0 N_UpdateCargoStatustoProceed_Node0 -- No --> E_UpdateCargoStatustoProceed
File: GCX016E.cbl
GIVEN: All in-bond processing flags have been set or the cargo is non-in-bond
WHEN: The cargo status needs to be updated
THEN: The cargo status is updated to proceed to indicate the cargo can move forward in the process
βœ“ Consolidated Acceptance Criteria
  • Action logging is performed → the proceed action is logged with relevant details for audit trail 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_LogProceedAction(["Start Step"]) E_LogProceedAction(["End Step"]) N_LogProceedAction_Node0{"Action logging is performed"}:::decision N_LogProceedAction_Node0_action["The proceed action is logged with
relevant details for audit trail and
tracking purposes"]:::main N_LogProceedAction_Node0 -- Yes --> N_LogProceedAction_Node0_action N_LogProceedAction_Node0_action --> E_LogProceedAction S_LogProceedAction --> N_LogProceedAction_Node0 N_LogProceedAction_Node0 -- No --> E_LogProceedAction
File: GCX016E.cbl
GIVEN: The cargo status has been updated to proceed
WHEN: Action logging is performed
THEN:
  • The proceed action is logged with relevant details for audit trail
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code is AAD (Actual Arrival Date) or POD (Proof of Delivery) → the system identifies the code as an arrival disposition and proceeds 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_CheckArrivalDispositionCodes(["Start Step"]) E_CheckArrivalDispositionCodes(["End Step"]) N_CheckArrivalDispositionCodes_Node0{"The system checks if the
disposition code is AAD Actual
Arrival Date or POD Proof of
Delivery"}:::decision N_CheckArrivalDispositionCodes_Node0_action["The system identifies the code as
an arrival disposition and proceeds
with arrival processing"]:::main N_CheckArrivalDispositionCodes_Node0 -- Yes --> N_CheckArrivalDispositionCodes_Node0_action N_CheckArrivalDispositionCodes_Node0_action --> E_CheckArrivalDispositionCodes S_CheckArrivalDispositionCodes --> N_CheckArrivalDispositionCodes_Node0 N_CheckArrivalDispositionCodes_Node0 -- No --> E_CheckArrivalDispositionCodes
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo status management
WHEN: The system checks if the disposition code is AAD (Actual Arrival Date) or POD (Proof of Delivery)
THEN:
  • The system identifies the code as an arrival disposition
  • Proceeds with arrival processing
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo status for arrival → the cargo arrival status flag is set to indicate the cargo has 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_SetCargoArrivalStatusFlag(["Start Step"]) E_SetCargoArrivalStatusFlag(["End Step"]) N_SetCargoArrivalStatusFlag_Node0{"The system updates cargo status for
arrival"}:::decision N_SetCargoArrivalStatusFlag_Node0_action["The cargo arrival status flag is
set to indicate the cargo has
arrived"]:::main N_SetCargoArrivalStatusFlag_Node0 -- Yes --> N_SetCargoArrivalStatusFlag_Node0_action N_SetCargoArrivalStatusFlag_Node0_action --> E_SetCargoArrivalStatusFlag S_SetCargoArrivalStatusFlag --> N_SetCargoArrivalStatusFlag_Node0 N_SetCargoArrivalStatusFlag_Node0 -- No --> E_SetCargoArrivalStatusFlag
File: GCX016E.cbl
GIVEN: A valid arrival disposition code with valid location has been processed
WHEN: The system updates cargo status for arrival
THEN: The cargo arrival status flag is set to indicate the cargo has arrived
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code indicates export processing → the system identifies the code as an export disposition and proceeds 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_CheckExportDispositionCodes(["Start Step"]) E_CheckExportDispositionCodes(["End Step"]) N_CheckExportDispositionCodes_Node0{"The system checks if the
disposition code indicates export
processing"}:::decision N_CheckExportDispositionCodes_Node0_action["The system identifies the code as
an export disposition and proceeds
with export processing"]:::main N_CheckExportDispositionCodes_Node0 -- Yes --> N_CheckExportDispositionCodes_Node0_action N_CheckExportDispositionCodes_Node0_action --> E_CheckExportDispositionCodes S_CheckExportDispositionCodes --> N_CheckExportDispositionCodes_Node0 N_CheckExportDispositionCodes_Node0 -- No --> E_CheckExportDispositionCodes
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo status management
WHEN: The system checks if the disposition code indicates export processing
THEN:
  • The system identifies the code as an export disposition
  • Proceeds with export processing
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo status for export → the cargo export status flag is set to indicate the cargo is being exported
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetCargoExportStatusFlag(["Start Step"]) E_SetCargoExportStatusFlag(["End Step"]) N_SetCargoExportStatusFlag_Node0{"The system updates cargo status for
export"}:::decision N_SetCargoExportStatusFlag_Node0_action["The cargo export status flag is set
to indicate the cargo is being
exported"]:::main N_SetCargoExportStatusFlag_Node0 -- Yes --> N_SetCargoExportStatusFlag_Node0_action N_SetCargoExportStatusFlag_Node0_action --> E_SetCargoExportStatusFlag S_SetCargoExportStatusFlag --> N_SetCargoExportStatusFlag_Node0 N_SetCargoExportStatusFlag_Node0 -- No --> E_SetCargoExportStatusFlag
File: GCX016E.cbl
GIVEN: A valid export disposition code with valid location has been processed
WHEN: The system updates cargo status for export
THEN: The cargo export status flag is set to indicate the cargo is being exported
βœ“ Consolidated Acceptance Criteria
  • The system records the export event → the export date is updated to reflect 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_UpdateExportDate(["Start Step"]) E_UpdateExportDate(["End Step"]) N_UpdateExportDate_Node0{"The system records the export event"}:::decision N_UpdateExportDate_Node0_action["The export date is updated to
reflect the current processing date
and time"]:::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: GCX016E.cbl
GIVEN: Cargo export status has been set
WHEN: The system records the export event
THEN:
  • The export date is updated to reflect the current processing date
  • Time
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code indicates cancellation of arrival → the system identifies the code as a cancel arrival disposition and proceeds with 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_CheckCancelArrivalCodes(["Start Step"]) E_CheckCancelArrivalCodes(["End Step"]) N_CheckCancelArrivalCodes_Node0{"The system checks if the
disposition code indicates
cancellation of arrival"}:::decision N_CheckCancelArrivalCodes_Node0_action["The system identifies the code as a
cancel arrival disposition and
proceeds with arrival cancellation"]:::main N_CheckCancelArrivalCodes_Node0 -- Yes --> N_CheckCancelArrivalCodes_Node0_action N_CheckCancelArrivalCodes_Node0_action --> E_CheckCancelArrivalCodes S_CheckCancelArrivalCodes --> N_CheckCancelArrivalCodes_Node0 N_CheckCancelArrivalCodes_Node0 -- No --> E_CheckCancelArrivalCodes
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo status management
WHEN: The system checks if the disposition code indicates cancellation of arrival
THEN:
  • The system identifies the code as a cancel arrival disposition
  • Proceeds with arrival cancellation
βœ“ Consolidated Acceptance Criteria
  • The system cancels the arrival status → the cargo arrival status flag is reset to indicate the cargo 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_ResetArrivalStatusFlag(["Start Step"]) E_ResetArrivalStatusFlag(["End Step"]) N_ResetArrivalStatusFlag_Node0{"The system cancels the arrival
status"}:::decision N_ResetArrivalStatusFlag_Node0_action["The cargo arrival status flag is
reset to indicate the cargo has not
arrived"]:::main N_ResetArrivalStatusFlag_Node0 -- Yes --> N_ResetArrivalStatusFlag_Node0_action N_ResetArrivalStatusFlag_Node0_action --> E_ResetArrivalStatusFlag S_ResetArrivalStatusFlag --> N_ResetArrivalStatusFlag_Node0 N_ResetArrivalStatusFlag_Node0 -- No --> E_ResetArrivalStatusFlag
File: GCX016E.cbl
GIVEN: A cancel arrival disposition code has been processed
WHEN: The system cancels the arrival status
THEN: The cargo arrival status flag is reset to indicate the cargo has not arrived
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival cancellation → the previous arrival date is restored to maintain historical 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_RestorePreviousArrivalDate(["Start Step"]) E_RestorePreviousArrivalDate(["End Step"]) N_RestorePreviousArrivalDate_Node0{"The system processes the arrival
cancellation"}:::decision N_RestorePreviousArrivalDate_Node0_action["The previous arrival date is
restored to maintain historical
accuracy"]:::main N_RestorePreviousArrivalDate_Node0 -- Yes --> N_RestorePreviousArrivalDate_Node0_action N_RestorePreviousArrivalDate_Node0_action --> E_RestorePreviousArrivalDate S_RestorePreviousArrivalDate --> N_RestorePreviousArrivalDate_Node0 N_RestorePreviousArrivalDate_Node0 -- No --> E_RestorePreviousArrivalDate
File: GCX016E.cbl
GIVEN: Arrival status is being cancelled and a previous arrival date exists
WHEN: The system processes the arrival cancellation
THEN: The previous arrival date is restored to maintain historical accuracy
βœ“ Consolidated Acceptance Criteria
  • The system updates bond-related data → bond information is recalculated to reflect the cancelled 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_RecalculateBondInformation(["Start Step"]) E_RecalculateBondInformation(["End Step"]) N_RecalculateBondInformation_Node0{"The system updates bond-related
data"}:::decision N_RecalculateBondInformation_Node0_action["Bond information is recalculated to
reflect the cancelled arrival status"]:::main N_RecalculateBondInformation_Node0 -- Yes --> N_RecalculateBondInformation_Node0_action N_RecalculateBondInformation_Node0_action --> E_RecalculateBondInformation S_RecalculateBondInformation --> N_RecalculateBondInformation_Node0 N_RecalculateBondInformation_Node0 -- No --> E_RecalculateBondInformation
File: GCX016E.cbl
GIVEN: Arrival status has been cancelled
WHEN: The system updates bond-related data
THEN: Bond information is recalculated to reflect the cancelled arrival status
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code indicates cancellation of export → the system identifies the code as a cancel export disposition and proceeds with export 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_CheckCancelExportCodes(["Start Step"]) E_CheckCancelExportCodes(["End Step"]) N_CheckCancelExportCodes_Node0{"The system checks if the
disposition code indicates
cancellation of export"}:::decision N_CheckCancelExportCodes_Node0_action["The system identifies the code as a
cancel export disposition and
proceeds with export cancellation"]:::main N_CheckCancelExportCodes_Node0 -- Yes --> N_CheckCancelExportCodes_Node0_action N_CheckCancelExportCodes_Node0_action --> E_CheckCancelExportCodes S_CheckCancelExportCodes --> N_CheckCancelExportCodes_Node0 N_CheckCancelExportCodes_Node0 -- No --> E_CheckCancelExportCodes
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo status management
WHEN: The system checks if the disposition code indicates cancellation of export
THEN:
  • The system identifies the code as a cancel export disposition
  • Proceeds with export cancellation
βœ“ Consolidated Acceptance Criteria
  • The system cancels the export status → the cargo export status flag is reset to indicate the cargo is not being exported
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ResetExportStatusFlag(["Start Step"]) E_ResetExportStatusFlag(["End Step"]) N_ResetExportStatusFlag_Node0{"The system cancels the export
status"}:::decision N_ResetExportStatusFlag_Node0_action["The cargo export status flag is
reset to indicate the cargo is not
being exported"]:::main N_ResetExportStatusFlag_Node0 -- Yes --> N_ResetExportStatusFlag_Node0_action N_ResetExportStatusFlag_Node0_action --> E_ResetExportStatusFlag S_ResetExportStatusFlag --> N_ResetExportStatusFlag_Node0 N_ResetExportStatusFlag_Node0 -- No --> E_ResetExportStatusFlag
File: GCX016E.cbl
GIVEN: A cancel export disposition code has been processed
WHEN: The system cancels the export status
THEN: The cargo export status flag is reset to indicate the cargo is not being exported
βœ“ Consolidated Acceptance Criteria
  • The system processes the export cancellation → the previous export date is restored to maintain historical 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_RestorePreviousExportDate(["Start Step"]) E_RestorePreviousExportDate(["End Step"]) N_RestorePreviousExportDate_Node0{"The system processes the export
cancellation"}:::decision N_RestorePreviousExportDate_Node0_action["The previous export date is
restored to maintain historical
accuracy"]:::main N_RestorePreviousExportDate_Node0 -- Yes --> N_RestorePreviousExportDate_Node0_action N_RestorePreviousExportDate_Node0_action --> E_RestorePreviousExportDate S_RestorePreviousExportDate --> N_RestorePreviousExportDate_Node0 N_RestorePreviousExportDate_Node0 -- No --> E_RestorePreviousExportDate
File: GCX016E.cbl
GIVEN: Export status is being cancelled and a previous export date exists
WHEN: The system processes the export cancellation
THEN: The previous export date is restored to maintain historical accuracy
βœ“ Consolidated Acceptance Criteria
  • The system processes the export cancellation → the export index is cleared to remove the export location 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_ClearExportIndex(["Start Step"]) E_ClearExportIndex(["End Step"]) N_ClearExportIndex_Node0{"The system processes the export
cancellation"}:::decision N_ClearExportIndex_Node0_action["The export index is cleared to
remove the export location reference"]:::main N_ClearExportIndex_Node0 -- Yes --> N_ClearExportIndex_Node0_action N_ClearExportIndex_Node0_action --> E_ClearExportIndex S_ClearExportIndex --> N_ClearExportIndex_Node0 N_ClearExportIndex_Node0 -- No --> E_ClearExportIndex
File: GCX016E.cbl
GIVEN: Export status is being cancelled
WHEN: The system processes the export cancellation
THEN: The export index is cleared to remove the export location reference
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancel arrival disposition code → the system initiates cancel 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_CancelArrivalProcessing(["Start Step"]) E_CancelArrivalProcessing(["End Step"]) N_CancelArrivalProcessing_Node0{"The system processes the cancel
arrival disposition code"}:::decision N_CancelArrivalProcessing_Node0_action["The system initiates cancel arrival
processing workflow"]:::main N_CancelArrivalProcessing_Node0 -- Yes --> N_CancelArrivalProcessing_Node0_action N_CancelArrivalProcessing_Node0_action --> E_CancelArrivalProcessing S_CancelArrivalProcessing --> N_CancelArrivalProcessing_Node0 N_CancelArrivalProcessing_Node0 -- No --> E_CancelArrivalProcessing
File: GCX016E.cbl
GIVEN: A cargo has an active arrival status and a cancel arrival disposition code is processed
WHEN: The system processes the cancel arrival disposition code
THEN: The system initiates cancel arrival processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancel export disposition code → the system initiates cancel export 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_CancelExportProcessing(["Start Step"]) E_CancelExportProcessing(["End Step"]) N_CancelExportProcessing_Node0{"The system processes the cancel
export disposition code"}:::decision N_CancelExportProcessing_Node0_action["The system initiates cancel export
processing workflow"]:::main N_CancelExportProcessing_Node0 -- Yes --> N_CancelExportProcessing_Node0_action N_CancelExportProcessing_Node0_action --> E_CancelExportProcessing S_CancelExportProcessing --> N_CancelExportProcessing_Node0 N_CancelExportProcessing_Node0 -- No --> E_CancelExportProcessing
File: GCX016E.cbl
GIVEN: A cargo has an active export status and a cancel export disposition code is processed
WHEN: The system processes the cancel export disposition code
THEN: The system initiates cancel export processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the status change → the system saves the previous status information to 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_SavePreviousStatusforAudit(["Start Step"]) E_SavePreviousStatusforAudit(["End Step"]) N_SavePreviousStatusforAudit_Node0{"The system processes the status
change"}:::decision N_SavePreviousStatusforAudit_Node0_action["The system saves the previous
status information to maintain audit
trail"]:::main N_SavePreviousStatusforAudit_Node0 -- Yes --> N_SavePreviousStatusforAudit_Node0_action N_SavePreviousStatusforAudit_Node0_action --> E_SavePreviousStatusforAudit S_SavePreviousStatusforAudit --> N_SavePreviousStatusforAudit_Node0 N_SavePreviousStatusforAudit_Node0 -- No --> E_SavePreviousStatusforAudit
File: GCX016E.cbl
GIVEN: A cargo status is about to be changed due to cancellation
WHEN: The system processes the status change
THEN: The system saves the previous status information to maintain audit trail
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival cancellation → the system clears the arrival flag 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_ClearArrivalFlag(["Start Step"]) E_ClearArrivalFlag(["End Step"]) N_ClearArrivalFlag_Node0{"The system processes the arrival
cancellation"}:::decision N_ClearArrivalFlag_Node0_action["The system clears the arrival flag
in the cargo record"]:::main N_ClearArrivalFlag_Node0 -- Yes --> N_ClearArrivalFlag_Node0_action N_ClearArrivalFlag_Node0_action --> E_ClearArrivalFlag S_ClearArrivalFlag --> N_ClearArrivalFlag_Node0 N_ClearArrivalFlag_Node0 -- No --> E_ClearArrivalFlag
File: GCX016E.cbl
GIVEN: A cargo has an active arrival flag set and arrival cancellation is being processed
WHEN: The system processes the arrival cancellation
THEN: The system clears the arrival flag in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes the export cancellation → the system clears the export flag 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_ClearExportFlag(["Start Step"]) E_ClearExportFlag(["End Step"]) N_ClearExportFlag_Node0{"The system processes the export
cancellation"}:::decision N_ClearExportFlag_Node0_action["The system clears the export flag
in the cargo record"]:::main N_ClearExportFlag_Node0 -- Yes --> N_ClearExportFlag_Node0_action N_ClearExportFlag_Node0_action --> E_ClearExportFlag S_ClearExportFlag --> N_ClearExportFlag_Node0 N_ClearExportFlag_Node0 -- No --> E_ClearExportFlag
File: GCX016E.cbl
GIVEN: A cargo has an active export flag set and export cancellation is being processed
WHEN: The system processes the export cancellation
THEN: The system clears the export flag in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes the arrival cancellation → the system resets the arrival date to blank or previous 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_ResetArrivalDate(["Start Step"]) E_ResetArrivalDate(["End Step"]) N_ResetArrivalDate_Node0{"The system processes the arrival
cancellation"}:::decision N_ResetArrivalDate_Node0_action["The system resets the arrival date
to blank or previous value"]:::main N_ResetArrivalDate_Node0 -- Yes --> N_ResetArrivalDate_Node0_action N_ResetArrivalDate_Node0_action --> E_ResetArrivalDate S_ResetArrivalDate --> N_ResetArrivalDate_Node0 N_ResetArrivalDate_Node0 -- No --> E_ResetArrivalDate
File: GCX016E.cbl
GIVEN: A cargo has an arrival date set and arrival cancellation is being processed
WHEN: The system processes the arrival cancellation
THEN: The system resets the arrival date to blank or previous value
βœ“ Consolidated Acceptance Criteria
  • The system processes the export cancellation → the system resets the export date to blank or previous 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_ResetExportDate(["Start Step"]) E_ResetExportDate(["End Step"]) N_ResetExportDate_Node0{"The system processes the export
cancellation"}:::decision N_ResetExportDate_Node0_action["The system resets the export date
to blank or previous value"]:::main N_ResetExportDate_Node0 -- Yes --> N_ResetExportDate_Node0_action N_ResetExportDate_Node0_action --> E_ResetExportDate S_ResetExportDate --> N_ResetExportDate_Node0 N_ResetExportDate_Node0 -- No --> E_ResetExportDate
File: GCX016E.cbl
GIVEN: A cargo has an export date set and export cancellation is being processed
WHEN: The system processes the export cancellation
THEN: The system resets the export date to blank or previous value
βœ“ Consolidated Acceptance Criteria
  • The system completes the cancellation processing → the system generates a cancel notification message for 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_GenerateCancelNotification(["Start Step"]) E_GenerateCancelNotification(["End Step"]) N_GenerateCancelNotification_Node0{"The system completes the
cancellation processing"}:::decision N_GenerateCancelNotification_Node0_action["The system generates a cancel
notification message for relevant
parties"]:::main N_GenerateCancelNotification_Node0 -- Yes --> N_GenerateCancelNotification_Node0_action N_GenerateCancelNotification_Node0_action --> E_GenerateCancelNotification S_GenerateCancelNotification --> N_GenerateCancelNotification_Node0 N_GenerateCancelNotification_Node0 -- No --> E_GenerateCancelNotification
File: GCX016E.cbl
GIVEN: A cargo cancellation has been successfully processed
WHEN: The system completes the cancellation processing
THEN: The system generates a cancel notification message for relevant parties
βœ“ Consolidated Acceptance Criteria
  • The system completes the status change → the system logs the status change with timestamp and 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_LogStatusChange(["Start Step"]) E_LogStatusChange(["End Step"]) N_LogStatusChange_Node0{"The system completes the status
change"}:::decision N_LogStatusChange_Node0_action["The system logs the status change
with timestamp and details for audit
purposes"]:::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: GCX016E.cbl
GIVEN: A cargo status has been changed due to cancellation processing
WHEN: The system completes the status change
THEN:
  • The system logs the status change with timestamp
  • Details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → the system updates all relevant status arrays to reflect the cancellation 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_UpdateStatusArrays(["Start Step"]) E_UpdateStatusArrays(["End Step"]) N_UpdateStatusArrays_Node0{"The system updates the cargo record"}:::decision N_UpdateStatusArrays_Node0_action["The system updates all relevant
status arrays to reflect the
cancellation changes"]:::main N_UpdateStatusArrays_Node0 -- Yes --> N_UpdateStatusArrays_Node0_action N_UpdateStatusArrays_Node0_action --> E_UpdateStatusArrays S_UpdateStatusArrays --> N_UpdateStatusArrays_Node0 N_UpdateStatusArrays_Node0 -- No --> E_UpdateStatusArrays
File: GCX016E.cbl
GIVEN: A cargo cancellation has been processed and status has been determined
WHEN: The system updates the cargo record
THEN: The system updates all relevant status arrays to reflect the cancellation changes
βœ“ Consolidated Acceptance Criteria
  • The system completes the update process → the system verifies that the status has been properly restored and is consistent
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_VerifyStatusRestoration(["Start Step"]) E_VerifyStatusRestoration(["End Step"]) N_VerifyStatusRestoration_Node0{"The system completes the update
process"}:::decision N_VerifyStatusRestoration_Node0_action["The system verifies that the status
has been properly restored and is
consistent"]:::main N_VerifyStatusRestoration_Node0 -- Yes --> N_VerifyStatusRestoration_Node0_action N_VerifyStatusRestoration_Node0_action --> E_VerifyStatusRestoration S_VerifyStatusRestoration --> N_VerifyStatusRestoration_Node0 N_VerifyStatusRestoration_Node0 -- No --> E_VerifyStatusRestoration
File: GCX016E.cbl
GIVEN: A cargo cancellation has been processed and status arrays have been updated
WHEN: The system completes the update process
THEN:
  • The system verifies that the status has been properly restored
  • Is consistent
βœ“ Consolidated Acceptance Criteria
  • The system completes all internal processing → the system sends cancellation message to external systems and interested 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_SendCancellationMessage(["Start Step"]) E_SendCancellationMessage(["End Step"]) N_SendCancellationMessage_Node0{"The system completes all internal
processing"}:::decision N_SendCancellationMessage_Node0_action["The system sends cancellation
message to external systems and
interested parties"]:::main N_SendCancellationMessage_Node0 -- Yes --> N_SendCancellationMessage_Node0_action N_SendCancellationMessage_Node0_action --> E_SendCancellationMessage S_SendCancellationMessage --> N_SendCancellationMessage_Node0 N_SendCancellationMessage_Node0 -- No --> E_SendCancellationMessage
File: GCX016E.cbl
GIVEN: A cargo cancellation has been verified and processed successfully
WHEN: The system completes all internal processing
THEN:
  • The system sends cancellation message to external systems
  • Interested parties
βœ“ Consolidated Acceptance Criteria
  • The system validates the disposition code against the DC table → the code validation result determines whether processing continues or 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_ValidateDispositionCodeAgainstDCTable(["Start Step"]) E_ValidateDispositionCodeAgainstDCTable(["End Step"]) N_ValidateDispositionCodeAgainstDCTable_Node0{"The system validates the
disposition code against the DC
table"}:::decision N_ValidateDispositionCodeAgainstDCTable_Node0_action["The code validation result
determines whether processing
continues or an error is generated"]:::main N_ValidateDispositionCodeAgainstDCTable_Node0 -- Yes --> N_ValidateDispositionCodeAgainstDCTable_Node0_action N_ValidateDispositionCodeAgainstDCTable_Node0_action --> E_ValidateDispositionCodeAgainstDCTable S_ValidateDispositionCodeAgainstDCTable --> N_ValidateDispositionCodeAgainstDCTable_Node0 N_ValidateDispositionCodeAgainstDCTable_Node0 -- No --> E_ValidateDispositionCodeAgainstDCTable
File: GCX016E.cbl
GIVEN: A status information disposition code is received for processing
WHEN: The system validates the disposition code against the DC table
THEN: The code validation result determines whether processing continues or an error is generated
βœ“ Consolidated Acceptance Criteria
  • The disposition code is not found in the DC table → an error message is generated for the unknown disposition code and processing continues with next 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_GenerateErrorMessageforUnknownCode(["Start Step"]) E_GenerateErrorMessageforUnknownCode(["End Step"]) N_GenerateErrorMessageforUnknownCode_Node0{"The disposition code is not found
in the DC table"}:::decision N_GenerateErrorMessageforUnknownCode_Node0_action["An error message is generated for
the unknown disposition code and
processing continues with next code"]:::main N_GenerateErrorMessageforUnknownCode_Node0 -- Yes --> N_GenerateErrorMessageforUnknownCode_Node0_action N_GenerateErrorMessageforUnknownCode_Node0_action --> E_GenerateErrorMessageforUnknownCode S_GenerateErrorMessageforUnknownCode --> N_GenerateErrorMessageforUnknownCode_Node0 N_GenerateErrorMessageforUnknownCode_Node0 -- No --> E_GenerateErrorMessageforUnknownCode
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code has been validated against the DC table
WHEN: The disposition code is not found in the DC table
THEN:
  • An error message is generated for the unknown disposition code
  • Processing continues with next code
βœ“ Consolidated Acceptance Criteria
  • The system checks the S09A status array for existing occurrences of the same code → the duplicate check result determines whether the code should be added or 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_CheckifCodeAlreadyExistsinStatusArray(["Start Step"]) E_CheckifCodeAlreadyExistsinStatusArray(["End Step"]) N_CheckifCodeAlreadyExistsinStatusArray_Node0{"The system checks the S09A status
array for existing occurrences of
the same code"}:::decision N_CheckifCodeAlreadyExistsinStatusArray_Node0_action["The duplicate check result
determines whether the code should
be added or skipped"]:::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: GCX016E.cbl
GIVEN: A valid disposition code needs to be added to the status array
WHEN: The system checks the S09A status array for existing occurrences of the same code
THEN: The duplicate check result determines whether the code should be added or skipped
βœ“ Consolidated Acceptance Criteria
  • The same disposition code is already present in the S09A array → processing is skipped for this code and continues with 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_SkipProcessingCodeAlreadyPresent(["Start Step"]) E_SkipProcessingCodeAlreadyPresent(["End Step"]) N_SkipProcessingCodeAlreadyPresent_Node0{"The same disposition code is
already present in the S09A array"}:::decision N_SkipProcessingCodeAlreadyPresent_Node0_action["Processing is skipped for this code
and continues with the next
disposition code"]:::main N_SkipProcessingCodeAlreadyPresent_Node0 -- Yes --> N_SkipProcessingCodeAlreadyPresent_Node0_action N_SkipProcessingCodeAlreadyPresent_Node0_action --> E_SkipProcessingCodeAlreadyPresent S_SkipProcessingCodeAlreadyPresent --> N_SkipProcessingCodeAlreadyPresent_Node0 N_SkipProcessingCodeAlreadyPresent_Node0 -- No --> E_SkipProcessingCodeAlreadyPresent
File: GCX016E.cbl
GIVEN: A disposition code has been checked against the existing status array
WHEN: The same disposition code is already present in the S09A array
THEN:
  • Processing is skipped for this code
  • Continues with the next disposition code
βœ“ Consolidated Acceptance Criteria
  • The system processes the status information code for insertion → the disposition code is inserted into the S09A status array with appropriate sequence positioning
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_InsertStatusInformationCodeintoS09AArray(["Start Step"]) E_InsertStatusInformationCodeintoS09AArray(["End Step"]) N_InsertStatusInformationCodeintoS09AArray_Node0{"The system processes the status
information code for insertion"}:::decision N_InsertStatusInformationCodeintoS09AArray_Node0_action["The disposition code is inserted
into the S09A status array with
appropriate sequence positioning"]:::main N_InsertStatusInformationCodeintoS09AArray_Node0 -- Yes --> N_InsertStatusInformationCodeintoS09AArray_Node0_action N_InsertStatusInformationCodeintoS09AArray_Node0_action --> E_InsertStatusInformationCodeintoS09AArray S_InsertStatusInformationCodeintoS09AArray --> N_InsertStatusInformationCodeintoS09AArray_Node0 N_InsertStatusInformationCodeintoS09AArray_Node0 -- No --> E_InsertStatusInformationCodeintoS09AArray
File: GCX016E.cbl
GIVEN: A valid disposition code that doesn't already exist in the status array
WHEN: The system processes the status information code for insertion
THEN: The disposition code is inserted into the S09A status array with appropriate sequence positioning
βœ“ Consolidated Acceptance Criteria
  • The system performs logging operations for the status change → the status information addition is logged with relevant details 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_LogStatusInformationAddition(["Start Step"]) E_LogStatusInformationAddition(["End Step"]) N_LogStatusInformationAddition_Node0{"The system performs logging
operations for the status change"}:::decision N_LogStatusInformationAddition_Node0_action["The status information addition is
logged with relevant details for
audit trail purposes"]:::main N_LogStatusInformationAddition_Node0 -- Yes --> N_LogStatusInformationAddition_Node0_action N_LogStatusInformationAddition_Node0_action --> E_LogStatusInformationAddition S_LogStatusInformationAddition --> N_LogStatusInformationAddition_Node0 N_LogStatusInformationAddition_Node0 -- No --> E_LogStatusInformationAddition
File: GCX016E.cbl
GIVEN: A status information disposition code has been successfully processed and added
WHEN: The system performs logging operations for the status change
THEN: The status information addition is logged with relevant details for audit trail purposes
βœ“ Consolidated Acceptance Criteria
  • The system processes audit trail requirements → the status information change is preserved in the audit trail with complete context 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_PreserveStatusInformationforAuditTrail(["Start Step"]) E_PreserveStatusInformationforAuditTrail(["End Step"]) N_PreserveStatusInformationforAuditTrail_Node0{"The system processes audit trail
requirements"}:::decision N_PreserveStatusInformationforAuditTrail_Node0_action["The status information change is
preserved in the audit trail with
complete context for future
reference"]:::main N_PreserveStatusInformationforAuditTrail_Node0 -- Yes --> N_PreserveStatusInformationforAuditTrail_Node0_action N_PreserveStatusInformationforAuditTrail_Node0_action --> E_PreserveStatusInformationforAuditTrail S_PreserveStatusInformationforAuditTrail --> N_PreserveStatusInformationforAuditTrail_Node0 N_PreserveStatusInformationforAuditTrail_Node0 -- No --> E_PreserveStatusInformationforAuditTrail
File: GCX016E.cbl
GIVEN: Status information has been logged for a cargo disposition code change
WHEN: The system processes audit trail requirements
THEN: The status information change is preserved in the audit trail with complete context for future reference
βœ“ Consolidated Acceptance Criteria
  • The system generates notifications for the status information change → a Merlin notification is generated with complete status context information 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_GenerateMerlinNotificationwithStatusContext(["Start Step"]) E_GenerateMerlinNotificationwithStatusContext(["End Step"]) N_GenerateMerlinNotificationwithStatusContext_Node0{"The system generates notifications
for the status information change"}:::decision N_GenerateMerlinNotificationwithStatusContext_Node0_action["A Merlin notification is generated
with complete status context
information for relevant
stakeholders"]:::main N_GenerateMerlinNotificationwithStatusContext_Node0 -- Yes --> N_GenerateMerlinNotificationwithStatusContext_Node0_action N_GenerateMerlinNotificationwithStatusContext_Node0_action --> E_GenerateMerlinNotificationwithStatusContext S_GenerateMerlinNotificationwithStatusContext --> N_GenerateMerlinNotificationwithStatusContext_Node0 N_GenerateMerlinNotificationwithStatusContext_Node0 -- No --> E_GenerateMerlinNotificationwithStatusContext
File: GCX016E.cbl
GIVEN: Status information has been successfully processed and preserved in audit trail
WHEN: The system generates notifications for the status information change
THEN: A Merlin notification is generated with complete status context information for relevant stakeholders
βœ“ Consolidated Acceptance Criteria
  • Status preservation process is initiated → current status values are copied to corresponding audit 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_SaveCurrentStatustoAuditFields(["Start Step"]) E_SaveCurrentStatustoAuditFields(["End Step"]) N_SaveCurrentStatustoAuditFields_Node0{"Status preservation process is
initiated"}:::decision N_SaveCurrentStatustoAuditFields_Node0_action["Current status values are copied to
corresponding audit fields in the
cargo record"]:::main N_SaveCurrentStatustoAuditFields_Node0 -- Yes --> N_SaveCurrentStatustoAuditFields_Node0_action N_SaveCurrentStatustoAuditFields_Node0_action --> E_SaveCurrentStatustoAuditFields S_SaveCurrentStatustoAuditFields --> N_SaveCurrentStatustoAuditFields_Node0 N_SaveCurrentStatustoAuditFields_Node0 -- No --> E_SaveCurrentStatustoAuditFields
File: GCX016E.cbl
GIVEN: Current cargo status has been retrieved from the cargo record
WHEN: Status preservation process is initiated
THEN: Current status values are copied to corresponding audit fields in the cargo record
βœ“ Consolidated Acceptance Criteria
  • Release quantities are about to be modified → previous release quantities are stored in audit fields for historical 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_StorePreviousReleaseQuantities(["Start Step"]) E_StorePreviousReleaseQuantities(["End Step"]) N_StorePreviousReleaseQuantities_Node0{"Release quantities are about to be
modified"}:::decision N_StorePreviousReleaseQuantities_Node0_action["Previous release quantities are
stored in audit fields for
historical tracking"]:::main N_StorePreviousReleaseQuantities_Node0 -- Yes --> N_StorePreviousReleaseQuantities_Node0_action N_StorePreviousReleaseQuantities_Node0_action --> E_StorePreviousReleaseQuantities S_StorePreviousReleaseQuantities --> N_StorePreviousReleaseQuantities_Node0 N_StorePreviousReleaseQuantities_Node0 -- No --> E_StorePreviousReleaseQuantities
File: GCX016E.cbl
GIVEN: Cargo record contains current release quantity information
WHEN: Release quantities are about to be modified
THEN: Previous release quantities are stored in audit fields for historical tracking
βœ“ Consolidated Acceptance Criteria
  • Hold status is about to be changed → all current hold status flags are preserved in audit fields for comparison 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_PreserveHoldStatusFlags(["Start Step"]) E_PreserveHoldStatusFlags(["End Step"]) N_PreserveHoldStatusFlags_Node0{"Hold status is about to be changed"}:::decision N_PreserveHoldStatusFlags_Node0_action["All current hold status flags are
preserved in audit fields for
comparison purposes"]:::main N_PreserveHoldStatusFlags_Node0 -- Yes --> N_PreserveHoldStatusFlags_Node0_action N_PreserveHoldStatusFlags_Node0_action --> E_PreserveHoldStatusFlags S_PreserveHoldStatusFlags --> N_PreserveHoldStatusFlags_Node0 N_PreserveHoldStatusFlags_Node0 -- No --> E_PreserveHoldStatusFlags
File: GCX016E.cbl
GIVEN: Cargo record has current hold status flags set
WHEN: Hold status is about to be changed
THEN: All current hold status flags are preserved in audit fields for comparison purposes
βœ“ Consolidated Acceptance Criteria
  • Arrival or export status is about to be updated → current arrival and export status values including dates are saved to audit 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_SaveArrivalExportStatus(["Start Step"]) E_SaveArrivalExportStatus(["End Step"]) N_SaveArrivalExportStatus_Node0{"Arrival or export status is about
to be updated"}:::decision N_SaveArrivalExportStatus_Node0_action["Current arrival and export status
values including dates are saved to
audit fields"]:::main N_SaveArrivalExportStatus_Node0 -- Yes --> N_SaveArrivalExportStatus_Node0_action N_SaveArrivalExportStatus_Node0_action --> E_SaveArrivalExportStatus S_SaveArrivalExportStatus --> N_SaveArrivalExportStatus_Node0 N_SaveArrivalExportStatus_Node0 -- No --> E_SaveArrivalExportStatus
File: GCX016E.cbl
GIVEN: Cargo record contains arrival or export status information
WHEN: Arrival or export status is about to be updated
THEN:
  • Current arrival
  • Export status values including dates are saved to audit fields
βœ“ Consolidated Acceptance Criteria
  • Bond information is about to be modified → current bond information is stored in audit fields for historical 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_StoreBondInformation(["Start Step"]) E_StoreBondInformation(["End Step"]) N_StoreBondInformation_Node0{"Bond information is about to be
modified"}:::decision N_StoreBondInformation_Node0_action["Current bond information is stored
in audit fields for historical
reference"]:::main N_StoreBondInformation_Node0 -- Yes --> N_StoreBondInformation_Node0_action N_StoreBondInformation_Node0_action --> E_StoreBondInformation S_StoreBondInformation --> N_StoreBondInformation_Node0 N_StoreBondInformation_Node0 -- No --> E_StoreBondInformation
File: GCX016E.cbl
GIVEN: Cargo record has bond information including bond numbers and broker details
WHEN: Bond information is about to be modified
THEN: Current bond information is stored in audit fields for historical reference
βœ“ Consolidated Acceptance Criteria
  • Disposition codes are about to be processed or modified → current disposition code arrays are saved to audit fields maintaining sequence and occurrence 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_SaveDispositionCodeArrays(["Start Step"]) E_SaveDispositionCodeArrays(["End Step"]) N_SaveDispositionCodeArrays_Node0{"Disposition codes are about to be
processed or modified"}:::decision N_SaveDispositionCodeArrays_Node0_action["Current disposition code arrays are
saved to audit fields maintaining
sequence and occurrence information"]:::main N_SaveDispositionCodeArrays_Node0 -- Yes --> N_SaveDispositionCodeArrays_Node0_action N_SaveDispositionCodeArrays_Node0_action --> E_SaveDispositionCodeArrays S_SaveDispositionCodeArrays --> N_SaveDispositionCodeArrays_Node0 N_SaveDispositionCodeArrays_Node0 -- No --> E_SaveDispositionCodeArrays
File: GCX016E.cbl
GIVEN: Cargo record contains disposition code arrays with current status codes
WHEN: Disposition codes are about to be processed or modified
THEN:
  • Current disposition code arrays are saved to audit fields maintaining sequence
  • Occurrence information
βœ“ Consolidated Acceptance Criteria
  • Complete status preservation is required → a comprehensive status snapshot is created capturing all cargo status elements at the current point in 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_CreateStatusSnapshot(["Start Step"]) E_CreateStatusSnapshot(["End Step"]) N_CreateStatusSnapshot_Node0{"Complete status preservation is
required"}:::decision N_CreateStatusSnapshot_Node0_action["A comprehensive status snapshot is
created capturing all cargo status
elements at the current point in
time"]:::main N_CreateStatusSnapshot_Node0 -- Yes --> N_CreateStatusSnapshot_Node0_action N_CreateStatusSnapshot_Node0_action --> E_CreateStatusSnapshot S_CreateStatusSnapshot --> N_CreateStatusSnapshot_Node0 N_CreateStatusSnapshot_Node0 -- No --> E_CreateStatusSnapshot
File: GCX016E.cbl
GIVEN: All individual status components have been preserved in audit fields
WHEN: Complete status preservation is required
THEN: A comprehensive status snapshot is created capturing all cargo status elements at the current point in time
βœ“ Consolidated Acceptance Criteria
  • Audit trail entry needs to be finalized → the audit trail entry is marked with timestamp and processing context 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_MarkAuditTrailEntry(["Start Step"]) E_MarkAuditTrailEntry(["End Step"]) N_MarkAuditTrailEntry_Node0{"Audit trail entry needs to be
finalized"}:::decision N_MarkAuditTrailEntry_Node0_action["The audit trail entry is marked
with timestamp and processing
context for future reference"]:::main N_MarkAuditTrailEntry_Node0 -- Yes --> N_MarkAuditTrailEntry_Node0_action N_MarkAuditTrailEntry_Node0_action --> E_MarkAuditTrailEntry S_MarkAuditTrailEntry --> N_MarkAuditTrailEntry_Node0 N_MarkAuditTrailEntry_Node0 -- No --> E_MarkAuditTrailEntry
File: GCX016E.cbl
GIVEN: Status snapshot has been created with all preserved information
WHEN: Audit trail entry needs to be finalized
THEN:
  • The audit trail entry is marked with timestamp
  • Processing context for future reference
βœ“ Consolidated Acceptance Criteria
  • The cargo processing logic is executed and status arrays are updated → the system detects that a cargo status change has occurred and triggers status 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_CargoStatusChangeDetected(["Start Step"]) E_CargoStatusChangeDetected(["End Step"]) N_CargoStatusChangeDetected_Node0{"The cargo processing logic is
executed and status arrays are
updated"}:::decision N_CargoStatusChangeDetected_Node0_action["The system detects that a cargo
status change has occurred and
triggers status analysis"]:::main N_CargoStatusChangeDetected_Node0 -- Yes --> N_CargoStatusChangeDetected_Node0_action N_CargoStatusChangeDetected_Node0_action --> E_CargoStatusChangeDetected S_CargoStatusChangeDetected --> N_CargoStatusChangeDetected_Node0 N_CargoStatusChangeDetected_Node0 -- No --> E_CargoStatusChangeDetected
File: GCX016E.cbl
GIVEN: A cargo record exists in the system
WHEN:
  • The cargo processing logic is executed
  • Status arrays are updated
THEN:
  • The system detects that a cargo status change has occurred
  • Triggers status analysis
βœ“ Consolidated Acceptance Criteria
  • The system begins processing the status change → the previous cargo status and release information is saved for comparison 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_SavePreviousCargoStatus(["Start Step"]) E_SavePreviousCargoStatus(["End Step"]) N_SavePreviousCargoStatus_Node0{"The system begins processing the
status change"}:::decision N_SavePreviousCargoStatus_Node0_action["The previous cargo status and
release information is saved for
comparison analysis"]:::main N_SavePreviousCargoStatus_Node0 -- Yes --> N_SavePreviousCargoStatus_Node0_action N_SavePreviousCargoStatus_Node0_action --> E_SavePreviousCargoStatus S_SavePreviousCargoStatus --> N_SavePreviousCargoStatus_Node0 N_SavePreviousCargoStatus_Node0 -- No --> E_SavePreviousCargoStatus
File: GCX016E.cbl
GIVEN: A cargo status change is detected
WHEN: The system begins processing the status change
THEN:
  • The previous cargo status
  • Release information is saved for comparison analysis
βœ“ Consolidated Acceptance Criteria
  • The system processes the current cargo status arrays → the current cargo status and release information is analyzed and 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_AnalyzeCurrentStatusArrays(["Start Step"]) E_AnalyzeCurrentStatusArrays(["End Step"]) N_AnalyzeCurrentStatusArrays_Node0{"The system processes the current
cargo status arrays"}:::decision N_AnalyzeCurrentStatusArrays_Node0_action["The current cargo status and
release information is analyzed and
determined"]:::main N_AnalyzeCurrentStatusArrays_Node0 -- Yes --> N_AnalyzeCurrentStatusArrays_Node0_action N_AnalyzeCurrentStatusArrays_Node0_action --> E_AnalyzeCurrentStatusArrays S_AnalyzeCurrentStatusArrays --> N_AnalyzeCurrentStatusArrays_Node0 N_AnalyzeCurrentStatusArrays_Node0 -- No --> E_AnalyzeCurrentStatusArrays
File: GCX016E.cbl
GIVEN: Previous cargo status has been saved
WHEN: The system processes the current cargo status arrays
THEN:
  • The current cargo status
  • Release information is analyzed
  • Determined
βœ“ Consolidated Acceptance Criteria
  • The system compares the previous and current release status → the system determines whether the release status has changed or remained the same
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ReleaseStatusChanged(["Start Step"]) E_ReleaseStatusChanged(["End Step"]) N_ReleaseStatusChanged_Node0{"The system compares the previous
and current release status"}:::decision N_ReleaseStatusChanged_Node0_action["The system determines whether the
release status has changed or
remained the same"]:::main N_ReleaseStatusChanged_Node0 -- Yes --> N_ReleaseStatusChanged_Node0_action N_ReleaseStatusChanged_Node0_action --> E_ReleaseStatusChanged S_ReleaseStatusChanged --> N_ReleaseStatusChanged_Node0 N_ReleaseStatusChanged_Node0 -- No --> E_ReleaseStatusChanged
File: GCX016E.cbl
GIVEN: Previous cargo status is saved and current status is analyzed
WHEN:
  • The system compares the previous
  • Current release status
THEN: The system determines whether the release status has changed or remained the same
βœ“ Consolidated Acceptance Criteria
  • The system compares the specific release status values → the system identifies the exact nature of the 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_ComparePreviousvsCurrentReleaseStatus(["Start Step"]) E_ComparePreviousvsCurrentReleaseStatus(["End Step"]) N_ComparePreviousvsCurrentReleaseStatus_Node0{"The system compares the specific
release status values"}:::decision N_ComparePreviousvsCurrentReleaseStatus_Node0_action["The system identifies the exact
nature of the release status change"]:::main N_ComparePreviousvsCurrentReleaseStatus_Node0 -- Yes --> N_ComparePreviousvsCurrentReleaseStatus_Node0_action N_ComparePreviousvsCurrentReleaseStatus_Node0_action --> E_ComparePreviousvsCurrentReleaseStatus S_ComparePreviousvsCurrentReleaseStatus --> N_ComparePreviousvsCurrentReleaseStatus_Node0 N_ComparePreviousvsCurrentReleaseStatus_Node0 -- No --> E_ComparePreviousvsCurrentReleaseStatus
File: GCX016E.cbl
GIVEN: A release status change has been detected
WHEN: The system compares the specific release status values
THEN: The system identifies the exact nature of the release status change
βœ“ Consolidated Acceptance Criteria
  • If the previous release status → the system determines if the cargo was previously in a 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_WasPreviouslyReleased(["Start Step"]) E_WasPreviouslyReleased(["End Step"]) N_WasPreviouslyReleased_Node0{"The system evaluates the previous
release status"}:::decision N_WasPreviouslyReleased_Node0_action["The system determines if the cargo
was previously in a released state"]:::main N_WasPreviouslyReleased_Node0 -- Yes --> N_WasPreviouslyReleased_Node0_action N_WasPreviouslyReleased_Node0_action --> E_WasPreviouslyReleased S_WasPreviouslyReleased --> N_WasPreviouslyReleased_Node0 N_WasPreviouslyReleased_Node0 -- No --> E_WasPreviouslyReleased
File: GCX016E.cbl
GIVEN: Release status comparison is performed
WHEN: The system evaluates the previous release status
THEN: The system determines if the cargo was previously in a released state
βœ“ Consolidated Acceptance Criteria
  • If the current release status → the system determines if the cargo is currently in a 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_IsCurrentlyReleased(["Start Step"]) E_IsCurrentlyReleased(["End Step"]) N_IsCurrentlyReleased_Node0{"The system evaluates the current
release status"}:::decision N_IsCurrentlyReleased_Node0_action["The system determines if the cargo
is currently in a released state"]:::main N_IsCurrentlyReleased_Node0 -- Yes --> N_IsCurrentlyReleased_Node0_action N_IsCurrentlyReleased_Node0_action --> E_IsCurrentlyReleased S_IsCurrentlyReleased --> N_IsCurrentlyReleased_Node0 N_IsCurrentlyReleased_Node0 -- No --> E_IsCurrentlyReleased
File: GCX016E.cbl
GIVEN: The cargo was previously released
WHEN: The system evaluates the current release status
THEN: The system determines if the cargo is currently in a released state
βœ“ Consolidated Acceptance Criteria
  • The system processes the cancellation event → the system generates appropriate business notifications for the release 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_GenerateReleaseCancellationNotification(["Start Step"]) E_GenerateReleaseCancellationNotification(["End Step"]) N_GenerateReleaseCancellationNotification_Node0{"The system processes the
cancellation event"}:::decision N_GenerateReleaseCancellationNotification_Node0_action["The system generates appropriate
business notifications for the
release cancellation"]:::main N_GenerateReleaseCancellationNotification_Node0 -- Yes --> N_GenerateReleaseCancellationNotification_Node0_action N_GenerateReleaseCancellationNotification_Node0_action --> E_GenerateReleaseCancellationNotification S_GenerateReleaseCancellationNotification --> N_GenerateReleaseCancellationNotification_Node0 N_GenerateReleaseCancellationNotification_Node0 -- No --> E_GenerateReleaseCancellationNotification
File: GCX016E.cbl
GIVEN: A release cancellation has been detected
WHEN: The system processes the cancellation event
THEN: The system generates appropriate business notifications for the release cancellation
βœ“ Consolidated Acceptance Criteria
  • The system formats the cancellation message → the message includes cargo identification, cancellation details, and relevant 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_FormatCancellationMessageDetails(["Start Step"]) E_FormatCancellationMessageDetails(["End Step"]) N_FormatCancellationMessageDetails_Node0{"The system formats the cancellation
message"}:::decision N_FormatCancellationMessageDetails_Node0_action["The message includes cargo
identification, cancellation
details, and relevant transaction
information"]:::main N_FormatCancellationMessageDetails_Node0 -- Yes --> N_FormatCancellationMessageDetails_Node0_action N_FormatCancellationMessageDetails_Node0_action --> E_FormatCancellationMessageDetails S_FormatCancellationMessageDetails --> N_FormatCancellationMessageDetails_Node0 N_FormatCancellationMessageDetails_Node0 -- No --> E_FormatCancellationMessageDetails
File: GCX016E.cbl
GIVEN: A release cancellation notification is being generated
WHEN: The system formats the cancellation message
THEN: The message includes cargo identification, cancellation details, and relevant transaction information
βœ“ Consolidated Acceptance Criteria
  • The system processes disposition code information → the message includes the disposition code that triggered the release 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_IncludeDispositionCodeDetails(["Start Step"]) E_IncludeDispositionCodeDetails(["End Step"]) N_IncludeDispositionCodeDetails_Node0{"The system processes disposition
code information"}:::decision N_IncludeDispositionCodeDetails_Node0_action["The message includes the
disposition code that triggered the
release cancellation"]:::main N_IncludeDispositionCodeDetails_Node0 -- Yes --> N_IncludeDispositionCodeDetails_Node0_action N_IncludeDispositionCodeDetails_Node0_action --> E_IncludeDispositionCodeDetails S_IncludeDispositionCodeDetails --> N_IncludeDispositionCodeDetails_Node0 N_IncludeDispositionCodeDetails_Node0 -- No --> E_IncludeDispositionCodeDetails
File: GCX016E.cbl
GIVEN: Equipment information is included in the cancellation message
WHEN: The system processes disposition code information
THEN: The message includes the disposition code that triggered the release cancellation
βœ“ Consolidated Acceptance Criteria
  • The system processes the message delivery → the notification is delivered to the appropriate business users 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_SendtoBusinessUsers(["Start Step"]) E_SendtoBusinessUsers(["End Step"]) N_SendtoBusinessUsers_Node0{"The system processes the message
delivery"}:::decision N_SendtoBusinessUsers_Node0_action["The notification is delivered to
the appropriate business users and
stakeholders"]:::main N_SendtoBusinessUsers_Node0 -- Yes --> N_SendtoBusinessUsers_Node0_action N_SendtoBusinessUsers_Node0_action --> E_SendtoBusinessUsers S_SendtoBusinessUsers --> N_SendtoBusinessUsers_Node0 N_SendtoBusinessUsers_Node0 -- No --> E_SendtoBusinessUsers
File: GCX016E.cbl
GIVEN: The cancellation message is routed to Merlin messaging system
WHEN: The system processes the message delivery
THEN:
  • The notification is delivered to the appropriate business users
  • Stakeholders
βœ“ Consolidated Acceptance Criteria
  • The system processes the logging requirement → the release cancellation event is logged with relevant details 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_LogCancellationEvent(["Start Step"]) E_LogCancellationEvent(["End Step"]) N_LogCancellationEvent_Node0{"The system processes the logging
requirement"}:::decision N_LogCancellationEvent_Node0_action["The release cancellation event is
logged with relevant details for
audit and tracking purposes"]:::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: GCX016E.cbl
GIVEN: The cancellation notification is sent to business users
WHEN: The system processes the logging requirement
THEN:
  • The release cancellation event is logged with relevant details for audit
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • No release cancellation is detected → the system continues with normal cargo processing without generating 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_NoCancellationDetected(["Start Step"]) E_NoCancellationDetected(["End Step"]) N_NoCancellationDetected_Node0{"No release cancellation is detected"}:::decision N_NoCancellationDetected_Node0_action["The system continues with normal
cargo processing without generating
cancellation notifications"]:::main N_NoCancellationDetected_Node0 -- Yes --> N_NoCancellationDetected_Node0_action N_NoCancellationDetected_Node0_action --> E_NoCancellationDetected S_NoCancellationDetected --> N_NoCancellationDetected_Node0 N_NoCancellationDetected_Node0 -- No --> E_NoCancellationDetected
File: GCX016E.cbl
GIVEN: The cargo status change analysis is complete
WHEN: No release cancellation is detected
THEN: The system continues with normal cargo processing without generating cancellation notifications
βœ“ Consolidated Acceptance Criteria
  • Status evaluation process starts → all S09A status array entries are loaded 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_RetrieveS09AStatusArrays(["Start Step"]) E_RetrieveS09AStatusArrays(["End Step"]) N_RetrieveS09AStatusArrays_Node0{"Status evaluation process starts"}:::decision N_RetrieveS09AStatusArrays_Node0_action["All S09A status array entries are
loaded for analysis"]:::main N_RetrieveS09AStatusArrays_Node0 -- Yes --> N_RetrieveS09AStatusArrays_Node0_action N_RetrieveS09AStatusArrays_Node0_action --> E_RetrieveS09AStatusArrays S_RetrieveS09AStatusArrays --> N_RetrieveS09AStatusArrays_Node0 N_RetrieveS09AStatusArrays_Node0 -- No --> E_RetrieveS09AStatusArrays
File: GCX016E.cbl
GIVEN: A cargo record exists with associated disposition codes
WHEN: Status evaluation process starts
THEN: All S09A status array entries are loaded for analysis
βœ“ Consolidated Acceptance Criteria
  • The disposition code indicates a hold condition (border hold, destination hold, FDA hold) → set the 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_HoldDispositionCode(["Start Step"]) E_HoldDispositionCode(["End Step"]) N_HoldDispositionCode_Node0{"The disposition code indicates a
hold condition border hold,
destination hold, FDA hold"}:::decision N_HoldDispositionCode_Node0_action["Set the hold status flag to true"]:::main N_HoldDispositionCode_Node0 -- Yes --> N_HoldDispositionCode_Node0_action N_HoldDispositionCode_Node0_action --> E_HoldDispositionCode S_HoldDispositionCode --> N_HoldDispositionCode_Node0 N_HoldDispositionCode_Node0 -- No --> E_HoldDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated
WHEN: The disposition code indicates a hold condition (border hold, destination hold, FDA hold)
THEN: Set the hold status flag to true
βœ“ Consolidated Acceptance Criteria
  • Processing the disposition code → the hold status flag is set to active
  • The release eligibility evaluation completes → the hold status 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_SetHoldStatusFlag(["Start Step"]) E_SetHoldStatusFlag(["End Step"]) N_SetHoldStatusFlag_Node0{"Processing the disposition code"}:::decision N_SetHoldStatusFlag_Node0_action["The hold status flag is set to
active"]:::main N_SetHoldStatusFlag_Node0 -- Yes --> N_SetHoldStatusFlag_Node0_action N_SetHoldStatusFlag_Node0_action --> E_SetHoldStatusFlag S_SetHoldStatusFlag --> N_SetHoldStatusFlag_Node0 N_SetHoldStatusFlag_Node1{"The release eligibility evaluation
completes"}:::decision N_SetHoldStatusFlag_Node1_action["The hold status flag is set for the
cargo record"]:::main N_SetHoldStatusFlag_Node1 -- Yes --> N_SetHoldStatusFlag_Node1_action N_SetHoldStatusFlag_Node1_action --> E_SetHoldStatusFlag N_SetHoldStatusFlag_Node0 -- No --> N_SetHoldStatusFlag_Node1 N_SetHoldStatusFlag_Node1 -- No --> E_SetHoldStatusFlag
File: GCX016E.cbl
GIVEN: A hold disposition code has been identified
WHEN: Processing the disposition code
THEN: The hold status flag is set to active
File: GCX016E.cbl
GIVEN: A cargo record has one or more active hold conditions
WHEN: The release eligibility evaluation completes
THEN: The hold status flag is set for the cargo record
βœ“ Consolidated Acceptance Criteria
  • The disposition code indicates a release condition (manual release, auto release) → set the release 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_ReleaseDispositionCode(["Start Step"]) E_ReleaseDispositionCode(["End Step"]) N_ReleaseDispositionCode_Node0{"The disposition code indicates a
release condition manual release,
auto release"}:::decision N_ReleaseDispositionCode_Node0_action["Set the release status flag to true"]:::main N_ReleaseDispositionCode_Node0 -- Yes --> N_ReleaseDispositionCode_Node0_action N_ReleaseDispositionCode_Node0_action --> E_ReleaseDispositionCode S_ReleaseDispositionCode --> N_ReleaseDispositionCode_Node0 N_ReleaseDispositionCode_Node0 -- No --> E_ReleaseDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated
WHEN: The disposition code indicates a release condition (manual release, auto release)
THEN: Set the release status flag to true
βœ“ Consolidated Acceptance Criteria
  • Processing the disposition code → the release status flag is set to 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_SetReleaseStatusFlag(["Start Step"]) E_SetReleaseStatusFlag(["End Step"]) N_SetReleaseStatusFlag_Node0{"Processing the disposition code"}:::decision N_SetReleaseStatusFlag_Node0_action["The release status flag is set to
active"]:::main N_SetReleaseStatusFlag_Node0 -- Yes --> N_SetReleaseStatusFlag_Node0_action N_SetReleaseStatusFlag_Node0_action --> E_SetReleaseStatusFlag S_SetReleaseStatusFlag --> N_SetReleaseStatusFlag_Node0 N_SetReleaseStatusFlag_Node0 -- No --> E_SetReleaseStatusFlag
File: GCX016E.cbl
GIVEN: A release disposition code has been identified
WHEN: Processing the disposition code
THEN: The release status flag is set to active
βœ“ Consolidated Acceptance Criteria
  • The disposition code indicates a proceed condition → set the proceed 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_ProceedDispositionCode(["Start Step"]) E_ProceedDispositionCode(["End Step"]) N_ProceedDispositionCode_Node0{"The disposition code indicates a
proceed condition"}:::decision N_ProceedDispositionCode_Node0_action["Set the proceed status flag to true"]:::main N_ProceedDispositionCode_Node0 -- Yes --> N_ProceedDispositionCode_Node0_action N_ProceedDispositionCode_Node0_action --> E_ProceedDispositionCode S_ProceedDispositionCode --> N_ProceedDispositionCode_Node0 N_ProceedDispositionCode_Node0 -- No --> E_ProceedDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated
WHEN: The disposition code indicates a proceed condition
THEN: Set the proceed status flag to true
βœ“ Consolidated Acceptance Criteria
  • Processing the disposition code → the proceed status flag is set to 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_SetProceedStatusFlag(["Start Step"]) E_SetProceedStatusFlag(["End Step"]) N_SetProceedStatusFlag_Node0{"Processing the disposition code"}:::decision N_SetProceedStatusFlag_Node0_action["The proceed status flag is set to
active"]:::main N_SetProceedStatusFlag_Node0 -- Yes --> N_SetProceedStatusFlag_Node0_action N_SetProceedStatusFlag_Node0_action --> E_SetProceedStatusFlag S_SetProceedStatusFlag --> N_SetProceedStatusFlag_Node0 N_SetProceedStatusFlag_Node0 -- No --> E_SetProceedStatusFlag
File: GCX016E.cbl
GIVEN: A proceed disposition code has been identified
WHEN: Processing the disposition code
THEN: The proceed status flag is set to active
βœ“ Consolidated Acceptance Criteria
  • Processing the disposition code → the arrival status flag is set to 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_SetArrivalStatusFlag(["Start Step"]) E_SetArrivalStatusFlag(["End Step"]) N_SetArrivalStatusFlag_Node0{"Processing the disposition code"}:::decision N_SetArrivalStatusFlag_Node0_action["The arrival status flag is set to
active"]:::main N_SetArrivalStatusFlag_Node0 -- Yes --> N_SetArrivalStatusFlag_Node0_action N_SetArrivalStatusFlag_Node0_action --> E_SetArrivalStatusFlag S_SetArrivalStatusFlag --> N_SetArrivalStatusFlag_Node0 N_SetArrivalStatusFlag_Node0 -- No --> E_SetArrivalStatusFlag
File: GCX016E.cbl
GIVEN: An arrival disposition code has been identified
WHEN: Processing the disposition code
THEN: The arrival status flag is set to active
βœ“ Consolidated Acceptance Criteria
  • The disposition code indicates an export condition → set the export 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_ExportDispositionCode(["Start Step"]) E_ExportDispositionCode(["End Step"]) N_ExportDispositionCode_Node0{"The disposition code indicates an
export condition"}:::decision N_ExportDispositionCode_Node0_action["Set the export status flag to true"]:::main N_ExportDispositionCode_Node0 -- Yes --> N_ExportDispositionCode_Node0_action N_ExportDispositionCode_Node0_action --> E_ExportDispositionCode S_ExportDispositionCode --> N_ExportDispositionCode_Node0 N_ExportDispositionCode_Node0 -- No --> E_ExportDispositionCode
File: GCX016E.cbl
GIVEN: A disposition code is being evaluated
WHEN: The disposition code indicates an export condition
THEN: Set the export status flag to true
βœ“ Consolidated Acceptance Criteria
  • Determining the final cargo status → analyze the combination of status flags according to business priority 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_AnalyzeCombinedStatusFlags(["Start Step"]) E_AnalyzeCombinedStatusFlags(["End Step"]) N_AnalyzeCombinedStatusFlags_Node0{"Determining the final cargo status"}:::decision N_AnalyzeCombinedStatusFlags_Node0_action["Analyze the combination of status
flags according to business priority
hierarchy"]:::main N_AnalyzeCombinedStatusFlags_Node0 -- Yes --> N_AnalyzeCombinedStatusFlags_Node0_action N_AnalyzeCombinedStatusFlags_Node0_action --> E_AnalyzeCombinedStatusFlags S_AnalyzeCombinedStatusFlags --> N_AnalyzeCombinedStatusFlags_Node0 N_AnalyzeCombinedStatusFlags_Node0 -- No --> E_AnalyzeCombinedStatusFlags
File: GCX016E.cbl
GIVEN: All disposition codes have been processed and status flags are set
WHEN: Determining the final cargo status
THEN: Analyze the combination of status flags according to business priority hierarchy
βœ“ Consolidated Acceptance Criteria
  • The hold status flag is active → proceed to check if release status overrides 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_HoldStatusActive(["Start Step"]) E_HoldStatusActive(["End Step"]) N_HoldStatusActive_Node0{"The hold status flag is active"}:::decision N_HoldStatusActive_Node0_action["Proceed to check if release status
overrides the hold"]:::main N_HoldStatusActive_Node0 -- Yes --> N_HoldStatusActive_Node0_action N_HoldStatusActive_Node0_action --> E_HoldStatusActive S_HoldStatusActive --> N_HoldStatusActive_Node0 N_HoldStatusActive_Node0 -- No --> E_HoldStatusActive
File: GCX016E.cbl
GIVEN: Status flags have been analyzed
WHEN: The hold status flag is active
THEN: Proceed to check if release status overrides the hold
βœ“ Consolidated Acceptance Criteria
  • Release status is also active → check for manual release to determine 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_ReleaseStatusActive(["Start Step"]) E_ReleaseStatusActive(["End Step"]) N_ReleaseStatusActive_Node0{"Release status is also active"}:::decision N_ReleaseStatusActive_Node0_action["Check for manual release to
determine final status"]:::main N_ReleaseStatusActive_Node0 -- Yes --> N_ReleaseStatusActive_Node0_action N_ReleaseStatusActive_Node0_action --> E_ReleaseStatusActive S_ReleaseStatusActive --> N_ReleaseStatusActive_Node0 N_ReleaseStatusActive_Node0 -- No --> E_ReleaseStatusActive
File: GCX016E.cbl
GIVEN: Hold status is active
WHEN: Release status is also active
THEN: Check for manual release to determine final status
βœ“ Consolidated Acceptance Criteria
  • Proceed status flag is active → check for in-bond entry 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_ProceedStatusActive(["Start Step"]) E_ProceedStatusActive(["End Step"]) N_ProceedStatusActive_Node0{"Proceed status flag is active"}:::decision N_ProceedStatusActive_Node0_action["Check for in-bond entry conditions"]:::main N_ProceedStatusActive_Node0 -- Yes --> N_ProceedStatusActive_Node0_action N_ProceedStatusActive_Node0_action --> E_ProceedStatusActive S_ProceedStatusActive --> N_ProceedStatusActive_Node0 N_ProceedStatusActive_Node0 -- No --> E_ProceedStatusActive
File: GCX016E.cbl
GIVEN: No hold status is active
WHEN: Proceed status flag is active
THEN: Check for in-bond entry conditions
βœ“ Consolidated Acceptance Criteria
  • In-bond entry information is present and valid → set final status to 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_InBondEntryPresent(["Start Step"]) E_InBondEntryPresent(["End Step"]) N_InBondEntryPresent_Node0{"In-bond entry information is
present and valid"}:::decision N_InBondEntryPresent_Node0_action["Set final status to PROCEED"]:::main N_InBondEntryPresent_Node0 -- Yes --> N_InBondEntryPresent_Node0_action N_InBondEntryPresent_Node0_action --> E_InBondEntryPresent S_InBondEntryPresent --> N_InBondEntryPresent_Node0 N_InBondEntryPresent_Node0 -- No --> E_InBondEntryPresent
File: GCX016E.cbl
GIVEN: Proceed status is active
WHEN:
  • In-bond entry information is present
  • Valid
THEN: Set final status to PROCEED
βœ“ Consolidated Acceptance Criteria
  • Arrival status flag is active → set final status to 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_ArrivalStatusActive(["Start Step"]) E_ArrivalStatusActive(["End Step"]) N_ArrivalStatusActive_Node0{"Arrival status flag is active"}:::decision N_ArrivalStatusActive_Node0_action["Set final status to ARRIVED"]:::main N_ArrivalStatusActive_Node0 -- Yes --> N_ArrivalStatusActive_Node0_action N_ArrivalStatusActive_Node0_action --> E_ArrivalStatusActive S_ArrivalStatusActive --> N_ArrivalStatusActive_Node0 N_ArrivalStatusActive_Node0 -- No --> E_ArrivalStatusActive
File: GCX016E.cbl
GIVEN: No hold or proceed status conditions are active
WHEN: Arrival status flag is active
THEN: Set final status to ARRIVED
βœ“ Consolidated Acceptance Criteria
  • Export status flag is active → set final status to EXPORTED
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExportStatusActive(["Start Step"]) E_ExportStatusActive(["End Step"]) N_ExportStatusActive_Node0{"Export status flag is active"}:::decision N_ExportStatusActive_Node0_action["Set final status to EXPORTED"]:::main N_ExportStatusActive_Node0 -- Yes --> N_ExportStatusActive_Node0_action N_ExportStatusActive_Node0_action --> E_ExportStatusActive S_ExportStatusActive --> N_ExportStatusActive_Node0 N_ExportStatusActive_Node0 -- No --> E_ExportStatusActive
File: GCX016E.cbl
GIVEN: No hold, proceed, or arrival status conditions are active
WHEN: Export status flag is active
THEN: Set final status to EXPORTED
βœ“ Consolidated Acceptance Criteria
  • If the update results → the system determines if updates were successful based on completion codes and data 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_StatusUpdateSuccessful(["Start Step"]) E_StatusUpdateSuccessful(["End Step"]) N_StatusUpdateSuccessful_Node0{"The system evaluates the update
results"}:::decision N_StatusUpdateSuccessful_Node0_action["The system determines if updates
were successful based on completion
codes and data validation"]:::main N_StatusUpdateSuccessful_Node0 -- Yes --> N_StatusUpdateSuccessful_Node0_action N_StatusUpdateSuccessful_Node0_action --> E_StatusUpdateSuccessful S_StatusUpdateSuccessful --> N_StatusUpdateSuccessful_Node0 N_StatusUpdateSuccessful_Node0 -- No --> E_StatusUpdateSuccessful
File: GCX016E.cbl
GIVEN: Cargo status updates have been attempted
WHEN: The system evaluates the update results
THEN:
  • The system determines if updates were successful based on completion codes
  • Data validation
βœ“ Consolidated Acceptance Criteria
  • The system confirms successful update validation → the updated cargo status is maintained 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_MaintainUpdatedStatus(["Start Step"]) E_MaintainUpdatedStatus(["End Step"]) N_MaintainUpdatedStatus_Node0{"The system confirms successful
update validation"}:::decision N_MaintainUpdatedStatus_Node0_action["The updated cargo status is
maintained and processing continues
normally"]:::main N_MaintainUpdatedStatus_Node0 -- Yes --> N_MaintainUpdatedStatus_Node0_action N_MaintainUpdatedStatus_Node0_action --> E_MaintainUpdatedStatus S_MaintainUpdatedStatus --> N_MaintainUpdatedStatus_Node0 N_MaintainUpdatedStatus_Node0 -- No --> E_MaintainUpdatedStatus
File: GCX016E.cbl
GIVEN: Cargo status updates completed successfully
WHEN: The system confirms successful update validation
THEN:
  • The updated cargo status is maintained
  • Processing continues normally
βœ“ Consolidated Acceptance Criteria
  • An error or failure occurs during the update process → the system detects the error condition and initiates 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_ErrorDetectedDuringUpdate(["Start Step"]) E_ErrorDetectedDuringUpdate(["End Step"]) N_ErrorDetectedDuringUpdate_Node0{"An error or failure occurs during
the update process"}:::decision N_ErrorDetectedDuringUpdate_Node0_action["The system detects the error
condition and initiates error
handling procedures"]:::exclusion N_ErrorDetectedDuringUpdate_Node0 -- Yes -->|Alternative| N_ErrorDetectedDuringUpdate_Node0_action N_ErrorDetectedDuringUpdate_Node0_action --> E_ErrorDetectedDuringUpdate S_ErrorDetectedDuringUpdate --> N_ErrorDetectedDuringUpdate_Node0 N_ErrorDetectedDuringUpdate_Node0 -- No --> E_ErrorDetectedDuringUpdate
File: GCX016E.cbl
GIVEN: Cargo status updates are in progress
WHEN: An error or failure occurs during the update process
THEN:
  • The system detects the error condition
  • Initiates error handling procedures
βœ“ Consolidated Acceptance Criteria
  • The system performs rollback operations → all status changes made during the failed update are reversed and data consistency 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_RollbackStatusChanges(["Start Step"]) E_RollbackStatusChanges(["End Step"]) N_RollbackStatusChanges_Node0{"The system performs rollback
operations"}:::decision N_RollbackStatusChanges_Node0_action["All status changes made during the
failed update are reversed and data
consistency is maintained"]:::main N_RollbackStatusChanges_Node0 -- Yes --> N_RollbackStatusChanges_Node0_action N_RollbackStatusChanges_Node0_action --> E_RollbackStatusChanges S_RollbackStatusChanges --> N_RollbackStatusChanges_Node0 N_RollbackStatusChanges_Node0 -- No --> E_RollbackStatusChanges
File: GCX016E.cbl
GIVEN: Previous cargo status has been restored from backup
WHEN: The system performs rollback operations
THEN:
  • All status changes made during the failed update are reversed
  • Data consistency is maintained
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the restoration process → a status restoration event is logged with timestamp, cargo identifier, and restoration 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_LogStatusRestorationEvent(["Start Step"]) E_LogStatusRestorationEvent(["End Step"]) N_LogStatusRestorationEvent_Node0{"The system finalizes the
restoration process"}:::decision N_LogStatusRestorationEvent_Node0_action["A status restoration event is
logged with timestamp, cargo
identifier, and restoration details"]:::main N_LogStatusRestorationEvent_Node0 -- Yes --> N_LogStatusRestorationEvent_Node0_action N_LogStatusRestorationEvent_Node0_action --> E_LogStatusRestorationEvent S_LogStatusRestorationEvent --> N_LogStatusRestorationEvent_Node0 N_LogStatusRestorationEvent_Node0 -- No --> E_LogStatusRestorationEvent
File: GCX016E.cbl
GIVEN: Status rollback operations have been completed
WHEN: The system finalizes the restoration process
THEN: A status restoration event is logged with timestamp, cargo identifier, and restoration details
βœ“ Consolidated Acceptance Criteria
  • The calculated age value needs validation → the system should verify that the age calculation is valid and within acceptable ranges
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateAgeCalculation(["Start Step"]) E_ValidateAgeCalculation(["End Step"]) N_ValidateAgeCalculation_Node0{"The calculated age value needs
validation"}:::decision N_ValidateAgeCalculation_Node0_action["The system should verify that the
age calculation is valid and within
acceptable ranges"]:::main N_ValidateAgeCalculation_Node0 -- Yes --> N_ValidateAgeCalculation_Node0_action N_ValidateAgeCalculation_Node0_action --> E_ValidateAgeCalculation S_ValidateAgeCalculation --> N_ValidateAgeCalculation_Node0 N_ValidateAgeCalculation_Node0 -- No --> E_ValidateAgeCalculation
File: GCX016E.cbl
GIVEN: A cargo age has been calculated from bond start date
WHEN: The calculated age value needs validation
THEN:
  • The system should verify that the age calculation is valid
  • Within acceptable ranges
βœ“ Consolidated Acceptance Criteria
  • A default age value is needed → the system should set a predefined default age value 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_SetDefaultAgeValue(["Start Step"]) E_SetDefaultAgeValue(["End Step"]) N_SetDefaultAgeValue_Node0{"A default age value is needed"}:::decision N_SetDefaultAgeValue_Node0_action["The system should set a predefined
default age value for the cargo"]:::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: GCX016E.cbl
GIVEN: The cargo age calculation has failed validation OR produced an invalid result
WHEN: A default age value is needed
THEN: The system should set a predefined default age value for the cargo
βœ“ Consolidated Acceptance Criteria
  • The destination index has been cleared → the bond start date is reset to 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_ResetBondStartDate(["Start Step"]) E_ResetBondStartDate(["End Step"]) N_ResetBondStartDate_Node0{"The destination index has been
cleared"}:::decision N_ResetBondStartDate_Node0_action["The bond start date is reset to
zeros"]:::main N_ResetBondStartDate_Node0 -- Yes --> N_ResetBondStartDate_Node0_action N_ResetBondStartDate_Node0_action --> E_ResetBondStartDate S_ResetBondStartDate --> N_ResetBondStartDate_Node0 N_ResetBondStartDate_Node0 -- No --> E_ResetBondStartDate
File: GCX016E.cbl
GIVEN: A cargo is being processed for export
WHEN: The destination index has been cleared
THEN: The bond start date is reset to zeros
βœ“ Consolidated Acceptance Criteria
  • The bond start date has been reset → the export flag is set to 'Y' to indicate export 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_UpdateExportFlag(["Start Step"]) E_UpdateExportFlag(["End Step"]) N_UpdateExportFlag_Node0{"The bond start date has been reset"}:::decision N_UpdateExportFlag_Node0_action["The export flag is set to Y to
indicate export status"]:::main N_UpdateExportFlag_Node0 -- Yes --> N_UpdateExportFlag_Node0_action N_UpdateExportFlag_Node0_action --> E_UpdateExportFlag S_UpdateExportFlag --> N_UpdateExportFlag_Node0 N_UpdateExportFlag_Node0 -- No --> E_UpdateExportFlag
File: GCX016E.cbl
GIVEN: A cargo is undergoing export processing
WHEN: The bond start date has been reset
THEN: The export flag is set to 'Y' to indicate export status
βœ“ Consolidated Acceptance Criteria
  • Export location validation is successful → the cargo export status is set to 'EXPORT' and marked as 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_SetExportStatustoActive(["Start Step"]) E_SetExportStatustoActive(["End Step"]) N_SetExportStatustoActive_Node0{"Export location validation is
successful"}:::decision N_SetExportStatustoActive_Node0_action["The cargo export status is set to
EXPORT and marked as active"]:::main N_SetExportStatustoActive_Node0 -- Yes --> N_SetExportStatustoActive_Node0_action N_SetExportStatustoActive_Node0_action --> E_SetExportStatustoActive S_SetExportStatustoActive --> N_SetExportStatustoActive_Node0 N_SetExportStatustoActive_Node0 -- No --> E_SetExportStatustoActive
File: GCX016E.cbl
GIVEN: A cargo has a valid export location
WHEN: Export location validation is successful
THEN: The cargo export status is set to 'EXPORT' and marked as active
βœ“ Consolidated Acceptance Criteria
  • An error message has been generated → the cargo retains its previous status and no export 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_MaintainPreviousStatus(["Start Step"]) E_MaintainPreviousStatus(["End Step"]) N_MaintainPreviousStatus_Node0{"An error message has been generated"}:::decision N_MaintainPreviousStatus_Node0_action["The cargo retains its previous
status and no export changes are
applied"]:::exclusion N_MaintainPreviousStatus_Node0 -- Yes -->|Alternative| N_MaintainPreviousStatus_Node0_action N_MaintainPreviousStatus_Node0_action --> E_MaintainPreviousStatus S_MaintainPreviousStatus --> N_MaintainPreviousStatus_Node0 N_MaintainPreviousStatus_Node0 -- No --> E_MaintainPreviousStatus
File: GCX016E.cbl
GIVEN: Export processing has encountered an error
WHEN: An error message has been generated
THEN:
  • The cargo retains its previous status
  • No export changes are applied
βœ“ Consolidated Acceptance Criteria
  • The system needs to restore bond information → the system retrieves the previous bond data 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_RetrievePreviousBondData(["Start Step"]) E_RetrievePreviousBondData(["End Step"]) N_RetrievePreviousBondData_Node0{"The system needs to restore bond
information"}:::decision N_RetrievePreviousBondData_Node0_action["The system retrieves the previous
bond data from the cargo record"]:::main N_RetrievePreviousBondData_Node0 -- Yes --> N_RetrievePreviousBondData_Node0_action N_RetrievePreviousBondData_Node0_action --> E_RetrievePreviousBondData S_RetrievePreviousBondData --> N_RetrievePreviousBondData_Node0 N_RetrievePreviousBondData_Node0 -- No --> E_RetrievePreviousBondData
File: GCX016E.cbl
GIVEN: Bond information is available for the cargo
WHEN: The system needs to restore bond information
THEN: The system retrieves the previous bond data from the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system begins bond restoration → the system clears the current destination index 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_ClearCurrentDestinationIndex(["Start Step"]) E_ClearCurrentDestinationIndex(["End Step"]) N_ClearCurrentDestinationIndex_Node0{"The system begins bond restoration"}:::decision N_ClearCurrentDestinationIndex_Node0_action["The system clears the current
destination index field"]:::main N_ClearCurrentDestinationIndex_Node0 -- Yes --> N_ClearCurrentDestinationIndex_Node0_action N_ClearCurrentDestinationIndex_Node0_action --> E_ClearCurrentDestinationIndex S_ClearCurrentDestinationIndex --> N_ClearCurrentDestinationIndex_Node0 N_ClearCurrentDestinationIndex_Node0 -- No --> E_ClearCurrentDestinationIndex
File: GCX016E.cbl
GIVEN: Previous bond data has been retrieved
WHEN: The system begins bond restoration
THEN: The system clears the current destination index field
βœ“ Consolidated Acceptance Criteria
  • The system processes bond restoration → the system restores the bond start date from previous bond 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_RestoreBondStartDate(["Start Step"]) E_RestoreBondStartDate(["End Step"]) N_RestoreBondStartDate_Node0{"The system processes bond
restoration"}:::decision N_RestoreBondStartDate_Node0_action["The system restores the bond start
date from previous bond data"]:::main N_RestoreBondStartDate_Node0 -- Yes --> N_RestoreBondStartDate_Node0_action N_RestoreBondStartDate_Node0_action --> E_RestoreBondStartDate S_RestoreBondStartDate --> N_RestoreBondStartDate_Node0 N_RestoreBondStartDate_Node0 -- No --> E_RestoreBondStartDate
File: GCX016E.cbl
GIVEN: The destination index has been cleared
WHEN: The system processes bond restoration
THEN: The system restores the bond start date from previous bond data
βœ“ Consolidated Acceptance Criteria
  • The system continues bond restoration → the system sets the bond number index from the restored bond 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_SetBondNumberIndex(["Start Step"]) E_SetBondNumberIndex(["End Step"]) N_SetBondNumberIndex_Node0{"The system continues bond
restoration"}:::decision N_SetBondNumberIndex_Node0_action["The system sets the bond number
index from the restored bond data"]:::main N_SetBondNumberIndex_Node0 -- Yes --> N_SetBondNumberIndex_Node0_action N_SetBondNumberIndex_Node0_action --> E_SetBondNumberIndex S_SetBondNumberIndex --> N_SetBondNumberIndex_Node0 N_SetBondNumberIndex_Node0 -- No --> E_SetBondNumberIndex
File: GCX016E.cbl
GIVEN: The bond start date has been restored
WHEN: The system continues bond restoration
THEN: The system sets the bond number index from the restored bond data
βœ“ Consolidated Acceptance Criteria
  • The system processes broker information restoration → the system restores the broker QP information from bond 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_RestoreBrokerQPInformation(["Start Step"]) E_RestoreBrokerQPInformation(["End Step"]) N_RestoreBrokerQPInformation_Node0{"The system processes broker
information restoration"}:::decision N_RestoreBrokerQPInformation_Node0_action["The system restores the broker QP
information from bond data"]:::main N_RestoreBrokerQPInformation_Node0 -- Yes --> N_RestoreBrokerQPInformation_Node0_action N_RestoreBrokerQPInformation_Node0_action --> E_RestoreBrokerQPInformation S_RestoreBrokerQPInformation --> N_RestoreBrokerQPInformation_Node0 N_RestoreBrokerQPInformation_Node0 -- No --> E_RestoreBrokerQPInformation
File: GCX016E.cbl
GIVEN: The bond number index has been set
WHEN: The system processes broker information restoration
THEN: The system restores the broker QP information from bond data
βœ“ Consolidated Acceptance Criteria
  • The system needs to calculate cargo age → the system calculates 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_CalculateCurrentDate(["Start Step"]) E_CalculateCurrentDate(["End Step"]) N_CalculateCurrentDate_Node0{"The system needs to calculate cargo
age"}:::decision N_CalculateCurrentDate_Node0_action["The system calculates the current
system date"]:::main N_CalculateCurrentDate_Node0 -- Yes --> N_CalculateCurrentDate_Node0_action N_CalculateCurrentDate_Node0_action --> E_CalculateCurrentDate S_CalculateCurrentDate --> N_CalculateCurrentDate_Node0 N_CalculateCurrentDate_Node0 -- No --> E_CalculateCurrentDate
File: GCX016E.cbl
GIVEN: Broker QP information has been restored
WHEN: The system needs to calculate cargo age
THEN: The system calculates the current system date
βœ“ Consolidated Acceptance Criteria
  • The system calculates cargo age → the system computes the difference in days between current date and 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_CalculateCargoAgeinDays(["Start Step"]) E_CalculateCargoAgeinDays(["End Step"]) N_CalculateCargoAgeinDays_Node0{"The system calculates cargo age"}:::decision N_CalculateCargoAgeinDays_Node0_action["The system computes the difference
in days between current date and
bond start date"]:::main N_CalculateCargoAgeinDays_Node0 -- Yes --> N_CalculateCargoAgeinDays_Node0_action N_CalculateCargoAgeinDays_Node0_action --> E_CalculateCargoAgeinDays S_CalculateCargoAgeinDays --> N_CalculateCargoAgeinDays_Node0 N_CalculateCargoAgeinDays_Node0 -- No --> E_CalculateCargoAgeinDays
File: GCX016E.cbl
GIVEN: The current date has been calculated and bond start date is available
WHEN: The system calculates cargo age
THEN:
  • The system computes the difference in days between current date
  • Bond start date
βœ“ Consolidated Acceptance Criteria
  • The system validates the age calculation → the system determines if the calculated age is valid and within 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_AgeCalculationValid(["Start Step"]) E_AgeCalculationValid(["End Step"]) N_AgeCalculationValid_Node0{"The system validates the age
calculation"}:::decision N_AgeCalculationValid_Node0_action["The system determines if the
calculated age is valid and within
business rules"]:::main N_AgeCalculationValid_Node0 -- Yes --> N_AgeCalculationValid_Node0_action N_AgeCalculationValid_Node0_action --> E_AgeCalculationValid S_AgeCalculationValid --> N_AgeCalculationValid_Node0 N_AgeCalculationValid_Node0 -- No --> E_AgeCalculationValid
File: GCX016E.cbl
GIVEN: Cargo age has been calculated in days
WHEN: The system validates the age calculation
THEN:
  • The system determines if the calculated age is valid
  • Within business rules
βœ“ Consolidated Acceptance Criteria
  • The system updates cargo information → the system updates the cargo age field with the calculated age in 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_UpdateCargoAgeField(["Start Step"]) E_UpdateCargoAgeField(["End Step"]) N_UpdateCargoAgeField_Node0{"The system updates cargo
information"}:::decision N_UpdateCargoAgeField_Node0_action["The system updates the cargo age
field with the calculated age in
days"]:::main N_UpdateCargoAgeField_Node0 -- Yes --> N_UpdateCargoAgeField_Node0_action N_UpdateCargoAgeField_Node0_action --> E_UpdateCargoAgeField S_UpdateCargoAgeField --> N_UpdateCargoAgeField_Node0 N_UpdateCargoAgeField_Node0 -- No --> E_UpdateCargoAgeField
File: GCX016E.cbl
GIVEN: The age calculation is valid
WHEN: The system updates cargo information
THEN: The system updates the cargo age field with the calculated age in days
βœ“ Consolidated Acceptance Criteria
  • The system completes bond restoration processing → the system sets the bond restoration completion 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_SetBondRestorationFlag(["Start Step"]) E_SetBondRestorationFlag(["End Step"]) N_SetBondRestorationFlag_Node0{"The system completes bond
restoration processing"}:::decision N_SetBondRestorationFlag_Node0_action["The system sets the bond
restoration completion flag"]:::main N_SetBondRestorationFlag_Node0 -- Yes --> N_SetBondRestorationFlag_Node0_action N_SetBondRestorationFlag_Node0_action --> E_SetBondRestorationFlag S_SetBondRestorationFlag --> N_SetBondRestorationFlag_Node0 N_SetBondRestorationFlag_Node0 -- No --> E_SetBondRestorationFlag
File: GCX016E.cbl
GIVEN: Cargo age has been updated or age calculation was invalid
WHEN: The system completes bond restoration processing
THEN: The system sets the bond restoration completion flag
βœ“ Consolidated Acceptance Criteria
  • The system performs audit logging → the system logs the bond restoration action 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_LogBondRestorationAction(["Start Step"]) E_LogBondRestorationAction(["End Step"]) N_LogBondRestorationAction_Node0{"The system performs audit logging"}:::decision N_LogBondRestorationAction_Node0_action["The system logs the bond
restoration action with relevant
details"]:::main N_LogBondRestorationAction_Node0 -- Yes --> N_LogBondRestorationAction_Node0_action N_LogBondRestorationAction_Node0_action --> E_LogBondRestorationAction S_LogBondRestorationAction --> N_LogBondRestorationAction_Node0 N_LogBondRestorationAction_Node0 -- No --> E_LogBondRestorationAction
File: GCX016E.cbl
GIVEN: The bond restoration flag has been set
WHEN: The system performs audit logging
THEN: The system logs the bond restoration action with relevant details
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo record → the system applies the disposition code to the cargo's status array and updates the cargo status according to disposition code 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_UpdateCargoStatusandDispositionCodes(["Start Step"]) E_UpdateCargoStatusandDispositionCodes(["End Step"]) N_UpdateCargoStatusandDispositionCodes_Node0{"The system updates the cargo record"}:::decision N_UpdateCargoStatusandDispositionCodes_Node0_action["The system applies the disposition
code to the cargo s status array and
updates the cargo status according
to disposition code processing rules"]:::main N_UpdateCargoStatusandDispositionCodes_Node0 -- Yes --> N_UpdateCargoStatusandDispositionCodes_Node0_action N_UpdateCargoStatusandDispositionCodes_Node0_action --> E_UpdateCargoStatusandDispositionCodes S_UpdateCargoStatusandDispositionCodes --> N_UpdateCargoStatusandDispositionCodes_Node0 N_UpdateCargoStatusandDispositionCodes_Node0 -- No --> E_UpdateCargoStatusandDispositionCodes
File: GCX016E.cbl
GIVEN: An individual cargo record is being processed with current disposition code context
WHEN: The system updates the cargo record
THEN:
  • The system applies the disposition code to the cargo's status array
  • Updates the cargo status according to disposition code processing rules
βœ“ Consolidated Acceptance Criteria
  • The system checks for additional records → the system searches the cargo database for other records with the same car ID and waybill 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_CheckforAdditionalCargoRecordswithSameCarWaybill(["Start Step"]) E_CheckforAdditionalCargoRecordswithSameCarWaybill(["End Step"]) N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0{"The system checks for additional
records"}:::decision N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0_action["The system searches the cargo
database for other records with the
same car ID and waybill combination"]:::main N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0 -- Yes --> N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0_action N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0_action --> E_CheckforAdditionalCargoRecordswithSameCarWaybill S_CheckforAdditionalCargoRecordswithSameCarWaybill --> N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0 N_CheckforAdditionalCargoRecordswithSameCarWaybill_Node0 -- No --> E_CheckforAdditionalCargoRecordswithSameCarWaybill
File: GCX016E.cbl
GIVEN: One cargo record has been processed for a car ID and waybill combination
WHEN: The system checks for additional records
THEN:
  • The system searches the cargo database for other records with the same car id
  • Waybill combination
βœ“ Consolidated Acceptance Criteria
  • If status consistency → if all records have the same release status, generate comprehensive release notification, otherwise proceed to create Merlin notifications for 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_AllRecordsHaveSameReleaseStatus(["Start Step"]) E_AllRecordsHaveSameReleaseStatus(["End Step"]) N_AllRecordsHaveSameReleaseStatus_Node0{"The system evaluates status
consistency"}:::decision N_AllRecordsHaveSameReleaseStatus_Node0_action["If all records have the same
release status, generate
comprehensive release notification,
otherwise proceed to create Merlin
notifications for status changes"]:::main N_AllRecordsHaveSameReleaseStatus_Node0 -- Yes --> N_AllRecordsHaveSameReleaseStatus_Node0_action N_AllRecordsHaveSameReleaseStatus_Node0_action --> E_AllRecordsHaveSameReleaseStatus S_AllRecordsHaveSameReleaseStatus --> N_AllRecordsHaveSameReleaseStatus_Node0 N_AllRecordsHaveSameReleaseStatus_Node0 -- No --> E_AllRecordsHaveSameReleaseStatus
File: GCX016E.cbl
GIVEN: Release status has been verified across all cargo records with the same car ID and waybill
WHEN: The system evaluates status consistency
THEN: If all records have the same release status, generate comprehensive release notification, otherwise proceed to create Merlin notifications for status changes
βœ“ Consolidated Acceptance Criteria
  • If export notification requirements → if any cargo records have export status or export-related disposition codes, generate appropriate 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_GenerateExportNotificationifApplicable(["Start Step"]) E_GenerateExportNotificationifApplicable(["End Step"]) N_GenerateExportNotificationifApplicable_Node0{"The system evaluates export
notification requirements"}:::decision N_GenerateExportNotificationifApplicable_Node0_action["If any cargo records have export
status or export-related disposition
codes, generate appropriate export
notifications"]:::main N_GenerateExportNotificationifApplicable_Node0 -- Yes --> N_GenerateExportNotificationifApplicable_Node0_action N_GenerateExportNotificationifApplicable_Node0_action --> E_GenerateExportNotificationifApplicable S_GenerateExportNotificationifApplicable --> N_GenerateExportNotificationifApplicable_Node0 N_GenerateExportNotificationifApplicable_Node0 -- No --> E_GenerateExportNotificationifApplicable
File: GCX016E.cbl
GIVEN: Cargo records have been processed and comprehensive release notification generated
WHEN: The system evaluates export notification requirements
THEN: If any cargo records have export status or export-related disposition codes, generate appropriate export notifications
βœ“ Consolidated Acceptance Criteria
  • If arrival notification requirements → if any cargo records have arrival status or arrival-related disposition codes, generate appropriate arrival 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_GenerateArrivalNotificationifApplicable(["Start Step"]) E_GenerateArrivalNotificationifApplicable(["End Step"]) N_GenerateArrivalNotificationifApplicable_Node0{"The system evaluates arrival
notification requirements"}:::decision N_GenerateArrivalNotificationifApplicable_Node0_action["If any cargo records have arrival
status or arrival-related
disposition codes, generate
appropriate arrival notifications"]:::main N_GenerateArrivalNotificationifApplicable_Node0 -- Yes --> N_GenerateArrivalNotificationifApplicable_Node0_action N_GenerateArrivalNotificationifApplicable_Node0_action --> E_GenerateArrivalNotificationifApplicable S_GenerateArrivalNotificationifApplicable --> N_GenerateArrivalNotificationifApplicable_Node0 N_GenerateArrivalNotificationifApplicable_Node0 -- No --> E_GenerateArrivalNotificationifApplicable
File: GCX016E.cbl
GIVEN: Export notifications have been processed for applicable cargo records
WHEN: The system evaluates arrival notification requirements
THEN: If any cargo records have arrival status or arrival-related disposition codes, generate appropriate arrival notifications
βœ“ Consolidated Acceptance Criteria
  • The system updates final status → the system commits all status changes and disposition code updates to all related cargo records 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_UpdateFinalStatusforAllRelatedRecords(["Start Step"]) E_UpdateFinalStatusforAllRelatedRecords(["End Step"]) N_UpdateFinalStatusforAllRelatedRecords_Node0{"The system updates final status"}:::decision N_UpdateFinalStatusforAllRelatedRecords_Node0_action["The system commits all status
changes and disposition code updates
to all related cargo records in the
database"]:::main N_UpdateFinalStatusforAllRelatedRecords_Node0 -- Yes --> N_UpdateFinalStatusforAllRelatedRecords_Node0_action N_UpdateFinalStatusforAllRelatedRecords_Node0_action --> E_UpdateFinalStatusforAllRelatedRecords S_UpdateFinalStatusforAllRelatedRecords --> N_UpdateFinalStatusforAllRelatedRecords_Node0 N_UpdateFinalStatusforAllRelatedRecords_Node0 -- No --> E_UpdateFinalStatusforAllRelatedRecords
File: GCX016E.cbl
GIVEN: All notifications have been generated for cargo records with the same car ID and waybill
WHEN: The system updates final status
THEN:
  • The system commits all status changes
  • Disposition code updates to all related cargo records in the database
βœ“ Consolidated Acceptance Criteria
  • The multi-cargo status verification process is initiated → the verification process begins and prepares to retrieve 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_StartMultiCargoStatusVerification(["Start Step"]) E_StartMultiCargoStatusVerification(["End Step"]) N_StartMultiCargoStatusVerification_Node0{"The multi-cargo status verification
process is initiated"}:::decision N_StartMultiCargoStatusVerification_Node0_action["The verification process begins and
prepares to retrieve related cargo
records"]:::main N_StartMultiCargoStatusVerification_Node0 -- Yes --> N_StartMultiCargoStatusVerification_Node0_action N_StartMultiCargoStatusVerification_Node0_action --> E_StartMultiCargoStatusVerification S_StartMultiCargoStatusVerification --> N_StartMultiCargoStatusVerification_Node0 N_StartMultiCargoStatusVerification_Node0 -- No --> E_StartMultiCargoStatusVerification
File: GCX016E.cbl
GIVEN: A cargo record requires multi-cargo status verification
WHEN: The multi-cargo status verification process is initiated
THEN:
  • The verification process begins
  • Prepares to retrieve related cargo records
βœ“ Consolidated Acceptance Criteria
  • The system searches for related cargo records → all cargo records with matching car ID and waybill number are retrieved from the cargo database
  • The system initiates cargo release verification process → all cargo records matching the same car ID and waybill combination are 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_RetrieveAllCargoRecordswithSameCarIDandWaybill(["Start Step"]) E_RetrieveAllCargoRecordswithSameCarIDandWaybill(["End Step"]) N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0{"The system searches for related
cargo records"}:::decision N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0_action["All cargo records with matching car
ID and waybill number are retrieved
from the cargo database"]:::main N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0 -- Yes --> N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0_action N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0_action --> E_RetrieveAllCargoRecordswithSameCarIDandWaybill S_RetrieveAllCargoRecordswithSameCarIDandWaybill --> N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0 N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1{"The system initiates cargo release
verification process"}:::decision N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1_action["All cargo records matching the same
car ID and waybill combination are
retrieved for processing"]:::main N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1 -- Yes --> N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1_action N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1_action --> E_RetrieveAllCargoRecordswithSameCarIDandWaybill N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node0 -- No --> N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1 N_RetrieveAllCargoRecordswithSameCarIDandWaybill_Node1 -- No --> E_RetrieveAllCargoRecordswithSameCarIDandWaybill
File: GCX016E.cbl
GIVEN: A car ID and waybill number are provided for verification
WHEN: The system searches for related cargo records
THEN:
  • All cargo records with matching car id
  • Waybill number are retrieved from the cargo database
File: GCX016E.cbl
GIVEN: A cargo record exists with a specific car ID and waybill number
WHEN: The system initiates cargo release verification process
THEN:
  • All cargo records matching the same car id
  • Waybill combination are retrieved for processing
βœ“ Consolidated Acceptance Criteria
  • Border hold status is checked → the system determines if border hold conditions apply 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_EvaluateBorderHold(["Start Step"]) E_EvaluateBorderHold(["End Step"]) N_EvaluateBorderHold_Node0{"Border hold status is checked"}:::decision N_EvaluateBorderHold_Node0_action["The system determines if border
hold conditions apply to the cargo"]:::main N_EvaluateBorderHold_Node0 -- Yes --> N_EvaluateBorderHold_Node0_action N_EvaluateBorderHold_Node0_action --> E_EvaluateBorderHold S_EvaluateBorderHold --> N_EvaluateBorderHold_Node0 N_EvaluateBorderHold_Node0 -- No --> E_EvaluateBorderHold
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for hold conditions
WHEN: Border hold status is checked
THEN: The system determines if border hold conditions apply to the cargo
βœ“ Consolidated Acceptance Criteria
  • Destination hold status is checked → the system determines if destination hold conditions apply 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_EvaluateDestinationHold(["Start Step"]) E_EvaluateDestinationHold(["End Step"]) N_EvaluateDestinationHold_Node0{"Destination hold status is checked"}:::decision N_EvaluateDestinationHold_Node0_action["The system determines if
destination hold conditions apply to
the cargo"]:::main N_EvaluateDestinationHold_Node0 -- Yes --> N_EvaluateDestinationHold_Node0_action N_EvaluateDestinationHold_Node0_action --> E_EvaluateDestinationHold S_EvaluateDestinationHold --> N_EvaluateDestinationHold_Node0 N_EvaluateDestinationHold_Node0 -- No --> E_EvaluateDestinationHold
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for hold conditions
WHEN: Destination hold status is checked
THEN: The system determines if destination hold conditions apply to the cargo
βœ“ Consolidated Acceptance Criteria
  • FDA hold status is checked → the system determines if FDA hold conditions apply 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_EvaluateFDAHold(["Start Step"]) E_EvaluateFDAHold(["End Step"]) N_EvaluateFDAHold_Node0{"FDA hold status is checked"}:::decision N_EvaluateFDAHold_Node0_action["The system determines if FDA hold
conditions apply to the cargo"]:::main N_EvaluateFDAHold_Node0 -- Yes --> N_EvaluateFDAHold_Node0_action N_EvaluateFDAHold_Node0_action --> E_EvaluateFDAHold S_EvaluateFDAHold --> N_EvaluateFDAHold_Node0 N_EvaluateFDAHold_Node0 -- No --> E_EvaluateFDAHold
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for hold conditions
WHEN: FDA hold status is checked
THEN: The system determines if FDA hold conditions apply to the cargo
βœ“ Consolidated Acceptance Criteria
  • Piece count hold status is checked → the system determines if piece count hold conditions apply 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_EvaluatePieceCountHold(["Start Step"]) E_EvaluatePieceCountHold(["End Step"]) N_EvaluatePieceCountHold_Node0{"Piece count hold status is checked"}:::decision N_EvaluatePieceCountHold_Node0_action["The system determines if piece
count hold conditions apply based on
quantity validation"]:::main N_EvaluatePieceCountHold_Node0 -- Yes --> N_EvaluatePieceCountHold_Node0_action N_EvaluatePieceCountHold_Node0_action --> E_EvaluatePieceCountHold S_EvaluatePieceCountHold --> N_EvaluatePieceCountHold_Node0 N_EvaluatePieceCountHold_Node0 -- No --> E_EvaluatePieceCountHold
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for hold conditions
WHEN: Piece count hold status is checked
THEN: The system determines if piece count hold conditions apply based on quantity validation
βœ“ Consolidated Acceptance Criteria
  • The final release status is determined → the cargo record is classified as either released or held based on the evaluation 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_DetermineIndividualRecordReleaseStatus(["Start Step"]) E_DetermineIndividualRecordReleaseStatus(["End Step"]) N_DetermineIndividualRecordReleaseStatus_Node0{"The final release status is
determined"}:::decision N_DetermineIndividualRecordReleaseStatus_Node0_action["The cargo record is classified as
either released or held based on the
evaluation results"]:::main N_DetermineIndividualRecordReleaseStatus_Node0 -- Yes --> N_DetermineIndividualRecordReleaseStatus_Node0_action N_DetermineIndividualRecordReleaseStatus_Node0_action --> E_DetermineIndividualRecordReleaseStatus S_DetermineIndividualRecordReleaseStatus --> N_DetermineIndividualRecordReleaseStatus_Node0 N_DetermineIndividualRecordReleaseStatus_Node0 -- No --> E_DetermineIndividualRecordReleaseStatus
File: GCX016E.cbl
GIVEN: All hold conditions have been evaluated for a cargo record
WHEN: The final release status is determined
THEN: The cargo record is classified as either released or held based on the evaluation results
βœ“ Consolidated Acceptance Criteria
  • The status is stored in the verification array → the record's release status is added to the array for later comparison with other related 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_StoreRecordStatusinVerificationArray(["Start Step"]) E_StoreRecordStatusinVerificationArray(["End Step"]) N_StoreRecordStatusinVerificationArray_Node0{"The status is stored in the
verification array"}:::decision N_StoreRecordStatusinVerificationArray_Node0_action["The record s release status is
added to the array for later
comparison with other related
records"]:::main N_StoreRecordStatusinVerificationArray_Node0 -- Yes --> N_StoreRecordStatusinVerificationArray_Node0_action N_StoreRecordStatusinVerificationArray_Node0_action --> E_StoreRecordStatusinVerificationArray S_StoreRecordStatusinVerificationArray --> N_StoreRecordStatusinVerificationArray_Node0 N_StoreRecordStatusinVerificationArray_Node0 -- No --> E_StoreRecordStatusinVerificationArray
File: GCX016E.cbl
GIVEN: An individual cargo record's release status has been determined
WHEN: The status is stored in the verification array
THEN: The record's release status is added to the array for later comparison with other related records
βœ“ Consolidated Acceptance Criteria
  • Status comparison is performed → the system compares all record statuses to determine if they are consistent
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CompareAllRecordStatuses(["Start Step"]) E_CompareAllRecordStatuses(["End Step"]) N_CompareAllRecordStatuses_Node0{"Status comparison is performed"}:::decision N_CompareAllRecordStatuses_Node0_action["The system compares all record
statuses to determine if they are
consistent"]:::main N_CompareAllRecordStatuses_Node0 -- Yes --> N_CompareAllRecordStatuses_Node0_action N_CompareAllRecordStatuses_Node0_action --> E_CompareAllRecordStatuses S_CompareAllRecordStatuses --> N_CompareAllRecordStatuses_Node0 N_CompareAllRecordStatuses_Node0 -- No --> E_CompareAllRecordStatuses
File: GCX016E.cbl
GIVEN: All related cargo records have been processed and their statuses stored
WHEN: Status comparison is performed
THEN: The system compares all record statuses to determine if they are consistent
βœ“ Consolidated Acceptance Criteria
  • Consistency verification is performed → if all records have consistent release status, generate comprehensive release notification, otherwise create status mismatch 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_AllRecordsHaveConsistentReleaseStatus(["Start Step"]) E_AllRecordsHaveConsistentReleaseStatus(["End Step"]) N_AllRecordsHaveConsistentReleaseStatus_Node0{"Consistency verification is
performed"}:::decision N_AllRecordsHaveConsistentReleaseStatus_Node0_action["If all records have consistent
release status, generate
comprehensive release notification,
otherwise create status mismatch
warning"]:::main N_AllRecordsHaveConsistentReleaseStatus_Node0 -- Yes --> N_AllRecordsHaveConsistentReleaseStatus_Node0_action N_AllRecordsHaveConsistentReleaseStatus_Node0_action --> E_AllRecordsHaveConsistentReleaseStatus S_AllRecordsHaveConsistentReleaseStatus --> N_AllRecordsHaveConsistentReleaseStatus_Node0 N_AllRecordsHaveConsistentReleaseStatus_Node0 -- No --> E_AllRecordsHaveConsistentReleaseStatus
File: GCX016E.cbl
GIVEN: All related cargo record statuses have been compared
WHEN: Consistency verification is performed
THEN: If all records have consistent release status, generate comprehensive release notification, otherwise create status mismatch warning
βœ“ Consolidated Acceptance Criteria
  • Status mismatch warning is created → a warning is generated indicating the inconsistency in release statuses among related 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_CreateReleaseStatusMismatchWarning(["Start Step"]) E_CreateReleaseStatusMismatchWarning(["End Step"]) N_CreateReleaseStatusMismatchWarning_Node0{"Status mismatch warning is created"}:::decision N_CreateReleaseStatusMismatchWarning_Node0_action["A warning is generated indicating
the inconsistency in release
statuses among related records"]:::main N_CreateReleaseStatusMismatchWarning_Node0 -- Yes --> N_CreateReleaseStatusMismatchWarning_Node0_action N_CreateReleaseStatusMismatchWarning_Node0_action --> E_CreateReleaseStatusMismatchWarning S_CreateReleaseStatusMismatchWarning --> N_CreateReleaseStatusMismatchWarning_Node0 N_CreateReleaseStatusMismatchWarning_Node0 -- No --> E_CreateReleaseStatusMismatchWarning
File: GCX016E.cbl
GIVEN: Related cargo records have inconsistent release statuses
WHEN: Status mismatch warning is created
THEN: A warning is generated indicating the inconsistency in release statuses among related records
βœ“ Consolidated Acceptance Criteria
  • The multi-cargo release flag is updated → the flag is set to reflect the overall release status of all 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_UpdateMultiCargoReleaseFlag(["Start Step"]) E_UpdateMultiCargoReleaseFlag(["End Step"]) N_UpdateMultiCargoReleaseFlag_Node0{"The multi-cargo release flag is
updated"}:::decision N_UpdateMultiCargoReleaseFlag_Node0_action["The flag is set to reflect the
overall release status of all
related cargo records"]:::main N_UpdateMultiCargoReleaseFlag_Node0 -- Yes --> N_UpdateMultiCargoReleaseFlag_Node0_action N_UpdateMultiCargoReleaseFlag_Node0_action --> E_UpdateMultiCargoReleaseFlag S_UpdateMultiCargoReleaseFlag --> N_UpdateMultiCargoReleaseFlag_Node0 N_UpdateMultiCargoReleaseFlag_Node0 -- No --> E_UpdateMultiCargoReleaseFlag
File: GCX016E.cbl
GIVEN: Multi-cargo status verification has been completed
WHEN: The multi-cargo release flag is updated
THEN: The flag is set to reflect the overall release status of all related cargo records
βœ“ Consolidated Acceptance Criteria
  • Results logging is performed → the verification results, including any warnings or notifications, 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_LogStatusVerificationResults(["Start Step"]) E_LogStatusVerificationResults(["End Step"]) N_LogStatusVerificationResults_Node0{"Results logging is performed"}:::decision N_LogStatusVerificationResults_Node0_action["The verification results, including
any warnings or notifications, are
logged for audit purposes"]:::main N_LogStatusVerificationResults_Node0 -- Yes --> N_LogStatusVerificationResults_Node0_action N_LogStatusVerificationResults_Node0_action --> E_LogStatusVerificationResults S_LogStatusVerificationResults --> N_LogStatusVerificationResults_Node0 N_LogStatusVerificationResults_Node0 -- No --> E_LogStatusVerificationResults
File: GCX016E.cbl
GIVEN: Multi-cargo status verification has been completed
WHEN: Results logging is performed
THEN: The verification results, including any warnings or notifications, are logged for audit purposes
βœ“ Consolidated Acceptance Criteria
  • The verification process ends → the process is completed and control is returned 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_EndMultiCargoStatusVerification(["Start Step"]) E_EndMultiCargoStatusVerification(["End Step"]) N_EndMultiCargoStatusVerification_Node0{"The verification process ends"}:::decision N_EndMultiCargoStatusVerification_Node0_action["The process is completed and
control is returned to the calling
procedure"]:::main N_EndMultiCargoStatusVerification_Node0 -- Yes --> N_EndMultiCargoStatusVerification_Node0_action N_EndMultiCargoStatusVerification_Node0_action --> E_EndMultiCargoStatusVerification S_EndMultiCargoStatusVerification --> N_EndMultiCargoStatusVerification_Node0 N_EndMultiCargoStatusVerification_Node0 -- No --> E_EndMultiCargoStatusVerification
File: GCX016E.cbl
GIVEN: All multi-cargo status verification activities have been completed
WHEN: The verification process ends
THEN:
  • The process is completed
  • Control is returned to the calling procedure
βœ“ Consolidated Acceptance Criteria
  • The cargo record has a deleted status indicator → the cargo record is excluded from further processing 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_IsCargoRecordDeleted(["Start Step"]) E_IsCargoRecordDeleted(["End Step"]) N_IsCargoRecordDeleted_Node0{"The cargo record has a deleted
status indicator"}:::decision N_IsCargoRecordDeleted_Node0_action["The cargo record is excluded from
further processing and analysis"]:::main N_IsCargoRecordDeleted_Node0 -- Yes --> N_IsCargoRecordDeleted_Node0_action N_IsCargoRecordDeleted_Node0_action --> E_IsCargoRecordDeleted S_IsCargoRecordDeleted --> N_IsCargoRecordDeleted_Node0 N_IsCargoRecordDeleted_Node0 -- No --> E_IsCargoRecordDeleted
File: GCX016E.cbl
GIVEN: A cargo record is being evaluated for status analysis
WHEN: The cargo record has a deleted status indicator
THEN:
  • The cargo record is excluded from further processing
  • Analysis
βœ“ Consolidated Acceptance Criteria
  • The manual release detection process completes → the manual release 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_SetManualReleaseFlag(["Start Step"]) E_SetManualReleaseFlag(["End Step"]) N_SetManualReleaseFlag_Node0{"The manual release detection
process completes"}:::decision N_SetManualReleaseFlag_Node0_action["The manual release flag is set for
the cargo record"]:::main N_SetManualReleaseFlag_Node0 -- Yes --> N_SetManualReleaseFlag_Node0_action N_SetManualReleaseFlag_Node0_action --> E_SetManualReleaseFlag S_SetManualReleaseFlag --> N_SetManualReleaseFlag_Node0 N_SetManualReleaseFlag_Node0 -- No --> E_SetManualReleaseFlag
File: GCX016E.cbl
GIVEN: A cargo record has been identified as manually released
WHEN: The manual release detection process completes
THEN: The manual release flag is set for the cargo record
βœ“ Consolidated Acceptance Criteria
  • The border hold evaluation completes → the border hold flag is set for the cargo record
  • The system processes the border hold determination → the border hold flag is set to true to indicate cargo is held at 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_SetBorderHoldFlag(["Start Step"]) E_SetBorderHoldFlag(["End Step"]) N_SetBorderHoldFlag_Node0{"The border hold evaluation
completes"}:::decision N_SetBorderHoldFlag_Node0_action["The border hold flag is set for the
cargo record"]:::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 determination"}:::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_Node1 -- No --> E_SetBorderHoldFlag
File: GCX016E.cbl
GIVEN: A cargo record has been identified with border hold conditions
WHEN: The border hold evaluation completes
THEN: The border hold flag is set for the cargo record
File: GCX016E.cbl
GIVEN: Border hold status has been determined to be active
WHEN: The system processes the border hold determination
THEN: The border hold flag is set to true to indicate cargo is held at border
βœ“ Consolidated Acceptance Criteria
  • The destination hold evaluation completes → the destination hold flag is set for the cargo record
  • The system processes the destination hold determination → the destination hold flag is set to true to indicate cargo is held 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_SetDestinationHoldFlag(["Start Step"]) E_SetDestinationHoldFlag(["End Step"]) N_SetDestinationHoldFlag_Node0{"The destination hold evaluation
completes"}:::decision N_SetDestinationHoldFlag_Node0_action["The destination hold flag is set
for the cargo record"]:::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 determination"}:::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_Node1 -- No --> E_SetDestinationHoldFlag
File: GCX016E.cbl
GIVEN: A cargo record has been identified with destination hold conditions
WHEN: The destination hold evaluation completes
THEN: The destination hold flag is set for the cargo record
File: GCX016E.cbl
GIVEN: Destination hold status has been determined to be active
WHEN: The system processes the destination hold determination
THEN: The destination hold flag is set to true to indicate cargo is held at destination
βœ“ Consolidated Acceptance Criteria
  • The FDA hold evaluation completes → the FDA hold flag is set for the cargo record
  • The system processes the FDA hold determination → the FDA hold flag is set to true to indicate cargo is held by FDA
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 FDA hold evaluation completes"}:::decision N_SetFDAHoldFlag_Node0_action["The FDA hold flag is set for the
cargo record"]:::main N_SetFDAHoldFlag_Node0 -- Yes --> N_SetFDAHoldFlag_Node0_action N_SetFDAHoldFlag_Node0_action --> E_SetFDAHoldFlag S_SetFDAHoldFlag --> N_SetFDAHoldFlag_Node0 N_SetFDAHoldFlag_Node1{"The system processes the FDA hold
determination"}:::decision N_SetFDAHoldFlag_Node1_action["The FDA hold flag is set to true to
indicate cargo is held by FDA"]:::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: GCX016E.cbl
GIVEN: A cargo record has been identified with FDA hold conditions
WHEN: The FDA hold evaluation completes
THEN: The FDA hold flag is set for the cargo record
File: GCX016E.cbl
GIVEN: FDA hold status has been determined to be active
WHEN: The system processes the FDA hold determination
THEN: The FDA hold flag is set to true to indicate cargo is held by FDA
βœ“ Consolidated Acceptance Criteria
  • The system validates the piece count against expected quantities → the piece count validation result 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_ValidatePieceCount(["Start Step"]) E_ValidatePieceCount(["End Step"]) N_ValidatePieceCount_Node0{"The system validates the piece
count against expected quantities"}:::decision N_ValidatePieceCount_Node0_action["The piece count validation result
is determined"]:::main N_ValidatePieceCount_Node0 -- Yes --> N_ValidatePieceCount_Node0_action N_ValidatePieceCount_Node0_action --> E_ValidatePieceCount S_ValidatePieceCount --> N_ValidatePieceCount_Node0 N_ValidatePieceCount_Node0 -- No --> E_ValidatePieceCount
File: GCX016E.cbl
GIVEN: A cargo record has piece count hold indicators
WHEN: The system validates the piece count against expected quantities
THEN: The piece count validation result is determined
βœ“ Consolidated Acceptance Criteria
  • The piece count validation process completes → the piece count hold flag is set for the cargo record
  • The system processes the piece count hold determination → the piece count hold flag is set to true to indicate cargo has quantity-related 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_SetPieceCountHoldFlag(["Start Step"]) E_SetPieceCountHoldFlag(["End Step"]) N_SetPieceCountHoldFlag_Node0{"The piece count validation process
completes"}:::decision N_SetPieceCountHoldFlag_Node0_action["The piece count hold flag is set
for the cargo record"]:::main N_SetPieceCountHoldFlag_Node0 -- Yes --> N_SetPieceCountHoldFlag_Node0_action N_SetPieceCountHoldFlag_Node0_action --> E_SetPieceCountHoldFlag S_SetPieceCountHoldFlag --> N_SetPieceCountHoldFlag_Node0 N_SetPieceCountHoldFlag_Node1{"The system processes the piece
count hold determination"}:::decision N_SetPieceCountHoldFlag_Node1_action["The piece count hold flag is set to
true to indicate cargo has
quantity-related holds"]:::main N_SetPieceCountHoldFlag_Node1 -- Yes --> N_SetPieceCountHoldFlag_Node1_action N_SetPieceCountHoldFlag_Node1_action --> E_SetPieceCountHoldFlag N_SetPieceCountHoldFlag_Node0 -- No --> N_SetPieceCountHoldFlag_Node1 N_SetPieceCountHoldFlag_Node1 -- No --> E_SetPieceCountHoldFlag
File: GCX016E.cbl
GIVEN: A cargo record has invalid piece count validation results
WHEN: The piece count validation process completes
THEN: The piece count hold flag is set for the cargo record
File: GCX016E.cbl
GIVEN: Piece count hold status has been determined to be active
WHEN: The system processes the piece count hold determination
THEN: The piece count hold flag is set to true to indicate cargo has quantity-related holds
βœ“ Consolidated Acceptance Criteria
  • The system checks all hold flags (border, destination, FDA, piece count) → the overall hold clearance 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_AllHoldsCleared(["Start Step"]) E_AllHoldsCleared(["End Step"]) N_AllHoldsCleared_Node0{"The system checks all hold flags
border, destination, FDA, piece
count"}:::decision N_AllHoldsCleared_Node0_action["The overall hold clearance status
is determined"]:::main N_AllHoldsCleared_Node0 -- Yes --> N_AllHoldsCleared_Node0_action N_AllHoldsCleared_Node0_action --> E_AllHoldsCleared S_AllHoldsCleared --> N_AllHoldsCleared_Node0 N_AllHoldsCleared_Node0 -- No --> E_AllHoldsCleared
File: GCX016E.cbl
GIVEN: A cargo record has completed hold type evaluation
WHEN: The system checks all hold flags (border, destination, FDA, piece count)
THEN: The overall hold clearance status is determined
βœ“ Consolidated Acceptance Criteria
  • The hold type evaluation process begins → all hold status flags (border hold, destination hold, FDA hold, piece count hold) are set to false and overall 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_InitializeHoldStatusFlags(["Start Step"]) E_InitializeHoldStatusFlags(["End Step"]) N_InitializeHoldStatusFlags_Node0{"The hold type evaluation process
begins"}:::decision N_InitializeHoldStatusFlags_Node0_action["All hold status flags border hold,
destination hold, FDA hold, piece
count hold are set to false and
overall hold status is cleared"]:::main N_InitializeHoldStatusFlags_Node0 -- Yes --> N_InitializeHoldStatusFlags_Node0_action N_InitializeHoldStatusFlags_Node0_action --> E_InitializeHoldStatusFlags S_InitializeHoldStatusFlags --> N_InitializeHoldStatusFlags_Node0 N_InitializeHoldStatusFlags_Node0 -- No --> E_InitializeHoldStatusFlags
File: GCX016E.cbl
GIVEN: A cargo record requires hold status evaluation
WHEN: The hold type evaluation process begins
THEN:
  • All hold status flags (border hold, destination hold, fda hold, piece count hold) are set to false
  • Overall hold status is cleared
βœ“ Consolidated Acceptance Criteria
  • Border hold disposition codes are found in the status array → the border hold active flag is set to true, 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_BorderHoldActive(["Start Step"]) E_BorderHoldActive(["End Step"]) N_BorderHoldActive_Node0{"Border hold disposition codes are
found in the status array"}:::decision N_BorderHoldActive_Node0_action["The border hold active flag is set
to true, otherwise it remains false"]:::main N_BorderHoldActive_Node0 -- Yes --> N_BorderHoldActive_Node0_action N_BorderHoldActive_Node0_action --> E_BorderHoldActive S_BorderHoldActive --> N_BorderHoldActive_Node0 N_BorderHoldActive_Node0 -- No --> E_BorderHoldActive
File: GCX016E.cbl
GIVEN: The system has checked cargo status array for border hold codes
WHEN: Border hold disposition codes are found in the status array
THEN: The border hold active flag is set to true, otherwise it remains false
βœ“ Consolidated Acceptance Criteria
  • Destination hold disposition codes are found in the status array → the destination hold active flag is set to true, 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_DestinationHoldActive(["Start Step"]) E_DestinationHoldActive(["End Step"]) N_DestinationHoldActive_Node0{"Destination hold disposition codes
are found in the status array"}:::decision N_DestinationHoldActive_Node0_action["The destination hold active flag is
set to true, otherwise it remains
false"]:::main N_DestinationHoldActive_Node0 -- Yes --> N_DestinationHoldActive_Node0_action N_DestinationHoldActive_Node0_action --> E_DestinationHoldActive S_DestinationHoldActive --> N_DestinationHoldActive_Node0 N_DestinationHoldActive_Node0 -- No --> E_DestinationHoldActive
File: GCX016E.cbl
GIVEN: The system has checked cargo status array for destination hold codes
WHEN: Destination hold disposition codes are found in the status array
THEN: The destination hold active flag is set to true, otherwise it remains false
βœ“ Consolidated Acceptance Criteria
  • FDA hold disposition codes are found in the status array → the FDA hold active flag is set to true, 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_FDAHoldActive(["Start Step"]) E_FDAHoldActive(["End Step"]) N_FDAHoldActive_Node0{"FDA hold disposition codes are
found in the status array"}:::decision N_FDAHoldActive_Node0_action["The FDA hold active flag is set to
true, otherwise it remains false"]:::main N_FDAHoldActive_Node0 -- Yes --> N_FDAHoldActive_Node0_action N_FDAHoldActive_Node0_action --> E_FDAHoldActive S_FDAHoldActive --> N_FDAHoldActive_Node0 N_FDAHoldActive_Node0 -- No --> E_FDAHoldActive
File: GCX016E.cbl
GIVEN: The system has checked cargo status array for FDA hold codes
WHEN: FDA hold disposition codes are found in the status array
THEN: The FDA hold active flag is set to true, otherwise it remains false
βœ“ Consolidated Acceptance Criteria
  • Released quantity is less than total quantity or partial release conditions exist → the piece count hold active flag is set to true, otherwise it remains false
  • If remaining hold types → the system returns true if piece count hold is active, 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_PieceCountHoldActive(["Start Step"]) E_PieceCountHoldActive(["End Step"]) N_PieceCountHoldActive_Node0{"Released quantity is less than
total quantity or partial release
conditions exist"}:::decision N_PieceCountHoldActive_Node0_action["The piece count hold active flag is
set to true, otherwise it remains
false"]:::main N_PieceCountHoldActive_Node0 -- Yes --> N_PieceCountHoldActive_Node0_action N_PieceCountHoldActive_Node0_action --> E_PieceCountHoldActive S_PieceCountHoldActive --> N_PieceCountHoldActive_Node0 N_PieceCountHoldActive_Node1{"The system evaluates remaining hold
types"}:::decision N_PieceCountHoldActive_Node1_action["The system returns true if piece
count hold is active, false
otherwise"]:::main N_PieceCountHoldActive_Node1 -- Yes --> N_PieceCountHoldActive_Node1_action N_PieceCountHoldActive_Node1_action --> E_PieceCountHoldActive N_PieceCountHoldActive_Node0 -- No --> N_PieceCountHoldActive_Node1 N_PieceCountHoldActive_Node1 -- No --> E_PieceCountHoldActive
File: GCX016E.cbl
GIVEN: The system has checked cargo quantities for piece count hold conditions
WHEN: Released quantity is less than total quantity or partial release conditions exist
THEN: The piece count hold active flag is set to true, otherwise it remains false
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Piece count hold is present and higher priority holds do not apply
WHEN: The system evaluates remaining hold types
THEN: The system returns true if piece count hold is active, false otherwise
βœ“ Consolidated Acceptance Criteria
  • If the combined hold status → the system analyzes all hold flags to determine the overall 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_EvaluateCombinedHoldStatus(["Start Step"]) E_EvaluateCombinedHoldStatus(["End Step"]) N_EvaluateCombinedHoldStatus_Node0{"The system evaluates the combined
hold status"}:::decision N_EvaluateCombinedHoldStatus_Node0_action["The system analyzes all hold flags
to determine the overall hold
condition"]:::main N_EvaluateCombinedHoldStatus_Node0 -- Yes --> N_EvaluateCombinedHoldStatus_Node0_action N_EvaluateCombinedHoldStatus_Node0_action --> E_EvaluateCombinedHoldStatus S_EvaluateCombinedHoldStatus --> N_EvaluateCombinedHoldStatus_Node0 N_EvaluateCombinedHoldStatus_Node0 -- No --> E_EvaluateCombinedHoldStatus
File: GCX016E.cbl
GIVEN: All individual hold type flags have been evaluated (border, destination, FDA, piece count)
WHEN: The system evaluates the combined hold status
THEN: The system analyzes all hold flags to determine the overall hold condition
βœ“ Consolidated Acceptance Criteria
  • The system checks if any hold type is active → if any hold flag is true, then overall hold status is active, otherwise cargo is not 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_AnyHoldTypeActive(["Start Step"]) E_AnyHoldTypeActive(["End Step"]) N_AnyHoldTypeActive_Node0{"The system checks if any hold type
is active"}:::decision N_AnyHoldTypeActive_Node0_action["If any hold flag is true, then
overall hold status is active,
otherwise cargo is not held"]:::main N_AnyHoldTypeActive_Node0 -- Yes --> N_AnyHoldTypeActive_Node0_action N_AnyHoldTypeActive_Node0_action --> E_AnyHoldTypeActive S_AnyHoldTypeActive --> N_AnyHoldTypeActive_Node0 N_AnyHoldTypeActive_Node0 -- No --> E_AnyHoldTypeActive
File: GCX016E.cbl
GIVEN: All hold type flags have been set (border hold, destination hold, FDA hold, piece count hold)
WHEN: The system checks if any hold type is active
THEN: If any hold flag is true, then overall hold status is active, otherwise cargo is not held
βœ“ Consolidated Acceptance Criteria
  • The system processes the overall hold determination → the overall hold status is set to indicate cargo is held with appropriate hold 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_SetOverallHoldStatus(["Start Step"]) E_SetOverallHoldStatus(["End Step"]) N_SetOverallHoldStatus_Node0{"The system processes the overall
hold determination"}:::decision N_SetOverallHoldStatus_Node0_action["The overall hold status is set to
indicate cargo is held with
appropriate hold type designation"]:::main N_SetOverallHoldStatus_Node0 -- Yes --> N_SetOverallHoldStatus_Node0_action N_SetOverallHoldStatus_Node0_action --> E_SetOverallHoldStatus S_SetOverallHoldStatus --> N_SetOverallHoldStatus_Node0 N_SetOverallHoldStatus_Node0 -- No --> E_SetOverallHoldStatus
File: GCX016E.cbl
GIVEN: At least one hold type flag is active (border, destination, FDA, or piece count)
WHEN: The system processes the overall hold determination
THEN: The overall hold status is set to indicate cargo is held with appropriate hold type designation
βœ“ Consolidated Acceptance Criteria
  • The system processes the overall hold determination → the release status is set to indicate cargo is released and 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_SetReleaseStatus(["Start Step"]) E_SetReleaseStatus(["End Step"]) N_SetReleaseStatus_Node0{"The system processes the overall
hold determination"}:::decision N_SetReleaseStatus_Node0_action["The release status is set to
indicate cargo is released and
available for processing"]:::main N_SetReleaseStatus_Node0 -- Yes --> N_SetReleaseStatus_Node0_action N_SetReleaseStatus_Node0_action --> E_SetReleaseStatus S_SetReleaseStatus --> N_SetReleaseStatus_Node0 N_SetReleaseStatus_Node0 -- No --> E_SetReleaseStatus
File: GCX016E.cbl
GIVEN: No hold type flags are active (border, destination, FDA, and piece count are all false)
WHEN: The system processes the overall hold determination
THEN:
  • The release status is set to indicate cargo is released
  • Available for processing
βœ“ Consolidated Acceptance Criteria
  • The system applies hold validation rules → the system validates hold status against business rules and regulatory requirements to ensure 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_ApplyHoldValidationRules(["Start Step"]) E_ApplyHoldValidationRules(["End Step"]) N_ApplyHoldValidationRules_Node0{"The system applies hold validation
rules"}:::decision N_ApplyHoldValidationRules_Node0_action["The system validates hold status
against business rules and
regulatory requirements to ensure
compliance"]:::main N_ApplyHoldValidationRules_Node0 -- Yes --> N_ApplyHoldValidationRules_Node0_action N_ApplyHoldValidationRules_Node0_action --> E_ApplyHoldValidationRules S_ApplyHoldValidationRules --> N_ApplyHoldValidationRules_Node0 N_ApplyHoldValidationRules_Node0 -- No --> E_ApplyHoldValidationRules
File: GCX016E.cbl
GIVEN: Hold status has been determined for the cargo
WHEN: The system applies hold validation rules
THEN:
  • The system validates hold status against business rules
  • Regulatory requirements to ensure compliance
βœ“ Consolidated Acceptance Criteria
  • The system updates the cargo hold status → the cargo record is updated with the final hold status and all related status fields are set 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_UpdateCargoHoldStatus(["Start Step"]) E_UpdateCargoHoldStatus(["End Step"]) N_UpdateCargoHoldStatus_Node0{"The system updates the cargo hold
status"}:::decision N_UpdateCargoHoldStatus_Node0_action["The cargo record is updated with
the final hold status and all
related status fields are set
appropriately"]:::main N_UpdateCargoHoldStatus_Node0 -- Yes --> N_UpdateCargoHoldStatus_Node0_action N_UpdateCargoHoldStatus_Node0_action --> E_UpdateCargoHoldStatus S_UpdateCargoHoldStatus --> N_UpdateCargoHoldStatus_Node0 N_UpdateCargoHoldStatus_Node0 -- No --> E_UpdateCargoHoldStatus
File: GCX016E.cbl
GIVEN: Hold status has been determined and validated for the cargo
WHEN: The system updates the cargo hold status
THEN:
  • The cargo record is updated with the final hold status
  • All related status fields are set appropriately
βœ“ Consolidated Acceptance Criteria
  • The hold validation process is initiated → the system retrieves the current S09 status array containing all active disposition codes and hold statuses 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_RetrieveCurrentHoldStatusArray(["Start Step"]) E_RetrieveCurrentHoldStatusArray(["End Step"]) N_RetrieveCurrentHoldStatusArray_Node0{"The hold validation process is
initiated"}:::decision N_RetrieveCurrentHoldStatusArray_Node0_action["The system retrieves the current
S09 status array containing all
active disposition codes and hold
statuses for the cargo"]:::main N_RetrieveCurrentHoldStatusArray_Node0 -- Yes --> N_RetrieveCurrentHoldStatusArray_Node0_action N_RetrieveCurrentHoldStatusArray_Node0_action --> E_RetrieveCurrentHoldStatusArray S_RetrieveCurrentHoldStatusArray --> N_RetrieveCurrentHoldStatusArray_Node0 N_RetrieveCurrentHoldStatusArray_Node0 -- No --> E_RetrieveCurrentHoldStatusArray
File: GCX016E.cbl
GIVEN: A cargo record exists with associated status information
WHEN: The hold validation process is initiated
THEN:
  • The system retrieves the current s09 status array containing all active disposition codes
  • Hold statuses for the cargo
βœ“ Consolidated Acceptance Criteria
  • The system processes the status array for hold validation → the system identifies and flags the presence of multiple concurrent hold types
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckforMultipleHoldTypes(["Start Step"]) E_CheckforMultipleHoldTypes(["End Step"]) N_CheckforMultipleHoldTypes_Node0{"The system processes the status
array for hold validation"}:::decision N_CheckforMultipleHoldTypes_Node0_action["The system identifies and flags the
presence of multiple concurrent hold
types"]:::main N_CheckforMultipleHoldTypes_Node0 -- Yes --> N_CheckforMultipleHoldTypes_Node0_action N_CheckforMultipleHoldTypes_Node0_action --> E_CheckforMultipleHoldTypes S_CheckforMultipleHoldTypes --> N_CheckforMultipleHoldTypes_Node0 N_CheckforMultipleHoldTypes_Node0 -- No --> E_CheckforMultipleHoldTypes
File: GCX016E.cbl
GIVEN: A cargo status array has been retrieved
WHEN: The system processes the status array for hold validation
THEN:
  • The system identifies
  • Flags the presence of multiple concurrent hold types
βœ“ Consolidated Acceptance Criteria
  • The system validates hold combinations → the system determines if the combination of holds is valid based on business rules 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_EvaluateHoldCombinationRules(["Start Step"]) E_EvaluateHoldCombinationRules(["End Step"]) N_EvaluateHoldCombinationRules_Node0{"The system validates hold
combinations"}:::decision N_EvaluateHoldCombinationRules_Node0_action["The system determines if the
combination of holds is valid based
on business rules and regulatory
requirements"]:::main N_EvaluateHoldCombinationRules_Node0 -- Yes --> N_EvaluateHoldCombinationRules_Node0_action N_EvaluateHoldCombinationRules_Node0_action --> E_EvaluateHoldCombinationRules S_EvaluateHoldCombinationRules --> N_EvaluateHoldCombinationRules_Node0 N_EvaluateHoldCombinationRules_Node0 -- No --> E_EvaluateHoldCombinationRules
File: GCX016E.cbl
GIVEN: Multiple hold types have been identified in the cargo status
WHEN: The system validates hold combinations
THEN:
  • The system determines if the combination of holds is valid based on business rules
  • Regulatory requirements
βœ“ Consolidated Acceptance Criteria
  • The system checks combination validity → the system returns true if the hold combination is valid, false if it violates 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_HoldCombinationValid(["Start Step"]) E_HoldCombinationValid(["End Step"]) N_HoldCombinationValid_Node0{"The system checks combination
validity"}:::decision N_HoldCombinationValid_Node0_action["The system returns true if the hold
combination is valid, false if it
violates business rules"]:::main N_HoldCombinationValid_Node0 -- Yes --> N_HoldCombinationValid_Node0_action N_HoldCombinationValid_Node0_action --> E_HoldCombinationValid S_HoldCombinationValid --> N_HoldCombinationValid_Node0 N_HoldCombinationValid_Node0 -- No --> E_HoldCombinationValid
File: GCX016E.cbl
GIVEN: Hold combination rules have been evaluated
WHEN: The system checks combination validity
THEN: The system returns true if the hold combination is valid, false if it violates business rules
βœ“ Consolidated Acceptance Criteria
  • The system applies regulatory priority rules → the system determines the priority order of holds based on 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_ApplyRegulatoryPriorityRules(["Start Step"]) E_ApplyRegulatoryPriorityRules(["End Step"]) N_ApplyRegulatoryPriorityRules_Node0{"The system applies regulatory
priority rules"}:::decision N_ApplyRegulatoryPriorityRules_Node0_action["The system determines the priority
order of holds based on regulatory
requirements"]:::main N_ApplyRegulatoryPriorityRules_Node0 -- Yes --> N_ApplyRegulatoryPriorityRules_Node0_action N_ApplyRegulatoryPriorityRules_Node0_action --> E_ApplyRegulatoryPriorityRules S_ApplyRegulatoryPriorityRules --> N_ApplyRegulatoryPriorityRules_Node0 N_ApplyRegulatoryPriorityRules_Node0 -- No --> E_ApplyRegulatoryPriorityRules
File: GCX016E.cbl
GIVEN: Multiple valid holds are present on a cargo
WHEN: The system applies regulatory priority rules
THEN: The system determines the priority order of holds based on regulatory requirements
βœ“ Consolidated Acceptance Criteria
  • If hold priority → the system returns true if FDA hold takes priority over other holds, 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_FDAHoldTakesPriority(["Start Step"]) E_FDAHoldTakesPriority(["End Step"]) N_FDAHoldTakesPriority_Node0{"The system evaluates hold priority"}:::decision N_FDAHoldTakesPriority_Node0_action["The system returns true if FDA hold
takes priority over other holds,
false otherwise"]:::main N_FDAHoldTakesPriority_Node0 -- Yes --> N_FDAHoldTakesPriority_Node0_action N_FDAHoldTakesPriority_Node0_action --> E_FDAHoldTakesPriority S_FDAHoldTakesPriority --> N_FDAHoldTakesPriority_Node0 N_FDAHoldTakesPriority_Node0 -- No --> E_FDAHoldTakesPriority
File: GCX016E.cbl
GIVEN: FDA hold is present along with other hold types
WHEN: The system evaluates hold priority
THEN: The system returns true if FDA hold takes priority over other holds, false otherwise
βœ“ Consolidated Acceptance Criteria
  • If hold priority → the system returns true if border hold takes priority over remaining hold types, 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_BorderHoldTakesPriority(["Start Step"]) E_BorderHoldTakesPriority(["End Step"]) N_BorderHoldTakesPriority_Node0{"The system evaluates hold priority"}:::decision N_BorderHoldTakesPriority_Node0_action["The system returns true if border
hold takes priority over remaining
hold types, false otherwise"]:::main N_BorderHoldTakesPriority_Node0 -- Yes --> N_BorderHoldTakesPriority_Node0_action N_BorderHoldTakesPriority_Node0_action --> E_BorderHoldTakesPriority S_BorderHoldTakesPriority --> N_BorderHoldTakesPriority_Node0 N_BorderHoldTakesPriority_Node0 -- No --> E_BorderHoldTakesPriority
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Border hold is present and FDA hold does not take priority
WHEN: The system evaluates hold priority
THEN: The system returns true if border hold takes priority over remaining hold types, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system sets the final hold status → the system sets the cargo status to FDA hold and updates all related 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_SetFinalHoldStatusFDAPriority(["Start Step"]) E_SetFinalHoldStatusFDAPriority(["End Step"]) N_SetFinalHoldStatusFDAPriority_Node0{"The system sets the final hold
status"}:::decision N_SetFinalHoldStatusFDAPriority_Node0_action["The system sets the cargo status to
FDA hold and updates all related
status flags"]:::main N_SetFinalHoldStatusFDAPriority_Node0 -- Yes --> N_SetFinalHoldStatusFDAPriority_Node0_action N_SetFinalHoldStatusFDAPriority_Node0_action --> E_SetFinalHoldStatusFDAPriority S_SetFinalHoldStatusFDAPriority --> N_SetFinalHoldStatusFDAPriority_Node0 N_SetFinalHoldStatusFDAPriority_Node0 -- No --> E_SetFinalHoldStatusFDAPriority
File: GCX016E.cbl
GIVEN: FDA hold has been determined to take priority
WHEN: The system sets the final hold status
THEN:
  • The system sets the cargo status to fda hold
  • Updates all related status flags
βœ“ Consolidated Acceptance Criteria
  • The system sets the final hold status → the system sets the cargo status to border hold and updates all related 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_SetFinalHoldStatusBorderPriority(["Start Step"]) E_SetFinalHoldStatusBorderPriority(["End Step"]) N_SetFinalHoldStatusBorderPriority_Node0{"The system sets the final hold
status"}:::decision N_SetFinalHoldStatusBorderPriority_Node0_action["The system sets the cargo status to
border hold and updates all related
status flags"]:::main N_SetFinalHoldStatusBorderPriority_Node0 -- Yes --> N_SetFinalHoldStatusBorderPriority_Node0_action N_SetFinalHoldStatusBorderPriority_Node0_action --> E_SetFinalHoldStatusBorderPriority S_SetFinalHoldStatusBorderPriority --> N_SetFinalHoldStatusBorderPriority_Node0 N_SetFinalHoldStatusBorderPriority_Node0 -- No --> E_SetFinalHoldStatusBorderPriority
File: GCX016E.cbl
GIVEN: Border hold has been determined to take priority
WHEN: The system sets the final hold status
THEN:
  • The system sets the cargo status to border hold
  • Updates all related status flags
βœ“ Consolidated Acceptance Criteria
  • The system sets the final hold status → the system sets the cargo status to destination hold and updates all related 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_SetFinalHoldStatusDestinationHold(["Start Step"]) E_SetFinalHoldStatusDestinationHold(["End Step"]) N_SetFinalHoldStatusDestinationHold_Node0{"The system sets the final hold
status"}:::decision N_SetFinalHoldStatusDestinationHold_Node0_action["The system sets the cargo status to
destination hold and updates all
related status flags"]:::main N_SetFinalHoldStatusDestinationHold_Node0 -- Yes --> N_SetFinalHoldStatusDestinationHold_Node0_action N_SetFinalHoldStatusDestinationHold_Node0_action --> E_SetFinalHoldStatusDestinationHold S_SetFinalHoldStatusDestinationHold --> N_SetFinalHoldStatusDestinationHold_Node0 N_SetFinalHoldStatusDestinationHold_Node0 -- No --> E_SetFinalHoldStatusDestinationHold
File: GCX016E.cbl
GIVEN: Destination hold is present and no higher priority holds apply
WHEN: The system sets the final hold status
THEN:
  • The system sets the cargo status to destination hold
  • Updates all related status flags
βœ“ Consolidated Acceptance Criteria
  • The system sets the final hold status → the system sets the cargo status to piece count hold and updates all related 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_SetFinalHoldStatusPieceCountHold(["Start Step"]) E_SetFinalHoldStatusPieceCountHold(["End Step"]) N_SetFinalHoldStatusPieceCountHold_Node0{"The system sets the final hold
status"}:::decision N_SetFinalHoldStatusPieceCountHold_Node0_action["The system sets the cargo status to
piece count hold and updates all
related status flags"]:::main N_SetFinalHoldStatusPieceCountHold_Node0 -- Yes --> N_SetFinalHoldStatusPieceCountHold_Node0_action N_SetFinalHoldStatusPieceCountHold_Node0_action --> E_SetFinalHoldStatusPieceCountHold S_SetFinalHoldStatusPieceCountHold --> N_SetFinalHoldStatusPieceCountHold_Node0 N_SetFinalHoldStatusPieceCountHold_Node0 -- No --> E_SetFinalHoldStatusPieceCountHold
File: GCX016E.cbl
GIVEN: Piece count hold is active and no higher priority holds apply
WHEN: The system sets the final hold status
THEN:
  • The system sets the cargo status to piece count hold
  • Updates all related status flags
βœ“ Consolidated Acceptance Criteria
  • The system processes manual release override → the system overrides system holds and sets the cargo status to released with manual release 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_SetFinalHoldStatusManualReleaseOverride(["Start Step"]) E_SetFinalHoldStatusManualReleaseOverride(["End Step"]) N_SetFinalHoldStatusManualReleaseOverride_Node0{"The system processes manual release
override"}:::decision N_SetFinalHoldStatusManualReleaseOverride_Node0_action["The system overrides system holds
and sets the cargo status to
released with manual release flag"]:::main N_SetFinalHoldStatusManualReleaseOverride_Node0 -- Yes --> N_SetFinalHoldStatusManualReleaseOverride_Node0_action N_SetFinalHoldStatusManualReleaseOverride_Node0_action --> E_SetFinalHoldStatusManualReleaseOverride S_SetFinalHoldStatusManualReleaseOverride --> N_SetFinalHoldStatusManualReleaseOverride_Node0 N_SetFinalHoldStatusManualReleaseOverride_Node0 -- No --> E_SetFinalHoldStatusManualReleaseOverride
File: GCX016E.cbl
GIVEN: Manual release disposition code is present
WHEN: The system processes manual release override
THEN:
  • The system overrides system holds
  • Sets the cargo status to released with manual release flag
βœ“ Consolidated Acceptance Criteria
  • The system checks for conflicting holds → the system returns true if conflicting holds are detected, 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_ConflictingHoldsDetected(["Start Step"]) E_ConflictingHoldsDetected(["End Step"]) N_ConflictingHoldsDetected_Node0{"The system checks for conflicting
holds"}:::decision N_ConflictingHoldsDetected_Node0_action["The system returns true if
conflicting holds are detected,
false otherwise"]:::main N_ConflictingHoldsDetected_Node0 -- Yes --> N_ConflictingHoldsDetected_Node0_action N_ConflictingHoldsDetected_Node0_action --> E_ConflictingHoldsDetected S_ConflictingHoldsDetected --> N_ConflictingHoldsDetected_Node0 N_ConflictingHoldsDetected_Node0 -- No --> E_ConflictingHoldsDetected
File: GCX016E.cbl
GIVEN: Hold combination validation has been performed
WHEN: The system checks for conflicting holds
THEN: The system returns true if conflicting holds are detected, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system processes the conflict → the system generates a hold conflict warning message 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_GenerateHoldConflictWarning(["Start Step"]) E_GenerateHoldConflictWarning(["End Step"]) N_GenerateHoldConflictWarning_Node0{"The system processes the conflict"}:::decision N_GenerateHoldConflictWarning_Node0_action["The system generates a hold
conflict warning message for
operational review"]:::main N_GenerateHoldConflictWarning_Node0 -- Yes --> N_GenerateHoldConflictWarning_Node0_action N_GenerateHoldConflictWarning_Node0_action --> E_GenerateHoldConflictWarning S_GenerateHoldConflictWarning --> N_GenerateHoldConflictWarning_Node0 N_GenerateHoldConflictWarning_Node0 -- No --> E_GenerateHoldConflictWarning
File: GCX016E.cbl
GIVEN: Conflicting holds have been detected
WHEN: The system processes the conflict
THEN: The system generates a hold conflict warning message for operational review
βœ“ Consolidated Acceptance Criteria
  • The system applies default hierarchy rules → the system applies the default hold hierarchy to determine the final 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_ApplyDefaultHoldHierarchy(["Start Step"]) E_ApplyDefaultHoldHierarchy(["End Step"]) N_ApplyDefaultHoldHierarchy_Node0{"The system applies default
hierarchy rules"}:::decision N_ApplyDefaultHoldHierarchy_Node0_action["The system applies the default hold
hierarchy to determine the final
hold status"]:::main N_ApplyDefaultHoldHierarchy_Node0 -- Yes --> N_ApplyDefaultHoldHierarchy_Node0_action N_ApplyDefaultHoldHierarchy_Node0_action --> E_ApplyDefaultHoldHierarchy S_ApplyDefaultHoldHierarchy --> N_ApplyDefaultHoldHierarchy_Node0 N_ApplyDefaultHoldHierarchy_Node0 -- No --> E_ApplyDefaultHoldHierarchy
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Standard hold priority rules do not determine a clear status or conflicts exist
WHEN: The system applies default hierarchy rules
THEN: The system applies the default hold hierarchy to determine the final hold status
βœ“ Consolidated Acceptance Criteria
  • The system validates the final status → the system confirms the final hold status meets all business rules 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_ValidateFinalHoldStatus(["Start Step"]) E_ValidateFinalHoldStatus(["End Step"]) N_ValidateFinalHoldStatus_Node0{"The system validates the final
status"}:::decision N_ValidateFinalHoldStatus_Node0_action["The system confirms the final hold
status meets all business rules and
regulatory requirements"]:::main N_ValidateFinalHoldStatus_Node0 -- Yes --> N_ValidateFinalHoldStatus_Node0_action N_ValidateFinalHoldStatus_Node0_action --> E_ValidateFinalHoldStatus S_ValidateFinalHoldStatus --> N_ValidateFinalHoldStatus_Node0 N_ValidateFinalHoldStatus_Node0 -- No --> E_ValidateFinalHoldStatus
File: GCX016E.cbl
GIVEN: A final hold status has been determined
WHEN: The system validates the final status
THEN:
  • The system confirms the final hold status meets all business rules
  • Regulatory requirements
βœ“ Consolidated Acceptance Criteria
  • If the collection status → the system returns true if more records exist to process, false if all records 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_MoreCargoRecords(["Start Step"]) E_MoreCargoRecords(["End Step"]) N_MoreCargoRecords_Node0{"The system evaluates the collection
status"}:::decision N_MoreCargoRecords_Node0_action["The system returns true if more
records exist to process, false if
all records have been processed"]:::main N_MoreCargoRecords_Node0 -- Yes --> N_MoreCargoRecords_Node0_action N_MoreCargoRecords_Node0_action --> E_MoreCargoRecords S_MoreCargoRecords --> N_MoreCargoRecords_Node0 N_MoreCargoRecords_Node0 -- No --> E_MoreCargoRecords
File: GCX016E.cbl
GIVEN: A collection of cargo records has been retrieved for processing
WHEN: The system evaluates the collection status
THEN: The system returns true if more records exist to process, false if all records have been processed
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo record → the cargo record's status, hold conditions, and release eligibility 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_AnalyzeIndividualCargoRecord(["Start Step"]) E_AnalyzeIndividualCargoRecord(["End Step"]) N_AnalyzeIndividualCargoRecord_Node0{"The system processes the cargo
record"}:::decision N_AnalyzeIndividualCargoRecord_Node0_action["The cargo record s status, hold
conditions, and release eligibility
are evaluated"]:::main N_AnalyzeIndividualCargoRecord_Node0 -- Yes --> N_AnalyzeIndividualCargoRecord_Node0_action N_AnalyzeIndividualCargoRecord_Node0_action --> E_AnalyzeIndividualCargoRecord S_AnalyzeIndividualCargoRecord --> N_AnalyzeIndividualCargoRecord_Node0 N_AnalyzeIndividualCargoRecord_Node0 -- No --> E_AnalyzeIndividualCargoRecord
File: GCX016E.cbl
GIVEN: An individual cargo record from the collection
WHEN: The system processes the cargo record
THEN: The cargo record's status, hold conditions, and release eligibility are evaluated
βœ“ Consolidated Acceptance Criteria
  • The system checks for hold conditions → the system identifies any active holds including border holds, destination holds, FDA holds, or other regulatory 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_CheckHoldStatus(["Start Step"]) E_CheckHoldStatus(["End Step"]) N_CheckHoldStatus_Node0{"The system checks for hold
conditions"}:::decision N_CheckHoldStatus_Node0_action["The system identifies any active
holds including border holds,
destination holds, FDA holds, or
other regulatory holds"]:::main N_CheckHoldStatus_Node0 -- Yes --> N_CheckHoldStatus_Node0_action N_CheckHoldStatus_Node0_action --> E_CheckHoldStatus S_CheckHoldStatus --> N_CheckHoldStatus_Node0 N_CheckHoldStatus_Node0 -- No --> E_CheckHoldStatus
File: GCX016E.cbl
GIVEN: A cargo record under analysis
WHEN: The system checks for hold conditions
THEN: The system identifies any active holds including border holds, destination holds, FDA holds, or other regulatory holds
βœ“ Consolidated Acceptance Criteria
  • If manual release results → if manual release is applied, proceed to piece count hold check; if not applied, proceed to other hold type 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_ManualReleaseApplied(["Start Step"]) E_ManualReleaseApplied(["End Step"]) N_ManualReleaseApplied_Node0{"The system evaluates manual release
results"}:::decision N_ManualReleaseApplied_Node0_action["If manual release is applied,
proceed to piece count hold check if
not applied, proceed to other hold
type checks"]:::main N_ManualReleaseApplied_Node0 -- Yes --> N_ManualReleaseApplied_Node0_action N_ManualReleaseApplied_Node0_action --> E_ManualReleaseApplied S_ManualReleaseApplied --> N_ManualReleaseApplied_Node0 N_ManualReleaseApplied_Node0 -- No --> E_ManualReleaseApplied
File: GCX016E.cbl
GIVEN: Manual release status check has been completed
WHEN: The system evaluates manual release results
THEN: If manual release is applied, proceed to piece count hold check; if not applied, proceed to other hold type checks
βœ“ Consolidated Acceptance Criteria
  • The system checks piece count status → the system identifies any piece count holds, partial release conditions, or quantity discrepancies
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CheckPieceCountHolds(["Start Step"]) E_CheckPieceCountHolds(["End Step"]) N_CheckPieceCountHolds_Node0{"The system checks piece count
status"}:::decision N_CheckPieceCountHolds_Node0_action["The system identifies any piece
count holds, partial release
conditions, or quantity
discrepancies"]:::main N_CheckPieceCountHolds_Node0 -- Yes --> N_CheckPieceCountHolds_Node0_action N_CheckPieceCountHolds_Node0_action --> E_CheckPieceCountHolds S_CheckPieceCountHolds --> N_CheckPieceCountHolds_Node0 N_CheckPieceCountHolds_Node0 -- No --> E_CheckPieceCountHolds
File: GCX016E.cbl
GIVEN: A cargo record with manual release applied
WHEN: The system checks piece count status
THEN: The system identifies any piece count holds, partial release conditions, or quantity discrepancies
βœ“ Consolidated Acceptance Criteria
  • If piece count results → if piece count issues exist, proceed to other hold type checks; if no issues, proceed to release eligibility 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_PieceCountIssues(["Start Step"]) E_PieceCountIssues(["End Step"]) N_PieceCountIssues_Node0{"The system evaluates piece count
results"}:::decision N_PieceCountIssues_Node0_action["If piece count issues exist,
proceed to other hold type checks if
no issues, proceed to release
eligibility evaluation"]:::main N_PieceCountIssues_Node0 -- Yes --> N_PieceCountIssues_Node0_action N_PieceCountIssues_Node0_action --> E_PieceCountIssues S_PieceCountIssues --> N_PieceCountIssues_Node0 N_PieceCountIssues_Node0 -- No --> E_PieceCountIssues
File: GCX016E.cbl
GIVEN: Piece count hold check has been completed
WHEN: The system evaluates piece count results
THEN: If piece count issues exist, proceed to other hold type checks; if no issues, proceed to release eligibility evaluation
βœ“ Consolidated Acceptance Criteria
  • If additional hold results → regardless of other hold type results, proceed to release eligibility 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_OtherHoldTypes(["Start Step"]) E_OtherHoldTypes(["End Step"]) N_OtherHoldTypes_Node0{"The system evaluates additional
hold results"}:::decision N_OtherHoldTypes_Node0_action["Regardless of other hold type
results, proceed to release
eligibility evaluation"]:::main N_OtherHoldTypes_Node0 -- Yes --> N_OtherHoldTypes_Node0_action N_OtherHoldTypes_Node0_action --> E_OtherHoldTypes S_OtherHoldTypes --> N_OtherHoldTypes_Node0 N_OtherHoldTypes_Node0 -- No --> E_OtherHoldTypes
File: GCX016E.cbl
GIVEN: Various hold types check has been completed
WHEN: The system evaluates additional hold results
THEN: Regardless of other hold type results, proceed to release eligibility evaluation
βœ“ Consolidated Acceptance Criteria
  • The system formats the release message → the message includes car ID, waybill number, equipment type, and other relevant equipment 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_FormatReleaseMessagewithEquipmentDetails(["Start Step"]) E_FormatReleaseMessagewithEquipmentDetails(["End Step"]) N_FormatReleaseMessagewithEquipmentDetails_Node0{"The system formats the release
message"}:::decision N_FormatReleaseMessagewithEquipmentDetails_Node0_action["The message includes car ID,
waybill number, equipment type, and
other relevant equipment
identification details"]:::main N_FormatReleaseMessagewithEquipmentDetails_Node0 -- Yes --> N_FormatReleaseMessagewithEquipmentDetails_Node0_action N_FormatReleaseMessagewithEquipmentDetails_Node0_action --> E_FormatReleaseMessagewithEquipmentDetails S_FormatReleaseMessagewithEquipmentDetails --> N_FormatReleaseMessagewithEquipmentDetails_Node0 N_FormatReleaseMessagewithEquipmentDetails_Node0 -- No --> E_FormatReleaseMessagewithEquipmentDetails
File: GCX016E.cbl
GIVEN: A comprehensive release notification is being created
WHEN: The system formats the release message
THEN: The message includes car ID, waybill number, equipment type, and other relevant equipment identification details
βœ“ Consolidated Acceptance Criteria
  • The system includes disposition code information → the message contains relevant disposition codes, processing actions, and regulatory compliance 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_IncludeDispositionCodeInformation(["Start Step"]) E_IncludeDispositionCodeInformation(["End Step"]) N_IncludeDispositionCodeInformation_Node0{"The system includes disposition
code information"}:::decision N_IncludeDispositionCodeInformation_Node0_action["The message contains relevant
disposition codes, processing
actions, and regulatory compliance
information"]:::main N_IncludeDispositionCodeInformation_Node0 -- Yes --> N_IncludeDispositionCodeInformation_Node0_action N_IncludeDispositionCodeInformation_Node0_action --> E_IncludeDispositionCodeInformation S_IncludeDispositionCodeInformation --> N_IncludeDispositionCodeInformation_Node0 N_IncludeDispositionCodeInformation_Node0 -- No --> E_IncludeDispositionCodeInformation
File: GCX016E.cbl
GIVEN: A release message with equipment details
WHEN: The system includes disposition code information
THEN: The message contains relevant disposition codes, processing actions, and regulatory compliance information
βœ“ Consolidated Acceptance Criteria
  • The system adds quantity impact analysis → the message shows released quantities, remaining quantities, and impact on total cargo counts
  • Before and after quantities are different → detailed quantity impact analysis showing the change is added to the Merlin 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_AddQuantityImpactAnalysis(["Start Step"]) E_AddQuantityImpactAnalysis(["End Step"]) N_AddQuantityImpactAnalysis_Node0{"The system adds quantity impact
analysis"}:::decision N_AddQuantityImpactAnalysis_Node0_action["The message shows released
quantities, remaining quantities,
and impact on total cargo counts"]:::main N_AddQuantityImpactAnalysis_Node0 -- Yes --> N_AddQuantityImpactAnalysis_Node0_action N_AddQuantityImpactAnalysis_Node0_action --> E_AddQuantityImpactAnalysis S_AddQuantityImpactAnalysis --> N_AddQuantityImpactAnalysis_Node0 N_AddQuantityImpactAnalysis_Node1{"Before and after quantities are
different"}:::decision N_AddQuantityImpactAnalysis_Node1_action["Detailed quantity impact analysis
showing the change is added to the
Merlin message"]:::main N_AddQuantityImpactAnalysis_Node1 -- Yes --> N_AddQuantityImpactAnalysis_Node1_action N_AddQuantityImpactAnalysis_Node1_action --> E_AddQuantityImpactAnalysis N_AddQuantityImpactAnalysis_Node0 -- No --> N_AddQuantityImpactAnalysis_Node1 N_AddQuantityImpactAnalysis_Node1 -- No --> E_AddQuantityImpactAnalysis
File: GCX016E.cbl
GIVEN: A release message with disposition code information
WHEN: The system adds quantity impact analysis
THEN: The message shows released quantities, remaining quantities, and impact on total cargo counts
File: GCX016E.cbl
GIVEN: Disposition processing results in quantity changes
WHEN:
  • Before
  • After quantities are different
THEN: Detailed quantity impact analysis showing the change is added to the Merlin message
βœ“ Consolidated Acceptance Criteria
  • The system sends the notification → the notification is delivered to brokers, freight forwarders, and other authorized recipients based on cargo ownership 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_SendReleaseNotificationtoRecipients(["Start Step"]) E_SendReleaseNotificationtoRecipients(["End Step"]) N_SendReleaseNotificationtoRecipients_Node0{"The system sends the notification"}:::decision N_SendReleaseNotificationtoRecipients_Node0_action["The notification is delivered to
brokers, freight forwarders, and
other authorized recipients based on
cargo ownership and processing
requirements"]:::main N_SendReleaseNotificationtoRecipients_Node0 -- Yes --> N_SendReleaseNotificationtoRecipients_Node0_action N_SendReleaseNotificationtoRecipients_Node0_action --> E_SendReleaseNotificationtoRecipients S_SendReleaseNotificationtoRecipients --> N_SendReleaseNotificationtoRecipients_Node0 N_SendReleaseNotificationtoRecipients_Node0 -- No --> E_SendReleaseNotificationtoRecipients
File: GCX016E.cbl
GIVEN: A complete release notification message
WHEN: The system sends the notification
THEN:
  • The notification is delivered to brokers, freight forwarders, and other authorized recipients based on cargo ownership
  • Processing requirements
βœ“ Consolidated Acceptance Criteria
  • The system logs the release verification action → an audit record is created with timestamp, cargo details, release status, and notification recipients 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_LogReleaseVerificationAction(["Start Step"]) E_LogReleaseVerificationAction(["End Step"]) N_LogReleaseVerificationAction_Node0{"The system logs the release
verification action"}:::decision N_LogReleaseVerificationAction_Node0_action["An audit record is created with
timestamp, cargo details, release
status, and notification recipients
for compliance tracking"]:::main N_LogReleaseVerificationAction_Node0 -- Yes --> N_LogReleaseVerificationAction_Node0_action N_LogReleaseVerificationAction_Node0_action --> E_LogReleaseVerificationAction S_LogReleaseVerificationAction --> N_LogReleaseVerificationAction_Node0 N_LogReleaseVerificationAction_Node0 -- No --> E_LogReleaseVerificationAction
File: GCX016E.cbl
GIVEN: Cargo status arrays have been updated
WHEN: The system logs the release verification action
THEN: An audit record is created with timestamp, cargo details, release status, and notification recipients for compliance tracking
βœ“ Consolidated Acceptance Criteria
  • The system analyzes the cargo status for manual release indicators → the manual release flag is set if manual release disposition codes are present 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_CheckManualReleaseFlag(["Start Step"]) E_CheckManualReleaseFlag(["End Step"]) N_CheckManualReleaseFlag_Node0{"The system analyzes the cargo
status for manual release indicators"}:::decision N_CheckManualReleaseFlag_Node0_action["The manual release flag is set if
manual release disposition codes are
present in the status array"]:::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: GCX016E.cbl
GIVEN: A cargo record with status array containing disposition codes
WHEN: The system analyzes the cargo status for manual release indicators
THEN: The manual release flag is set if manual release disposition codes are present in the status array
βœ“ Consolidated Acceptance Criteria
  • The system processes the cargo status determination → the cargo status is set to 'RELSD' (Released) and manual release processing is 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_SetManualReleaseStatus(["Start Step"]) E_SetManualReleaseStatus(["End Step"]) N_SetManualReleaseStatus_Node0{"The system processes the cargo
status determination"}:::decision N_SetManualReleaseStatus_Node0_action["The cargo status is set to RELSD
Released and manual release
processing is applied"]:::main N_SetManualReleaseStatus_Node0 -- Yes --> N_SetManualReleaseStatus_Node0_action N_SetManualReleaseStatus_Node0_action --> E_SetManualReleaseStatus S_SetManualReleaseStatus --> N_SetManualReleaseStatus_Node0 N_SetManualReleaseStatus_Node0 -- No --> E_SetManualReleaseStatus
File: GCX016E.cbl
GIVEN: A cargo with manual release flag set to true
WHEN: The system processes the cargo status determination
THEN: The cargo status is set to 'RELSD' (Released) and manual release processing is applied
βœ“ Consolidated Acceptance Criteria
  • The system checks for border hold indicators in the status array → the border hold flag is set if border hold 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_ProcessBorderHoldStatus(["Start Step"]) E_ProcessBorderHoldStatus(["End Step"]) N_ProcessBorderHoldStatus_Node0{"The system checks for border hold
indicators in the status array"}:::decision N_ProcessBorderHoldStatus_Node0_action["The border hold flag is set if
border hold disposition codes are
present"]:::main N_ProcessBorderHoldStatus_Node0 -- Yes --> N_ProcessBorderHoldStatus_Node0_action N_ProcessBorderHoldStatus_Node0_action --> E_ProcessBorderHoldStatus S_ProcessBorderHoldStatus --> N_ProcessBorderHoldStatus_Node0 N_ProcessBorderHoldStatus_Node0 -- No --> E_ProcessBorderHoldStatus
File: GCX016E.cbl
GIVEN: A cargo record with status array containing disposition codes
WHEN: The system checks for border hold indicators in the status array
THEN: The border hold flag is set if border hold disposition codes are present
βœ“ Consolidated Acceptance Criteria
  • The system checks for destination hold indicators in the status array → the destination hold flag is set if destination hold 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_ProcessDestinationHoldStatus(["Start Step"]) E_ProcessDestinationHoldStatus(["End Step"]) N_ProcessDestinationHoldStatus_Node0{"The system checks for destination
hold indicators in the status array"}:::decision N_ProcessDestinationHoldStatus_Node0_action["The destination hold flag is set if
destination hold disposition codes
are present"]:::main N_ProcessDestinationHoldStatus_Node0 -- Yes --> N_ProcessDestinationHoldStatus_Node0_action N_ProcessDestinationHoldStatus_Node0_action --> E_ProcessDestinationHoldStatus S_ProcessDestinationHoldStatus --> N_ProcessDestinationHoldStatus_Node0 N_ProcessDestinationHoldStatus_Node0 -- No --> E_ProcessDestinationHoldStatus
File: GCX016E.cbl
GIVEN: A cargo record with status array containing disposition codes
WHEN: The system checks for destination hold indicators in the status array
THEN: The destination hold flag is set if destination hold disposition codes are present
βœ“ Consolidated Acceptance Criteria
  • The system checks for FDA hold indicators in the status array → the FDA hold flag is set and cargo status is set to 'HOLDFDA' if FDA hold 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_ProcessFDAHoldStatus(["Start Step"]) E_ProcessFDAHoldStatus(["End Step"]) N_ProcessFDAHoldStatus_Node0{"The system checks for FDA hold
indicators in the status array"}:::decision N_ProcessFDAHoldStatus_Node0_action["The FDA hold flag is set and cargo
status is set to HOLDFDA if FDA hold
disposition codes are present"]:::main N_ProcessFDAHoldStatus_Node0 -- Yes --> N_ProcessFDAHoldStatus_Node0_action N_ProcessFDAHoldStatus_Node0_action --> E_ProcessFDAHoldStatus S_ProcessFDAHoldStatus --> N_ProcessFDAHoldStatus_Node0 N_ProcessFDAHoldStatus_Node0 -- No --> E_ProcessFDAHoldStatus
File: GCX016E.cbl
GIVEN: A cargo record with status array containing disposition codes
WHEN: The system checks for FDA hold indicators in the status array
THEN:
  • The fda hold flag is set
  • Cargo status is set to 'holdfda' if fda hold disposition codes are present
βœ“ Consolidated Acceptance Criteria
  • The system checks for piece count hold indicators in the status array → the piece count hold flag is set if piece count hold 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_ProcessPieceCountHoldStatus(["Start Step"]) E_ProcessPieceCountHoldStatus(["End Step"]) N_ProcessPieceCountHoldStatus_Node0{"The system checks for piece count
hold indicators in the status array"}:::decision N_ProcessPieceCountHoldStatus_Node0_action["The piece count hold flag is set if
piece count hold disposition codes
are present"]:::main N_ProcessPieceCountHoldStatus_Node0 -- Yes --> N_ProcessPieceCountHoldStatus_Node0_action N_ProcessPieceCountHoldStatus_Node0_action --> E_ProcessPieceCountHoldStatus S_ProcessPieceCountHoldStatus --> N_ProcessPieceCountHoldStatus_Node0 N_ProcessPieceCountHoldStatus_Node0 -- No --> E_ProcessPieceCountHoldStatus
File: GCX016E.cbl
GIVEN: A cargo record with status array containing disposition codes
WHEN: The system checks for piece count hold indicators in the status array
THEN: The piece count hold flag is set if piece count hold disposition codes are present
βœ“ Consolidated Acceptance Criteria
  • If the release quantities for completeness → the system determines if the cargo is fully released, partially released, or not released based on quantity 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_EvaluateReleaseQuantities(["Start Step"]) E_EvaluateReleaseQuantities(["End Step"]) N_EvaluateReleaseQuantities_Node0{"The system evaluates the release
quantities for completeness"}:::decision N_EvaluateReleaseQuantities_Node0_action["The system determines if the cargo
is fully released, partially
released, or not released based on
quantity comparison"]:::main N_EvaluateReleaseQuantities_Node0 -- Yes --> N_EvaluateReleaseQuantities_Node0_action N_EvaluateReleaseQuantities_Node0_action --> E_EvaluateReleaseQuantities S_EvaluateReleaseQuantities --> N_EvaluateReleaseQuantities_Node0 N_EvaluateReleaseQuantities_Node0 -- No --> E_EvaluateReleaseQuantities
File: GCX016E.cbl
GIVEN: A cargo record with total quantity and released quantity values
WHEN: The system evaluates the release quantities for completeness
THEN: The system determines if the cargo is fully released, partially released, or not released based on quantity comparison
βœ“ Consolidated Acceptance Criteria
  • If release eligibility → the cargo is marked as fully released and eligible for complete 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_SetFullReleaseEligible(["Start Step"]) E_SetFullReleaseEligible(["End Step"]) N_SetFullReleaseEligible_Node0{"The system evaluates release
eligibility"}:::decision N_SetFullReleaseEligible_Node0_action["The cargo is marked as fully
released and eligible for complete
release processing"]:::main N_SetFullReleaseEligible_Node0 -- Yes --> N_SetFullReleaseEligible_Node0_action N_SetFullReleaseEligible_Node0_action --> E_SetFullReleaseEligible S_SetFullReleaseEligible --> N_SetFullReleaseEligible_Node0 N_SetFullReleaseEligible_Node0 -- No --> E_SetFullReleaseEligible
File: GCX016E.cbl
GIVEN: A cargo with released quantity equal to total quantity
WHEN: The system evaluates release eligibility
THEN:
  • The cargo is marked as fully released
  • Eligible for complete release processing
βœ“ Consolidated Acceptance Criteria
  • If release status → the cargo is marked with partial release status and appropriate 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_SetPartialReleaseStatus(["Start Step"]) E_SetPartialReleaseStatus(["End Step"]) N_SetPartialReleaseStatus_Node0{"The system evaluates release status"}:::decision N_SetPartialReleaseStatus_Node0_action["The cargo is marked with partial
release status and appropriate hold
status is maintained"]:::main N_SetPartialReleaseStatus_Node0 -- Yes --> N_SetPartialReleaseStatus_Node0_action N_SetPartialReleaseStatus_Node0_action --> E_SetPartialReleaseStatus S_SetPartialReleaseStatus --> N_SetPartialReleaseStatus_Node0 N_SetPartialReleaseStatus_Node0 -- No --> E_SetPartialReleaseStatus
File: GCX016E.cbl
GIVEN: A cargo with released quantity less than total quantity
WHEN: The system evaluates release status
THEN:
  • The cargo is marked with partial release status
  • Appropriate hold status is maintained
βœ“ Consolidated Acceptance Criteria
  • If hold priority hierarchy → the highest priority hold status is determined based on predefined hold precedence 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_DetermineHighestPriorityHold(["Start Step"]) E_DetermineHighestPriorityHold(["End Step"]) N_DetermineHighestPriorityHold_Node0{"The system evaluates hold priority
hierarchy"}:::decision N_DetermineHighestPriorityHold_Node0_action["The highest priority hold status is
determined based on predefined hold
precedence rules"]:::main N_DetermineHighestPriorityHold_Node0 -- Yes --> N_DetermineHighestPriorityHold_Node0_action N_DetermineHighestPriorityHold_Node0_action --> E_DetermineHighestPriorityHold S_DetermineHighestPriorityHold --> N_DetermineHighestPriorityHold_Node0 N_DetermineHighestPriorityHold_Node0 -- No --> E_DetermineHighestPriorityHold
File: GCX016E.cbl
GIVEN: A cargo with multiple active hold conditions (border, destination, FDA, piece count)
WHEN: The system evaluates hold priority hierarchy
THEN: The highest priority hold status is determined based on predefined hold precedence rules
βœ“ Consolidated Acceptance Criteria
  • The system performs final release eligibility assessment → the cargo is determined to be either release eligible or hold eligible based on the comprehensive 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_DetermineReleaseEligibility(["Start Step"]) E_DetermineReleaseEligibility(["End Step"]) N_DetermineReleaseEligibility_Node0{"The system performs final release
eligibility assessment"}:::decision N_DetermineReleaseEligibility_Node0_action["The cargo is determined to be
either release eligible or hold
eligible based on the comprehensive
analysis"]:::main N_DetermineReleaseEligibility_Node0 -- Yes --> N_DetermineReleaseEligibility_Node0_action N_DetermineReleaseEligibility_Node0_action --> E_DetermineReleaseEligibility S_DetermineReleaseEligibility --> N_DetermineReleaseEligibility_Node0 N_DetermineReleaseEligibility_Node0 -- No --> E_DetermineReleaseEligibility
File: GCX016E.cbl
GIVEN: A cargo with analyzed hold conditions and quantity comparisons
WHEN: The system performs final release eligibility assessment
THEN: The cargo is determined to be either release eligible or hold eligible based on the comprehensive analysis
βœ“ Consolidated Acceptance Criteria
  • The system begins foreign cargo record setup → a new cargo record structure is initialized with default values and prepared 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_InitializeNewCargoRecordStructure(["Start Step"]) E_InitializeNewCargoRecordStructure(["End Step"]) N_InitializeNewCargoRecordStructure_Node0{"The system begins foreign cargo
record setup"}:::decision N_InitializeNewCargoRecordStructure_Node0_action["A new cargo record structure is
initialized with default values and
prepared for data population"]:::main N_InitializeNewCargoRecordStructure_Node0 -- Yes --> N_InitializeNewCargoRecordStructure_Node0_action N_InitializeNewCargoRecordStructure_Node0_action --> E_InitializeNewCargoRecordStructure S_InitializeNewCargoRecordStructure --> N_InitializeNewCargoRecordStructure_Node0 N_InitializeNewCargoRecordStructure_Node0 -- No --> E_InitializeNewCargoRecordStructure
File: GCX016E.cbl
GIVEN: A foreign cargo processing request is initiated
WHEN: The system begins foreign cargo record setup
THEN:
  • A new cargo record structure is initialized with default values
  • Prepared for data population
βœ“ Consolidated Acceptance Criteria
  • The system processes the N7 segment for foreign cargo setup → equipment information including equipment initial and number are extracted and prepared for cargo record 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_ExtractEquipmentDatafromN7Segment(["Start Step"]) E_ExtractEquipmentDatafromN7Segment(["End Step"]) N_ExtractEquipmentDatafromN7Segment_Node0{"The system processes the N7 segment
for foreign cargo setup"}:::decision N_ExtractEquipmentDatafromN7Segment_Node0_action["Equipment information including
equipment initial and number are
extracted and prepared for cargo
record population"]:::main N_ExtractEquipmentDatafromN7Segment_Node0 -- Yes --> N_ExtractEquipmentDatafromN7Segment_Node0_action N_ExtractEquipmentDatafromN7Segment_Node0_action --> E_ExtractEquipmentDatafromN7Segment S_ExtractEquipmentDatafromN7Segment --> N_ExtractEquipmentDatafromN7Segment_Node0 N_ExtractEquipmentDatafromN7Segment_Node0 -- No --> E_ExtractEquipmentDatafromN7Segment
File: GCX016E.cbl
GIVEN: An N7 segment containing equipment data is available
WHEN: The system processes the N7 segment for foreign cargo setup
THEN:
  • Equipment information including equipment initial
  • Number are extracted
  • Prepared for cargo record population
βœ“ Consolidated Acceptance Criteria
  • The system processes equipment information for cargo record setup → car ID is formatted by combining equipment initial and number, and equipment type is assigned 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_SetCarIDandEquipmentType(["Start Step"]) E_SetCarIDandEquipmentType(["End Step"]) N_SetCarIDandEquipmentType_Node0{"The system processes equipment
information for cargo record setup"}:::decision N_SetCarIDandEquipmentType_Node0_action["Car ID is formatted by combining
equipment initial and number, and
equipment type is assigned to the
cargo record"]:::main N_SetCarIDandEquipmentType_Node0 -- Yes --> N_SetCarIDandEquipmentType_Node0_action N_SetCarIDandEquipmentType_Node0_action --> E_SetCarIDandEquipmentType S_SetCarIDandEquipmentType --> N_SetCarIDandEquipmentType_Node0 N_SetCarIDandEquipmentType_Node0 -- No --> E_SetCarIDandEquipmentType
File: GCX016E.cbl
GIVEN: Equipment data has been extracted from N7 segment
WHEN: The system processes equipment information for cargo record setup
THEN:
  • Car id is formatted by combining equipment initial
  • Number, and equipment type is assigned to the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment for foreign cargo setup → cargo data including waybill number, quantities, and disposition information are extracted for cargo record 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_ExtractCargoDatafromX4Segment(["Start Step"]) E_ExtractCargoDatafromX4Segment(["End Step"]) N_ExtractCargoDatafromX4Segment_Node0{"The system processes the X4 segment
for foreign cargo setup"}:::decision N_ExtractCargoDatafromX4Segment_Node0_action["Cargo data including waybill
number, quantities, and disposition
information are extracted for cargo
record population"]:::main N_ExtractCargoDatafromX4Segment_Node0 -- Yes --> N_ExtractCargoDatafromX4Segment_Node0_action N_ExtractCargoDatafromX4Segment_Node0_action --> E_ExtractCargoDatafromX4Segment S_ExtractCargoDatafromX4Segment --> N_ExtractCargoDatafromX4Segment_Node0 N_ExtractCargoDatafromX4Segment_Node0 -- No --> E_ExtractCargoDatafromX4Segment
File: GCX016E.cbl
GIVEN: An X4 segment containing cargo disposition data is available
WHEN: The system processes the X4 segment for foreign cargo setup
THEN: Cargo data including waybill number, quantities, and disposition information are extracted for cargo record population
βœ“ Consolidated Acceptance Criteria
  • The system processes waybill and quantity information → waybill number and cargo quantities are assigned 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_SetWaybillNumberandQuantities(["Start Step"]) E_SetWaybillNumberandQuantities(["End Step"]) N_SetWaybillNumberandQuantities_Node0{"The system processes waybill and
quantity information"}:::decision N_SetWaybillNumberandQuantities_Node0_action["Waybill number and cargo quantities
are assigned to the appropriate
fields in the cargo record"]:::main N_SetWaybillNumberandQuantities_Node0 -- Yes --> N_SetWaybillNumberandQuantities_Node0_action N_SetWaybillNumberandQuantities_Node0_action --> E_SetWaybillNumberandQuantities S_SetWaybillNumberandQuantities --> N_SetWaybillNumberandQuantities_Node0 N_SetWaybillNumberandQuantities_Node0 -- No --> E_SetWaybillNumberandQuantities
File: GCX016E.cbl
GIVEN: Cargo data has been extracted from X4 segment
WHEN:
  • The system processes waybill
  • Quantity information
THEN:
  • Waybill number
  • Cargo quantities are assigned to the appropriate fields in the cargo record
βœ“ Consolidated Acceptance Criteria
  • The system processes disposition information for cargo setup → disposition code information is assigned to the cargo record for subsequent processing and 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_SetDispositionCodeInformation(["Start Step"]) E_SetDispositionCodeInformation(["End Step"]) N_SetDispositionCodeInformation_Node0{"The system processes disposition
information for cargo setup"}:::decision N_SetDispositionCodeInformation_Node0_action["Disposition code information is
assigned to the cargo record for
subsequent processing and status
tracking"]:::main N_SetDispositionCodeInformation_Node0 -- Yes --> N_SetDispositionCodeInformation_Node0_action N_SetDispositionCodeInformation_Node0_action --> E_SetDispositionCodeInformation S_SetDispositionCodeInformation --> N_SetDispositionCodeInformation_Node0 N_SetDispositionCodeInformation_Node0 -- No --> E_SetDispositionCodeInformation
File: GCX016E.cbl
GIVEN: Disposition code data has been extracted from X4 segment
WHEN: The system processes disposition information for cargo setup
THEN:
  • Disposition code information is assigned to the cargo record for subsequent processing
  • Status tracking
βœ“ Consolidated Acceptance Criteria
  • The system assigns conveyance details to foreign cargo → vessel or train identification details are assigned to the cargo record based on the transport 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_SetVesselTrainDetails(["Start Step"]) E_SetVesselTrainDetails(["End Step"]) N_SetVesselTrainDetails_Node0{"The system assigns conveyance
details to foreign cargo"}:::decision N_SetVesselTrainDetails_Node0_action["Vessel or train identification
details are assigned to the cargo
record based on the transport method"]:::main N_SetVesselTrainDetails_Node0 -- Yes --> N_SetVesselTrainDetails_Node0_action N_SetVesselTrainDetails_Node0_action --> E_SetVesselTrainDetails S_SetVesselTrainDetails --> N_SetVesselTrainDetails_Node0 N_SetVesselTrainDetails_Node0 -- No --> E_SetVesselTrainDetails
File: GCX016E.cbl
GIVEN: Transport type and manifest information have been processed
WHEN: The system assigns conveyance details to foreign cargo
THEN: Vessel or train identification details are assigned to the cargo record based on the transport method
βœ“ Consolidated Acceptance Criteria
  • The system stores the new cargo record → the foreign cargo record is inserted into the GCSUSRT US cargo database for subsequent processing and 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_InsertNewCargoRecordtoDatabase(["Start Step"]) E_InsertNewCargoRecordtoDatabase(["End Step"]) N_InsertNewCargoRecordtoDatabase_Node0{"The system stores the new cargo
record"}:::decision N_InsertNewCargoRecordtoDatabase_Node0_action["The foreign cargo record is
inserted into the GCSUSRT US cargo
database for subsequent processing
and status tracking"]:::main N_InsertNewCargoRecordtoDatabase_Node0 -- Yes --> N_InsertNewCargoRecordtoDatabase_Node0_action N_InsertNewCargoRecordtoDatabase_Node0_action --> E_InsertNewCargoRecordtoDatabase S_InsertNewCargoRecordtoDatabase --> N_InsertNewCargoRecordtoDatabase_Node0 N_InsertNewCargoRecordtoDatabase_Node0 -- No --> E_InsertNewCargoRecordtoDatabase
File: GCX016E.cbl
GIVEN: A complete foreign cargo record has been assembled with all required data
WHEN: The system stores the new cargo record
THEN:
  • The foreign cargo record is inserted into the gcsusrt us cargo database for subsequent processing
  • Status tracking
βœ“ Consolidated Acceptance Criteria
  • The system extracts vessel name information → the vessel name is extracted from positions 7-16 of the 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_ExtractVesselName(["Start Step"]) E_ExtractVesselName(["End Step"]) N_ExtractVesselName_Node0{"The system extracts vessel name
information"}:::decision N_ExtractVesselName_Node0_action["The vessel name is extracted from
positions 7-16 of the M10 segment"]:::main N_ExtractVesselName_Node0 -- Yes --> N_ExtractVesselName_Node0_action N_ExtractVesselName_Node0_action --> E_ExtractVesselName S_ExtractVesselName --> N_ExtractVesselName_Node0 N_ExtractVesselName_Node0 -- No --> E_ExtractVesselName
File: GCX016E.cbl
GIVEN: An M10 segment with valid country code is being processed
WHEN: The system extracts vessel name information
THEN: The vessel name is extracted from positions 7-16 of the M10 segment
βœ“ Consolidated Acceptance Criteria
  • The system validates the vessel information → the vessel name must be non-blank and vessel details must conform to transportation 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_VesselInfoValid(["Start Step"]) E_VesselInfoValid(["End Step"]) N_VesselInfoValid_Node0{"The system validates the vessel
information"}:::decision N_VesselInfoValid_Node0_action["The vessel name must be non-blank
and vessel details must conform to
transportation standards"]:::main N_VesselInfoValid_Node0 -- Yes --> N_VesselInfoValid_Node0_action N_VesselInfoValid_Node0_action --> E_VesselInfoValid S_VesselInfoValid --> N_VesselInfoValid_Node0 N_VesselInfoValid_Node0 -- No --> E_VesselInfoValid
File: GCX016E.cbl
GIVEN: Vessel details have been extracted from the M10 segment
WHEN: The system validates the vessel information
THEN:
  • The vessel name must be non-blank
  • Vessel details must conform to transportation standards
βœ“ Consolidated Acceptance Criteria
  • The system extracts cross-border routing information → port of entry, port of exit, and routing codes are extracted from their designated positions in the 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_ExtractCrossBorderRoutingInfo(["Start Step"]) E_ExtractCrossBorderRoutingInfo(["End Step"]) N_ExtractCrossBorderRoutingInfo_Node0{"The system extracts cross-border
routing information"}:::decision N_ExtractCrossBorderRoutingInfo_Node0_action["Port of entry, port of exit, and
routing codes are extracted from
their designated positions in the
M10 segment"]:::main N_ExtractCrossBorderRoutingInfo_Node0 -- Yes --> N_ExtractCrossBorderRoutingInfo_Node0_action N_ExtractCrossBorderRoutingInfo_Node0_action --> E_ExtractCrossBorderRoutingInfo S_ExtractCrossBorderRoutingInfo --> N_ExtractCrossBorderRoutingInfo_Node0 N_ExtractCrossBorderRoutingInfo_Node0 -- No --> E_ExtractCrossBorderRoutingInfo
File: GCX016E.cbl
GIVEN: Valid vessel information has been extracted from the M10 segment
WHEN: The system extracts cross-border routing information
THEN: Port of entry, port of exit, and routing codes are extracted from their designated positions in the M10 segment
βœ“ Consolidated Acceptance Criteria
  • The system validates the routing information → port codes must be valid customs ports and routing must be logically consistent for the transportation 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_RoutingValid(["Start Step"]) E_RoutingValid(["End Step"]) N_RoutingValid_Node0{"The system validates the routing
information"}:::decision N_RoutingValid_Node0_action["Port codes must be valid customs
ports and routing must be logically
consistent for the transportation
mode"]:::main N_RoutingValid_Node0 -- Yes --> N_RoutingValid_Node0_action N_RoutingValid_Node0_action --> E_RoutingValid S_RoutingValid --> N_RoutingValid_Node0 N_RoutingValid_Node0 -- No --> E_RoutingValid
File: GCX016E.cbl
GIVEN: Cross-border routing information has been extracted from the M10 segment
WHEN: The system validates the routing information
THEN:
  • Port codes must be valid customs ports
  • Routing must be logically consistent for the transportation mode
βœ“ Consolidated Acceptance Criteria
  • The system builds the foreign manifest structure → a complete foreign manifest record is created with SCAC, transport type, country, vessel, and routing information
  • The system builds the foreign manifest structure → a complete foreign manifest structure is constructed with all extracted information properly organized
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_BuildForeignManifestStructure(["Start Step"]) E_BuildForeignManifestStructure(["End Step"]) N_BuildForeignManifestStructure_Node0{"The system builds the foreign
manifest structure"}:::decision N_BuildForeignManifestStructure_Node0_action["A complete foreign manifest record
is created with SCAC, transport
type, country, vessel, and routing
information"]:::main N_BuildForeignManifestStructure_Node0 -- Yes --> N_BuildForeignManifestStructure_Node0_action N_BuildForeignManifestStructure_Node0_action --> E_BuildForeignManifestStructure S_BuildForeignManifestStructure --> N_BuildForeignManifestStructure_Node0 N_BuildForeignManifestStructure_Node1{"The system builds the foreign
manifest structure"}:::decision N_BuildForeignManifestStructure_Node1_action["A complete foreign manifest
structure is constructed with all
extracted information properly
organized"]:::main N_BuildForeignManifestStructure_Node1 -- Yes --> N_BuildForeignManifestStructure_Node1_action N_BuildForeignManifestStructure_Node1_action --> E_BuildForeignManifestStructure N_BuildForeignManifestStructure_Node0 -- No --> N_BuildForeignManifestStructure_Node1 N_BuildForeignManifestStructure_Node1 -- No --> E_BuildForeignManifestStructure
File: GCX016E.cbl
GIVEN: All M10 segment data has been validated successfully
WHEN: The system builds the foreign manifest structure
THEN: A complete foreign manifest record is created with SCAC, transport type, country, vessel, and routing information
File: GCX016E.cbl
GIVEN: All required information has been extracted from the M10 segment including SCAC, transport type, country code, and vessel details
WHEN: The system builds the foreign manifest structure
THEN: A complete foreign manifest structure is constructed with all extracted information properly organized
βœ“ Consolidated Acceptance Criteria
  • The system sets manifest data fields → all extracted data elements are assigned to their corresponding fields in the manifest 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_SetManifestDataFields(["Start Step"]) E_SetManifestDataFields(["End Step"]) N_SetManifestDataFields_Node0{"The system sets manifest data
fields"}:::decision N_SetManifestDataFields_Node0_action["All extracted data elements are
assigned to their corresponding
fields in the manifest record"]:::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: GCX016E.cbl
GIVEN: A foreign manifest structure has been built
WHEN: The system sets manifest data fields
THEN: All extracted data elements are assigned to their corresponding fields in the manifest record
βœ“ Consolidated Acceptance Criteria
  • The system validates the complete manifest → all mandatory fields must be populated and the manifest must meet completeness requirements 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_ManifestComplete(["Start Step"]) E_ManifestComplete(["End Step"]) N_ManifestComplete_Node0{"The system validates the complete
manifest"}:::decision N_ManifestComplete_Node0_action["All mandatory fields must be
populated and the manifest must meet
completeness requirements for
customs processing"]:::main N_ManifestComplete_Node0 -- Yes --> N_ManifestComplete_Node0_action N_ManifestComplete_Node0_action --> E_ManifestComplete S_ManifestComplete --> N_ManifestComplete_Node0 N_ManifestComplete_Node0 -- No --> E_ManifestComplete
File: GCX016E.cbl
GIVEN: Manifest data fields have been set with extracted information
WHEN: The system validates the complete manifest
THEN:
  • All mandatory fields must be populated
  • The manifest must meet completeness requirements for customs processing
βœ“ Consolidated Acceptance Criteria
  • The system stores the manifest data → the manifest data is stored in the system for subsequent cargo and 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_StoreManifestData(["Start Step"]) E_StoreManifestData(["End Step"]) N_StoreManifestData_Node0{"The system stores the manifest data"}:::decision N_StoreManifestData_Node0_action["The manifest data is stored in the
system for subsequent cargo and
customs processing"]:::main N_StoreManifestData_Node0 -- Yes --> N_StoreManifestData_Node0_action N_StoreManifestData_Node0_action --> E_StoreManifestData S_StoreManifestData --> N_StoreManifestData_Node0 N_StoreManifestData_Node0 -- No --> E_StoreManifestData
File: GCX016E.cbl
GIVEN: A complete and validated manifest has been created
WHEN: The system stores the manifest data
THEN:
  • The manifest data is stored in the system for subsequent cargo
  • Customs processing
βœ“ Consolidated Acceptance Criteria
  • The system sets default values → appropriate default values are assigned to non-critical fields to allow 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_SetDefaultValues(["Start Step"]) E_SetDefaultValues(["End Step"]) N_SetDefaultValues_Node0{"The system sets default values"}:::decision N_SetDefaultValues_Node0_action["Appropriate default values are
assigned to non-critical fields to
allow continued processing"]:::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: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Some M10 segment data is invalid but not critical for processing
WHEN: The system sets default values
THEN: Appropriate default values are assigned to non-critical fields to allow continued processing
βœ“ Consolidated Acceptance Criteria
  • The system processes the M10 segment → all M10 segment data fields are extracted and made available for manifest building
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExtractM10SegmentData(["Start Step"]) E_ExtractM10SegmentData(["End Step"]) N_ExtractM10SegmentData_Node0{"The system processes the M10
segment"}:::decision N_ExtractM10SegmentData_Node0_action["All M10 segment data fields are
extracted and made available for
manifest building"]:::main N_ExtractM10SegmentData_Node0 -- Yes --> N_ExtractM10SegmentData_Node0_action N_ExtractM10SegmentData_Node0_action --> E_ExtractM10SegmentData S_ExtractM10SegmentData --> N_ExtractM10SegmentData_Node0 N_ExtractM10SegmentData_Node0 -- No --> E_ExtractM10SegmentData
File: GCX016E.cbl
GIVEN: An M10 segment is available for processing
WHEN: The system processes the M10 segment
THEN:
  • All m10 segment data fields are extracted
  • Made available for manifest building
βœ“ Consolidated Acceptance Criteria
  • The system processes the SCAC code field from M10 segment → the SCAC code is mapped to the appropriate field in the foreign manifest 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_MapSCACCodefromM10(["Start Step"]) E_MapSCACCodefromM10(["End Step"]) N_MapSCACCodefromM10_Node0{"The system processes the SCAC code
field from M10 segment"}:::decision N_MapSCACCodefromM10_Node0_action["The SCAC code is mapped to the
appropriate field in the foreign
manifest structure"]:::main N_MapSCACCodefromM10_Node0 -- Yes --> N_MapSCACCodefromM10_Node0_action N_MapSCACCodefromM10_Node0_action --> E_MapSCACCodefromM10 S_MapSCACCodefromM10 --> N_MapSCACCodefromM10_Node0 N_MapSCACCodefromM10_Node0 -- No --> E_MapSCACCodefromM10
File: GCX016E.cbl
GIVEN: M10 segment data has been extracted
WHEN: The system processes the SCAC code field from M10 segment
THEN: The SCAC code is mapped to the appropriate field in the foreign manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system processes the country code field from M10 segment → the country code is mapped to the foreign manifest structure with proper 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_MapCountryCode(["Start Step"]) E_MapCountryCode(["End Step"]) N_MapCountryCode_Node0{"The system processes the country
code field from M10 segment"}:::decision N_MapCountryCode_Node0_action["The country code is mapped to the
foreign manifest structure with
proper validation"]:::main N_MapCountryCode_Node0 -- Yes --> N_MapCountryCode_Node0_action N_MapCountryCode_Node0_action --> E_MapCountryCode S_MapCountryCode --> N_MapCountryCode_Node0 N_MapCountryCode_Node0 -- No --> E_MapCountryCode
File: GCX016E.cbl
GIVEN: Transport type has been extracted from M10 segment
WHEN: The system processes the country code field from M10 segment
THEN: The country code is mapped to the foreign manifest structure with proper validation
βœ“ Consolidated Acceptance Criteria
  • The system processes port information fields from M10 segment → port of loading and discharge codes are mapped to the foreign manifest 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_MapPortInformation(["Start Step"]) E_MapPortInformation(["End Step"]) N_MapPortInformation_Node0{"The system processes port
information fields from M10 segment"}:::decision N_MapPortInformation_Node0_action["Port of loading and discharge codes
are mapped to the foreign manifest
structure"]:::main N_MapPortInformation_Node0 -- Yes --> N_MapPortInformation_Node0_action N_MapPortInformation_Node0_action --> E_MapPortInformation S_MapPortInformation --> N_MapPortInformation_Node0 N_MapPortInformation_Node0 -- No --> E_MapPortInformation
File: GCX016E.cbl
GIVEN: Vessel details have been extracted from M10 segment
WHEN: The system processes port information fields from M10 segment
THEN:
  • Port of loading
  • Discharge codes are mapped to the foreign manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system processes the manifest number field from M10 segment → the manifest number is extracted and prepared for foreign manifest 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_ExtractManifestNumber(["Start Step"]) E_ExtractManifestNumber(["End Step"]) N_ExtractManifestNumber_Node0{"The system processes the manifest
number field from M10 segment"}:::decision N_ExtractManifestNumber_Node0_action["The manifest number is extracted
and prepared for foreign manifest
structure"]:::main N_ExtractManifestNumber_Node0 -- Yes --> N_ExtractManifestNumber_Node0_action N_ExtractManifestNumber_Node0_action --> E_ExtractManifestNumber S_ExtractManifestNumber --> N_ExtractManifestNumber_Node0 N_ExtractManifestNumber_Node0 -- No --> E_ExtractManifestNumber
File: GCX016E.cbl
GIVEN: Port information has been mapped from M10 segment
WHEN: The system processes the manifest number field from M10 segment
THEN:
  • The manifest number is extracted
  • Prepared for foreign manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system processes date fields from M10 segment → arrival and departure dates are mapped to the foreign manifest structure 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_MapDateInformation(["Start Step"]) E_MapDateInformation(["End Step"]) N_MapDateInformation_Node0{"The system processes date fields
from M10 segment"}:::decision N_MapDateInformation_Node0_action["Arrival and departure dates are
mapped to the foreign manifest
structure with proper formatting"]:::main N_MapDateInformation_Node0 -- Yes --> N_MapDateInformation_Node0_action N_MapDateInformation_Node0_action --> E_MapDateInformation S_MapDateInformation --> N_MapDateInformation_Node0 N_MapDateInformation_Node0 -- No --> E_MapDateInformation
File: GCX016E.cbl
GIVEN: Manifest number has been extracted from M10 segment
WHEN: The system processes date fields from M10 segment
THEN:
  • Arrival
  • Departure dates are mapped to the foreign manifest structure with proper formatting
βœ“ Consolidated Acceptance Criteria
  • The system validates all mapped fields for completeness and accuracy → all field mappings are 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_ValidateFieldMappings(["Start Step"]) E_ValidateFieldMappings(["End Step"]) N_ValidateFieldMappings_Node0{"The system validates all mapped
fields for completeness and accuracy"}:::decision N_ValidateFieldMappings_Node0_action["All field mappings are verified for
data integrity and business rule
compliance"]:::main N_ValidateFieldMappings_Node0 -- Yes --> N_ValidateFieldMappings_Node0_action N_ValidateFieldMappings_Node0_action --> E_ValidateFieldMappings S_ValidateFieldMappings --> N_ValidateFieldMappings_Node0 N_ValidateFieldMappings_Node0 -- No --> E_ValidateFieldMappings
File: GCX016E.cbl
GIVEN: Date information has been mapped from M10 segment
WHEN:
  • The system validates all mapped fields for completeness
  • Accuracy
THEN:
  • All field mappings are verified for data integrity
  • Business rule compliance
βœ“ Consolidated Acceptance Criteria
  • If the validation results → the system determines if all fields are valid and processing can continue 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_AllFieldsValid(["Start Step"]) E_AllFieldsValid(["End Step"]) N_AllFieldsValid_Node0{"The system evaluates the validation
results"}:::decision N_AllFieldsValid_Node0_action["The system determines if all fields
are valid and processing can
continue or if error handling is
required"]:::main N_AllFieldsValid_Node0 -- Yes --> N_AllFieldsValid_Node0_action N_AllFieldsValid_Node0_action --> E_AllFieldsValid S_AllFieldsValid --> N_AllFieldsValid_Node0 N_AllFieldsValid_Node0 -- No --> E_AllFieldsValid
File: GCX016E.cbl
GIVEN: Field mappings have been validated
WHEN: The system evaluates the validation results
THEN:
  • The system determines if all fields are valid
  • Processing can continue or if error handling is required
βœ“ Consolidated Acceptance Criteria
  • The system builds the foreign manifest structure → a complete foreign manifest data structure is constructed with all required fields properly 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_BuildCompleteManifestStructure(["Start Step"]) E_BuildCompleteManifestStructure(["End Step"]) N_BuildCompleteManifestStructure_Node0{"The system builds the foreign
manifest structure"}:::decision N_BuildCompleteManifestStructure_Node0_action["A complete foreign manifest data
structure is constructed with all
required fields properly populated"]:::main N_BuildCompleteManifestStructure_Node0 -- Yes --> N_BuildCompleteManifestStructure_Node0_action N_BuildCompleteManifestStructure_Node0_action --> E_BuildCompleteManifestStructure S_BuildCompleteManifestStructure --> N_BuildCompleteManifestStructure_Node0 N_BuildCompleteManifestStructure_Node0 -- No --> E_BuildCompleteManifestStructure
File: GCX016E.cbl
GIVEN: All field mappings have been validated successfully
WHEN: The system builds the foreign manifest structure
THEN: A complete foreign manifest data structure is constructed with all required fields properly populated
βœ“ Consolidated Acceptance Criteria
  • The system stores the foreign manifest data → the foreign manifest data structure is stored and 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_StoreForeignManifestData(["Start Step"]) E_StoreForeignManifestData(["End Step"]) N_StoreForeignManifestData_Node0{"The system stores the foreign
manifest data"}:::decision N_StoreForeignManifestData_Node0_action["The foreign manifest data structure
is stored and available for further
processing operations"]:::main N_StoreForeignManifestData_Node0 -- Yes --> N_StoreForeignManifestData_Node0_action N_StoreForeignManifestData_Node0_action --> E_StoreForeignManifestData S_StoreForeignManifestData --> N_StoreForeignManifestData_Node0 N_StoreForeignManifestData_Node0 -- No --> E_StoreForeignManifestData
File: GCX016E.cbl
GIVEN: Complete foreign manifest structure has been built
WHEN: The system stores the foreign manifest data
THEN:
  • The foreign manifest data structure is stored
  • Available for further processing operations
βœ“ Consolidated Acceptance Criteria
  • The system validates the SCAC information for foreign manifest building → the SCAC code is checked for validity and completeness according to 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_ValidateSCACInformation(["Start Step"]) E_ValidateSCACInformation(["End Step"]) N_ValidateSCACInformation_Node0{"The system validates the SCAC
information for foreign manifest
building"}:::decision N_ValidateSCACInformation_Node0_action["The SCAC code is checked for
validity and completeness according
to business rules"]:::main N_ValidateSCACInformation_Node0 -- Yes --> N_ValidateSCACInformation_Node0_action N_ValidateSCACInformation_Node0_action --> E_ValidateSCACInformation S_ValidateSCACInformation --> N_ValidateSCACInformation_Node0 N_ValidateSCACInformation_Node0 -- No --> E_ValidateSCACInformation
File: GCX016E.cbl
GIVEN: A SCAC code has been extracted from the M10 segment
WHEN: The system validates the SCAC information for foreign manifest building
THEN:
  • The scac code is checked for validity
  • Completeness according to business rules
βœ“ Consolidated Acceptance Criteria
  • The SCAC validation fails during foreign manifest building → default SCAC values are applied to ensure manifest can be constructed
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetDefaultSCACValues(["Start Step"]) E_SetDefaultSCACValues(["End Step"]) N_SetDefaultSCACValues_Node0{"The SCAC validation fails during
foreign manifest building"}:::decision N_SetDefaultSCACValues_Node0_action["Default SCAC values are applied to
ensure manifest can be constructed"]:::main N_SetDefaultSCACValues_Node0 -- Yes --> N_SetDefaultSCACValues_Node0_action N_SetDefaultSCACValues_Node0_action --> E_SetDefaultSCACValues S_SetDefaultSCACValues --> N_SetDefaultSCACValues_Node0 N_SetDefaultSCACValues_Node0 -- No --> E_SetDefaultSCACValues
File: GCX016E.cbl
GIVEN: A SCAC code has been validated and found to be invalid or missing
WHEN: The SCAC validation fails during foreign manifest building
THEN: Default SCAC values are applied to ensure manifest can be constructed
βœ“ Consolidated Acceptance Criteria
  • The system processes vessel information for foreign manifest building → the vessel name and identification are extracted and prepared for manifest 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_ExtractVesselNameID(["Start Step"]) E_ExtractVesselNameID(["End Step"]) N_ExtractVesselNameID_Node0{"The system processes vessel
information for foreign manifest
building"}:::decision N_ExtractVesselNameID_Node0_action["The vessel name and identification
are extracted and prepared for
manifest structure"]:::main N_ExtractVesselNameID_Node0 -- Yes --> N_ExtractVesselNameID_Node0_action N_ExtractVesselNameID_Node0_action --> E_ExtractVesselNameID S_ExtractVesselNameID --> N_ExtractVesselNameID_Node0 N_ExtractVesselNameID_Node0 -- No --> E_ExtractVesselNameID
File: GCX016E.cbl
GIVEN: Vessel details have been extracted from the M10 segment
WHEN: The system processes vessel information for foreign manifest building
THEN:
  • The vessel name
  • Identification are extracted
  • Prepared for manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system extracts voyage details for foreign manifest building → voyage information is extracted and prepared for inclusion in the manifest 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_ExtractVoyageInformation(["Start Step"]) E_ExtractVoyageInformation(["End Step"]) N_ExtractVoyageInformation_Node0{"The system extracts voyage details
for foreign manifest building"}:::decision N_ExtractVoyageInformation_Node0_action["Voyage information is extracted and
prepared for inclusion in the
manifest structure"]:::main N_ExtractVoyageInformation_Node0 -- Yes --> N_ExtractVoyageInformation_Node0_action N_ExtractVoyageInformation_Node0_action --> E_ExtractVoyageInformation S_ExtractVoyageInformation --> N_ExtractVoyageInformation_Node0 N_ExtractVoyageInformation_Node0 -- No --> E_ExtractVoyageInformation
File: GCX016E.cbl
GIVEN: Vessel information has been processed from the M10 segment
WHEN: The system extracts voyage details for foreign manifest building
THEN:
  • Voyage information is extracted
  • Prepared for inclusion in the manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system sets transport mode information in the manifest → transport mode information is properly configured in the foreign manifest 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_SetTransportModeInformation(["Start Step"]) E_SetTransportModeInformation(["End Step"]) N_SetTransportModeInformation_Node0{"The system sets transport mode
information in the manifest"}:::decision N_SetTransportModeInformation_Node0_action["Transport mode information is
properly configured in the foreign
manifest structure"]:::main N_SetTransportModeInformation_Node0 -- Yes --> N_SetTransportModeInformation_Node0_action N_SetTransportModeInformation_Node0_action --> E_SetTransportModeInformation S_SetTransportModeInformation --> N_SetTransportModeInformation_Node0 N_SetTransportModeInformation_Node0 -- No --> E_SetTransportModeInformation
File: GCX016E.cbl
GIVEN: Transport type has been extracted from the M10 segment and foreign manifest structure is being built
WHEN: The system sets transport mode information in the manifest
THEN: Transport mode information is properly configured in the foreign manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system sets country of origin in the manifest → country of origin information is properly configured in the foreign manifest 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_SetCountryofOrigin(["Start Step"]) E_SetCountryofOrigin(["End Step"]) N_SetCountryofOrigin_Node0{"The system sets country of origin
in the manifest"}:::decision N_SetCountryofOrigin_Node0_action["Country of origin information is
properly configured in the foreign
manifest structure"]:::main N_SetCountryofOrigin_Node0 -- Yes --> N_SetCountryofOrigin_Node0_action N_SetCountryofOrigin_Node0_action --> E_SetCountryofOrigin S_SetCountryofOrigin --> N_SetCountryofOrigin_Node0 N_SetCountryofOrigin_Node0 -- No --> E_SetCountryofOrigin
File: GCX016E.cbl
GIVEN: Country code has been extracted from the M10 segment and foreign manifest structure is being built
WHEN: The system sets country of origin in the manifest
THEN: Country of origin information is properly configured in the foreign manifest structure
βœ“ Consolidated Acceptance Criteria
  • The system validates manifest completeness → all required manifest fields are checked for presence and validity
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateManifestCompleteness(["Start Step"]) E_ValidateManifestCompleteness(["End Step"]) N_ValidateManifestCompleteness_Node0{"The system validates manifest
completeness"}:::decision N_ValidateManifestCompleteness_Node0_action["All required manifest fields are
checked for presence and validity"]:::main N_ValidateManifestCompleteness_Node0 -- Yes --> N_ValidateManifestCompleteness_Node0_action N_ValidateManifestCompleteness_Node0_action --> E_ValidateManifestCompleteness S_ValidateManifestCompleteness --> N_ValidateManifestCompleteness_Node0 N_ValidateManifestCompleteness_Node0 -- No --> E_ValidateManifestCompleteness
File: GCX016E.cbl
GIVEN: A foreign manifest structure has been built with extracted M10 segment information
WHEN: The system validates manifest completeness
THEN:
  • All required manifest fields are checked for presence
  • Validity
βœ“ Consolidated Acceptance Criteria
  • Required information is missing from the manifest → a warning is logged indicating the missing information 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_LogMissingInformationWarning(["Start Step"]) E_LogMissingInformationWarning(["End Step"]) N_LogMissingInformationWarning_Node0{"Required information is missing
from the manifest"}:::decision N_LogMissingInformationWarning_Node0_action["A warning is logged indicating the
missing information details"]:::main N_LogMissingInformationWarning_Node0 -- Yes --> N_LogMissingInformationWarning_Node0_action N_LogMissingInformationWarning_Node0_action --> E_LogMissingInformationWarning S_LogMissingInformationWarning --> N_LogMissingInformationWarning_Node0 N_LogMissingInformationWarning_Node0 -- No --> E_LogMissingInformationWarning
File: GCX016E.cbl
GIVEN: A foreign manifest has been validated and found to be incomplete
WHEN: Required information is missing from the manifest
THEN: A warning is logged indicating the missing information details
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the foreign manifest → the foreign manifest is prepared for return to the cargo 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_FinalizeForeignManifest(["Start Step"]) E_FinalizeForeignManifest(["End Step"]) N_FinalizeForeignManifest_Node0{"The system finalizes the foreign
manifest"}:::decision N_FinalizeForeignManifest_Node0_action["The foreign manifest is prepared
for return to the cargo creation
process"]:::main N_FinalizeForeignManifest_Node0 -- Yes --> N_FinalizeForeignManifest_Node0_action N_FinalizeForeignManifest_Node0_action --> E_FinalizeForeignManifest S_FinalizeForeignManifest --> N_FinalizeForeignManifest_Node0 N_FinalizeForeignManifest_Node0 -- No --> E_FinalizeForeignManifest
File: GCX016E.cbl
GIVEN: A foreign manifest structure has been built and validated (either complete or with logged warnings)
WHEN: The system finalizes the foreign manifest
THEN: The foreign manifest is prepared for return to the cargo creation process
βœ“ Consolidated Acceptance Criteria
  • The system checks the validation results → the system routes to either station information setup for cargo routing or invalid location 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_LocationValid(["Start Step"]) E_LocationValid(["End Step"]) N_LocationValid_Node0{"The system checks the validation
results"}:::decision N_LocationValid_Node0_action["The system routes to either station
information setup for cargo routing
or invalid location error processing"]:::main N_LocationValid_Node0 -- Yes --> N_LocationValid_Node0_action N_LocationValid_Node0_action --> E_LocationValid S_LocationValid --> N_LocationValid_Node0 N_LocationValid_Node0 -- No --> E_LocationValid
File: GCX016E.cbl
GIVEN: A location identifier has been validated
WHEN: The system checks the validation results
THEN: The system routes to either station information setup for cargo routing or invalid location error processing
βœ“ Consolidated Acceptance Criteria
  • The system sets up station information → the system configures the station data for cargo routing operations and completes the station 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_SetStationInformationforCargoRouting(["Start Step"]) E_SetStationInformationforCargoRouting(["End Step"]) N_SetStationInformationforCargoRouting_Node0{"The system sets up station
information"}:::decision N_SetStationInformationforCargoRouting_Node0_action["The system configures the station
data for cargo routing operations
and completes the station lookup
process"]:::main N_SetStationInformationforCargoRouting_Node0 -- Yes --> N_SetStationInformationforCargoRouting_Node0_action N_SetStationInformationforCargoRouting_Node0_action --> E_SetStationInformationforCargoRouting S_SetStationInformationforCargoRouting --> N_SetStationInformationforCargoRouting_Node0 N_SetStationInformationforCargoRouting_Node0 -- No --> E_SetStationInformationforCargoRouting
File: GCX016E.cbl
GIVEN: A station has been found and its location identifier is valid
WHEN: The system sets up station information
THEN:
  • The system configures the station data for cargo routing operations
  • Completes the station lookup process
βœ“ Consolidated Acceptance Criteria
  • The location identifier fails validation criteria → the system generates an invalid location error and completes the station 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_GenerateInvalidLocationError(["Start Step"]) E_GenerateInvalidLocationError(["End Step"]) N_GenerateInvalidLocationError_Node0{"The location identifier fails
validation criteria"}:::decision N_GenerateInvalidLocationError_Node0_action["The system generates an invalid
location error and completes the
station lookup process"]:::main N_GenerateInvalidLocationError_Node0 -- Yes --> N_GenerateInvalidLocationError_Node0_action N_GenerateInvalidLocationError_Node0_action --> E_GenerateInvalidLocationError S_GenerateInvalidLocationError --> N_GenerateInvalidLocationError_Node0 N_GenerateInvalidLocationError_Node0 -- No --> E_GenerateInvalidLocationError
File: GCX016E.cbl
GIVEN: A station has been found but its location identifier has been validated
WHEN: The location identifier fails validation criteria
THEN:
  • The system generates an invalid location error
  • Completes the station lookup process
βœ“ Consolidated Acceptance Criteria
  • The station lookup process reaches completion → the system finalizes the station lookup operation 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_StationLookupComplete(["Start Step"]) E_StationLookupComplete(["End Step"]) N_StationLookupComplete_Node0{"The station lookup process reaches
completion"}:::decision N_StationLookupComplete_Node0_action["The system finalizes the station
lookup operation and returns control
to the calling process"]:::main N_StationLookupComplete_Node0 -- Yes --> N_StationLookupComplete_Node0_action N_StationLookupComplete_Node0_action --> E_StationLookupComplete S_StationLookupComplete --> N_StationLookupComplete_Node0 N_StationLookupComplete_Node0 -- No --> E_StationLookupComplete
File: GCX016E.cbl
GIVEN: Station lookup processing has been performed with either successful station setup or error generation
WHEN: The station lookup process reaches completion
THEN:
  • The system finalizes the station lookup operation
  • Returns control to the calling process
βœ“ Consolidated Acceptance Criteria
  • The system begins formatting a comprehensive Merlin message → the Merlin message structure is initialized with default values and prepared for content 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_InitializeMerlinMessageStructure(["Start Step"]) E_InitializeMerlinMessageStructure(["End Step"]) N_InitializeMerlinMessageStructure_Node0{"The system begins formatting a
comprehensive Merlin message"}:::decision N_InitializeMerlinMessageStructure_Node0_action["The Merlin message structure is
initialized with default values and
prepared for content population"]:::main N_InitializeMerlinMessageStructure_Node0 -- Yes --> N_InitializeMerlinMessageStructure_Node0_action N_InitializeMerlinMessageStructure_Node0_action --> E_InitializeMerlinMessageStructure S_InitializeMerlinMessageStructure --> N_InitializeMerlinMessageStructure_Node0 N_InitializeMerlinMessageStructure_Node0 -- No --> E_InitializeMerlinMessageStructure
File: GCX016E.cbl
GIVEN: A cargo disposition code processing event requires Merlin notification
WHEN: The system begins formatting a comprehensive Merlin message
THEN:
  • The merlin message structure is initialized with default values
  • Prepared for content population
βœ“ Consolidated Acceptance Criteria
  • Car ID and waybill details are available for the cargo → the system adds the car ID and waybill number to the message content
  • Building comprehensive Merlin message content → car ID and waybill details are added to the message 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_AddCarIDandWaybillDetails(["Start Step"]) E_AddCarIDandWaybillDetails(["End Step"]) N_AddCarIDandWaybillDetails_Node0{"Car ID and waybill details are
available for the cargo"}:::decision N_AddCarIDandWaybillDetails_Node0_action["The system adds the car ID and
waybill number to the message
content"]:::main N_AddCarIDandWaybillDetails_Node0 -- Yes --> N_AddCarIDandWaybillDetails_Node0_action N_AddCarIDandWaybillDetails_Node0_action --> E_AddCarIDandWaybillDetails S_AddCarIDandWaybillDetails --> N_AddCarIDandWaybillDetails_Node0 N_AddCarIDandWaybillDetails_Node1{"Building comprehensive Merlin
message content"}:::decision N_AddCarIDandWaybillDetails_Node1_action["Car ID and waybill details are
added to the message with proper
formatting"]:::main N_AddCarIDandWaybillDetails_Node1 -- Yes --> N_AddCarIDandWaybillDetails_Node1_action N_AddCarIDandWaybillDetails_Node1_action --> E_AddCarIDandWaybillDetails N_AddCarIDandWaybillDetails_Node0 -- No --> N_AddCarIDandWaybillDetails_Node1 N_AddCarIDandWaybillDetails_Node1 -- No --> E_AddCarIDandWaybillDetails
File: GCX016E.cbl
GIVEN: Equipment information has been formatted in the Merlin message
WHEN:
  • Car id
  • Waybill details are available for the cargo
THEN:
  • The system adds the car id
  • Waybill number to the message content
File: GCX016E.cbl
GIVEN: Car ID and waybill information are available in the cargo record
WHEN: Building comprehensive Merlin message content
THEN:
  • Car id
  • Waybill details are added to the message with proper formatting
βœ“ Consolidated Acceptance Criteria
  • US-CCN information is available for the cargo → the system includes the US-CCN in the message for customs tracking purposes
  • Creating Merlin notification message → uS-CCN information is included in the message for cargo identification 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_IncludeUSCCNInformation(["Start Step"]) E_IncludeUSCCNInformation(["End Step"]) N_IncludeUSCCNInformation_Node0{"US-CCN information is available for
the cargo"}:::decision N_IncludeUSCCNInformation_Node0_action["The system includes the US-CCN in
the message for customs tracking
purposes"]:::main N_IncludeUSCCNInformation_Node0 -- Yes --> N_IncludeUSCCNInformation_Node0_action N_IncludeUSCCNInformation_Node0_action --> E_IncludeUSCCNInformation S_IncludeUSCCNInformation --> N_IncludeUSCCNInformation_Node0 N_IncludeUSCCNInformation_Node1{"Creating Merlin notification
message"}:::decision N_IncludeUSCCNInformation_Node1_action["US-CCN information is included in
the message for cargo identification
purposes"]:::main N_IncludeUSCCNInformation_Node1 -- Yes --> N_IncludeUSCCNInformation_Node1_action N_IncludeUSCCNInformation_Node1_action --> E_IncludeUSCCNInformation N_IncludeUSCCNInformation_Node0 -- No --> N_IncludeUSCCNInformation_Node1 N_IncludeUSCCNInformation_Node1 -- No --> E_IncludeUSCCNInformation
File: GCX016E.cbl
GIVEN: Car ID and waybill details have been added to the message
WHEN: US-CCN information is available for the cargo
THEN: The system includes the US-CCN in the message for customs tracking purposes
File: GCX016E.cbl
GIVEN: US-CCN exists for the cargo being processed
WHEN: Creating Merlin notification message
THEN: US-CCN information is included in the message for cargo identification purposes
βœ“ Consolidated Acceptance Criteria
  • Before and after quantities are compared → the system determines if there is a significant difference requiring quantity impact messaging
  • Determining message content requirements → if quantities differ, quantity impact analysis is included; otherwise, it is omitted 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_BeforeAfterQuantitiesDifferent(["Start Step"]) E_BeforeAfterQuantitiesDifferent(["End Step"]) N_BeforeAfterQuantitiesDifferent_Node0{"Before and after quantities are
compared"}:::decision N_BeforeAfterQuantitiesDifferent_Node0_action["The system determines if there is a
significant difference requiring
quantity impact messaging"]:::main N_BeforeAfterQuantitiesDifferent_Node0 -- Yes --> N_BeforeAfterQuantitiesDifferent_Node0_action N_BeforeAfterQuantitiesDifferent_Node0_action --> E_BeforeAfterQuantitiesDifferent S_BeforeAfterQuantitiesDifferent --> N_BeforeAfterQuantitiesDifferent_Node0 N_BeforeAfterQuantitiesDifferent_Node1{"Determining message content
requirements"}:::decision N_BeforeAfterQuantitiesDifferent_Node1_action["If quantities differ, quantity
impact analysis is included
otherwise, it is omitted from the
message"]:::main N_BeforeAfterQuantitiesDifferent_Node1 -- Yes --> N_BeforeAfterQuantitiesDifferent_Node1_action N_BeforeAfterQuantitiesDifferent_Node1_action --> E_BeforeAfterQuantitiesDifferent N_BeforeAfterQuantitiesDifferent_Node0 -- No --> N_BeforeAfterQuantitiesDifferent_Node1 N_BeforeAfterQuantitiesDifferent_Node1 -- No --> E_BeforeAfterQuantitiesDifferent
File: GCX016E.cbl
GIVEN: Release quantity impact has been calculated
WHEN:
  • Before
  • After quantities are compared
THEN: The system determines if there is a significant difference requiring quantity impact messaging
File: GCX016E.cbl
GIVEN: Before and after quantity values have been calculated
WHEN: Determining message content requirements
THEN: If quantities differ, quantity impact analysis is included; otherwise, it is omitted from the message
βœ“ Consolidated Acceptance Criteria
  • Quantity impact messaging is required → the system formats a detailed message showing the quantity changes
  • Quantity impact message formatting is initiated → a formatted message is created showing the quantity change details in business-friendly 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_FormatQuantityImpactMessage(["Start Step"]) E_FormatQuantityImpactMessage(["End Step"]) N_FormatQuantityImpactMessage_Node0{"Quantity impact messaging is
required"}:::decision N_FormatQuantityImpactMessage_Node0_action["The system formats a detailed
message showing the quantity changes"]:::main N_FormatQuantityImpactMessage_Node0 -- Yes --> N_FormatQuantityImpactMessage_Node0_action N_FormatQuantityImpactMessage_Node0_action --> E_FormatQuantityImpactMessage S_FormatQuantityImpactMessage --> N_FormatQuantityImpactMessage_Node0 N_FormatQuantityImpactMessage_Node1{"Quantity impact message formatting
is initiated"}:::decision N_FormatQuantityImpactMessage_Node1_action["A formatted message is created
showing the quantity change details
in business-friendly format"]:::main N_FormatQuantityImpactMessage_Node1 -- Yes --> N_FormatQuantityImpactMessage_Node1_action N_FormatQuantityImpactMessage_Node1_action --> E_FormatQuantityImpactMessage N_FormatQuantityImpactMessage_Node0 -- No --> N_FormatQuantityImpactMessage_Node1 N_FormatQuantityImpactMessage_Node1 -- No --> E_FormatQuantityImpactMessage
File: GCX016E.cbl
GIVEN: Before and after quantities are different
WHEN: Quantity impact messaging is required
THEN: The system formats a detailed message showing the quantity changes
File: GCX016E.cbl
GIVEN: Before and after quantities have been calculated for a disposition code
WHEN: Quantity impact message formatting is initiated
THEN: A formatted message is created showing the quantity change details in business-friendly format
βœ“ Consolidated Acceptance Criteria
  • Before quantity information is available → the system includes the original quantity value in the impact 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_ShowBeforeQuantity(["Start Step"]) E_ShowBeforeQuantity(["End Step"]) N_ShowBeforeQuantity_Node0{"Before quantity information is
available"}:::decision N_ShowBeforeQuantity_Node0_action["The system includes the original
quantity value in the impact message"]:::main N_ShowBeforeQuantity_Node0 -- Yes --> N_ShowBeforeQuantity_Node0_action N_ShowBeforeQuantity_Node0_action --> E_ShowBeforeQuantity S_ShowBeforeQuantity --> N_ShowBeforeQuantity_Node0 N_ShowBeforeQuantity_Node0 -- No --> E_ShowBeforeQuantity
File: GCX016E.cbl
GIVEN: Quantity impact message is being formatted
WHEN: Before quantity information is available
THEN: The system includes the original quantity value in the impact message
βœ“ Consolidated Acceptance Criteria
  • After quantity information is available → the system includes the resulting quantity value in the impact 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_ShowAfterQuantity(["Start Step"]) E_ShowAfterQuantity(["End Step"]) N_ShowAfterQuantity_Node0{"After quantity information is
available"}:::decision N_ShowAfterQuantity_Node0_action["The system includes the resulting
quantity value in the impact message"]:::main N_ShowAfterQuantity_Node0 -- Yes --> N_ShowAfterQuantity_Node0_action N_ShowAfterQuantity_Node0_action --> E_ShowAfterQuantity S_ShowAfterQuantity --> N_ShowAfterQuantity_Node0 N_ShowAfterQuantity_Node0 -- No --> E_ShowAfterQuantity
File: GCX016E.cbl
GIVEN: Before quantity has been shown in the impact message
WHEN: After quantity information is available
THEN: The system includes the resulting quantity value in the impact message
βœ“ Consolidated Acceptance Criteria
  • Impact description is needed for clarity → the system adds explanatory text describing whether quantities increased, decreased, or were modified
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_AddImpactDescription(["Start Step"]) E_AddImpactDescription(["End Step"]) N_AddImpactDescription_Node0{"Impact description is needed for
clarity"}:::decision N_AddImpactDescription_Node0_action["The system adds explanatory text
describing whether quantities
increased, decreased, or were
modified"]:::main N_AddImpactDescription_Node0 -- Yes --> N_AddImpactDescription_Node0_action N_AddImpactDescription_Node0_action --> E_AddImpactDescription S_AddImpactDescription --> N_AddImpactDescription_Node0 N_AddImpactDescription_Node0 -- No --> E_AddImpactDescription
File: GCX016E.cbl
GIVEN: Before and after quantities have been shown
WHEN: Impact description is needed for clarity
THEN: The system adds explanatory text describing whether quantities increased, decreased, or were modified
βœ“ Consolidated Acceptance Criteria
  • Cargo status information is available → the system includes current cargo status 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_IncludeCargoStatusInformation(["Start Step"]) E_IncludeCargoStatusInformation(["End Step"]) N_IncludeCargoStatusInformation_Node0{"Cargo status information is
available"}:::decision N_IncludeCargoStatusInformation_Node0_action["The system includes current cargo
status details in the message"]:::main N_IncludeCargoStatusInformation_Node0 -- Yes --> N_IncludeCargoStatusInformation_Node0_action N_IncludeCargoStatusInformation_Node0_action --> E_IncludeCargoStatusInformation S_IncludeCargoStatusInformation --> N_IncludeCargoStatusInformation_Node0 N_IncludeCargoStatusInformation_Node0 -- No --> E_IncludeCargoStatusInformation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Quantity impact processing is complete or not applicable
WHEN: Cargo status information is available
THEN: The system includes current cargo status details in the message
βœ“ Consolidated Acceptance Criteria
  • Current cargo status is available in the system → the system adds the current status code and description 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_AddCurrentCargoStatus(["Start Step"]) E_AddCurrentCargoStatus(["End Step"]) N_AddCurrentCargoStatus_Node0{"Current cargo status is available
in the system"}:::decision N_AddCurrentCargoStatus_Node0_action["The system adds the current status
code and description to the message"]:::main N_AddCurrentCargoStatus_Node0 -- Yes --> N_AddCurrentCargoStatus_Node0_action N_AddCurrentCargoStatus_Node0_action --> E_AddCurrentCargoStatus S_AddCurrentCargoStatus --> N_AddCurrentCargoStatus_Node0 N_AddCurrentCargoStatus_Node0 -- No --> E_AddCurrentCargoStatus
File: GCX016E.cbl
GIVEN: Cargo status information is being included
WHEN: Current cargo status is available in the system
THEN:
  • The system adds the current status code
  • Description to the message
βœ“ Consolidated Acceptance Criteria
  • Hold or release flags are set for the cargo → the system includes the relevant hold/release flag information 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_IncludeHoldReleaseFlags(["Start Step"]) E_IncludeHoldReleaseFlags(["End Step"]) N_IncludeHoldReleaseFlags_Node0{"Hold or release flags are set for
the cargo"}:::decision N_IncludeHoldReleaseFlags_Node0_action["The system includes the relevant
holdrelease flag information in the
message"]:::main N_IncludeHoldReleaseFlags_Node0 -- Yes --> N_IncludeHoldReleaseFlags_Node0_action N_IncludeHoldReleaseFlags_Node0_action --> E_IncludeHoldReleaseFlags S_IncludeHoldReleaseFlags --> N_IncludeHoldReleaseFlags_Node0 N_IncludeHoldReleaseFlags_Node0 -- No --> E_IncludeHoldReleaseFlags
File: GCX016E.cbl
GIVEN: Current cargo status has been added to the message
WHEN: Hold or release flags are set for the cargo
THEN: The system includes the relevant hold/release flag information in the message
βœ“ Consolidated Acceptance Criteria
  • K1 comments processing is initiated → the system evaluates available K1 comments for potential inclusion
  • Building comprehensive Merlin message → k1 comments are processed and evaluated for inclusion 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_ProcessK1Comments(["Start Step"]) E_ProcessK1Comments(["End Step"]) N_ProcessK1Comments_Node0{"K1 comments processing is initiated"}:::decision N_ProcessK1Comments_Node0_action["The system evaluates available K1
comments for potential inclusion"]:::main N_ProcessK1Comments_Node0 -- Yes --> N_ProcessK1Comments_Node0_action N_ProcessK1Comments_Node0_action --> E_ProcessK1Comments S_ProcessK1Comments --> N_ProcessK1Comments_Node0 N_ProcessK1Comments_Node1{"Building comprehensive Merlin
message"}:::decision N_ProcessK1Comments_Node1_action["K1 comments are processed and
evaluated for inclusion in the
message"]:::main N_ProcessK1Comments_Node1 -- Yes --> N_ProcessK1Comments_Node1_action N_ProcessK1Comments_Node1_action --> E_ProcessK1Comments N_ProcessK1Comments_Node0 -- No --> N_ProcessK1Comments_Node1 N_ProcessK1Comments_Node1 -- No --> E_ProcessK1Comments
File: GCX016E.cbl
GIVEN: Hold/release flags have been included in the message
WHEN: K1 comments processing is initiated
THEN: The system evaluates available K1 comments for potential inclusion
File: GCX016E.cbl
GIVEN: K1 segment data exists for the cargo
WHEN: Building comprehensive Merlin message
THEN:
  • K1 comments are processed
  • Evaluated for inclusion in the message
βœ“ Consolidated Acceptance Criteria
  • If K1 comment availability → the system determines if valid K1 comments exist for message inclusion
  • Determining message content components → if K1 comments are available and relevant, they are included; otherwise, processing continues without them
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 evaluates K1 comment
availability"}:::decision N_K1CommentsAvailable_Node0_action["The system determines if valid K1
comments exist for message inclusion"]:::main N_K1CommentsAvailable_Node0 -- Yes --> N_K1CommentsAvailable_Node0_action N_K1CommentsAvailable_Node0_action --> E_K1CommentsAvailable S_K1CommentsAvailable --> N_K1CommentsAvailable_Node0 N_K1CommentsAvailable_Node1{"Determining message content
components"}:::decision N_K1CommentsAvailable_Node1_action["If K1 comments are available and
relevant, they are included
otherwise, processing continues
without them"]:::main N_K1CommentsAvailable_Node1 -- Yes --> N_K1CommentsAvailable_Node1_action N_K1CommentsAvailable_Node1_action --> E_K1CommentsAvailable N_K1CommentsAvailable_Node0 -- No --> N_K1CommentsAvailable_Node1 N_K1CommentsAvailable_Node1 -- No --> E_K1CommentsAvailable
File: GCX016E.cbl
GIVEN: K1 comments processing has been initiated
WHEN: The system evaluates K1 comment availability
THEN: The system determines if valid K1 comments exist for message inclusion
File: GCX016E.cbl
GIVEN: K1 segment processing has been completed
WHEN: Determining message content components
THEN:
  • If k1 comments are available
  • Relevant, they are included; otherwise, processing continues without them
βœ“ Consolidated Acceptance Criteria
  • Special comments are available for the cargo or processing event → the system adds the special comments to enhance message content
  • Building comprehensive message content → special comments are added to provide additional context and information
  • The system processes special comments from K1 segments and other relevant sources → up to 3 lines of special comments and up to 4 lines of K1 comments are added to the notification message 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_AddSpecialComments(["Start Step"]) E_AddSpecialComments(["End Step"]) N_AddSpecialComments_Node0{"Special comments are available for
the cargo or processing event"}:::decision N_AddSpecialComments_Node0_action["The system adds the special
comments to enhance message content"]:::main N_AddSpecialComments_Node0 -- Yes --> N_AddSpecialComments_Node0_action N_AddSpecialComments_Node0_action --> E_AddSpecialComments S_AddSpecialComments --> N_AddSpecialComments_Node0 N_AddSpecialComments_Node1{"Building comprehensive message
content"}:::decision N_AddSpecialComments_Node1_action["Special comments are added to
provide additional context and
information"]:::main N_AddSpecialComments_Node1 -- Yes --> N_AddSpecialComments_Node1_action N_AddSpecialComments_Node1_action --> E_AddSpecialComments N_AddSpecialComments_Node0 -- No --> N_AddSpecialComments_Node1 N_AddSpecialComments_Node2{"The system processes special
comments from K1 segments and other
relevant sources"}:::decision N_AddSpecialComments_Node2_action["Up to 3 lines of special comments
and up to 4 lines of K1 comments are
added to the notification message if
available"]:::main N_AddSpecialComments_Node2 -- Yes --> N_AddSpecialComments_Node2_action N_AddSpecialComments_Node2_action --> E_AddSpecialComments N_AddSpecialComments_Node1 -- No --> N_AddSpecialComments_Node2 N_AddSpecialComments_Node2 -- No --> E_AddSpecialComments
File: GCX016E.cbl
GIVEN: Processing details have been included in the message
WHEN: Special comments are available for the cargo or processing event
THEN: The system adds the special comments to enhance message content
File: GCX016E.cbl
GIVEN: Special comments exist for the cargo or processing event
WHEN: Building comprehensive message content
THEN:
  • Special comments are added to provide additional context
  • Information
File: GCX016E.cbl
GIVEN: A CPR bond notification message has been formatted
WHEN:
  • The system processes special comments from k1 segments
  • Other relevant sources
THEN:
  • Up to 3 lines of special comments
  • Up to 4 lines of k1 comments are added to the notification message if available
βœ“ Consolidated Acceptance Criteria
  • If bond creation requirements → the system determines if Canadian Pacific Railway bond processing is involved
  • Evaluating special processing requirements → if Canadian Pacific Railway bond processing is detected, special bond notification is added; otherwise, standard 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_CanadianPacificRailwayBond(["Start Step"]) E_CanadianPacificRailwayBond(["End Step"]) N_CanadianPacificRailwayBond_Node0{"The system evaluates bond creation
requirements"}:::decision N_CanadianPacificRailwayBond_Node0_action["The system determines if Canadian
Pacific Railway bond processing is
involved"]:::main N_CanadianPacificRailwayBond_Node0 -- Yes --> N_CanadianPacificRailwayBond_Node0_action N_CanadianPacificRailwayBond_Node0_action --> E_CanadianPacificRailwayBond S_CanadianPacificRailwayBond --> N_CanadianPacificRailwayBond_Node0 N_CanadianPacificRailwayBond_Node1{"Evaluating special processing
requirements"}:::decision N_CanadianPacificRailwayBond_Node1_action["If Canadian Pacific Railway bond
processing is detected, special bond
notification is added otherwise,
standard processing continues"]:::main N_CanadianPacificRailwayBond_Node1 -- Yes --> N_CanadianPacificRailwayBond_Node1_action N_CanadianPacificRailwayBond_Node1_action --> E_CanadianPacificRailwayBond N_CanadianPacificRailwayBond_Node0 -- No --> N_CanadianPacificRailwayBond_Node1 N_CanadianPacificRailwayBond_Node1 -- No --> E_CanadianPacificRailwayBond
File: GCX016E.cbl
GIVEN: Special comments have been processed
WHEN: The system evaluates bond creation requirements
THEN: The system determines if Canadian Pacific Railway bond processing is involved
File: GCX016E.cbl
GIVEN: Cargo processing involves bond-related activities
WHEN: Evaluating special processing requirements
THEN: If Canadian Pacific Railway bond processing is detected, special bond notification is added; otherwise, standard processing continues
βœ“ Consolidated Acceptance Criteria
  • Bond creation notice is required → the system adds CPR bond creation notification text 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_AddCPRBondCreationNotice(["Start Step"]) E_AddCPRBondCreationNotice(["End Step"]) N_AddCPRBondCreationNotice_Node0{"Bond creation notice is required"}:::decision N_AddCPRBondCreationNotice_Node0_action["The system adds CPR bond creation
notification text to the message"]:::main N_AddCPRBondCreationNotice_Node0 -- Yes --> N_AddCPRBondCreationNotice_Node0_action N_AddCPRBondCreationNotice_Node0_action --> E_AddCPRBondCreationNotice S_AddCPRBondCreationNotice --> N_AddCPRBondCreationNotice_Node0 N_AddCPRBondCreationNotice_Node0 -- No --> E_AddCPRBondCreationNotice
File: GCX016E.cbl
GIVEN: Canadian Pacific Railway bond processing is identified
WHEN: Bond creation notice is required
THEN: The system adds CPR bond creation notification text to the message
βœ“ Consolidated Acceptance Criteria
  • Message content assembly is complete → the system finalizes the message content structure and prepares for message attributes
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_FinalizeMessageContent(["Start Step"]) E_FinalizeMessageContent(["End Step"]) N_FinalizeMessageContent_Node0{"Message content assembly is
complete"}:::decision N_FinalizeMessageContent_Node0_action["The system finalizes the message
content structure and prepares for
message attributes"]:::main N_FinalizeMessageContent_Node0 -- Yes --> N_FinalizeMessageContent_Node0_action N_FinalizeMessageContent_Node0_action --> E_FinalizeMessageContent S_FinalizeMessageContent --> N_FinalizeMessageContent_Node0 N_FinalizeMessageContent_Node0 -- No --> E_FinalizeMessageContent
File: GCX016E.cbl
GIVEN: System processing time has been added
WHEN: Message content assembly is complete
THEN:
  • The system finalizes the message content structure
  • Prepares for message attributes
βœ“ Consolidated Acceptance Criteria
  • Final message assembly is required → the system completes the Merlin message with all formatted content, 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_CompleteMerlinMessage(["Start Step"]) E_CompleteMerlinMessage(["End Step"]) N_CompleteMerlinMessage_Node0{"Final message assembly is required"}:::decision N_CompleteMerlinMessage_Node0_action["The system completes the Merlin
message with all formatted content,
ready for transmission"]:::main N_CompleteMerlinMessage_Node0 -- Yes --> N_CompleteMerlinMessage_Node0_action N_CompleteMerlinMessage_Node0_action --> E_CompleteMerlinMessage S_CompleteMerlinMessage --> N_CompleteMerlinMessage_Node0 N_CompleteMerlinMessage_Node0 -- No --> E_CompleteMerlinMessage
File: GCX016E.cbl
GIVEN: Message type and priority have been set
WHEN: Final message assembly is required
THEN: The system completes the Merlin message with all formatted content, ready for transmission
βœ“ Consolidated Acceptance Criteria
  • The K1 segment contains 'DIRECTOR OF CUSTOMS, CP RAIL':
    • 'CANADIAN PACIFIC LIMITED'
    • 'CANADIAN PACIFIC RAILWAY CO'
    → the message is identified as a Canadian Pacific Railway bond creation 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_IdentifyCanadianPacificRailwayBondCreation(["Start Step"]) E_IdentifyCanadianPacificRailwayBondCreation(["End Step"]) N_IdentifyCanadianPacificRailwayBondCreation_Node0{"The K1 segment contains DIRECTOR OF
CUSTOMS, CP RAIL OR CANADIAN PACIFIC
LIMITED OR CANADIAN PACIFIC RAILWAY
CO"}:::decision N_IdentifyCanadianPacificRailwayBondCreation_Node0_action["The message is identified as a
Canadian Pacific Railway bond
creation request"]:::main N_IdentifyCanadianPacificRailwayBondCreation_Node0 -- Yes --> N_IdentifyCanadianPacificRailwayBondCreation_Node0_action N_IdentifyCanadianPacificRailwayBondCreation_Node0_action --> E_IdentifyCanadianPacificRailwayBondCreation S_IdentifyCanadianPacificRailwayBondCreation --> N_IdentifyCanadianPacificRailwayBondCreation_Node0 N_IdentifyCanadianPacificRailwayBondCreation_Node0 -- No --> E_IdentifyCanadianPacificRailwayBondCreation
File: GCX016E.cbl
GIVEN: A K1 free-form text segment is received
WHEN: The K1 segment contains 'DIRECTOR OF CUSTOMS, CP RAIL' OR 'CANADIAN PACIFIC LIMITED' OR 'CANADIAN PACIFIC RAILWAY CO'
THEN: The message is identified as a Canadian Pacific Railway bond creation request
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment content → bond information including bond number, broker details, and creation request data is extracted from the free-form text
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ExtractBondInformationfromK1Segment(["Start Step"]) E_ExtractBondInformationfromK1Segment(["End Step"]) N_ExtractBondInformationfromK1Segment_Node0{"The system processes the K1 segment
content"}:::decision N_ExtractBondInformationfromK1Segment_Node0_action["Bond information including bond
number, broker details, and creation
request data is extracted from the
free-form text"]:::main N_ExtractBondInformationfromK1Segment_Node0 -- Yes --> N_ExtractBondInformationfromK1Segment_Node0_action N_ExtractBondInformationfromK1Segment_Node0_action --> E_ExtractBondInformationfromK1Segment S_ExtractBondInformationfromK1Segment --> N_ExtractBondInformationfromK1Segment_Node0 N_ExtractBondInformationfromK1Segment_Node0 -- No --> E_ExtractBondInformationfromK1Segment
File: GCX016E.cbl
GIVEN: A K1 segment is identified as Canadian Pacific Railway bond creation
WHEN: The system processes the K1 segment content
THEN: Bond information including bond number, broker details, and creation request data is extracted from the free-form text
βœ“ Consolidated Acceptance Criteria
  • Special comments are added to the message → cPR-specific identifiers and comments are included 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_AddSpecialCommentsforCPRBond(["Start Step"]) E_AddSpecialCommentsforCPRBond(["End Step"]) N_AddSpecialCommentsforCPRBond_Node0{"Special comments are added to the
message"}:::decision N_AddSpecialCommentsforCPRBond_Node0_action["CPR-specific identifiers and
comments are included in the
notification message"]:::main N_AddSpecialCommentsforCPRBond_Node0 -- Yes --> N_AddSpecialCommentsforCPRBond_Node0_action N_AddSpecialCommentsforCPRBond_Node0_action --> E_AddSpecialCommentsforCPRBond S_AddSpecialCommentsforCPRBond --> N_AddSpecialCommentsforCPRBond_Node0 N_AddSpecialCommentsforCPRBond_Node0 -- No --> E_AddSpecialCommentsforCPRBond
File: GCX016E.cbl
GIVEN: A bond creation notification is being formatted for Canadian Pacific Railway
WHEN: Special comments are added to the message
THEN:
  • Cpr-specific identifiers
  • Comments are included in the notification message
βœ“ Consolidated Acceptance Criteria
  • Bond details are included in the message → complete bond information including bond number, broker details, and creation context is added to the Merlin 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_IncludeBondDetailsinMessage(["Start Step"]) E_IncludeBondDetailsinMessage(["End Step"]) N_IncludeBondDetailsinMessage_Node0{"Bond details are included in the
message"}:::decision N_IncludeBondDetailsinMessage_Node0_action["Complete bond information including
bond number, broker details, and
creation context is added to the
Merlin message"]:::main N_IncludeBondDetailsinMessage_Node0 -- Yes --> N_IncludeBondDetailsinMessage_Node0_action N_IncludeBondDetailsinMessage_Node0_action --> E_IncludeBondDetailsinMessage S_IncludeBondDetailsinMessage --> N_IncludeBondDetailsinMessage_Node0 N_IncludeBondDetailsinMessage_Node0 -- No --> E_IncludeBondDetailsinMessage
File: GCX016E.cbl
GIVEN: A bond creation notification message is being prepared
WHEN: Bond details are included in the message
THEN: Complete bond information including bond number, broker details, and creation context is added to the Merlin message
βœ“ Consolidated Acceptance Criteria
  • The comprehensive Merlin notification is created → a complete notification message is generated with all bond creation information formatted for business user 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_CreateComprehensiveMerlinNotification(["Start Step"]) E_CreateComprehensiveMerlinNotification(["End Step"]) N_CreateComprehensiveMerlinNotification_Node0{"The comprehensive Merlin
notification is created"}:::decision N_CreateComprehensiveMerlinNotification_Node0_action["A complete notification message is
generated with all bond creation
information formatted for business
user consumption"]:::main N_CreateComprehensiveMerlinNotification_Node0 -- Yes --> N_CreateComprehensiveMerlinNotification_Node0_action N_CreateComprehensiveMerlinNotification_Node0_action --> E_CreateComprehensiveMerlinNotification S_CreateComprehensiveMerlinNotification --> N_CreateComprehensiveMerlinNotification_Node0 N_CreateComprehensiveMerlinNotification_Node0 -- No --> E_CreateComprehensiveMerlinNotification
File: GCX016E.cbl
GIVEN: Bond details and special comments have been prepared
WHEN: The comprehensive Merlin notification is created
THEN: A complete notification message is generated with all bond creation information formatted for business user consumption
βœ“ Consolidated Acceptance Criteria
  • Bond validation fails due to incomplete or invalid information → an error message is generated indicating the specific validation failure and the bond creation request 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_GenerateErrorMessageforInvalidBond(["Start Step"]) E_GenerateErrorMessageforInvalidBond(["End Step"]) N_GenerateErrorMessageforInvalidBond_Node0{"Bond validation fails due to
incomplete or invalid information"}:::decision N_GenerateErrorMessageforInvalidBond_Node0_action["An error message is generated
indicating the specific validation
failure and the bond creation
request is rejected"]:::exclusion N_GenerateErrorMessageforInvalidBond_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidBond_Node0_action N_GenerateErrorMessageforInvalidBond_Node0_action --> E_GenerateErrorMessageforInvalidBond S_GenerateErrorMessageforInvalidBond --> N_GenerateErrorMessageforInvalidBond_Node0 N_GenerateErrorMessageforInvalidBond_Node0 -- No --> E_GenerateErrorMessageforInvalidBond
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Bond information has been extracted from K1 segment
WHEN: Bond validation fails due to incomplete or invalid information
THEN:
  • An error message is generated indicating the specific validation failure
  • The bond creation request is rejected
βœ“ Consolidated Acceptance Criteria
  • If the disposition code's quantity impact characteristics → the action type is classified as Add Action, Subtract Action, or Status Info Only based on the disposition code properties
  • If the disposition code's impact on quantities → the action type is identified as either quantity addition, quantity subtraction, or no quantity 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_IdentifyDispositionCodeActionType(["Start Step"]) E_IdentifyDispositionCodeActionType(["End Step"]) N_IdentifyDispositionCodeActionType_Node0{"The system evaluates the
disposition code s quantity impact
characteristics"}:::decision N_IdentifyDispositionCodeActionType_Node0_action["The action type is classified as
Add Action, Subtract Action, or
Status Info Only based on the
disposition code properties"]:::main N_IdentifyDispositionCodeActionType_Node0 -- Yes --> N_IdentifyDispositionCodeActionType_Node0_action N_IdentifyDispositionCodeActionType_Node0_action --> E_IdentifyDispositionCodeActionType S_IdentifyDispositionCodeActionType --> N_IdentifyDispositionCodeActionType_Node0 N_IdentifyDispositionCodeActionType_Node1{"The system evaluates the
disposition code s impact on
quantities"}:::decision N_IdentifyDispositionCodeActionType_Node1_action["The action type is identified as
either quantity addition, quantity
subtraction, or no quantity change"]:::main N_IdentifyDispositionCodeActionType_Node1 -- Yes --> N_IdentifyDispositionCodeActionType_Node1_action N_IdentifyDispositionCodeActionType_Node1_action --> E_IdentifyDispositionCodeActionType N_IdentifyDispositionCodeActionType_Node0 -- No --> N_IdentifyDispositionCodeActionType_Node1 N_IdentifyDispositionCodeActionType_Node1 -- No --> E_IdentifyDispositionCodeActionType
File: GCX016E.cbl
GIVEN: A disposition code is being processed for cargo
WHEN: The system evaluates the disposition code's quantity impact characteristics
THEN: The action type is classified as Add Action, Subtract Action, or Status Info Only based on the disposition code properties
File: GCX016E.cbl
GIVEN: A disposition code is being processed for a cargo
WHEN: The system evaluates the disposition code's impact on quantities
THEN: The action type is identified as either quantity addition, quantity subtraction, or no quantity change
βœ“ Consolidated Acceptance Criteria
  • Before and after quantity calculation is performed → the system calculates and stores both the original quantity and the new quantity after disposition code impact
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CalculateBeforeAfterQuantities(["Start Step"]) E_CalculateBeforeAfterQuantities(["End Step"]) N_CalculateBeforeAfterQuantities_Node0{"Before and after quantity
calculation is performed"}:::decision N_CalculateBeforeAfterQuantities_Node0_action["The system calculates and stores
both the original quantity and the
new quantity after disposition code
impact"]:::main N_CalculateBeforeAfterQuantities_Node0 -- Yes --> N_CalculateBeforeAfterQuantities_Node0_action N_CalculateBeforeAfterQuantities_Node0_action --> E_CalculateBeforeAfterQuantities S_CalculateBeforeAfterQuantities --> N_CalculateBeforeAfterQuantities_Node0 N_CalculateBeforeAfterQuantities_Node0 -- No --> E_CalculateBeforeAfterQuantities
File: GCX016E.cbl
GIVEN: A disposition code with quantity impact has been processed
WHEN:
  • Before
  • After quantity calculation is performed
THEN:
  • The system calculates
  • Stores both the original quantity
  • The new quantity after disposition code impact
βœ“ Consolidated Acceptance Criteria
  • The system compares the quantities for changes → if the before and after quantities are different, the system identifies that release quantity has changed, otherwise no 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_ReleaseQuantityChanged(["Start Step"]) E_ReleaseQuantityChanged(["End Step"]) N_ReleaseQuantityChanged_Node0{"The system compares the quantities
for changes"}:::decision N_ReleaseQuantityChanged_Node0_action["If the before and after quantities
are different, the system identifies
that release quantity has changed,
otherwise no change is detected"]:::main N_ReleaseQuantityChanged_Node0 -- Yes --> N_ReleaseQuantityChanged_Node0_action N_ReleaseQuantityChanged_Node0_action --> E_ReleaseQuantityChanged S_ReleaseQuantityChanged --> N_ReleaseQuantityChanged_Node0 N_ReleaseQuantityChanged_Node0 -- No --> E_ReleaseQuantityChanged
File: GCX016E.cbl
GIVEN: Before and after release quantities are available
WHEN: The system compares the quantities for changes
THEN:
  • If the before
  • After quantities are different, the system identifies that release quantity has changed, otherwise no change is detected
βœ“ Consolidated Acceptance Criteria
  • Impact description creation is initiated → a detailed description is created showing the specific quantity change amount and direction (increase/decrease)
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CreateImpactDescription(["Start Step"]) E_CreateImpactDescription(["End Step"]) N_CreateImpactDescription_Node0{"Impact description creation is
initiated"}:::decision N_CreateImpactDescription_Node0_action["A detailed description is created
showing the specific quantity change
amount and direction
increasedecrease"]:::main N_CreateImpactDescription_Node0 -- Yes --> N_CreateImpactDescription_Node0_action N_CreateImpactDescription_Node0_action --> E_CreateImpactDescription S_CreateImpactDescription --> N_CreateImpactDescription_Node0 N_CreateImpactDescription_Node0 -- No --> E_CreateImpactDescription
File: GCX016E.cbl
GIVEN: A release quantity change has been detected
WHEN: Impact description creation is initiated
THEN:
  • A detailed description is created showing the specific quantity change amount
  • Direction (increase/decrease)
βœ“ Consolidated Acceptance Criteria
  • Quantity impact reporting evaluation is performed → the system skips creating impact descriptions and does not add quantity information to 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_SkipQuantityImpactReporting(["Start Step"]) E_SkipQuantityImpactReporting(["End Step"]) N_SkipQuantityImpactReporting_Node0{"Quantity impact reporting
evaluation is performed"}:::decision N_SkipQuantityImpactReporting_Node0_action["The system skips creating impact
descriptions and does not add
quantity information to
notifications"]:::main N_SkipQuantityImpactReporting_Node0 -- Yes --> N_SkipQuantityImpactReporting_Node0_action N_SkipQuantityImpactReporting_Node0_action --> E_SkipQuantityImpactReporting S_SkipQuantityImpactReporting --> N_SkipQuantityImpactReporting_Node0 N_SkipQuantityImpactReporting_Node0 -- No --> E_SkipQuantityImpactReporting
File: GCX016E.cbl
GIVEN: No release quantity change was detected or disposition code has no quantity impact
WHEN: Quantity impact reporting evaluation is performed
THEN:
  • The system skips creating impact descriptions
  • Does not add quantity information to notifications
βœ“ Consolidated Acceptance Criteria
  • CPRS special handling is applied to the cargo record → the car ID information is cleared and CPRS-specific processing rules 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_ApplyCPRSSpecialHandling(["Start Step"]) E_ApplyCPRSSpecialHandling(["End Step"]) N_ApplyCPRSSpecialHandling_Node0{"CPRS special handling is applied to
the cargo record"}:::decision N_ApplyCPRSSpecialHandling_Node0_action["The car ID information is cleared
and CPRS-specific processing rules
are applied to the cargo record"]:::main N_ApplyCPRSSpecialHandling_Node0 -- Yes --> N_ApplyCPRSSpecialHandling_Node0_action N_ApplyCPRSSpecialHandling_Node0_action --> E_ApplyCPRSSpecialHandling S_ApplyCPRSSpecialHandling --> N_ApplyCPRSSpecialHandling_Node0 N_ApplyCPRSSpecialHandling_Node0 -- No --> E_ApplyCPRSSpecialHandling
File: GCX016E.cbl
GIVEN: A cargo record is identified as CPRS traffic
WHEN: CPRS special handling is applied to the cargo record
THEN:
  • The car id information is cleared
  • Cprs-specific processing rules are applied to the cargo record
βœ“ Consolidated Acceptance Criteria
  • Standard car ID formatting is applied → the car ID is formatted according to standard rules combining equipment initial and equipment 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_ApplyStandardCarIDFormatting(["Start Step"]) E_ApplyStandardCarIDFormatting(["End Step"]) N_ApplyStandardCarIDFormatting_Node0{"Standard car ID formatting is
applied"}:::decision N_ApplyStandardCarIDFormatting_Node0_action["The car ID is formatted according
to standard rules combining
equipment initial and equipment
number"]:::main N_ApplyStandardCarIDFormatting_Node0 -- Yes --> N_ApplyStandardCarIDFormatting_Node0_action N_ApplyStandardCarIDFormatting_Node0_action --> E_ApplyStandardCarIDFormatting S_ApplyStandardCarIDFormatting --> N_ApplyStandardCarIDFormatting_Node0 N_ApplyStandardCarIDFormatting_Node0 -- No --> E_ApplyStandardCarIDFormatting
File: GCX016E.cbl
GIVEN: A cargo record is identified as non-CPRS traffic with equipment initial and number available
WHEN: Standard car ID formatting is applied
THEN:
  • The car id is formatted according to standard rules combining equipment initial
  • Equipment number
βœ“ Consolidated Acceptance Criteria
  • Car ID formatting standards are applied → the car ID is formatted according to system standards with proper spacing, character positioning, and 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_FormatCarIDAccordingtoStandards(["Start Step"]) E_FormatCarIDAccordingtoStandards(["End Step"]) N_FormatCarIDAccordingtoStandards_Node0{"Car ID formatting standards are
applied"}:::decision N_FormatCarIDAccordingtoStandards_Node0_action["The car ID is formatted according
to system standards with proper
spacing, character positioning, and
validation"]:::main N_FormatCarIDAccordingtoStandards_Node0 -- Yes --> N_FormatCarIDAccordingtoStandards_Node0_action N_FormatCarIDAccordingtoStandards_Node0_action --> E_FormatCarIDAccordingtoStandards S_FormatCarIDAccordingtoStandards --> N_FormatCarIDAccordingtoStandards_Node0 N_FormatCarIDAccordingtoStandards_Node0 -- No --> E_FormatCarIDAccordingtoStandards
File: GCX016E.cbl
GIVEN: A cargo record has car ID information that needs formatting
WHEN: Car ID formatting standards are applied
THEN: The car ID is formatted according to system standards with proper spacing, character positioning, and validation
βœ“ Consolidated Acceptance Criteria
  • The database insertion operation is executed → the cargo record is inserted into the GCSUSRT database table and the operation result is captured
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_InsertCargoRecordintoDatabase(["Start Step"]) E_InsertCargoRecordintoDatabase(["End Step"]) N_InsertCargoRecordintoDatabase_Node0{"The database insertion operation is
executed"}:::decision N_InsertCargoRecordintoDatabase_Node0_action["The cargo record is inserted into
the GCSUSRT database table and the
operation result is captured"]:::main N_InsertCargoRecordintoDatabase_Node0 -- Yes --> N_InsertCargoRecordintoDatabase_Node0_action N_InsertCargoRecordintoDatabase_Node0_action --> E_InsertCargoRecordintoDatabase S_InsertCargoRecordintoDatabase --> N_InsertCargoRecordintoDatabase_Node0 N_InsertCargoRecordintoDatabase_Node0 -- No --> E_InsertCargoRecordintoDatabase
File: GCX016E.cbl
GIVEN: A validated cargo record is ready for database insertion
WHEN: The database insertion operation is executed
THEN:
  • The cargo record is inserted into the gcsusrt database table
  • The operation result is captured
βœ“ Consolidated Acceptance Criteria
  • Success logging is performed → the successful insertion is logged with cargo record details, timestamp, and confirmation of database 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_LogSuccessfulInsertion(["Start Step"]) E_LogSuccessfulInsertion(["End Step"]) N_LogSuccessfulInsertion_Node0{"Success logging is performed"}:::decision N_LogSuccessfulInsertion_Node0_action["The successful insertion is logged
with cargo record details,
timestamp, and confirmation of
database update"]:::main N_LogSuccessfulInsertion_Node0 -- Yes --> N_LogSuccessfulInsertion_Node0_action N_LogSuccessfulInsertion_Node0_action --> E_LogSuccessfulInsertion S_LogSuccessfulInsertion --> N_LogSuccessfulInsertion_Node0 N_LogSuccessfulInsertion_Node0 -- No --> E_LogSuccessfulInsertion
File: GCX016E.cbl
GIVEN: A cargo record has been successfully inserted into the database
WHEN: Success logging is performed
THEN: The successful insertion is logged with cargo record details, timestamp, and confirmation of database update
βœ“ Consolidated Acceptance Criteria
  • Database insert error handling is triggered → the insertion failure is logged with error details and appropriate error recovery or notification procedures are 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_HandleDatabaseInsertError(["Start Step"]) E_HandleDatabaseInsertError(["End Step"]) N_HandleDatabaseInsertError_Node0{"Database insert error handling is
triggered"}:::decision N_HandleDatabaseInsertError_Node0_action["The insertion failure is logged
with error details and appropriate
error recovery or notification
procedures are initiated"]:::exclusion N_HandleDatabaseInsertError_Node0 -- Yes -->|Alternative| N_HandleDatabaseInsertError_Node0_action N_HandleDatabaseInsertError_Node0_action --> E_HandleDatabaseInsertError S_HandleDatabaseInsertError --> N_HandleDatabaseInsertError_Node0 N_HandleDatabaseInsertError_Node0 -- No --> E_HandleDatabaseInsertError
File: GCX016E.cbl
GIVEN: A cargo record insertion operation has failed
WHEN: Database insert error handling is triggered
THEN:
  • The insertion failure is logged with error details
  • Appropriate error recovery or notification procedures are initiated
βœ“ Consolidated Acceptance Criteria
  • The system processes the M1203 segment → the location identifier is extracted from the M1203 segment 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_ExtractLocationIdentifierfromM1203Segment(["Start Step"]) E_ExtractLocationIdentifierfromM1203Segment(["End Step"]) N_ExtractLocationIdentifierfromM1203Segment_Node0{"The system processes the M1203
segment"}:::decision N_ExtractLocationIdentifierfromM1203Segment_Node0_action["The location identifier is
extracted from the M1203 segment for
further processing"]:::main N_ExtractLocationIdentifierfromM1203Segment_Node0 -- Yes --> N_ExtractLocationIdentifierfromM1203Segment_Node0_action N_ExtractLocationIdentifierfromM1203Segment_Node0_action --> E_ExtractLocationIdentifierfromM1203Segment S_ExtractLocationIdentifierfromM1203Segment --> N_ExtractLocationIdentifierfromM1203Segment_Node0 N_ExtractLocationIdentifierfromM1203Segment_Node0 -- No --> E_ExtractLocationIdentifierfromM1203Segment
File: GCX016E.cbl
GIVEN: A transit traffic request is received with M1203 segment data
WHEN: The system processes the M1203 segment
THEN: The location identifier is extracted from the M1203 segment for further processing
βœ“ Consolidated Acceptance Criteria
  • The system searches the DS table for matching station data → station information is retrieved from the DS table based on the location 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_RetrieveStationInformationfromDSTable(["Start Step"]) E_RetrieveStationInformationfromDSTable(["End Step"]) N_RetrieveStationInformationfromDSTable_Node0{"The system searches the DS table
for matching station data"}:::decision N_RetrieveStationInformationfromDSTable_Node0_action["Station information is retrieved
from the DS table based on the
location identifier"]:::main N_RetrieveStationInformationfromDSTable_Node0 -- Yes --> N_RetrieveStationInformationfromDSTable_Node0_action N_RetrieveStationInformationfromDSTable_Node0_action --> E_RetrieveStationInformationfromDSTable S_RetrieveStationInformationfromDSTable --> N_RetrieveStationInformationfromDSTable_Node0 N_RetrieveStationInformationfromDSTable_Node0 -- No --> E_RetrieveStationInformationfromDSTable
File: GCX016E.cbl
GIVEN: The generic table I/O interface has been called with a valid location identifier
WHEN: The system searches the DS table for matching station data
THEN: Station information is retrieved from the DS table based on the location identifier
βœ“ Consolidated Acceptance Criteria
  • The system checks if station data was found → if station data is found, format it for transit routing; 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_StationDataFound(["Start Step"]) E_StationDataFound(["End Step"]) N_StationDataFound_Node0{"The system checks if station data
was found"}:::decision N_StationDataFound_Node0_action["If station data is found, format it
for transit routing if not found,
generate station not found error"]:::main N_StationDataFound_Node0 -- Yes --> N_StationDataFound_Node0_action N_StationDataFound_Node0_action --> E_StationDataFound S_StationDataFound --> N_StationDataFound_Node0 N_StationDataFound_Node0 -- No --> E_StationDataFound
File: GCX016E.cbl
GIVEN: A search for station information has been performed in the DS table
WHEN: The system checks if station data was found
THEN: If station data is found, format it for transit routing; if not found, generate station not found error
βœ“ Consolidated Acceptance Criteria
  • The system formats the station information → station information is formatted in the required structure for transit routing 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_FormatStationInformationforTransitRouting(["Start Step"]) E_FormatStationInformationforTransitRouting(["End Step"]) N_FormatStationInformationforTransitRouting_Node0{"The system formats the station
information"}:::decision N_FormatStationInformationforTransitRouting_Node0_action["Station information is formatted in
the required structure for transit
routing operations"]:::main N_FormatStationInformationforTransitRouting_Node0 -- Yes --> N_FormatStationInformationforTransitRouting_Node0_action N_FormatStationInformationforTransitRouting_Node0_action --> E_FormatStationInformationforTransitRouting S_FormatStationInformationforTransitRouting --> N_FormatStationInformationforTransitRouting_Node0 N_FormatStationInformationforTransitRouting_Node0 -- No --> E_FormatStationInformationforTransitRouting
File: GCX016E.cbl
GIVEN: Station data has been successfully retrieved from the DS table
WHEN: The system formats the station information
THEN: Station information is formatted in the required structure for transit routing operations
βœ“ Consolidated Acceptance Criteria
  • The processing is complete → the formatted station data 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_ReturnStationDatatoCallingProcess(["Start Step"]) E_ReturnStationDatatoCallingProcess(["End Step"]) N_ReturnStationDatatoCallingProcess_Node0{"The processing is complete"}:::decision N_ReturnStationDatatoCallingProcess_Node0_action["The formatted station data is
returned to the calling process"]:::main N_ReturnStationDatatoCallingProcess_Node0 -- Yes --> N_ReturnStationDatatoCallingProcess_Node0_action N_ReturnStationDatatoCallingProcess_Node0_action --> E_ReturnStationDatatoCallingProcess S_ReturnStationDatatoCallingProcess --> N_ReturnStationDatatoCallingProcess_Node0 N_ReturnStationDatatoCallingProcess_Node0 -- No --> E_ReturnStationDatatoCallingProcess
File: GCX016E.cbl
GIVEN: Station information has been successfully formatted for transit routing
WHEN: The processing is complete
THEN: The formatted station data is returned to the calling process
βœ“ Consolidated Acceptance Criteria
  • The system processes the invalid location identifier → an invalid location identifier error is logged and error 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_LogInvalidLocationIdentifier(["Start Step"]) E_LogInvalidLocationIdentifier(["End Step"]) N_LogInvalidLocationIdentifier_Node0{"The system processes the invalid
location identifier"}:::decision N_LogInvalidLocationIdentifier_Node0_action["An invalid location identifier
error is logged and error is
returned to calling process"]:::exclusion N_LogInvalidLocationIdentifier_Node0 -- Yes -->|Alternative| N_LogInvalidLocationIdentifier_Node0_action N_LogInvalidLocationIdentifier_Node0_action --> E_LogInvalidLocationIdentifier S_LogInvalidLocationIdentifier --> N_LogInvalidLocationIdentifier_Node0 N_LogInvalidLocationIdentifier_Node0 -- No --> E_LogInvalidLocationIdentifier
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A location identifier has failed format validation
WHEN: The system processes the invalid location identifier
THEN:
  • An invalid location identifier error is logged
  • Error is returned to calling process
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve station information → the GCCTBIO table I/O interface is invoked to access 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_CallGCCTBIOTableIOInterface(["Start Step"]) E_CallGCCTBIOTableIOInterface(["End Step"]) N_CallGCCTBIOTableIOInterface_Node0{"The system needs to retrieve
station information"}:::decision N_CallGCCTBIOTableIOInterface_Node0_action["The GCCTBIO table IO interface is
invoked to access the DS table"]:::main N_CallGCCTBIOTableIOInterface_Node0 -- Yes --> N_CallGCCTBIOTableIOInterface_Node0_action N_CallGCCTBIOTableIOInterface_Node0_action --> E_CallGCCTBIOTableIOInterface S_CallGCCTBIOTableIOInterface --> N_CallGCCTBIOTableIOInterface_Node0 N_CallGCCTBIOTableIOInterface_Node0 -- No --> E_CallGCCTBIOTableIOInterface
File: GCX016E.cbl
GIVEN: The DS table type is configured and location identifier is available
WHEN: The system needs to retrieve station information
THEN: The GCCTBIO table I/O interface is invoked to access the DS table
βœ“ Consolidated Acceptance Criteria
  • The system processes the retrieved station record → station name and relevant details are extracted from the 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_ExtractStationNameandDetails(["Start Step"]) E_ExtractStationNameandDetails(["End Step"]) N_ExtractStationNameandDetails_Node0{"The system processes the retrieved
station record"}:::decision N_ExtractStationNameandDetails_Node0_action["Station name and relevant details
are extracted from the record"]:::main N_ExtractStationNameandDetails_Node0 -- Yes --> N_ExtractStationNameandDetails_Node0_action N_ExtractStationNameandDetails_Node0_action --> E_ExtractStationNameandDetails S_ExtractStationNameandDetails --> N_ExtractStationNameandDetails_Node0 N_ExtractStationNameandDetails_Node0 -- No --> E_ExtractStationNameandDetails
File: GCX016E.cbl
GIVEN: Station information has been successfully retrieved from the DS table
WHEN: The system processes the retrieved station record
THEN:
  • Station name
  • Relevant details are extracted from the record
βœ“ Consolidated Acceptance Criteria
  • The system prepares cargo routing information → the station data is set and made available for cargo routing 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_SetStationDataforCargoRouting(["Start Step"]) E_SetStationDataforCargoRouting(["End Step"]) N_SetStationDataforCargoRouting_Node0{"The system prepares cargo routing
information"}:::decision N_SetStationDataforCargoRouting_Node0_action["The station data is set and made
available for cargo routing purposes"]:::main N_SetStationDataforCargoRouting_Node0 -- Yes --> N_SetStationDataforCargoRouting_Node0_action N_SetStationDataforCargoRouting_Node0_action --> E_SetStationDataforCargoRouting S_SetStationDataforCargoRouting --> N_SetStationDataforCargoRouting_Node0 N_SetStationDataforCargoRouting_Node0 -- No --> E_SetStationDataforCargoRouting
File: GCX016E.cbl
GIVEN: Station name and details have been extracted from the DS table record
WHEN: The system prepares cargo routing information
THEN:
  • The station data is set
  • Made available for cargo routing purposes
βœ“ Consolidated Acceptance Criteria
  • The system cannot obtain specific station information → processing continues with default 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_ContinuewithDefaultRouting(["Start Step"]) E_ContinuewithDefaultRouting(["End Step"]) N_ContinuewithDefaultRouting_Node0{"The system cannot obtain specific
station information"}:::decision N_ContinuewithDefaultRouting_Node0_action["Processing continues with default
routing configuration"]:::main N_ContinuewithDefaultRouting_Node0 -- Yes --> N_ContinuewithDefaultRouting_Node0_action N_ContinuewithDefaultRouting_Node0_action --> E_ContinuewithDefaultRouting S_ContinuewithDefaultRouting --> N_ContinuewithDefaultRouting_Node0 N_ContinuewithDefaultRouting_Node0 -- No --> E_ContinuewithDefaultRouting
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Either no location identifier is present or station record is not found
WHEN: The system cannot obtain specific station information
THEN: Processing continues with default routing configuration
βœ“ Consolidated Acceptance Criteria
  • The system processes the X4 segment for location validation → the location code is extracted and prepared for key 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_ExtractLocationCodefromX4Segment(["Start Step"]) E_ExtractLocationCodefromX4Segment(["End Step"]) N_ExtractLocationCodefromX4Segment_Node0{"The system processes the X4 segment
for location validation"}:::decision N_ExtractLocationCodefromX4Segment_Node0_action["The location code is extracted and
prepared for key station lookup"]:::main N_ExtractLocationCodefromX4Segment_Node0 -- Yes --> N_ExtractLocationCodefromX4Segment_Node0_action N_ExtractLocationCodefromX4Segment_Node0_action --> E_ExtractLocationCodefromX4Segment S_ExtractLocationCodefromX4Segment --> N_ExtractLocationCodefromX4Segment_Node0 N_ExtractLocationCodefromX4Segment_Node0 -- No --> E_ExtractLocationCodefromX4Segment
File: GCX016E.cbl
GIVEN: An X4 segment contains location information
WHEN: The system processes the X4 segment for location validation
THEN:
  • The location code is extracted
  • Prepared for key station lookup
βœ“ Consolidated Acceptance Criteria
  • The system prepares for table lookup operation → the table type is set to KS for Key Station 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_SetTableTypetoKSKeyStation(["Start Step"]) E_SetTableTypetoKSKeyStation(["End Step"]) N_SetTableTypetoKSKeyStation_Node0{"The system prepares for table
lookup operation"}:::decision N_SetTableTypetoKSKeyStation_Node0_action["The table type is set to KS for Key
Station table access"]:::main N_SetTableTypetoKSKeyStation_Node0 -- Yes --> N_SetTableTypetoKSKeyStation_Node0_action N_SetTableTypetoKSKeyStation_Node0_action --> E_SetTableTypetoKSKeyStation S_SetTableTypetoKSKeyStation --> N_SetTableTypetoKSKeyStation_Node0 N_SetTableTypetoKSKeyStation_Node0 -- No --> E_SetTableTypetoKSKeyStation
File: GCX016E.cbl
GIVEN: A location code needs to be validated against key station data
WHEN: The system prepares for table lookup operation
THEN: The table type is set to KS for Key Station table access
βœ“ Consolidated Acceptance Criteria
  • The system needs to validate location against key station data → gCCTBIO table lookup interface is called to retrieve 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_CallGCCTBIOTableLookupInterface(["Start Step"]) E_CallGCCTBIOTableLookupInterface(["End Step"]) N_CallGCCTBIOTableLookupInterface_Node0{"The system needs to validate
location against key station data"}:::decision N_CallGCCTBIOTableLookupInterface_Node0_action["GCCTBIO table lookup interface is
called to retrieve station
information"]:::main N_CallGCCTBIOTableLookupInterface_Node0 -- Yes --> N_CallGCCTBIOTableLookupInterface_Node0_action N_CallGCCTBIOTableLookupInterface_Node0_action --> E_CallGCCTBIOTableLookupInterface S_CallGCCTBIOTableLookupInterface --> N_CallGCCTBIOTableLookupInterface_Node0 N_CallGCCTBIOTableLookupInterface_Node0 -- No --> E_CallGCCTBIOTableLookupInterface
File: GCX016E.cbl
GIVEN: Location code and table type KS are configured
WHEN: The system needs to validate location against key station data
THEN: GCCTBIO table lookup interface is called to retrieve station information
βœ“ Consolidated Acceptance Criteria
  • The location validation process completes successfully → validated location information 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_ReturnValidatedLocationInformation(["Start Step"]) E_ReturnValidatedLocationInformation(["End Step"]) N_ReturnValidatedLocationInformation_Node0{"The location validation process
completes successfully"}:::decision N_ReturnValidatedLocationInformation_Node0_action["Validated location information is
returned to the requesting process"]:::main N_ReturnValidatedLocationInformation_Node0 -- Yes --> N_ReturnValidatedLocationInformation_Node0_action N_ReturnValidatedLocationInformation_Node0_action --> E_ReturnValidatedLocationInformation S_ReturnValidatedLocationInformation --> N_ReturnValidatedLocationInformation_Node0 N_ReturnValidatedLocationInformation_Node0 -- No --> E_ReturnValidatedLocationInformation
File: GCX016E.cbl
GIVEN: Station data fields have been populated with valid information
WHEN: The location validation process completes successfully
THEN: Validated location information is returned to the requesting process
βœ“ Consolidated Acceptance Criteria
  • The table lookup fails to find a matching station record → a location validation error is generated for the invalid 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_GenerateLocationValidationError(["Start Step"]) E_GenerateLocationValidationError(["End Step"]) N_GenerateLocationValidationError_Node0{"The table lookup fails to find a
matching station record"}:::decision N_GenerateLocationValidationError_Node0_action["A location validation error is
generated for the invalid location"]:::main N_GenerateLocationValidationError_Node0 -- Yes --> N_GenerateLocationValidationError_Node0_action N_GenerateLocationValidationError_Node0_action --> E_GenerateLocationValidationError S_GenerateLocationValidationError --> N_GenerateLocationValidationError_Node0 N_GenerateLocationValidationError_Node0 -- No --> E_GenerateLocationValidationError
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A location code does not exist in the KS key station table
WHEN: The table lookup fails to find a matching station record
THEN: A location validation error is generated for the invalid location
βœ“ Consolidated Acceptance Criteria
  • The system handles the invalid location condition → an error flag is set to indicate invalid location 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_SetErrorFlagforInvalidLocation(["Start Step"]) E_SetErrorFlagforInvalidLocation(["End Step"]) N_SetErrorFlagforInvalidLocation_Node0{"The system handles the invalid
location condition"}:::decision N_SetErrorFlagforInvalidLocation_Node0_action["An error flag is set to indicate
invalid location status"]:::exclusion N_SetErrorFlagforInvalidLocation_Node0 -- Yes -->|Alternative| N_SetErrorFlagforInvalidLocation_Node0_action N_SetErrorFlagforInvalidLocation_Node0_action --> E_SetErrorFlagforInvalidLocation S_SetErrorFlagforInvalidLocation --> N_SetErrorFlagforInvalidLocation_Node0 N_SetErrorFlagforInvalidLocation_Node0 -- No --> E_SetErrorFlagforInvalidLocation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A location validation error has been generated
WHEN: The system handles the invalid location condition
THEN: An error flag is set to indicate invalid location status
βœ“ Consolidated Acceptance Criteria
  • The system continues with subsequent processing steps → processing continues with error status maintained 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 continues with
subsequent processing steps"}:::decision N_ContinueProcessingwithErrorStatus_Node0_action["Processing continues with error
status maintained 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: GCX016E.cbl
GIVEN: An error flag has been set for invalid location
WHEN: The system continues with subsequent processing steps
THEN: Processing continues with error status maintained for downstream handling
βœ“ Consolidated Acceptance Criteria
  • The generic table I/O interface is invoked → the system should route the request to the appropriate table lookup service
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_GenericTableIORequest(["Start Step"]) E_GenericTableIORequest(["End Step"]) N_GenericTableIORequest_Node0{"The generic table IO interface is
invoked"}:::decision N_GenericTableIORequest_Node0_action["The system should route the request
to the appropriate table lookup
service"]:::main N_GenericTableIORequest_Node0 -- Yes --> N_GenericTableIORequest_Node0_action N_GenericTableIORequest_Node0_action --> E_GenericTableIORequest S_GenericTableIORequest --> N_GenericTableIORequest_Node0 N_GenericTableIORequest_Node0 -- No --> E_GenericTableIORequest
File: GCX016E.cbl
GIVEN: A request is made for table data retrieval
WHEN: The generic table I/O interface is invoked
THEN: The system should route the request to the appropriate table lookup service
βœ“ Consolidated Acceptance Criteria
  • The station data processing is initiated → the system should prepare to retrieve station-specific information from the table interface
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_StationDataLookupRequest(["Start Step"]) E_StationDataLookupRequest(["End Step"]) N_StationDataLookupRequest_Node0{"The station data processing is
initiated"}:::decision N_StationDataLookupRequest_Node0_action["The system should prepare to
retrieve station-specific
information from the table interface"]:::main N_StationDataLookupRequest_Node0 -- Yes --> N_StationDataLookupRequest_Node0_action N_StationDataLookupRequest_Node0_action --> E_StationDataLookupRequest S_StationDataLookupRequest --> N_StationDataLookupRequest_Node0 N_StationDataLookupRequest_Node0 -- No --> E_StationDataLookupRequest
File: GCX016E.cbl
GIVEN: A request is classified as station data lookup
WHEN: The station data processing is initiated
THEN: The system should prepare to retrieve station-specific information from the table interface
βœ“ Consolidated Acceptance Criteria
  • The broker data processing is initiated → the system should prepare to retrieve broker-specific information from the table interface
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_BrokerInformationRequest(["Start Step"]) E_BrokerInformationRequest(["End Step"]) N_BrokerInformationRequest_Node0{"The broker data processing is
initiated"}:::decision N_BrokerInformationRequest_Node0_action["The system should prepare to
retrieve broker-specific information
from the table interface"]:::main N_BrokerInformationRequest_Node0 -- Yes --> N_BrokerInformationRequest_Node0_action N_BrokerInformationRequest_Node0_action --> E_BrokerInformationRequest S_BrokerInformationRequest --> N_BrokerInformationRequest_Node0 N_BrokerInformationRequest_Node0 -- No --> E_BrokerInformationRequest
File: GCX016E.cbl
GIVEN: A request is classified as broker information lookup
WHEN: The broker data processing is initiated
THEN: The system should prepare to retrieve broker-specific information from the table interface
βœ“ Consolidated Acceptance Criteria
  • The other table type processing is initiated → the system should prepare to retrieve the specified table information from the generic interface
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_OtherTableTypeRequest(["Start Step"]) E_OtherTableTypeRequest(["End Step"]) N_OtherTableTypeRequest_Node0{"The other table type processing is
initiated"}:::decision N_OtherTableTypeRequest_Node0_action["The system should prepare to
retrieve the specified table
information from the generic
interface"]:::main N_OtherTableTypeRequest_Node0 -- Yes --> N_OtherTableTypeRequest_Node0_action N_OtherTableTypeRequest_Node0_action --> E_OtherTableTypeRequest S_OtherTableTypeRequest --> N_OtherTableTypeRequest_Node0 N_OtherTableTypeRequest_Node0 -- No --> E_OtherTableTypeRequest
File: GCX016E.cbl
GIVEN: A request is classified as other table type
WHEN: The other table type processing is initiated
THEN: The system should prepare to retrieve the specified table information from the generic interface
βœ“ Consolidated Acceptance Criteria
  • The broker name lookup is executed → the system should retrieve broker name details from the GCSTBRT table 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_RetrieveBrokerNameData(["Start Step"]) E_RetrieveBrokerNameData(["End Step"]) N_RetrieveBrokerNameData_Node0{"The broker name lookup is executed"}:::decision N_RetrieveBrokerNameData_Node0_action["The system should retrieve broker
name details from the GCSTBRT table
segments"]:::main N_RetrieveBrokerNameData_Node0 -- Yes --> N_RetrieveBrokerNameData_Node0_action N_RetrieveBrokerNameData_Node0_action --> E_RetrieveBrokerNameData S_RetrieveBrokerNameData --> N_RetrieveBrokerNameData_Node0 N_RetrieveBrokerNameData_Node0 -- No --> E_RetrieveBrokerNameData
File: GCX016E.cbl
GIVEN: A broker name data request is processed through GCCTBIO
WHEN: The broker name lookup is executed
THEN: The system should retrieve broker name details from the GCSTBRT table segments
βœ“ Consolidated Acceptance Criteria
  • The broker contact lookup is executed → the system should retrieve broker contact details from the GCSTBRT table 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_RetrieveBrokerContactData(["Start Step"]) E_RetrieveBrokerContactData(["End Step"]) N_RetrieveBrokerContactData_Node0{"The broker contact lookup is
executed"}:::decision N_RetrieveBrokerContactData_Node0_action["The system should retrieve broker
contact details from the GCSTBRT
table segments"]:::main N_RetrieveBrokerContactData_Node0 -- Yes --> N_RetrieveBrokerContactData_Node0_action N_RetrieveBrokerContactData_Node0_action --> E_RetrieveBrokerContactData S_RetrieveBrokerContactData --> N_RetrieveBrokerContactData_Node0 N_RetrieveBrokerContactData_Node0 -- No --> E_RetrieveBrokerContactData
File: GCX016E.cbl
GIVEN: A broker contact data request is processed through GCCTBIO
WHEN: The broker contact lookup is executed
THEN: The system should retrieve broker contact details from the GCSTBRT table segments
βœ“ Consolidated Acceptance Criteria
  • The other table lookup is executed → the system should retrieve the requested table data from the appropriate table 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_RetrieveOtherTableData(["Start Step"]) E_RetrieveOtherTableData(["End Step"]) N_RetrieveOtherTableData_Node0{"The other table lookup is executed"}:::decision N_RetrieveOtherTableData_Node0_action["The system should retrieve the
requested table data from the
appropriate table segments"]:::main N_RetrieveOtherTableData_Node0 -- Yes --> N_RetrieveOtherTableData_Node0_action N_RetrieveOtherTableData_Node0_action --> E_RetrieveOtherTableData S_RetrieveOtherTableData --> N_RetrieveOtherTableData_Node0 N_RetrieveOtherTableData_Node0 -- No --> E_RetrieveOtherTableData
File: GCX016E.cbl
GIVEN: An other table type request is processed through GCCTBIO
WHEN: The other table lookup is executed
THEN: The system should retrieve the requested table data from the appropriate table segments
βœ“ Consolidated Acceptance Criteria
  • The system checks the retrieval results → the system should determine if the requested data 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_DataFound(["Start Step"]) E_DataFound(["End Step"]) N_DataFound_Node0{"The system checks the retrieval
results"}:::decision N_DataFound_Node0_action["The system should determine if the
requested data was found or not
found"]:::main N_DataFound_Node0 -- Yes --> N_DataFound_Node0_action N_DataFound_Node0_action --> E_DataFound S_DataFound --> N_DataFound_Node0 N_DataFound_Node0 -- No --> E_DataFound
File: GCX016E.cbl
GIVEN: A table lookup operation has been completed
WHEN: The system checks the retrieval results
THEN: The system should determine if the requested data was found or not found
βœ“ Consolidated Acceptance Criteria
  • The data return process is executed → the system should return the retrieved table data to the caller
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ReturnTableData(["Start Step"]) E_ReturnTableData(["End Step"]) N_ReturnTableData_Node0{"The data return process is executed"}:::decision N_ReturnTableData_Node0_action["The system should return the
retrieved table data to the caller"]:::main N_ReturnTableData_Node0 -- Yes --> N_ReturnTableData_Node0_action N_ReturnTableData_Node0_action --> E_ReturnTableData S_ReturnTableData --> N_ReturnTableData_Node0 N_ReturnTableData_Node0 -- No --> E_ReturnTableData
File: GCX016E.cbl
GIVEN: Table data was successfully found during lookup
WHEN: The data return process is executed
THEN: The system should return the retrieved table data to the caller
βœ“ Consolidated Acceptance Criteria
  • The not found response process is executed → the system should return a not found status to the caller
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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 not found response process is
executed"}:::decision N_ReturnNotFoundStatus_Node0_action["The system should return a not
found status to the caller"]:::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: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Table data was not found during lookup
WHEN: The not found response process is executed
THEN: The system should return a not found status to the caller
βœ“ Consolidated Acceptance Criteria
  • The information processing is initiated → the system should process the lookup results appropriately for the requesting 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_ProcessRetrievedInformation(["Start Step"]) E_ProcessRetrievedInformation(["End Step"]) N_ProcessRetrievedInformation_Node0{"The information processing is
initiated"}:::decision N_ProcessRetrievedInformation_Node0_action["The system should process the
lookup results appropriately for the
requesting operation"]:::main N_ProcessRetrievedInformation_Node0 -- Yes --> N_ProcessRetrievedInformation_Node0_action N_ProcessRetrievedInformation_Node0_action --> E_ProcessRetrievedInformation S_ProcessRetrievedInformation --> N_ProcessRetrievedInformation_Node0 N_ProcessRetrievedInformation_Node0 -- No --> E_ProcessRetrievedInformation
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A table lookup operation has completed with either data found or not found status
WHEN: The information processing is initiated
THEN: The system should process the lookup results appropriately for the requesting operation
βœ“ Consolidated Acceptance Criteria
  • The system begins message creation process → all message fields, counters, and data structures are reset to initial 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_InitializeMessageFields(["Start Step"]) E_InitializeMessageFields(["End Step"]) N_InitializeMessageFields_Node0{"The system begins message creation
process"}:::decision N_InitializeMessageFields_Node0_action["All message fields, counters, and
data structures are reset to initial
state"]:::main N_InitializeMessageFields_Node0 -- Yes --> N_InitializeMessageFields_Node0_action N_InitializeMessageFields_Node0_action --> E_InitializeMessageFields S_InitializeMessageFields --> N_InitializeMessageFields_Node0 N_InitializeMessageFields_Node0 -- No --> E_InitializeMessageFields
File: GCX016E.cbl
GIVEN: A cargo processing event requires Merlin notification
WHEN: The system begins message creation process
THEN: All message fields, counters, and data structures are reset to initial state
βœ“ Consolidated Acceptance Criteria
  • Building Merlin message content → disposition description is added to provide clear understanding of the action being 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_AddDispositionDescription(["Start Step"]) E_AddDispositionDescription(["End Step"]) N_AddDispositionDescription_Node0{"Building Merlin message content"}:::decision N_AddDispositionDescription_Node0_action["Disposition description is added to
provide clear understanding of the
action being taken"]:::main N_AddDispositionDescription_Node0 -- Yes --> N_AddDispositionDescription_Node0_action N_AddDispositionDescription_Node0_action --> E_AddDispositionDescription S_AddDispositionDescription --> N_AddDispositionDescription_Node0 N_AddDispositionDescription_Node0 -- No --> E_AddDispositionDescription
File: GCX016E.cbl
GIVEN: Disposition code has an associated description in the system
WHEN: Building Merlin message content
THEN: Disposition description is added to provide clear understanding of the action being taken
βœ“ Consolidated Acceptance Criteria
  • K1 comments are determined to be relevant for the message → free-form text messages from K1 segments are included in the Merlin 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_IncludeFreeFormTextMessages(["Start Step"]) E_IncludeFreeFormTextMessages(["End Step"]) N_IncludeFreeFormTextMessages_Node0{"K1 comments are determined to be
relevant for the message"}:::decision N_IncludeFreeFormTextMessages_Node0_action["Free-form text messages from K1
segments are included in the Merlin
message"]:::main N_IncludeFreeFormTextMessages_Node0 -- Yes --> N_IncludeFreeFormTextMessages_Node0_action N_IncludeFreeFormTextMessages_Node0_action --> E_IncludeFreeFormTextMessages S_IncludeFreeFormTextMessages --> N_IncludeFreeFormTextMessages_Node0 N_IncludeFreeFormTextMessages_Node0 -- No --> E_IncludeFreeFormTextMessages
File: GCX016E.cbl
GIVEN: K1 comments are available and contain free-form text
WHEN: K1 comments are determined to be relevant for the message
THEN: Free-form text messages from K1 segments are included in the Merlin message
βœ“ Consolidated Acceptance Criteria
  • Finalizing message creation process → complete Merlin message is formatted with all required components in 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_FormatCompleteMessage(["Start Step"]) E_FormatCompleteMessage(["End Step"]) N_FormatCompleteMessage_Node0{"Finalizing message creation process"}:::decision N_FormatCompleteMessage_Node0_action["Complete Merlin message is
formatted with all required
components in proper structure"]:::main N_FormatCompleteMessage_Node0 -- Yes --> N_FormatCompleteMessage_Node0_action N_FormatCompleteMessage_Node0_action --> E_FormatCompleteMessage S_FormatCompleteMessage --> N_FormatCompleteMessage_Node0 N_FormatCompleteMessage_Node0 -- No --> E_FormatCompleteMessage
File: GCX016E.cbl
GIVEN: All message components have been prepared and validated
WHEN: Finalizing message creation process
THEN: Complete Merlin message is formatted with all required components in proper structure
βœ“ Consolidated Acceptance Criteria
  • Finalizing message preparation → message is prepared for distribution with proper routing and delivery 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_PrepareforDistribution(["Start Step"]) E_PrepareforDistribution(["End Step"]) N_PrepareforDistribution_Node0{"Finalizing message preparation"}:::decision N_PrepareforDistribution_Node0_action["Message is prepared for
distribution with proper routing and
delivery information"]:::main N_PrepareforDistribution_Node0 -- Yes --> N_PrepareforDistribution_Node0_action N_PrepareforDistribution_Node0_action --> E_PrepareforDistribution S_PrepareforDistribution --> N_PrepareforDistribution_Node0 N_PrepareforDistribution_Node0 -- No --> E_PrepareforDistribution
File: GCX016E.cbl
GIVEN: Message type and priority have been set
WHEN: Finalizing message preparation
THEN:
  • Message is prepared for distribution with proper routing
  • Delivery information
βœ“ Consolidated Acceptance Criteria
  • The system identifies the message as CPR bond creation type → the system initiates CPR-specific bond creation 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_IdentifyCPRBondCreation(["Start Step"]) E_IdentifyCPRBondCreation(["End Step"]) N_IdentifyCPRBondCreation_Node0{"The system identifies the message
as CPR bond creation type"}:::decision N_IdentifyCPRBondCreation_Node0_action["The system initiates CPR-specific
bond creation processing workflow"]:::main N_IdentifyCPRBondCreation_Node0 -- Yes --> N_IdentifyCPRBondCreation_Node0_action N_IdentifyCPRBondCreation_Node0_action --> E_IdentifyCPRBondCreation S_IdentifyCPRBondCreation --> N_IdentifyCPRBondCreation_Node0 N_IdentifyCPRBondCreation_Node0 -- No --> E_IdentifyCPRBondCreation
File: GCX016E.cbl
GIVEN: A K1 segment message contains Canadian Pacific Railway identifiers
WHEN: The system identifies the message as CPR bond creation type
THEN: The system initiates CPR-specific bond creation processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system processes the K1 segment content → bond-related information including bond numbers, amounts, and related cargo details are extracted 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_ExtractBondInformation(["Start Step"]) E_ExtractBondInformation(["End Step"]) N_ExtractBondInformation_Node0{"The system processes the K1 segment
content"}:::decision N_ExtractBondInformation_Node0_action["Bond-related information including
bond numbers, amounts, and related
cargo details are extracted from the
message"]:::main N_ExtractBondInformation_Node0 -- Yes --> N_ExtractBondInformation_Node0_action N_ExtractBondInformation_Node0_action --> E_ExtractBondInformation S_ExtractBondInformation --> N_ExtractBondInformation_Node0 N_ExtractBondInformation_Node0 -- No --> E_ExtractBondInformation
File: GCX016E.cbl
GIVEN: A CPR bond creation message has been identified
WHEN: The system processes the K1 segment content
THEN: Bond-related information including bond numbers, amounts, and related cargo details are extracted from the message
βœ“ Consolidated Acceptance Criteria
  • The system validates the bond data for completeness and format compliance → the bond data is marked as valid if all required fields are present and properly formatted, otherwise validation 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_ValidateBondData(["Start Step"]) E_ValidateBondData(["End Step"]) N_ValidateBondData_Node0{"The system validates the bond data
for completeness and format
compliance"}:::decision N_ValidateBondData_Node0_action["The bond data is marked as valid if
all required fields are present and
properly formatted, otherwise
validation fails"]:::main N_ValidateBondData_Node0 -- Yes --> N_ValidateBondData_Node0_action N_ValidateBondData_Node0_action --> E_ValidateBondData S_ValidateBondData --> N_ValidateBondData_Node0 N_ValidateBondData_Node0 -- No --> E_ValidateBondData
File: GCX016E.cbl
GIVEN: Bond information has been extracted from a CPR message
WHEN:
  • The system validates the bond data for completeness
  • Format compliance
THEN:
  • The bond data is marked as valid if all required fields are present
  • Properly formatted, otherwise validation fails
βœ“ Consolidated Acceptance Criteria
  • If if the bond creation meets all business requirements → bond creation is approved if validation passes and all business rules are satisfied, 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_BondCreationValid(["Start Step"]) E_BondCreationValid(["End Step"]) N_BondCreationValid_Node0{"The system evaluates if the bond
creation meets all business
requirements"}:::decision N_BondCreationValid_Node0_action["Bond creation is approved if
validation passes and all business
rules are satisfied, otherwise an
error is generated"]:::main N_BondCreationValid_Node0 -- Yes --> N_BondCreationValid_Node0_action N_BondCreationValid_Node0_action --> E_BondCreationValid S_BondCreationValid --> N_BondCreationValid_Node0 N_BondCreationValid_Node0 -- No --> E_BondCreationValid
File: GCX016E.cbl
GIVEN: Bond data validation has been completed
WHEN: The system evaluates if the bond creation meets all business requirements
THEN:
  • Bond creation is approved if validation passes
  • All business rules are satisfied, otherwise an error is generated
βœ“ Consolidated Acceptance Criteria
  • The system formats the bond notification message → a structured notification message is created containing bond details, cargo information, and CPR-specific 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_FormatCPRBondNotification(["Start Step"]) E_FormatCPRBondNotification(["End Step"]) N_FormatCPRBondNotification_Node0{"The system formats the bond
notification message"}:::decision N_FormatCPRBondNotification_Node0_action["A structured notification message
is created containing bond details,
cargo information, and CPR-specific
formatting requirements"]:::main N_FormatCPRBondNotification_Node0 -- Yes --> N_FormatCPRBondNotification_Node0_action N_FormatCPRBondNotification_Node0_action --> E_FormatCPRBondNotification S_FormatCPRBondNotification --> N_FormatCPRBondNotification_Node0 N_FormatCPRBondNotification_Node0 -- No --> E_FormatCPRBondNotification
File: GCX016E.cbl
GIVEN: CPR bond creation has been validated and approved
WHEN: The system formats the bond notification message
THEN: A structured notification message is created containing bond details, cargo information, and CPR-specific formatting requirements
βœ“ Consolidated Acceptance Criteria
  • The system creates a Merlin message for the bond notification → a properly formatted Merlin message is created with CPR bond information, comments, and appropriate message headers
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_CreateMerlinMessage(["Start Step"]) E_CreateMerlinMessage(["End Step"]) N_CreateMerlinMessage_Node0{"The system creates a Merlin message
for the bond notification"}:::decision N_CreateMerlinMessage_Node0_action["A properly formatted Merlin message
is created with CPR bond
information, comments, and
appropriate message headers"]:::main N_CreateMerlinMessage_Node0 -- Yes --> N_CreateMerlinMessage_Node0_action N_CreateMerlinMessage_Node0_action --> E_CreateMerlinMessage S_CreateMerlinMessage --> N_CreateMerlinMessage_Node0 N_CreateMerlinMessage_Node0 -- No --> E_CreateMerlinMessage
File: GCX016E.cbl
GIVEN: CPR bond notification content has been prepared with special comments
WHEN: The system creates a Merlin message for the bond notification
THEN: A properly formatted Merlin message is created with CPR bond information, comments, and appropriate message headers
βœ“ Consolidated Acceptance Criteria
  • The system determines routing based on freight forwarder setup and notification preferences → the message is routed to appropriate recipients including freight forwarders with internet capability or default 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_RoutetoRecipients(["Start Step"]) E_RoutetoRecipients(["End Step"]) N_RoutetoRecipients_Node0{"The system determines routing based
on freight forwarder setup and
notification preferences"}:::decision N_RoutetoRecipients_Node0_action["The message is routed to
appropriate recipients including
freight forwarders with internet
capability or default Merlin IDs"]:::main N_RoutetoRecipients_Node0 -- Yes --> N_RoutetoRecipients_Node0_action N_RoutetoRecipients_Node0_action --> E_RoutetoRecipients S_RoutetoRecipients --> N_RoutetoRecipients_Node0 N_RoutetoRecipients_Node0 -- No --> E_RoutetoRecipients
File: GCX016E.cbl
GIVEN: A Merlin message for CPR bond notification has been created
WHEN:
  • The system determines routing based on freight forwarder setup
  • Notification preferences
THEN: The message is routed to appropriate recipients including freight forwarders with internet capability or default Merlin IDs
βœ“ Consolidated Acceptance Criteria
  • The system logs the bond creation event → an audit record is created capturing the bond creation details, timestamp, and processing status 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_LogBondCreationEvent(["Start Step"]) E_LogBondCreationEvent(["End Step"]) N_LogBondCreationEvent_Node0{"The system logs the bond creation
event"}:::decision N_LogBondCreationEvent_Node0_action["An audit record is created
capturing the bond creation details,
timestamp, and processing status for
tracking and compliance purposes"]:::main N_LogBondCreationEvent_Node0 -- Yes --> N_LogBondCreationEvent_Node0_action N_LogBondCreationEvent_Node0_action --> E_LogBondCreationEvent S_LogBondCreationEvent --> N_LogBondCreationEvent_Node0 N_LogBondCreationEvent_Node0 -- No --> E_LogBondCreationEvent
File: GCX016E.cbl
GIVEN: CPR bond notification routing has been determined
WHEN: The system logs the bond creation event
THEN:
  • An audit record is created capturing the bond creation details, timestamp, and processing status for tracking
  • Compliance purposes
βœ“ Consolidated Acceptance Criteria
  • The system attempts to deliver the notification → the notification is sent via email if freight forwarder has internet capability, otherwise sent to Merlin system, with fallback to backup recipients if delivery 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_SendNotification(["Start Step"]) E_SendNotification(["End Step"]) N_SendNotification_Node0{"The system attempts to deliver the
notification"}:::decision N_SendNotification_Node0_action["The notification is sent via email
if freight forwarder has internet
capability, otherwise sent to Merlin
system, with fallback to backup
recipients if delivery fails"]:::main N_SendNotification_Node0 -- Yes --> N_SendNotification_Node0_action N_SendNotification_Node0_action --> E_SendNotification S_SendNotification --> N_SendNotification_Node0 N_SendNotification_Node0 -- No --> E_SendNotification
File: GCX016E.cbl
GIVEN: CPR bond notification has been logged and routed
WHEN: The system attempts to deliver the notification
THEN: The notification is sent via email if freight forwarder has internet capability, otherwise sent to Merlin system, with fallback to backup recipients if delivery fails
βœ“ Consolidated Acceptance Criteria
  • The system processes the disposition code for quantity calculations → the system routes to add quantity processing if the code increases release amounts, subtract quantity processing if it decreases amounts, or no change processing if quantities remain the same
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_DispositionCodeAction(["Start Step"]) E_DispositionCodeAction(["End Step"]) N_DispositionCodeAction_Node0{"The system processes the
disposition code for quantity
calculations"}:::decision N_DispositionCodeAction_Node0_action["The system routes to add quantity
processing if the code increases
release amounts, subtract quantity
processing if it decreases amounts,
or no change processing if
quantities remain the same"]:::main N_DispositionCodeAction_Node0 -- Yes --> N_DispositionCodeAction_Node0_action N_DispositionCodeAction_Node0_action --> E_DispositionCodeAction S_DispositionCodeAction --> N_DispositionCodeAction_Node0 N_DispositionCodeAction_Node0 -- No --> E_DispositionCodeAction
File: GCX016E.cbl
GIVEN: A disposition code with defined quantity impact rules
WHEN: The system processes the disposition code for quantity calculations
THEN: The system routes to add quantity processing if the code increases release amounts, subtract quantity processing if it decreases amounts, or no change processing if quantities remain the same
βœ“ Consolidated Acceptance Criteria
  • The system processes a quantity-increasing disposition code → the additional quantity amount is calculated based on the disposition code rules and cargo 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_CalculateQuantityAddition(["Start Step"]) E_CalculateQuantityAddition(["End Step"]) N_CalculateQuantityAddition_Node0{"The system processes a
quantity-increasing disposition code"}:::decision N_CalculateQuantityAddition_Node0_action["The additional quantity amount is
calculated based on the disposition
code rules and cargo specifications"]:::main N_CalculateQuantityAddition_Node0 -- Yes --> N_CalculateQuantityAddition_Node0_action N_CalculateQuantityAddition_Node0_action --> E_CalculateQuantityAddition S_CalculateQuantityAddition --> N_CalculateQuantityAddition_Node0 N_CalculateQuantityAddition_Node0 -- No --> E_CalculateQuantityAddition
File: GCX016E.cbl
GIVEN: A disposition code that adds to cargo release quantities and the current release amount
WHEN: The system processes a quantity-increasing disposition code
THEN:
  • The additional quantity amount is calculated based on the disposition code rules
  • Cargo specifications
βœ“ Consolidated Acceptance Criteria
  • The system processes a quantity-decreasing disposition code → the subtraction quantity amount is calculated based on the disposition code rules and current cargo 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_CalculateQuantitySubtraction(["Start Step"]) E_CalculateQuantitySubtraction(["End Step"]) N_CalculateQuantitySubtraction_Node0{"The system processes a
quantity-decreasing disposition code"}:::decision N_CalculateQuantitySubtraction_Node0_action["The subtraction quantity amount is
calculated based on the disposition
code rules and current cargo
quantities"]:::main N_CalculateQuantitySubtraction_Node0 -- Yes --> N_CalculateQuantitySubtraction_Node0_action N_CalculateQuantitySubtraction_Node0_action --> E_CalculateQuantitySubtraction S_CalculateQuantitySubtraction --> N_CalculateQuantitySubtraction_Node0 N_CalculateQuantitySubtraction_Node0 -- No --> E_CalculateQuantitySubtraction
File: GCX016E.cbl
GIVEN: A disposition code that subtracts from cargo release quantities and the current release amount
WHEN: The system processes a quantity-decreasing disposition code
THEN:
  • The subtraction quantity amount is calculated based on the disposition code rules
  • Current cargo quantities
βœ“ Consolidated Acceptance Criteria
  • The system applies the disposition code quantity impact → the new release quantity is determined by applying the calculated addition, subtraction, or no change to 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_DetermineNewReleaseQuantity(["Start Step"]) E_DetermineNewReleaseQuantity(["End Step"]) N_DetermineNewReleaseQuantity_Node0{"The system applies the disposition
code quantity impact"}:::decision N_DetermineNewReleaseQuantity_Node0_action["The new release quantity is
determined by applying the
calculated addition, subtraction, or
no change to the current quantity"]:::main N_DetermineNewReleaseQuantity_Node0 -- Yes --> N_DetermineNewReleaseQuantity_Node0_action N_DetermineNewReleaseQuantity_Node0_action --> E_DetermineNewReleaseQuantity S_DetermineNewReleaseQuantity --> N_DetermineNewReleaseQuantity_Node0 N_DetermineNewReleaseQuantity_Node0 -- No --> E_DetermineNewReleaseQuantity
File: GCX016E.cbl
GIVEN: Current cargo release quantity and calculated quantity change amount from disposition code processing
WHEN: The system applies the disposition code quantity impact
THEN: The new release quantity is determined by applying the calculated addition, subtraction, or no change to the current quantity
βœ“ Consolidated Acceptance Criteria
  • If whether to include quantity impact details in Merlin notifications → the system includes impact details in the Merlin message if configuration rules require it, otherwise finalizes the message without impact 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_IncludeinMerlinMessage(["Start Step"]) E_IncludeinMerlinMessage(["End Step"]) N_IncludeinMerlinMessage_Node0{"The system evaluates whether to
include quantity impact details in
Merlin notifications"}:::decision N_IncludeinMerlinMessage_Node0_action["The system includes impact details
in the Merlin message if
configuration rules require it,
otherwise finalizes the message
without impact details"]:::main N_IncludeinMerlinMessage_Node0 -- Yes --> N_IncludeinMerlinMessage_Node0_action N_IncludeinMerlinMessage_Node0_action --> E_IncludeinMerlinMessage S_IncludeinMerlinMessage --> N_IncludeinMerlinMessage_Node0 N_IncludeinMerlinMessage_Node0 -- No --> E_IncludeinMerlinMessage
File: GCX016E.cbl
GIVEN: A quantity impact message and Merlin message configuration rules
WHEN: The system evaluates whether to include quantity impact details in Merlin notifications
THEN: The system includes impact details in the Merlin message if configuration rules require it, otherwise finalizes the message without impact details
βœ“ Consolidated Acceptance Criteria
  • The system processes Merlin message formatting with quantity impact inclusion → the quantity impact details are added to the Merlin 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_AddImpactDetailstoMessage(["Start Step"]) E_AddImpactDetailstoMessage(["End Step"]) N_AddImpactDetailstoMessage_Node0{"The system processes Merlin message
formatting with quantity impact
inclusion"}:::decision N_AddImpactDetailstoMessage_Node0_action["The quantity impact details are
added to the Merlin message content"]:::main N_AddImpactDetailstoMessage_Node0 -- Yes --> N_AddImpactDetailstoMessage_Node0_action N_AddImpactDetailstoMessage_Node0_action --> E_AddImpactDetailstoMessage S_AddImpactDetailstoMessage --> N_AddImpactDetailstoMessage_Node0 N_AddImpactDetailstoMessage_Node0 -- No --> E_AddImpactDetailstoMessage
File: GCX016E.cbl
GIVEN: A Merlin message and quantity impact details that should be included
WHEN: The system processes Merlin message formatting with quantity impact inclusion
THEN: The quantity impact details are added to the Merlin message content
βœ“ Consolidated Acceptance Criteria
  • The system creates comprehensive impact messaging → a complete impact statement is formatted showing both the disposition code action and its quantity 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_FormatCompleteImpactStatement(["Start Step"]) E_FormatCompleteImpactStatement(["End Step"]) N_FormatCompleteImpactStatement_Node0{"The system creates comprehensive
impact messaging"}:::decision N_FormatCompleteImpactStatement_Node0_action["A complete impact statement is
formatted showing both the
disposition code action and its
quantity effects"]:::main N_FormatCompleteImpactStatement_Node0 -- Yes --> N_FormatCompleteImpactStatement_Node0_action N_FormatCompleteImpactStatement_Node0_action --> E_FormatCompleteImpactStatement S_FormatCompleteImpactStatement --> N_FormatCompleteImpactStatement_Node0 N_FormatCompleteImpactStatement_Node0 -- No --> E_FormatCompleteImpactStatement
File: GCX016E.cbl
GIVEN: Quantity impact details and disposition code information
WHEN: The system creates comprehensive impact messaging
THEN:
  • A complete impact statement is formatted showing both the disposition code action
  • Its quantity effects
βœ“ Consolidated Acceptance Criteria
  • The system finalizes impact messaging and K1 comments exist → the K1 comments are included in the impact message to provide 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_IncludeK1CommentsifPresent(["Start Step"]) E_IncludeK1CommentsifPresent(["End Step"]) N_IncludeK1CommentsifPresent_Node0{"The system finalizes impact
messaging and K1 comments exist"}:::decision N_IncludeK1CommentsifPresent_Node0_action["The K1 comments are included in the
impact message to provide additional
context"]:::main N_IncludeK1CommentsifPresent_Node0 -- Yes --> N_IncludeK1CommentsifPresent_Node0_action N_IncludeK1CommentsifPresent_Node0_action --> E_IncludeK1CommentsifPresent S_IncludeK1CommentsifPresent --> N_IncludeK1CommentsifPresent_Node0 N_IncludeK1CommentsifPresent_Node0 -- No --> E_IncludeK1CommentsifPresent
File: GCX016E.cbl
GIVEN: A quantity impact message and K1 segment comments associated with the cargo
WHEN:
  • The system finalizes impact messaging
  • K1 comments exist
THEN: The K1 comments are included in the impact message to provide additional context
βœ“ Consolidated Acceptance Criteria
  • The system completes quantity impact message processing → the release quantity impact message is finalized with all components properly formatted and ready for 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_FinalizeReleaseQuantityImpactMessage(["Start Step"]) E_FinalizeReleaseQuantityImpactMessage(["End Step"]) N_FinalizeReleaseQuantityImpactMessage_Node0{"The system completes quantity
impact message processing"}:::decision N_FinalizeReleaseQuantityImpactMessage_Node0_action["The release quantity impact message
is finalized with all components
properly formatted and ready for
delivery"]:::main N_FinalizeReleaseQuantityImpactMessage_Node0 -- Yes --> N_FinalizeReleaseQuantityImpactMessage_Node0_action N_FinalizeReleaseQuantityImpactMessage_Node0_action --> E_FinalizeReleaseQuantityImpactMessage S_FinalizeReleaseQuantityImpactMessage --> N_FinalizeReleaseQuantityImpactMessage_Node0 N_FinalizeReleaseQuantityImpactMessage_Node0 -- No --> E_FinalizeReleaseQuantityImpactMessage
File: GCX016E.cbl
GIVEN: All quantity impact message components including before/after quantities, disposition code details, and optional K1 comments
WHEN: The system completes quantity impact message processing
THEN:
  • The release quantity impact message is finalized with all components properly formatted
  • Ready for delivery
βœ“ Consolidated Acceptance Criteria
  • The system compares the released quantity to the total quantity → the system continues processing if released equals total quantity, otherwise skips GCCIIS 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_CheckReleasedvsTotalQuantity(["Start Step"]) E_CheckReleasedvsTotalQuantity(["End Step"]) N_CheckReleasedvsTotalQuantity_Node0{"The system compares the released
quantity to the total quantity"}:::decision N_CheckReleasedvsTotalQuantity_Node0_action["The system continues processing if
released equals total quantity,
otherwise skips GCCIIS integration"]:::main N_CheckReleasedvsTotalQuantity_Node0 -- Yes --> N_CheckReleasedvsTotalQuantity_Node0_action N_CheckReleasedvsTotalQuantity_Node0_action --> E_CheckReleasedvsTotalQuantity S_CheckReleasedvsTotalQuantity --> N_CheckReleasedvsTotalQuantity_Node0 N_CheckReleasedvsTotalQuantity_Node0 -- No --> E_CheckReleasedvsTotalQuantity
File: GCX016E.cbl
GIVEN: A cargo requires full release validation and has released and total quantity values
WHEN: The system compares the released quantity to the total quantity
THEN: The system continues processing if released equals total quantity, otherwise skips GCCIIS integration
βœ“ Consolidated Acceptance Criteria
  • The system prepares the status update message → the system formats the cargo and equipment information 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_PrepareGCCIISStatusUpdate(["Start Step"]) E_PrepareGCCIISStatusUpdate(["End Step"]) N_PrepareGCCIISStatusUpdate_Node0{"The system prepares the status
update message"}:::decision N_PrepareGCCIISStatusUpdate_Node0_action["The system formats the cargo and
equipment information for GCCIIS
transmission"]:::main N_PrepareGCCIISStatusUpdate_Node0 -- Yes --> N_PrepareGCCIISStatusUpdate_Node0_action N_PrepareGCCIISStatusUpdate_Node0_action --> E_PrepareGCCIISStatusUpdate S_PrepareGCCIISStatusUpdate --> N_PrepareGCCIISStatusUpdate_Node0 N_PrepareGCCIISStatusUpdate_Node0 -- No --> E_PrepareGCCIISStatusUpdate
File: GCX016E.cbl
GIVEN: A cargo has passed validation checks and requires GCCIIS status update
WHEN: The system prepares the status update message
THEN:
  • The system formats the cargo
  • Equipment information for gcciis transmission
βœ“ Consolidated Acceptance Criteria
  • The system processes hold status assignment → the system sets GCCIIS status to HOLD for held cargo 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_SetGCCIISStatusHOLD(["Start Step"]) E_SetGCCIISStatusHOLD(["End Step"]) N_SetGCCIISStatusHOLD_Node0{"The system processes hold status
assignment"}:::decision N_SetGCCIISStatusHOLD_Node0_action["The system sets GCCIIS status to
HOLD for held cargo conditions"]:::main N_SetGCCIISStatusHOLD_Node0 -- Yes --> N_SetGCCIISStatusHOLD_Node0_action N_SetGCCIISStatusHOLD_Node0_action --> E_SetGCCIISStatusHOLD S_SetGCCIISStatusHOLD --> N_SetGCCIISStatusHOLD_Node0 N_SetGCCIISStatusHOLD_Node0 -- No --> E_SetGCCIISStatusHOLD
File: GCX016E.cbl
GIVEN: A cargo has hold conditions that need to be communicated to GCCIIS
WHEN: The system processes hold status assignment
THEN: The system sets GCCIIS status to HOLD for held cargo conditions
βœ“ Consolidated Acceptance Criteria
  • The system processes release status assignment → the system sets GCCIIS status to RELEASE for released 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_SetGCCIISStatusRELEASE(["Start Step"]) E_SetGCCIISStatusRELEASE(["End Step"]) N_SetGCCIISStatusRELEASE_Node0{"The system processes release status
assignment"}:::decision N_SetGCCIISStatusRELEASE_Node0_action["The system sets GCCIIS status to
RELEASE for released cargo"]:::main N_SetGCCIISStatusRELEASE_Node0 -- Yes --> N_SetGCCIISStatusRELEASE_Node0_action N_SetGCCIISStatusRELEASE_Node0_action --> E_SetGCCIISStatusRELEASE S_SetGCCIISStatusRELEASE --> N_SetGCCIISStatusRELEASE_Node0 N_SetGCCIISStatusRELEASE_Node0 -- No --> E_SetGCCIISStatusRELEASE
File: GCX016E.cbl
GIVEN: A cargo has been fully released and meets release criteria
WHEN: The system processes release status assignment
THEN: The system sets GCCIIS status to RELEASE for released cargo
βœ“ Consolidated Acceptance Criteria
  • The system processes PTT status assignment → the system sets GCCIIS status to PTT for cargo with transit permission
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetGCCIISStatusPTT(["Start Step"]) E_SetGCCIISStatusPTT(["End Step"]) N_SetGCCIISStatusPTT_Node0{"The system processes PTT status
assignment"}:::decision N_SetGCCIISStatusPTT_Node0_action["The system sets GCCIIS status to
PTT for cargo with transit
permission"]:::main N_SetGCCIISStatusPTT_Node0 -- Yes --> N_SetGCCIISStatusPTT_Node0_action N_SetGCCIISStatusPTT_Node0_action --> E_SetGCCIISStatusPTT S_SetGCCIISStatusPTT --> N_SetGCCIISStatusPTT_Node0 N_SetGCCIISStatusPTT_Node0 -- No --> E_SetGCCIISStatusPTT
File: GCX016E.cbl
GIVEN: A cargo has Permit to Transfer status that needs to be communicated to GCCIIS
WHEN: The system processes PTT status assignment
THEN: The system sets GCCIIS status to PTT for cargo with transit permission
βœ“ Consolidated Acceptance Criteria
  • The system processes PTT-EX status assignment → the system sets GCCIIS status to PTT-EX for cargo requiring examination
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_SetGCCIISStatusPTTEX(["Start Step"]) E_SetGCCIISStatusPTTEX(["End Step"]) N_SetGCCIISStatusPTTEX_Node0{"The system processes PTT-EX status
assignment"}:::decision N_SetGCCIISStatusPTTEX_Node0_action["The system sets GCCIIS status to
PTT-EX for cargo requiring
examination"]:::main N_SetGCCIISStatusPTTEX_Node0 -- Yes --> N_SetGCCIISStatusPTTEX_Node0_action N_SetGCCIISStatusPTTEX_Node0_action --> E_SetGCCIISStatusPTTEX S_SetGCCIISStatusPTTEX --> N_SetGCCIISStatusPTTEX_Node0 N_SetGCCIISStatusPTTEX_Node0 -- No --> E_SetGCCIISStatusPTTEX
File: GCX016E.cbl
GIVEN: A cargo has Permit to Transfer with examination requirements that need to be communicated to GCCIIS
WHEN: The system processes PTT-EX status assignment
THEN: The system sets GCCIIS status to PTT-EX for cargo requiring examination
βœ“ Consolidated Acceptance Criteria
  • The system processes the successful integration → the system records the successful GCCIIS integration 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_LogSuccessfulIntegration(["Start Step"]) E_LogSuccessfulIntegration(["End Step"]) N_LogSuccessfulIntegration_Node0{"The system processes the successful
integration"}:::decision N_LogSuccessfulIntegration_Node0_action["The system records the successful
GCCIIS integration for audit trail"]:::main N_LogSuccessfulIntegration_Node0 -- Yes --> N_LogSuccessfulIntegration_Node0_action N_LogSuccessfulIntegration_Node0_action --> E_LogSuccessfulIntegration S_LogSuccessfulIntegration --> N_LogSuccessfulIntegration_Node0 N_LogSuccessfulIntegration_Node0 -- No --> E_LogSuccessfulIntegration
File: GCX016E.cbl
GIVEN: A GCCIIS status update has been successfully processed
WHEN: The system processes the successful integration
THEN: The system records the successful GCCIIS integration for audit trail
βœ“ Consolidated Acceptance Criteria
  • The system processes the integration failure → the system handles the error condition and takes appropriate corrective 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_HandleIntegrationError(["Start Step"]) E_HandleIntegrationError(["End Step"]) N_HandleIntegrationError_Node0{"The system processes the
integration failure"}:::decision N_HandleIntegrationError_Node0_action["The system handles the error
condition and takes appropriate
corrective action"]:::main N_HandleIntegrationError_Node0 -- Yes --> N_HandleIntegrationError_Node0_action N_HandleIntegrationError_Node0_action --> E_HandleIntegrationError S_HandleIntegrationError --> N_HandleIntegrationError_Node0 N_HandleIntegrationError_Node0 -- No --> E_HandleIntegrationError
File: GCX016E.cbl
GIVEN: A GCCIIS status update has failed or encountered an error
WHEN: The system processes the integration failure
THEN:
  • The system handles the error condition
  • Takes appropriate corrective action
βœ“ Consolidated Acceptance Criteria
  • The system needs to send notifications to the freight forwarder → the system retrieves complete contact details including email addresses and 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_RetrieveFreightForwarderContactDetails(["Start Step"]) E_RetrieveFreightForwarderContactDetails(["End Step"]) N_RetrieveFreightForwarderContactDetails_Node0{"The system needs to send
notifications to the freight
forwarder"}:::decision N_RetrieveFreightForwarderContactDetails_Node0_action["The system retrieves complete
contact details including email
addresses and notification
preferences"]:::main N_RetrieveFreightForwarderContactDetails_Node0 -- Yes --> N_RetrieveFreightForwarderContactDetails_Node0_action N_RetrieveFreightForwarderContactDetails_Node0_action --> E_RetrieveFreightForwarderContactDetails S_RetrieveFreightForwarderContactDetails --> N_RetrieveFreightForwarderContactDetails_Node0 N_RetrieveFreightForwarderContactDetails_Node0 -- No --> E_RetrieveFreightForwarderContactDetails
File: GCX016E.cbl
GIVEN: Freight forwarder has been identified in the broker name tables
WHEN: The system needs to send notifications to the freight forwarder
THEN:
  • The system retrieves complete contact details including email addresses
  • Notification preferences
βœ“ Consolidated Acceptance Criteria
  • The disposition code processing continues → the system marks the disposition code as requiring freight forwarder 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_MarkasFreightForwarderDispositionCode(["Start Step"]) E_MarkasFreightForwarderDispositionCode(["End Step"]) N_MarkasFreightForwarderDispositionCode_Node0{"The disposition code processing
continues"}:::decision N_MarkasFreightForwarderDispositionCode_Node0_action["The system marks the disposition
code as requiring freight forwarder
notification processing"]:::main N_MarkasFreightForwarderDispositionCode_Node0 -- Yes --> N_MarkasFreightForwarderDispositionCode_Node0_action N_MarkasFreightForwarderDispositionCode_Node0_action --> E_MarkasFreightForwarderDispositionCode S_MarkasFreightForwarderDispositionCode --> N_MarkasFreightForwarderDispositionCode_Node0 N_MarkasFreightForwarderDispositionCode_Node0 -- No --> E_MarkasFreightForwarderDispositionCode
File: GCX016E.cbl
GIVEN: Freight forwarder information has been successfully retrieved and validated
WHEN: The disposition code processing continues
THEN: The system marks the disposition code as requiring freight forwarder notification processing
βœ“ Consolidated Acceptance Criteria
  • The system continues disposition code processing → the system proceeds with standard disposition code 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_ContinuewithStandardDispositionProcessing(["Start Step"]) E_ContinuewithStandardDispositionProcessing(["End Step"]) N_ContinuewithStandardDispositionProcessing_Node0{"The system continues disposition
code processing"}:::decision N_ContinuewithStandardDispositionProcessing_Node0_action["The system proceeds with standard
disposition code processing workflow"]:::main N_ContinuewithStandardDispositionProcessing_Node0 -- Yes --> N_ContinuewithStandardDispositionProcessing_Node0_action N_ContinuewithStandardDispositionProcessing_Node0_action --> E_ContinuewithStandardDispositionProcessing S_ContinuewithStandardDispositionProcessing --> N_ContinuewithStandardDispositionProcessing_Node0 N_ContinuewithStandardDispositionProcessing_Node0 -- No --> E_ContinuewithStandardDispositionProcessing
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A disposition code is not identified as freight forwarder-related OR freight forwarder processing is complete
WHEN: The system continues disposition code processing
THEN: The system proceeds with standard disposition code processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve freight forwarder information → the cargo record is accessed and made available for 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_AccessCargoRecord(["Start Step"]) E_AccessCargoRecord(["End Step"]) N_AccessCargoRecord_Node0{"The system needs to retrieve
freight forwarder information"}:::decision N_AccessCargoRecord_Node0_action["The cargo record is accessed and
made available for segment
processing"]:::main N_AccessCargoRecord_Node0 -- Yes --> N_AccessCargoRecord_Node0_action N_AccessCargoRecord_Node0_action --> E_AccessCargoRecord S_AccessCargoRecord --> N_AccessCargoRecord_Node0 N_AccessCargoRecord_Node0 -- No --> E_AccessCargoRecord
File: GCX016E.cbl
GIVEN: A cargo processing request is initiated for freight forwarder identification
WHEN: The system needs to retrieve freight forwarder information
THEN:
  • The cargo record is accessed
  • Made available for segment processing
βœ“ Consolidated Acceptance Criteria
  • The system attempts to retrieve the GCSUSS03 segment from the cargo record → the GCSUSS03 segment is retrieved from the cargo segments data 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_RetrieveGCSUSS03Segment(["Start Step"]) E_RetrieveGCSUSS03Segment(["End Step"]) N_RetrieveGCSUSS03Segment_Node0{"The system attempts to retrieve the
GCSUSS03 segment from the cargo
record"}:::decision N_RetrieveGCSUSS03Segment_Node0_action["The GCSUSS03 segment is retrieved
from the cargo segments data source"]:::main N_RetrieveGCSUSS03Segment_Node0 -- Yes --> N_RetrieveGCSUSS03Segment_Node0_action N_RetrieveGCSUSS03Segment_Node0_action --> E_RetrieveGCSUSS03Segment S_RetrieveGCSUSS03Segment --> N_RetrieveGCSUSS03Segment_Node0 N_RetrieveGCSUSS03Segment_Node0 -- No --> E_RetrieveGCSUSS03Segment
File: GCX016E.cbl
GIVEN: A cargo record is being processed for freight forwarder identification
WHEN: The system attempts to retrieve the GCSUSS03 segment from the cargo record
THEN: The GCSUSS03 segment is retrieved from the cargo segments data source
βœ“ Consolidated Acceptance Criteria
  • The retrieval operation is completed → the system determines if the GCSUSS03 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_GCSUSS03Found(["Start Step"]) E_GCSUSS03Found(["End Step"]) N_GCSUSS03Found_Node0{"The retrieval operation is
completed"}:::decision N_GCSUSS03Found_Node0_action["The system determines if the
GCSUSS03 segment was found and
proceeds accordingly"]:::main N_GCSUSS03Found_Node0 -- Yes --> N_GCSUSS03Found_Node0_action N_GCSUSS03Found_Node0_action --> E_GCSUSS03Found S_GCSUSS03Found --> N_GCSUSS03Found_Node0 N_GCSUSS03Found_Node0 -- No --> E_GCSUSS03Found
File: GCX016E.cbl
GIVEN: The system has attempted to retrieve the GCSUSS03 segment
WHEN: The retrieval operation is completed
THEN:
  • The system determines if the gcsuss03 segment was found
  • Proceeds accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the GCSUSS03 segment data → the freight forwarder code is extracted from the GCSUSS03 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_ExtractFreightForwarderCodefromGCSUSS03(["Start Step"]) E_ExtractFreightForwarderCodefromGCSUSS03(["End Step"]) N_ExtractFreightForwarderCodefromGCSUSS03_Node0{"The system processes the GCSUSS03
segment data"}:::decision N_ExtractFreightForwarderCodefromGCSUSS03_Node0_action["The freight forwarder code is
extracted from the GCSUSS03 segment"]:::main N_ExtractFreightForwarderCodefromGCSUSS03_Node0 -- Yes --> N_ExtractFreightForwarderCodefromGCSUSS03_Node0_action N_ExtractFreightForwarderCodefromGCSUSS03_Node0_action --> E_ExtractFreightForwarderCodefromGCSUSS03 S_ExtractFreightForwarderCodefromGCSUSS03 --> N_ExtractFreightForwarderCodefromGCSUSS03_Node0 N_ExtractFreightForwarderCodefromGCSUSS03_Node0 -- No --> E_ExtractFreightForwarderCodefromGCSUSS03
File: GCX016E.cbl
GIVEN: The GCSUSS03 segment has been successfully retrieved
WHEN: The system processes the GCSUSS03 segment data
THEN: The freight forwarder code is extracted from the GCSUSS03 segment
βœ“ Consolidated Acceptance Criteria
  • The system attempts to retrieve the GCSUSS07 segment from the cargo record → the GCSUSS07 segment is retrieved from the cargo segments data 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_RetrieveGCSUSS07Segment(["Start Step"]) E_RetrieveGCSUSS07Segment(["End Step"]) N_RetrieveGCSUSS07Segment_Node0{"The system attempts to retrieve the
GCSUSS07 segment from the cargo
record"}:::decision N_RetrieveGCSUSS07Segment_Node0_action["The GCSUSS07 segment is retrieved
from the cargo segments data source"]:::main N_RetrieveGCSUSS07Segment_Node0 -- Yes --> N_RetrieveGCSUSS07Segment_Node0_action N_RetrieveGCSUSS07Segment_Node0_action --> E_RetrieveGCSUSS07Segment S_RetrieveGCSUSS07Segment --> N_RetrieveGCSUSS07Segment_Node0 N_RetrieveGCSUSS07Segment_Node0 -- No --> E_RetrieveGCSUSS07Segment
File: GCX016E.cbl
GIVEN: The system is processing freight forwarder identification regardless of GCSUSS03 availability
WHEN: The system attempts to retrieve the GCSUSS07 segment from the cargo record
THEN: The GCSUSS07 segment is retrieved from the cargo segments data source
βœ“ Consolidated Acceptance Criteria
  • The retrieval operation is completed → the system determines if the GCSUSS07 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_GCSUSS07Found(["Start Step"]) E_GCSUSS07Found(["End Step"]) N_GCSUSS07Found_Node0{"The retrieval operation is
completed"}:::decision N_GCSUSS07Found_Node0_action["The system determines if the
GCSUSS07 segment was found and
proceeds accordingly"]:::main N_GCSUSS07Found_Node0 -- Yes --> N_GCSUSS07Found_Node0_action N_GCSUSS07Found_Node0_action --> E_GCSUSS07Found S_GCSUSS07Found --> N_GCSUSS07Found_Node0 N_GCSUSS07Found_Node0 -- No --> E_GCSUSS07Found
File: GCX016E.cbl
GIVEN: The system has attempted to retrieve the GCSUSS07 segment
WHEN: The retrieval operation is completed
THEN:
  • The system determines if the gcsuss07 segment was found
  • Proceeds accordingly
βœ“ Consolidated Acceptance Criteria
  • The system processes the GCSUSS07 segment data → additional freight forwarder data is extracted from the GCSUSS07 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_ExtractAdditionalFreightForwarderDatafromGCSUSS07(["Start Step"]) E_ExtractAdditionalFreightForwarderDatafromGCSUSS07(["End Step"]) N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0{"The system processes the GCSUSS07
segment data"}:::decision N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0_action["Additional freight forwarder data
is extracted from the GCSUSS07
segment"]:::main N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0 -- Yes --> N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0_action N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0_action --> E_ExtractAdditionalFreightForwarderDatafromGCSUSS07 S_ExtractAdditionalFreightForwarderDatafromGCSUSS07 --> N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0 N_ExtractAdditionalFreightForwarderDatafromGCSUSS07_Node0 -- No --> E_ExtractAdditionalFreightForwarderDatafromGCSUSS07
File: GCX016E.cbl
GIVEN: The GCSUSS07 segment has been successfully retrieved
WHEN: The system processes the GCSUSS07 segment data
THEN: Additional freight forwarder data is extracted from the GCSUSS07 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes the extracted data → all available freight forwarder information is compiled into a consolidated 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_CompileFreightForwarderInformation(["Start Step"]) E_CompileFreightForwarderInformation(["End Step"]) N_CompileFreightForwarderInformation_Node0{"The system processes the extracted
data"}:::decision N_CompileFreightForwarderInformation_Node0_action["All available freight forwarder
information is compiled into a
consolidated format"]:::main N_CompileFreightForwarderInformation_Node0 -- Yes --> N_CompileFreightForwarderInformation_Node0_action N_CompileFreightForwarderInformation_Node0_action --> E_CompileFreightForwarderInformation S_CompileFreightForwarderInformation --> N_CompileFreightForwarderInformation_Node0 N_CompileFreightForwarderInformation_Node0 -- No --> E_CompileFreightForwarderInformation
File: GCX016E.cbl
GIVEN: Freight forwarder data has been extracted from available segments (GCSUSS03 and/or GCSUSS07)
WHEN: The system processes the extracted data
THEN: All available freight forwarder information is compiled into a consolidated format
βœ“ Consolidated Acceptance Criteria
  • The system validates the compiled data → the freight forwarder data is checked for validity 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_ValidateFreightForwarderData(["Start Step"]) E_ValidateFreightForwarderData(["End Step"]) N_ValidateFreightForwarderData_Node0{"The system validates the compiled
data"}:::decision N_ValidateFreightForwarderData_Node0_action["The freight forwarder data is
checked for validity and
completeness"]:::main N_ValidateFreightForwarderData_Node0 -- Yes --> N_ValidateFreightForwarderData_Node0_action N_ValidateFreightForwarderData_Node0_action --> E_ValidateFreightForwarderData S_ValidateFreightForwarderData --> N_ValidateFreightForwarderData_Node0 N_ValidateFreightForwarderData_Node0 -- No --> E_ValidateFreightForwarderData
File: GCX016E.cbl
GIVEN: Freight forwarder information has been compiled from cargo segments
WHEN: The system validates the compiled data
THEN:
  • The freight forwarder data is checked for validity
  • Completeness
βœ“ Consolidated Acceptance Criteria
  • The system searches the broker database using the freight forwarder code → the system queries the broker database tables to find matching broker 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_SearchBrokerDatabasebyFFCode(["Start Step"]) E_SearchBrokerDatabasebyFFCode(["End Step"]) N_SearchBrokerDatabasebyFFCode_Node0{"The system searches the broker
database using the freight forwarder
code"}:::decision N_SearchBrokerDatabasebyFFCode_Node0_action["The system queries the broker
database tables to find matching
broker records"]:::main N_SearchBrokerDatabasebyFFCode_Node0 -- Yes --> N_SearchBrokerDatabasebyFFCode_Node0_action N_SearchBrokerDatabasebyFFCode_Node0_action --> E_SearchBrokerDatabasebyFFCode S_SearchBrokerDatabasebyFFCode --> N_SearchBrokerDatabasebyFFCode_Node0 N_SearchBrokerDatabasebyFFCode_Node0 -- No --> E_SearchBrokerDatabasebyFFCode
File: GCX016E.cbl
GIVEN: A valid freight forwarder code exists
WHEN: The system searches the broker database using the freight forwarder code
THEN: The system queries the broker database tables to find matching broker records
βœ“ Consolidated Acceptance Criteria
  • The system accesses GCST2RT table → the broker name is retrieved from the GCST2RT broker name 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_RetrieveBrokerNamefromGCST2RT(["Start Step"]) E_RetrieveBrokerNamefromGCST2RT(["End Step"]) N_RetrieveBrokerNamefromGCST2RT_Node0{"The system accesses GCST2RT table"}:::decision N_RetrieveBrokerNamefromGCST2RT_Node0_action["The broker name is retrieved from
the GCST2RT broker name segments"]:::main N_RetrieveBrokerNamefromGCST2RT_Node0 -- Yes --> N_RetrieveBrokerNamefromGCST2RT_Node0_action N_RetrieveBrokerNamefromGCST2RT_Node0_action --> E_RetrieveBrokerNamefromGCST2RT S_RetrieveBrokerNamefromGCST2RT --> N_RetrieveBrokerNamefromGCST2RT_Node0 N_RetrieveBrokerNamefromGCST2RT_Node0 -- No --> E_RetrieveBrokerNamefromGCST2RT
File: GCX016E.cbl
GIVEN: A valid broker record has been found in the database
WHEN: The system accesses GCST2RT table
THEN: The broker name is retrieved from the GCST2RT broker name segments
βœ“ Consolidated Acceptance Criteria
  • The system processes the broker information data → the freight forwarder name is extracted from the 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_ExtractFreightForwarderName(["Start Step"]) E_ExtractFreightForwarderName(["End Step"]) N_ExtractFreightForwarderName_Node0{"The system processes the broker
information data"}:::decision N_ExtractFreightForwarderName_Node0_action["The freight forwarder name is
extracted from the broker
information"]:::main N_ExtractFreightForwarderName_Node0 -- Yes --> N_ExtractFreightForwarderName_Node0_action N_ExtractFreightForwarderName_Node0_action --> E_ExtractFreightForwarderName S_ExtractFreightForwarderName --> N_ExtractFreightForwarderName_Node0 N_ExtractFreightForwarderName_Node0 -- No --> E_ExtractFreightForwarderName
File: GCX016E.cbl
GIVEN: Associated broker information has been retrieved
WHEN: The system processes the broker information data
THEN: The freight forwarder name is extracted from the broker information
βœ“ Consolidated Acceptance Criteria
  • The system continues processing broker information → broker contact details are extracted from the broker information 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_ExtractBrokerContactDetails(["Start Step"]) E_ExtractBrokerContactDetails(["End Step"]) N_ExtractBrokerContactDetails_Node0{"The system continues processing
broker information"}:::decision N_ExtractBrokerContactDetails_Node0_action["Broker contact details are
extracted from the broker
information data"]:::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: GCX016E.cbl
GIVEN: Freight forwarder name has been extracted
WHEN: The system continues processing broker information
THEN: Broker contact details are extracted from the broker information data
βœ“ Consolidated Acceptance Criteria
  • The system completes information extraction → the freight forwarder name and broker information are stored in system 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_StoreFFNameandBrokerInfo(["Start Step"]) E_StoreFFNameandBrokerInfo(["End Step"]) N_StoreFFNameandBrokerInfo_Node0{"The system completes information
extraction"}:::decision N_StoreFFNameandBrokerInfo_Node0_action["The freight forwarder name and
broker information are stored in
system variables"]:::main N_StoreFFNameandBrokerInfo_Node0 -- Yes --> N_StoreFFNameandBrokerInfo_Node0_action N_StoreFFNameandBrokerInfo_Node0_action --> E_StoreFFNameandBrokerInfo S_StoreFFNameandBrokerInfo --> N_StoreFFNameandBrokerInfo_Node0 N_StoreFFNameandBrokerInfo_Node0 -- No --> E_StoreFFNameandBrokerInfo
File: GCX016E.cbl
GIVEN: Freight forwarder name and broker contact details have been extracted
WHEN: The system completes information extraction
THEN:
  • The freight forwarder name
  • Broker information are stored in system variables
βœ“ Consolidated Acceptance Criteria
  • The lookup process completes successfully → the system sets the lookup success flag 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_SetLookupSuccessFlag(["Start Step"]) E_SetLookupSuccessFlag(["End Step"]) N_SetLookupSuccessFlag_Node0{"The lookup process completes
successfully"}:::decision N_SetLookupSuccessFlag_Node0_action["The system sets the lookup success
flag to indicate successful
completion"]:::main N_SetLookupSuccessFlag_Node0 -- Yes --> N_SetLookupSuccessFlag_Node0_action N_SetLookupSuccessFlag_Node0_action --> E_SetLookupSuccessFlag S_SetLookupSuccessFlag --> N_SetLookupSuccessFlag_Node0 N_SetLookupSuccessFlag_Node0 -- No --> E_SetLookupSuccessFlag
File: GCX016E.cbl
GIVEN: Freight forwarder name and broker information have been successfully stored
WHEN: The lookup process completes successfully
THEN: The system sets the lookup success flag to indicate successful completion
βœ“ Consolidated Acceptance Criteria
  • The lookup process cannot be completed successfully → the system sets the lookup failed flag to indicate unsuccessful 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_SetLookupFailedFlag(["Start Step"]) E_SetLookupFailedFlag(["End Step"]) N_SetLookupFailedFlag_Node0{"The lookup process cannot be
completed successfully"}:::decision N_SetLookupFailedFlag_Node0_action["The system sets the lookup failed
flag to indicate unsuccessful
completion"]:::main N_SetLookupFailedFlag_Node0 -- Yes --> N_SetLookupFailedFlag_Node0_action N_SetLookupFailedFlag_Node0_action --> E_SetLookupFailedFlag S_SetLookupFailedFlag --> N_SetLookupFailedFlag_Node0 N_SetLookupFailedFlag_Node0 -- No --> E_SetLookupFailedFlag
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Either freight forwarder code is not found or broker information lookup fails
WHEN: The lookup process cannot be completed successfully
THEN: The system sets the lookup failed flag to indicate unsuccessful completion
βœ“ Consolidated Acceptance Criteria
  • The system determines that broker information is not available → the system logs that broker information was not found for the freight forwarder 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_LogBrokerInformationNotFound(["Start Step"]) E_LogBrokerInformationNotFound(["End Step"]) N_LogBrokerInformationNotFound_Node0{"The system determines that broker
information is not available"}:::decision N_LogBrokerInformationNotFound_Node0_action["The system logs that broker
information was not found for the
freight forwarder code"]:::main N_LogBrokerInformationNotFound_Node0 -- Yes --> N_LogBrokerInformationNotFound_Node0_action N_LogBrokerInformationNotFound_Node0_action --> E_LogBrokerInformationNotFound S_LogBrokerInformationNotFound --> N_LogBrokerInformationNotFound_Node0 N_LogBrokerInformationNotFound_Node0 -- No --> E_LogBrokerInformationNotFound
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Broker database search has been performed but no matching broker record was found
WHEN: The system determines that broker information is not available
THEN: The system logs that broker information was not found for the freight forwarder code
βœ“ Consolidated Acceptance Criteria
  • If freight forwarder information → the system determines if freight forwarder information is available and proceeds with lookup or logs missing information 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_FreightForwarderInformationAvailable(["Start Step"]) E_FreightForwarderInformationAvailable(["End Step"]) N_FreightForwarderInformationAvailable_Node0{"The system evaluates freight
forwarder information"}:::decision N_FreightForwarderInformationAvailable_Node0_action["The system determines if freight
forwarder information is available
and proceeds with lookup or logs
missing information warning"]:::main N_FreightForwarderInformationAvailable_Node0 -- Yes --> N_FreightForwarderInformationAvailable_Node0_action N_FreightForwarderInformationAvailable_Node0_action --> E_FreightForwarderInformationAvailable S_FreightForwarderInformationAvailable --> N_FreightForwarderInformationAvailable_Node0 N_FreightForwarderInformationAvailable_Node0 -- No --> E_FreightForwarderInformationAvailable
File: GCX016E.cbl
GIVEN: Cargo segment data has been retrieved
WHEN: The system evaluates freight forwarder information
THEN:
  • The system determines if freight forwarder information is available
  • Proceeds with lookup or logs missing information warning
βœ“ Consolidated Acceptance Criteria
  • The system needs to retrieve freight forwarder details → the system searches GCST2RT broker name segments table using freight forwarder 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_LookupFreightForwarderNamefromBrokerDatabase(["Start Step"]) E_LookupFreightForwarderNamefromBrokerDatabase(["End Step"]) N_LookupFreightForwarderNamefromBrokerDatabase_Node0{"The system needs to retrieve
freight forwarder details"}:::decision N_LookupFreightForwarderNamefromBrokerDatabase_Node0_action["The system searches GCST2RT broker
name segments table using freight
forwarder identifier"]:::main N_LookupFreightForwarderNamefromBrokerDatabase_Node0 -- Yes --> N_LookupFreightForwarderNamefromBrokerDatabase_Node0_action N_LookupFreightForwarderNamefromBrokerDatabase_Node0_action --> E_LookupFreightForwarderNamefromBrokerDatabase S_LookupFreightForwarderNamefromBrokerDatabase --> N_LookupFreightForwarderNamefromBrokerDatabase_Node0 N_LookupFreightForwarderNamefromBrokerDatabase_Node0 -- No --> E_LookupFreightForwarderNamefromBrokerDatabase
File: GCX016E.cbl
GIVEN: Freight forwarder information is available in cargo segment
WHEN: The system needs to retrieve freight forwarder details
THEN: The system searches GCST2RT broker name segments table using freight forwarder identifier
βœ“ Consolidated Acceptance Criteria
  • The system needs contact information for notifications → the system accesses GCSTBRT broker contact table using broker 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_AccessBrokerContactTable(["Start Step"]) E_AccessBrokerContactTable(["End Step"]) N_AccessBrokerContactTable_Node0{"The system needs contact
information for notifications"}:::decision N_AccessBrokerContactTable_Node0_action["The system accesses GCSTBRT broker
contact table using broker
identifier"]:::main N_AccessBrokerContactTable_Node0 -- Yes --> N_AccessBrokerContactTable_Node0_action N_AccessBrokerContactTable_Node0_action --> E_AccessBrokerContactTable S_AccessBrokerContactTable --> N_AccessBrokerContactTable_Node0 N_AccessBrokerContactTable_Node0 -- No --> E_AccessBrokerContactTable
File: GCX016E.cbl
GIVEN: Broker information has been retrieved
WHEN: The system needs contact information for notifications
THEN: The system accesses GCSTBRT broker contact table using broker identifier
βœ“ Consolidated Acceptance Criteria
  • The system processes contact information → the system extracts email addresses from the contact table records 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_ExtractEmailAddresses(["Start Step"]) E_ExtractEmailAddresses(["End Step"]) N_ExtractEmailAddresses_Node0{"The system processes contact
information"}:::decision N_ExtractEmailAddresses_Node0_action["The system extracts email addresses
from the contact table records for
notification purposes"]:::main N_ExtractEmailAddresses_Node0 -- Yes --> N_ExtractEmailAddresses_Node0_action N_ExtractEmailAddresses_Node0_action --> E_ExtractEmailAddresses S_ExtractEmailAddresses --> N_ExtractEmailAddresses_Node0 N_ExtractEmailAddresses_Node0 -- No --> E_ExtractEmailAddresses
File: GCX016E.cbl
GIVEN: Broker contact table has been accessed
WHEN: The system processes contact information
THEN: The system extracts email addresses from the contact table records for notification purposes
βœ“ Consolidated Acceptance Criteria
  • The system needs complete contact information → the system retrieves additional contact information such as phone numbers and addresses from the contact 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_RetrieveAdditionalContactInformation(["Start Step"]) E_RetrieveAdditionalContactInformation(["End Step"]) N_RetrieveAdditionalContactInformation_Node0{"The system needs complete contact
information"}:::decision N_RetrieveAdditionalContactInformation_Node0_action["The system retrieves additional
contact information such as phone
numbers and addresses from the
contact table"]:::main N_RetrieveAdditionalContactInformation_Node0 -- Yes --> N_RetrieveAdditionalContactInformation_Node0_action N_RetrieveAdditionalContactInformation_Node0_action --> E_RetrieveAdditionalContactInformation S_RetrieveAdditionalContactInformation --> N_RetrieveAdditionalContactInformation_Node0 N_RetrieveAdditionalContactInformation_Node0 -- No --> E_RetrieveAdditionalContactInformation
File: GCX016E.cbl
GIVEN: Email addresses have been extracted from contact table
WHEN: The system needs complete contact information
THEN:
  • The system retrieves additional contact information such as phone numbers
  • Addresses from the contact table
βœ“ Consolidated Acceptance Criteria
  • The system validates contact information → the system checks that required contact fields are present and properly formatted
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_ValidateContactInformation(["Start Step"]) E_ValidateContactInformation(["End Step"]) N_ValidateContactInformation_Node0{"The system validates contact
information"}:::decision N_ValidateContactInformation_Node0_action["The system checks that required
contact fields are present and
properly formatted"]:::main N_ValidateContactInformation_Node0 -- Yes --> N_ValidateContactInformation_Node0_action N_ValidateContactInformation_Node0_action --> E_ValidateContactInformation S_ValidateContactInformation --> N_ValidateContactInformation_Node0 N_ValidateContactInformation_Node0 -- No --> E_ValidateContactInformation
File: GCX016E.cbl
GIVEN: Contact information has been retrieved from broker contact table
WHEN: The system validates contact information
THEN:
  • The system checks that required contact fields are present
  • Properly formatted
βœ“ Consolidated Acceptance Criteria
  • If information completeness → the system determines if contact information is complete and routes to storage or warning logging 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_ContactInformationComplete(["Start Step"]) E_ContactInformationComplete(["End Step"]) N_ContactInformationComplete_Node0{"The system evaluates information
completeness"}:::decision N_ContactInformationComplete_Node0_action["The system determines if contact
information is complete and routes
to storage or warning logging
accordingly"]:::main N_ContactInformationComplete_Node0 -- Yes --> N_ContactInformationComplete_Node0_action N_ContactInformationComplete_Node0_action --> E_ContactInformationComplete S_ContactInformationComplete --> N_ContactInformationComplete_Node0 N_ContactInformationComplete_Node0 -- No --> E_ContactInformationComplete
File: GCX016E.cbl
GIVEN: Contact information has been validated
WHEN: The system evaluates information completeness
THEN:
  • The system determines if contact information is complete
  • Routes to storage or warning logging accordingly
βœ“ Consolidated Acceptance Criteria
  • The system needs to store contact information → the system stores the contact information including email addresses for use in freight forwarder 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_StoreContactInformationforNotifications(["Start Step"]) E_StoreContactInformationforNotifications(["End Step"]) N_StoreContactInformationforNotifications_Node0{"The system needs to store contact
information"}:::decision N_StoreContactInformationforNotifications_Node0_action["The system stores the contact
information including email
addresses for use in freight
forwarder notifications"]:::main N_StoreContactInformationforNotifications_Node0 -- Yes --> N_StoreContactInformationforNotifications_Node0_action N_StoreContactInformationforNotifications_Node0_action --> E_StoreContactInformationforNotifications S_StoreContactInformationforNotifications --> N_StoreContactInformationforNotifications_Node0 N_StoreContactInformationforNotifications_Node0 -- No --> E_StoreContactInformationforNotifications
File: GCX016E.cbl
GIVEN: Contact information is complete and validated
WHEN: The system needs to store contact information
THEN: The system stores the contact information including email addresses for use in freight forwarder notifications
βœ“ Consolidated Acceptance Criteria
  • The system cannot retrieve complete contact information → the system logs a warning message indicating missing or incomplete freight forwarder contact 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_LogMissingContactInformationWarning(["Start Step"]) E_LogMissingContactInformationWarning(["End Step"]) N_LogMissingContactInformationWarning_Node0{"The system cannot retrieve complete
contact information"}:::decision N_LogMissingContactInformationWarning_Node0_action["The system logs a warning message
indicating missing or incomplete
freight forwarder contact
information"]:::main N_LogMissingContactInformationWarning_Node0 -- Yes --> N_LogMissingContactInformationWarning_Node0_action N_LogMissingContactInformationWarning_Node0_action --> E_LogMissingContactInformationWarning S_LogMissingContactInformationWarning --> N_LogMissingContactInformationWarning_Node0 N_LogMissingContactInformationWarning_Node0 -- No --> E_LogMissingContactInformationWarning
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Freight forwarder information is not available OR contact information is incomplete
WHEN: The system cannot retrieve complete contact information
THEN: The system logs a warning message indicating missing or incomplete freight forwarder contact information
βœ“ Consolidated Acceptance Criteria
  • The system searches the broker database for the freight forwarder name → the system validates the freight forwarder's existence in the broker 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_LookupFreightForwarderNameinBrokerDatabase(["Start Step"]) E_LookupFreightForwarderNameinBrokerDatabase(["End Step"]) N_LookupFreightForwarderNameinBrokerDatabase_Node0{"The system searches the broker
database for the freight forwarder
name"}:::decision N_LookupFreightForwarderNameinBrokerDatabase_Node0_action["The system validates the freight
forwarder s existence in the broker
database"]:::main N_LookupFreightForwarderNameinBrokerDatabase_Node0 -- Yes --> N_LookupFreightForwarderNameinBrokerDatabase_Node0_action N_LookupFreightForwarderNameinBrokerDatabase_Node0_action --> E_LookupFreightForwarderNameinBrokerDatabase S_LookupFreightForwarderNameinBrokerDatabase --> N_LookupFreightForwarderNameinBrokerDatabase_Node0 N_LookupFreightForwarderNameinBrokerDatabase_Node0 -- No --> E_LookupFreightForwarderNameinBrokerDatabase
File: GCX016E.cbl
GIVEN: Freight forwarder information has been extracted from cargo segments
WHEN: The system searches the broker database for the freight forwarder name
THEN: The system validates the freight forwarder's existence in the broker database
βœ“ Consolidated Acceptance Criteria
  • The system accesses the GCSTBRT broker table to retrieve email address information → the system obtains the freight forwarder's email address for notification 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_RetrieveEmailAddressfromGCSTBRTTable(["Start Step"]) E_RetrieveEmailAddressfromGCSTBRTTable(["End Step"]) N_RetrieveEmailAddressfromGCSTBRTTable_Node0{"The system accesses the GCSTBRT
broker table to retrieve email
address information"}:::decision N_RetrieveEmailAddressfromGCSTBRTTable_Node0_action["The system obtains the freight
forwarder s email address for
notification delivery"]:::main N_RetrieveEmailAddressfromGCSTBRTTable_Node0 -- Yes --> N_RetrieveEmailAddressfromGCSTBRTTable_Node0_action N_RetrieveEmailAddressfromGCSTBRTTable_Node0_action --> E_RetrieveEmailAddressfromGCSTBRTTable S_RetrieveEmailAddressfromGCSTBRTTable --> N_RetrieveEmailAddressfromGCSTBRTTable_Node0 N_RetrieveEmailAddressfromGCSTBRTTable_Node0 -- No --> E_RetrieveEmailAddressfromGCSTBRTTable
File: GCX016E.cbl
GIVEN: A valid freight forwarder name has been found in the broker database
WHEN: The system accesses the GCSTBRT broker table to retrieve email address information
THEN: The system obtains the freight forwarder's email address for notification delivery
βœ“ Consolidated Acceptance Criteria
  • The system processes hold reason details for email inclusion → the system adds comprehensive hold reason details and explanations to complete the email notification 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_IncludeHoldReasonDetails(["Start Step"]) E_IncludeHoldReasonDetails(["End Step"]) N_IncludeHoldReasonDetails_Node0{"The system processes hold reason
details for email inclusion"}:::decision N_IncludeHoldReasonDetails_Node0_action["The system adds comprehensive hold
reason details and explanations to
complete the email notification
content"]:::main N_IncludeHoldReasonDetails_Node0 -- Yes --> N_IncludeHoldReasonDetails_Node0_action N_IncludeHoldReasonDetails_Node0_action --> E_IncludeHoldReasonDetails S_IncludeHoldReasonDetails --> N_IncludeHoldReasonDetails_Node0 N_IncludeHoldReasonDetails_Node0 -- No --> E_IncludeHoldReasonDetails
File: GCX016E.cbl
GIVEN: CIH disposition information has been included in the email content
WHEN: The system processes hold reason details for email inclusion
THEN:
  • The system adds comprehensive hold reason details
  • Explanations to complete the email notification content
βœ“ Consolidated Acceptance Criteria
  • The system encounters email delivery failures or issues → the system applies retry logic to attempt email delivery multiple times before considering it 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_ApplyRetryLogicforDeliveryFailures(["Start Step"]) E_ApplyRetryLogicforDeliveryFailures(["End Step"]) N_ApplyRetryLogicforDeliveryFailures_Node0{"The system encounters email
delivery failures or issues"}:::decision N_ApplyRetryLogicforDeliveryFailures_Node0_action["The system applies retry logic to
attempt email delivery multiple
times before considering it failed"]:::main N_ApplyRetryLogicforDeliveryFailures_Node0 -- Yes --> N_ApplyRetryLogicforDeliveryFailures_Node0_action N_ApplyRetryLogicforDeliveryFailures_Node0_action --> E_ApplyRetryLogicforDeliveryFailures S_ApplyRetryLogicforDeliveryFailures --> N_ApplyRetryLogicforDeliveryFailures_Node0 N_ApplyRetryLogicforDeliveryFailures_Node0 -- No --> E_ApplyRetryLogicforDeliveryFailures
File: GCX016E.cbl
GIVEN: An email notification has been sent to the freight forwarder
WHEN: The system encounters email delivery failures or issues
THEN: The system applies retry logic to attempt email delivery multiple times before considering it failed
βœ“ Consolidated Acceptance Criteria
  • The system processes the delivery failure → the system initiates alternative notification 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_HandleEmailDeliveryFailure(["Start Step"]) E_HandleEmailDeliveryFailure(["End Step"]) N_HandleEmailDeliveryFailure_Node0{"The system processes the delivery
failure"}:::decision N_HandleEmailDeliveryFailure_Node0_action["The system initiates alternative
notification handling procedures"]:::main N_HandleEmailDeliveryFailure_Node0 -- Yes --> N_HandleEmailDeliveryFailure_Node0_action N_HandleEmailDeliveryFailure_Node0_action --> E_HandleEmailDeliveryFailure S_HandleEmailDeliveryFailure --> N_HandleEmailDeliveryFailure_Node0 N_HandleEmailDeliveryFailure_Node0 -- No --> E_HandleEmailDeliveryFailure
File: GCX016E.cbl
GIVEN: Email notification delivery has failed after retry attempts
WHEN: The system processes the delivery failure
THEN: The system initiates alternative notification handling procedures
βœ“ Consolidated Acceptance Criteria
  • The system finalizes the email notification process → the system logs the completion of email processing with final status and actions 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_LogEmailProcessingComplete(["Start Step"]) E_LogEmailProcessingComplete(["End Step"]) N_LogEmailProcessingComplete_Node0{"The system finalizes the email
notification process"}:::decision N_LogEmailProcessingComplete_Node0_action["The system logs the completion of
email processing with final status
and actions taken"]:::main N_LogEmailProcessingComplete_Node0 -- Yes --> N_LogEmailProcessingComplete_Node0_action N_LogEmailProcessingComplete_Node0_action --> E_LogEmailProcessingComplete S_LogEmailProcessingComplete --> N_LogEmailProcessingComplete_Node0 N_LogEmailProcessingComplete_Node0 -- No --> E_LogEmailProcessingComplete
File: GCX016E.cbl
GIVEN: Email processing has been completed either through successful delivery or fallback rerouting
WHEN: The system finalizes the email notification process
THEN:
  • The system logs the completion of email processing with final status
  • Actions taken
βœ“ Consolidated Acceptance Criteria
  • The system prepares the email message content → the email message includes cargo details (CCN, waybill, car ID), equipment information, origin/destination data, consignee information, and disposition code 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_PrepareEmailMessageContent(["Start Step"]) E_PrepareEmailMessageContent(["End Step"]) N_PrepareEmailMessageContent_Node0{"The system prepares the email
message content"}:::decision N_PrepareEmailMessageContent_Node0_action["The email message includes cargo
details CCN, waybill, car ID,
equipment information,
origindestination data, consignee
information, and disposition code
messages"]:::main N_PrepareEmailMessageContent_Node0 -- Yes --> N_PrepareEmailMessageContent_Node0_action N_PrepareEmailMessageContent_Node0_action --> E_PrepareEmailMessageContent S_PrepareEmailMessageContent --> N_PrepareEmailMessageContent_Node0 N_PrepareEmailMessageContent_Node0 -- No --> E_PrepareEmailMessageContent
File: GCX016E.cbl
GIVEN: A freight forwarder disposition code requires email notification and cargo information is available
WHEN: The system prepares the email message content
THEN: The email message includes cargo details (CCN, waybill, car ID), equipment information, origin/destination data, consignee information, and disposition code messages
βœ“ Consolidated Acceptance Criteria
  • The system sets up the initial delivery attempt → the retry counter is set to zero and delivery parameters are initialized for the first 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_SetInitialDeliveryAttempt(["Start Step"]) E_SetInitialDeliveryAttempt(["End Step"]) N_SetInitialDeliveryAttempt_Node0{"The system sets up the initial
delivery attempt"}:::decision N_SetInitialDeliveryAttempt_Node0_action["The retry counter is set to zero
and delivery parameters are
initialized for the first attempt"]:::main N_SetInitialDeliveryAttempt_Node0 -- Yes --> N_SetInitialDeliveryAttempt_Node0_action N_SetInitialDeliveryAttempt_Node0_action --> E_SetInitialDeliveryAttempt S_SetInitialDeliveryAttempt --> N_SetInitialDeliveryAttempt_Node0 N_SetInitialDeliveryAttempt_Node0 -- No --> E_SetInitialDeliveryAttempt
File: GCX016E.cbl
GIVEN: Email message content is prepared and ready for delivery
WHEN: The system sets up the initial delivery attempt
THEN:
  • The retry counter is set to zero
  • Delivery parameters are initialized for the first attempt
βœ“ Consolidated Acceptance Criteria
  • The system checks if maximum retries have been reached → if retry counter equals or exceeds maximum retry limit, proceed to failure logging, otherwise continue with retry delay
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,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{"The system checks if maximum
retries have been reached"}:::decision N_MaxRetriesReached_Node0_action["If retry counter equals or exceeds
maximum retry limit, proceed to
failure logging, otherwise continue
with retry delay"]:::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: GCX016E.cbl
GIVEN: Email delivery has failed and retry counter has been incremented
WHEN: The system checks if maximum retries have been reached
THEN: If retry counter equals or exceeds maximum retry limit, proceed to failure logging, otherwise continue with retry delay
βœ“ Consolidated Acceptance Criteria
  • The system applies retry delay → a predetermined delay period is applied before the next delivery 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_ApplyRetryDelay(["Start Step"]) E_ApplyRetryDelay(["End Step"]) N_ApplyRetryDelay_Node0{"The system applies retry delay"}:::decision N_ApplyRetryDelay_Node0_action["A predetermined delay period is
applied before the next delivery
attempt"]:::main N_ApplyRetryDelay_Node0 -- Yes --> N_ApplyRetryDelay_Node0_action N_ApplyRetryDelay_Node0_action --> E_ApplyRetryDelay S_ApplyRetryDelay --> N_ApplyRetryDelay_Node0 N_ApplyRetryDelay_Node0 -- No --> E_ApplyRetryDelay
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: Email delivery has failed and maximum retries have not been reached
WHEN: The system applies retry delay
THEN: A predetermined delay period is applied before the next delivery attempt
βœ“ Consolidated Acceptance Criteria
  • The system updates delivery status → the delivery status is updated to indicate retry in progress and the system is ready for the next 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_UpdateDeliveryStatus(["Start Step"]) E_UpdateDeliveryStatus(["End Step"]) N_UpdateDeliveryStatus_Node0{"The system updates delivery status"}:::decision N_UpdateDeliveryStatus_Node0_action["The delivery status is updated to
indicate retry in progress and the
system is ready for the next attempt"]:::main N_UpdateDeliveryStatus_Node0 -- Yes --> N_UpdateDeliveryStatus_Node0_action N_UpdateDeliveryStatus_Node0_action --> E_UpdateDeliveryStatus S_UpdateDeliveryStatus --> N_UpdateDeliveryStatus_Node0 N_UpdateDeliveryStatus_Node0 -- No --> E_UpdateDeliveryStatus
File: GCX016E.cbl
GIVEN: Retry delay has been applied
WHEN: The system updates delivery status
THEN:
  • The delivery status is updated to indicate retry in progress
  • The system is ready for the next attempt
βœ“ Consolidated Acceptance Criteria
  • The system routes to alternative recipient → the email is prepared for delivery to backup recipients (AEI9999, OM01247) as fallback 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_RoutetoAlternativeRecipient(["Start Step"]) E_RoutetoAlternativeRecipient(["End Step"]) N_RoutetoAlternativeRecipient_Node0{"The system routes to alternative
recipient"}:::decision N_RoutetoAlternativeRecipient_Node0_action["The email is prepared for delivery
to backup recipients AEI9999,
OM01247 as fallback options"]:::main N_RoutetoAlternativeRecipient_Node0 -- Yes --> N_RoutetoAlternativeRecipient_Node0_action N_RoutetoAlternativeRecipient_Node0_action --> E_RoutetoAlternativeRecipient S_RoutetoAlternativeRecipient --> N_RoutetoAlternativeRecipient_Node0 N_RoutetoAlternativeRecipient_Node0 -- No --> E_RoutetoAlternativeRecipient
File: GCX016E.cbl
GIVEN: Primary email delivery has failed after maximum retry attempts
WHEN: The system routes to alternative recipient
THEN: The email is prepared for delivery to backup recipients (AEI9999, OM01247) as fallback options
βœ“ Consolidated Acceptance Criteria
  • The system checks alternative recipient availability → if alternative recipients (AEI9999, OM01247) are available, proceed to send to default recipient, otherwise log 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_AlternativeAvailable(["Start Step"]) E_AlternativeAvailable(["End Step"]) N_AlternativeAvailable_Node0{"The system checks alternative
recipient availability"}:::decision N_AlternativeAvailable_Node0_action["If alternative recipients AEI9999,
OM01247 are available, proceed to
send to default recipient, otherwise
log final failure"]:::main N_AlternativeAvailable_Node0 -- Yes --> N_AlternativeAvailable_Node0_action N_AlternativeAvailable_Node0_action --> E_AlternativeAvailable S_AlternativeAvailable --> N_AlternativeAvailable_Node0 N_AlternativeAvailable_Node0 -- No --> E_AlternativeAvailable
File: GCX016E.cbl
GIVEN: Primary email delivery has failed and alternative routing is initiated
WHEN: The system checks alternative recipient availability
THEN: If alternative recipients (AEI9999, OM01247) are available, proceed to send to default recipient, otherwise log final failure
βœ“ Consolidated Acceptance Criteria
  • The system logs final failure → a final failure record is created indicating complete delivery failure with all attempted recipients 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_LogFinalFailure(["Start Step"]) E_LogFinalFailure(["End Step"]) N_LogFinalFailure_Node0{"The system logs final failure"}:::decision N_LogFinalFailure_Node0_action["A final failure record is created
indicating complete delivery failure
with all attempted recipients and
error details"]:::main N_LogFinalFailure_Node0 -- Yes --> N_LogFinalFailure_Node0_action N_LogFinalFailure_Node0_action --> E_LogFinalFailure S_LogFinalFailure --> N_LogFinalFailure_Node0 N_LogFinalFailure_Node0 -- No --> E_LogFinalFailure
File: GCX016E.cbl
GIVEN: All email delivery attempts including alternative recipients have failed
WHEN: The system logs final failure
THEN:
  • A final failure record is created indicating complete delivery failure with all attempted recipients
  • Error details
βœ“ Consolidated Acceptance Criteria
  • The system initiates debug information capture → a debug header is created with cargo identification details including equipment ID, waybill number, and 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_CreateDebugInformationHeader(["Start Step"]) E_CreateDebugInformationHeader(["End Step"]) N_CreateDebugInformationHeader_Node0{"The system initiates debug
information capture"}:::decision N_CreateDebugInformationHeader_Node0_action["A debug header is created with
cargo identification details
including equipment ID, waybill
number, and US-CCN"]:::main N_CreateDebugInformationHeader_Node0 -- Yes --> N_CreateDebugInformationHeader_Node0_action N_CreateDebugInformationHeader_Node0_action --> E_CreateDebugInformationHeader S_CreateDebugInformationHeader --> N_CreateDebugInformationHeader_Node0 N_CreateDebugInformationHeader_Node0 -- No --> E_CreateDebugInformationHeader
File: GCX016E.cbl
GIVEN: A cargo status processing event requires debug logging
WHEN: The system initiates debug information capture
THEN: A debug header is created with cargo identification details including equipment ID, waybill number, and US-CCN
βœ“ Consolidated Acceptance Criteria
  • The system begins cargo status processing → the current cargo status, quantities, and disposition codes are captured and logged as baseline 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_LogCargoStatusBeforeProcessing(["Start Step"]) E_LogCargoStatusBeforeProcessing(["End Step"]) N_LogCargoStatusBeforeProcessing_Node0{"The system begins cargo status
processing"}:::decision N_LogCargoStatusBeforeProcessing_Node0_action["The current cargo status,
quantities, and disposition codes
are captured and logged as baseline
information"]:::main N_LogCargoStatusBeforeProcessing_Node0 -- Yes --> N_LogCargoStatusBeforeProcessing_Node0_action N_LogCargoStatusBeforeProcessing_Node0_action --> E_LogCargoStatusBeforeProcessing S_LogCargoStatusBeforeProcessing --> N_LogCargoStatusBeforeProcessing_Node0 N_LogCargoStatusBeforeProcessing_Node0 -- No --> E_LogCargoStatusBeforeProcessing
File: GCX016E.cbl
GIVEN: A cargo requires status processing and debug logging is enabled
WHEN: The system begins cargo status processing
THEN:
  • The current cargo status, quantities, and disposition codes are captured
  • Logged as baseline information
βœ“ Consolidated Acceptance Criteria
  • The system attempts to capture current status information → if status information is available, proceed with detailed logging, otherwise skip to message 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_CaptureCurrentStatusInformation(["Start Step"]) E_CaptureCurrentStatusInformation(["End Step"]) N_CaptureCurrentStatusInformation_Node0{"The system attempts to capture
current status information"}:::decision N_CaptureCurrentStatusInformation_Node0_action["If status information is available,
proceed with detailed logging,
otherwise skip to message formatting"]:::main N_CaptureCurrentStatusInformation_Node0 -- Yes --> N_CaptureCurrentStatusInformation_Node0_action N_CaptureCurrentStatusInformation_Node0_action --> E_CaptureCurrentStatusInformation S_CaptureCurrentStatusInformation --> N_CaptureCurrentStatusInformation_Node0 N_CaptureCurrentStatusInformation_Node0 -- No --> E_CaptureCurrentStatusInformation
File: GCX016E.cbl
GIVEN: Debug logging is requested for cargo status processing
WHEN: The system attempts to capture current status information
THEN: If status information is available, proceed with detailed logging, otherwise skip to message formatting
βœ“ Consolidated Acceptance Criteria
  • The system processes RT10/RT11 cargo status records → rT10 and RT11 status details are captured and included in the debug 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_LogRT10RT11CargoStatus(["Start Step"]) E_LogRT10RT11CargoStatus(["End Step"]) N_LogRT10RT11CargoStatus_Node0{"The system processes RT10RT11 cargo
status records"}:::decision N_LogRT10RT11CargoStatus_Node0_action["RT10 and RT11 status details are
captured and included in the debug
log"]:::main N_LogRT10RT11CargoStatus_Node0 -- Yes --> N_LogRT10RT11CargoStatus_Node0_action N_LogRT10RT11CargoStatus_Node0_action --> E_LogRT10RT11CargoStatus S_LogRT10RT11CargoStatus --> N_LogRT10RT11CargoStatus_Node0 N_LogRT10RT11CargoStatus_Node0 -- No --> E_LogRT10RT11CargoStatus
File: GCX016E.cbl
GIVEN: Cargo status information is available for logging
WHEN: The system processes RT10/RT11 cargo status records
THEN:
  • Rt10
  • Rt11 status details are captured
  • Included in the debug log
βœ“ Consolidated Acceptance Criteria
  • The system logs cargo information → current cargo quantities, released quantities, and any pending quantity changes are documented in the debug 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_LogCargoQuantities(["Start Step"]) E_LogCargoQuantities(["End Step"]) N_LogCargoQuantities_Node0{"The system logs cargo information"}:::decision N_LogCargoQuantities_Node0_action["Current cargo quantities, released
quantities, and any pending quantity
changes are documented in the debug
log"]:::main N_LogCargoQuantities_Node0 -- Yes --> N_LogCargoQuantities_Node0_action N_LogCargoQuantities_Node0_action --> E_LogCargoQuantities S_LogCargoQuantities --> N_LogCargoQuantities_Node0 N_LogCargoQuantities_Node0 -- No --> E_LogCargoQuantities
File: GCX016E.cbl
GIVEN: Cargo status processing requires quantity tracking
WHEN: The system logs cargo information
THEN: Current cargo quantities, released quantities, and any pending quantity changes are documented in the debug log
βœ“ Consolidated Acceptance Criteria
  • The system performs debug logging → all current disposition codes, their entry numbers, and associated quantities are documented in the debug 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_LogDispositionCodes(["Start Step"]) E_LogDispositionCodes(["End Step"]) N_LogDispositionCodes_Node0{"The system performs debug logging"}:::decision N_LogDispositionCodes_Node0_action["All current disposition codes,
their entry numbers, and associated
quantities are documented in the
debug log"]:::main N_LogDispositionCodes_Node0 -- Yes --> N_LogDispositionCodes_Node0_action N_LogDispositionCodes_Node0_action --> E_LogDispositionCodes S_LogDispositionCodes --> N_LogDispositionCodes_Node0 N_LogDispositionCodes_Node0 -- No --> E_LogDispositionCodes
File: GCX016E.cbl
GIVEN: Cargo has associated disposition codes
WHEN: The system performs debug logging
THEN: All current disposition codes, their entry numbers, and associated quantities are documented in the debug log
βœ“ Consolidated Acceptance Criteria
  • Debug logging requires complete status visibility → the entire S09A status array is dumped showing all status codes, sequences, and occurrence 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_DumpCompleteS09AStatusArray(["Start Step"]) E_DumpCompleteS09AStatusArray(["End Step"]) N_DumpCompleteS09AStatusArray_Node0{"Debug logging requires complete
status visibility"}:::decision N_DumpCompleteS09AStatusArray_Node0_action["The entire S09A status array is
dumped showing all status codes,
sequences, and occurrence data"]:::main N_DumpCompleteS09AStatusArray_Node0 -- Yes --> N_DumpCompleteS09AStatusArray_Node0_action N_DumpCompleteS09AStatusArray_Node0_action --> E_DumpCompleteS09AStatusArray S_DumpCompleteS09AStatusArray --> N_DumpCompleteS09AStatusArray_Node0 N_DumpCompleteS09AStatusArray_Node0 -- No --> E_DumpCompleteS09AStatusArray
File: GCX016E.cbl
GIVEN: Cargo has an S09A status array with multiple entries
WHEN: Debug logging requires complete status visibility
THEN: The entire S09A status array is dumped showing all status codes, sequences, and occurrence data
βœ“ Consolidated Acceptance Criteria
  • The system finalizes debug logging → the final cargo status, updated quantities, and new disposition codes are captured and 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_LogCargoStatusAfterProcessing(["Start Step"]) E_LogCargoStatusAfterProcessing(["End Step"]) N_LogCargoStatusAfterProcessing_Node0{"The system finalizes debug logging"}:::decision N_LogCargoStatusAfterProcessing_Node0_action["The final cargo status, updated
quantities, and new disposition
codes are captured and logged"]:::main N_LogCargoStatusAfterProcessing_Node0 -- Yes --> N_LogCargoStatusAfterProcessing_Node0_action N_LogCargoStatusAfterProcessing_Node0_action --> E_LogCargoStatusAfterProcessing S_LogCargoStatusAfterProcessing --> N_LogCargoStatusAfterProcessing_Node0 N_LogCargoStatusAfterProcessing_Node0 -- No --> E_LogCargoStatusAfterProcessing
File: GCX016E.cbl
GIVEN: Cargo status processing has been completed
WHEN: The system finalizes debug logging
THEN:
  • The final cargo status, updated quantities, and new disposition codes are captured
  • Logged
βœ“ Consolidated Acceptance Criteria
  • The system finalizes debug processing → debug log information is stored in audit trail records with timestamps for compliance and historical 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_StoreDebugLogforAuditTrail(["Start Step"]) E_StoreDebugLogforAuditTrail(["End Step"]) N_StoreDebugLogforAuditTrail_Node0{"The system finalizes debug
processing"}:::decision N_StoreDebugLogforAuditTrail_Node0_action["Debug log information is stored in
audit trail records with timestamps
for compliance and historical
reference"]:::main N_StoreDebugLogforAuditTrail_Node0 -- Yes --> N_StoreDebugLogforAuditTrail_Node0_action N_StoreDebugLogforAuditTrail_Node0_action --> E_StoreDebugLogforAuditTrail S_StoreDebugLogforAuditTrail --> N_StoreDebugLogforAuditTrail_Node0 N_StoreDebugLogforAuditTrail_Node0 -- No --> E_StoreDebugLogforAuditTrail
File: GCX016E.cbl
GIVEN: Debug logging has been completed
WHEN: The system finalizes debug processing
THEN:
  • Debug log information is stored in audit trail records with timestamps for compliance
  • Historical reference
βœ“ Consolidated Acceptance Criteria
  • The message type is determined to be ERROR → the message should be routed to the IN 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_ERRORMessageType(["Start Step"]) E_ERRORMessageType(["End Step"]) N_ERRORMessageType_Node0{"The message type is determined to
be ERROR"}:::decision N_ERRORMessageType_Node0_action["The message should be routed to the
IN destination"]:::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: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution
WHEN: The message type is determined to be ERROR
THEN: The message should be routed to the IN destination
βœ“ Consolidated Acceptance Criteria
  • The system processes the message routing → the message should be sent to IN destination and all valid SD segment 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 system processes the message
routing"}:::decision N_INFOMessageType_Node0_action["The message should be sent to IN
destination and all valid SD segment
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: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution and message type is INFO
WHEN: The system processes the message routing
THEN:
  • The message should be sent to in destination
  • All valid sd segment merlin ids
βœ“ Consolidated Acceptance Criteria
  • The system processes the message routing → the message should be sent only to valid SD segment Merlin IDs and not to IN 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_RELEASEMessageType(["Start Step"]) E_RELEASEMessageType(["End Step"]) N_RELEASEMessageType_Node0{"The system processes the message
routing"}:::decision N_RELEASEMessageType_Node0_action["The message should be sent only to
valid SD segment Merlin IDs and not
to IN destination"]:::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: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution and message type is RELEASE
WHEN: The system processes the message routing
THEN:
  • The message should be sent only to valid sd segment merlin ids
  • Not to in destination
βœ“ Consolidated Acceptance Criteria
  • If the equipment type for routing decisions → the message should be routed according to equipment-specific 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_EXPORTMessageType(["Start Step"]) E_EXPORTMessageType(["End Step"]) N_EXPORTMessageType_Node0{"The system evaluates the equipment
type for routing decisions"}:::decision N_EXPORTMessageType_Node0_action["The message should be routed
according to equipment-specific
routing rules"]:::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: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution and message type is EXPORT
WHEN: The system evaluates the equipment type for routing decisions
THEN: The message should be routed according to equipment-specific routing rules
βœ“ Consolidated Acceptance Criteria
  • The system processes the message routing → the message should be sent to OM01247 and all valid SD cancel 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_UNRLSEMessageType(["Start Step"]) E_UNRLSEMessageType(["End Step"]) N_UNRLSEMessageType_Node0{"The system processes the message
routing"}:::decision N_UNRLSEMessageType_Node0_action["The message should be sent to
OM01247 and all valid SD cancel
Merlin IDs"]:::main N_UNRLSEMessageType_Node0 -- Yes --> N_UNRLSEMessageType_Node0_action N_UNRLSEMessageType_Node0_action --> E_UNRLSEMessageType S_UNRLSEMessageType --> N_UNRLSEMessageType_Node0 N_UNRLSEMessageType_Node0 -- No --> E_UNRLSEMessageType
File: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution and message type is UNRLSE
WHEN: The system processes the message routing
THEN:
  • The message should be sent to om01247
  • All valid sd cancel merlin ids
βœ“ Consolidated Acceptance Criteria
  • The system processes message routing → the message should be delivered to all configured 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_RoutetoConfiguredRecipient(["Start Step"]) E_RoutetoConfiguredRecipient(["End Step"]) N_RoutetoConfiguredRecipient_Node0{"The system processes message
routing"}:::decision N_RoutetoConfiguredRecipient_Node0_action["The message should be delivered to
all configured valid recipients"]:::main N_RoutetoConfiguredRecipient_Node0 -- Yes --> N_RoutetoConfiguredRecipient_Node0_action N_RoutetoConfiguredRecipient_Node0_action --> E_RoutetoConfiguredRecipient S_RoutetoConfiguredRecipient --> N_RoutetoConfiguredRecipient_Node0 N_RoutetoConfiguredRecipient_Node0 -- No --> E_RoutetoConfiguredRecipient
File: GCX016E.cbl
GIVEN: Valid recipients have been found in the AD segment configuration
WHEN: The system processes message routing
THEN: The message should be delivered to all configured valid recipients
βœ“ Consolidated Acceptance Criteria
  • The system needs to deliver the message → the message should be routed to the default recipient OM01247
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RoutetoDefaultRecipientOM01247(["Start Step"]) E_RoutetoDefaultRecipientOM01247(["End Step"]) N_RoutetoDefaultRecipientOM01247_Node0{"The system needs to deliver the
message"}:::decision N_RoutetoDefaultRecipientOM01247_Node0_action["The message should be routed to the
default recipient OM01247"]:::main N_RoutetoDefaultRecipientOM01247_Node0 -- Yes --> N_RoutetoDefaultRecipientOM01247_Node0_action N_RoutetoDefaultRecipientOM01247_Node0_action --> E_RoutetoDefaultRecipientOM01247 S_RoutetoDefaultRecipientOM01247 --> N_RoutetoDefaultRecipientOM01247_Node0 N_RoutetoDefaultRecipientOM01247_Node0 -- No --> E_RoutetoDefaultRecipientOM01247
File: GCX016E.cbl
GIVEN: No valid recipients were found in the AD segment configuration
WHEN: The system needs to deliver the message
THEN: The message should be routed to the default recipient OM01247
βœ“ Consolidated Acceptance Criteria
  • The distribution process completes → the distribution action should be 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_LogDistributionAction(["Start Step"]) E_LogDistributionAction(["End Step"]) N_LogDistributionAction_Node0{"The distribution process completes"}:::decision N_LogDistributionAction_Node0_action["The distribution action should be
logged with relevant details for
audit purposes"]:::main N_LogDistributionAction_Node0 -- Yes --> N_LogDistributionAction_Node0_action N_LogDistributionAction_Node0_action --> E_LogDistributionAction S_LogDistributionAction --> N_LogDistributionAction_Node0 N_LogDistributionAction_Node0 -- No --> E_LogDistributionAction
File: GCX016E.cbl
GIVEN: A message has been successfully distributed to recipients
WHEN: The distribution process completes
THEN: The distribution action should be logged with relevant details for audit purposes
βœ“ Consolidated Acceptance Criteria
  • If the failure conditions → if retry is required, reroute to default recipient; if no retry is needed, complete the distribution 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_RetryRequired(["Start Step"]) E_RetryRequired(["End Step"]) N_RetryRequired_Node0{"The system evaluates the failure
conditions"}:::decision N_RetryRequired_Node0_action["If retry is required, reroute to
default recipient if no retry is
needed, complete the distribution
process"]:::main N_RetryRequired_Node0 -- Yes --> N_RetryRequired_Node0_action N_RetryRequired_Node0_action --> E_RetryRequired S_RetryRequired --> N_RetryRequired_Node0 N_RetryRequired_Node0 -- No --> E_RetryRequired
File: GCX016E.cbl
GIVEN: A message delivery failure has been detected
WHEN: The system evaluates the failure conditions
THEN: If retry is required, reroute to default recipient; if no retry is needed, complete the distribution process
βœ“ Consolidated Acceptance Criteria
  • The recipient is valid → the system should use AD segment configuration for 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_UseADSegmentConfiguration(["Start Step"]) E_UseADSegmentConfiguration(["End Step"]) N_UseADSegmentConfiguration_Node0{"The recipient is valid"}:::decision N_UseADSegmentConfiguration_Node0_action["The system should use AD segment
configuration for delivery"]:::main N_UseADSegmentConfiguration_Node0 -- Yes --> N_UseADSegmentConfiguration_Node0_action N_UseADSegmentConfiguration_Node0_action --> E_UseADSegmentConfiguration S_UseADSegmentConfiguration --> N_UseADSegmentConfiguration_Node0 N_UseADSegmentConfiguration_Node0 -- No --> E_UseADSegmentConfiguration
File: GCX016E.cbl
GIVEN: A message recipient has been determined
WHEN: The recipient is valid
THEN: The system should use AD segment configuration for delivery
βœ“ Consolidated Acceptance Criteria
  • The rerouting is not successful → the system should record a final delivery 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_FinalDeliveryFailure(["Start Step"]) E_FinalDeliveryFailure(["End Step"]) N_FinalDeliveryFailure_Node0{"The rerouting is not successful"}:::decision N_FinalDeliveryFailure_Node0_action["The system should record a final
delivery failure"]:::main N_FinalDeliveryFailure_Node0 -- Yes --> N_FinalDeliveryFailure_Node0_action N_FinalDeliveryFailure_Node0_action --> E_FinalDeliveryFailure S_FinalDeliveryFailure --> N_FinalDeliveryFailure_Node0 N_FinalDeliveryFailure_Node0 -- No --> E_FinalDeliveryFailure
File: GCX016E.cbl
Exclusion / Alternative Path
GIVEN: A message rerouting has been attempted
WHEN: The rerouting is not successful
THEN: The system should record a final delivery failure
βœ“ Consolidated Acceptance Criteria
  • The delivery outcome is determined (success, rerouted success, or failure) → the system should log the 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_LogDeliveryStatus(["Start Step"]) E_LogDeliveryStatus(["End Step"]) N_LogDeliveryStatus_Node0{"The delivery outcome is determined
success, rerouted success, or
failure"}:::decision N_LogDeliveryStatus_Node0_action["The system should log the delivery
status"]:::main N_LogDeliveryStatus_Node0 -- Yes --> N_LogDeliveryStatus_Node0_action N_LogDeliveryStatus_Node0_action --> E_LogDeliveryStatus S_LogDeliveryStatus --> N_LogDeliveryStatus_Node0 N_LogDeliveryStatus_Node0 -- No --> E_LogDeliveryStatus
File: GCX016E.cbl
GIVEN: A message delivery process has completed
WHEN: The delivery outcome is determined (success, rerouted success, or failure)
THEN: The system should log the delivery status
βœ“ Consolidated Acceptance Criteria
  • The system sets the action code for the audit log → the action code is set to LOG-USE-INPUT-MESSAGE to indicate this is an input message logging 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_SetActionCodetoLOGUSEINPUTMESSAGE(["Start Step"]) E_SetActionCodetoLOGUSEINPUTMESSAGE(["End Step"]) N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0{"The system sets the action code for
the audit log"}:::decision N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action["The action code is set to
LOG-USE-INPUT-MESSAGE to indicate
this is an input message logging
action"]:::main N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 -- Yes --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0_action --> E_SetActionCodetoLOGUSEINPUTMESSAGE S_SetActionCodetoLOGUSEINPUTMESSAGE --> N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 N_SetActionCodetoLOGUSEINPUTMESSAGE_Node0 -- No --> E_SetActionCodetoLOGUSEINPUTMESSAGE
File: GCX016E.cbl
GIVEN: An audit log entry has been prepared with timestamp and user information
WHEN: The system sets the action code for the audit log
THEN: The action code is set to LOG-USE-INPUT-MESSAGE to indicate this is an input message logging action
βœ“ Consolidated Acceptance Criteria
  • The audit log entry is processed → the audit log entry is successfully created and recorded in the audit system 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_LogAuditEntryCreated(["Start Step"]) E_LogAuditEntryCreated(["End Step"]) N_LogAuditEntryCreated_Node0{"The audit log entry is processed"}:::decision N_LogAuditEntryCreated_Node0_action["The audit log entry is successfully
created and recorded in the audit
system for compliance tracking"]:::main N_LogAuditEntryCreated_Node0 -- Yes --> N_LogAuditEntryCreated_Node0_action N_LogAuditEntryCreated_Node0_action --> E_LogAuditEntryCreated S_LogAuditEntryCreated --> N_LogAuditEntryCreated_Node0 N_LogAuditEntryCreated_Node0 -- No --> E_LogAuditEntryCreated
File: GCX016E.cbl
GIVEN: The GCT1051E transaction spawn was successful
WHEN: The audit log entry is processed
THEN:
  • The audit log entry is successfully created
  • Recorded in the audit system for compliance tracking
βœ“ Consolidated Acceptance Criteria
  • The system needs car ID information for Merlin reporting → the car ID is extracted from the cargo record and made available 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_ExtractCarIDfromCargoRecord(["Start Step"]) E_ExtractCarIDfromCargoRecord(["End Step"]) N_ExtractCarIDfromCargoRecord_Node0{"The system needs car ID information
for Merlin reporting"}:::decision N_ExtractCarIDfromCargoRecord_Node0_action["The car ID is extracted from the
cargo record and made available for
formatting"]:::main N_ExtractCarIDfromCargoRecord_Node0 -- Yes --> N_ExtractCarIDfromCargoRecord_Node0_action N_ExtractCarIDfromCargoRecord_Node0_action --> E_ExtractCarIDfromCargoRecord S_ExtractCarIDfromCargoRecord --> N_ExtractCarIDfromCargoRecord_Node0 N_ExtractCarIDfromCargoRecord_Node0 -- No --> E_ExtractCarIDfromCargoRecord
File: GCX016E.cbl
GIVEN: A cargo record exists with car identification data
WHEN: The system needs car ID information for Merlin reporting
THEN:
  • The car id is extracted from the cargo record
  • Made available for formatting
βœ“ Consolidated Acceptance Criteria
  • The system processes waybill data for Merlin reporting → the waybill number is formatted according to report requirements
  • The waybill number formatting process is executed → the waybill number is formatted for consistent display 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_FormatWaybillNumber(["Start Step"]) E_FormatWaybillNumber(["End Step"]) N_FormatWaybillNumber_Node0{"The system processes waybill data
for Merlin reporting"}:::decision N_FormatWaybillNumber_Node0_action["The waybill number is formatted
according to report requirements"]:::main N_FormatWaybillNumber_Node0 -- Yes --> N_FormatWaybillNumber_Node0_action N_FormatWaybillNumber_Node0_action --> E_FormatWaybillNumber S_FormatWaybillNumber --> N_FormatWaybillNumber_Node0 N_FormatWaybillNumber_Node1{"The waybill number formatting
process is executed"}:::decision N_FormatWaybillNumber_Node1_action["The waybill number is formatted for
consistent display in the report"]:::main N_FormatWaybillNumber_Node1 -- Yes --> N_FormatWaybillNumber_Node1_action N_FormatWaybillNumber_Node1_action --> E_FormatWaybillNumber N_FormatWaybillNumber_Node0 -- No --> N_FormatWaybillNumber_Node1 N_FormatWaybillNumber_Node1 -- No --> E_FormatWaybillNumber
File: GCX016E.cbl
GIVEN: A cargo record contains waybill number information
WHEN: The system processes waybill data for Merlin reporting
THEN: The waybill number is formatted according to report requirements
File: GCX016E.cbl
GIVEN: A cargo record contains waybill number information
WHEN: The waybill number formatting process is executed
THEN: The waybill number is formatted for consistent display in the report
βœ“ Consolidated Acceptance Criteria
  • The system processes CCN data for Merlin reporting → the US-CCN is formatted according to report 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_FormatUSCCNInformation(["Start Step"]) E_FormatUSCCNInformation(["End Step"]) N_FormatUSCCNInformation_Node0{"The system processes CCN data for
Merlin reporting"}:::decision N_FormatUSCCNInformation_Node0_action["The US-CCN is formatted according
to report standards"]:::main N_FormatUSCCNInformation_Node0 -- Yes --> N_FormatUSCCNInformation_Node0_action N_FormatUSCCNInformation_Node0_action --> E_FormatUSCCNInformation S_FormatUSCCNInformation --> N_FormatUSCCNInformation_Node0 N_FormatUSCCNInformation_Node0 -- No --> E_FormatUSCCNInformation
File: GCX016E.cbl
GIVEN: A cargo record contains US-CCN information
WHEN: The system processes CCN data for Merlin reporting
THEN: The US-CCN is formatted according to report standards
βœ“ Consolidated Acceptance Criteria
  • The system needs the description for Merlin reporting → the disposition code description is obtained 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_GetDispositionDescription(["Start Step"]) E_GetDispositionDescription(["End Step"]) N_GetDispositionDescription_Node0{"The system needs the description
for Merlin reporting"}:::decision N_GetDispositionDescription_Node0_action["The disposition code description is
obtained from the disposition code
table"]:::main N_GetDispositionDescription_Node0 -- Yes --> N_GetDispositionDescription_Node0_action N_GetDispositionDescription_Node0_action --> E_GetDispositionDescription S_GetDispositionDescription --> N_GetDispositionDescription_Node0 N_GetDispositionDescription_Node0 -- No --> E_GetDispositionDescription
File: GCX016E.cbl
GIVEN: A disposition code has been retrieved from the table
WHEN: The system needs the description for Merlin reporting
THEN: The disposition code description is obtained from the disposition code table
βœ“ Consolidated Acceptance Criteria
  • The system checks if the disposition code affects release quantities → the system returns true if the disposition code affects release quantities, 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_DoesDispositionCodeAffectReleaseQuantity(["Start Step"]) E_DoesDispositionCodeAffectReleaseQuantity(["End Step"]) N_DoesDispositionCodeAffectReleaseQuantity_Node0{"The system checks if the
disposition code affects release
quantities"}:::decision N_DoesDispositionCodeAffectReleaseQuantity_Node0_action["The system returns true if the
disposition code affects release
quantities, false otherwise"]:::main N_DoesDispositionCodeAffectReleaseQuantity_Node0 -- Yes --> N_DoesDispositionCodeAffectReleaseQuantity_Node0_action N_DoesDispositionCodeAffectReleaseQuantity_Node0_action --> E_DoesDispositionCodeAffectReleaseQuantity S_DoesDispositionCodeAffectReleaseQuantity --> N_DoesDispositionCodeAffectReleaseQuantity_Node0 N_DoesDispositionCodeAffectReleaseQuantity_Node0 -- No --> E_DoesDispositionCodeAffectReleaseQuantity
File: GCX016E.cbl
GIVEN: A disposition code is being processed
WHEN: The system checks if the disposition code affects release quantities
THEN: The system returns true if the disposition code affects release quantities, false otherwise
βœ“ Consolidated Acceptance Criteria
  • The system assembles the complete Merlin report → all formatted fields are combined into a complete report structure
  • The complete report field assembly is executed → all components are assembled into complete Merlin report fields 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_AssembleCompleteMerlinReportFields(["Start Step"]) E_AssembleCompleteMerlinReportFields(["End Step"]) N_AssembleCompleteMerlinReportFields_Node0{"The system assembles the complete
Merlin report"}:::decision N_AssembleCompleteMerlinReportFields_Node0_action["All formatted fields are combined
into a complete report structure"]:::main N_AssembleCompleteMerlinReportFields_Node0 -- Yes --> N_AssembleCompleteMerlinReportFields_Node0_action N_AssembleCompleteMerlinReportFields_Node0_action --> E_AssembleCompleteMerlinReportFields S_AssembleCompleteMerlinReportFields --> N_AssembleCompleteMerlinReportFields_Node0 N_AssembleCompleteMerlinReportFields_Node1{"The complete report field assembly
is executed"}:::decision N_AssembleCompleteMerlinReportFields_Node1_action["All components are assembled into
complete Merlin report fields ready
for transmission"]:::main N_AssembleCompleteMerlinReportFields_Node1 -- Yes --> N_AssembleCompleteMerlinReportFields_Node1_action N_AssembleCompleteMerlinReportFields_Node1_action --> E_AssembleCompleteMerlinReportFields N_AssembleCompleteMerlinReportFields_Node0 -- No --> N_AssembleCompleteMerlinReportFields_Node1 N_AssembleCompleteMerlinReportFields_Node1 -- No --> E_AssembleCompleteMerlinReportFields
File: GCX016E.cbl
GIVEN: All individual report field components have been formatted
WHEN: The system assembles the complete Merlin report
THEN: All formatted fields are combined into a complete report structure
File: GCX016E.cbl
GIVEN: All individual report components have been formatted
WHEN: The complete report field assembly is executed
THEN: All components are assembled into complete Merlin report fields ready for transmission
βœ“ Consolidated Acceptance Criteria
  • The field management process completes → the formatted report fields 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_ReturnFormattedReportFields(["Start Step"]) E_ReturnFormattedReportFields(["End Step"]) N_ReturnFormattedReportFields_Node0{"The field management process
completes"}:::decision N_ReturnFormattedReportFields_Node0_action["The formatted report fields are
returned to the calling process"]:::main N_ReturnFormattedReportFields_Node0 -- Yes --> N_ReturnFormattedReportFields_Node0_action N_ReturnFormattedReportFields_Node0_action --> E_ReturnFormattedReportFields S_ReturnFormattedReportFields --> N_ReturnFormattedReportFields_Node0 N_ReturnFormattedReportFields_Node0 -- No --> E_ReturnFormattedReportFields
File: GCX016E.cbl
GIVEN: The complete Merlin report fields have been assembled
WHEN: The field management process completes
THEN: The formatted report fields are returned to the calling process
βœ“ Consolidated Acceptance Criteria
  • The system checks the validity of the recipient in the AD segment → the system determines if the recipient is valid 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_ValidRecipientinADSegment(["Start Step"]) E_ValidRecipientinADSegment(["End Step"]) N_ValidRecipientinADSegment_Node0{"The system checks the validity of
the recipient in the AD segment"}:::decision N_ValidRecipientinADSegment_Node0_action["The system determines if the
recipient is valid and proceeds
accordingly"]:::main N_ValidRecipientinADSegment_Node0 -- Yes --> N_ValidRecipientinADSegment_Node0_action N_ValidRecipientinADSegment_Node0_action --> E_ValidRecipientinADSegment S_ValidRecipientinADSegment --> N_ValidRecipientinADSegment_Node0 N_ValidRecipientinADSegment_Node0 -- No --> E_ValidRecipientinADSegment
File: GCX016E.cbl
GIVEN: A Merlin message is ready for distribution with a recipient configured in the AD segment
WHEN: The system checks the validity of the recipient in the AD segment
THEN:
  • The system determines if the recipient is valid
  • Proceeds accordingly
βœ“ Consolidated Acceptance Criteria
  • The recipient validation fails → the system detects the invalid recipient and generates an 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_DetectInvalidRecipient(["Start Step"]) E_DetectInvalidRecipient(["End Step"]) N_DetectInvalidRecipient_Node0{"The recipient validation fails"}:::decision N_DetectInvalidRecipient_Node0_action["The system detects the invalid
recipient and generates an error
notification"]:::main N_DetectInvalidRecipient_Node0 -- Yes --> N_DetectInvalidRecipient_Node0_action N_DetectInvalidRecipient_Node0_action --> E_DetectInvalidRecipient S_DetectInvalidRecipient --> N_DetectInvalidRecipient_Node0 N_DetectInvalidRecipient_Node0 -- No --> E_DetectInvalidRecipient
File: GCX016E.cbl
GIVEN: A Merlin message has an invalid recipient configured in the AD segment
WHEN: The recipient validation fails
THEN:
  • The system detects the invalid recipient
  • Generates an error notification
βœ“ Consolidated Acceptance Criteria
  • The system initiates message routing → the message is routed to the default recipient OM01247
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_RouteMessagetoDefaultRecipient(["Start Step"]) E_RouteMessagetoDefaultRecipient(["End Step"]) N_RouteMessagetoDefaultRecipient_Node0{"The system initiates message
routing"}:::decision N_RouteMessagetoDefaultRecipient_Node0_action["The message is routed to the
default recipient OM01247"]:::main N_RouteMessagetoDefaultRecipient_Node0 -- Yes --> N_RouteMessagetoDefaultRecipient_Node0_action N_RouteMessagetoDefaultRecipient_Node0_action --> E_RouteMessagetoDefaultRecipient S_RouteMessagetoDefaultRecipient --> N_RouteMessagetoDefaultRecipient_Node0 N_RouteMessagetoDefaultRecipient_Node0 -- No --> E_RouteMessagetoDefaultRecipient
File: GCX016E.cbl
GIVEN: A Merlin message has been assigned the default recipient OM01247 due to invalid original recipient
WHEN: The system initiates message routing
THEN: The message is routed to the default recipient OM01247
βœ“ Consolidated Acceptance Criteria
  • Delivery failure handling is initiated → the system reroutes the message to an alternative default 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_ReroutetoAlternativeDefault(["Start Step"]) E_ReroutetoAlternativeDefault(["End Step"]) N_ReroutetoAlternativeDefault_Node0{"Delivery failure handling is
initiated"}:::decision N_ReroutetoAlternativeDefault_Node0_action["The system reroutes the message to
an alternative default recipient"]:::main N_ReroutetoAlternativeDefault_Node0 -- Yes --> N_ReroutetoAlternativeDefault_Node0_action N_ReroutetoAlternativeDefault_Node0_action --> E_ReroutetoAlternativeDefault S_ReroutetoAlternativeDefault --> N_ReroutetoAlternativeDefault_Node0 N_ReroutetoAlternativeDefault_Node0 -- No --> E_ReroutetoAlternativeDefault
File: GCX016E.cbl
GIVEN: A Merlin message delivery has failed to the primary recipient
WHEN: Delivery failure handling is initiated
THEN: The system reroutes the message to an alternative default recipient
βœ“ Consolidated Acceptance Criteria
  • The rerouting action is completed → the system logs the rerouting action 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_LogReroutingAction(["Start Step"]) E_LogReroutingAction(["End Step"]) N_LogReroutingAction_Node0{"The rerouting action is completed"}:::decision N_LogReroutingAction_Node0_action["The system logs the rerouting
action for audit and tracking
purposes"]:::main N_LogReroutingAction_Node0 -- Yes --> N_LogReroutingAction_Node0_action N_LogReroutingAction_Node0_action --> E_LogReroutingAction S_LogReroutingAction --> N_LogReroutingAction_Node0 N_LogReroutingAction_Node0 -- No --> E_LogReroutingAction
File: GCX016E.cbl
GIVEN: A Merlin message has been rerouted to an alternative default recipient
WHEN: The rerouting action is completed
THEN:
  • The system logs the rerouting action for audit
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system begins message array initialization for cargo → the X4 segment array is initialized 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_InitializeX4SegmentArray(["Start Step"]) E_InitializeX4SegmentArray(["End Step"]) N_InitializeX4SegmentArray_Node0{"The system begins message array
initialization for cargo"}:::decision N_InitializeX4SegmentArray_Node0_action["The X4 segment array is initialized
with proper structure and default
values"]:::main N_InitializeX4SegmentArray_Node0 -- Yes --> N_InitializeX4SegmentArray_Node0_action N_InitializeX4SegmentArray_Node0_action --> E_InitializeX4SegmentArray S_InitializeX4SegmentArray --> N_InitializeX4SegmentArray_Node0 N_InitializeX4SegmentArray_Node0 -- No --> E_InitializeX4SegmentArray
File: GCX016E.cbl
GIVEN: A cargo processing request is received
WHEN: The system begins message array initialization for cargo
THEN:
  • The x4 segment array is initialized with proper structure
  • Default values
βœ“ Consolidated Acceptance Criteria
  • The system processes equipment information for the cargo → equipment identification details are populated into the X4 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_SetEquipmentInformationinX4(["Start Step"]) E_SetEquipmentInformationinX4(["End Step"]) N_SetEquipmentInformationinX4_Node0{"The system processes equipment
information for the cargo"}:::decision N_SetEquipmentInformationinX4_Node0_action["Equipment identification details
are populated into the X4 segment
structure"]:::main N_SetEquipmentInformationinX4_Node0 -- Yes --> N_SetEquipmentInformationinX4_Node0_action N_SetEquipmentInformationinX4_Node0_action --> E_SetEquipmentInformationinX4 S_SetEquipmentInformationinX4 --> N_SetEquipmentInformationinX4_Node0 N_SetEquipmentInformationinX4_Node0 -- No --> E_SetEquipmentInformationinX4
File: GCX016E.cbl
GIVEN: An X4 segment array is initialized and cargo equipment data is available
WHEN: The system processes equipment information for the cargo
THEN: Equipment identification details are populated into the X4 segment structure
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo disposition requirements → the appropriate disposition code is assigned to 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_SetCargoDispositionCodeinX4(["Start Step"]) E_SetCargoDispositionCodeinX4(["End Step"]) N_SetCargoDispositionCodeinX4_Node0{"The system processes cargo
disposition requirements"}:::decision N_SetCargoDispositionCodeinX4_Node0_action["The appropriate disposition code is
assigned to the X4 segment"]:::main N_SetCargoDispositionCodeinX4_Node0 -- Yes --> N_SetCargoDispositionCodeinX4_Node0_action N_SetCargoDispositionCodeinX4_Node0_action --> E_SetCargoDispositionCodeinX4 S_SetCargoDispositionCodeinX4 --> N_SetCargoDispositionCodeinX4_Node0 N_SetCargoDispositionCodeinX4_Node0 -- No --> E_SetCargoDispositionCodeinX4
File: GCX016E.cbl
GIVEN: An X4 segment is prepared and disposition code data is available
WHEN: The system processes cargo disposition requirements
THEN: The appropriate disposition code is assigned to the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes timing information for the cargo transaction → current date and time information is populated into 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_SetDateTimeInformationinX4(["Start Step"]) E_SetDateTimeInformationinX4(["End Step"]) N_SetDateTimeInformationinX4_Node0{"The system processes timing
information for the cargo
transaction"}:::decision N_SetDateTimeInformationinX4_Node0_action["Current date and time information
is populated into the X4 segment"]:::main N_SetDateTimeInformationinX4_Node0 -- Yes --> N_SetDateTimeInformationinX4_Node0_action N_SetDateTimeInformationinX4_Node0_action --> E_SetDateTimeInformationinX4 S_SetDateTimeInformationinX4 --> N_SetDateTimeInformationinX4_Node0 N_SetDateTimeInformationinX4_Node0 -- No --> E_SetDateTimeInformationinX4
File: GCX016E.cbl
GIVEN: An X4 segment is being populated and current date/time is available
WHEN: The system processes timing information for the cargo transaction
THEN:
  • Current date
  • Time information is populated into the x4 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes location requirements for the cargo → location information is assigned to 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_SetLocationInformationinX4(["Start Step"]) E_SetLocationInformationinX4(["End Step"]) N_SetLocationInformationinX4_Node0{"The system processes location
requirements for the cargo"}:::decision N_SetLocationInformationinX4_Node0_action["Location information is assigned to
the X4 segment"]:::main N_SetLocationInformationinX4_Node0 -- Yes --> N_SetLocationInformationinX4_Node0_action N_SetLocationInformationinX4_Node0_action --> E_SetLocationInformationinX4 S_SetLocationInformationinX4 --> N_SetLocationInformationinX4_Node0 N_SetLocationInformationinX4_Node0 -- No --> E_SetLocationInformationinX4
File: GCX016E.cbl
GIVEN: An X4 segment is being populated and location data is available
WHEN: The system processes location requirements for the cargo
THEN: Location information is assigned to the X4 segment
βœ“ Consolidated Acceptance Criteria
  • The system begins N7 segment initialization → the N7 segment array is initialized 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_InitializeN7SegmentArray(["Start Step"]) E_InitializeN7SegmentArray(["End Step"]) N_InitializeN7SegmentArray_Node0{"The system begins N7 segment
initialization"}:::decision N_InitializeN7SegmentArray_Node0_action["The N7 segment array is initialized
with proper structure and default
values"]:::main N_InitializeN7SegmentArray_Node0 -- Yes --> N_InitializeN7SegmentArray_Node0_action N_InitializeN7SegmentArray_Node0_action --> E_InitializeN7SegmentArray S_InitializeN7SegmentArray --> N_InitializeN7SegmentArray_Node0 N_InitializeN7SegmentArray_Node0 -- No --> E_InitializeN7SegmentArray
File: GCX016E.cbl
GIVEN: Cargo processing requires equipment data handling
WHEN: The system begins N7 segment initialization
THEN:
  • The n7 segment array is initialized with proper structure
  • Default values
βœ“ Consolidated Acceptance Criteria
  • The system processes equipment identification for the cargo → equipment ID is populated into 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_SetEquipmentIDinN7(["Start Step"]) E_SetEquipmentIDinN7(["End Step"]) N_SetEquipmentIDinN7_Node0{"The system processes equipment
identification for the cargo"}:::decision N_SetEquipmentIDinN7_Node0_action["Equipment ID is populated into the
N7 segment"]:::main N_SetEquipmentIDinN7_Node0 -- Yes --> N_SetEquipmentIDinN7_Node0_action N_SetEquipmentIDinN7_Node0_action --> E_SetEquipmentIDinN7 S_SetEquipmentIDinN7 --> N_SetEquipmentIDinN7_Node0 N_SetEquipmentIDinN7_Node0 -- No --> E_SetEquipmentIDinN7
File: GCX016E.cbl
GIVEN: An N7 segment is initialized and equipment ID data is available
WHEN: The system processes equipment identification for the cargo
THEN: Equipment ID is populated into the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes equipment classification for the cargo → equipment type is assigned to 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_SetEquipmentTypeinN7(["Start Step"]) E_SetEquipmentTypeinN7(["End Step"]) N_SetEquipmentTypeinN7_Node0{"The system processes equipment
classification for the cargo"}:::decision N_SetEquipmentTypeinN7_Node0_action["Equipment type is assigned to the
N7 segment"]:::main N_SetEquipmentTypeinN7_Node0 -- Yes --> N_SetEquipmentTypeinN7_Node0_action N_SetEquipmentTypeinN7_Node0_action --> E_SetEquipmentTypeinN7 S_SetEquipmentTypeinN7 --> N_SetEquipmentTypeinN7_Node0 N_SetEquipmentTypeinN7_Node0 -- No --> E_SetEquipmentTypeinN7
File: GCX016E.cbl
GIVEN: An N7 segment is being populated and equipment type data is available
WHEN: The system processes equipment classification for the cargo
THEN: Equipment type is assigned to the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo quantity information → quantity information is populated into 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_SetQuantityInformationinN7(["Start Step"]) E_SetQuantityInformationinN7(["End Step"]) N_SetQuantityInformationinN7_Node0{"The system processes cargo quantity
information"}:::decision N_SetQuantityInformationinN7_Node0_action["Quantity information is populated
into the N7 segment"]:::main N_SetQuantityInformationinN7_Node0 -- Yes --> N_SetQuantityInformationinN7_Node0_action N_SetQuantityInformationinN7_Node0_action --> E_SetQuantityInformationinN7 S_SetQuantityInformationinN7 --> N_SetQuantityInformationinN7_Node0 N_SetQuantityInformationinN7_Node0 -- No --> E_SetQuantityInformationinN7
File: GCX016E.cbl
GIVEN: An N7 segment is being populated and quantity data is available
WHEN: The system processes cargo quantity information
THEN: Quantity information is populated into the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo weight information → weight information is assigned to 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_SetWeightInformationinN7(["Start Step"]) E_SetWeightInformationinN7(["End Step"]) N_SetWeightInformationinN7_Node0{"The system processes cargo weight
information"}:::decision N_SetWeightInformationinN7_Node0_action["Weight information is assigned to
the N7 segment"]:::main N_SetWeightInformationinN7_Node0 -- Yes --> N_SetWeightInformationinN7_Node0_action N_SetWeightInformationinN7_Node0_action --> E_SetWeightInformationinN7 S_SetWeightInformationinN7 --> N_SetWeightInformationinN7_Node0 N_SetWeightInformationinN7_Node0 -- No --> E_SetWeightInformationinN7
File: GCX016E.cbl
GIVEN: An N7 segment is being populated and weight data is available
WHEN: The system processes cargo weight information
THEN: Weight information is assigned to the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system processes waybill information for the cargo → waybill information is populated into 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_SetWaybillInformationinN7(["Start Step"]) E_SetWaybillInformationinN7(["End Step"]) N_SetWaybillInformationinN7_Node0{"The system processes waybill
information for the cargo"}:::decision N_SetWaybillInformationinN7_Node0_action["Waybill information is populated
into the N7 segment"]:::main N_SetWaybillInformationinN7_Node0 -- Yes --> N_SetWaybillInformationinN7_Node0_action N_SetWaybillInformationinN7_Node0_action --> E_SetWaybillInformationinN7 S_SetWaybillInformationinN7 --> N_SetWaybillInformationinN7_Node0 N_SetWaybillInformationinN7_Node0 -- No --> E_SetWaybillInformationinN7
File: GCX016E.cbl
GIVEN: An N7 segment is being populated and waybill data is available
WHEN: The system processes waybill information for the cargo
THEN: Waybill information is populated into the N7 segment
βœ“ Consolidated Acceptance Criteria
  • The system performs data validation on the segments → all required data elements are verified for completeness and accuracy
  • The system validates segment data → all required fields are verified 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_ValidateSegmentData(["Start Step"]) E_ValidateSegmentData(["End Step"]) N_ValidateSegmentData_Node0{"The system performs data validation
on the segments"}:::decision N_ValidateSegmentData_Node0_action["All required data elements are
verified for completeness and
accuracy"]:::main N_ValidateSegmentData_Node0 -- Yes --> N_ValidateSegmentData_Node0_action N_ValidateSegmentData_Node0_action --> E_ValidateSegmentData S_ValidateSegmentData --> N_ValidateSegmentData_Node0 N_ValidateSegmentData_Node1{"The system validates segment data"}:::decision N_ValidateSegmentData_Node1_action["All required fields are verified
for completeness and accuracy"]:::main N_ValidateSegmentData_Node1 -- Yes --> N_ValidateSegmentData_Node1_action N_ValidateSegmentData_Node1_action --> E_ValidateSegmentData N_ValidateSegmentData_Node0 -- No --> N_ValidateSegmentData_Node1 N_ValidateSegmentData_Node1 -- No --> E_ValidateSegmentData
File: GCX016E.cbl
GIVEN: X4 and N7 segments have been populated with cargo and equipment data
WHEN: The system performs data validation on the segments
THEN:
  • All required data elements are verified for completeness
  • Accuracy
File: GCX016E.cbl
GIVEN: M10 and V9 segments are populated with data
WHEN: The system validates segment data
THEN:
  • All required fields are verified for completeness
  • Accuracy
βœ“ Consolidated Acceptance Criteria
  • If validation results → a determination is made whether validation was successful or failed based on business requirements
  • Validation is successful → system proceeds to store segments in message arrays
  • Validation fails → system proceeds to log validation error and set 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_ValidationSuccessful(["Start Step"]) E_ValidationSuccessful(["End Step"]) N_ValidationSuccessful_Node0{"The system evaluates validation
results"}:::decision N_ValidationSuccessful_Node0_action["A determination is made whether
validation was successful or failed
based on business requirements"]:::main N_ValidationSuccessful_Node0 -- Yes --> N_ValidationSuccessful_Node0_action N_ValidationSuccessful_Node0_action --> E_ValidationSuccessful S_ValidationSuccessful --> N_ValidationSuccessful_Node0 N_ValidationSuccessful_Node1{"Validation is successful"}:::decision N_ValidationSuccessful_Node1_action["System proceeds to store segments
in message arrays"]:::main N_ValidationSuccessful_Node1 -- Yes --> N_ValidationSuccessful_Node1_action N_ValidationSuccessful_Node1_action --> E_ValidationSuccessful N_ValidationSuccessful_Node0 -- No --> N_ValidationSuccessful_Node1 N_ValidationSuccessful_Node2{"Validation fails"}:::decision N_ValidationSuccessful_Node2_action["System proceeds to log validation
error and set error flag"]:::main N_ValidationSuccessful_Node2 -- Yes --> N_ValidationSuccessful_Node2_action N_ValidationSuccessful_Node2_action --> E_ValidationSuccessful N_ValidationSuccessful_Node1 -- No --> N_ValidationSuccessful_Node2 N_ValidationSuccessful_Node2 -- No --> E_ValidationSuccessful
File: GCX016E.cbl
GIVEN: Segment data validation has been completed
WHEN: The system evaluates validation results
THEN: A determination is made whether validation was successful or failed based on business requirements
File: GCX016E.cbl
GIVEN: Segment data validation is completed
WHEN: Validation is successful
THEN: System proceeds to store segments in message arrays
File: GCX016E.cbl
GIVEN: Segment data validation is completed
WHEN: Validation fails
THEN:
  • System proceeds to log validation error
  • Set error flag
βœ“ Consolidated Acceptance Criteria
  • The system processes the validation success outcome → x4 and N7 segments are marked as ready 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_MarkSegmentsReadyforProcessing(["Start Step"]) E_MarkSegmentsReadyforProcessing(["End Step"]) N_MarkSegmentsReadyforProcessing_Node0{"The system processes the validation
success outcome"}:::decision N_MarkSegmentsReadyforProcessing_Node0_action["X4 and N7 segments are marked as
ready for cargo processing"]:::main N_MarkSegmentsReadyforProcessing_Node0 -- Yes --> N_MarkSegmentsReadyforProcessing_Node0_action N_MarkSegmentsReadyforProcessing_Node0_action --> E_MarkSegmentsReadyforProcessing S_MarkSegmentsReadyforProcessing --> N_MarkSegmentsReadyforProcessing_Node0 N_MarkSegmentsReadyforProcessing_Node0 -- No --> E_MarkSegmentsReadyforProcessing
File: GCX016E.cbl
GIVEN: Segment data validation has been successful
WHEN: The system processes the validation success outcome
THEN:
  • X4
  • N7 segments are marked as ready for cargo processing
βœ“ Consolidated Acceptance Criteria
  • The system completes the initialization process → initialization completion 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_LogInitializationComplete(["Start Step"]) E_LogInitializationComplete(["End Step"]) N_LogInitializationComplete_Node0{"The system completes the
initialization process"}:::decision N_LogInitializationComplete_Node0_action["Initialization completion is logged
for audit and tracking purposes"]:::main N_LogInitializationComplete_Node0 -- Yes --> N_LogInitializationComplete_Node0_action N_LogInitializationComplete_Node0_action --> E_LogInitializationComplete S_LogInitializationComplete --> N_LogInitializationComplete_Node0 N_LogInitializationComplete_Node0 -- No --> E_LogInitializationComplete
File: GCX016E.cbl
GIVEN: Message segments have been successfully initialized and marked ready
WHEN: The system completes the initialization process
THEN:
  • Initialization completion is logged for audit
  • Tracking purposes
βœ“ Consolidated Acceptance Criteria
  • The system finishes the initialization workflow → control is returned to the main 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_ReturntoCargoProcessing(["Start Step"]) E_ReturntoCargoProcessing(["End Step"]) N_ReturntoCargoProcessing_Node0{"The system finishes the
initialization workflow"}:::decision N_ReturntoCargoProcessing_Node0_action["Control is returned to the main
cargo processing workflow"]:::main N_ReturntoCargoProcessing_Node0 -- Yes --> N_ReturntoCargoProcessing_Node0_action N_ReturntoCargoProcessing_Node0_action --> E_ReturntoCargoProcessing S_ReturntoCargoProcessing --> N_ReturntoCargoProcessing_Node0 N_ReturntoCargoProcessing_Node0 -- No --> E_ReturntoCargoProcessing
File: GCX016E.cbl
GIVEN: Message array initialization process has completed (either successfully or with errors)
WHEN: The system finishes the initialization workflow
THEN: Control is returned to the main cargo processing workflow
βœ“ Consolidated Acceptance Criteria
  • The system creates M10 vessel segment → m10 segment structure is created and ready to receive vessel 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_CreateM10VesselSegment(["Start Step"]) E_CreateM10VesselSegment(["End Step"]) N_CreateM10VesselSegment_Node0{"The system creates M10 vessel
segment"}:::decision N_CreateM10VesselSegment_Node0_action["M10 segment structure is created
and ready to receive vessel data"]:::main N_CreateM10VesselSegment_Node0 -- Yes --> N_CreateM10VesselSegment_Node0_action N_CreateM10VesselSegment_Node0_action --> E_CreateM10VesselSegment S_CreateM10VesselSegment --> N_CreateM10VesselSegment_Node0 N_CreateM10VesselSegment_Node0 -- No --> E_CreateM10VesselSegment
File: GCX016E.cbl
GIVEN: Train message arrays are initialized
WHEN: The system creates M10 vessel segment
THEN:
  • M10 segment structure is created
  • Ready to receive vessel data
βœ“ Consolidated Acceptance Criteria
  • The system sets vessel name from train ID → vessel name field in M10 segment is populated with 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_SetVesselNamefromTrainID(["Start Step"]) E_SetVesselNamefromTrainID(["End Step"]) N_SetVesselNamefromTrainID_Node0{"The system sets vessel name from
train ID"}:::decision N_SetVesselNamefromTrainID_Node0_action["Vessel name field in M10 segment is
populated with train identifier"]:::main N_SetVesselNamefromTrainID_Node0 -- Yes --> N_SetVesselNamefromTrainID_Node0_action N_SetVesselNamefromTrainID_Node0_action --> E_SetVesselNamefromTrainID S_SetVesselNamefromTrainID --> N_SetVesselNamefromTrainID_Node0 N_SetVesselNamefromTrainID_Node0 -- No --> E_SetVesselNamefromTrainID
File: GCX016E.cbl
GIVEN: M10 vessel segment is created and train ID is available
WHEN: The system sets vessel name from train ID
THEN: Vessel name field in M10 segment is populated with train identifier
βœ“ Consolidated Acceptance Criteria
  • The system sets transport method code → transport method code is assigned to indicate rail transportation 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_SetTransportMethodCode(["Start Step"]) E_SetTransportMethodCode(["End Step"]) N_SetTransportMethodCode_Node0{"The system sets transport method
code"}:::decision N_SetTransportMethodCode_Node0_action["Transport method code is assigned
to indicate rail transportation mode"]:::main N_SetTransportMethodCode_Node0 -- Yes --> N_SetTransportMethodCode_Node0_action N_SetTransportMethodCode_Node0_action --> E_SetTransportMethodCode S_SetTransportMethodCode --> N_SetTransportMethodCode_Node0 N_SetTransportMethodCode_Node0 -- No --> E_SetTransportMethodCode
File: GCX016E.cbl
GIVEN: Vessel name is set in M10 segment
WHEN: The system sets transport method code
THEN: Transport method code is assigned to indicate rail transportation mode
βœ“ Consolidated Acceptance Criteria
  • The system creates V9 event segment → v9 segment structure is created and ready to receive event 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_CreateV9EventSegment(["Start Step"]) E_CreateV9EventSegment(["End Step"]) N_CreateV9EventSegment_Node0{"The system creates V9 event segment"}:::decision N_CreateV9EventSegment_Node0_action["V9 segment structure is created and
ready to receive event data"]:::main N_CreateV9EventSegment_Node0 -- Yes --> N_CreateV9EventSegment_Node0_action N_CreateV9EventSegment_Node0_action --> E_CreateV9EventSegment S_CreateV9EventSegment --> N_CreateV9EventSegment_Node0 N_CreateV9EventSegment_Node0 -- No --> E_CreateV9EventSegment
File: GCX016E.cbl
GIVEN: M10 segment is completed with all required data
WHEN: The system creates V9 event segment
THEN:
  • V9 segment structure is created
  • Ready to receive event data
βœ“ Consolidated Acceptance Criteria
  • The system sets event code from disposition → event code field in V9 segment is populated based on 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_SetEventCodefromDisposition(["Start Step"]) E_SetEventCodefromDisposition(["End Step"]) N_SetEventCodefromDisposition_Node0{"The system sets event code from
disposition"}:::decision N_SetEventCodefromDisposition_Node0_action["Event code field in V9 segment is
populated based on the disposition
code"]:::main N_SetEventCodefromDisposition_Node0 -- Yes --> N_SetEventCodefromDisposition_Node0_action N_SetEventCodefromDisposition_Node0_action --> E_SetEventCodefromDisposition S_SetEventCodefromDisposition --> N_SetEventCodefromDisposition_Node0 N_SetEventCodefromDisposition_Node0 -- No --> E_SetEventCodefromDisposition
File: GCX016E.cbl
GIVEN: V9 event segment is created and disposition code is available
WHEN: The system sets event code from disposition
THEN: Event code field in V9 segment is populated based on the disposition code
βœ“ Consolidated Acceptance Criteria
  • The system sets event date and time → event date and time fields are populated with current 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_SetEventDateandTime(["Start Step"]) E_SetEventDateandTime(["End Step"]) N_SetEventDateandTime_Node0{"The system sets event date and time"}:::decision N_SetEventDateandTime_Node0_action["Event date and time fields are
populated with current timestamp"]:::main N_SetEventDateandTime_Node0 -- Yes --> N_SetEventDateandTime_Node0_action N_SetEventDateandTime_Node0_action --> E_SetEventDateandTime S_SetEventDateandTime --> N_SetEventDateandTime_Node0 N_SetEventDateandTime_Node0 -- No --> E_SetEventDateandTime
File: GCX016E.cbl
GIVEN: Event code is set in V9 segment
WHEN:
  • The system sets event date
  • Time
THEN:
  • Event date
  • Time fields are populated with current timestamp
βœ“ Consolidated Acceptance Criteria
  • The system sets location information → location fields are populated with appropriate location data for the 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_SetLocationInformation(["Start Step"]) E_SetLocationInformation(["End Step"]) N_SetLocationInformation_Node0{"The system sets location
information"}:::decision N_SetLocationInformation_Node0_action["Location fields are populated with
appropriate location data for the
event"]:::main N_SetLocationInformation_Node0 -- Yes --> N_SetLocationInformation_Node0_action N_SetLocationInformation_Node0_action --> E_SetLocationInformation S_SetLocationInformation --> N_SetLocationInformation_Node0 N_SetLocationInformation_Node0 -- No --> E_SetLocationInformation
File: GCX016E.cbl
GIVEN: Event date and time are set in V9 segment
WHEN: The system sets location information
THEN: Location fields are populated with appropriate location data for the event
βœ“ Consolidated Acceptance Criteria
  • The system sets event description → event description field is populated with explanatory text for the 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_SetEventDescription(["Start Step"]) E_SetEventDescription(["End Step"]) N_SetEventDescription_Node0{"The system sets event description"}:::decision N_SetEventDescription_Node0_action["Event description field is
populated with explanatory text for
the event"]:::main N_SetEventDescription_Node0 -- Yes --> N_SetEventDescription_Node0_action N_SetEventDescription_Node0_action --> E_SetEventDescription S_SetEventDescription --> N_SetEventDescription_Node0 N_SetEventDescription_Node0 -- No --> E_SetEventDescription
File: GCX016E.cbl
GIVEN: Location information is set in V9 segment
WHEN: The system sets event description
THEN: Event description field is populated with explanatory text for the event
βœ“ Consolidated Acceptance Criteria
  • The system stores M10 segment in array → m10 segment is placed in the appropriate position in the 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_StoreM10SegmentinArray(["Start Step"]) E_StoreM10SegmentinArray(["End Step"]) N_StoreM10SegmentinArray_Node0{"The system stores M10 segment in
array"}:::decision N_StoreM10SegmentinArray_Node0_action["M10 segment is placed in the
appropriate position in the message
array"]:::main N_StoreM10SegmentinArray_Node0 -- Yes --> N_StoreM10SegmentinArray_Node0_action N_StoreM10SegmentinArray_Node0_action --> E_StoreM10SegmentinArray S_StoreM10SegmentinArray --> N_StoreM10SegmentinArray_Node0 N_StoreM10SegmentinArray_Node0 -- No --> E_StoreM10SegmentinArray
File: GCX016E.cbl
GIVEN: M10 segment validation is successful
WHEN: The system stores M10 segment in array
THEN: M10 segment is placed in the appropriate position in the message array
βœ“ Consolidated Acceptance Criteria
  • The system stores V9 segment in array → v9 segment is placed in the appropriate position in the 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_StoreV9SegmentinArray(["Start Step"]) E_StoreV9SegmentinArray(["End Step"]) N_StoreV9SegmentinArray_Node0{"The system stores V9 segment in
array"}:::decision N_StoreV9SegmentinArray_Node0_action["V9 segment is placed in the
appropriate position in the message
array"]:::main N_StoreV9SegmentinArray_Node0 -- Yes --> N_StoreV9SegmentinArray_Node0_action N_StoreV9SegmentinArray_Node0_action --> E_StoreV9SegmentinArray S_StoreV9SegmentinArray --> N_StoreV9SegmentinArray_Node0 N_StoreV9SegmentinArray_Node0 -- No --> E_StoreV9SegmentinArray
File: GCX016E.cbl
GIVEN: V9 segment validation is successful and M10 segment is stored
WHEN: The system stores V9 segment in array
THEN: V9 segment is placed in the appropriate position in the message array
βœ“ Consolidated Acceptance Criteria
  • The system sets array counters → array counters are updated to reflect the current number of stored 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_SetArrayCounters(["Start Step"]) E_SetArrayCounters(["End Step"]) N_SetArrayCounters_Node0{"The system sets array counters"}:::decision N_SetArrayCounters_Node0_action["Array counters are updated to
reflect the current number of stored
segments"]:::main N_SetArrayCounters_Node0 -- Yes --> N_SetArrayCounters_Node0_action N_SetArrayCounters_Node0_action --> E_SetArrayCounters S_SetArrayCounters --> N_SetArrayCounters_Node0 N_SetArrayCounters_Node0 -- No --> E_SetArrayCounters
File: GCX016E.cbl
GIVEN: M10 and V9 segments are stored in arrays
WHEN: The system sets array counters
THEN: Array counters are updated to reflect the current number of stored segments
βœ“ Consolidated Acceptance Criteria
  • If the shiproot record existence result → if shiproot is found, proceed to retrieve in-bond type code; if not found, terminate the shipment minimum 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_ShiprootFound(["Start Step"]) E_ShiprootFound(["End Step"]) N_ShiprootFound_Node0{"The system evaluates the shiproot
record existence result"}:::decision N_ShiprootFound_Node0_action["If shiproot is found, proceed to
retrieve in-bond type code if not
found, terminate the shipment
minimum creation process"]:::exclusion N_ShiprootFound_Node0 -- Yes -->|Alternative| N_ShiprootFound_Node0_action N_ShiprootFound_Node0_action --> E_ShiprootFound S_ShiprootFound --> N_ShiprootFound_Node0 N_ShiprootFound_Node0 -- No --> E_ShiprootFound
File: GCX016E.cbl
GIVEN: Shiproot record validation has been performed
WHEN: The system evaluates the shiproot record existence result
THEN: If shiproot is found, proceed to retrieve in-bond type code; if not found, terminate the shipment minimum creation process
βœ“ Consolidated Acceptance Criteria
  • The system retrieves in-bond type code from the cargo record → the in-bond type code should be extracted from the cargo record and made available for U1 segment 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_RetrieveInBondTypeCodefromCargo(["Start Step"]) E_RetrieveInBondTypeCodefromCargo(["End Step"]) N_RetrieveInBondTypeCodefromCargo_Node0{"The system retrieves in-bond type
code from the cargo record"}:::decision N_RetrieveInBondTypeCodefromCargo_Node0_action["The in-bond type code should be
extracted from the cargo record and
made available for U1 segment
population"]:::main N_RetrieveInBondTypeCodefromCargo_Node0 -- Yes --> N_RetrieveInBondTypeCodefromCargo_Node0_action N_RetrieveInBondTypeCodefromCargo_Node0_action --> E_RetrieveInBondTypeCodefromCargo S_RetrieveInBondTypeCodefromCargo --> N_RetrieveInBondTypeCodefromCargo_Node0 N_RetrieveInBondTypeCodefromCargo_Node0 -- No --> E_RetrieveInBondTypeCodefromCargo
File: GCX016E.cbl
GIVEN: A valid shiproot record exists and cargo records are available
WHEN: The system retrieves in-bond type code from the cargo record
THEN:
  • The in-bond type code should be extracted from the cargo record
  • Made available for u1 segment population
βœ“ Consolidated Acceptance Criteria
  • The system extracts entry number information from cargo records → entry number information should be extracted and prepared for U1 segment 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_ExtractEntryNumberInformation(["Start Step"]) E_ExtractEntryNumberInformation(["End Step"]) N_ExtractEntryNumberInformation_Node0{"The system extracts entry number
information from cargo records"}:::decision N_ExtractEntryNumberInformation_Node0_action["Entry number information should be
extracted and prepared for U1
segment population"]:::main N_ExtractEntryNumberInformation_Node0 -- Yes --> N_ExtractEntryNumberInformation_Node0_action N_ExtractEntryNumberInformation_Node0_action --> E_ExtractEntryNumberInformation S_ExtractEntryNumberInformation --> N_ExtractEntryNumberInformation_Node0 N_ExtractEntryNumberInformation_Node0 -- No --> E_ExtractEntryNumberInformation
File: GCX016E.cbl
GIVEN: In-bond type code has been successfully retrieved from cargo records
WHEN: The system extracts entry number information from cargo records
THEN:
  • Entry number information should be extracted
  • Prepared for u1 segment population
βœ“ Consolidated Acceptance Criteria
  • The system processes X4 segments to get location identifiers → location identifiers should be extracted from X4 segments and prepared for shipment minimum 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_GetLocationIdentifiersfromX4Segments(["Start Step"]) E_GetLocationIdentifiersfromX4Segments(["End Step"]) N_GetLocationIdentifiersfromX4Segments_Node0{"The system processes X4 segments to
get location identifiers"}:::decision N_GetLocationIdentifiersfromX4Segments_Node0_action["Location identifiers should be
extracted from X4 segments and
prepared for shipment minimum
segment creation"]:::main N_GetLocationIdentifiersfromX4Segments_Node0 -- Yes --> N_GetLocationIdentifiersfromX4Segments_Node0_action N_GetLocationIdentifiersfromX4Segments_Node0_action --> E_GetLocationIdentifiersfromX4Segments S_GetLocationIdentifiersfromX4Segments --> N_GetLocationIdentifiersfromX4Segments_Node0 N_GetLocationIdentifiersfromX4Segments_Node0 -- No --> E_GetLocationIdentifiersfromX4Segments
File: GCX016E.cbl
GIVEN: Entry number information has been extracted and X4 segments are available
WHEN: The system processes X4 segments to get location identifiers
THEN:
  • Location identifiers should be extracted from x4 segments
  • Prepared for shipment minimum segment creation
βœ“ Consolidated Acceptance Criteria
  • The system processes destination station information → destination station information should be processed and prepared for U1 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_ProcessDestinationStationInformation(["Start Step"]) E_ProcessDestinationStationInformation(["End Step"]) N_ProcessDestinationStationInformation_Node0{"The system processes destination
station information"}:::decision N_ProcessDestinationStationInformation_Node0_action["Destination station information
should be processed and prepared for
U1 segment creation"]:::main N_ProcessDestinationStationInformation_Node0 -- Yes --> N_ProcessDestinationStationInformation_Node0_action N_ProcessDestinationStationInformation_Node0_action --> E_ProcessDestinationStationInformation S_ProcessDestinationStationInformation --> N_ProcessDestinationStationInformation_Node0 N_ProcessDestinationStationInformation_Node0 -- No --> E_ProcessDestinationStationInformation
File: GCX016E.cbl
GIVEN: Location identifiers have been extracted from X4 segments
WHEN: The system processes destination station information
THEN:
  • Destination station information should be processed
  • Prepared for u1 segment creation
βœ“ Consolidated Acceptance Criteria
  • The system populates in-bond type code in the U1 segment → the in-bond type code should be correctly populated in the appropriate field of 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_PopulateInBondTypeCodeinU1(["Start Step"]) E_PopulateInBondTypeCodeinU1(["End Step"]) N_PopulateInBondTypeCodeinU1_Node0{"The system populates in-bond type
code in the U1 segment"}:::decision N_PopulateInBondTypeCodeinU1_Node0_action["The in-bond type code should be
correctly populated in the
appropriate field of the U1 segment"]:::main N_PopulateInBondTypeCodeinU1_Node0 -- Yes --> N_PopulateInBondTypeCodeinU1_Node0_action N_PopulateInBondTypeCodeinU1_Node0_action --> E_PopulateInBondTypeCodeinU1 S_PopulateInBondTypeCodeinU1 --> N_PopulateInBondTypeCodeinU1_Node0 N_PopulateInBondTypeCodeinU1_Node0 -- No --> E_PopulateInBondTypeCodeinU1
File: GCX016E.cbl
GIVEN: U1 segment has been created and in-bond type code is available
WHEN: The system populates in-bond type code in the U1 segment
THEN: The in-bond type code should be correctly populated in the appropriate field of the U1 segment
βœ“ Consolidated Acceptance Criteria
  • The system populates entry number in the U1 segment → entry number information should be correctly populated in the appropriate field of 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_PopulateEntryNumberinU1(["Start Step"]) E_PopulateEntryNumberinU1(["End Step"]) N_PopulateEntryNumberinU1_Node0{"The system populates entry number
in the U1 segment"}:::decision N_PopulateEntryNumberinU1_Node0_action["Entry number information should be
correctly populated in the
appropriate field of the U1 segment"]:::main N_PopulateEntryNumberinU1_Node0 -- Yes --> N_PopulateEntryNumberinU1_Node0_action N_PopulateEntryNumberinU1_Node0_action --> E_PopulateEntryNumberinU1 S_PopulateEntryNumberinU1 --> N_PopulateEntryNumberinU1_Node0 N_PopulateEntryNumberinU1_Node0 -- No --> E_PopulateEntryNumberinU1
File: GCX016E.cbl
GIVEN: In-bond type code has been populated in U1 segment and entry number information is available
WHEN: The system populates entry number in the U1 segment
THEN: Entry number information should be correctly populated in the appropriate field of the U1 segment
βœ“ Consolidated Acceptance Criteria
  • The system logs the shipment creation action → a log entry should be created documenting the successful creation of shipment minimum information with relevant identifiers 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_LogShipmentCreationAction(["Start Step"]) E_LogShipmentCreationAction(["End Step"]) N_LogShipmentCreationAction_Node0{"The system logs the shipment
creation action"}:::decision N_LogShipmentCreationAction_Node0_action["A log entry should be created
documenting the successful creation
of shipment minimum information with
relevant identifiers and timestamp"]:::main N_LogShipmentCreationAction_Node0 -- Yes --> N_LogShipmentCreationAction_Node0_action N_LogShipmentCreationAction_Node0_action --> E_LogShipmentCreationAction S_LogShipmentCreationAction --> N_LogShipmentCreationAction_Node0 N_LogShipmentCreationAction_Node0 -- No --> E_LogShipmentCreationAction
File: GCX016E.cbl
GIVEN: U1 segment has been successfully stored for EDI processing
WHEN: The system logs the shipment creation action
THEN:
  • A log entry should be created documenting the successful creation of shipment minimum information with relevant identifiers
  • Timestamp
βœ“ Consolidated Acceptance Criteria
  • The system processes cargo status validation → deleted cargo records are excluded from further 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_ExcludeDeletedCargoRecords(["Start Step"]) E_ExcludeDeletedCargoRecords(["End Step"]) N_ExcludeDeletedCargoRecords_Node0{"The system processes cargo status
validation"}:::decision N_ExcludeDeletedCargoRecords_Node0_action["Deleted cargo records are excluded
from further cross-border processing"]:::main N_ExcludeDeletedCargoRecords_Node0 -- Yes --> N_ExcludeDeletedCargoRecords_Node0_action N_ExcludeDeletedCargoRecords_Node0_action --> E_ExcludeDeletedCargoRecords S_ExcludeDeletedCargoRecords --> N_ExcludeDeletedCargoRecords_Node0 N_ExcludeDeletedCargoRecords_Node0 -- No --> E_ExcludeDeletedCargoRecords
File: GCX016E.cbl
GIVEN: Canadian cargo records have been found but have invalid deleted status
WHEN: The system processes cargo status validation
THEN: Deleted cargo records are excluded from further cross-border processing
βœ“ Consolidated Acceptance Criteria
  • The system generates cross-border audit trail → audit records are created documenting the cross-border manifest matching 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_GenerateCrossBorderAuditTrail(["Start Step"]) E_GenerateCrossBorderAuditTrail(["End Step"]) N_GenerateCrossBorderAuditTrail_Node0{"The system generates cross-border
audit trail"}:::decision N_GenerateCrossBorderAuditTrail_Node0_action["Audit records are created
documenting the cross-border
manifest matching process"]:::main N_GenerateCrossBorderAuditTrail_Node0 -- Yes --> N_GenerateCrossBorderAuditTrail_Node0_action N_GenerateCrossBorderAuditTrail_Node0_action --> E_GenerateCrossBorderAuditTrail S_GenerateCrossBorderAuditTrail --> N_GenerateCrossBorderAuditTrail_Node0 N_GenerateCrossBorderAuditTrail_Node0 -- No --> E_GenerateCrossBorderAuditTrail
File: GCX016E.cbl
GIVEN: US cargo has been updated with Canadian reference information
WHEN: The system generates cross-border audit trail
THEN: Audit records are created documenting the cross-border manifest matching process
βœ“ Consolidated Acceptance Criteria
  • The system processes the no match scenario → the system proceeds to log search results without creating cross-border links
Step Micro-Flow Sequence
flowchart TD classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b; classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px; S_NoCanadianManifestFound(["Start Step"]) E_NoCanadianManifestFound(["End Step"]) N_NoCanadianManifestFound_Node0{"The system processes the no match
scenario"}:::decision N_NoCanadianManifestFound_Node0_action["The system proceeds to log search
results without creating
cross-border links"]:::main N_NoCanadianManifestFound_Node0 -- Yes --> N_NoCanadianManifestFound_Node0_action N_NoCanadianManifestFound_Node0_action --> E_NoCanadianManifestFound S_NoCanadianManifestFound --> N_NoCanadianManifestFound_Node0 N_NoCanadianManifestFound_Node0 -- No --> E_NoCanadianManifestFound
File: GCX016E.cbl
GIVEN: No Canadian cargo records were found matching the equipment ID
WHEN: The system processes the no match scenario
THEN: The system proceeds to log search results without creating cross-border links