π
← Back to Categories
GCX015E Sequence (GCX015E)
Objective: Handles GCX015E processing.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start GCX015 Processing]:::start
B[1:Initialize Processing Fields]:::process
C[41:Connect to Message Queue]:::process
D[42:Open Message Queue]:::process
E[43:Read Messages from Queue]:::process
F{Message Available?}:::decision
G[2:Load Message Table]:::process
H{Valid Message Found?}:::decision
I[3:Determine Train or Cargo Processing]:::process
J{Train or Cargo?}:::decision
K[12:Retrieve Train Root Information]:::process
L[11:Retrieve Cargo Root Information]:::process
M[5:Process M10 Manifest Segment]:::process
N[6:Process P4 Segment]:::process
O[7:Process N10 Line Release Numbers]:::process
P[8:Process K1 Error Messages]:::process
Q[9:Process K3 Accept/Reject Counts]:::process
R[10:Validate Required Segments Present]:::process
S{Valid Segments Present?}:::decision
T[4:Set Status Update Decision]:::process
U{Should Update Status?}:::decision
V[13:Update Train Status]:::process
W[14:Update Cargo Status]:::process
X[15:Check AEI Train Send Conditions]:::process
Y{Send AEI?}:::decision
Z1[16:Load Car Information for Customs]:::process
Z2[25:Send Customs Transaction]:::process
Z3[17:Send AEI Status Message]:::process
Z4[18:Process Train Arrival]:::process
Z5[19:Send Email Warning Notifications]:::process
Z6[23:Log Customs Response Information]:::process
Z7[24:Update Manifest Type Timestamps]:::process
Z8[End Processing]:::final
MQ[(MQ Queue)]:::datasource
TRAIN[(GCWTL-TRAIN-LIST)]:::datasource
CARGO[(GCSUSRT-SEGMENT)]:::datasource
ADMIN[(GCSTBRT-AD-SEGMENT)]:::datasource
T1[(GCSTBRT-T1-SEGMENT)]:::datasource
BROKER[(GCSTBRT-BK-SEGMENT)]:::datasource
B1[(GCSTBRT-B1-SEGMENT)]:::datasource
SHIPMENT[(GCSA2RT-SEGMENT)]:::datasource
SHIPROOT[(SHIPROOT)]:::datasource
A --> B
B --> C
ADMIN -.-> |Read Admin Config| B
C --> D
MQ -.-> |Connect| C
D --> E
MQ -.-> |Open Queue| D
E --> F
MQ -.-> |Read Messages| E
F -->|No| Z8
F -->|Yes| G
G --> H
H -->|No| Z8
H -->|Yes| I
I --> J
J -->|Train| K
J -->|Cargo| L
TRAIN -.-> |Retrieve Train Data| K
CARGO -.-> |Retrieve Cargo Data| L
K --> M
L --> M
M --> N
N --> O
O --> P
P --> Q
Q --> R
R --> S
S -->|No| Z6
S -->|Yes| T
T --> U
U -->|Train Update| V
U -->|Cargo Update| W
U -->|No Update| Z6
TRAIN -.-> |Update Train Status| V
CARGO -.-> |Update Cargo Status| W
V --> X
W --> Z6
X --> Y
Y -->|Yes| Z1
Y -->|No| Z3
Z1 --> Z2
Z2 --> Z3
Z3 --> Z4
Z4 --> Z5
BROKER -.-> |Get Broker Info| Z5
B1 -.-> |Get Contact Details| Z5
SHIPMENT -.-> |Get Shipment Data| Z5
SHIPROOT -.-> |Get Shipment Root| Z5
Z5 --> Z6
Z6 --> Z7
T1 -.-> |Update Timestamps| Z7
Z7 --> E
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
- The initialization process begins → all processing switches are reset to initial state, counters are set to 1, table keys are cleared, function codes are set to 'GU', table ID is set to 'AD', sequence ID is set to 'ADMINID', accept status is set to 'GE', and admin configuration data is loaded from GCSTBRT-AD-SEGMENT or default value 'OM01247' is used if loading 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_1InitializeProcessingFields(["Start Step"])
E_1InitializeProcessingFields(["End Step"])
N_1InitializeProcessingFields_Node0{"The initialization process begins"}:::decision
N_1InitializeProcessingFields_Node0_action["All processing switches are reset
to initial state, counters are set
to 1, table keys are cleared,
function codes are set to GU , table
ID is set to AD , sequence ID is set
to ADMINID , accept status is set to
GE , and admin configuration data is
loaded from GCSTBRT-AD-SEGMENT or
default value OM01247 is used if
loading fails"]:::main N_1InitializeProcessingFields_Node0 -- Yes --> N_1InitializeProcessingFields_Node0_action N_1InitializeProcessingFields_Node0_action --> E_1InitializeProcessingFields S_1InitializeProcessingFields --> N_1InitializeProcessingFields_Node0 N_1InitializeProcessingFields_Node0 -- No --> E_1InitializeProcessingFields
to initial state, counters are set
to 1, table keys are cleared,
function codes are set to GU , table
ID is set to AD , sequence ID is set
to ADMINID , accept status is set to
GE , and admin configuration data is
loaded from GCSTBRT-AD-SEGMENT or
default value OM01247 is used if
loading fails"]:::main N_1InitializeProcessingFields_Node0 -- Yes --> N_1InitializeProcessingFields_Node0_action N_1InitializeProcessingFields_Node0_action --> E_1InitializeProcessingFields S_1InitializeProcessingFields --> N_1InitializeProcessingFields_Node0 N_1InitializeProcessingFields_Node0 -- No --> E_1InitializeProcessingFields
File: GCX015E.cbl
GIVEN:
The customs message processing system is starting up
WHEN:
The initialization process begins
THEN:
All processing switches are reset to initial state, counters are set to 1, table keys are cleared, function codes are set to 'GU', table ID is set to 'AD', sequence ID is set to 'ADMINID', accept status is set to 'GE', and admin configuration data is loaded from GCSTBRT-AD-SEGMENT or default value 'OM01247' is used if loading fails
β Consolidated Acceptance Criteria
- The system attempts to load the message → if completion code is OK and message entries are less than 1, system abends with 'MESSAGE TOO SHORT' error; if completion code is OK and backout count is not 0, message is marked as SKIP; if completion code is OK and backout count is 0, message is marked as GOOD; if completion code is FAILED and reason is NO-MSG-AVAILABLE or OTHER, system abends with MQGET FAILED 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_2LoadMessageTable(["Start Step"])
E_2LoadMessageTable(["End Step"])
N_2LoadMessageTable_Node0{"The system attempts to load the
message"}:::decision N_2LoadMessageTable_Node0_action["If completion code is OK and
message entries are less than 1,
system abends with MESSAGE TOO SHORT
error if completion code is OK and
backout count is not 0, message is
marked as SKIP if completion code is
OK and backout count is 0, message
is marked as GOOD if completion code
is FAILED and reason is
NO-MSG-AVAILABLE or OTHER, system
abends with MQGET FAILED error"]:::main N_2LoadMessageTable_Node0 -- Yes --> N_2LoadMessageTable_Node0_action N_2LoadMessageTable_Node0_action --> E_2LoadMessageTable S_2LoadMessageTable --> N_2LoadMessageTable_Node0 N_2LoadMessageTable_Node0 -- No --> E_2LoadMessageTable
message"}:::decision N_2LoadMessageTable_Node0_action["If completion code is OK and
message entries are less than 1,
system abends with MESSAGE TOO SHORT
error if completion code is OK and
backout count is not 0, message is
marked as SKIP if completion code is
OK and backout count is 0, message
is marked as GOOD if completion code
is FAILED and reason is
NO-MSG-AVAILABLE or OTHER, system
abends with MQGET FAILED error"]:::main N_2LoadMessageTable_Node0 -- Yes --> N_2LoadMessageTable_Node0_action N_2LoadMessageTable_Node0_action --> E_2LoadMessageTable S_2LoadMessageTable --> N_2LoadMessageTable_Node0 N_2LoadMessageTable_Node0 -- No --> E_2LoadMessageTable
File: GCX015E.cbl
GIVEN:
A message is available in the queue
WHEN:
The system attempts to load the message
THEN:
- If completion code is ok
- Message entries are less than 1, system abends with 'message too short' error; if completion code is ok
- Backout count is not 0, message is marked as skip; if completion code is ok
- Backout count is 0, message is marked as good; if completion code is failed
- Reason is no-msg-available or other, system abends with mqget failed error
β Consolidated Acceptance Criteria
- The system examines the M10-12-REF-NUM field → if reference number key equals 'TRAIN', processing type is set to TRAIN; if reference number key equals 'CARGO', processing type is set to CARGO; if neither condition is met and M11 segment exists, processing type is set to CARGO using M11 data; otherwise processing type remains 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_3DetermineTrainorCargoProcessing(["Start Step"])
E_3DetermineTrainorCargoProcessing(["End Step"])
N_3DetermineTrainorCargoProcessing_Node0{"The system examines the
M10-12-REF-NUM field"}:::decision N_3DetermineTrainorCargoProcessing_Node0_action["If reference number key equals
TRAIN , processing type is set to
TRAIN if reference number key equals
CARGO , processing type is set to
CARGO if neither condition is met
and M11 segment exists, processing
type is set to CARGO using M11 data
otherwise processing type remains
UNKNOWN"]:::main N_3DetermineTrainorCargoProcessing_Node0 -- Yes --> N_3DetermineTrainorCargoProcessing_Node0_action N_3DetermineTrainorCargoProcessing_Node0_action --> E_3DetermineTrainorCargoProcessing S_3DetermineTrainorCargoProcessing --> N_3DetermineTrainorCargoProcessing_Node0 N_3DetermineTrainorCargoProcessing_Node0 -- No --> E_3DetermineTrainorCargoProcessing
M10-12-REF-NUM field"}:::decision N_3DetermineTrainorCargoProcessing_Node0_action["If reference number key equals
TRAIN , processing type is set to
TRAIN if reference number key equals
CARGO , processing type is set to
CARGO if neither condition is met
and M11 segment exists, processing
type is set to CARGO using M11 data
otherwise processing type remains
UNKNOWN"]:::main N_3DetermineTrainorCargoProcessing_Node0 -- Yes --> N_3DetermineTrainorCargoProcessing_Node0_action N_3DetermineTrainorCargoProcessing_Node0_action --> E_3DetermineTrainorCargoProcessing S_3DetermineTrainorCargoProcessing --> N_3DetermineTrainorCargoProcessing_Node0 N_3DetermineTrainorCargoProcessing_Node0 -- No --> E_3DetermineTrainorCargoProcessing
File: GCX015E.cbl
GIVEN:
An M10 segment is present in the message
WHEN:
The system examines the M10-12-REF-NUM field
THEN:
- If reference number key equals 'train', processing type is set to train; if reference number key equals 'cargo', processing type is set to cargo; if neither condition is met
- M11 segment exists, processing type is set to cargo using m11 data; otherwise processing type remains unknown
β Consolidated Acceptance Criteria
- If the M10-09-MANIFEST-TYP-CDE → if manifest type is 'P' or 'Y' or 'S', status should be updated; if manifest type is 'H' and processing type is TRAIN, status should be deleted and updated; if manifest type is 'H' and processing type is CARGO, status should not be updated; otherwise status should not be updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4SetStatusUpdateDecision(["Start Step"])
E_4SetStatusUpdateDecision(["End Step"])
N_4SetStatusUpdateDecision_Node0{"The system evaluates the
M10-09-MANIFEST-TYP-CDE"}:::decision N_4SetStatusUpdateDecision_Node0_action["If manifest type is P or Y or S ,
status should be updated if manifest
type is H and processing type is
TRAIN, status should be deleted and
updated if manifest type is H and
processing type is CARGO, status
should not be updated otherwise
status should not be updated"]:::main N_4SetStatusUpdateDecision_Node0 -- Yes --> N_4SetStatusUpdateDecision_Node0_action N_4SetStatusUpdateDecision_Node0_action --> E_4SetStatusUpdateDecision S_4SetStatusUpdateDecision --> N_4SetStatusUpdateDecision_Node0 N_4SetStatusUpdateDecision_Node0 -- No --> E_4SetStatusUpdateDecision
M10-09-MANIFEST-TYP-CDE"}:::decision N_4SetStatusUpdateDecision_Node0_action["If manifest type is P or Y or S ,
status should be updated if manifest
type is H and processing type is
TRAIN, status should be deleted and
updated if manifest type is H and
processing type is CARGO, status
should not be updated otherwise
status should not be updated"]:::main N_4SetStatusUpdateDecision_Node0 -- Yes --> N_4SetStatusUpdateDecision_Node0_action N_4SetStatusUpdateDecision_Node0_action --> E_4SetStatusUpdateDecision S_4SetStatusUpdateDecision --> N_4SetStatusUpdateDecision_Node0 N_4SetStatusUpdateDecision_Node0 -- No --> E_4SetStatusUpdateDecision
File: GCX015E.cbl
GIVEN:
An M10 segment with manifest type code is being processed
WHEN:
The system evaluates the M10-09-MANIFEST-TYP-CDE
THEN:
- If manifest type is 'p' or 'y' or 's', status should be updated; if manifest type is 'h' and processing type is train, status should be deleted
- Updated; if manifest type is 'h' and processing type is cargo, status should not be updated; otherwise status should not be updated
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the M10 segment found flag is set to true and the table entry data is moved to the M10 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_5ProcessM10ManifestSegment(["Start Step"])
E_5ProcessM10ManifestSegment(["End Step"])
N_5ProcessM10ManifestSegment_Node0{"The system processes the M10
segment"}:::decision N_5ProcessM10ManifestSegment_Node0_action["The M10 segment found flag is set
to true and the table entry data is
moved to the M10 segment structure"]:::main N_5ProcessM10ManifestSegment_Node0 -- Yes --> N_5ProcessM10ManifestSegment_Node0_action N_5ProcessM10ManifestSegment_Node0_action --> E_5ProcessM10ManifestSegment S_5ProcessM10ManifestSegment --> N_5ProcessM10ManifestSegment_Node0 N_5ProcessM10ManifestSegment_Node0 -- No --> E_5ProcessM10ManifestSegment
segment"}:::decision N_5ProcessM10ManifestSegment_Node0_action["The M10 segment found flag is set
to true and the table entry data is
moved to the M10 segment structure"]:::main N_5ProcessM10ManifestSegment_Node0 -- Yes --> N_5ProcessM10ManifestSegment_Node0_action N_5ProcessM10ManifestSegment_Node0_action --> E_5ProcessM10ManifestSegment S_5ProcessM10ManifestSegment --> N_5ProcessM10ManifestSegment_Node0 N_5ProcessM10ManifestSegment_Node0 -- No --> E_5ProcessM10ManifestSegment
File: GCX015E.cbl
GIVEN:
A message table entry with ID 'M10' is encountered
WHEN:
The system processes the M10 segment
THEN:
- The m10 segment found flag is set to true
- The table entry data is moved to the m10 segment structure
β Consolidated Acceptance Criteria
- The system processes the P4 segment → the P4 segment found flag is set to true and the table entry data is moved to the P4 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_6ProcessP4Segment(["Start Step"])
E_6ProcessP4Segment(["End Step"])
N_6ProcessP4Segment_Node0{"The system processes the P4 segment"}:::decision
N_6ProcessP4Segment_Node0_action["The P4 segment found flag is set to
true and the table entry data is
moved to the P4 segment structure"]:::main N_6ProcessP4Segment_Node0 -- Yes --> N_6ProcessP4Segment_Node0_action N_6ProcessP4Segment_Node0_action --> E_6ProcessP4Segment S_6ProcessP4Segment --> N_6ProcessP4Segment_Node0 N_6ProcessP4Segment_Node0 -- No --> E_6ProcessP4Segment
true and the table entry data is
moved to the P4 segment structure"]:::main N_6ProcessP4Segment_Node0 -- Yes --> N_6ProcessP4Segment_Node0_action N_6ProcessP4Segment_Node0_action --> E_6ProcessP4Segment S_6ProcessP4Segment --> N_6ProcessP4Segment_Node0 N_6ProcessP4Segment_Node0 -- No --> E_6ProcessP4Segment
File: GCX015E.cbl
GIVEN:
A message table entry with ID 'P4 ' is encountered
WHEN:
The system processes the P4 segment
THEN:
- The p4 segment found flag is set to true
- The table entry data is moved to the p4 segment structure
β Consolidated Acceptance Criteria
- The system processes the N10 segment → the table entry data is moved to N10 segment structure and the line release number (N10-09) is stored in working storage hold 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_7ProcessN10LineReleaseNumbers(["Start Step"])
E_7ProcessN10LineReleaseNumbers(["End Step"])
N_7ProcessN10LineReleaseNumbers_Node0{"The system processes the N10
segment"}:::decision N_7ProcessN10LineReleaseNumbers_Node0_action["The table entry data is moved to
N10 segment structure and the line
release number N10-09 is stored in
working storage hold field"]:::main N_7ProcessN10LineReleaseNumbers_Node0 -- Yes --> N_7ProcessN10LineReleaseNumbers_Node0_action N_7ProcessN10LineReleaseNumbers_Node0_action --> E_7ProcessN10LineReleaseNumbers S_7ProcessN10LineReleaseNumbers --> N_7ProcessN10LineReleaseNumbers_Node0 N_7ProcessN10LineReleaseNumbers_Node0 -- No --> E_7ProcessN10LineReleaseNumbers
segment"}:::decision N_7ProcessN10LineReleaseNumbers_Node0_action["The table entry data is moved to
N10 segment structure and the line
release number N10-09 is stored in
working storage hold field"]:::main N_7ProcessN10LineReleaseNumbers_Node0 -- Yes --> N_7ProcessN10LineReleaseNumbers_Node0_action N_7ProcessN10LineReleaseNumbers_Node0_action --> E_7ProcessN10LineReleaseNumbers S_7ProcessN10LineReleaseNumbers --> N_7ProcessN10LineReleaseNumbers_Node0 N_7ProcessN10LineReleaseNumbers_Node0 -- No --> E_7ProcessN10LineReleaseNumbers
File: GCX015E.cbl
GIVEN:
A message table entry with ID 'N10' is encountered
WHEN:
The system processes the N10 segment
THEN:
- The table entry data is moved to n10 segment structure
- The line release number (n10-09) is stored in working storage hold field
β Consolidated Acceptance Criteria
- If the K1-02-MSG-NUMBER → if message number is '000', severity is set to Informational and status to ACK; if message number is '009', '017', '038', '040', '291', or '630', severity is set to Fatal and status to ERROR; if message number is '631', '632', '633', '634', '695', '696', '697', '698', or '699', severity is set to Warning and status to ACK; if message number is '695', '697', or '699', email warning is sent; for all other message numbers, severity is set to Unknown and status to ACK; free form message content is logged if 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_8ProcessK1ErrorMessages(["Start Step"])
E_8ProcessK1ErrorMessages(["End Step"])
N_8ProcessK1ErrorMessages_Node0{"The system evaluates the
K1-02-MSG-NUMBER"}:::decision N_8ProcessK1ErrorMessages_Node0_action["If message number is 000 , severity
is set to Informational and status
to ACK if message number is 009 ,
017 , 038 , 040 , 291 , or 630 ,
severity is set to Fatal and status
to ERROR if message number is 631 ,
632 , 633 , 634 , 695 , 696 , 697 ,
698 , or 699 , severity is set to
Warning and status to ACK if message
number is 695 , 697 , or 699 , email
warning is sent for all other
message numbers, severity is set to
Unknown and status to ACK free form
message content is logged if present"]:::main N_8ProcessK1ErrorMessages_Node0 -- Yes --> N_8ProcessK1ErrorMessages_Node0_action N_8ProcessK1ErrorMessages_Node0_action --> E_8ProcessK1ErrorMessages S_8ProcessK1ErrorMessages --> N_8ProcessK1ErrorMessages_Node0 N_8ProcessK1ErrorMessages_Node0 -- No --> E_8ProcessK1ErrorMessages
K1-02-MSG-NUMBER"}:::decision N_8ProcessK1ErrorMessages_Node0_action["If message number is 000 , severity
is set to Informational and status
to ACK if message number is 009 ,
017 , 038 , 040 , 291 , or 630 ,
severity is set to Fatal and status
to ERROR if message number is 631 ,
632 , 633 , 634 , 695 , 696 , 697 ,
698 , or 699 , severity is set to
Warning and status to ACK if message
number is 695 , 697 , or 699 , email
warning is sent for all other
message numbers, severity is set to
Unknown and status to ACK free form
message content is logged if present"]:::main N_8ProcessK1ErrorMessages_Node0 -- Yes --> N_8ProcessK1ErrorMessages_Node0_action N_8ProcessK1ErrorMessages_Node0_action --> E_8ProcessK1ErrorMessages S_8ProcessK1ErrorMessages --> N_8ProcessK1ErrorMessages_Node0 N_8ProcessK1ErrorMessages_Node0 -- No --> E_8ProcessK1ErrorMessages
File: GCX015E.cbl
GIVEN:
A message table entry with ID 'K1 ' is encountered
WHEN:
The system evaluates the K1-02-MSG-NUMBER
THEN:
- If message number is '000', severity is set to informational
- Status to ack; if message number is '009', '017', '038', '040', '291', or '630', severity is set to fatal
- Status to error; if message number is '631', '632', '633', '634', '695', '696', '697', '698', or '699', severity is set to warning
- Status to ack; if message number is '695', '697', or '699', email warning is sent; for all other message numbers, severity is set to unknown
- Status to ack; free form message content is logged if present
β Consolidated Acceptance Criteria
- If K3-01-TOTAL-REJECT and K3-01-TOTAL-ACCEPT counts → if total reject is zero and total accept is greater than zero and train is pre-arrived, status is set to PRE-ARRIVAL; if total reject is zero and total accept is greater than zero and train is review complete, status is set to REVIEW-COMPLETED; if total reject is zero and total accept is greater than zero for other cases, status is set to ACK; if total reject is zero and total accept is zero, 'USCS K3 RECORD HAS ZERO COUNTS' is logged and status is set to ACK; if total reject is greater than zero, status is set to 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_9ProcessK3AcceptRejectCounts(["Start Step"])
E_9ProcessK3AcceptRejectCounts(["End Step"])
N_9ProcessK3AcceptRejectCounts_Node0{"The system evaluates
K3-01-TOTAL-REJECT and
K3-01-TOTAL-ACCEPT counts"}:::decision N_9ProcessK3AcceptRejectCounts_Node0_action["If total reject is zero and total
accept is greater than zero and
train is pre-arrived, status is set
to PRE-ARRIVAL if total reject is
zero and total accept is greater
than zero and train is review
complete, status is set to
REVIEW-COMPLETED if total reject is
zero and total accept is greater
than zero for other cases, status is
set to ACK if total reject is zero
and total accept is zero, USCS K3
RECORD HAS ZERO COUNTS is logged and
status is set to ACK if total reject
is greater than zero, status is set
to ERROR"]:::exclusion N_9ProcessK3AcceptRejectCounts_Node0 -- Yes -->|Alternative| N_9ProcessK3AcceptRejectCounts_Node0_action N_9ProcessK3AcceptRejectCounts_Node0_action --> E_9ProcessK3AcceptRejectCounts S_9ProcessK3AcceptRejectCounts --> N_9ProcessK3AcceptRejectCounts_Node0 N_9ProcessK3AcceptRejectCounts_Node0 -- No --> E_9ProcessK3AcceptRejectCounts
K3-01-TOTAL-REJECT and
K3-01-TOTAL-ACCEPT counts"}:::decision N_9ProcessK3AcceptRejectCounts_Node0_action["If total reject is zero and total
accept is greater than zero and
train is pre-arrived, status is set
to PRE-ARRIVAL if total reject is
zero and total accept is greater
than zero and train is review
complete, status is set to
REVIEW-COMPLETED if total reject is
zero and total accept is greater
than zero for other cases, status is
set to ACK if total reject is zero
and total accept is zero, USCS K3
RECORD HAS ZERO COUNTS is logged and
status is set to ACK if total reject
is greater than zero, status is set
to ERROR"]:::exclusion N_9ProcessK3AcceptRejectCounts_Node0 -- Yes -->|Alternative| N_9ProcessK3AcceptRejectCounts_Node0_action N_9ProcessK3AcceptRejectCounts_Node0_action --> E_9ProcessK3AcceptRejectCounts S_9ProcessK3AcceptRejectCounts --> N_9ProcessK3AcceptRejectCounts_Node0 N_9ProcessK3AcceptRejectCounts_Node0 -- No --> E_9ProcessK3AcceptRejectCounts
File: GCX015E.cbl
GIVEN:
A K3 segment is being processed
WHEN:
- The system evaluates k3-01-total-reject
- K3-01-total-accept counts
THEN:
- If total reject is zero
- Total accept is greater than zero
- Train is pre-arrived, status is set to pre-arrival; if total reject is zero
- Total accept is greater than zero
- Train is review complete, status is set to review-completed; if total reject is zero
- Total accept is greater than zero for other cases, status is set to ack; if total reject is zero
- Total accept is zero, 'uscs k3 record has zero counts' is logged
- Status is set to ack; if total reject is greater than zero, status is set to error
β Consolidated Acceptance Criteria
- The system validates required segments → if M10 segment is not found, 'M10 SEGMENT NOT FOUND ON 355 TRANSACTION' is logged; if P4 segment is not found, 'P4 SEGMENT NOT FOUND ON 355 TRANSACTION' is logged; if K3 segment is not found, 'K3 SEGMENT NOT FOUND ON 355 TRANSACTION' is logged and a default K3 segment is 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_10ValidateRequiredSegmentsPresent(["Start Step"])
E_10ValidateRequiredSegmentsPresent(["End Step"])
N_10ValidateRequiredSegmentsPresent_Node0{"The system validates required
segments"}:::decision N_10ValidateRequiredSegmentsPresent_Node0_action["If M10 segment is not found, M10
SEGMENT NOT FOUND ON 355 TRANSACTION
is logged if P4 segment is not
found, P4 SEGMENT NOT FOUND ON 355
TRANSACTION is logged if K3 segment
is not found, K3 SEGMENT NOT FOUND
ON 355 TRANSACTION is logged and a
default K3 segment is processed"]:::main N_10ValidateRequiredSegmentsPresent_Node0 -- Yes --> N_10ValidateRequiredSegmentsPresent_Node0_action N_10ValidateRequiredSegmentsPresent_Node0_action --> E_10ValidateRequiredSegmentsPresent S_10ValidateRequiredSegmentsPresent --> N_10ValidateRequiredSegmentsPresent_Node0 N_10ValidateRequiredSegmentsPresent_Node0 -- No --> E_10ValidateRequiredSegmentsPresent
segments"}:::decision N_10ValidateRequiredSegmentsPresent_Node0_action["If M10 segment is not found, M10
SEGMENT NOT FOUND ON 355 TRANSACTION
is logged if P4 segment is not
found, P4 SEGMENT NOT FOUND ON 355
TRANSACTION is logged if K3 segment
is not found, K3 SEGMENT NOT FOUND
ON 355 TRANSACTION is logged and a
default K3 segment is processed"]:::main N_10ValidateRequiredSegmentsPresent_Node0 -- Yes --> N_10ValidateRequiredSegmentsPresent_Node0_action N_10ValidateRequiredSegmentsPresent_Node0_action --> E_10ValidateRequiredSegmentsPresent S_10ValidateRequiredSegmentsPresent --> N_10ValidateRequiredSegmentsPresent_Node0 N_10ValidateRequiredSegmentsPresent_Node0 -- No --> E_10ValidateRequiredSegmentsPresent
File: GCX015E.cbl
GIVEN:
A customs transaction message has been processed
WHEN:
The system validates required segments
THEN:
- If m10 segment is not found, 'm10 segment not found on 355 transaction' is logged; if p4 segment is not found, 'p4 segment not found on 355 transaction' is logged; if k3 segment is not found, 'k3 segment not found on 355 transaction' is logged
- A default k3 segment is processed
β Consolidated Acceptance Criteria
- The system attempts to retrieve cargo root data using the US CCN key → if cargo record is found, the cargo data is loaded and cargo/train found flag is set to true with equipment car number as sub-key; if cargo record is not found, cargo/train not found flag is set to true and 'THIS US-CCN-KEY WAS NOT FOUND' message 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_11RetrieveCargoRootInformation(["Start Step"])
E_11RetrieveCargoRootInformation(["End Step"])
N_11RetrieveCargoRootInformation_Node0{"The system attempts to retrieve
cargo root data using the US CCN key"}:::decision N_11RetrieveCargoRootInformation_Node0_action["If cargo record is found, the cargo
data is loaded and cargotrain found
flag is set to true with equipment
car number as sub-key if cargo
record is not found, cargotrain not
found flag is set to true and THIS
US-CCN-KEY WAS NOT FOUND message is
logged"]:::main N_11RetrieveCargoRootInformation_Node0 -- Yes --> N_11RetrieveCargoRootInformation_Node0_action N_11RetrieveCargoRootInformation_Node0_action --> E_11RetrieveCargoRootInformation S_11RetrieveCargoRootInformation --> N_11RetrieveCargoRootInformation_Node0 N_11RetrieveCargoRootInformation_Node0 -- No --> E_11RetrieveCargoRootInformation
cargo root data using the US CCN key"}:::decision N_11RetrieveCargoRootInformation_Node0_action["If cargo record is found, the cargo
data is loaded and cargotrain found
flag is set to true with equipment
car number as sub-key if cargo
record is not found, cargotrain not
found flag is set to true and THIS
US-CCN-KEY WAS NOT FOUND message is
logged"]:::main N_11RetrieveCargoRootInformation_Node0 -- Yes --> N_11RetrieveCargoRootInformation_Node0_action N_11RetrieveCargoRootInformation_Node0_action --> E_11RetrieveCargoRootInformation S_11RetrieveCargoRootInformation --> N_11RetrieveCargoRootInformation_Node0 N_11RetrieveCargoRootInformation_Node0 -- No --> E_11RetrieveCargoRootInformation
File: GCX015E.cbl
GIVEN:
Processing type is determined as CARGO
WHEN:
The system attempts to retrieve cargo root data using the US CCN key
THEN:
- If cargo record is found, the cargo data is loaded
- Cargo/train found flag is set to true with equipment car number as sub-key; if cargo record is not found, cargo/train not found flag is set to true and 'this us-ccn-key was not found' message is logged
β Consolidated Acceptance Criteria
- The system attempts to retrieve train root data using the US customer train ID → if train record is found, the train data is loaded and cargo/train found flag is set to true with US train ID as sub-key; if train record is not found, cargo/train not found flag is set to true and 'THIS US-TRAIN-ID WAS NOT FOUND' message 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_12RetrieveTrainRootInformation(["Start Step"])
E_12RetrieveTrainRootInformation(["End Step"])
N_12RetrieveTrainRootInformation_Node0{"The system attempts to retrieve
train root data using the US
customer train ID"}:::decision N_12RetrieveTrainRootInformation_Node0_action["If train record is found, the train
data is loaded and cargotrain found
flag is set to true with US train ID
as sub-key if train record is not
found, cargotrain not found flag is
set to true and THIS US-TRAIN-ID WAS
NOT FOUND message is logged"]:::main N_12RetrieveTrainRootInformation_Node0 -- Yes --> N_12RetrieveTrainRootInformation_Node0_action N_12RetrieveTrainRootInformation_Node0_action --> E_12RetrieveTrainRootInformation S_12RetrieveTrainRootInformation --> N_12RetrieveTrainRootInformation_Node0 N_12RetrieveTrainRootInformation_Node0 -- No --> E_12RetrieveTrainRootInformation
train root data using the US
customer train ID"}:::decision N_12RetrieveTrainRootInformation_Node0_action["If train record is found, the train
data is loaded and cargotrain found
flag is set to true with US train ID
as sub-key if train record is not
found, cargotrain not found flag is
set to true and THIS US-TRAIN-ID WAS
NOT FOUND message is logged"]:::main N_12RetrieveTrainRootInformation_Node0 -- Yes --> N_12RetrieveTrainRootInformation_Node0_action N_12RetrieveTrainRootInformation_Node0_action --> E_12RetrieveTrainRootInformation S_12RetrieveTrainRootInformation --> N_12RetrieveTrainRootInformation_Node0 N_12RetrieveTrainRootInformation_Node0 -- No --> E_12RetrieveTrainRootInformation
File: GCX015E.cbl
GIVEN:
Processing type is determined as TRAIN
WHEN:
The system attempts to retrieve train root data using the US customer train ID
THEN:
- If train record is found, the train data is loaded
- Cargo/train found flag is set to true with us train id as sub-key; if train record is not found, cargo/train not found flag is set to true and 'this us-train-id was not found' message is logged
β Consolidated Acceptance Criteria
- If train status conditions → if train is deleted and status is ACK, current status is set to 'DELETED'; if train is delete pending and status is ACK, current status is set to 'DELETED'; if train is not deleted and not delete pending, current status is set to working status; after status update, AEI train send conditions are checked and if train is ACK and arrived pending, train arrival process is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13UpdateTrainStatus(["Start Step"])
E_13UpdateTrainStatus(["End Step"])
N_13UpdateTrainStatus_Node0{"The system evaluates train status
conditions"}:::decision N_13UpdateTrainStatus_Node0_action["If train is deleted and status is
ACK, current status is set to
DELETED if train is delete pending
and status is ACK, current status is
set to DELETED if train is not
deleted and not delete pending,
current status is set to working
status after status update, AEI
train send conditions are checked
and if train is ACK and arrived
pending, train arrival process is
triggered"]:::main N_13UpdateTrainStatus_Node0 -- Yes --> N_13UpdateTrainStatus_Node0_action N_13UpdateTrainStatus_Node0_action --> E_13UpdateTrainStatus S_13UpdateTrainStatus --> N_13UpdateTrainStatus_Node0 N_13UpdateTrainStatus_Node0 -- No --> E_13UpdateTrainStatus
conditions"}:::decision N_13UpdateTrainStatus_Node0_action["If train is deleted and status is
ACK, current status is set to
DELETED if train is delete pending
and status is ACK, current status is
set to DELETED if train is not
deleted and not delete pending,
current status is set to working
status after status update, AEI
train send conditions are checked
and if train is ACK and arrived
pending, train arrival process is
triggered"]:::main N_13UpdateTrainStatus_Node0 -- Yes --> N_13UpdateTrainStatus_Node0_action N_13UpdateTrainStatus_Node0_action --> E_13UpdateTrainStatus S_13UpdateTrainStatus --> N_13UpdateTrainStatus_Node0 N_13UpdateTrainStatus_Node0 -- No --> E_13UpdateTrainStatus
File: GCX015E.cbl
GIVEN:
Processing type is TRAIN and status update is required
WHEN:
The system evaluates train status conditions
THEN:
- If train is deleted
- Status is ack, current status is set to 'deleted'; if train is delete pending
- Status is ack, current status is set to 'deleted'; if train is not deleted
- Not delete pending, current status is set to working status; after status update, aei train send conditions are checked
- If train is ack
- Arrived pending, train arrival process is triggered
β Consolidated Acceptance Criteria
- If cargo status conditions → if status is ACK and no saved status description exists, USCARGO status is set to ACK; if status is ACK and saved status description exists, saved status and description are restored; if status is ERROR and current status is not ERROR/ACK/ACK-R, current status is saved and USCARGO status is set to ERROR; if status is ERROR and cargo is not deleted, CPCARGO status is set to 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_14UpdateCargoStatus(["Start Step"])
E_14UpdateCargoStatus(["End Step"])
N_14UpdateCargoStatus_Node0{"The system evaluates cargo status
conditions"}:::decision N_14UpdateCargoStatus_Node0_action["If status is ACK and no saved
status description exists, USCARGO
status is set to ACK if status is
ACK and saved status description
exists, saved status and description
are restored if status is ERROR and
current status is not ERRORACKACK-R,
current status is saved and USCARGO
status is set to ERROR if status is
ERROR and cargo is not deleted,
CPCARGO status is set to ERROR"]:::main N_14UpdateCargoStatus_Node0 -- Yes --> N_14UpdateCargoStatus_Node0_action N_14UpdateCargoStatus_Node0_action --> E_14UpdateCargoStatus S_14UpdateCargoStatus --> N_14UpdateCargoStatus_Node0 N_14UpdateCargoStatus_Node0 -- No --> E_14UpdateCargoStatus
conditions"}:::decision N_14UpdateCargoStatus_Node0_action["If status is ACK and no saved
status description exists, USCARGO
status is set to ACK if status is
ACK and saved status description
exists, saved status and description
are restored if status is ERROR and
current status is not ERRORACKACK-R,
current status is saved and USCARGO
status is set to ERROR if status is
ERROR and cargo is not deleted,
CPCARGO status is set to ERROR"]:::main N_14UpdateCargoStatus_Node0 -- Yes --> N_14UpdateCargoStatus_Node0_action N_14UpdateCargoStatus_Node0_action --> E_14UpdateCargoStatus S_14UpdateCargoStatus --> N_14UpdateCargoStatus_Node0 N_14UpdateCargoStatus_Node0 -- No --> E_14UpdateCargoStatus
File: GCX015E.cbl
GIVEN:
Processing type is CARGO and status update is required
WHEN:
The system evaluates cargo status conditions
THEN:
- If status is ack
- No saved status description exists, uscargo status is set to ack; if status is ack
- Saved status description exists, saved status
- Description are restored; if status is error
- Current status is not error/ack/ack-r, current status is saved
- Uscargo status is set to error; if status is error
- Cargo is not deleted, cpcargo status is set to error
β Consolidated Acceptance Criteria
- The system checks AEI send conditions → if train status is ACK and AEI send flag is set and enroute is not reported and train ID ends with 'T', customs transaction GCT1461E is generated, car information is loaded, and customs system is notified; if AEI send flag is set, AEI status 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_15CheckAEITrainSendConditions(["Start Step"])
E_15CheckAEITrainSendConditions(["End Step"])
N_15CheckAEITrainSendConditions_Node0{"The system checks AEI send
conditions"}:::decision N_15CheckAEITrainSendConditions_Node0_action["If train status is ACK and AEI send
flag is set and enroute is not
reported and train ID ends with T ,
customs transaction GCT1461E is
generated, car information is
loaded, and customs system is
notified if AEI send flag is set,
AEI status message is sent"]:::main N_15CheckAEITrainSendConditions_Node0 -- Yes --> N_15CheckAEITrainSendConditions_Node0_action N_15CheckAEITrainSendConditions_Node0_action --> E_15CheckAEITrainSendConditions S_15CheckAEITrainSendConditions --> N_15CheckAEITrainSendConditions_Node0 N_15CheckAEITrainSendConditions_Node0 -- No --> E_15CheckAEITrainSendConditions
conditions"}:::decision N_15CheckAEITrainSendConditions_Node0_action["If train status is ACK and AEI send
flag is set and enroute is not
reported and train ID ends with T ,
customs transaction GCT1461E is
generated, car information is
loaded, and customs system is
notified if AEI send flag is set,
AEI status message is sent"]:::main N_15CheckAEITrainSendConditions_Node0 -- Yes --> N_15CheckAEITrainSendConditions_Node0_action N_15CheckAEITrainSendConditions_Node0_action --> E_15CheckAEITrainSendConditions S_15CheckAEITrainSendConditions --> N_15CheckAEITrainSendConditions_Node0 N_15CheckAEITrainSendConditions_Node0 -- No --> E_15CheckAEITrainSendConditions
File: GCX015E.cbl
GIVEN:
A train status has been updated
WHEN:
The system checks AEI send conditions
THEN:
- If train status is ack
- Aei send flag is set
- Enroute is not reported
- Train id ends with 't', customs transaction gct1461e is generated, car information is loaded, and customs system is notified; if aei send flag is set, aei status message is sent
β Consolidated Acceptance Criteria
- The system loads car information from train equipment list → for each equipment item, if container indicator is not 'C', car initial and number are loaded, car length/empty indicator is determined based on next equipment or current equipment container status, car kind is set to 'L' for LO type or 'E' for ET type or spaces for others; containers are excluded from the customs 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_16LoadCarInformationforCustoms(["Start Step"])
E_16LoadCarInformationforCustoms(["End Step"])
N_16LoadCarInformationforCustoms_Node0{"The system loads car information
from train equipment list"}:::decision N_16LoadCarInformationforCustoms_Node0_action["For each equipment item, if
container indicator is not C , car
initial and number are loaded, car
lengthempty indicator is determined
based on next equipment or current
equipment container status, car kind
is set to L for LO type or E for ET
type or spaces for others containers
are excluded from the customs output"]:::main N_16LoadCarInformationforCustoms_Node0 -- Yes --> N_16LoadCarInformationforCustoms_Node0_action N_16LoadCarInformationforCustoms_Node0_action --> E_16LoadCarInformationforCustoms S_16LoadCarInformationforCustoms --> N_16LoadCarInformationforCustoms_Node0 N_16LoadCarInformationforCustoms_Node0 -- No --> E_16LoadCarInformationforCustoms
from train equipment list"}:::decision N_16LoadCarInformationforCustoms_Node0_action["For each equipment item, if
container indicator is not C , car
initial and number are loaded, car
lengthempty indicator is determined
based on next equipment or current
equipment container status, car kind
is set to L for LO type or E for ET
type or spaces for others containers
are excluded from the customs output"]:::main N_16LoadCarInformationforCustoms_Node0 -- Yes --> N_16LoadCarInformationforCustoms_Node0_action N_16LoadCarInformationforCustoms_Node0_action --> E_16LoadCarInformationforCustoms S_16LoadCarInformationforCustoms --> N_16LoadCarInformationforCustoms_Node0 N_16LoadCarInformationforCustoms_Node0 -- No --> E_16LoadCarInformationforCustoms
File: GCX015E.cbl
GIVEN:
AEI customs transaction needs to be sent
WHEN:
The system loads car information from train equipment list
THEN:
- For each equipment item, if container indicator is not 'c', car initial
- Number are loaded, car length/empty indicator is determined based on next equipment or current equipment container status, car kind is set to 'l' for lo type or 'e' for et type or spaces for others; containers are excluded from the customs output
β Consolidated Acceptance Criteria
- The system sends AEI status message → aEI Merlin ID is retrieved, message subject is formatted with train ID and current status, and message is sent via 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_17SendAEIStatusMessage(["Start Step"])
E_17SendAEIStatusMessage(["End Step"])
N_17SendAEIStatusMessage_Node0{"The system sends AEI status message"}:::decision
N_17SendAEIStatusMessage_Node0_action["AEI Merlin ID is retrieved, message
subject is formatted with train ID
and current status, and message is
sent via Merlin system"]:::main N_17SendAEIStatusMessage_Node0 -- Yes --> N_17SendAEIStatusMessage_Node0_action N_17SendAEIStatusMessage_Node0_action --> E_17SendAEIStatusMessage S_17SendAEIStatusMessage --> N_17SendAEIStatusMessage_Node0 N_17SendAEIStatusMessage_Node0 -- No --> E_17SendAEIStatusMessage
subject is formatted with train ID
and current status, and message is
sent via Merlin system"]:::main N_17SendAEIStatusMessage_Node0 -- Yes --> N_17SendAEIStatusMessage_Node0_action N_17SendAEIStatusMessage_Node0_action --> E_17SendAEIStatusMessage S_17SendAEIStatusMessage --> N_17SendAEIStatusMessage_Node0 N_17SendAEIStatusMessage_Node0 -- No --> E_17SendAEIStatusMessage
File: GCX015E.cbl
GIVEN:
AEI processing is required for a train
WHEN:
The system sends AEI status message
THEN:
- Aei merlin id is retrieved, message subject is formatted with train id
- Current status, and message is sent via merlin system
β Consolidated Acceptance Criteria
- The system processes train arrival → arrival transaction GCT1121E is generated with action code 'TAR', current machine date and time as event date/time, US customer train ID, and train type flag set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_18ProcessTrainArrival(["Start Step"])
E_18ProcessTrainArrival(["End Step"])
N_18ProcessTrainArrival_Node0{"The system processes train arrival"}:::decision
N_18ProcessTrainArrival_Node0_action["Arrival transaction GCT1121E is
generated with action code TAR ,
current machine date and time as
event datetime, US customer train
ID, and train type flag set to true"]:::main N_18ProcessTrainArrival_Node0 -- Yes --> N_18ProcessTrainArrival_Node0_action N_18ProcessTrainArrival_Node0_action --> E_18ProcessTrainArrival S_18ProcessTrainArrival --> N_18ProcessTrainArrival_Node0 N_18ProcessTrainArrival_Node0 -- No --> E_18ProcessTrainArrival
generated with action code TAR ,
current machine date and time as
event datetime, US customer train
ID, and train type flag set to true"]:::main N_18ProcessTrainArrival_Node0 -- Yes --> N_18ProcessTrainArrival_Node0_action N_18ProcessTrainArrival_Node0_action --> E_18ProcessTrainArrival S_18ProcessTrainArrival --> N_18ProcessTrainArrival_Node0 N_18ProcessTrainArrival_Node0 -- No --> E_18ProcessTrainArrival
File: GCX015E.cbl
GIVEN:
Train status is ACK and train is in arrived pending state
WHEN:
The system processes train arrival
THEN:
- Arrival transaction gct1121e is generated with action code 'tar', current machine date
- Time as event date/time, us customer train id, and train type flag set to true
β Consolidated Acceptance Criteria
- The system processes the warning message → freight forwarder information is retrieved, broker contact details are obtained if available, shipment root data is loaded, comprehensive email is formatted with CCN, equipment details, waybill information, load/empty indicator, content description, origin/destination stations, consignee information, CBP warning message, and occurrence timestamp, and email is 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_19SendEmailWarningNotifications(["Start Step"])
E_19SendEmailWarningNotifications(["End Step"])
N_19SendEmailWarningNotifications_Node0{"The system processes the warning
message"}:::decision N_19SendEmailWarningNotifications_Node0_action["Freight forwarder information is
retrieved, broker contact details
are obtained if available, shipment
root data is loaded, comprehensive
email is formatted with CCN,
equipment details, waybill
information, loadempty indicator,
content description,
origindestination stations,
consignee information, CBP warning
message, and occurrence timestamp,
and email is sent to appropriate
recipients"]:::main N_19SendEmailWarningNotifications_Node0 -- Yes --> N_19SendEmailWarningNotifications_Node0_action N_19SendEmailWarningNotifications_Node0_action --> E_19SendEmailWarningNotifications S_19SendEmailWarningNotifications --> N_19SendEmailWarningNotifications_Node0 N_19SendEmailWarningNotifications_Node0 -- No --> E_19SendEmailWarningNotifications
message"}:::decision N_19SendEmailWarningNotifications_Node0_action["Freight forwarder information is
retrieved, broker contact details
are obtained if available, shipment
root data is loaded, comprehensive
email is formatted with CCN,
equipment details, waybill
information, loadempty indicator,
content description,
origindestination stations,
consignee information, CBP warning
message, and occurrence timestamp,
and email is sent to appropriate
recipients"]:::main N_19SendEmailWarningNotifications_Node0 -- Yes --> N_19SendEmailWarningNotifications_Node0_action N_19SendEmailWarningNotifications_Node0_action --> E_19SendEmailWarningNotifications S_19SendEmailWarningNotifications --> N_19SendEmailWarningNotifications_Node0 N_19SendEmailWarningNotifications_Node0 -- No --> E_19SendEmailWarningNotifications
File: GCX015E.cbl
GIVEN:
K1 message number is '695', '697', or '699'
WHEN:
The system processes the warning message
THEN:
Freight forwarder information is retrieved, broker contact details are obtained if available, shipment root data is loaded, comprehensive email is formatted with CCN, equipment details, waybill information, load/empty indicator, content description, origin/destination stations, consignee information, CBP warning message, and occurrence timestamp, and email is sent to appropriate recipients
β Consolidated Acceptance Criteria
- The system logs the transaction information → log message is prepared with train or cargo CCN, processing type flag, action code 'ZZZ', status message content, sending transaction code, ACF2 user ID, current date from K3 segment, and current time from K3 segment, and log entry is spawned via GCT1051E transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_23LogCustomsResponseInformation(["Start Step"])
E_23LogCustomsResponseInformation(["End Step"])
N_23LogCustomsResponseInformation_Node0{"The system logs the transaction
information"}:::decision N_23LogCustomsResponseInformation_Node0_action["Log message is prepared with train
or cargo CCN, processing type flag,
action code ZZZ , status message
content, sending transaction code,
ACF2 user ID, current date from K3
segment, and current time from K3
segment, and log entry is spawned
via GCT1051E transaction"]:::main N_23LogCustomsResponseInformation_Node0 -- Yes --> N_23LogCustomsResponseInformation_Node0_action N_23LogCustomsResponseInformation_Node0_action --> E_23LogCustomsResponseInformation S_23LogCustomsResponseInformation --> N_23LogCustomsResponseInformation_Node0 N_23LogCustomsResponseInformation_Node0 -- No --> E_23LogCustomsResponseInformation
information"}:::decision N_23LogCustomsResponseInformation_Node0_action["Log message is prepared with train
or cargo CCN, processing type flag,
action code ZZZ , status message
content, sending transaction code,
ACF2 user ID, current date from K3
segment, and current time from K3
segment, and log entry is spawned
via GCT1051E transaction"]:::main N_23LogCustomsResponseInformation_Node0 -- Yes --> N_23LogCustomsResponseInformation_Node0_action N_23LogCustomsResponseInformation_Node0_action --> E_23LogCustomsResponseInformation S_23LogCustomsResponseInformation --> N_23LogCustomsResponseInformation_Node0 N_23LogCustomsResponseInformation_Node0 -- No --> E_23LogCustomsResponseInformation
File: GCX015E.cbl
GIVEN:
A customs transaction has been processed
WHEN:
The system logs the transaction information
THEN:
Log message is prepared with train or cargo CCN, processing type flag, action code 'ZZZ', status message content, sending transaction code, ACF2 user ID, current date from K3 segment, and current time from K3 segment, and log entry is spawned via GCT1051E transaction
β Consolidated Acceptance Criteria
- The system updates manifest type timestamps → t1 control table segment is retrieved, if manifest type is 'P', 309-ACK timestamp is updated with current date and time; if manifest type is 'H', 353-ACK timestamp is updated with current date and time; if manifest type is 'S', 358-ACK timestamp is updated with current date and time; updated segment is written back to control 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_24UpdateManifestTypeTimestamps(["Start Step"])
E_24UpdateManifestTypeTimestamps(["End Step"])
N_24UpdateManifestTypeTimestamps_Node0{"The system updates manifest type
timestamps"}:::decision N_24UpdateManifestTypeTimestamps_Node0_action["T1 control table segment is
retrieved, if manifest type is P ,
309-ACK timestamp is updated with
current date and time if manifest
type is H , 353-ACK timestamp is
updated with current date and time
if manifest type is S , 358-ACK
timestamp is updated with current
date and time updated segment is
written back to control table"]:::main N_24UpdateManifestTypeTimestamps_Node0 -- Yes --> N_24UpdateManifestTypeTimestamps_Node0_action N_24UpdateManifestTypeTimestamps_Node0_action --> E_24UpdateManifestTypeTimestamps S_24UpdateManifestTypeTimestamps --> N_24UpdateManifestTypeTimestamps_Node0 N_24UpdateManifestTypeTimestamps_Node0 -- No --> E_24UpdateManifestTypeTimestamps
timestamps"}:::decision N_24UpdateManifestTypeTimestamps_Node0_action["T1 control table segment is
retrieved, if manifest type is P ,
309-ACK timestamp is updated with
current date and time if manifest
type is H , 353-ACK timestamp is
updated with current date and time
if manifest type is S , 358-ACK
timestamp is updated with current
date and time updated segment is
written back to control table"]:::main N_24UpdateManifestTypeTimestamps_Node0 -- Yes --> N_24UpdateManifestTypeTimestamps_Node0_action N_24UpdateManifestTypeTimestamps_Node0_action --> E_24UpdateManifestTypeTimestamps S_24UpdateManifestTypeTimestamps --> N_24UpdateManifestTypeTimestamps_Node0 N_24UpdateManifestTypeTimestamps_Node0 -- No --> E_24UpdateManifestTypeTimestamps
File: GCX015E.cbl
GIVEN:
A special test transaction with specific reference numbers is being processed
WHEN:
The system updates manifest type timestamps
THEN:
- T1 control table segment is retrieved, if manifest type is 'p', 309-ack timestamp is updated with current date
- Time; if manifest type is 'h', 353-ack timestamp is updated with current date
- Time; if manifest type is 's', 358-ack timestamp is updated with current date
- Time; updated segment is written back to control table
β Consolidated Acceptance Criteria
- The system sends the transaction to customs system → transaction is sent via CIMS call with customs transaction code, message is written using WRITMSGL with customs message length and module name, and transaction is purged after sending
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_25SendCustomsTransaction(["Start Step"])
E_25SendCustomsTransaction(["End Step"])
N_25SendCustomsTransaction_Node0{"The system sends the transaction to
customs system"}:::decision N_25SendCustomsTransaction_Node0_action["Transaction is sent via CIMS call
with customs transaction code,
message is written using WRITMSGL
with customs message length and
module name, and transaction is
purged after sending"]:::main N_25SendCustomsTransaction_Node0 -- Yes --> N_25SendCustomsTransaction_Node0_action N_25SendCustomsTransaction_Node0_action --> E_25SendCustomsTransaction S_25SendCustomsTransaction --> N_25SendCustomsTransaction_Node0 N_25SendCustomsTransaction_Node0 -- No --> E_25SendCustomsTransaction
customs system"}:::decision N_25SendCustomsTransaction_Node0_action["Transaction is sent via CIMS call
with customs transaction code,
message is written using WRITMSGL
with customs message length and
module name, and transaction is
purged after sending"]:::main N_25SendCustomsTransaction_Node0 -- Yes --> N_25SendCustomsTransaction_Node0_action N_25SendCustomsTransaction_Node0_action --> E_25SendCustomsTransaction S_25SendCustomsTransaction --> N_25SendCustomsTransaction_Node0 N_25SendCustomsTransaction_Node0 -- No --> E_25SendCustomsTransaction
File: GCX015E.cbl
GIVEN:
A customs transaction has been prepared with car information
WHEN:
The system sends the transaction to customs system
THEN:
- Transaction is sent via cims call with customs transaction code, message is written using writmsgl with customs message length
- Module name, and transaction is purged after sending
β Consolidated Acceptance Criteria
- The system initializes processing fields → all working variables for train/cargo switches and hold areas are 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_ClearWorkingVariables(["Start Step"])
E_ClearWorkingVariables(["End Step"])
N_ClearWorkingVariables_Node0{"The system initializes processing
fields"}:::decision N_ClearWorkingVariables_Node0_action["All working variables for
traincargo switches and hold areas
are cleared to spaces"]:::main N_ClearWorkingVariables_Node0 -- Yes --> N_ClearWorkingVariables_Node0_action N_ClearWorkingVariables_Node0_action --> E_ClearWorkingVariables S_ClearWorkingVariables --> N_ClearWorkingVariables_Node0 N_ClearWorkingVariables_Node0 -- No --> E_ClearWorkingVariables
fields"}:::decision N_ClearWorkingVariables_Node0_action["All working variables for
traincargo switches and hold areas
are cleared to spaces"]:::main N_ClearWorkingVariables_Node0 -- Yes --> N_ClearWorkingVariables_Node0_action N_ClearWorkingVariables_Node0_action --> E_ClearWorkingVariables S_ClearWorkingVariables --> N_ClearWorkingVariables_Node0 N_ClearWorkingVariables_Node0 -- No --> E_ClearWorkingVariables
File: GCX015E.cbl
GIVEN:
Message processing is starting
WHEN:
The system initializes processing fields
THEN:
- All working variables for train/cargo switches
- Hold areas are cleared to spaces
β Consolidated Acceptance Criteria
- The system initializes processing fields → k1 counter is set to 1 and K1 table is initialized to collect error 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_InitializeK1ErrorMessageTable(["Start Step"])
E_InitializeK1ErrorMessageTable(["End Step"])
N_InitializeK1ErrorMessageTable_Node0{"The system initializes processing
fields"}:::decision N_InitializeK1ErrorMessageTable_Node0_action["K1 counter is set to 1 and K1 table
is initialized to collect error
messages"]:::main N_InitializeK1ErrorMessageTable_Node0 -- Yes --> N_InitializeK1ErrorMessageTable_Node0_action N_InitializeK1ErrorMessageTable_Node0_action --> E_InitializeK1ErrorMessageTable S_InitializeK1ErrorMessageTable --> N_InitializeK1ErrorMessageTable_Node0 N_InitializeK1ErrorMessageTable_Node0 -- No --> E_InitializeK1ErrorMessageTable
fields"}:::decision N_InitializeK1ErrorMessageTable_Node0_action["K1 counter is set to 1 and K1 table
is initialized to collect error
messages"]:::main N_InitializeK1ErrorMessageTable_Node0 -- Yes --> N_InitializeK1ErrorMessageTable_Node0_action N_InitializeK1ErrorMessageTable_Node0_action --> E_InitializeK1ErrorMessageTable S_InitializeK1ErrorMessageTable --> N_InitializeK1ErrorMessageTable_Node0 N_InitializeK1ErrorMessageTable_Node0 -- No --> E_InitializeK1ErrorMessageTable
File: GCX015E.cbl
GIVEN:
Message processing is starting
WHEN:
The system initializes processing fields
THEN:
- K1 counter is set to 1
- K1 table is initialized to collect error messages
β Consolidated Acceptance Criteria
- The system initializes processing fields → database function code is set to 'GU', table ID is set to 'AD', sequence ID is set to 'ADMINID', and accept status is set to 'GE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDatabaseFunctionCodes(["Start Step"])
E_SetDatabaseFunctionCodes(["End Step"])
N_SetDatabaseFunctionCodes_Node0{"The system initializes processing
fields"}:::decision N_SetDatabaseFunctionCodes_Node0_action["Database function code is set to GU
, table ID is set to AD , sequence
ID is set to ADMINID , and accept
status is set to GE"]:::main N_SetDatabaseFunctionCodes_Node0 -- Yes --> N_SetDatabaseFunctionCodes_Node0_action N_SetDatabaseFunctionCodes_Node0_action --> E_SetDatabaseFunctionCodes S_SetDatabaseFunctionCodes --> N_SetDatabaseFunctionCodes_Node0 N_SetDatabaseFunctionCodes_Node0 -- No --> E_SetDatabaseFunctionCodes
fields"}:::decision N_SetDatabaseFunctionCodes_Node0_action["Database function code is set to GU
, table ID is set to AD , sequence
ID is set to ADMINID , and accept
status is set to GE"]:::main N_SetDatabaseFunctionCodes_Node0 -- Yes --> N_SetDatabaseFunctionCodes_Node0_action N_SetDatabaseFunctionCodes_Node0_action --> E_SetDatabaseFunctionCodes S_SetDatabaseFunctionCodes --> N_SetDatabaseFunctionCodes_Node0 N_SetDatabaseFunctionCodes_Node0 -- No --> E_SetDatabaseFunctionCodes
File: GCX015E.cbl
GIVEN:
Message processing is starting
WHEN:
The system initializes processing fields
THEN:
Database function code is set to 'GU', table ID is set to 'AD', sequence ID is set to 'ADMINID', and accept status is set to 'GE'
β Consolidated Acceptance Criteria
- The system retrieves admin configuration → the system calls the table segment retrieval function to get administrative 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_RetrieveAdminConfiguration(["Start Step"])
E_RetrieveAdminConfiguration(["End Step"])
N_RetrieveAdminConfiguration_Node0{"The system retrieves admin
configuration"}:::decision N_RetrieveAdminConfiguration_Node0_action["The system calls the table segment
retrieval function to get
administrative settings"]:::main N_RetrieveAdminConfiguration_Node0 -- Yes --> N_RetrieveAdminConfiguration_Node0_action N_RetrieveAdminConfiguration_Node0_action --> E_RetrieveAdminConfiguration S_RetrieveAdminConfiguration --> N_RetrieveAdminConfiguration_Node0 N_RetrieveAdminConfiguration_Node0 -- No --> E_RetrieveAdminConfiguration
configuration"}:::decision N_RetrieveAdminConfiguration_Node0_action["The system calls the table segment
retrieval function to get
administrative settings"]:::main N_RetrieveAdminConfiguration_Node0 -- Yes --> N_RetrieveAdminConfiguration_Node0_action N_RetrieveAdminConfiguration_Node0_action --> E_RetrieveAdminConfiguration S_RetrieveAdminConfiguration --> N_RetrieveAdminConfiguration_Node0 N_RetrieveAdminConfiguration_Node0 -- No --> E_RetrieveAdminConfiguration
File: GCX015E.cbl
GIVEN:
Database access parameters are configured
WHEN:
The system retrieves admin configuration
THEN:
The system calls the table segment retrieval function to get administrative settings
β Consolidated Acceptance Criteria
- The table segment return flag equals '0' indicating successful retrieval → the retrieved table segment is moved to the administrative segment working 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_LoadAdminSettings(["Start Step"])
E_LoadAdminSettings(["End Step"])
N_LoadAdminSettings_Node0{"The table segment return flag
equals 0 indicating successful
retrieval"}:::decision N_LoadAdminSettings_Node0_action["The retrieved table segment is
moved to the administrative segment
working area"]:::main N_LoadAdminSettings_Node0 -- Yes --> N_LoadAdminSettings_Node0_action N_LoadAdminSettings_Node0_action --> E_LoadAdminSettings S_LoadAdminSettings --> N_LoadAdminSettings_Node0 N_LoadAdminSettings_Node0 -- No --> E_LoadAdminSettings
equals 0 indicating successful
retrieval"}:::decision N_LoadAdminSettings_Node0_action["The retrieved table segment is
moved to the administrative segment
working area"]:::main N_LoadAdminSettings_Node0 -- Yes --> N_LoadAdminSettings_Node0_action N_LoadAdminSettings_Node0_action --> E_LoadAdminSettings S_LoadAdminSettings --> N_LoadAdminSettings_Node0 N_LoadAdminSettings_Node0 -- No --> E_LoadAdminSettings
File: GCX015E.cbl
GIVEN:
Administrative configuration retrieval is attempted
WHEN:
The table segment return flag equals '0' indicating successful retrieval
THEN:
The retrieved table segment is moved to the administrative segment working area
β Consolidated Acceptance Criteria
- The table segment return flag is not equal to '0' indicating retrieval failure → the default administrative ID 'OM01247' is set in the administrative configuration 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_SetDefaultAdminID(["Start Step"])
E_SetDefaultAdminID(["End Step"])
N_SetDefaultAdminID_Node0{"The table segment return flag is
not equal to 0 indicating retrieval
failure"}:::decision N_SetDefaultAdminID_Node0_action["The default administrative ID
OM01247 is set in the administrative
configuration area"]:::main N_SetDefaultAdminID_Node0 -- Yes --> N_SetDefaultAdminID_Node0_action N_SetDefaultAdminID_Node0_action --> E_SetDefaultAdminID S_SetDefaultAdminID --> N_SetDefaultAdminID_Node0 N_SetDefaultAdminID_Node0 -- No --> E_SetDefaultAdminID
not equal to 0 indicating retrieval
failure"}:::decision N_SetDefaultAdminID_Node0_action["The default administrative ID
OM01247 is set in the administrative
configuration area"]:::main N_SetDefaultAdminID_Node0 -- Yes --> N_SetDefaultAdminID_Node0_action N_SetDefaultAdminID_Node0_action --> E_SetDefaultAdminID S_SetDefaultAdminID --> N_SetDefaultAdminID_Node0 N_SetDefaultAdminID_Node0 -- No --> E_SetDefaultAdminID
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Administrative configuration retrieval is attempted
WHEN:
The table segment return flag is not equal to '0' indicating retrieval failure
THEN:
The default administrative ID 'OM01247' is set in the administrative configuration area
β Consolidated Acceptance Criteria
- The system initializes email fields → email subject area and error report area are initialized 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_InitializeEmailSubjectFields(["Start Step"])
E_InitializeEmailSubjectFields(["End Step"])
N_InitializeEmailSubjectFields_Node0{"The system initializes email fields"}:::decision
N_InitializeEmailSubjectFields_Node0_action["Email subject area and error report
area are initialized to spaces"]:::main N_InitializeEmailSubjectFields_Node0 -- Yes --> N_InitializeEmailSubjectFields_Node0_action N_InitializeEmailSubjectFields_Node0_action --> E_InitializeEmailSubjectFields S_InitializeEmailSubjectFields --> N_InitializeEmailSubjectFields_Node0 N_InitializeEmailSubjectFields_Node0 -- No --> E_InitializeEmailSubjectFields
area are initialized to spaces"]:::main N_InitializeEmailSubjectFields_Node0 -- Yes --> N_InitializeEmailSubjectFields_Node0_action N_InitializeEmailSubjectFields_Node0_action --> E_InitializeEmailSubjectFields S_InitializeEmailSubjectFields --> N_InitializeEmailSubjectFields_Node0 N_InitializeEmailSubjectFields_Node0 -- No --> E_InitializeEmailSubjectFields
File: GCX015E.cbl
GIVEN:
Administrative configuration is processed
WHEN:
The system initializes email fields
THEN:
- Email subject area
- Error report area are initialized to spaces
β Consolidated Acceptance Criteria
- The system calculates message parameters → message header length is set to the length of MQS message header, unused length is set to zero, and single entry length is set to the length of one MQS table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateMessageLengthParameters(["Start Step"])
E_CalculateMessageLengthParameters(["End Step"])
N_CalculateMessageLengthParameters_Node0{"The system calculates message
parameters"}:::decision N_CalculateMessageLengthParameters_Node0_action["Message header length is set to the
length of MQS message header, unused
length is set to zero, and single
entry length is set to the length of
one MQS table entry"]:::main N_CalculateMessageLengthParameters_Node0 -- Yes --> N_CalculateMessageLengthParameters_Node0_action N_CalculateMessageLengthParameters_Node0_action --> E_CalculateMessageLengthParameters S_CalculateMessageLengthParameters --> N_CalculateMessageLengthParameters_Node0 N_CalculateMessageLengthParameters_Node0 -- No --> E_CalculateMessageLengthParameters
parameters"}:::decision N_CalculateMessageLengthParameters_Node0_action["Message header length is set to the
length of MQS message header, unused
length is set to zero, and single
entry length is set to the length of
one MQS table entry"]:::main N_CalculateMessageLengthParameters_Node0 -- Yes --> N_CalculateMessageLengthParameters_Node0_action N_CalculateMessageLengthParameters_Node0_action --> E_CalculateMessageLengthParameters S_CalculateMessageLengthParameters --> N_CalculateMessageLengthParameters_Node0 N_CalculateMessageLengthParameters_Node0 -- No --> E_CalculateMessageLengthParameters
File: GCX015E.cbl
GIVEN:
Email fields are initialized
WHEN:
The system calculates message parameters
THEN:
Message header length is set to the length of MQS message header, unused length is set to zero, and single entry length is set to the length of one MQS table entry
β Consolidated Acceptance Criteria
- The system sets processing status flags → uS cargo/train not found flag is set to true, M10/P4/K3 segment not found flags are set to true, end not found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingStatusFlags(["Start Step"])
E_SetProcessingStatusFlags(["End Step"])
N_SetProcessingStatusFlags_Node0{"The system sets processing status
flags"}:::decision N_SetProcessingStatusFlags_Node0_action["US cargotrain not found flag is set
to true, M10P4K3 segment not found
flags are set to true, end not found
flag is set to true"]:::main N_SetProcessingStatusFlags_Node0 -- Yes --> N_SetProcessingStatusFlags_Node0_action N_SetProcessingStatusFlags_Node0_action --> E_SetProcessingStatusFlags S_SetProcessingStatusFlags --> N_SetProcessingStatusFlags_Node0 N_SetProcessingStatusFlags_Node0 -- No --> E_SetProcessingStatusFlags
flags"}:::decision N_SetProcessingStatusFlags_Node0_action["US cargotrain not found flag is set
to true, M10P4K3 segment not found
flags are set to true, end not found
flag is set to true"]:::main N_SetProcessingStatusFlags_Node0 -- Yes --> N_SetProcessingStatusFlags_Node0_action N_SetProcessingStatusFlags_Node0_action --> E_SetProcessingStatusFlags S_SetProcessingStatusFlags --> N_SetProcessingStatusFlags_Node0 N_SetProcessingStatusFlags_Node0 -- No --> E_SetProcessingStatusFlags
File: GCX015E.cbl
GIVEN:
Message length parameters are calculated
WHEN:
The system sets processing status flags
THEN:
US cargo/train not found flag is set to true, M10/P4/K3 segment not found flags are set to true, end not found flag is set to true
β Consolidated Acceptance Criteria
- The system initializes the line counter → the error report line counter is set to 1 and error report area 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_InitializeLineCounter(["Start Step"])
E_InitializeLineCounter(["End Step"])
N_InitializeLineCounter_Node0{"The system initializes the line
counter"}:::decision N_InitializeLineCounter_Node0_action["The error report line counter is
set to 1 and error report area is
cleared to spaces"]:::main N_InitializeLineCounter_Node0 -- Yes --> N_InitializeLineCounter_Node0_action N_InitializeLineCounter_Node0_action --> E_InitializeLineCounter S_InitializeLineCounter --> N_InitializeLineCounter_Node0 N_InitializeLineCounter_Node0 -- No --> E_InitializeLineCounter
counter"}:::decision N_InitializeLineCounter_Node0_action["The error report line counter is
set to 1 and error report area is
cleared to spaces"]:::main N_InitializeLineCounter_Node0 -- Yes --> N_InitializeLineCounter_Node0_action N_InitializeLineCounter_Node0_action --> E_InitializeLineCounter S_InitializeLineCounter --> N_InitializeLineCounter_Node0 N_InitializeLineCounter_Node0 -- No --> E_InitializeLineCounter
File: GCX015E.cbl
GIVEN:
Processing status flags are set
WHEN:
The system initializes the line counter
THEN:
- The error report line counter is set to 1
- Error report area is cleared to spaces
β Consolidated Acceptance Criteria
- The system configures database status → database accept status is set to 'GE' for subsequent operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDatabaseAcceptStatus(["Start Step"])
E_SetDatabaseAcceptStatus(["End Step"])
N_SetDatabaseAcceptStatus_Node0{"The system configures database
status"}:::decision N_SetDatabaseAcceptStatus_Node0_action["Database accept status is set to GE
for subsequent operations"]:::main N_SetDatabaseAcceptStatus_Node0 -- Yes --> N_SetDatabaseAcceptStatus_Node0_action N_SetDatabaseAcceptStatus_Node0_action --> E_SetDatabaseAcceptStatus S_SetDatabaseAcceptStatus --> N_SetDatabaseAcceptStatus_Node0 N_SetDatabaseAcceptStatus_Node0 -- No --> E_SetDatabaseAcceptStatus
status"}:::decision N_SetDatabaseAcceptStatus_Node0_action["Database accept status is set to GE
for subsequent operations"]:::main N_SetDatabaseAcceptStatus_Node0 -- Yes --> N_SetDatabaseAcceptStatus_Node0_action N_SetDatabaseAcceptStatus_Node0_action --> E_SetDatabaseAcceptStatus S_SetDatabaseAcceptStatus --> N_SetDatabaseAcceptStatus_Node0 N_SetDatabaseAcceptStatus_Node0 -- No --> E_SetDatabaseAcceptStatus
File: GCX015E.cbl
GIVEN:
Line counter is initialized
WHEN:
The system configures database status
THEN:
Database accept status is set to 'GE' for subsequent operations
β Consolidated Acceptance Criteria
- The system connects to message queue → message queue connection is established by calling the queue read function and MQ connection 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_ConnecttoMessageQueueSystem(["Start Step"])
E_ConnecttoMessageQueueSystem(["End Step"])
N_ConnecttoMessageQueueSystem_Node0{"The system connects to message
queue"}:::decision N_ConnecttoMessageQueueSystem_Node0_action["Message queue connection is
established by calling the queue
read function and MQ connection
function"]:::main N_ConnecttoMessageQueueSystem_Node0 -- Yes --> N_ConnecttoMessageQueueSystem_Node0_action N_ConnecttoMessageQueueSystem_Node0_action --> E_ConnecttoMessageQueueSystem S_ConnecttoMessageQueueSystem --> N_ConnecttoMessageQueueSystem_Node0 N_ConnecttoMessageQueueSystem_Node0 -- No --> E_ConnecttoMessageQueueSystem
queue"}:::decision N_ConnecttoMessageQueueSystem_Node0_action["Message queue connection is
established by calling the queue
read function and MQ connection
function"]:::main N_ConnecttoMessageQueueSystem_Node0 -- Yes --> N_ConnecttoMessageQueueSystem_Node0_action N_ConnecttoMessageQueueSystem_Node0_action --> E_ConnecttoMessageQueueSystem S_ConnecttoMessageQueueSystem --> N_ConnecttoMessageQueueSystem_Node0 N_ConnecttoMessageQueueSystem_Node0 -- No --> E_ConnecttoMessageQueueSystem
File: GCX015E.cbl
GIVEN:
Database accept status is configured
WHEN:
The system connects to message queue
THEN:
- Message queue connection is established by calling the queue read function
- Mq connection function
β Consolidated Acceptance Criteria
- The system opens the message queue → message queue is opened for reading by calling the MQ open function
- Message queue is opened for reading with input-as-queue-defined options → queue is opened successfully for message retrieval or system handles queue unavailable 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_OpenMessageQueueforReading(["Start Step"])
E_OpenMessageQueueforReading(["End Step"])
N_OpenMessageQueueforReading_Node0{"The system opens the message queue"}:::decision
N_OpenMessageQueueforReading_Node0_action["Message queue is opened for reading
by calling the MQ open function"]:::main N_OpenMessageQueueforReading_Node0 -- Yes --> N_OpenMessageQueueforReading_Node0_action N_OpenMessageQueueforReading_Node0_action --> E_OpenMessageQueueforReading S_OpenMessageQueueforReading --> N_OpenMessageQueueforReading_Node0 N_OpenMessageQueueforReading_Node1{"Message queue is opened for reading
with input-as-queue-defined options"}:::decision N_OpenMessageQueueforReading_Node1_action["Queue is opened successfully for
message retrieval or system handles
queue unavailable condition"]:::main N_OpenMessageQueueforReading_Node1 -- Yes --> N_OpenMessageQueueforReading_Node1_action N_OpenMessageQueueforReading_Node1_action --> E_OpenMessageQueueforReading N_OpenMessageQueueforReading_Node0 -- No --> N_OpenMessageQueueforReading_Node1 N_OpenMessageQueueforReading_Node1 -- No --> E_OpenMessageQueueforReading
by calling the MQ open function"]:::main N_OpenMessageQueueforReading_Node0 -- Yes --> N_OpenMessageQueueforReading_Node0_action N_OpenMessageQueueforReading_Node0_action --> E_OpenMessageQueueforReading S_OpenMessageQueueforReading --> N_OpenMessageQueueforReading_Node0 N_OpenMessageQueueforReading_Node1{"Message queue is opened for reading
with input-as-queue-defined options"}:::decision N_OpenMessageQueueforReading_Node1_action["Queue is opened successfully for
message retrieval or system handles
queue unavailable condition"]:::main N_OpenMessageQueueforReading_Node1 -- Yes --> N_OpenMessageQueueforReading_Node1_action N_OpenMessageQueueforReading_Node1_action --> E_OpenMessageQueueforReading N_OpenMessageQueueforReading_Node0 -- No --> N_OpenMessageQueueforReading_Node1 N_OpenMessageQueueforReading_Node1 -- No --> E_OpenMessageQueueforReading
File: GCX015E.cbl
GIVEN:
Message queue connection is established
WHEN:
The system opens the message queue
THEN:
Message queue is opened for reading by calling the MQ open function
File: GCX015E.cbl
GIVEN:
MQ manager connection is established
WHEN:
Message queue is opened for reading with input-as-queue-defined options
THEN:
Queue is opened successfully for message retrieval or system handles queue unavailable condition
β Consolidated Acceptance Criteria
- A message read operation is initiated → the system attempts to retrieve the next available message from the queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadMessagefromMQQueue(["Start Step"])
E_ReadMessagefromMQQueue(["End Step"])
N_ReadMessagefromMQQueue_Node0{"A message read operation is
initiated"}:::decision N_ReadMessagefromMQQueue_Node0_action["The system attempts to retrieve the
next available message from the
queue"]:::main N_ReadMessagefromMQQueue_Node0 -- Yes --> N_ReadMessagefromMQQueue_Node0_action N_ReadMessagefromMQQueue_Node0_action --> E_ReadMessagefromMQQueue S_ReadMessagefromMQQueue --> N_ReadMessagefromMQQueue_Node0 N_ReadMessagefromMQQueue_Node0 -- No --> E_ReadMessagefromMQQueue
initiated"}:::decision N_ReadMessagefromMQQueue_Node0_action["The system attempts to retrieve the
next available message from the
queue"]:::main N_ReadMessagefromMQQueue_Node0 -- Yes --> N_ReadMessagefromMQQueue_Node0_action N_ReadMessagefromMQQueue_Node0_action --> E_ReadMessagefromMQQueue S_ReadMessagefromMQQueue --> N_ReadMessagefromMQQueue_Node0 N_ReadMessagefromMQQueue_Node0 -- No --> E_ReadMessagefromMQQueue
File: GCX015E.cbl
GIVEN:
The system is connected to the message queue
WHEN:
A message read operation is initiated
THEN:
The system attempts to retrieve the next available message from the queue
β Consolidated Acceptance Criteria
- The message contains less than one complete message entry → the system flags the message as too short and terminates processing with error GCT0152E
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTooShort(["Start Step"])
E_MessageTooShort(["End Step"])
N_MessageTooShort_Node0{"The message contains less than one
complete message entry"}:::decision N_MessageTooShort_Node0_action["The system flags the message as too
short and terminates processing with
error GCT0152E"]:::main N_MessageTooShort_Node0 -- Yes --> N_MessageTooShort_Node0_action N_MessageTooShort_Node0_action --> E_MessageTooShort S_MessageTooShort --> N_MessageTooShort_Node0 N_MessageTooShort_Node0 -- No --> E_MessageTooShort
complete message entry"}:::decision N_MessageTooShort_Node0_action["The system flags the message as too
short and terminates processing with
error GCT0152E"]:::main N_MessageTooShort_Node0 -- Yes --> N_MessageTooShort_Node0_action N_MessageTooShort_Node0_action --> E_MessageTooShort S_MessageTooShort --> N_MessageTooShort_Node0 N_MessageTooShort_Node0 -- No --> E_MessageTooShort
File: GCX015E.cbl
GIVEN:
A message has been successfully read from the queue
WHEN:
The message contains less than one complete message entry
THEN:
- The system flags the message as too short
- Terminates processing with error gct0152e
β Consolidated Acceptance Criteria
- The message backout count is greater than zero → the system skips the message and sets skip message flag to prevent reprocessing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessagePreviouslyFailed(["Start Step"])
E_MessagePreviouslyFailed(["End Step"])
N_MessagePreviouslyFailed_Node0{"The message backout count is
greater than zero"}:::decision N_MessagePreviouslyFailed_Node0_action["The system skips the message and
sets skip message flag to prevent
reprocessing"]:::main N_MessagePreviouslyFailed_Node0 -- Yes --> N_MessagePreviouslyFailed_Node0_action N_MessagePreviouslyFailed_Node0_action --> E_MessagePreviouslyFailed S_MessagePreviouslyFailed --> N_MessagePreviouslyFailed_Node0 N_MessagePreviouslyFailed_Node0 -- No --> E_MessagePreviouslyFailed
greater than zero"}:::decision N_MessagePreviouslyFailed_Node0_action["The system skips the message and
sets skip message flag to prevent
reprocessing"]:::main N_MessagePreviouslyFailed_Node0 -- Yes --> N_MessagePreviouslyFailed_Node0_action N_MessagePreviouslyFailed_Node0_action --> E_MessagePreviouslyFailed S_MessagePreviouslyFailed --> N_MessagePreviouslyFailed_Node0 N_MessagePreviouslyFailed_Node0 -- No --> E_MessagePreviouslyFailed
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A message has been read successfully and is not too short
WHEN:
The message backout count is greater than zero
THEN:
- The system skips the message
- Sets skip message flag to prevent reprocessing
β Consolidated Acceptance Criteria
- The message backout count equals zero → the system accepts the message and sets good message flag 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_AcceptMessageSetGoodMessageFlag(["Start Step"])
E_AcceptMessageSetGoodMessageFlag(["End Step"])
N_AcceptMessageSetGoodMessageFlag_Node0{"The message backout count equals
zero"}:::decision N_AcceptMessageSetGoodMessageFlag_Node0_action["The system accepts the message and
sets good message flag for further
processing"]:::main N_AcceptMessageSetGoodMessageFlag_Node0 -- Yes --> N_AcceptMessageSetGoodMessageFlag_Node0_action N_AcceptMessageSetGoodMessageFlag_Node0_action --> E_AcceptMessageSetGoodMessageFlag S_AcceptMessageSetGoodMessageFlag --> N_AcceptMessageSetGoodMessageFlag_Node0 N_AcceptMessageSetGoodMessageFlag_Node0 -- No --> E_AcceptMessageSetGoodMessageFlag
zero"}:::decision N_AcceptMessageSetGoodMessageFlag_Node0_action["The system accepts the message and
sets good message flag for further
processing"]:::main N_AcceptMessageSetGoodMessageFlag_Node0 -- Yes --> N_AcceptMessageSetGoodMessageFlag_Node0_action N_AcceptMessageSetGoodMessageFlag_Node0_action --> E_AcceptMessageSetGoodMessageFlag S_AcceptMessageSetGoodMessageFlag --> N_AcceptMessageSetGoodMessageFlag_Node0 N_AcceptMessageSetGoodMessageFlag_Node0 -- No --> E_AcceptMessageSetGoodMessageFlag
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A message has been read successfully, is not too short, and has not previously failed
WHEN:
The message backout count equals zero
THEN:
- The system accepts the message
- Sets good message flag for further processing
β Consolidated Acceptance Criteria
- The queue returns reason code 2033 indicating no messages available → the system sets finished processing flag and completes the load 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_MQQueueEmpty(["Start Step"])
E_MQQueueEmpty(["End Step"])
N_MQQueueEmpty_Node0{"The queue returns reason code 2033
indicating no messages available"}:::decision N_MQQueueEmpty_Node0_action["The system sets finished processing
flag and completes the load
operation"]:::main N_MQQueueEmpty_Node0 -- Yes --> N_MQQueueEmpty_Node0_action N_MQQueueEmpty_Node0_action --> E_MQQueueEmpty S_MQQueueEmpty --> N_MQQueueEmpty_Node0 N_MQQueueEmpty_Node0 -- No --> E_MQQueueEmpty
indicating no messages available"}:::decision N_MQQueueEmpty_Node0_action["The system sets finished processing
flag and completes the load
operation"]:::main N_MQQueueEmpty_Node0 -- Yes --> N_MQQueueEmpty_Node0_action N_MQQueueEmpty_Node0_action --> E_MQQueueEmpty S_MQQueueEmpty --> N_MQQueueEmpty_Node0 N_MQQueueEmpty_Node0 -- No --> E_MQQueueEmpty
File: GCX015E.cbl
GIVEN:
The system attempts to read from the message queue
WHEN:
The queue returns reason code 2033 indicating no messages available
THEN:
- The system sets finished processing flag
- Completes the load operation
β Consolidated Acceptance Criteria
- The error is not a 'no messages available' condition and completion code indicates failure → the system sets end of queue flag and terminates processing with appropriate error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OtherMQError(["Start Step"])
E_OtherMQError(["End Step"])
N_OtherMQError_Node0{"The error is not a no messages
available condition and completion
code indicates failure"}:::decision N_OtherMQError_Node0_action["The system sets end of queue flag
and terminates processing with
appropriate error message"]:::exclusion N_OtherMQError_Node0 -- Yes -->|Alternative| N_OtherMQError_Node0_action N_OtherMQError_Node0_action --> E_OtherMQError S_OtherMQError --> N_OtherMQError_Node0 N_OtherMQError_Node0 -- No --> E_OtherMQError
available condition and completion
code indicates failure"}:::decision N_OtherMQError_Node0_action["The system sets end of queue flag
and terminates processing with
appropriate error message"]:::exclusion N_OtherMQError_Node0 -- Yes -->|Alternative| N_OtherMQError_Node0_action N_OtherMQError_Node0_action --> E_OtherMQError S_OtherMQError --> N_OtherMQError_Node0 N_OtherMQError_Node0 -- No --> E_OtherMQError
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The system encounters an error while reading from the message queue
WHEN:
- The error is not a 'no messages available' condition
- Completion code indicates failure
THEN:
- The system sets end of queue flag
- Terminates processing with appropriate error message
β Consolidated Acceptance Criteria
- The system checks if the current line contains an M10 segment identifier → the system proceeds to extract M10 data if identified, otherwise continues to next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCurrentLineM10Segment(["Start Step"])
E_IsCurrentLineM10Segment(["End Step"])
N_IsCurrentLineM10Segment_Node0{"The system checks if the current
line contains an M10 segment
identifier"}:::decision N_IsCurrentLineM10Segment_Node0_action["The system proceeds to extract M10
data if identified, otherwise
continues to next segment"]:::main N_IsCurrentLineM10Segment_Node0 -- Yes --> N_IsCurrentLineM10Segment_Node0_action N_IsCurrentLineM10Segment_Node0_action --> E_IsCurrentLineM10Segment S_IsCurrentLineM10Segment --> N_IsCurrentLineM10Segment_Node0 N_IsCurrentLineM10Segment_Node0 -- No --> E_IsCurrentLineM10Segment
line contains an M10 segment
identifier"}:::decision N_IsCurrentLineM10Segment_Node0_action["The system proceeds to extract M10
data if identified, otherwise
continues to next segment"]:::main N_IsCurrentLineM10Segment_Node0 -- Yes --> N_IsCurrentLineM10Segment_Node0_action N_IsCurrentLineM10Segment_Node0_action --> E_IsCurrentLineM10Segment S_IsCurrentLineM10Segment --> N_IsCurrentLineM10Segment_Node0 N_IsCurrentLineM10Segment_Node0 -- No --> E_IsCurrentLineM10Segment
File: GCX015E.cbl
GIVEN:
A message line is being processed
WHEN:
The system checks if the current line contains an M10 segment identifier
THEN:
The system proceeds to extract M10 data if identified, otherwise continues to next segment
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the M10-12 reference number is extracted and stored for shipment 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_GetM1012ReferenceNumber(["Start Step"])
E_GetM1012ReferenceNumber(["End Step"])
N_GetM1012ReferenceNumber_Node0{"The system processes the M10
segment"}:::decision N_GetM1012ReferenceNumber_Node0_action["The M10-12 reference number is
extracted and stored for shipment
type determination"]:::main N_GetM1012ReferenceNumber_Node0 -- Yes --> N_GetM1012ReferenceNumber_Node0_action N_GetM1012ReferenceNumber_Node0_action --> E_GetM1012ReferenceNumber S_GetM1012ReferenceNumber --> N_GetM1012ReferenceNumber_Node0 N_GetM1012ReferenceNumber_Node0 -- No --> E_GetM1012ReferenceNumber
segment"}:::decision N_GetM1012ReferenceNumber_Node0_action["The M10-12 reference number is
extracted and stored for shipment
type determination"]:::main N_GetM1012ReferenceNumber_Node0 -- Yes --> N_GetM1012ReferenceNumber_Node0_action N_GetM1012ReferenceNumber_Node0_action --> E_GetM1012ReferenceNumber S_GetM1012ReferenceNumber --> N_GetM1012ReferenceNumber_Node0 N_GetM1012ReferenceNumber_Node0 -- No --> E_GetM1012ReferenceNumber
File: GCX015E.cbl
GIVEN:
An M10 segment has been identified in the current message line
WHEN:
The system processes the M10 segment
THEN:
- The m10-12 reference number is extracted
- Stored for shipment type determination
β Consolidated Acceptance Criteria
- The reference number key portion equals 'TRAIN' → the system sets the train processing 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_ReferenceNumberKeyTRAIN(["Start Step"])
E_ReferenceNumberKeyTRAIN(["End Step"])
N_ReferenceNumberKeyTRAIN_Node0{"The reference number key portion
equals TRAIN"}:::decision N_ReferenceNumberKeyTRAIN_Node0_action["The system sets the train
processing flag to true"]:::main N_ReferenceNumberKeyTRAIN_Node0 -- Yes --> N_ReferenceNumberKeyTRAIN_Node0_action N_ReferenceNumberKeyTRAIN_Node0_action --> E_ReferenceNumberKeyTRAIN S_ReferenceNumberKeyTRAIN --> N_ReferenceNumberKeyTRAIN_Node0 N_ReferenceNumberKeyTRAIN_Node0 -- No --> E_ReferenceNumberKeyTRAIN
equals TRAIN"}:::decision N_ReferenceNumberKeyTRAIN_Node0_action["The system sets the train
processing flag to true"]:::main N_ReferenceNumberKeyTRAIN_Node0 -- Yes --> N_ReferenceNumberKeyTRAIN_Node0_action N_ReferenceNumberKeyTRAIN_Node0_action --> E_ReferenceNumberKeyTRAIN S_ReferenceNumberKeyTRAIN --> N_ReferenceNumberKeyTRAIN_Node0 N_ReferenceNumberKeyTRAIN_Node0 -- No --> E_ReferenceNumberKeyTRAIN
File: GCX015E.cbl
GIVEN:
An M10-12 reference number has been extracted from the segment
WHEN:
The reference number key portion equals 'TRAIN'
THEN:
The system sets the train processing flag to true
β Consolidated Acceptance Criteria
- The system determines the shipment type → the train processing flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainProcessingFlag(["Start Step"])
E_SetTrainProcessingFlag(["End Step"])
N_SetTrainProcessingFlag_Node0{"The system determines the shipment
type"}:::decision N_SetTrainProcessingFlag_Node0_action["The train processing flag is set to
true"]:::main N_SetTrainProcessingFlag_Node0 -- Yes --> N_SetTrainProcessingFlag_Node0_action N_SetTrainProcessingFlag_Node0_action --> E_SetTrainProcessingFlag S_SetTrainProcessingFlag --> N_SetTrainProcessingFlag_Node0 N_SetTrainProcessingFlag_Node0 -- No --> E_SetTrainProcessingFlag
type"}:::decision N_SetTrainProcessingFlag_Node0_action["The train processing flag is set to
true"]:::main N_SetTrainProcessingFlag_Node0 -- Yes --> N_SetTrainProcessingFlag_Node0_action N_SetTrainProcessingFlag_Node0_action --> E_SetTrainProcessingFlag S_SetTrainProcessingFlag --> N_SetTrainProcessingFlag_Node0 N_SetTrainProcessingFlag_Node0 -- No --> E_SetTrainProcessingFlag
File: GCX015E.cbl
GIVEN:
The reference number key has been identified as 'TRAIN'
WHEN:
The system determines the shipment type
THEN:
The train processing flag is set to true
β Consolidated Acceptance Criteria
- The reference number key portion equals 'CARGO' → the system sets the cargo processing 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_ReferenceNumberKeyCARGO(["Start Step"])
E_ReferenceNumberKeyCARGO(["End Step"])
N_ReferenceNumberKeyCARGO_Node0{"The reference number key portion
equals CARGO"}:::decision N_ReferenceNumberKeyCARGO_Node0_action["The system sets the cargo
processing flag to true"]:::main N_ReferenceNumberKeyCARGO_Node0 -- Yes --> N_ReferenceNumberKeyCARGO_Node0_action N_ReferenceNumberKeyCARGO_Node0_action --> E_ReferenceNumberKeyCARGO S_ReferenceNumberKeyCARGO --> N_ReferenceNumberKeyCARGO_Node0 N_ReferenceNumberKeyCARGO_Node0 -- No --> E_ReferenceNumberKeyCARGO
equals CARGO"}:::decision N_ReferenceNumberKeyCARGO_Node0_action["The system sets the cargo
processing flag to true"]:::main N_ReferenceNumberKeyCARGO_Node0 -- Yes --> N_ReferenceNumberKeyCARGO_Node0_action N_ReferenceNumberKeyCARGO_Node0_action --> E_ReferenceNumberKeyCARGO S_ReferenceNumberKeyCARGO --> N_ReferenceNumberKeyCARGO_Node0 N_ReferenceNumberKeyCARGO_Node0 -- No --> E_ReferenceNumberKeyCARGO
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
An M10-12 reference number has been extracted and does not contain 'TRAIN'
WHEN:
The reference number key portion equals 'CARGO'
THEN:
The system sets the cargo processing flag to true
β Consolidated Acceptance Criteria
- The system determines the shipment type → the cargo processing flag is set to true
- The system finalizes shipment type determination → the cargo processing flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoProcessingFlag(["Start Step"])
E_SetCargoProcessingFlag(["End Step"])
N_SetCargoProcessingFlag_Node0{"The system determines the shipment
type"}:::decision N_SetCargoProcessingFlag_Node0_action["The cargo processing flag is set to
true"]:::main N_SetCargoProcessingFlag_Node0 -- Yes --> N_SetCargoProcessingFlag_Node0_action N_SetCargoProcessingFlag_Node0_action --> E_SetCargoProcessingFlag S_SetCargoProcessingFlag --> N_SetCargoProcessingFlag_Node0 N_SetCargoProcessingFlag_Node1{"The system finalizes shipment type
determination"}:::decision N_SetCargoProcessingFlag_Node1_action["The cargo processing flag is set to
true"]:::main N_SetCargoProcessingFlag_Node1 -- Yes --> N_SetCargoProcessingFlag_Node1_action N_SetCargoProcessingFlag_Node1_action --> E_SetCargoProcessingFlag N_SetCargoProcessingFlag_Node0 -- No --> N_SetCargoProcessingFlag_Node1 N_SetCargoProcessingFlag_Node1 -- No --> E_SetCargoProcessingFlag
type"}:::decision N_SetCargoProcessingFlag_Node0_action["The cargo processing flag is set to
true"]:::main N_SetCargoProcessingFlag_Node0 -- Yes --> N_SetCargoProcessingFlag_Node0_action N_SetCargoProcessingFlag_Node0_action --> E_SetCargoProcessingFlag S_SetCargoProcessingFlag --> N_SetCargoProcessingFlag_Node0 N_SetCargoProcessingFlag_Node1{"The system finalizes shipment type
determination"}:::decision N_SetCargoProcessingFlag_Node1_action["The cargo processing flag is set to
true"]:::main N_SetCargoProcessingFlag_Node1 -- Yes --> N_SetCargoProcessingFlag_Node1_action N_SetCargoProcessingFlag_Node1_action --> E_SetCargoProcessingFlag N_SetCargoProcessingFlag_Node0 -- No --> N_SetCargoProcessingFlag_Node1 N_SetCargoProcessingFlag_Node1 -- No --> E_SetCargoProcessingFlag
File: GCX015E.cbl
GIVEN:
The reference number key has been identified as 'CARGO'
WHEN:
The system determines the shipment type
THEN:
The cargo processing flag is set to true
File: GCX015E.cbl
GIVEN:
A cargo key has been successfully built from M11 data
WHEN:
The system finalizes shipment type determination
THEN:
The cargo processing flag is set to true
β Consolidated Acceptance Criteria
- The manifest type code is 'P' (Preliminary), 'Y' (Yard), or 'S' (Special) → the system sets the should update 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_ManifestTypePYS(["Start Step"])
E_ManifestTypePYS(["End Step"])
N_ManifestTypePYS_Node0{"The manifest type code is P
Preliminary, Y Yard, or S Special"}:::decision N_ManifestTypePYS_Node0_action["The system sets the should update
status flag to true"]:::main N_ManifestTypePYS_Node0 -- Yes --> N_ManifestTypePYS_Node0_action N_ManifestTypePYS_Node0_action --> E_ManifestTypePYS S_ManifestTypePYS --> N_ManifestTypePYS_Node0 N_ManifestTypePYS_Node0 -- No --> E_ManifestTypePYS
Preliminary, Y Yard, or S Special"}:::decision N_ManifestTypePYS_Node0_action["The system sets the should update
status flag to true"]:::main N_ManifestTypePYS_Node0 -- Yes --> N_ManifestTypePYS_Node0_action N_ManifestTypePYS_Node0_action --> E_ManifestTypePYS S_ManifestTypePYS --> N_ManifestTypePYS_Node0 N_ManifestTypePYS_Node0 -- No --> E_ManifestTypePYS
File: GCX015E.cbl
GIVEN:
A shipment type has been determined and manifest type code is available
WHEN:
The manifest type code is 'P' (Preliminary), 'Y' (Yard), or 'S' (Special)
THEN:
The system sets the should update status flag to true
β Consolidated Acceptance Criteria
- If update requirements → the should update status flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetShouldUpdateStatusFlag(["Start Step"])
E_SetShouldUpdateStatusFlag(["End Step"])
N_SetShouldUpdateStatusFlag_Node0{"The system evaluates update
requirements"}:::decision N_SetShouldUpdateStatusFlag_Node0_action["The should update status flag is
set to true"]:::main N_SetShouldUpdateStatusFlag_Node0 -- Yes --> N_SetShouldUpdateStatusFlag_Node0_action N_SetShouldUpdateStatusFlag_Node0_action --> E_SetShouldUpdateStatusFlag S_SetShouldUpdateStatusFlag --> N_SetShouldUpdateStatusFlag_Node0 N_SetShouldUpdateStatusFlag_Node0 -- No --> E_SetShouldUpdateStatusFlag
requirements"}:::decision N_SetShouldUpdateStatusFlag_Node0_action["The should update status flag is
set to true"]:::main N_SetShouldUpdateStatusFlag_Node0 -- Yes --> N_SetShouldUpdateStatusFlag_Node0_action N_SetShouldUpdateStatusFlag_Node0_action --> E_SetShouldUpdateStatusFlag S_SetShouldUpdateStatusFlag --> N_SetShouldUpdateStatusFlag_Node0 N_SetShouldUpdateStatusFlag_Node0 -- No --> E_SetShouldUpdateStatusFlag
File: GCX015E.cbl
GIVEN:
The manifest type is identified as P, Y, or S
WHEN:
The system evaluates update requirements
THEN:
The should update status flag is set to true
β Consolidated Acceptance Criteria
- The manifest type code is 'H' (Hold) → the system proceeds to evaluate train versus cargo processing for hold 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_ManifestTypeH(["Start Step"])
E_ManifestTypeH(["End Step"])
N_ManifestTypeH_Node0{"The manifest type code is H Hold"}:::decision
N_ManifestTypeH_Node0_action["The system proceeds to evaluate
train versus cargo processing for
hold manifests"]:::main N_ManifestTypeH_Node0 -- Yes --> N_ManifestTypeH_Node0_action N_ManifestTypeH_Node0_action --> E_ManifestTypeH S_ManifestTypeH --> N_ManifestTypeH_Node0 N_ManifestTypeH_Node0 -- No --> E_ManifestTypeH
train versus cargo processing for
hold manifests"]:::main N_ManifestTypeH_Node0 -- Yes --> N_ManifestTypeH_Node0_action N_ManifestTypeH_Node0_action --> E_ManifestTypeH S_ManifestTypeH --> N_ManifestTypeH_Node0 N_ManifestTypeH_Node0 -- No --> E_ManifestTypeH
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The manifest type is not P, Y, or S
WHEN:
The manifest type code is 'H' (Hold)
THEN:
The system proceeds to evaluate train versus cargo processing for hold manifests
β Consolidated Acceptance Criteria
- The shipment is being processed as a train → the system sets both delete status and update status flags 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_ProcessingTrain(["Start Step"])
E_ProcessingTrain(["End Step"])
N_ProcessingTrain_Node0{"The shipment is being processed as
a train"}:::decision N_ProcessingTrain_Node0_action["The system sets both delete status
and update status flags to true"]:::main N_ProcessingTrain_Node0 -- Yes --> N_ProcessingTrain_Node0_action N_ProcessingTrain_Node0_action --> E_ProcessingTrain S_ProcessingTrain --> N_ProcessingTrain_Node0 N_ProcessingTrain_Node0 -- No --> E_ProcessingTrain
a train"}:::decision N_ProcessingTrain_Node0_action["The system sets both delete status
and update status flags to true"]:::main N_ProcessingTrain_Node0 -- Yes --> N_ProcessingTrain_Node0_action N_ProcessingTrain_Node0_action --> E_ProcessingTrain S_ProcessingTrain --> N_ProcessingTrain_Node0 N_ProcessingTrain_Node0 -- No --> E_ProcessingTrain
File: GCX015E.cbl
GIVEN:
The manifest type is 'H' (Hold)
WHEN:
The shipment is being processed as a train
THEN:
- The system sets both delete status
- Update status flags to true
β Consolidated Acceptance Criteria
- The system determines processing requirements → both should delete status and should update status flags are set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetShouldDeleteStatusFlag(["Start Step"])
E_SetShouldDeleteStatusFlag(["End Step"])
N_SetShouldDeleteStatusFlag_Node0{"The system determines processing
requirements"}:::decision N_SetShouldDeleteStatusFlag_Node0_action["Both should delete status and
should update status flags are set
to true"]:::main N_SetShouldDeleteStatusFlag_Node0 -- Yes --> N_SetShouldDeleteStatusFlag_Node0_action N_SetShouldDeleteStatusFlag_Node0_action --> E_SetShouldDeleteStatusFlag S_SetShouldDeleteStatusFlag --> N_SetShouldDeleteStatusFlag_Node0 N_SetShouldDeleteStatusFlag_Node0 -- No --> E_SetShouldDeleteStatusFlag
requirements"}:::decision N_SetShouldDeleteStatusFlag_Node0_action["Both should delete status and
should update status flags are set
to true"]:::main N_SetShouldDeleteStatusFlag_Node0 -- Yes --> N_SetShouldDeleteStatusFlag_Node0_action N_SetShouldDeleteStatusFlag_Node0_action --> E_SetShouldDeleteStatusFlag S_SetShouldDeleteStatusFlag --> N_SetShouldDeleteStatusFlag_Node0 N_SetShouldDeleteStatusFlag_Node0 -- No --> E_SetShouldDeleteStatusFlag
File: GCX015E.cbl
GIVEN:
A hold manifest is being processed for a train shipment
WHEN:
The system determines processing requirements
THEN:
- Both should delete status
- Should update status flags are set to true
β Consolidated Acceptance Criteria
- If update requirements → the should not update status flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetShouldNotUpdateStatusFlag(["Start Step"])
E_SetShouldNotUpdateStatusFlag(["End Step"])
N_SetShouldNotUpdateStatusFlag_Node0{"The system evaluates update
requirements"}:::decision N_SetShouldNotUpdateStatusFlag_Node0_action["The should not update status flag
is set to true"]:::main N_SetShouldNotUpdateStatusFlag_Node0 -- Yes --> N_SetShouldNotUpdateStatusFlag_Node0_action N_SetShouldNotUpdateStatusFlag_Node0_action --> E_SetShouldNotUpdateStatusFlag S_SetShouldNotUpdateStatusFlag --> N_SetShouldNotUpdateStatusFlag_Node0 N_SetShouldNotUpdateStatusFlag_Node0 -- No --> E_SetShouldNotUpdateStatusFlag
requirements"}:::decision N_SetShouldNotUpdateStatusFlag_Node0_action["The should not update status flag
is set to true"]:::main N_SetShouldNotUpdateStatusFlag_Node0 -- Yes --> N_SetShouldNotUpdateStatusFlag_Node0_action N_SetShouldNotUpdateStatusFlag_Node0_action --> E_SetShouldNotUpdateStatusFlag S_SetShouldNotUpdateStatusFlag --> N_SetShouldNotUpdateStatusFlag_Node0 N_SetShouldNotUpdateStatusFlag_Node0 -- No --> E_SetShouldNotUpdateStatusFlag
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The manifest type is 'H' for cargo shipments or the manifest type is not P, Y, S, or H
WHEN:
The system evaluates update requirements
THEN:
The should not update status flag is set to true
β Consolidated Acceptance Criteria
- Neither train nor cargo flags have been set → the system proceeds to check for M11 segment as alternative 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_TypeStillUnknown(["Start Step"])
E_TypeStillUnknown(["End Step"])
N_TypeStillUnknown_Node0{"Neither train nor cargo flags have
been set"}:::decision N_TypeStillUnknown_Node0_action["The system proceeds to check for
M11 segment as alternative data
source"]:::main N_TypeStillUnknown_Node0 -- Yes --> N_TypeStillUnknown_Node0_action N_TypeStillUnknown_Node0_action --> E_TypeStillUnknown S_TypeStillUnknown --> N_TypeStillUnknown_Node0 N_TypeStillUnknown_Node0 -- No --> E_TypeStillUnknown
been set"}:::decision N_TypeStillUnknown_Node0_action["The system proceeds to check for
M11 segment as alternative data
source"]:::main N_TypeStillUnknown_Node0 -- Yes --> N_TypeStillUnknown_Node0_action N_TypeStillUnknown_Node0_action --> E_TypeStillUnknown S_TypeStillUnknown --> N_TypeStillUnknown_Node0 N_TypeStillUnknown_Node0 -- No --> E_TypeStillUnknown
File: GCX015E.cbl
GIVEN:
M10 segment processing is complete
WHEN:
Neither train nor cargo flags have been set
THEN:
The system proceeds to check for M11 segment as alternative data source
β Consolidated Acceptance Criteria
- The current line contains an M11 segment identifier → the system extracts M11 segment data 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_IsCurrentLineM11Segment(["Start Step"])
E_IsCurrentLineM11Segment(["End Step"])
N_IsCurrentLineM11Segment_Node0{"The current line contains an M11
segment identifier"}:::decision N_IsCurrentLineM11Segment_Node0_action["The system extracts M11 segment
data for cargo identification"]:::main N_IsCurrentLineM11Segment_Node0 -- Yes --> N_IsCurrentLineM11Segment_Node0_action N_IsCurrentLineM11Segment_Node0_action --> E_IsCurrentLineM11Segment S_IsCurrentLineM11Segment --> N_IsCurrentLineM11Segment_Node0 N_IsCurrentLineM11Segment_Node0 -- No --> E_IsCurrentLineM11Segment
segment identifier"}:::decision N_IsCurrentLineM11Segment_Node0_action["The system extracts M11 segment
data for cargo identification"]:::main N_IsCurrentLineM11Segment_Node0 -- Yes --> N_IsCurrentLineM11Segment_Node0_action N_IsCurrentLineM11Segment_Node0_action --> E_IsCurrentLineM11Segment S_IsCurrentLineM11Segment --> N_IsCurrentLineM11Segment_Node0 N_IsCurrentLineM11Segment_Node0 -- No --> E_IsCurrentLineM11Segment
File: GCX015E.cbl
GIVEN:
Shipment type remains unknown after M10 processing
WHEN:
The current line contains an M11 segment identifier
THEN:
The system extracts M11 segment data for cargo identification
β Consolidated Acceptance Criteria
- The system processes the M11 segment → m11 segment data is extracted including SCAC and bill of lading 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_ExtractM11SegmentData(["Start Step"])
E_ExtractM11SegmentData(["End Step"])
N_ExtractM11SegmentData_Node0{"The system processes the M11
segment"}:::decision N_ExtractM11SegmentData_Node0_action["M11 segment data is extracted
including SCAC and bill of lading
number"]:::main N_ExtractM11SegmentData_Node0 -- Yes --> N_ExtractM11SegmentData_Node0_action N_ExtractM11SegmentData_Node0_action --> E_ExtractM11SegmentData S_ExtractM11SegmentData --> N_ExtractM11SegmentData_Node0 N_ExtractM11SegmentData_Node0 -- No --> E_ExtractM11SegmentData
segment"}:::decision N_ExtractM11SegmentData_Node0_action["M11 segment data is extracted
including SCAC and bill of lading
number"]:::main N_ExtractM11SegmentData_Node0 -- Yes --> N_ExtractM11SegmentData_Node0_action N_ExtractM11SegmentData_Node0_action --> E_ExtractM11SegmentData S_ExtractM11SegmentData --> N_ExtractM11SegmentData_Node0 N_ExtractM11SegmentData_Node0 -- No --> E_ExtractM11SegmentData
File: GCX015E.cbl
GIVEN:
An M11 segment has been identified
WHEN:
The system processes the M11 segment
THEN:
- M11 segment data is extracted including scac
- Bill of lading number
β Consolidated Acceptance Criteria
- The system builds the cargo identification key → a cargo key is constructed using M11-12 SCAC and M11-01 bill of lading 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_BuildCargoKeyfromM11Data(["Start Step"])
E_BuildCargoKeyfromM11Data(["End Step"])
N_BuildCargoKeyfromM11Data_Node0{"The system builds the cargo
identification key"}:::decision N_BuildCargoKeyfromM11Data_Node0_action["A cargo key is constructed using
M11-12 SCAC and M11-01 bill of
lading number"]:::main N_BuildCargoKeyfromM11Data_Node0 -- Yes --> N_BuildCargoKeyfromM11Data_Node0_action N_BuildCargoKeyfromM11Data_Node0_action --> E_BuildCargoKeyfromM11Data S_BuildCargoKeyfromM11Data --> N_BuildCargoKeyfromM11Data_Node0 N_BuildCargoKeyfromM11Data_Node0 -- No --> E_BuildCargoKeyfromM11Data
identification key"}:::decision N_BuildCargoKeyfromM11Data_Node0_action["A cargo key is constructed using
M11-12 SCAC and M11-01 bill of
lading number"]:::main N_BuildCargoKeyfromM11Data_Node0 -- Yes --> N_BuildCargoKeyfromM11Data_Node0_action N_BuildCargoKeyfromM11Data_Node0_action --> E_BuildCargoKeyfromM11Data S_BuildCargoKeyfromM11Data --> N_BuildCargoKeyfromM11Data_Node0 N_BuildCargoKeyfromM11Data_Node0 -- No --> E_BuildCargoKeyfromM11Data
File: GCX015E.cbl
GIVEN:
M11 segment data has been extracted
WHEN:
The system builds the cargo identification key
THEN:
- A cargo key is constructed using m11-12 scac
- M11-01 bill of lading number
β Consolidated Acceptance Criteria
- The manifest type code is P (Preliminary), Y (Yes/Confirmed), or S (Special) → the system sets the SHOULD-UPDATE-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_SetSHOULDUPDATESTATUSFlag(["Start Step"])
E_SetSHOULDUPDATESTATUSFlag(["End Step"])
N_SetSHOULDUPDATESTATUSFlag_Node0{"The manifest type code is P
Preliminary, Y YesConfirmed, or S
Special"}:::decision N_SetSHOULDUPDATESTATUSFlag_Node0_action["The system sets the
SHOULD-UPDATE-STATUS flag to true"]:::main N_SetSHOULDUPDATESTATUSFlag_Node0 -- Yes --> N_SetSHOULDUPDATESTATUSFlag_Node0_action N_SetSHOULDUPDATESTATUSFlag_Node0_action --> E_SetSHOULDUPDATESTATUSFlag S_SetSHOULDUPDATESTATUSFlag --> N_SetSHOULDUPDATESTATUSFlag_Node0 N_SetSHOULDUPDATESTATUSFlag_Node0 -- No --> E_SetSHOULDUPDATESTATUSFlag
Preliminary, Y YesConfirmed, or S
Special"}:::decision N_SetSHOULDUPDATESTATUSFlag_Node0_action["The system sets the
SHOULD-UPDATE-STATUS flag to true"]:::main N_SetSHOULDUPDATESTATUSFlag_Node0 -- Yes --> N_SetSHOULDUPDATESTATUSFlag_Node0_action N_SetSHOULDUPDATESTATUSFlag_Node0_action --> E_SetSHOULDUPDATESTATUSFlag S_SetSHOULDUPDATESTATUSFlag --> N_SetSHOULDUPDATESTATUSFlag_Node0 N_SetSHOULDUPDATESTATUSFlag_Node0 -- No --> E_SetSHOULDUPDATESTATUSFlag
File: GCX015E.cbl
GIVEN:
A manifest record is being processed
WHEN:
The manifest type code is P (Preliminary), Y (Yes/Confirmed), or S (Special)
THEN:
The system sets the SHOULD-UPDATE-STATUS flag to true
β Consolidated Acceptance Criteria
- The manifest type code is H (Hold) and the processing type is TRAIN → the system sets both SHOULD-DELETE-STATUS flag and SHOULD-UPDATE-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_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag(["Start Step"])
E_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag(["End Step"])
N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0{"The manifest type code is H Hold
and the processing type is TRAIN"}:::decision N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0_action["The system sets both
SHOULD-DELETE-STATUS flag and
SHOULD-UPDATE-STATUS flag to true"]:::main N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0 -- Yes --> N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0_action N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0_action --> E_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag S_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag --> N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0 N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0 -- No --> E_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag
and the processing type is TRAIN"}:::decision N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0_action["The system sets both
SHOULD-DELETE-STATUS flag and
SHOULD-UPDATE-STATUS flag to true"]:::main N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0 -- Yes --> N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0_action N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0_action --> E_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag S_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag --> N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0 N_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag_Node0 -- No --> E_SetSHOULDDELETESTATUSFlagandSetSHOULDUPDATESTATUSFlag
File: GCX015E.cbl
GIVEN:
A train manifest record is being processed
WHEN:
The manifest type code is H (Hold) and the processing type is TRAIN
THEN:
- The system sets both should-delete-status flag
- Should-update-status flag to true
β Consolidated Acceptance Criteria
- The manifest type code is H (Hold) and the processing type is CARGO → the system sets the SHOULD-NOT-UPDATE-STATUS flag to true
- The manifest type code is not P, Y, S, or H → the system sets the SHOULD-NOT-UPDATE-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_SetSHOULDNOTUPDATESTATUSFlag(["Start Step"])
E_SetSHOULDNOTUPDATESTATUSFlag(["End Step"])
N_SetSHOULDNOTUPDATESTATUSFlag_Node0{"The manifest type code is H Hold
and the processing type is CARGO"}:::decision N_SetSHOULDNOTUPDATESTATUSFlag_Node0_action["The system sets the
SHOULD-NOT-UPDATE-STATUS flag to
true"]:::main N_SetSHOULDNOTUPDATESTATUSFlag_Node0 -- Yes --> N_SetSHOULDNOTUPDATESTATUSFlag_Node0_action N_SetSHOULDNOTUPDATESTATUSFlag_Node0_action --> E_SetSHOULDNOTUPDATESTATUSFlag S_SetSHOULDNOTUPDATESTATUSFlag --> N_SetSHOULDNOTUPDATESTATUSFlag_Node0 N_SetSHOULDNOTUPDATESTATUSFlag_Node1{"The manifest type code is not P, Y,
S, or H"}:::decision N_SetSHOULDNOTUPDATESTATUSFlag_Node1_action["The system sets the
SHOULD-NOT-UPDATE-STATUS flag to
true"]:::main N_SetSHOULDNOTUPDATESTATUSFlag_Node1 -- Yes --> N_SetSHOULDNOTUPDATESTATUSFlag_Node1_action N_SetSHOULDNOTUPDATESTATUSFlag_Node1_action --> E_SetSHOULDNOTUPDATESTATUSFlag N_SetSHOULDNOTUPDATESTATUSFlag_Node0 -- No --> N_SetSHOULDNOTUPDATESTATUSFlag_Node1 N_SetSHOULDNOTUPDATESTATUSFlag_Node1 -- No --> E_SetSHOULDNOTUPDATESTATUSFlag
and the processing type is CARGO"}:::decision N_SetSHOULDNOTUPDATESTATUSFlag_Node0_action["The system sets the
SHOULD-NOT-UPDATE-STATUS flag to
true"]:::main N_SetSHOULDNOTUPDATESTATUSFlag_Node0 -- Yes --> N_SetSHOULDNOTUPDATESTATUSFlag_Node0_action N_SetSHOULDNOTUPDATESTATUSFlag_Node0_action --> E_SetSHOULDNOTUPDATESTATUSFlag S_SetSHOULDNOTUPDATESTATUSFlag --> N_SetSHOULDNOTUPDATESTATUSFlag_Node0 N_SetSHOULDNOTUPDATESTATUSFlag_Node1{"The manifest type code is not P, Y,
S, or H"}:::decision N_SetSHOULDNOTUPDATESTATUSFlag_Node1_action["The system sets the
SHOULD-NOT-UPDATE-STATUS flag to
true"]:::main N_SetSHOULDNOTUPDATESTATUSFlag_Node1 -- Yes --> N_SetSHOULDNOTUPDATESTATUSFlag_Node1_action N_SetSHOULDNOTUPDATESTATUSFlag_Node1_action --> E_SetSHOULDNOTUPDATESTATUSFlag N_SetSHOULDNOTUPDATESTATUSFlag_Node0 -- No --> N_SetSHOULDNOTUPDATESTATUSFlag_Node1 N_SetSHOULDNOTUPDATESTATUSFlag_Node1 -- No --> E_SetSHOULDNOTUPDATESTATUSFlag
File: GCX015E.cbl
GIVEN:
A cargo manifest record is being processed
WHEN:
The manifest type code is H (Hold) and the processing type is CARGO
THEN:
The system sets the SHOULD-NOT-UPDATE-STATUS flag to true
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A manifest record is being processed
WHEN:
The manifest type code is not P, Y, S, or H
THEN:
The system sets the SHOULD-NOT-UPDATE-STATUS flag to true
β Consolidated Acceptance Criteria
- The M10 segment manifest type code is 'P' (Primary), 'Y' (Yes), or 'S' (Supplemental) → the system sets the record to require 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_SetSHOULDUPDATESTATUS(["Start Step"])
E_SetSHOULDUPDATESTATUS(["End Step"])
N_SetSHOULDUPDATESTATUS_Node0{"The M10 segment manifest type code
is P Primary, Y Yes, or S
Supplemental"}:::decision N_SetSHOULDUPDATESTATUS_Node0_action["The system sets the record to
require status update"]:::main N_SetSHOULDUPDATESTATUS_Node0 -- Yes --> N_SetSHOULDUPDATESTATUS_Node0_action N_SetSHOULDUPDATESTATUS_Node0_action --> E_SetSHOULDUPDATESTATUS S_SetSHOULDUPDATESTATUS --> N_SetSHOULDUPDATESTATUS_Node0 N_SetSHOULDUPDATESTATUS_Node0 -- No --> E_SetSHOULDUPDATESTATUS
is P Primary, Y Yes, or S
Supplemental"}:::decision N_SetSHOULDUPDATESTATUS_Node0_action["The system sets the record to
require status update"]:::main N_SetSHOULDUPDATESTATUS_Node0 -- Yes --> N_SetSHOULDUPDATESTATUS_Node0_action N_SetSHOULDUPDATESTATUS_Node0_action --> E_SetSHOULDUPDATESTATUS S_SetSHOULDUPDATESTATUS --> N_SetSHOULDUPDATESTATUS_Node0 N_SetSHOULDUPDATESTATUS_Node0 -- No --> E_SetSHOULDUPDATESTATUS
File: GCX015E.cbl
GIVEN:
A customs manifest message is being processed
WHEN:
The M10 segment manifest type code is 'P' (Primary), 'Y' (Yes), or 'S' (Supplemental)
THEN:
The system sets the record to require status update
β Consolidated Acceptance Criteria
- The M10 segment manifest type code is 'H' (Hold) → the system sets the record to require both deletion and 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_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS(["Start Step"])
E_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS(["End Step"])
N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0{"The M10 segment manifest type code
is H Hold"}:::decision N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0_action["The system sets the record to
require both deletion and status
update"]:::main N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0 -- Yes --> N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0_action N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0_action --> E_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS S_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS --> N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0 N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0 -- No --> E_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS
is H Hold"}:::decision N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0_action["The system sets the record to
require both deletion and status
update"]:::main N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0 -- Yes --> N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0_action N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0_action --> E_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS S_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS --> N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0 N_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS_Node0 -- No --> E_SetSHOULDDELETESTATUSandSHOULDUPDATESTATUS
File: GCX015E.cbl
GIVEN:
A customs manifest message is being processed AND the processing type is determined as train
WHEN:
The M10 segment manifest type code is 'H' (Hold)
THEN:
- The system sets the record to require both deletion
- Status update
β Consolidated Acceptance Criteria
- The M10 segment manifest type code is 'H' (Hold) → the system sets the record to not require status update
- The M10 segment manifest type code is not 'P', 'Y', 'S', or 'H' → the system sets the record to not require 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_SetSHOULDNOTUPDATESTATUS(["Start Step"])
E_SetSHOULDNOTUPDATESTATUS(["End Step"])
N_SetSHOULDNOTUPDATESTATUS_Node0{"The M10 segment manifest type code
is H Hold"}:::decision N_SetSHOULDNOTUPDATESTATUS_Node0_action["The system sets the record to not
require status update"]:::main N_SetSHOULDNOTUPDATESTATUS_Node0 -- Yes --> N_SetSHOULDNOTUPDATESTATUS_Node0_action N_SetSHOULDNOTUPDATESTATUS_Node0_action --> E_SetSHOULDNOTUPDATESTATUS S_SetSHOULDNOTUPDATESTATUS --> N_SetSHOULDNOTUPDATESTATUS_Node0 N_SetSHOULDNOTUPDATESTATUS_Node1{"The M10 segment manifest type code
is not P , Y , S , or H"}:::decision N_SetSHOULDNOTUPDATESTATUS_Node1_action["The system sets the record to not
require status update"]:::main N_SetSHOULDNOTUPDATESTATUS_Node1 -- Yes --> N_SetSHOULDNOTUPDATESTATUS_Node1_action N_SetSHOULDNOTUPDATESTATUS_Node1_action --> E_SetSHOULDNOTUPDATESTATUS N_SetSHOULDNOTUPDATESTATUS_Node0 -- No --> N_SetSHOULDNOTUPDATESTATUS_Node1 N_SetSHOULDNOTUPDATESTATUS_Node1 -- No --> E_SetSHOULDNOTUPDATESTATUS
is H Hold"}:::decision N_SetSHOULDNOTUPDATESTATUS_Node0_action["The system sets the record to not
require status update"]:::main N_SetSHOULDNOTUPDATESTATUS_Node0 -- Yes --> N_SetSHOULDNOTUPDATESTATUS_Node0_action N_SetSHOULDNOTUPDATESTATUS_Node0_action --> E_SetSHOULDNOTUPDATESTATUS S_SetSHOULDNOTUPDATESTATUS --> N_SetSHOULDNOTUPDATESTATUS_Node0 N_SetSHOULDNOTUPDATESTATUS_Node1{"The M10 segment manifest type code
is not P , Y , S , or H"}:::decision N_SetSHOULDNOTUPDATESTATUS_Node1_action["The system sets the record to not
require status update"]:::main N_SetSHOULDNOTUPDATESTATUS_Node1 -- Yes --> N_SetSHOULDNOTUPDATESTATUS_Node1_action N_SetSHOULDNOTUPDATESTATUS_Node1_action --> E_SetSHOULDNOTUPDATESTATUS N_SetSHOULDNOTUPDATESTATUS_Node0 -- No --> N_SetSHOULDNOTUPDATESTATUS_Node1 N_SetSHOULDNOTUPDATESTATUS_Node1 -- No --> E_SetSHOULDNOTUPDATESTATUS
File: GCX015E.cbl
GIVEN:
A customs manifest message is being processed AND the processing type is determined as cargo
WHEN:
The M10 segment manifest type code is 'H' (Hold)
THEN:
The system sets the record to not require status update
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A customs manifest message is being processed
WHEN:
The M10 segment manifest type code is not 'P', 'Y', 'S', or 'H'
THEN:
The system sets the record to not require status update
β Consolidated Acceptance Criteria
- The reference number contains the text 'TRAIN' → the system sets the processing type as TRAIN
- The reference number contains the text 'CARGO' → the system sets the processing type as 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_ReferenceNumberType(["Start Step"])
E_ReferenceNumberType(["End Step"])
N_ReferenceNumberType_Node0{"The reference number contains the
text TRAIN"}:::decision N_ReferenceNumberType_Node0_action["The system sets the processing type
as TRAIN"]:::main N_ReferenceNumberType_Node0 -- Yes --> N_ReferenceNumberType_Node0_action N_ReferenceNumberType_Node0_action --> E_ReferenceNumberType S_ReferenceNumberType --> N_ReferenceNumberType_Node0 N_ReferenceNumberType_Node1{"The reference number contains the
text CARGO"}:::decision N_ReferenceNumberType_Node1_action["The system sets the processing type
as CARGO"]:::main N_ReferenceNumberType_Node1 -- Yes --> N_ReferenceNumberType_Node1_action N_ReferenceNumberType_Node1_action --> E_ReferenceNumberType N_ReferenceNumberType_Node0 -- No --> N_ReferenceNumberType_Node1 N_ReferenceNumberType_Node1 -- No --> E_ReferenceNumberType
text TRAIN"}:::decision N_ReferenceNumberType_Node0_action["The system sets the processing type
as TRAIN"]:::main N_ReferenceNumberType_Node0 -- Yes --> N_ReferenceNumberType_Node0_action N_ReferenceNumberType_Node0_action --> E_ReferenceNumberType S_ReferenceNumberType --> N_ReferenceNumberType_Node0 N_ReferenceNumberType_Node1{"The reference number contains the
text CARGO"}:::decision N_ReferenceNumberType_Node1_action["The system sets the processing type
as CARGO"]:::main N_ReferenceNumberType_Node1 -- Yes --> N_ReferenceNumberType_Node1_action N_ReferenceNumberType_Node1_action --> E_ReferenceNumberType N_ReferenceNumberType_Node0 -- No --> N_ReferenceNumberType_Node1 N_ReferenceNumberType_Node1 -- No --> E_ReferenceNumberType
File: GCX015E.cbl
GIVEN:
An M10 segment is being processed with a reference number in M10-12-REF-NUM field
WHEN:
The reference number contains the text 'TRAIN'
THEN:
The system sets the processing type as TRAIN
File: GCX015E.cbl
GIVEN:
An M10 segment is being processed with a reference number in M10-12-REF-NUM field
WHEN:
The reference number contains the text 'CARGO'
THEN:
The system sets the processing type as CARGO
β Consolidated Acceptance Criteria
- The manifest type code is 'P' or 'Y' or 'S' → the system sets SHOULD-UPDATE-STATUS 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_SetUPDATEStatusDecision(["Start Step"])
E_SetUPDATEStatusDecision(["End Step"])
N_SetUPDATEStatusDecision_Node0{"The manifest type code is P or Y or
S"}:::decision N_SetUPDATEStatusDecision_Node0_action["The system sets
SHOULD-UPDATE-STATUS to true"]:::main N_SetUPDATEStatusDecision_Node0 -- Yes --> N_SetUPDATEStatusDecision_Node0_action N_SetUPDATEStatusDecision_Node0_action --> E_SetUPDATEStatusDecision S_SetUPDATEStatusDecision --> N_SetUPDATEStatusDecision_Node0 N_SetUPDATEStatusDecision_Node0 -- No --> E_SetUPDATEStatusDecision
S"}:::decision N_SetUPDATEStatusDecision_Node0_action["The system sets
SHOULD-UPDATE-STATUS to true"]:::main N_SetUPDATEStatusDecision_Node0 -- Yes --> N_SetUPDATEStatusDecision_Node0_action N_SetUPDATEStatusDecision_Node0_action --> E_SetUPDATEStatusDecision S_SetUPDATEStatusDecision --> N_SetUPDATEStatusDecision_Node0 N_SetUPDATEStatusDecision_Node0 -- No --> E_SetUPDATEStatusDecision
File: GCX015E.cbl
GIVEN:
An M10 segment is being processed with a manifest type code in M10-09-MANIFEST-TYP-CDE field
WHEN:
The manifest type code is 'P' or 'Y' or 'S'
THEN:
The system sets SHOULD-UPDATE-STATUS to true
β Consolidated Acceptance Criteria
- The manifest type code is 'H' and WS-TRAIN is true → the system sets both SHOULD-DELETE-STATUS and SHOULD-UPDATE-STATUS 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_SetDELETEStatusDecision(["Start Step"])
E_SetDELETEStatusDecision(["End Step"])
N_SetDELETEStatusDecision_Node0{"The manifest type code is H and
WS-TRAIN is true"}:::decision N_SetDELETEStatusDecision_Node0_action["The system sets both
SHOULD-DELETE-STATUS and
SHOULD-UPDATE-STATUS to true"]:::main N_SetDELETEStatusDecision_Node0 -- Yes --> N_SetDELETEStatusDecision_Node0_action N_SetDELETEStatusDecision_Node0_action --> E_SetDELETEStatusDecision S_SetDELETEStatusDecision --> N_SetDELETEStatusDecision_Node0 N_SetDELETEStatusDecision_Node0 -- No --> E_SetDELETEStatusDecision
WS-TRAIN is true"}:::decision N_SetDELETEStatusDecision_Node0_action["The system sets both
SHOULD-DELETE-STATUS and
SHOULD-UPDATE-STATUS to true"]:::main N_SetDELETEStatusDecision_Node0 -- Yes --> N_SetDELETEStatusDecision_Node0_action N_SetDELETEStatusDecision_Node0_action --> E_SetDELETEStatusDecision S_SetDELETEStatusDecision --> N_SetDELETEStatusDecision_Node0 N_SetDELETEStatusDecision_Node0 -- No --> E_SetDELETEStatusDecision
File: GCX015E.cbl
GIVEN:
An M10 segment is being processed with manifest type code 'H' and the processing type is TRAIN
WHEN:
The manifest type code is 'H' and WS-TRAIN is true
THEN:
- The system sets both should-delete-status
- Should-update-status to true
β Consolidated Acceptance Criteria
- The manifest type code is 'H' and WS-TRAIN is false → the system sets SHOULD-NOT-UPDATE-STATUS to true
- The manifest type code is not 'P', 'Y', 'S', or 'H' → the system sets SHOULD-NOT-UPDATE-STATUS 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_SetNOUPDATEStatusDecision(["Start Step"])
E_SetNOUPDATEStatusDecision(["End Step"])
N_SetNOUPDATEStatusDecision_Node0{"The manifest type code is H and
WS-TRAIN is false"}:::decision N_SetNOUPDATEStatusDecision_Node0_action["The system sets
SHOULD-NOT-UPDATE-STATUS to true"]:::main N_SetNOUPDATEStatusDecision_Node0 -- Yes --> N_SetNOUPDATEStatusDecision_Node0_action N_SetNOUPDATEStatusDecision_Node0_action --> E_SetNOUPDATEStatusDecision S_SetNOUPDATEStatusDecision --> N_SetNOUPDATEStatusDecision_Node0 N_SetNOUPDATEStatusDecision_Node1{"The manifest type code is not P , Y
, S , or H"}:::decision N_SetNOUPDATEStatusDecision_Node1_action["The system sets
SHOULD-NOT-UPDATE-STATUS to true"]:::main N_SetNOUPDATEStatusDecision_Node1 -- Yes --> N_SetNOUPDATEStatusDecision_Node1_action N_SetNOUPDATEStatusDecision_Node1_action --> E_SetNOUPDATEStatusDecision N_SetNOUPDATEStatusDecision_Node0 -- No --> N_SetNOUPDATEStatusDecision_Node1 N_SetNOUPDATEStatusDecision_Node1 -- No --> E_SetNOUPDATEStatusDecision
WS-TRAIN is false"}:::decision N_SetNOUPDATEStatusDecision_Node0_action["The system sets
SHOULD-NOT-UPDATE-STATUS to true"]:::main N_SetNOUPDATEStatusDecision_Node0 -- Yes --> N_SetNOUPDATEStatusDecision_Node0_action N_SetNOUPDATEStatusDecision_Node0_action --> E_SetNOUPDATEStatusDecision S_SetNOUPDATEStatusDecision --> N_SetNOUPDATEStatusDecision_Node0 N_SetNOUPDATEStatusDecision_Node1{"The manifest type code is not P , Y
, S , or H"}:::decision N_SetNOUPDATEStatusDecision_Node1_action["The system sets
SHOULD-NOT-UPDATE-STATUS to true"]:::main N_SetNOUPDATEStatusDecision_Node1 -- Yes --> N_SetNOUPDATEStatusDecision_Node1_action N_SetNOUPDATEStatusDecision_Node1_action --> E_SetNOUPDATEStatusDecision N_SetNOUPDATEStatusDecision_Node0 -- No --> N_SetNOUPDATEStatusDecision_Node1 N_SetNOUPDATEStatusDecision_Node1 -- No --> E_SetNOUPDATEStatusDecision
File: GCX015E.cbl
GIVEN:
An M10 segment is being processed with manifest type code 'H' and the processing type is CARGO
WHEN:
The manifest type code is 'H' and WS-TRAIN is false
THEN:
The system sets SHOULD-NOT-UPDATE-STATUS to true
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
An M10 segment is being processed with a manifest type code in M10-09-MANIFEST-TYP-CDE field
WHEN:
The manifest type code is not 'P', 'Y', 'S', or 'H'
THEN:
The system sets SHOULD-NOT-UPDATE-STATUS to true
β Consolidated Acceptance Criteria
- All M10 segment processing is complete → the system sets WS-M10-SEGMENT-FOUND 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_MarkM10SegmentasFound(["Start Step"])
E_MarkM10SegmentasFound(["End Step"])
N_MarkM10SegmentasFound_Node0{"All M10 segment processing is
complete"}:::decision N_MarkM10SegmentasFound_Node0_action["The system sets
WS-M10-SEGMENT-FOUND to true"]:::main N_MarkM10SegmentasFound_Node0 -- Yes --> N_MarkM10SegmentasFound_Node0_action N_MarkM10SegmentasFound_Node0_action --> E_MarkM10SegmentasFound S_MarkM10SegmentasFound --> N_MarkM10SegmentasFound_Node0 N_MarkM10SegmentasFound_Node0 -- No --> E_MarkM10SegmentasFound
complete"}:::decision N_MarkM10SegmentasFound_Node0_action["The system sets
WS-M10-SEGMENT-FOUND to true"]:::main N_MarkM10SegmentasFound_Node0 -- Yes --> N_MarkM10SegmentasFound_Node0_action N_MarkM10SegmentasFound_Node0_action --> E_MarkM10SegmentasFound S_MarkM10SegmentasFound --> N_MarkM10SegmentasFound_Node0 N_MarkM10SegmentasFound_Node0 -- No --> E_MarkM10SegmentasFound
File: GCX015E.cbl
GIVEN:
An M10 segment has been processed successfully
WHEN:
All M10 segment processing is complete
THEN:
The system sets WS-M10-SEGMENT-FOUND to true
β Consolidated Acceptance Criteria
- The table ID equals 'P4 ' (P4 with trailing space) → the system sets P4 segment found flag to true and extracts the P4 segment data from the message table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_P4SegmentFoundinMessage(["Start Step"])
E_P4SegmentFoundinMessage(["End Step"])
N_P4SegmentFoundinMessage_Node0{"The table ID equals P4 P4 with
trailing space"}:::decision N_P4SegmentFoundinMessage_Node0_action["The system sets P4 segment found
flag to true and extracts the P4
segment data from the message table
entry"]:::main N_P4SegmentFoundinMessage_Node0 -- Yes --> N_P4SegmentFoundinMessage_Node0_action N_P4SegmentFoundinMessage_Node0_action --> E_P4SegmentFoundinMessage S_P4SegmentFoundinMessage --> N_P4SegmentFoundinMessage_Node0 N_P4SegmentFoundinMessage_Node0 -- No --> E_P4SegmentFoundinMessage
trailing space"}:::decision N_P4SegmentFoundinMessage_Node0_action["The system sets P4 segment found
flag to true and extracts the P4
segment data from the message table
entry"]:::main N_P4SegmentFoundinMessage_Node0 -- Yes --> N_P4SegmentFoundinMessage_Node0_action N_P4SegmentFoundinMessage_Node0_action --> E_P4SegmentFoundinMessage S_P4SegmentFoundinMessage --> N_P4SegmentFoundinMessage_Node0 N_P4SegmentFoundinMessage_Node0 -- No --> E_P4SegmentFoundinMessage
File: GCX015E.cbl
GIVEN:
A message table entry is being processed
WHEN:
The table ID equals 'P4 ' (P4 with trailing space)
THEN:
- The system sets p4 segment found flag to true
- Extracts the p4 segment data from the message table entry
β Consolidated Acceptance Criteria
- The P4 segment processing is initiated → the system moves the complete message table entry data to the P4 segment structure 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_ExtractP4SegmentDatafromMessageTable(["Start Step"])
E_ExtractP4SegmentDatafromMessageTable(["End Step"])
N_ExtractP4SegmentDatafromMessageTable_Node0{"The P4 segment processing is
initiated"}:::decision N_ExtractP4SegmentDatafromMessageTable_Node0_action["The system moves the complete
message table entry data to the P4
segment structure for processing"]:::main N_ExtractP4SegmentDatafromMessageTable_Node0 -- Yes --> N_ExtractP4SegmentDatafromMessageTable_Node0_action N_ExtractP4SegmentDatafromMessageTable_Node0_action --> E_ExtractP4SegmentDatafromMessageTable S_ExtractP4SegmentDatafromMessageTable --> N_ExtractP4SegmentDatafromMessageTable_Node0 N_ExtractP4SegmentDatafromMessageTable_Node0 -- No --> E_ExtractP4SegmentDatafromMessageTable
initiated"}:::decision N_ExtractP4SegmentDatafromMessageTable_Node0_action["The system moves the complete
message table entry data to the P4
segment structure for processing"]:::main N_ExtractP4SegmentDatafromMessageTable_Node0 -- Yes --> N_ExtractP4SegmentDatafromMessageTable_Node0_action N_ExtractP4SegmentDatafromMessageTable_Node0_action --> E_ExtractP4SegmentDatafromMessageTable S_ExtractP4SegmentDatafromMessageTable --> N_ExtractP4SegmentDatafromMessageTable_Node0 N_ExtractP4SegmentDatafromMessageTable_Node0 -- No --> E_ExtractP4SegmentDatafromMessageTable
File: GCX015E.cbl
GIVEN:
A P4 segment has been identified in the message table
WHEN:
The P4 segment processing is initiated
THEN:
The system moves the complete message table entry data to the P4 segment structure for processing
β Consolidated Acceptance Criteria
- The P4 segment data extraction begins → the system sets the P4 segment found indicator to true to track successful P4 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_SetP4SegmentFoundFlag(["Start Step"])
E_SetP4SegmentFoundFlag(["End Step"])
N_SetP4SegmentFoundFlag_Node0{"The P4 segment data extraction
begins"}:::decision N_SetP4SegmentFoundFlag_Node0_action["The system sets the P4 segment
found indicator to true to track
successful P4 segment processing"]:::main N_SetP4SegmentFoundFlag_Node0 -- Yes --> N_SetP4SegmentFoundFlag_Node0_action N_SetP4SegmentFoundFlag_Node0_action --> E_SetP4SegmentFoundFlag S_SetP4SegmentFoundFlag --> N_SetP4SegmentFoundFlag_Node0 N_SetP4SegmentFoundFlag_Node0 -- No --> E_SetP4SegmentFoundFlag
begins"}:::decision N_SetP4SegmentFoundFlag_Node0_action["The system sets the P4 segment
found indicator to true to track
successful P4 segment processing"]:::main N_SetP4SegmentFoundFlag_Node0 -- Yes --> N_SetP4SegmentFoundFlag_Node0_action N_SetP4SegmentFoundFlag_Node0_action --> E_SetP4SegmentFoundFlag S_SetP4SegmentFoundFlag --> N_SetP4SegmentFoundFlag_Node0 N_SetP4SegmentFoundFlag_Node0 -- No --> E_SetP4SegmentFoundFlag
File: GCX015E.cbl
GIVEN:
A P4 segment is being processed from the message table
WHEN:
The P4 segment data extraction begins
THEN:
The system sets the P4 segment found indicator to true to track successful P4 segment processing
β Consolidated Acceptance Criteria
- The segment identifier equals 'N10' → the system extracts the line release number from position 09 of the N10 segment and stores it in working storage for later use
- The segment identifier equals 'N10' → the system extracts the line release number from position 09 of the N10 segment and stores it in the hold area for subsequent 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_ExtractLineReleaseNumberfromPosition09(["Start Step"])
E_ExtractLineReleaseNumberfromPosition09(["End Step"])
N_ExtractLineReleaseNumberfromPosition09_Node0{"The segment identifier equals N10"}:::decision
N_ExtractLineReleaseNumberfromPosition09_Node0_action["The system extracts the line
release number from position 09 of
the N10 segment and stores it in
working storage for later use"]:::main N_ExtractLineReleaseNumberfromPosition09_Node0 -- Yes --> N_ExtractLineReleaseNumberfromPosition09_Node0_action N_ExtractLineReleaseNumberfromPosition09_Node0_action --> E_ExtractLineReleaseNumberfromPosition09 S_ExtractLineReleaseNumberfromPosition09 --> N_ExtractLineReleaseNumberfromPosition09_Node0 N_ExtractLineReleaseNumberfromPosition09_Node1{"The segment identifier equals N10"}:::decision N_ExtractLineReleaseNumberfromPosition09_Node1_action["The system extracts the line
release number from position 09 of
the N10 segment and stores it in the
hold area for subsequent customs
processing"]:::main N_ExtractLineReleaseNumberfromPosition09_Node1 -- Yes --> N_ExtractLineReleaseNumberfromPosition09_Node1_action N_ExtractLineReleaseNumberfromPosition09_Node1_action --> E_ExtractLineReleaseNumberfromPosition09 N_ExtractLineReleaseNumberfromPosition09_Node0 -- No --> N_ExtractLineReleaseNumberfromPosition09_Node1 N_ExtractLineReleaseNumberfromPosition09_Node1 -- No --> E_ExtractLineReleaseNumberfromPosition09
release number from position 09 of
the N10 segment and stores it in
working storage for later use"]:::main N_ExtractLineReleaseNumberfromPosition09_Node0 -- Yes --> N_ExtractLineReleaseNumberfromPosition09_Node0_action N_ExtractLineReleaseNumberfromPosition09_Node0_action --> E_ExtractLineReleaseNumberfromPosition09 S_ExtractLineReleaseNumberfromPosition09 --> N_ExtractLineReleaseNumberfromPosition09_Node0 N_ExtractLineReleaseNumberfromPosition09_Node1{"The segment identifier equals N10"}:::decision N_ExtractLineReleaseNumberfromPosition09_Node1_action["The system extracts the line
release number from position 09 of
the N10 segment and stores it in the
hold area for subsequent customs
processing"]:::main N_ExtractLineReleaseNumberfromPosition09_Node1 -- Yes --> N_ExtractLineReleaseNumberfromPosition09_Node1_action N_ExtractLineReleaseNumberfromPosition09_Node1_action --> E_ExtractLineReleaseNumberfromPosition09 N_ExtractLineReleaseNumberfromPosition09_Node0 -- No --> N_ExtractLineReleaseNumberfromPosition09_Node1 N_ExtractLineReleaseNumberfromPosition09_Node1 -- No --> E_ExtractLineReleaseNumberfromPosition09
File: GCX015E.cbl
GIVEN:
A message segment is being processed during message iteration
WHEN:
The segment identifier equals 'N10'
THEN:
- The system extracts the line release number from position 09 of the n10 segment
- Stores it in working storage for later use
File: GCX015E.cbl
GIVEN:
A message segment is being processed during customs transaction handling
WHEN:
The segment identifier equals 'N10'
THEN:
- The system extracts the line release number from position 09 of the n10 segment
- Stores it in the hold area for subsequent customs processing
β Consolidated Acceptance Criteria
- If the K1-02-MSG-NUMBER field → the message is categorized as Information (000), Fatal (009,017,038,040,291,630), Warning (631,632,633,634,695,696,697,698,699), or Unknown (all other 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_MessageNumberCategory(["Start Step"])
E_MessageNumberCategory(["End Step"])
N_MessageNumberCategory_Node0{"The system evaluates the
K1-02-MSG-NUMBER field"}:::decision N_MessageNumberCategory_Node0_action["The message is categorized as
Information 000, Fatal
009,017,038,040,291,630, Warning
631,632,633,634,695,696,697,698,699,
or Unknown all other numbers"]:::main N_MessageNumberCategory_Node0 -- Yes --> N_MessageNumberCategory_Node0_action N_MessageNumberCategory_Node0_action --> E_MessageNumberCategory S_MessageNumberCategory --> N_MessageNumberCategory_Node0 N_MessageNumberCategory_Node0 -- No --> E_MessageNumberCategory
K1-02-MSG-NUMBER field"}:::decision N_MessageNumberCategory_Node0_action["The message is categorized as
Information 000, Fatal
009,017,038,040,291,630, Warning
631,632,633,634,695,696,697,698,699,
or Unknown all other numbers"]:::main N_MessageNumberCategory_Node0 -- Yes --> N_MessageNumberCategory_Node0_action N_MessageNumberCategory_Node0_action --> E_MessageNumberCategory S_MessageNumberCategory --> N_MessageNumberCategory_Node0 N_MessageNumberCategory_Node0 -- No --> E_MessageNumberCategory
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed with a specific message number
WHEN:
The system evaluates the K1-02-MSG-NUMBER field
THEN:
The message is categorized as Information (000), Fatal (009,017,038,040,291,630), Warning (631,632,633,634,695,696,697,698,699), or Unknown (all other numbers)
β Consolidated Acceptance Criteria
- The message number equals '000' → the system sets message severity to Information (MSG-SEV-I) and sets acknowledgment status (WS-ACK-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_SetInformationSeverityMessage000(["Start Step"])
E_SetInformationSeverityMessage000(["End Step"])
N_SetInformationSeverityMessage000_Node0{"The message number equals 000"}:::decision
N_SetInformationSeverityMessage000_Node0_action["The system sets message severity to
Information MSG-SEV-I and sets
acknowledgment status WS-ACK-STATUS"]:::main N_SetInformationSeverityMessage000_Node0 -- Yes --> N_SetInformationSeverityMessage000_Node0_action N_SetInformationSeverityMessage000_Node0_action --> E_SetInformationSeverityMessage000 S_SetInformationSeverityMessage000 --> N_SetInformationSeverityMessage000_Node0 N_SetInformationSeverityMessage000_Node0 -- No --> E_SetInformationSeverityMessage000
Information MSG-SEV-I and sets
acknowledgment status WS-ACK-STATUS"]:::main N_SetInformationSeverityMessage000_Node0 -- Yes --> N_SetInformationSeverityMessage000_Node0_action N_SetInformationSeverityMessage000_Node0_action --> E_SetInformationSeverityMessage000 S_SetInformationSeverityMessage000 --> N_SetInformationSeverityMessage000_Node0 N_SetInformationSeverityMessage000_Node0 -- No --> E_SetInformationSeverityMessage000
File: GCX015E.cbl
GIVEN:
A K1 message with message number '000' is being processed
WHEN:
The message number equals '000'
THEN:
The system sets message severity to Information (MSG-SEV-I) and sets acknowledgment status (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The message number is '009':
- '017'
- '038'
- '040'
- '291'
- '630'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFatalSeverityMessages009017038040291630(["Start Step"])
E_SetFatalSeverityMessages009017038040291630(["End Step"])
N_SetFatalSeverityMessages009017038040291630_Node0{"The message number is 009 OR 017 OR
038 OR 040 OR 291 OR 630"}:::decision N_SetFatalSeverityMessages009017038040291630_Node0_action["The system sets message severity to
Fatal MSG-SEV-F and sets error
status WS-ERROR-STATUS"]:::main N_SetFatalSeverityMessages009017038040291630_Node0 -- Yes --> N_SetFatalSeverityMessages009017038040291630_Node0_action N_SetFatalSeverityMessages009017038040291630_Node0_action --> E_SetFatalSeverityMessages009017038040291630 S_SetFatalSeverityMessages009017038040291630 --> N_SetFatalSeverityMessages009017038040291630_Node0 N_SetFatalSeverityMessages009017038040291630_Node0 -- No --> E_SetFatalSeverityMessages009017038040291630
038 OR 040 OR 291 OR 630"}:::decision N_SetFatalSeverityMessages009017038040291630_Node0_action["The system sets message severity to
Fatal MSG-SEV-F and sets error
status WS-ERROR-STATUS"]:::main N_SetFatalSeverityMessages009017038040291630_Node0 -- Yes --> N_SetFatalSeverityMessages009017038040291630_Node0_action N_SetFatalSeverityMessages009017038040291630_Node0_action --> E_SetFatalSeverityMessages009017038040291630 S_SetFatalSeverityMessages009017038040291630 --> N_SetFatalSeverityMessages009017038040291630_Node0 N_SetFatalSeverityMessages009017038040291630_Node0 -- No --> E_SetFatalSeverityMessages009017038040291630
File: GCX015E.cbl
GIVEN:
A K1 message with message number in the critical error range is being processed
WHEN:
The message number is '009' OR '017' OR '038' OR '040' OR '291' OR '630'
THEN:
The system sets message severity to Fatal (MSG-SEV-F) and sets error status (WS-ERROR-STATUS)
β Consolidated Acceptance Criteria
- The message number is '631':
- '632'
- '633'
- '634'
- '695'
- '696'
- '697'
- '698'
- '699'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWarningSeverityMessages631632633634695696697698699(["Start Step"])
E_SetWarningSeverityMessages631632633634695696697698699(["End Step"])
N_SetWarningSeverityMessages631632633634695696697698699_Node0{"The message number is 631 OR 632 OR
633 OR 634 OR 695 OR 696 OR 697 OR
698 OR 699"}:::decision N_SetWarningSeverityMessages631632633634695696697698699_Node0_action["The system sets message severity to
Warning MSG-SEV-W and sets
acknowledgment status WS-ACK-STATUS"]:::main N_SetWarningSeverityMessages631632633634695696697698699_Node0 -- Yes --> N_SetWarningSeverityMessages631632633634695696697698699_Node0_action N_SetWarningSeverityMessages631632633634695696697698699_Node0_action --> E_SetWarningSeverityMessages631632633634695696697698699 S_SetWarningSeverityMessages631632633634695696697698699 --> N_SetWarningSeverityMessages631632633634695696697698699_Node0 N_SetWarningSeverityMessages631632633634695696697698699_Node0 -- No --> E_SetWarningSeverityMessages631632633634695696697698699
633 OR 634 OR 695 OR 696 OR 697 OR
698 OR 699"}:::decision N_SetWarningSeverityMessages631632633634695696697698699_Node0_action["The system sets message severity to
Warning MSG-SEV-W and sets
acknowledgment status WS-ACK-STATUS"]:::main N_SetWarningSeverityMessages631632633634695696697698699_Node0 -- Yes --> N_SetWarningSeverityMessages631632633634695696697698699_Node0_action N_SetWarningSeverityMessages631632633634695696697698699_Node0_action --> E_SetWarningSeverityMessages631632633634695696697698699 S_SetWarningSeverityMessages631632633634695696697698699 --> N_SetWarningSeverityMessages631632633634695696697698699_Node0 N_SetWarningSeverityMessages631632633634695696697698699_Node0 -- No --> E_SetWarningSeverityMessages631632633634695696697698699
File: GCX015E.cbl
GIVEN:
A K1 message with message number in the warning range is being processed
WHEN:
The message number is '631' OR '632' OR '633' OR '634' OR '695' OR '696' OR '697' OR '698' OR '699'
THEN:
The system sets message severity to Warning (MSG-SEV-W) and sets acknowledgment status (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The message number is not '000', not in fatal range (009,017,038,040,291,630), and not in warning range (631,632,633,634,695,696,697,698,699) → the system sets message severity to Unknown (MSG-SEV-U) and sets acknowledgment status (WS-ACK-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_SetUnknownSeverityAllOtherMessages(["Start Step"])
E_SetUnknownSeverityAllOtherMessages(["End Step"])
N_SetUnknownSeverityAllOtherMessages_Node0{"The message number is not 000 , not
in fatal range
009,017,038,040,291,630, and not in
warning range
631,632,633,634,695,696,697,698,699"}:::decision N_SetUnknownSeverityAllOtherMessages_Node0_action["The system sets message severity to
Unknown MSG-SEV-U and sets
acknowledgment status WS-ACK-STATUS"]:::main N_SetUnknownSeverityAllOtherMessages_Node0 -- Yes --> N_SetUnknownSeverityAllOtherMessages_Node0_action N_SetUnknownSeverityAllOtherMessages_Node0_action --> E_SetUnknownSeverityAllOtherMessages S_SetUnknownSeverityAllOtherMessages --> N_SetUnknownSeverityAllOtherMessages_Node0 N_SetUnknownSeverityAllOtherMessages_Node0 -- No --> E_SetUnknownSeverityAllOtherMessages
in fatal range
009,017,038,040,291,630, and not in
warning range
631,632,633,634,695,696,697,698,699"}:::decision N_SetUnknownSeverityAllOtherMessages_Node0_action["The system sets message severity to
Unknown MSG-SEV-U and sets
acknowledgment status WS-ACK-STATUS"]:::main N_SetUnknownSeverityAllOtherMessages_Node0 -- Yes --> N_SetUnknownSeverityAllOtherMessages_Node0_action N_SetUnknownSeverityAllOtherMessages_Node0_action --> E_SetUnknownSeverityAllOtherMessages S_SetUnknownSeverityAllOtherMessages --> N_SetUnknownSeverityAllOtherMessages_Node0 N_SetUnknownSeverityAllOtherMessages_Node0 -- No --> E_SetUnknownSeverityAllOtherMessages
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message with a message number not in any predefined category is being processed
WHEN:
The message number is not '000', not in fatal range (009,017,038,040,291,630), and not in warning range (631,632,633,634,695,696,697,698,699)
THEN:
The system sets message severity to Unknown (MSG-SEV-U) and sets acknowledgment status (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The message number is '695':
- '697'
- '699'
- The K1-02-MSG-NUMBER equals '695':
- '697'
- '699'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WarningMessage695697or699(["Start Step"])
E_WarningMessage695697or699(["End Step"])
N_WarningMessage695697or699_Node0{"The message number is 695 OR 697 OR
699"}:::decision N_WarningMessage695697or699_Node0_action["The system triggers email warning
notification process to freight
forwarder"]:::main N_WarningMessage695697or699_Node0 -- Yes --> N_WarningMessage695697or699_Node0_action N_WarningMessage695697or699_Node0_action --> E_WarningMessage695697or699 S_WarningMessage695697or699 --> N_WarningMessage695697or699_Node0 N_WarningMessage695697or699_Node1{"The K1-02-MSG-NUMBER equals 695 OR
697 OR 699"}:::decision N_WarningMessage695697or699_Node1_action["Trigger email warning process to
freight forwarder
C100-SEND-EMAIL-WARNING"]:::main N_WarningMessage695697or699_Node1 -- Yes --> N_WarningMessage695697or699_Node1_action N_WarningMessage695697or699_Node1_action --> E_WarningMessage695697or699 N_WarningMessage695697or699_Node0 -- No --> N_WarningMessage695697or699_Node1 N_WarningMessage695697or699_Node1 -- No --> E_WarningMessage695697or699
699"}:::decision N_WarningMessage695697or699_Node0_action["The system triggers email warning
notification process to freight
forwarder"]:::main N_WarningMessage695697or699_Node0 -- Yes --> N_WarningMessage695697or699_Node0_action N_WarningMessage695697or699_Node0_action --> E_WarningMessage695697or699 S_WarningMessage695697or699 --> N_WarningMessage695697or699_Node0 N_WarningMessage695697or699_Node1{"The K1-02-MSG-NUMBER equals 695 OR
697 OR 699"}:::decision N_WarningMessage695697or699_Node1_action["Trigger email warning process to
freight forwarder
C100-SEND-EMAIL-WARNING"]:::main N_WarningMessage695697or699_Node1 -- Yes --> N_WarningMessage695697or699_Node1_action N_WarningMessage695697or699_Node1_action --> E_WarningMessage695697or699 N_WarningMessage695697or699_Node0 -- No --> N_WarningMessage695697or699_Node1 N_WarningMessage695697or699_Node1 -- No --> E_WarningMessage695697or699
File: GCX015E.cbl
GIVEN:
A K1 message has been categorized as warning severity
WHEN:
The message number is '695' OR '697' OR '699'
THEN:
The system triggers email warning notification process to freight forwarder
File: GCX015E.cbl
GIVEN:
A K1 message segment has been classified as warning severity
WHEN:
The K1-02-MSG-NUMBER equals '695' OR '697' OR '699'
THEN:
Trigger email warning process to freight forwarder (C100-SEND-EMAIL-WARNING)
β Consolidated Acceptance Criteria
- The email warning process is triggered → the system calls email warning procedure (C100-SEND-EMAIL-WARNING) to notify freight forwarder with shipment details and 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_SendEmailWarningtoFreightForwarder(["Start Step"])
E_SendEmailWarningtoFreightForwarder(["End Step"])
N_SendEmailWarningtoFreightForwarder_Node0{"The email warning process is
triggered"}:::decision N_SendEmailWarningtoFreightForwarder_Node0_action["The system calls email warning
procedure C100-SEND-EMAIL-WARNING to
notify freight forwarder with
shipment details and warning message"]:::main N_SendEmailWarningtoFreightForwarder_Node0 -- Yes --> N_SendEmailWarningtoFreightForwarder_Node0_action N_SendEmailWarningtoFreightForwarder_Node0_action --> E_SendEmailWarningtoFreightForwarder S_SendEmailWarningtoFreightForwarder --> N_SendEmailWarningtoFreightForwarder_Node0 N_SendEmailWarningtoFreightForwarder_Node0 -- No --> E_SendEmailWarningtoFreightForwarder
triggered"}:::decision N_SendEmailWarningtoFreightForwarder_Node0_action["The system calls email warning
procedure C100-SEND-EMAIL-WARNING to
notify freight forwarder with
shipment details and warning message"]:::main N_SendEmailWarningtoFreightForwarder_Node0 -- Yes --> N_SendEmailWarningtoFreightForwarder_Node0_action N_SendEmailWarningtoFreightForwarder_Node0_action --> E_SendEmailWarningtoFreightForwarder S_SendEmailWarningtoFreightForwarder --> N_SendEmailWarningtoFreightForwarder_Node0 N_SendEmailWarningtoFreightForwarder_Node0 -- No --> E_SendEmailWarningtoFreightForwarder
File: GCX015E.cbl
GIVEN:
A K1 message with number '695', '697', or '699' requires email notification
WHEN:
The email warning process is triggered
THEN:
- The system calls email warning procedure (c100-send-email-warning) to notify freight forwarder with shipment details
- Warning message
β Consolidated Acceptance Criteria
- The K1-02-FREE-FORM-MESSAGE field contains text data → the system extracts the message text and adds it to the processing log (MRLN-LINES) and prepares it for later logging (HOLD-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_ExtractFreeFormMessageText(["Start Step"])
E_ExtractFreeFormMessageText(["End Step"])
N_ExtractFreeFormMessageText_Node0{"The K1-02-FREE-FORM-MESSAGE field
contains text data"}:::decision N_ExtractFreeFormMessageText_Node0_action["The system extracts the message
text and adds it to the processing
log MRLN-LINES and prepares it for
later logging HOLD-K1-MESSAGE"]:::main N_ExtractFreeFormMessageText_Node0 -- Yes --> N_ExtractFreeFormMessageText_Node0_action N_ExtractFreeFormMessageText_Node0_action --> E_ExtractFreeFormMessageText S_ExtractFreeFormMessageText --> N_ExtractFreeFormMessageText_Node0 N_ExtractFreeFormMessageText_Node0 -- No --> E_ExtractFreeFormMessageText
contains text data"}:::decision N_ExtractFreeFormMessageText_Node0_action["The system extracts the message
text and adds it to the processing
log MRLN-LINES and prepares it for
later logging HOLD-K1-MESSAGE"]:::main N_ExtractFreeFormMessageText_Node0 -- Yes --> N_ExtractFreeFormMessageText_Node0_action N_ExtractFreeFormMessageText_Node0_action --> E_ExtractFreeFormMessageText S_ExtractFreeFormMessageText --> N_ExtractFreeFormMessageText_Node0 N_ExtractFreeFormMessageText_Node0 -- No --> E_ExtractFreeFormMessageText
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-FREE-FORM-MESSAGE field contains text data
THEN:
- The system extracts the message text
- Adds it to the processing log (mrln-lines) and prepares it for later logging (hold-k1-message)
β Consolidated Acceptance Criteria
- If K1-02-FREE-FORM-MESSAGE field → if the field is not spaces, the message text is processed; otherwise, processing continues without text 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_MessageTextAvailable(["Start Step"])
E_MessageTextAvailable(["End Step"])
N_MessageTextAvailable_Node0{"The system evaluates
K1-02-FREE-FORM-MESSAGE field"}:::decision N_MessageTextAvailable_Node0_action["If the field is not spaces, the
message text is processed otherwise,
processing continues without text
extraction"]:::main N_MessageTextAvailable_Node0 -- Yes --> N_MessageTextAvailable_Node0_action N_MessageTextAvailable_Node0_action --> E_MessageTextAvailable S_MessageTextAvailable --> N_MessageTextAvailable_Node0 N_MessageTextAvailable_Node0 -- No --> E_MessageTextAvailable
K1-02-FREE-FORM-MESSAGE field"}:::decision N_MessageTextAvailable_Node0_action["If the field is not spaces, the
message text is processed otherwise,
processing continues without text
extraction"]:::main N_MessageTextAvailable_Node0 -- Yes --> N_MessageTextAvailable_Node0_action N_MessageTextAvailable_Node0_action --> E_MessageTextAvailable S_MessageTextAvailable --> N_MessageTextAvailable_Node0 N_MessageTextAvailable_Node0 -- No --> E_MessageTextAvailable
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed for text extraction
WHEN:
The system evaluates K1-02-FREE-FORM-MESSAGE field
THEN:
If the field is not spaces, the message text is processed; otherwise, processing continues without text extraction
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '000' → the message severity is set to Information (MSG-SEV-I) and the processing status is set to acknowledged (WS-ACK-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_SetMessageSeverityInformation(["Start Step"])
E_SetMessageSeverityInformation(["End Step"])
N_SetMessageSeverityInformation_Node0{"The K1-02-MSG-NUMBER equals 000"}:::decision
N_SetMessageSeverityInformation_Node0_action["The message severity is set to
Information MSG-SEV-I and the
processing status is set to
acknowledged WS-ACK-STATUS"]:::main N_SetMessageSeverityInformation_Node0 -- Yes --> N_SetMessageSeverityInformation_Node0_action N_SetMessageSeverityInformation_Node0_action --> E_SetMessageSeverityInformation S_SetMessageSeverityInformation --> N_SetMessageSeverityInformation_Node0 N_SetMessageSeverityInformation_Node0 -- No --> E_SetMessageSeverityInformation
Information MSG-SEV-I and the
processing status is set to
acknowledged WS-ACK-STATUS"]:::main N_SetMessageSeverityInformation_Node0 -- Yes --> N_SetMessageSeverityInformation_Node0_action N_SetMessageSeverityInformation_Node0_action --> E_SetMessageSeverityInformation S_SetMessageSeverityInformation --> N_SetMessageSeverityInformation_Node0 N_SetMessageSeverityInformation_Node0 -- No --> E_SetMessageSeverityInformation
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER equals '000'
THEN:
The message severity is set to Information (MSG-SEV-I) and the processing status is set to acknowledged (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '009':
- '017'
- '038'
- '040'
- '291'
- '630'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageSeverityFatal(["Start Step"])
E_SetMessageSeverityFatal(["End Step"])
N_SetMessageSeverityFatal_Node0{"The K1-02-MSG-NUMBER equals 009 OR
017 OR 038 OR 040 OR 291 OR 630"}:::decision N_SetMessageSeverityFatal_Node0_action["The message severity is set to
Fatal MSG-SEV-F and the processing
status is set to error
WS-ERROR-STATUS"]:::main N_SetMessageSeverityFatal_Node0 -- Yes --> N_SetMessageSeverityFatal_Node0_action N_SetMessageSeverityFatal_Node0_action --> E_SetMessageSeverityFatal S_SetMessageSeverityFatal --> N_SetMessageSeverityFatal_Node0 N_SetMessageSeverityFatal_Node0 -- No --> E_SetMessageSeverityFatal
017 OR 038 OR 040 OR 291 OR 630"}:::decision N_SetMessageSeverityFatal_Node0_action["The message severity is set to
Fatal MSG-SEV-F and the processing
status is set to error
WS-ERROR-STATUS"]:::main N_SetMessageSeverityFatal_Node0 -- Yes --> N_SetMessageSeverityFatal_Node0_action N_SetMessageSeverityFatal_Node0_action --> E_SetMessageSeverityFatal S_SetMessageSeverityFatal --> N_SetMessageSeverityFatal_Node0 N_SetMessageSeverityFatal_Node0 -- No --> E_SetMessageSeverityFatal
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER equals '009' OR '017' OR '038' OR '040' OR '291' OR '630'
THEN:
The message severity is set to Fatal (MSG-SEV-F) and the processing status is set to error (WS-ERROR-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '631':
- '632'
- '633'
- '634'
- '695'
- '696'
- '697'
- '698'
- '699'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageSeverityWarning(["Start Step"])
E_SetMessageSeverityWarning(["End Step"])
N_SetMessageSeverityWarning_Node0{"The K1-02-MSG-NUMBER equals 631 OR
632 OR 633 OR 634 OR 695 OR 696 OR
697 OR 698 OR 699"}:::decision N_SetMessageSeverityWarning_Node0_action["The message severity is set to
Warning MSG-SEV-W and the processing
status is set to acknowledged
WS-ACK-STATUS"]:::main N_SetMessageSeverityWarning_Node0 -- Yes --> N_SetMessageSeverityWarning_Node0_action N_SetMessageSeverityWarning_Node0_action --> E_SetMessageSeverityWarning S_SetMessageSeverityWarning --> N_SetMessageSeverityWarning_Node0 N_SetMessageSeverityWarning_Node0 -- No --> E_SetMessageSeverityWarning
632 OR 633 OR 634 OR 695 OR 696 OR
697 OR 698 OR 699"}:::decision N_SetMessageSeverityWarning_Node0_action["The message severity is set to
Warning MSG-SEV-W and the processing
status is set to acknowledged
WS-ACK-STATUS"]:::main N_SetMessageSeverityWarning_Node0 -- Yes --> N_SetMessageSeverityWarning_Node0_action N_SetMessageSeverityWarning_Node0_action --> E_SetMessageSeverityWarning S_SetMessageSeverityWarning --> N_SetMessageSeverityWarning_Node0 N_SetMessageSeverityWarning_Node0 -- No --> E_SetMessageSeverityWarning
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER equals '631' OR '632' OR '633' OR '634' OR '695' OR '696' OR '697' OR '698' OR '699'
THEN:
The message severity is set to Warning (MSG-SEV-W) and the processing status is set to acknowledged (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '695':
- '697'
- '699'
- The K1 message number equals '695':
- '697'
- '699'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerEmailWarningProcess(["Start Step"])
E_TriggerEmailWarningProcess(["End Step"])
N_TriggerEmailWarningProcess_Node0{"The K1-02-MSG-NUMBER equals 695 OR
697 OR 699"}:::decision N_TriggerEmailWarningProcess_Node0_action["The email warning process is
triggered by performing
C100-SEND-EMAIL-WARNING"]:::main N_TriggerEmailWarningProcess_Node0 -- Yes --> N_TriggerEmailWarningProcess_Node0_action N_TriggerEmailWarningProcess_Node0_action --> E_TriggerEmailWarningProcess S_TriggerEmailWarningProcess --> N_TriggerEmailWarningProcess_Node0 N_TriggerEmailWarningProcess_Node1{"The K1 message number equals 695 OR
697 OR 699"}:::decision N_TriggerEmailWarningProcess_Node1_action["An email warning process is
triggered to send notifications to
freight forwarders and brokers"]:::main N_TriggerEmailWarningProcess_Node1 -- Yes --> N_TriggerEmailWarningProcess_Node1_action N_TriggerEmailWarningProcess_Node1_action --> E_TriggerEmailWarningProcess N_TriggerEmailWarningProcess_Node0 -- No --> N_TriggerEmailWarningProcess_Node1 N_TriggerEmailWarningProcess_Node1 -- No --> E_TriggerEmailWarningProcess
697 OR 699"}:::decision N_TriggerEmailWarningProcess_Node0_action["The email warning process is
triggered by performing
C100-SEND-EMAIL-WARNING"]:::main N_TriggerEmailWarningProcess_Node0 -- Yes --> N_TriggerEmailWarningProcess_Node0_action N_TriggerEmailWarningProcess_Node0_action --> E_TriggerEmailWarningProcess S_TriggerEmailWarningProcess --> N_TriggerEmailWarningProcess_Node0 N_TriggerEmailWarningProcess_Node1{"The K1 message number equals 695 OR
697 OR 699"}:::decision N_TriggerEmailWarningProcess_Node1_action["An email warning process is
triggered to send notifications to
freight forwarders and brokers"]:::main N_TriggerEmailWarningProcess_Node1 -- Yes --> N_TriggerEmailWarningProcess_Node1_action N_TriggerEmailWarningProcess_Node1_action --> E_TriggerEmailWarningProcess N_TriggerEmailWarningProcess_Node0 -- No --> N_TriggerEmailWarningProcess_Node1 N_TriggerEmailWarningProcess_Node1 -- No --> E_TriggerEmailWarningProcess
File: GCX015E.cbl
GIVEN:
A K1 message has been classified as warning severity
WHEN:
The K1-02-MSG-NUMBER equals '695' OR '697' OR '699'
THEN:
The email warning process is triggered by performing C100-SEND-EMAIL-WARNING
File: GCX015E.cbl
GIVEN:
A K1 message segment has been classified as Warning severity
WHEN:
The K1 message number equals '695' OR '697' OR '699'
THEN:
- An email warning process is triggered to send notifications to freight forwarders
- Brokers
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER does not equal '000' AND does not equal any of '009','017','038','040','291','630' AND does not equal any of '631','632','633','634','695','696','697','698','699' → the message severity is set to Unknown (MSG-SEV-U) and the processing status is set to acknowledged (WS-ACK-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_SetMessageSeverityUnknown(["Start Step"])
E_SetMessageSeverityUnknown(["End Step"])
N_SetMessageSeverityUnknown_Node0{"The K1-02-MSG-NUMBER does not equal
000 AND does not equal any of 009 ,
017 , 038 , 040 , 291 , 630 AND does
not equal any of 631 , 632 , 633 ,
634 , 695 , 696 , 697 , 698 , 699"}:::decision N_SetMessageSeverityUnknown_Node0_action["The message severity is set to
Unknown MSG-SEV-U and the processing
status is set to acknowledged
WS-ACK-STATUS"]:::main N_SetMessageSeverityUnknown_Node0 -- Yes --> N_SetMessageSeverityUnknown_Node0_action N_SetMessageSeverityUnknown_Node0_action --> E_SetMessageSeverityUnknown S_SetMessageSeverityUnknown --> N_SetMessageSeverityUnknown_Node0 N_SetMessageSeverityUnknown_Node0 -- No --> E_SetMessageSeverityUnknown
000 AND does not equal any of 009 ,
017 , 038 , 040 , 291 , 630 AND does
not equal any of 631 , 632 , 633 ,
634 , 695 , 696 , 697 , 698 , 699"}:::decision N_SetMessageSeverityUnknown_Node0_action["The message severity is set to
Unknown MSG-SEV-U and the processing
status is set to acknowledged
WS-ACK-STATUS"]:::main N_SetMessageSeverityUnknown_Node0 -- Yes --> N_SetMessageSeverityUnknown_Node0_action N_SetMessageSeverityUnknown_Node0_action --> E_SetMessageSeverityUnknown S_SetMessageSeverityUnknown --> N_SetMessageSeverityUnknown_Node0 N_SetMessageSeverityUnknown_Node0 -- No --> E_SetMessageSeverityUnknown
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER does not equal '000' AND does not equal any of '009','017','038','040','291','630' AND does not equal any of '631','632','633','634','695','696','697','698','699'
THEN:
The message severity is set to Unknown (MSG-SEV-U) and the processing status is set to acknowledged (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-FREE-FORM-MESSAGE is not equal to spaces → the free-form message is moved to MRLN-LINES for display, the line count is incremented, the message is formatted as WORK-LOG-MESSAGE and stored in HOLD-K1-MESSAGE array, and the K1-CNT counter is incremented
- The K1 free form message text field is not empty → the message text is stored in the logging array and the message counter is incremented
- The K1-02-FREE-FORM-MESSAGE is not spaces → move the K1-02-FREE-FORM-MESSAGE to display lines (MRLN-LINES) and store formatted message in hold array (HOLD-K1-MESSAGE) for logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreMessageforLogging(["Start Step"])
E_StoreMessageforLogging(["End Step"])
N_StoreMessageforLogging_Node0{"The K1-02-FREE-FORM-MESSAGE is not
equal to spaces"}:::decision N_StoreMessageforLogging_Node0_action["The free-form message is moved to
MRLN-LINES for display, the line
count is incremented, the message is
formatted as WORK-LOG-MESSAGE and
stored in HOLD-K1-MESSAGE array, and
the K1-CNT counter is incremented"]:::main N_StoreMessageforLogging_Node0 -- Yes --> N_StoreMessageforLogging_Node0_action N_StoreMessageforLogging_Node0_action --> E_StoreMessageforLogging S_StoreMessageforLogging --> N_StoreMessageforLogging_Node0 N_StoreMessageforLogging_Node1{"The K1 free form message text field
is not empty"}:::decision N_StoreMessageforLogging_Node1_action["The message text is stored in the
logging array and the message
counter is incremented"]:::main N_StoreMessageforLogging_Node1 -- Yes --> N_StoreMessageforLogging_Node1_action N_StoreMessageforLogging_Node1_action --> E_StoreMessageforLogging N_StoreMessageforLogging_Node0 -- No --> N_StoreMessageforLogging_Node1 N_StoreMessageforLogging_Node2{"The K1-02-FREE-FORM-MESSAGE is not
spaces"}:::decision N_StoreMessageforLogging_Node2_action["Move the K1-02-FREE-FORM-MESSAGE to
display lines MRLN-LINES and store
formatted message in hold array
HOLD-K1-MESSAGE for logging"]:::main N_StoreMessageforLogging_Node2 -- Yes --> N_StoreMessageforLogging_Node2_action N_StoreMessageforLogging_Node2_action --> E_StoreMessageforLogging N_StoreMessageforLogging_Node1 -- No --> N_StoreMessageforLogging_Node2 N_StoreMessageforLogging_Node2 -- No --> E_StoreMessageforLogging
equal to spaces"}:::decision N_StoreMessageforLogging_Node0_action["The free-form message is moved to
MRLN-LINES for display, the line
count is incremented, the message is
formatted as WORK-LOG-MESSAGE and
stored in HOLD-K1-MESSAGE array, and
the K1-CNT counter is incremented"]:::main N_StoreMessageforLogging_Node0 -- Yes --> N_StoreMessageforLogging_Node0_action N_StoreMessageforLogging_Node0_action --> E_StoreMessageforLogging S_StoreMessageforLogging --> N_StoreMessageforLogging_Node0 N_StoreMessageforLogging_Node1{"The K1 free form message text field
is not empty"}:::decision N_StoreMessageforLogging_Node1_action["The message text is stored in the
logging array and the message
counter is incremented"]:::main N_StoreMessageforLogging_Node1 -- Yes --> N_StoreMessageforLogging_Node1_action N_StoreMessageforLogging_Node1_action --> E_StoreMessageforLogging N_StoreMessageforLogging_Node0 -- No --> N_StoreMessageforLogging_Node1 N_StoreMessageforLogging_Node2{"The K1-02-FREE-FORM-MESSAGE is not
spaces"}:::decision N_StoreMessageforLogging_Node2_action["Move the K1-02-FREE-FORM-MESSAGE to
display lines MRLN-LINES and store
formatted message in hold array
HOLD-K1-MESSAGE for logging"]:::main N_StoreMessageforLogging_Node2 -- Yes --> N_StoreMessageforLogging_Node2_action N_StoreMessageforLogging_Node2_action --> E_StoreMessageforLogging N_StoreMessageforLogging_Node1 -- No --> N_StoreMessageforLogging_Node2 N_StoreMessageforLogging_Node2 -- No --> E_StoreMessageforLogging
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-FREE-FORM-MESSAGE is not equal to spaces
THEN:
- The free-form message is moved to mrln-lines for display, the line count is incremented, the message is formatted as work-log-message
- Stored in hold-k1-message array, and the k1-cnt counter is incremented
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message segment is being processed
WHEN:
The K1 free form message text field is not empty
THEN:
- The message text is stored in the logging array
- The message counter is incremented
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-FREE-FORM-MESSAGE is not spaces
THEN:
Move the K1-02-FREE-FORM-MESSAGE to display lines (MRLN-LINES) and store formatted message in hold array (HOLD-K1-MESSAGE) for logging
β Consolidated Acceptance Criteria
- The K1 message number is 695, 697, or 699 → the system should initiate email warning 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_ProcessK1WarningMessage(["Start Step"])
E_ProcessK1WarningMessage(["End Step"])
N_ProcessK1WarningMessage_Node0{"The K1 message number is 695, 697,
or 699"}:::decision N_ProcessK1WarningMessage_Node0_action["The system should initiate email
warning notification process"]:::main N_ProcessK1WarningMessage_Node0 -- Yes --> N_ProcessK1WarningMessage_Node0_action N_ProcessK1WarningMessage_Node0_action --> E_ProcessK1WarningMessage S_ProcessK1WarningMessage --> N_ProcessK1WarningMessage_Node0 N_ProcessK1WarningMessage_Node0 -- No --> E_ProcessK1WarningMessage
or 699"}:::decision N_ProcessK1WarningMessage_Node0_action["The system should initiate email
warning notification process"]:::main N_ProcessK1WarningMessage_Node0 -- Yes --> N_ProcessK1WarningMessage_Node0_action N_ProcessK1WarningMessage_Node0_action --> E_ProcessK1WarningMessage S_ProcessK1WarningMessage --> N_ProcessK1WarningMessage_Node0 N_ProcessK1WarningMessage_Node0 -- No --> E_ProcessK1WarningMessage
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1 message number is 695, 697, or 699
THEN:
The system should initiate email warning notification process
β Consolidated Acceptance Criteria
- The system processes secondary segments with record type 03 and entity qualifier N101 indicates forwarder → the freight forwarder information should be retrieved and marked as found
- A record type 03 segment has entity qualifier N101 indicating consignee → the consignee name should be extracted from N102 field and marked as 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_RetrieveFreightForwarderInformation(["Start Step"])
E_RetrieveFreightForwarderInformation(["End Step"])
N_RetrieveFreightForwarderInformation_Node0{"The system processes secondary
segments with record type 03 and
entity qualifier N101 indicates
forwarder"}:::decision N_RetrieveFreightForwarderInformation_Node0_action["The freight forwarder information
should be retrieved and marked as
found"]:::main N_RetrieveFreightForwarderInformation_Node0 -- Yes --> N_RetrieveFreightForwarderInformation_Node0_action N_RetrieveFreightForwarderInformation_Node0_action --> E_RetrieveFreightForwarderInformation S_RetrieveFreightForwarderInformation --> N_RetrieveFreightForwarderInformation_Node0 N_RetrieveFreightForwarderInformation_Node1{"A record type 03 segment has entity
qualifier N101 indicating consignee"}:::decision N_RetrieveFreightForwarderInformation_Node1_action["The consignee name should be
extracted from N102 field and marked
as found"]:::main N_RetrieveFreightForwarderInformation_Node1 -- Yes --> N_RetrieveFreightForwarderInformation_Node1_action N_RetrieveFreightForwarderInformation_Node1_action --> E_RetrieveFreightForwarderInformation N_RetrieveFreightForwarderInformation_Node0 -- No --> N_RetrieveFreightForwarderInformation_Node1 N_RetrieveFreightForwarderInformation_Node1 -- No --> E_RetrieveFreightForwarderInformation
segments with record type 03 and
entity qualifier N101 indicates
forwarder"}:::decision N_RetrieveFreightForwarderInformation_Node0_action["The freight forwarder information
should be retrieved and marked as
found"]:::main N_RetrieveFreightForwarderInformation_Node0 -- Yes --> N_RetrieveFreightForwarderInformation_Node0_action N_RetrieveFreightForwarderInformation_Node0_action --> E_RetrieveFreightForwarderInformation S_RetrieveFreightForwarderInformation --> N_RetrieveFreightForwarderInformation_Node0 N_RetrieveFreightForwarderInformation_Node1{"A record type 03 segment has entity
qualifier N101 indicating consignee"}:::decision N_RetrieveFreightForwarderInformation_Node1_action["The consignee name should be
extracted from N102 field and marked
as found"]:::main N_RetrieveFreightForwarderInformation_Node1 -- Yes --> N_RetrieveFreightForwarderInformation_Node1_action N_RetrieveFreightForwarderInformation_Node1_action --> E_RetrieveFreightForwarderInformation N_RetrieveFreightForwarderInformation_Node0 -- No --> N_RetrieveFreightForwarderInformation_Node1 N_RetrieveFreightForwarderInformation_Node1 -- No --> E_RetrieveFreightForwarderInformation
File: GCX015E.cbl
GIVEN:
A warning message requires email notification and shipment data exists
WHEN:
- The system processes secondary segments with record type 03
- Entity qualifier n101 indicates forwarder
THEN:
- The freight forwarder information should be retrieved
- Marked as found
File: GCX015E.cbl
GIVEN:
Shipment secondary segments are being processed
WHEN:
A record type 03 segment has entity qualifier N101 indicating consignee
THEN:
- The consignee name should be extracted from n102 field
- Marked as found
β Consolidated Acceptance Criteria
- The system queries broker name segment using freight forwarder name prefixed with 'FW=' → the broker short name should be retrieved from the broker name segment 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_GetFreightForwarderContactDetails(["Start Step"])
E_GetFreightForwarderContactDetails(["End Step"])
N_GetFreightForwarderContactDetails_Node0{"The system queries broker name
segment using freight forwarder name
prefixed with FW"}:::decision N_GetFreightForwarderContactDetails_Node0_action["The broker short name should be
retrieved from the broker name
segment if found"]:::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
segment using freight forwarder name
prefixed with FW"}:::decision N_GetFreightForwarderContactDetails_Node0_action["The broker short name should be
retrieved from the broker name
segment if found"]:::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: GCX015E.cbl
GIVEN:
Freight forwarder information has been found in shipment data
WHEN:
The system queries broker name segment using freight forwarder name prefixed with 'FW='
THEN:
The broker short name should be retrieved from the broker name segment if found
β Consolidated Acceptance Criteria
- The system queries broker segment (BK) and internet segment (B1) using broker short name and location ID → if broker uses internet communication, the internet address should be retrieved and email delivery should be enabled to 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_RetrieveBrokerContactInformation(["Start Step"])
E_RetrieveBrokerContactInformation(["End Step"])
N_RetrieveBrokerContactInformation_Node0{"The system queries broker segment
BK and internet segment B1 using
broker short name and location ID"}:::decision N_RetrieveBrokerContactInformation_Node0_action["If broker uses internet
communication, the internet address
should be retrieved and email
delivery should be enabled to
freight forwarder"]:::main N_RetrieveBrokerContactInformation_Node0 -- Yes --> N_RetrieveBrokerContactInformation_Node0_action N_RetrieveBrokerContactInformation_Node0_action --> E_RetrieveBrokerContactInformation S_RetrieveBrokerContactInformation --> N_RetrieveBrokerContactInformation_Node0 N_RetrieveBrokerContactInformation_Node0 -- No --> E_RetrieveBrokerContactInformation
BK and internet segment B1 using
broker short name and location ID"}:::decision N_RetrieveBrokerContactInformation_Node0_action["If broker uses internet
communication, the internet address
should be retrieved and email
delivery should be enabled to
freight forwarder"]:::main N_RetrieveBrokerContactInformation_Node0 -- Yes --> N_RetrieveBrokerContactInformation_Node0_action N_RetrieveBrokerContactInformation_Node0_action --> E_RetrieveBrokerContactInformation S_RetrieveBrokerContactInformation --> N_RetrieveBrokerContactInformation_Node0 N_RetrieveBrokerContactInformation_Node0 -- No --> E_RetrieveBrokerContactInformation
File: GCX015E.cbl
GIVEN:
Broker short name is available and location ID exists
WHEN:
- The system queries broker segment (bk) and internet segment (b1) using broker short name
- Location id
THEN:
- If broker uses internet communication, the internet address should be retrieved
- Email delivery should be enabled to freight forwarder
β Consolidated Acceptance Criteria
- The system calls shipment root retrieval using the waybill key from cargo data → shipment root data should be retrieved for inclusion in email content
- The system needs shipment details for email content → the system calls FWCWBIO to retrieve SHIPROOT segment using the waybill key from cargo data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveShipmentRootData(["Start Step"])
E_RetrieveShipmentRootData(["End Step"])
N_RetrieveShipmentRootData_Node0{"The system calls shipment root
retrieval using the waybill key from
cargo data"}:::decision N_RetrieveShipmentRootData_Node0_action["Shipment root data should be
retrieved for inclusion in email
content"]:::main N_RetrieveShipmentRootData_Node0 -- Yes --> N_RetrieveShipmentRootData_Node0_action N_RetrieveShipmentRootData_Node0_action --> E_RetrieveShipmentRootData S_RetrieveShipmentRootData --> N_RetrieveShipmentRootData_Node0 N_RetrieveShipmentRootData_Node1{"The system needs shipment details
for email content"}:::decision N_RetrieveShipmentRootData_Node1_action["The system calls FWCWBIO to
retrieve SHIPROOT segment using the
waybill key from cargo data"]:::main N_RetrieveShipmentRootData_Node1 -- Yes --> N_RetrieveShipmentRootData_Node1_action N_RetrieveShipmentRootData_Node1_action --> E_RetrieveShipmentRootData N_RetrieveShipmentRootData_Node0 -- No --> N_RetrieveShipmentRootData_Node1 N_RetrieveShipmentRootData_Node1 -- No --> E_RetrieveShipmentRootData
retrieval using the waybill key from
cargo data"}:::decision N_RetrieveShipmentRootData_Node0_action["Shipment root data should be
retrieved for inclusion in email
content"]:::main N_RetrieveShipmentRootData_Node0 -- Yes --> N_RetrieveShipmentRootData_Node0_action N_RetrieveShipmentRootData_Node0_action --> E_RetrieveShipmentRootData S_RetrieveShipmentRootData --> N_RetrieveShipmentRootData_Node0 N_RetrieveShipmentRootData_Node1{"The system needs shipment details
for email content"}:::decision N_RetrieveShipmentRootData_Node1_action["The system calls FWCWBIO to
retrieve SHIPROOT segment using the
waybill key from cargo data"]:::main N_RetrieveShipmentRootData_Node1 -- Yes --> N_RetrieveShipmentRootData_Node1_action N_RetrieveShipmentRootData_Node1_action --> E_RetrieveShipmentRootData N_RetrieveShipmentRootData_Node0 -- No --> N_RetrieveShipmentRootData_Node1 N_RetrieveShipmentRootData_Node1 -- No --> E_RetrieveShipmentRootData
File: GCX015E.cbl
GIVEN:
Warning email notification is being prepared
WHEN:
The system calls shipment root retrieval using the waybill key from cargo data
THEN:
Shipment root data should be retrieved for inclusion in email content
File: GCX015E.cbl
GIVEN:
Cargo information is available for email warning
WHEN:
The system needs shipment details for email content
THEN:
The system calls FWCWBIO to retrieve SHIPROOT segment using the waybill key from cargo data
β Consolidated Acceptance Criteria
- The system formats email content with equipment details, waybill information, CCN data, load/empty indicator, content description, origin/destination stations, consignee information, CBP warning message, and occurrence timestamp → a complete formatted email should be prepared with all shipment details and warning 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_FormatEmailContentforWarnings(["Start Step"])
E_FormatEmailContentforWarnings(["End Step"])
N_FormatEmailContentforWarnings_Node0{"The system formats email content
with equipment details, waybill
information, CCN data, loadempty
indicator, content description,
origindestination stations,
consignee information, CBP warning
message, and occurrence timestamp"}:::decision N_FormatEmailContentforWarnings_Node0_action["A complete formatted email should
be prepared with all shipment
details and warning information"]:::main N_FormatEmailContentforWarnings_Node0 -- Yes --> N_FormatEmailContentforWarnings_Node0_action N_FormatEmailContentforWarnings_Node0_action --> E_FormatEmailContentforWarnings S_FormatEmailContentforWarnings --> N_FormatEmailContentforWarnings_Node0 N_FormatEmailContentforWarnings_Node0 -- No --> E_FormatEmailContentforWarnings
with equipment details, waybill
information, CCN data, loadempty
indicator, content description,
origindestination stations,
consignee information, CBP warning
message, and occurrence timestamp"}:::decision N_FormatEmailContentforWarnings_Node0_action["A complete formatted email should
be prepared with all shipment
details and warning information"]:::main N_FormatEmailContentforWarnings_Node0 -- Yes --> N_FormatEmailContentforWarnings_Node0_action N_FormatEmailContentforWarnings_Node0_action --> E_FormatEmailContentforWarnings S_FormatEmailContentforWarnings --> N_FormatEmailContentforWarnings_Node0 N_FormatEmailContentforWarnings_Node0 -- No --> E_FormatEmailContentforWarnings
File: GCX015E.cbl
GIVEN:
Warning message 695, 697, or 699 requires email notification and shipment data is available
WHEN:
The system formats email content with equipment details, waybill information, CCN data, load/empty indicator, content description, origin/destination stations, consignee information, CBP warning message, and occurrence timestamp
THEN:
- A complete formatted email should be prepared with all shipment details
- Warning information
β Consolidated Acceptance Criteria
- The system calls Merlin email service with formatted content and recipient details → the warning email should be sent to freight forwarder if internet address is available, otherwise 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_SendMerlinEmailMessages(["Start Step"])
E_SendMerlinEmailMessages(["End Step"])
N_SendMerlinEmailMessages_Node0{"The system calls Merlin email
service with formatted content and
recipient details"}:::decision N_SendMerlinEmailMessages_Node0_action["The warning email should be sent to
freight forwarder if internet
address is available, otherwise to
default recipient"]:::main N_SendMerlinEmailMessages_Node0 -- Yes --> N_SendMerlinEmailMessages_Node0_action N_SendMerlinEmailMessages_Node0_action --> E_SendMerlinEmailMessages S_SendMerlinEmailMessages --> N_SendMerlinEmailMessages_Node0 N_SendMerlinEmailMessages_Node0 -- No --> E_SendMerlinEmailMessages
service with formatted content and
recipient details"}:::decision N_SendMerlinEmailMessages_Node0_action["The warning email should be sent to
freight forwarder if internet
address is available, otherwise to
default recipient"]:::main N_SendMerlinEmailMessages_Node0 -- Yes --> N_SendMerlinEmailMessages_Node0_action N_SendMerlinEmailMessages_Node0_action --> E_SendMerlinEmailMessages S_SendMerlinEmailMessages --> N_SendMerlinEmailMessages_Node0 N_SendMerlinEmailMessages_Node0 -- No --> E_SendMerlinEmailMessages
File: GCX015E.cbl
GIVEN:
Email content is formatted and recipient information is available
WHEN:
- The system calls merlin email service with formatted content
- Recipient details
THEN:
The warning email should be sent to freight forwarder if internet address is available, otherwise to default recipient
β Consolidated Acceptance Criteria
- The email sending process completes regardless of success or failure → the do-not-send-warning flag should be set to prevent duplicate email 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_SetDoNotSendWarningFlag(["Start Step"])
E_SetDoNotSendWarningFlag(["End Step"])
N_SetDoNotSendWarningFlag_Node0{"The email sending process completes
regardless of success or failure"}:::decision N_SetDoNotSendWarningFlag_Node0_action["The do-not-send-warning flag should
be set to prevent duplicate email
attempts"]:::main N_SetDoNotSendWarningFlag_Node0 -- Yes --> N_SetDoNotSendWarningFlag_Node0_action N_SetDoNotSendWarningFlag_Node0_action --> E_SetDoNotSendWarningFlag S_SetDoNotSendWarningFlag --> N_SetDoNotSendWarningFlag_Node0 N_SetDoNotSendWarningFlag_Node0 -- No --> E_SetDoNotSendWarningFlag
regardless of success or failure"}:::decision N_SetDoNotSendWarningFlag_Node0_action["The do-not-send-warning flag should
be set to prevent duplicate email
attempts"]:::main N_SetDoNotSendWarningFlag_Node0 -- Yes --> N_SetDoNotSendWarningFlag_Node0_action N_SetDoNotSendWarningFlag_Node0_action --> E_SetDoNotSendWarningFlag S_SetDoNotSendWarningFlag --> N_SetDoNotSendWarningFlag_Node0 N_SetDoNotSendWarningFlag_Node0 -- No --> E_SetDoNotSendWarningFlag
File: GCX015E.cbl
GIVEN:
Warning email has been processed through Merlin messaging system
WHEN:
The email sending process completes regardless of success or failure
THEN:
The do-not-send-warning flag should be set to prevent duplicate email attempts
β Consolidated Acceptance Criteria
- The system begins freight forwarder information retrieval → search flags are reset to not found state and segment type indicators are cleared
- The system begins searching for freight forwarder information → search parameters are initialized with freight forwarder not found status, consignee not found status, and additional data segment not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSearchParameters(["Start Step"])
E_InitializeSearchParameters(["End Step"])
N_InitializeSearchParameters_Node0{"The system begins freight forwarder
information retrieval"}:::decision N_InitializeSearchParameters_Node0_action["Search flags are reset to not found
state and segment type indicators
are cleared"]:::main N_InitializeSearchParameters_Node0 -- Yes --> N_InitializeSearchParameters_Node0_action N_InitializeSearchParameters_Node0_action --> E_InitializeSearchParameters S_InitializeSearchParameters --> N_InitializeSearchParameters_Node0 N_InitializeSearchParameters_Node1{"The system begins searching for
freight forwarder information"}:::decision N_InitializeSearchParameters_Node1_action["Search parameters are initialized
with freight forwarder not found
status, consignee not found status,
and additional data segment not
found status"]:::main N_InitializeSearchParameters_Node1 -- Yes --> N_InitializeSearchParameters_Node1_action N_InitializeSearchParameters_Node1_action --> E_InitializeSearchParameters N_InitializeSearchParameters_Node0 -- No --> N_InitializeSearchParameters_Node1 N_InitializeSearchParameters_Node1 -- No --> E_InitializeSearchParameters
information retrieval"}:::decision N_InitializeSearchParameters_Node0_action["Search flags are reset to not found
state and segment type indicators
are cleared"]:::main N_InitializeSearchParameters_Node0 -- Yes --> N_InitializeSearchParameters_Node0_action N_InitializeSearchParameters_Node0_action --> E_InitializeSearchParameters S_InitializeSearchParameters --> N_InitializeSearchParameters_Node0 N_InitializeSearchParameters_Node1{"The system begins searching for
freight forwarder information"}:::decision N_InitializeSearchParameters_Node1_action["Search parameters are initialized
with freight forwarder not found
status, consignee not found status,
and additional data segment not
found status"]:::main N_InitializeSearchParameters_Node1 -- Yes --> N_InitializeSearchParameters_Node1_action N_InitializeSearchParameters_Node1_action --> E_InitializeSearchParameters N_InitializeSearchParameters_Node0 -- No --> N_InitializeSearchParameters_Node1 N_InitializeSearchParameters_Node1 -- No --> E_InitializeSearchParameters
File: GCX015E.cbl
GIVEN:
A cargo shipment processing request is initiated
WHEN:
The system begins freight forwarder information retrieval
THEN:
- Search flags are reset to not found state
- Segment type indicators are cleared
File: GCX015E.cbl
GIVEN:
A US Cargo CCN key is available for processing
WHEN:
The system begins searching for freight forwarder information
THEN:
Search parameters are initialized with freight forwarder not found status, consignee not found status, and additional data segment not found status
β Consolidated Acceptance Criteria
- Initiating freight forwarder data retrieval → the US-CCN key is set for GCSA2RT segment search with record type '03' and sequence '0'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSCCNKeyforSearch(["Start Step"])
E_SetUSCCNKeyforSearch(["End Step"])
N_SetUSCCNKeyforSearch_Node0{"Initiating freight forwarder data
retrieval"}:::decision N_SetUSCCNKeyforSearch_Node0_action["The US-CCN key is set for GCSA2RT
segment search with record type 03
and sequence 0"]:::main N_SetUSCCNKeyforSearch_Node0 -- Yes --> N_SetUSCCNKeyforSearch_Node0_action N_SetUSCCNKeyforSearch_Node0_action --> E_SetUSCCNKeyforSearch S_SetUSCCNKeyforSearch --> N_SetUSCCNKeyforSearch_Node0 N_SetUSCCNKeyforSearch_Node0 -- No --> E_SetUSCCNKeyforSearch
retrieval"}:::decision N_SetUSCCNKeyforSearch_Node0_action["The US-CCN key is set for GCSA2RT
segment search with record type 03
and sequence 0"]:::main N_SetUSCCNKeyforSearch_Node0 -- Yes --> N_SetUSCCNKeyforSearch_Node0_action N_SetUSCCNKeyforSearch_Node0_action --> E_SetUSCCNKeyforSearch S_SetUSCCNKeyforSearch --> N_SetUSCCNKeyforSearch_Node0 N_SetUSCCNKeyforSearch_Node0 -- No --> E_SetUSCCNKeyforSearch
File: GCX015E.cbl
GIVEN:
A valid US-CCN exists from the cargo root record
WHEN:
Initiating freight forwarder data retrieval
THEN:
The US-CCN key is set for GCSA2RT segment search with record type '03' and sequence '0'
β Consolidated Acceptance Criteria
- Database retrieval is executed with 'GU' function and greater than operator → first matching GCSA2RT segment is retrieved or no record found status is returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFirstGCSA2RTSegment(["Start Step"])
E_GetFirstGCSA2RTSegment(["End Step"])
N_GetFirstGCSA2RTSegment_Node0{"Database retrieval is executed with
GU function and greater than
operator"}:::decision N_GetFirstGCSA2RTSegment_Node0_action["First matching GCSA2RT segment is
retrieved or no record found status
is returned"]:::main N_GetFirstGCSA2RTSegment_Node0 -- Yes --> N_GetFirstGCSA2RTSegment_Node0_action N_GetFirstGCSA2RTSegment_Node0_action --> E_GetFirstGCSA2RTSegment S_GetFirstGCSA2RTSegment --> N_GetFirstGCSA2RTSegment_Node0 N_GetFirstGCSA2RTSegment_Node0 -- No --> E_GetFirstGCSA2RTSegment
GU function and greater than
operator"}:::decision N_GetFirstGCSA2RTSegment_Node0_action["First matching GCSA2RT segment is
retrieved or no record found status
is returned"]:::main N_GetFirstGCSA2RTSegment_Node0 -- Yes --> N_GetFirstGCSA2RTSegment_Node0_action N_GetFirstGCSA2RTSegment_Node0_action --> E_GetFirstGCSA2RTSegment S_GetFirstGCSA2RTSegment --> N_GetFirstGCSA2RTSegment_Node0 N_GetFirstGCSA2RTSegment_Node0 -- No --> E_GetFirstGCSA2RTSegment
File: GCX015E.cbl
GIVEN:
US-CCN key is properly set for GCSA2RT segment search
WHEN:
- Database retrieval is executed with 'gu' function
- Greater than operator
THEN:
First matching GCSA2RT segment is retrieved or no record found status is returned
β Consolidated Acceptance Criteria
- Checking the database return status → return status indicates successful retrieval (spaces) or failure (non-spaces), and processing continues or terminates 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_SegmentFound(["Start Step"])
E_SegmentFound(["End Step"])
N_SegmentFound_Node0{"Checking the database return status"}:::decision
N_SegmentFound_Node0_action["Return status indicates successful
retrieval spaces or failure
non-spaces, and processing continues
or terminates accordingly"]:::main N_SegmentFound_Node0 -- Yes --> N_SegmentFound_Node0_action N_SegmentFound_Node0_action --> E_SegmentFound S_SegmentFound --> N_SegmentFound_Node0 N_SegmentFound_Node0 -- No --> E_SegmentFound
retrieval spaces or failure
non-spaces, and processing continues
or terminates accordingly"]:::main N_SegmentFound_Node0 -- Yes --> N_SegmentFound_Node0_action N_SegmentFound_Node0_action --> E_SegmentFound S_SegmentFound --> N_SegmentFound_Node0 N_SegmentFound_Node0 -- No --> E_SegmentFound
File: GCX015E.cbl
GIVEN:
Database retrieval operation has completed
WHEN:
Checking the database return status
THEN:
Return status indicates successful retrieval (spaces) or failure (non-spaces), and processing continues or terminates accordingly
β Consolidated Acceptance Criteria
- Examining the record type field in the segment key → record type equals '03' indicates party information record, otherwise continue to check for type '07'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordType03(["Start Step"])
E_RecordType03(["End Step"])
N_RecordType03_Node0{"Examining the record type field in
the segment key"}:::decision N_RecordType03_Node0_action["Record type equals 03 indicates
party information record, otherwise
continue to check for type 07"]:::main N_RecordType03_Node0 -- Yes --> N_RecordType03_Node0_action N_RecordType03_Node0_action --> E_RecordType03 S_RecordType03 --> N_RecordType03_Node0 N_RecordType03_Node0 -- No --> E_RecordType03
the segment key"}:::decision N_RecordType03_Node0_action["Record type equals 03 indicates
party information record, otherwise
continue to check for type 07"]:::main N_RecordType03_Node0 -- Yes --> N_RecordType03_Node0_action N_RecordType03_Node0_action --> E_RecordType03 S_RecordType03 --> N_RecordType03_Node0 N_RecordType03_Node0 -- No --> E_RecordType03
File: GCX015E.cbl
GIVEN:
A GCSA2RT segment has been successfully retrieved
WHEN:
Examining the record type field in the segment key
THEN:
Record type equals '03' indicates party information record, otherwise continue to check for type '07'
β Consolidated Acceptance Criteria
- Processing the segment data → segment data is moved to GCSUSS03 structure for party information 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_ProcessType03Record(["Start Step"])
E_ProcessType03Record(["End Step"])
N_ProcessType03Record_Node0{"Processing the segment data"}:::decision
N_ProcessType03Record_Node0_action["Segment data is moved to GCSUSS03
structure for party information
analysis"]:::main N_ProcessType03Record_Node0 -- Yes --> N_ProcessType03Record_Node0_action N_ProcessType03Record_Node0_action --> E_ProcessType03Record S_ProcessType03Record --> N_ProcessType03Record_Node0 N_ProcessType03Record_Node0 -- No --> E_ProcessType03Record
structure for party information
analysis"]:::main N_ProcessType03Record_Node0 -- Yes --> N_ProcessType03Record_Node0_action N_ProcessType03Record_Node0_action --> E_ProcessType03Record S_ProcessType03Record --> N_ProcessType03Record_Node0 N_ProcessType03Record_Node0 -- No --> E_ProcessType03Record
File: GCX015E.cbl
GIVEN:
A type 03 GCSA2RT segment record is available
WHEN:
Processing the segment data
THEN:
Segment data is moved to GCSUSS03 structure for party information analysis
β Consolidated Acceptance Criteria
- Checking the N101 qualifier code in the party record → n101 qualifier indicates freight forwarder role and freight forwarder found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFreightForwarder(["Start Step"])
E_IsFreightForwarder(["End Step"])
N_IsFreightForwarder_Node0{"Checking the N101 qualifier code in
the party record"}:::decision N_IsFreightForwarder_Node0_action["N101 qualifier indicates freight
forwarder role and freight forwarder
found flag is set to true"]:::main N_IsFreightForwarder_Node0 -- Yes --> N_IsFreightForwarder_Node0_action N_IsFreightForwarder_Node0_action --> E_IsFreightForwarder S_IsFreightForwarder --> N_IsFreightForwarder_Node0 N_IsFreightForwarder_Node0 -- No --> E_IsFreightForwarder
the party record"}:::decision N_IsFreightForwarder_Node0_action["N101 qualifier indicates freight
forwarder role and freight forwarder
found flag is set to true"]:::main N_IsFreightForwarder_Node0 -- Yes --> N_IsFreightForwarder_Node0_action N_IsFreightForwarder_Node0_action --> E_IsFreightForwarder S_IsFreightForwarder --> N_IsFreightForwarder_Node0 N_IsFreightForwarder_Node0 -- No --> E_IsFreightForwarder
File: GCX015E.cbl
GIVEN:
A type 03 party information record is being processed
WHEN:
Checking the N101 qualifier code in the party record
THEN:
- N101 qualifier indicates freight forwarder role
- Freight forwarder found flag is set to true
β Consolidated Acceptance Criteria
- Processing the freight forwarder party information → freight forwarder found flag is set to true to track 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_MarkFreightForwarderFound(["Start Step"])
E_MarkFreightForwarderFound(["End Step"])
N_MarkFreightForwarderFound_Node0{"Processing the freight forwarder
party information"}:::decision N_MarkFreightForwarderFound_Node0_action["Freight forwarder found flag is set
to true to track successful
identification"]:::main N_MarkFreightForwarderFound_Node0 -- Yes --> N_MarkFreightForwarderFound_Node0_action N_MarkFreightForwarderFound_Node0_action --> E_MarkFreightForwarderFound S_MarkFreightForwarderFound --> N_MarkFreightForwarderFound_Node0 N_MarkFreightForwarderFound_Node0 -- No --> E_MarkFreightForwarderFound
party information"}:::decision N_MarkFreightForwarderFound_Node0_action["Freight forwarder found flag is set
to true to track successful
identification"]:::main N_MarkFreightForwarderFound_Node0 -- Yes --> N_MarkFreightForwarderFound_Node0_action N_MarkFreightForwarderFound_Node0_action --> E_MarkFreightForwarderFound S_MarkFreightForwarderFound --> N_MarkFreightForwarderFound_Node0 N_MarkFreightForwarderFound_Node0 -- No --> E_MarkFreightForwarderFound
File: GCX015E.cbl
GIVEN:
A party record with freight forwarder N101 qualifier is identified
WHEN:
Processing the freight forwarder party information
THEN:
Freight forwarder found flag is set to true to track successful identification
β Consolidated Acceptance Criteria
- Checking the N101 qualifier code in the party record → n101 qualifier indicates consignee role and consignee 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_IsConsignee(["Start Step"])
E_IsConsignee(["End Step"])
N_IsConsignee_Node0{"Checking the N101 qualifier code in
the party record"}:::decision N_IsConsignee_Node0_action["N101 qualifier indicates consignee
role and consignee processing is
initiated"]:::main N_IsConsignee_Node0 -- Yes --> N_IsConsignee_Node0_action N_IsConsignee_Node0_action --> E_IsConsignee S_IsConsignee --> N_IsConsignee_Node0 N_IsConsignee_Node0 -- No --> E_IsConsignee
the party record"}:::decision N_IsConsignee_Node0_action["N101 qualifier indicates consignee
role and consignee processing is
initiated"]:::main N_IsConsignee_Node0 -- Yes --> N_IsConsignee_Node0_action N_IsConsignee_Node0_action --> E_IsConsignee S_IsConsignee --> N_IsConsignee_Node0 N_IsConsignee_Node0 -- No --> E_IsConsignee
File: GCX015E.cbl
GIVEN:
A type 03 party information record is being processed
WHEN:
Checking the N101 qualifier code in the party record
THEN:
- N101 qualifier indicates consignee role
- Consignee processing is initiated
β Consolidated Acceptance Criteria
- Processing the consignee party information → n102 name field is extracted and stored as consignee data
- The N101 qualifier is evaluated as consignee type → the consignee name is extracted and the consignee found flag is set to true
- The consignee information is being extracted → the N102 name field is stored as consignee data and the consignee found indicator 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_ExtractConsigneeName(["Start Step"])
E_ExtractConsigneeName(["End Step"])
N_ExtractConsigneeName_Node0{"Processing the consignee party
information"}:::decision N_ExtractConsigneeName_Node0_action["N102 name field is extracted and
stored as consignee data"]:::main N_ExtractConsigneeName_Node0 -- Yes --> N_ExtractConsigneeName_Node0_action N_ExtractConsigneeName_Node0_action --> E_ExtractConsigneeName S_ExtractConsigneeName --> N_ExtractConsigneeName_Node0 N_ExtractConsigneeName_Node1{"The N101 qualifier is evaluated as
consignee type"}:::decision N_ExtractConsigneeName_Node1_action["The consignee name is extracted and
the consignee found flag is set to
true"]:::main N_ExtractConsigneeName_Node1 -- Yes --> N_ExtractConsigneeName_Node1_action N_ExtractConsigneeName_Node1_action --> E_ExtractConsigneeName N_ExtractConsigneeName_Node0 -- No --> N_ExtractConsigneeName_Node1 N_ExtractConsigneeName_Node2{"The consignee information is being
extracted"}:::decision N_ExtractConsigneeName_Node2_action["The N102 name field is stored as
consignee data and the consignee
found indicator is set"]:::main N_ExtractConsigneeName_Node2 -- Yes --> N_ExtractConsigneeName_Node2_action N_ExtractConsigneeName_Node2_action --> E_ExtractConsigneeName N_ExtractConsigneeName_Node1 -- No --> N_ExtractConsigneeName_Node2 N_ExtractConsigneeName_Node2 -- No --> E_ExtractConsigneeName
information"}:::decision N_ExtractConsigneeName_Node0_action["N102 name field is extracted and
stored as consignee data"]:::main N_ExtractConsigneeName_Node0 -- Yes --> N_ExtractConsigneeName_Node0_action N_ExtractConsigneeName_Node0_action --> E_ExtractConsigneeName S_ExtractConsigneeName --> N_ExtractConsigneeName_Node0 N_ExtractConsigneeName_Node1{"The N101 qualifier is evaluated as
consignee type"}:::decision N_ExtractConsigneeName_Node1_action["The consignee name is extracted and
the consignee found flag is set to
true"]:::main N_ExtractConsigneeName_Node1 -- Yes --> N_ExtractConsigneeName_Node1_action N_ExtractConsigneeName_Node1_action --> E_ExtractConsigneeName N_ExtractConsigneeName_Node0 -- No --> N_ExtractConsigneeName_Node1 N_ExtractConsigneeName_Node2{"The consignee information is being
extracted"}:::decision N_ExtractConsigneeName_Node2_action["The N102 name field is stored as
consignee data and the consignee
found indicator is set"]:::main N_ExtractConsigneeName_Node2 -- Yes --> N_ExtractConsigneeName_Node2_action N_ExtractConsigneeName_Node2_action --> E_ExtractConsigneeName N_ExtractConsigneeName_Node1 -- No --> N_ExtractConsigneeName_Node2 N_ExtractConsigneeName_Node2 -- No --> E_ExtractConsigneeName
File: GCX015E.cbl
GIVEN:
A party record with consignee N101 qualifier is identified
WHEN:
Processing the consignee party information
THEN:
- N102 name field is extracted
- Stored as consignee data
File: GCX015E.cbl
GIVEN:
A Type 03 record with N101 qualifier code indicating consignee
WHEN:
The N101 qualifier is evaluated as consignee type
THEN:
- The consignee name is extracted
- The consignee found flag is set to true
File: GCX015E.cbl
GIVEN:
A record type 03 with consignee N101 qualifier is found
WHEN:
The consignee information is being extracted
THEN:
- The n102 name field is stored as consignee data
- The consignee found indicator is set
β Consolidated Acceptance Criteria
- Completing consignee information processing → consignee found flag is set to true to track 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_MarkConsigneeFound(["Start Step"])
E_MarkConsigneeFound(["End Step"])
N_MarkConsigneeFound_Node0{"Completing consignee information
processing"}:::decision N_MarkConsigneeFound_Node0_action["Consignee found flag is set to true
to track successful identification"]:::main N_MarkConsigneeFound_Node0 -- Yes --> N_MarkConsigneeFound_Node0_action N_MarkConsigneeFound_Node0_action --> E_MarkConsigneeFound S_MarkConsigneeFound --> N_MarkConsigneeFound_Node0 N_MarkConsigneeFound_Node0 -- No --> E_MarkConsigneeFound
processing"}:::decision N_MarkConsigneeFound_Node0_action["Consignee found flag is set to true
to track successful identification"]:::main N_MarkConsigneeFound_Node0 -- Yes --> N_MarkConsigneeFound_Node0_action N_MarkConsigneeFound_Node0_action --> E_MarkConsigneeFound S_MarkConsigneeFound --> N_MarkConsigneeFound_Node0 N_MarkConsigneeFound_Node0 -- No --> E_MarkConsigneeFound
File: GCX015E.cbl
GIVEN:
Consignee name has been successfully extracted from party record
WHEN:
Completing consignee information processing
THEN:
Consignee found flag is set to true to track successful identification
β Consolidated Acceptance Criteria
- Examining the record type field in the segment key → record type equals '07' indicates additional shipment information 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_RecordType07(["Start Step"])
E_RecordType07(["End Step"])
N_RecordType07_Node0{"Examining the record type field in
the segment key"}:::decision N_RecordType07_Node0_action["Record type equals 07 indicates
additional shipment information
record"]:::main N_RecordType07_Node0 -- Yes --> N_RecordType07_Node0_action N_RecordType07_Node0_action --> E_RecordType07 S_RecordType07 --> N_RecordType07_Node0 N_RecordType07_Node0 -- No --> E_RecordType07
the segment key"}:::decision N_RecordType07_Node0_action["Record type equals 07 indicates
additional shipment information
record"]:::main N_RecordType07_Node0 -- Yes --> N_RecordType07_Node0_action N_RecordType07_Node0_action --> E_RecordType07 S_RecordType07 --> N_RecordType07_Node0 N_RecordType07_Node0 -- No --> E_RecordType07
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A GCSA2RT segment has been successfully retrieved and is not type 03
WHEN:
Examining the record type field in the segment key
THEN:
Record type equals '07' indicates additional shipment information record
β Consolidated Acceptance Criteria
- Processing the segment data → segment data is moved to GCSUSS07 structure for shipment information 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_ProcessType07Record(["Start Step"])
E_ProcessType07Record(["End Step"])
N_ProcessType07Record_Node0{"Processing the segment data"}:::decision
N_ProcessType07Record_Node0_action["Segment data is moved to GCSUSS07
structure for shipment information
analysis"]:::main N_ProcessType07Record_Node0 -- Yes --> N_ProcessType07Record_Node0_action N_ProcessType07Record_Node0_action --> E_ProcessType07Record S_ProcessType07Record --> N_ProcessType07Record_Node0 N_ProcessType07Record_Node0 -- No --> E_ProcessType07Record
structure for shipment information
analysis"]:::main N_ProcessType07Record_Node0 -- Yes --> N_ProcessType07Record_Node0_action N_ProcessType07Record_Node0_action --> E_ProcessType07Record S_ProcessType07Record --> N_ProcessType07Record_Node0 N_ProcessType07Record_Node0 -- No --> E_ProcessType07Record
File: GCX015E.cbl
GIVEN:
A type 07 GCSA2RT segment record is available
WHEN:
Processing the segment data
THEN:
Segment data is moved to GCSUSS07 structure for shipment information analysis
β Consolidated Acceptance Criteria
- Completing type 07 segment processing → segment 07 found flag is set to true to track 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_MarkSegment07Found(["Start Step"])
E_MarkSegment07Found(["End Step"])
N_MarkSegment07Found_Node0{"Completing type 07 segment
processing"}:::decision N_MarkSegment07Found_Node0_action["Segment 07 found flag is set to
true to track successful
identification"]:::main N_MarkSegment07Found_Node0 -- Yes --> N_MarkSegment07Found_Node0_action N_MarkSegment07Found_Node0_action --> E_MarkSegment07Found S_MarkSegment07Found --> N_MarkSegment07Found_Node0 N_MarkSegment07Found_Node0 -- No --> E_MarkSegment07Found
processing"}:::decision N_MarkSegment07Found_Node0_action["Segment 07 found flag is set to
true to track successful
identification"]:::main N_MarkSegment07Found_Node0 -- Yes --> N_MarkSegment07Found_Node0_action N_MarkSegment07Found_Node0_action --> E_MarkSegment07Found S_MarkSegment07Found --> N_MarkSegment07Found_Node0 N_MarkSegment07Found_Node0 -- No --> E_MarkSegment07Found
File: GCX015E.cbl
GIVEN:
A type 07 segment record has been successfully processed
WHEN:
Completing type 07 segment processing
THEN:
Segment 07 found flag is set to true to track successful identification
β Consolidated Acceptance Criteria
- Database retrieval is executed with 'GN' function for next segment → next sequential GCSA2RT segment is retrieved or end of data status is returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextGCSA2RTSegment(["Start Step"])
E_GetNextGCSA2RTSegment(["End Step"])
N_GetNextGCSA2RTSegment_Node0{"Database retrieval is executed with
GN function for next segment"}:::decision N_GetNextGCSA2RTSegment_Node0_action["Next sequential GCSA2RT segment is
retrieved or end of data status is
returned"]:::main N_GetNextGCSA2RTSegment_Node0 -- Yes --> N_GetNextGCSA2RTSegment_Node0_action N_GetNextGCSA2RTSegment_Node0_action --> E_GetNextGCSA2RTSegment S_GetNextGCSA2RTSegment --> N_GetNextGCSA2RTSegment_Node0 N_GetNextGCSA2RTSegment_Node0 -- No --> E_GetNextGCSA2RTSegment
GN function for next segment"}:::decision N_GetNextGCSA2RTSegment_Node0_action["Next sequential GCSA2RT segment is
retrieved or end of data status is
returned"]:::main N_GetNextGCSA2RTSegment_Node0 -- Yes --> N_GetNextGCSA2RTSegment_Node0_action N_GetNextGCSA2RTSegment_Node0_action --> E_GetNextGCSA2RTSegment S_GetNextGCSA2RTSegment --> N_GetNextGCSA2RTSegment_Node0 N_GetNextGCSA2RTSegment_Node0 -- No --> E_GetNextGCSA2RTSegment
File: GCX015E.cbl
GIVEN:
Current GCSA2RT segment has been processed
WHEN:
Database retrieval is executed with 'GN' function for next segment
THEN:
Next sequential GCSA2RT segment is retrieved or end of data status is returned
β Consolidated Acceptance Criteria
- Checking the database return status → return status indicates more segments available (spaces) or end of data (GE or GB), and processing continues or terminates 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_MoreSegmentsAvailable(["Start Step"])
E_MoreSegmentsAvailable(["End Step"])
N_MoreSegmentsAvailable_Node0{"Checking the database return status"}:::decision
N_MoreSegmentsAvailable_Node0_action["Return status indicates more
segments available spaces or end of
data GE or GB, and processing
continues or terminates accordingly"]:::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
segments available spaces or end of
data GE or GB, and processing
continues or terminates accordingly"]:::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: GCX015E.cbl
GIVEN:
Next segment retrieval operation has completed
WHEN:
Checking the database return status
THEN:
Return status indicates more segments available (spaces) or end of data (GE or GB), and processing continues or terminates accordingly
β Consolidated Acceptance Criteria
- Comparing the segment's US-CCN key with the original search key → uS-CCN keys match indicating same shipment, or keys differ indicating end of related 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_SameUSCCNKey(["Start Step"])
E_SameUSCCNKey(["End Step"])
N_SameUSCCNKey_Node0{"Comparing the segment s US-CCN key
with the original search key"}:::decision N_SameUSCCNKey_Node0_action["US-CCN keys match indicating same
shipment, or keys differ indicating
end of related segments"]:::main N_SameUSCCNKey_Node0 -- Yes --> N_SameUSCCNKey_Node0_action N_SameUSCCNKey_Node0_action --> E_SameUSCCNKey S_SameUSCCNKey --> N_SameUSCCNKey_Node0 N_SameUSCCNKey_Node0 -- No --> E_SameUSCCNKey
with the original search key"}:::decision N_SameUSCCNKey_Node0_action["US-CCN keys match indicating same
shipment, or keys differ indicating
end of related segments"]:::main N_SameUSCCNKey_Node0 -- Yes --> N_SameUSCCNKey_Node0_action N_SameUSCCNKey_Node0_action --> E_SameUSCCNKey S_SameUSCCNKey --> N_SameUSCCNKey_Node0 N_SameUSCCNKey_Node0 -- No --> E_SameUSCCNKey
File: GCX015E.cbl
GIVEN:
A new GCSA2RT segment has been retrieved
WHEN:
Comparing the segment's US-CCN key with the original search key
THEN:
US-CCN keys match indicating same shipment, or keys differ indicating end of related segments
β Consolidated Acceptance Criteria
- Evaluating collected data completeness → freight forwarder found AND segment 07 found AND consignee found indicates complete data collection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllRequiredDataFound(["Start Step"])
E_AllRequiredDataFound(["End Step"])
N_AllRequiredDataFound_Node0{"Evaluating collected data
completeness"}:::decision N_AllRequiredDataFound_Node0_action["Freight forwarder found AND segment
07 found AND consignee found
indicates complete data collection"]:::main N_AllRequiredDataFound_Node0 -- Yes --> N_AllRequiredDataFound_Node0_action N_AllRequiredDataFound_Node0_action --> E_AllRequiredDataFound S_AllRequiredDataFound --> N_AllRequiredDataFound_Node0 N_AllRequiredDataFound_Node0 -- No --> E_AllRequiredDataFound
completeness"}:::decision N_AllRequiredDataFound_Node0_action["Freight forwarder found AND segment
07 found AND consignee found
indicates complete data collection"]:::main N_AllRequiredDataFound_Node0 -- Yes --> N_AllRequiredDataFound_Node0_action N_AllRequiredDataFound_Node0_action --> E_AllRequiredDataFound S_AllRequiredDataFound --> N_AllRequiredDataFound_Node0 N_AllRequiredDataFound_Node0 -- No --> E_AllRequiredDataFound
File: GCX015E.cbl
GIVEN:
Segment processing is continuing with valid US-CCN key
WHEN:
Evaluating collected data completeness
THEN:
- Freight forwarder found
- Segment 07 found
- Consignee found indicates complete data collection
β Consolidated Acceptance Criteria
- The system processes the segment → the segment data is moved to GCSUSS03 structure for further 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_ReadGCSA2RTSegmentwithRecordType03(["Start Step"])
E_ReadGCSA2RTSegmentwithRecordType03(["End Step"])
N_ReadGCSA2RTSegmentwithRecordType03_Node0{"The system processes the segment"}:::decision
N_ReadGCSA2RTSegmentwithRecordType03_Node0_action["The segment data is moved to
GCSUSS03 structure for further
analysis"]:::main N_ReadGCSA2RTSegmentwithRecordType03_Node0 -- Yes --> N_ReadGCSA2RTSegmentwithRecordType03_Node0_action N_ReadGCSA2RTSegmentwithRecordType03_Node0_action --> E_ReadGCSA2RTSegmentwithRecordType03 S_ReadGCSA2RTSegmentwithRecordType03 --> N_ReadGCSA2RTSegmentwithRecordType03_Node0 N_ReadGCSA2RTSegmentwithRecordType03_Node0 -- No --> E_ReadGCSA2RTSegmentwithRecordType03
GCSUSS03 structure for further
analysis"]:::main N_ReadGCSA2RTSegmentwithRecordType03_Node0 -- Yes --> N_ReadGCSA2RTSegmentwithRecordType03_Node0_action N_ReadGCSA2RTSegmentwithRecordType03_Node0_action --> E_ReadGCSA2RTSegmentwithRecordType03 S_ReadGCSA2RTSegmentwithRecordType03 --> N_ReadGCSA2RTSegmentwithRecordType03_Node0 N_ReadGCSA2RTSegmentwithRecordType03_Node0 -- No --> E_ReadGCSA2RTSegmentwithRecordType03
File: GCX015E.cbl
GIVEN:
A GCSA2RT segment exists with record type '03'
WHEN:
The system processes the segment
THEN:
The segment data is moved to GCSUSS03 structure for further analysis
β Consolidated Acceptance Criteria
- The N101 qualifier is evaluated as freight forwarder type → the freight forwarder found flag is set to true and the freight forwarder name is extracted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckN101QualifierCode(["Start Step"])
E_CheckN101QualifierCode(["End Step"])
N_CheckN101QualifierCode_Node0{"The N101 qualifier is evaluated as
freight forwarder type"}:::decision N_CheckN101QualifierCode_Node0_action["The freight forwarder found flag is
set to true and the freight
forwarder name is extracted"]:::main N_CheckN101QualifierCode_Node0 -- Yes --> N_CheckN101QualifierCode_Node0_action N_CheckN101QualifierCode_Node0_action --> E_CheckN101QualifierCode S_CheckN101QualifierCode --> N_CheckN101QualifierCode_Node0 N_CheckN101QualifierCode_Node0 -- No --> E_CheckN101QualifierCode
freight forwarder type"}:::decision N_CheckN101QualifierCode_Node0_action["The freight forwarder found flag is
set to true and the freight
forwarder name is extracted"]:::main N_CheckN101QualifierCode_Node0 -- Yes --> N_CheckN101QualifierCode_Node0_action N_CheckN101QualifierCode_Node0_action --> E_CheckN101QualifierCode S_CheckN101QualifierCode --> N_CheckN101QualifierCode_Node0 N_CheckN101QualifierCode_Node0 -- No --> E_CheckN101QualifierCode
File: GCX015E.cbl
GIVEN:
A Type 03 record with N101 qualifier code indicating freight forwarder
WHEN:
The N101 qualifier is evaluated as freight forwarder type
THEN:
- The freight forwarder found flag is set to true
- The freight forwarder name is extracted
β Consolidated Acceptance Criteria
- The entity type is confirmed → the entity name is extracted from the N102 name field and stored in appropriate business data fields
- The freight forwarder information is being extracted → the N102 name field is captured and the freight forwarder found indicator 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_ExtractFreightForwarderName(["Start Step"])
E_ExtractFreightForwarderName(["End Step"])
N_ExtractFreightForwarderName_Node0{"The entity type is confirmed"}:::decision
N_ExtractFreightForwarderName_Node0_action["The entity name is extracted from
the N102 name field and stored in
appropriate business data fields"]:::main N_ExtractFreightForwarderName_Node0 -- Yes --> N_ExtractFreightForwarderName_Node0_action N_ExtractFreightForwarderName_Node0_action --> E_ExtractFreightForwarderName S_ExtractFreightForwarderName --> N_ExtractFreightForwarderName_Node0 N_ExtractFreightForwarderName_Node1{"The freight forwarder information
is being extracted"}:::decision N_ExtractFreightForwarderName_Node1_action["The N102 name field is captured and
the freight forwarder found
indicator is set"]:::main N_ExtractFreightForwarderName_Node1 -- Yes --> N_ExtractFreightForwarderName_Node1_action N_ExtractFreightForwarderName_Node1_action --> E_ExtractFreightForwarderName N_ExtractFreightForwarderName_Node0 -- No --> N_ExtractFreightForwarderName_Node1 N_ExtractFreightForwarderName_Node1 -- No --> E_ExtractFreightForwarderName
the N102 name field and stored in
appropriate business data fields"]:::main N_ExtractFreightForwarderName_Node0 -- Yes --> N_ExtractFreightForwarderName_Node0_action N_ExtractFreightForwarderName_Node0_action --> E_ExtractFreightForwarderName S_ExtractFreightForwarderName --> N_ExtractFreightForwarderName_Node0 N_ExtractFreightForwarderName_Node1{"The freight forwarder information
is being extracted"}:::decision N_ExtractFreightForwarderName_Node1_action["The N102 name field is captured and
the freight forwarder found
indicator is set"]:::main N_ExtractFreightForwarderName_Node1 -- Yes --> N_ExtractFreightForwarderName_Node1_action N_ExtractFreightForwarderName_Node1_action --> E_ExtractFreightForwarderName N_ExtractFreightForwarderName_Node0 -- No --> N_ExtractFreightForwarderName_Node1 N_ExtractFreightForwarderName_Node1 -- No --> E_ExtractFreightForwarderName
File: GCX015E.cbl
GIVEN:
A Type 03 record identified as freight forwarder or consignee
WHEN:
The entity type is confirmed
THEN:
- The entity name is extracted from the n102 name field
- Stored in appropriate business data fields
File: GCX015E.cbl
GIVEN:
A record type 03 with forwarder N101 qualifier is found
WHEN:
The freight forwarder information is being extracted
THEN:
- The n102 name field is captured
- The freight forwarder found indicator is set
β Consolidated Acceptance Criteria
- The freight forwarder broker search process is initiated → the system clears all search parameters and sets up the broker registry 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_InitializeGCWUSIOParameters(["Start Step"])
E_InitializeGCWUSIOParameters(["End Step"])
N_InitializeGCWUSIOParameters_Node0{"The freight forwarder broker search
process is initiated"}:::decision N_InitializeGCWUSIOParameters_Node0_action["The system clears all search
parameters and sets up the broker
registry table access"]:::main N_InitializeGCWUSIOParameters_Node0 -- Yes --> N_InitializeGCWUSIOParameters_Node0_action N_InitializeGCWUSIOParameters_Node0_action --> E_InitializeGCWUSIOParameters S_InitializeGCWUSIOParameters --> N_InitializeGCWUSIOParameters_Node0 N_InitializeGCWUSIOParameters_Node0 -- No --> E_InitializeGCWUSIOParameters
process is initiated"}:::decision N_InitializeGCWUSIOParameters_Node0_action["The system clears all search
parameters and sets up the broker
registry table access"]:::main N_InitializeGCWUSIOParameters_Node0 -- Yes --> N_InitializeGCWUSIOParameters_Node0_action N_InitializeGCWUSIOParameters_Node0_action --> E_InitializeGCWUSIOParameters S_InitializeGCWUSIOParameters --> N_InitializeGCWUSIOParameters_Node0 N_InitializeGCWUSIOParameters_Node0 -- No --> E_InitializeGCWUSIOParameters
File: GCX015E.cbl
GIVEN:
The system needs to search for freight forwarder broker information
WHEN:
The freight forwarder broker search process is initiated
THEN:
- The system clears all search parameters
- Sets up the broker registry table access
β Consolidated Acceptance Criteria
- The system needs to search for the associated broker information → the system creates a search key by concatenating 'FW=' with the freight forwarder 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_BuildSearchKeywithFreightForwarderName(["Start Step"])
E_BuildSearchKeywithFreightForwarderName(["End Step"])
N_BuildSearchKeywithFreightForwarderName_Node0{"The system needs to search for the
associated broker information"}:::decision N_BuildSearchKeywithFreightForwarderName_Node0_action["The system creates a search key by
concatenating FW with the freight
forwarder name"]:::main N_BuildSearchKeywithFreightForwarderName_Node0 -- Yes --> N_BuildSearchKeywithFreightForwarderName_Node0_action N_BuildSearchKeywithFreightForwarderName_Node0_action --> E_BuildSearchKeywithFreightForwarderName S_BuildSearchKeywithFreightForwarderName --> N_BuildSearchKeywithFreightForwarderName_Node0 N_BuildSearchKeywithFreightForwarderName_Node0 -- No --> E_BuildSearchKeywithFreightForwarderName
associated broker information"}:::decision N_BuildSearchKeywithFreightForwarderName_Node0_action["The system creates a search key by
concatenating FW with the freight
forwarder name"]:::main N_BuildSearchKeywithFreightForwarderName_Node0 -- Yes --> N_BuildSearchKeywithFreightForwarderName_Node0_action N_BuildSearchKeywithFreightForwarderName_Node0_action --> E_BuildSearchKeywithFreightForwarderName S_BuildSearchKeywithFreightForwarderName --> N_BuildSearchKeywithFreightForwarderName_Node0 N_BuildSearchKeywithFreightForwarderName_Node0 -- No --> E_BuildSearchKeywithFreightForwarderName
File: GCX015E.cbl
GIVEN:
A freight forwarder name is available from the cargo shipment data
WHEN:
The system needs to search for the associated broker information
THEN:
The system creates a search key by concatenating 'FW=' with the freight forwarder name
β Consolidated Acceptance Criteria
- The system performs a lookup in the broker registry table → the system executes a search operation against the GCST2RT table using the freight forwarder 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_SearchGCST2RTTableforBrokerRecord(["Start Step"])
E_SearchGCST2RTTableforBrokerRecord(["End Step"])
N_SearchGCST2RTTableforBrokerRecord_Node0{"The system performs a lookup in the
broker registry table"}:::decision N_SearchGCST2RTTableforBrokerRecord_Node0_action["The system executes a search
operation against the GCST2RT table
using the freight forwarder key"]:::main N_SearchGCST2RTTableforBrokerRecord_Node0 -- Yes --> N_SearchGCST2RTTableforBrokerRecord_Node0_action N_SearchGCST2RTTableforBrokerRecord_Node0_action --> E_SearchGCST2RTTableforBrokerRecord S_SearchGCST2RTTableforBrokerRecord --> N_SearchGCST2RTTableforBrokerRecord_Node0 N_SearchGCST2RTTableforBrokerRecord_Node0 -- No --> E_SearchGCST2RTTableforBrokerRecord
broker registry table"}:::decision N_SearchGCST2RTTableforBrokerRecord_Node0_action["The system executes a search
operation against the GCST2RT table
using the freight forwarder key"]:::main N_SearchGCST2RTTableforBrokerRecord_Node0 -- Yes --> N_SearchGCST2RTTableforBrokerRecord_Node0_action N_SearchGCST2RTTableforBrokerRecord_Node0_action --> E_SearchGCST2RTTableforBrokerRecord S_SearchGCST2RTTableforBrokerRecord --> N_SearchGCST2RTTableforBrokerRecord_Node0 N_SearchGCST2RTTableforBrokerRecord_Node0 -- No --> E_SearchGCST2RTTableforBrokerRecord
File: GCX015E.cbl
GIVEN:
A search key has been constructed with the freight forwarder name
WHEN:
The system performs a lookup in the broker registry table
THEN:
The system executes a search operation against the GCST2RT table using the freight forwarder key
β Consolidated Acceptance Criteria
- The search operation successfully locates the broker record → the system retains the broker short name and related information from 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_RetrieveBrokerShortNamefromGCT2Segment(["Start Step"])
E_RetrieveBrokerShortNamefromGCT2Segment(["End Step"])
N_RetrieveBrokerShortNamefromGCT2Segment_Node0{"The search operation successfully
locates the broker record"}:::decision N_RetrieveBrokerShortNamefromGCT2Segment_Node0_action["The system retains the broker short
name and related information from
the found record"]:::main N_RetrieveBrokerShortNamefromGCT2Segment_Node0 -- Yes --> N_RetrieveBrokerShortNamefromGCT2Segment_Node0_action N_RetrieveBrokerShortNamefromGCT2Segment_Node0_action --> E_RetrieveBrokerShortNamefromGCT2Segment S_RetrieveBrokerShortNamefromGCT2Segment --> N_RetrieveBrokerShortNamefromGCT2Segment_Node0 N_RetrieveBrokerShortNamefromGCT2Segment_Node0 -- No --> E_RetrieveBrokerShortNamefromGCT2Segment
locates the broker record"}:::decision N_RetrieveBrokerShortNamefromGCT2Segment_Node0_action["The system retains the broker short
name and related information from
the found record"]:::main N_RetrieveBrokerShortNamefromGCT2Segment_Node0 -- Yes --> N_RetrieveBrokerShortNamefromGCT2Segment_Node0_action N_RetrieveBrokerShortNamefromGCT2Segment_Node0_action --> E_RetrieveBrokerShortNamefromGCT2Segment S_RetrieveBrokerShortNamefromGCT2Segment --> N_RetrieveBrokerShortNamefromGCT2Segment_Node0 N_RetrieveBrokerShortNamefromGCT2Segment_Node0 -- No --> E_RetrieveBrokerShortNamefromGCT2Segment
File: GCX015E.cbl
GIVEN:
A broker record exists in the registry table for the given freight forwarder
WHEN:
The search operation successfully locates the broker record
THEN:
- The system retains the broker short name
- Related information from the found record
β Consolidated Acceptance Criteria
- The search operation fails to locate a matching broker record → the system initializes the broker name segment with empty 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_InitializeEmptyBrokerNameSegment(["Start Step"])
E_InitializeEmptyBrokerNameSegment(["End Step"])
N_InitializeEmptyBrokerNameSegment_Node0{"The search operation fails to
locate a matching broker record"}:::decision N_InitializeEmptyBrokerNameSegment_Node0_action["The system initializes the broker
name segment with empty values"]:::main N_InitializeEmptyBrokerNameSegment_Node0 -- Yes --> N_InitializeEmptyBrokerNameSegment_Node0_action N_InitializeEmptyBrokerNameSegment_Node0_action --> E_InitializeEmptyBrokerNameSegment S_InitializeEmptyBrokerNameSegment --> N_InitializeEmptyBrokerNameSegment_Node0 N_InitializeEmptyBrokerNameSegment_Node0 -- No --> E_InitializeEmptyBrokerNameSegment
locate a matching broker record"}:::decision N_InitializeEmptyBrokerNameSegment_Node0_action["The system initializes the broker
name segment with empty values"]:::main N_InitializeEmptyBrokerNameSegment_Node0 -- Yes --> N_InitializeEmptyBrokerNameSegment_Node0_action N_InitializeEmptyBrokerNameSegment_Node0_action --> E_InitializeEmptyBrokerNameSegment S_InitializeEmptyBrokerNameSegment --> N_InitializeEmptyBrokerNameSegment_Node0 N_InitializeEmptyBrokerNameSegment_Node0 -- No --> E_InitializeEmptyBrokerNameSegment
File: GCX015E.cbl
GIVEN:
No broker record exists in the registry table for the given freight forwarder
WHEN:
The search operation fails to locate a matching broker record
THEN:
The system initializes the broker name segment with empty values
β Consolidated Acceptance Criteria
- The system needs to determine the location ID for broker lookup → if M1203 location ID is available and not spaces, use M1203 location ID, otherwise use P401 location ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineLocationIDtoUse(["Start Step"])
E_DetermineLocationIDtoUse(["End Step"])
N_DetermineLocationIDtoUse_Node0{"The system needs to determine the
location ID for broker lookup"}:::decision N_DetermineLocationIDtoUse_Node0_action["If M1203 location ID is available
and not spaces, use M1203 location
ID, otherwise use P401 location ID"]:::main N_DetermineLocationIDtoUse_Node0 -- Yes --> N_DetermineLocationIDtoUse_Node0_action N_DetermineLocationIDtoUse_Node0_action --> E_DetermineLocationIDtoUse S_DetermineLocationIDtoUse --> N_DetermineLocationIDtoUse_Node0 N_DetermineLocationIDtoUse_Node0 -- No --> E_DetermineLocationIDtoUse
location ID for broker lookup"}:::decision N_DetermineLocationIDtoUse_Node0_action["If M1203 location ID is available
and not spaces, use M1203 location
ID, otherwise use P401 location ID"]:::main N_DetermineLocationIDtoUse_Node0 -- Yes --> N_DetermineLocationIDtoUse_Node0_action N_DetermineLocationIDtoUse_Node0_action --> E_DetermineLocationIDtoUse S_DetermineLocationIDtoUse --> N_DetermineLocationIDtoUse_Node0 N_DetermineLocationIDtoUse_Node0 -- No --> E_DetermineLocationIDtoUse
File: GCX015E.cbl
GIVEN:
A cargo shipment requires broker contact information retrieval
WHEN:
The system needs to determine the location ID for broker lookup
THEN:
- If m1203 location id is available
- Not spaces, use m1203 location id, otherwise use p401 location id
β Consolidated Acceptance Criteria
- The system builds the broker contact lookup key → concatenate broker short name with the selected location ID to form the lookup key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildBrokerKeywithShortNameLocationID(["Start Step"])
E_BuildBrokerKeywithShortNameLocationID(["End Step"])
N_BuildBrokerKeywithShortNameLocationID_Node0{"The system builds the broker
contact lookup key"}:::decision N_BuildBrokerKeywithShortNameLocationID_Node0_action["Concatenate broker short name with
the selected location ID to form the
lookup key"]:::main N_BuildBrokerKeywithShortNameLocationID_Node0 -- Yes --> N_BuildBrokerKeywithShortNameLocationID_Node0_action N_BuildBrokerKeywithShortNameLocationID_Node0_action --> E_BuildBrokerKeywithShortNameLocationID S_BuildBrokerKeywithShortNameLocationID --> N_BuildBrokerKeywithShortNameLocationID_Node0 N_BuildBrokerKeywithShortNameLocationID_Node0 -- No --> E_BuildBrokerKeywithShortNameLocationID
contact lookup key"}:::decision N_BuildBrokerKeywithShortNameLocationID_Node0_action["Concatenate broker short name with
the selected location ID to form the
lookup key"]:::main N_BuildBrokerKeywithShortNameLocationID_Node0 -- Yes --> N_BuildBrokerKeywithShortNameLocationID_Node0_action N_BuildBrokerKeywithShortNameLocationID_Node0_action --> E_BuildBrokerKeywithShortNameLocationID S_BuildBrokerKeywithShortNameLocationID --> N_BuildBrokerKeywithShortNameLocationID_Node0 N_BuildBrokerKeywithShortNameLocationID_Node0 -- No --> E_BuildBrokerKeywithShortNameLocationID
File: GCX015E.cbl
GIVEN:
Broker short name and location ID are available
WHEN:
The system builds the broker contact lookup key
THEN:
Concatenate broker short name with the selected location ID to form the lookup key
β Consolidated Acceptance Criteria
- The system attempts to retrieve broker basic information from BK table → if BK segment is not found or retrieval fails, initialize empty BK segment, otherwise use retrieved BK 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_RetrieveBKTableSegment(["Start Step"])
E_RetrieveBKTableSegment(["End Step"])
N_RetrieveBKTableSegment_Node0{"The system attempts to retrieve
broker basic information from BK
table"}:::decision N_RetrieveBKTableSegment_Node0_action["If BK segment is not found or
retrieval fails, initialize empty BK
segment, otherwise use retrieved BK
segment data"]:::main N_RetrieveBKTableSegment_Node0 -- Yes --> N_RetrieveBKTableSegment_Node0_action N_RetrieveBKTableSegment_Node0_action --> E_RetrieveBKTableSegment S_RetrieveBKTableSegment --> N_RetrieveBKTableSegment_Node0 N_RetrieveBKTableSegment_Node0 -- No --> E_RetrieveBKTableSegment
broker basic information from BK
table"}:::decision N_RetrieveBKTableSegment_Node0_action["If BK segment is not found or
retrieval fails, initialize empty BK
segment, otherwise use retrieved BK
segment data"]:::main N_RetrieveBKTableSegment_Node0 -- Yes --> N_RetrieveBKTableSegment_Node0_action N_RetrieveBKTableSegment_Node0_action --> E_RetrieveBKTableSegment S_RetrieveBKTableSegment --> N_RetrieveBKTableSegment_Node0 N_RetrieveBKTableSegment_Node0 -- No --> E_RetrieveBKTableSegment
File: GCX015E.cbl
GIVEN:
A broker lookup key has been constructed
WHEN:
The system attempts to retrieve broker basic information from BK table
THEN:
If BK segment is not found or retrieval fails, initialize empty BK segment, otherwise use retrieved BK segment data
β Consolidated Acceptance Criteria
- The system attempts to retrieve broker contact details from B1 table → if B1 segment is not found or retrieval fails, initialize empty B1 segment, otherwise use retrieved B1 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_RetrieveB1TableSegment(["Start Step"])
E_RetrieveB1TableSegment(["End Step"])
N_RetrieveB1TableSegment_Node0{"The system attempts to retrieve
broker contact details from B1 table"}:::decision N_RetrieveB1TableSegment_Node0_action["If B1 segment is not found or
retrieval fails, initialize empty B1
segment, otherwise use retrieved B1
segment data"]:::main N_RetrieveB1TableSegment_Node0 -- Yes --> N_RetrieveB1TableSegment_Node0_action N_RetrieveB1TableSegment_Node0_action --> E_RetrieveB1TableSegment S_RetrieveB1TableSegment --> N_RetrieveB1TableSegment_Node0 N_RetrieveB1TableSegment_Node0 -- No --> E_RetrieveB1TableSegment
broker contact details from B1 table"}:::decision N_RetrieveB1TableSegment_Node0_action["If B1 segment is not found or
retrieval fails, initialize empty B1
segment, otherwise use retrieved B1
segment data"]:::main N_RetrieveB1TableSegment_Node0 -- Yes --> N_RetrieveB1TableSegment_Node0_action N_RetrieveB1TableSegment_Node0_action --> E_RetrieveB1TableSegment S_RetrieveB1TableSegment --> N_RetrieveB1TableSegment_Node0 N_RetrieveB1TableSegment_Node0 -- No --> E_RetrieveB1TableSegment
File: GCX015E.cbl
GIVEN:
Broker basic information retrieval has been attempted
WHEN:
The system attempts to retrieve broker contact details from B1 table
THEN:
If B1 segment is not found or retrieval fails, initialize empty B1 segment, otherwise use retrieved B1 segment data
β Consolidated Acceptance Criteria
- The system checks the internet usage preference → if BK use internet flag equals 'Y', set up internet email address from B1 segment and mark email to freight forwarder flag as 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_CheckInternetUsageFlag(["Start Step"])
E_CheckInternetUsageFlag(["End Step"])
N_CheckInternetUsageFlag_Node0{"The system checks the internet
usage preference"}:::decision N_CheckInternetUsageFlag_Node0_action["If BK use internet flag equals Y ,
set up internet email address from
B1 segment and mark email to freight
forwarder flag as true"]:::main N_CheckInternetUsageFlag_Node0 -- Yes --> N_CheckInternetUsageFlag_Node0_action N_CheckInternetUsageFlag_Node0_action --> E_CheckInternetUsageFlag S_CheckInternetUsageFlag --> N_CheckInternetUsageFlag_Node0 N_CheckInternetUsageFlag_Node0 -- No --> E_CheckInternetUsageFlag
usage preference"}:::decision N_CheckInternetUsageFlag_Node0_action["If BK use internet flag equals Y ,
set up internet email address from
B1 segment and mark email to freight
forwarder flag as true"]:::main N_CheckInternetUsageFlag_Node0 -- Yes --> N_CheckInternetUsageFlag_Node0_action N_CheckInternetUsageFlag_Node0_action --> E_CheckInternetUsageFlag S_CheckInternetUsageFlag --> N_CheckInternetUsageFlag_Node0 N_CheckInternetUsageFlag_Node0 -- No --> E_CheckInternetUsageFlag
File: GCX015E.cbl
GIVEN:
Broker contact information has been retrieved from BK and B1 tables
WHEN:
The system checks the internet usage preference
THEN:
- If bk use internet flag equals 'y', set up internet email address from b1 segment
- Mark email to freight forwarder flag as true
β Consolidated Acceptance Criteria
- The system needs to select a location identifier for broker table lookup and M1203 Location ID contains actual data (not spaces) → the system shall use M1203 Location ID as the primary location identifier for the broker information 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_UseM1203LocationID(["Start Step"])
E_UseM1203LocationID(["End Step"])
N_UseM1203LocationID_Node0{"The system needs to select a
location identifier for broker table
lookup and M1203 Location ID
contains actual data not spaces"}:::decision N_UseM1203LocationID_Node0_action["The system shall use M1203 Location
ID as the primary location
identifier for the broker
information lookup"]:::main N_UseM1203LocationID_Node0 -- Yes --> N_UseM1203LocationID_Node0_action N_UseM1203LocationID_Node0_action --> E_UseM1203LocationID S_UseM1203LocationID --> N_UseM1203LocationID_Node0 N_UseM1203LocationID_Node0 -- No --> E_UseM1203LocationID
location identifier for broker table
lookup and M1203 Location ID
contains actual data not spaces"}:::decision N_UseM1203LocationID_Node0_action["The system shall use M1203 Location
ID as the primary location
identifier for the broker
information lookup"]:::main N_UseM1203LocationID_Node0 -- Yes --> N_UseM1203LocationID_Node0_action N_UseM1203LocationID_Node0_action --> E_UseM1203LocationID S_UseM1203LocationID --> N_UseM1203LocationID_Node0 N_UseM1203LocationID_Node0 -- No --> E_UseM1203LocationID
File: GCX015E.cbl
GIVEN:
A freight forwarder broker requires location-specific information lookup and both M1203 Location ID and P401 Location ID are available in the system
WHEN:
- The system needs to select a location identifier for broker table lookup
- M1203 location id contains actual data (not spaces)
THEN:
The system shall use M1203 Location ID as the primary location identifier for the broker information lookup
β Consolidated Acceptance Criteria
- The system needs to select a location identifier for broker table lookup and M1203 Location ID is empty or contains only spaces → the system shall use P401 Location ID as the default location identifier for the broker information 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_UseP401LocationIDasDefault(["Start Step"])
E_UseP401LocationIDasDefault(["End Step"])
N_UseP401LocationIDasDefault_Node0{"The system needs to select a
location identifier for broker table
lookup and M1203 Location ID is
empty or contains only spaces"}:::decision N_UseP401LocationIDasDefault_Node0_action["The system shall use P401 Location
ID as the default location
identifier for the broker
information lookup"]:::main N_UseP401LocationIDasDefault_Node0 -- Yes --> N_UseP401LocationIDasDefault_Node0_action N_UseP401LocationIDasDefault_Node0_action --> E_UseP401LocationIDasDefault S_UseP401LocationIDasDefault --> N_UseP401LocationIDasDefault_Node0 N_UseP401LocationIDasDefault_Node0 -- No --> E_UseP401LocationIDasDefault
location identifier for broker table
lookup and M1203 Location ID is
empty or contains only spaces"}:::decision N_UseP401LocationIDasDefault_Node0_action["The system shall use P401 Location
ID as the default location
identifier for the broker
information lookup"]:::main N_UseP401LocationIDasDefault_Node0 -- Yes --> N_UseP401LocationIDasDefault_Node0_action N_UseP401LocationIDasDefault_Node0_action --> E_UseP401LocationIDasDefault S_UseP401LocationIDasDefault --> N_UseP401LocationIDasDefault_Node0 N_UseP401LocationIDasDefault_Node0 -- No --> E_UseP401LocationIDasDefault
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A freight forwarder broker requires location-specific information lookup and M1203 Location ID is not available (contains spaces)
WHEN:
- The system needs to select a location identifier for broker table lookup
- M1203 location id is empty or contains only spaces
THEN:
The system shall use P401 Location ID as the default location identifier for the broker information lookup
β Consolidated Acceptance Criteria
- The system needs to create a lookup key for accessing broker information in the table → the system shall concatenate the broker short name with the selected location identifier to form the complete broker key for table lookup operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateBrokerKeyforTableLookup(["Start Step"])
E_CreateBrokerKeyforTableLookup(["End Step"])
N_CreateBrokerKeyforTableLookup_Node0{"The system needs to create a lookup
key for accessing broker information
in the table"}:::decision N_CreateBrokerKeyforTableLookup_Node0_action["The system shall concatenate the
broker short name with the selected
location identifier to form the
complete broker key for table lookup
operations"]:::main N_CreateBrokerKeyforTableLookup_Node0 -- Yes --> N_CreateBrokerKeyforTableLookup_Node0_action N_CreateBrokerKeyforTableLookup_Node0_action --> E_CreateBrokerKeyforTableLookup S_CreateBrokerKeyforTableLookup --> N_CreateBrokerKeyforTableLookup_Node0 N_CreateBrokerKeyforTableLookup_Node0 -- No --> E_CreateBrokerKeyforTableLookup
key for accessing broker information
in the table"}:::decision N_CreateBrokerKeyforTableLookup_Node0_action["The system shall concatenate the
broker short name with the selected
location identifier to form the
complete broker key for table lookup
operations"]:::main N_CreateBrokerKeyforTableLookup_Node0 -- Yes --> N_CreateBrokerKeyforTableLookup_Node0_action N_CreateBrokerKeyforTableLookup_Node0_action --> E_CreateBrokerKeyforTableLookup S_CreateBrokerKeyforTableLookup --> N_CreateBrokerKeyforTableLookup_Node0 N_CreateBrokerKeyforTableLookup_Node0 -- No --> E_CreateBrokerKeyforTableLookup
File: GCX015E.cbl
GIVEN:
A broker short name has been retrieved and a location identifier has been selected (either M1203 or P401)
WHEN:
The system needs to create a lookup key for accessing broker information in the table
THEN:
The system shall concatenate the broker short name with the selected location identifier to form the complete broker key for table lookup operations
β Consolidated Acceptance Criteria
- The system prepares to access the freight waybill system → the FWWWBIO parameters are cleared and initialized 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_InitializeFWWWBIOParameters(["Start Step"])
E_InitializeFWWWBIOParameters(["End Step"])
N_InitializeFWWWBIOParameters_Node0{"The system prepares to access the
freight waybill system"}:::decision N_InitializeFWWWBIOParameters_Node0_action["The FWWWBIO parameters are cleared
and initialized to spaces"]:::main N_InitializeFWWWBIOParameters_Node0 -- Yes --> N_InitializeFWWWBIOParameters_Node0_action N_InitializeFWWWBIOParameters_Node0_action --> E_InitializeFWWWBIOParameters S_InitializeFWWWBIOParameters --> N_InitializeFWWWBIOParameters_Node0 N_InitializeFWWWBIOParameters_Node0 -- No --> E_InitializeFWWWBIOParameters
freight waybill system"}:::decision N_InitializeFWWWBIOParameters_Node0_action["The FWWWBIO parameters are cleared
and initialized to spaces"]:::main N_InitializeFWWWBIOParameters_Node0 -- Yes --> N_InitializeFWWWBIOParameters_Node0_action N_InitializeFWWWBIOParameters_Node0_action --> E_InitializeFWWWBIOParameters S_InitializeFWWWBIOParameters --> N_InitializeFWWWBIOParameters_Node0 N_InitializeFWWWBIOParameters_Node0 -- No --> E_InitializeFWWWBIOParameters
File: GCX015E.cbl
GIVEN:
A request to retrieve shipment root data is initiated
WHEN:
The system prepares to access the freight waybill system
THEN:
- The fwwwbio parameters are cleared
- Initialized to spaces
β Consolidated Acceptance Criteria
- The system needs to specify what type of data to retrieve → the segment type is set to 'SHIPROOT' to indicate shipment root data 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_SetSegmentTypetoSHIPROOT(["Start Step"])
E_SetSegmentTypetoSHIPROOT(["End Step"])
N_SetSegmentTypetoSHIPROOT_Node0{"The system needs to specify what
type of data to retrieve"}:::decision N_SetSegmentTypetoSHIPROOT_Node0_action["The segment type is set to SHIPROOT
to indicate shipment root data
retrieval"]:::main N_SetSegmentTypetoSHIPROOT_Node0 -- Yes --> N_SetSegmentTypetoSHIPROOT_Node0_action N_SetSegmentTypetoSHIPROOT_Node0_action --> E_SetSegmentTypetoSHIPROOT S_SetSegmentTypetoSHIPROOT --> N_SetSegmentTypetoSHIPROOT_Node0 N_SetSegmentTypetoSHIPROOT_Node0 -- No --> E_SetSegmentTypetoSHIPROOT
type of data to retrieve"}:::decision N_SetSegmentTypetoSHIPROOT_Node0_action["The segment type is set to SHIPROOT
to indicate shipment root data
retrieval"]:::main N_SetSegmentTypetoSHIPROOT_Node0 -- Yes --> N_SetSegmentTypetoSHIPROOT_Node0_action N_SetSegmentTypetoSHIPROOT_Node0_action --> E_SetSegmentTypetoSHIPROOT S_SetSegmentTypetoSHIPROOT --> N_SetSegmentTypetoSHIPROOT_Node0 N_SetSegmentTypetoSHIPROOT_Node0 -- No --> E_SetSegmentTypetoSHIPROOT
File: GCX015E.cbl
GIVEN:
The freight waybill system parameters are initialized
WHEN:
The system needs to specify what type of data to retrieve
THEN:
The segment type is set to 'SHIPROOT' to indicate shipment root data retrieval
β Consolidated Acceptance Criteria
- The system needs to specify the database operation type → the function code is set to 'GU' to perform a get unique 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_SetFunctionCodetoGUGetUnique(["Start Step"])
E_SetFunctionCodetoGUGetUnique(["End Step"])
N_SetFunctionCodetoGUGetUnique_Node0{"The system needs to specify the
database operation type"}:::decision N_SetFunctionCodetoGUGetUnique_Node0_action["The function code is set to GU to
perform a get unique operation"]:::main N_SetFunctionCodetoGUGetUnique_Node0 -- Yes --> N_SetFunctionCodetoGUGetUnique_Node0_action N_SetFunctionCodetoGUGetUnique_Node0_action --> E_SetFunctionCodetoGUGetUnique S_SetFunctionCodetoGUGetUnique --> N_SetFunctionCodetoGUGetUnique_Node0 N_SetFunctionCodetoGUGetUnique_Node0 -- No --> E_SetFunctionCodetoGUGetUnique
database operation type"}:::decision N_SetFunctionCodetoGUGetUnique_Node0_action["The function code is set to GU to
perform a get unique operation"]:::main N_SetFunctionCodetoGUGetUnique_Node0 -- Yes --> N_SetFunctionCodetoGUGetUnique_Node0_action N_SetFunctionCodetoGUGetUnique_Node0_action --> E_SetFunctionCodetoGUGetUnique S_SetFunctionCodetoGUGetUnique --> N_SetFunctionCodetoGUGetUnique_Node0 N_SetFunctionCodetoGUGetUnique_Node0 -- No --> E_SetFunctionCodetoGUGetUnique
File: GCX015E.cbl
GIVEN:
The segment type is set to SHIPROOT
WHEN:
The system needs to specify the database operation type
THEN:
The function code is set to 'GU' to perform a get unique operation
β Consolidated Acceptance Criteria
- The system needs to specify acceptable return status codes → the accept status is set to 'GE' to allow successful 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_SetAcceptStatustoGE(["Start Step"])
E_SetAcceptStatustoGE(["End Step"])
N_SetAcceptStatustoGE_Node0{"The system needs to specify
acceptable return status codes"}:::decision N_SetAcceptStatustoGE_Node0_action["The accept status is set to GE to
allow successful retrieval
operations"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node0 -- No --> E_SetAcceptStatustoGE
acceptable return status codes"}:::decision N_SetAcceptStatustoGE_Node0_action["The accept status is set to GE to
allow successful retrieval
operations"]:::main N_SetAcceptStatustoGE_Node0 -- Yes --> N_SetAcceptStatustoGE_Node0_action N_SetAcceptStatustoGE_Node0_action --> E_SetAcceptStatustoGE S_SetAcceptStatustoGE --> N_SetAcceptStatustoGE_Node0 N_SetAcceptStatustoGE_Node0 -- No --> E_SetAcceptStatustoGE
File: GCX015E.cbl
GIVEN:
The function code is set to 'GU' for get unique operation
WHEN:
The system needs to specify acceptable return status codes
THEN:
The accept status is set to 'GE' to allow successful retrieval operations
β Consolidated Acceptance Criteria
- The system needs to identify the specific shipment to retrieve → the waybill key is extracted from the cargo record field RT082-WAYBILL-KEY and assigned to the root key parameter
- The system needs to retrieve associated shipment root data → the waybill key from field GCUSRT-RT082-WAYBILL-KEY is extracted and used as the root key for database lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillKeyfromCargoRecord(["Start Step"])
E_ExtractWaybillKeyfromCargoRecord(["End Step"])
N_ExtractWaybillKeyfromCargoRecord_Node0{"The system needs to identify the
specific shipment to retrieve"}:::decision N_ExtractWaybillKeyfromCargoRecord_Node0_action["The waybill key is extracted from
the cargo record field
RT082-WAYBILL-KEY and assigned to
the root key parameter"]:::main N_ExtractWaybillKeyfromCargoRecord_Node0 -- Yes --> N_ExtractWaybillKeyfromCargoRecord_Node0_action N_ExtractWaybillKeyfromCargoRecord_Node0_action --> E_ExtractWaybillKeyfromCargoRecord S_ExtractWaybillKeyfromCargoRecord --> N_ExtractWaybillKeyfromCargoRecord_Node0 N_ExtractWaybillKeyfromCargoRecord_Node1{"The system needs to retrieve
associated shipment root data"}:::decision N_ExtractWaybillKeyfromCargoRecord_Node1_action["The waybill key from field
GCUSRT-RT082-WAYBILL-KEY is
extracted and used as the root key
for database lookup"]:::main N_ExtractWaybillKeyfromCargoRecord_Node1 -- Yes --> N_ExtractWaybillKeyfromCargoRecord_Node1_action N_ExtractWaybillKeyfromCargoRecord_Node1_action --> E_ExtractWaybillKeyfromCargoRecord N_ExtractWaybillKeyfromCargoRecord_Node0 -- No --> N_ExtractWaybillKeyfromCargoRecord_Node1 N_ExtractWaybillKeyfromCargoRecord_Node1 -- No --> E_ExtractWaybillKeyfromCargoRecord
specific shipment to retrieve"}:::decision N_ExtractWaybillKeyfromCargoRecord_Node0_action["The waybill key is extracted from
the cargo record field
RT082-WAYBILL-KEY and assigned to
the root key parameter"]:::main N_ExtractWaybillKeyfromCargoRecord_Node0 -- Yes --> N_ExtractWaybillKeyfromCargoRecord_Node0_action N_ExtractWaybillKeyfromCargoRecord_Node0_action --> E_ExtractWaybillKeyfromCargoRecord S_ExtractWaybillKeyfromCargoRecord --> N_ExtractWaybillKeyfromCargoRecord_Node0 N_ExtractWaybillKeyfromCargoRecord_Node1{"The system needs to retrieve
associated shipment root data"}:::decision N_ExtractWaybillKeyfromCargoRecord_Node1_action["The waybill key from field
GCUSRT-RT082-WAYBILL-KEY is
extracted and used as the root key
for database lookup"]:::main N_ExtractWaybillKeyfromCargoRecord_Node1 -- Yes --> N_ExtractWaybillKeyfromCargoRecord_Node1_action N_ExtractWaybillKeyfromCargoRecord_Node1_action --> E_ExtractWaybillKeyfromCargoRecord N_ExtractWaybillKeyfromCargoRecord_Node0 -- No --> N_ExtractWaybillKeyfromCargoRecord_Node1 N_ExtractWaybillKeyfromCargoRecord_Node1 -- No --> E_ExtractWaybillKeyfromCargoRecord
File: GCX015E.cbl
GIVEN:
A cargo record exists with waybill information
WHEN:
The system needs to identify the specific shipment to retrieve
THEN:
- The waybill key is extracted from the cargo record field rt082-waybill-key
- Assigned to the root key parameter
File: GCX015E.cbl
GIVEN:
A cargo record with waybill information exists
WHEN:
The system needs to retrieve associated shipment root data
THEN:
- The waybill key from field gcusrt-rt082-waybill-key is extracted
- Used as the root key for database lookup
β Consolidated Acceptance Criteria
- The system executes the freight waybill data retrieval → the FWCWBIO program is called with the configured parameters to retrieve the shipment root data
- The system executes the database retrieval operation → the FWCWBIO program is called with the configured parameters to retrieve shipment root data from the SHIPROOT 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_CallFWCWBIOtoRetrieveShipmentRoot(["Start Step"])
E_CallFWCWBIOtoRetrieveShipmentRoot(["End Step"])
N_CallFWCWBIOtoRetrieveShipmentRoot_Node0{"The system executes the freight
waybill data retrieval"}:::decision N_CallFWCWBIOtoRetrieveShipmentRoot_Node0_action["The FWCWBIO program is called with
the configured parameters to
retrieve the shipment root data"]:::main N_CallFWCWBIOtoRetrieveShipmentRoot_Node0 -- Yes --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node0_action N_CallFWCWBIOtoRetrieveShipmentRoot_Node0_action --> E_CallFWCWBIOtoRetrieveShipmentRoot S_CallFWCWBIOtoRetrieveShipmentRoot --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node0 N_CallFWCWBIOtoRetrieveShipmentRoot_Node1{"The system executes the database
retrieval operation"}:::decision N_CallFWCWBIOtoRetrieveShipmentRoot_Node1_action["The FWCWBIO program is called with
the configured parameters to
retrieve shipment root data from the
SHIPROOT database"]:::main N_CallFWCWBIOtoRetrieveShipmentRoot_Node1 -- Yes --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node1_action N_CallFWCWBIOtoRetrieveShipmentRoot_Node1_action --> E_CallFWCWBIOtoRetrieveShipmentRoot N_CallFWCWBIOtoRetrieveShipmentRoot_Node0 -- No --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node1 N_CallFWCWBIOtoRetrieveShipmentRoot_Node1 -- No --> E_CallFWCWBIOtoRetrieveShipmentRoot
waybill data retrieval"}:::decision N_CallFWCWBIOtoRetrieveShipmentRoot_Node0_action["The FWCWBIO program is called with
the configured parameters to
retrieve the shipment root data"]:::main N_CallFWCWBIOtoRetrieveShipmentRoot_Node0 -- Yes --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node0_action N_CallFWCWBIOtoRetrieveShipmentRoot_Node0_action --> E_CallFWCWBIOtoRetrieveShipmentRoot S_CallFWCWBIOtoRetrieveShipmentRoot --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node0 N_CallFWCWBIOtoRetrieveShipmentRoot_Node1{"The system executes the database
retrieval operation"}:::decision N_CallFWCWBIOtoRetrieveShipmentRoot_Node1_action["The FWCWBIO program is called with
the configured parameters to
retrieve shipment root data from the
SHIPROOT database"]:::main N_CallFWCWBIOtoRetrieveShipmentRoot_Node1 -- Yes --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node1_action N_CallFWCWBIOtoRetrieveShipmentRoot_Node1_action --> E_CallFWCWBIOtoRetrieveShipmentRoot N_CallFWCWBIOtoRetrieveShipmentRoot_Node0 -- No --> N_CallFWCWBIOtoRetrieveShipmentRoot_Node1 N_CallFWCWBIOtoRetrieveShipmentRoot_Node1 -- No --> E_CallFWCWBIOtoRetrieveShipmentRoot
File: GCX015E.cbl
GIVEN:
All parameters are configured with segment type 'SHIPROOT', function 'GU', accept status 'GE', and waybill key
WHEN:
The system executes the freight waybill data retrieval
THEN:
The FWCWBIO program is called with the configured parameters to retrieve the shipment root data
File: GCX015E.cbl
GIVEN:
All shipment root retrieval parameters are configured with waybill key, segment type, function code, and accept status
WHEN:
The system executes the database retrieval operation
THEN:
The FWCWBIO program is called with the configured parameters to retrieve shipment root data from the SHIPROOT database
β Consolidated Acceptance Criteria
- The system checks for the presence of K3 segment in the message → if K3 segment is found, extract the segment data for processing, otherwise create a default K3 segment with current date and time
- The system checks for the presence of K3 segment → if K3 segment is not found, record an error message 'K3 SEGMENT NOT FOUND ON 355 TRANSACTION' and create a default K3 segment using current machine date and time, then set the K3 segment found 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_K3SegmentFound(["Start Step"])
E_K3SegmentFound(["End Step"])
N_K3SegmentFound_Node0{"The system checks for the presence
of K3 segment in the message"}:::decision N_K3SegmentFound_Node0_action["If K3 segment is found, extract the
segment data for processing,
otherwise create a default K3
segment with current date and time"]:::main N_K3SegmentFound_Node0 -- Yes --> N_K3SegmentFound_Node0_action N_K3SegmentFound_Node0_action --> E_K3SegmentFound S_K3SegmentFound --> N_K3SegmentFound_Node0 N_K3SegmentFound_Node1{"The system checks for the presence
of K3 segment"}:::decision N_K3SegmentFound_Node1_action["If K3 segment is not found, record
an error message K3 SEGMENT NOT
FOUND ON 355 TRANSACTION and create
a default K3 segment using current
machine date and time, then set the
K3 segment found flag to true"]:::main N_K3SegmentFound_Node1 -- Yes --> N_K3SegmentFound_Node1_action N_K3SegmentFound_Node1_action --> E_K3SegmentFound N_K3SegmentFound_Node0 -- No --> N_K3SegmentFound_Node1 N_K3SegmentFound_Node1 -- No --> E_K3SegmentFound
of K3 segment in the message"}:::decision N_K3SegmentFound_Node0_action["If K3 segment is found, extract the
segment data for processing,
otherwise create a default K3
segment with current date and time"]:::main N_K3SegmentFound_Node0 -- Yes --> N_K3SegmentFound_Node0_action N_K3SegmentFound_Node0_action --> E_K3SegmentFound S_K3SegmentFound --> N_K3SegmentFound_Node0 N_K3SegmentFound_Node1{"The system checks for the presence
of K3 segment"}:::decision N_K3SegmentFound_Node1_action["If K3 segment is not found, record
an error message K3 SEGMENT NOT
FOUND ON 355 TRANSACTION and create
a default K3 segment using current
machine date and time, then set the
K3 segment found flag to true"]:::main N_K3SegmentFound_Node1 -- Yes --> N_K3SegmentFound_Node1_action N_K3SegmentFound_Node1_action --> E_K3SegmentFound N_K3SegmentFound_Node0 -- No --> N_K3SegmentFound_Node1 N_K3SegmentFound_Node1 -- No --> E_K3SegmentFound
File: GCX015E.cbl
GIVEN:
A message is being processed for accept/reject count validation
WHEN:
The system checks for the presence of K3 segment in the message
THEN:
- If k3 segment is found, extract the segment data for processing, otherwise create a default k3 segment with current date
- Time
File: GCX015E.cbl
GIVEN:
A message is being processed for segment validation and M10 and P4 validations are complete
WHEN:
The system checks for the presence of K3 segment
THEN:
- If k3 segment is not found, record an error message 'k3 segment not found on 355 transaction' and create a default k3 segment using current machine date
- Time, then set the k3 segment found flag to true
β Consolidated Acceptance Criteria
- The system needs to process accept/reject counts → create a default K3 segment using current machine date and time, set K3 segment found 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_CreateDefaultK3withCurrentDateTime(["Start Step"])
E_CreateDefaultK3withCurrentDateTime(["End Step"])
N_CreateDefaultK3withCurrentDateTime_Node0{"The system needs to process
acceptreject counts"}:::decision N_CreateDefaultK3withCurrentDateTime_Node0_action["Create a default K3 segment using
current machine date and time, set
K3 segment found flag to true"]:::main N_CreateDefaultK3withCurrentDateTime_Node0 -- Yes --> N_CreateDefaultK3withCurrentDateTime_Node0_action N_CreateDefaultK3withCurrentDateTime_Node0_action --> E_CreateDefaultK3withCurrentDateTime S_CreateDefaultK3withCurrentDateTime --> N_CreateDefaultK3withCurrentDateTime_Node0 N_CreateDefaultK3withCurrentDateTime_Node0 -- No --> E_CreateDefaultK3withCurrentDateTime
acceptreject counts"}:::decision N_CreateDefaultK3withCurrentDateTime_Node0_action["Create a default K3 segment using
current machine date and time, set
K3 segment found flag to true"]:::main N_CreateDefaultK3withCurrentDateTime_Node0 -- Yes --> N_CreateDefaultK3withCurrentDateTime_Node0_action N_CreateDefaultK3withCurrentDateTime_Node0_action --> E_CreateDefaultK3withCurrentDateTime S_CreateDefaultK3withCurrentDateTime --> N_CreateDefaultK3withCurrentDateTime_Node0 N_CreateDefaultK3withCurrentDateTime_Node0 -- No --> E_CreateDefaultK3withCurrentDateTime
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A message is being processed and K3 segment is not found
WHEN:
The system needs to process accept/reject counts
THEN:
- Create a default k3 segment using current machine date
- Time, set k3 segment found flag to true
β Consolidated Acceptance Criteria
- If the total reject count field → if total reject count equals zero, proceed to validate accept count, otherwise set error status
- The total reject count in the K3 segment is greater than zero → set error status indicating the transaction has rejections
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TotalRejectCount0(["Start Step"])
E_TotalRejectCount0(["End Step"])
N_TotalRejectCount0_Node0{"The system evaluates the total
reject count field"}:::decision N_TotalRejectCount0_Node0_action["If total reject count equals zero,
proceed to validate accept count,
otherwise set error status"]:::exclusion N_TotalRejectCount0_Node0 -- Yes -->|Alternative| N_TotalRejectCount0_Node0_action N_TotalRejectCount0_Node0_action --> E_TotalRejectCount0 S_TotalRejectCount0 --> N_TotalRejectCount0_Node0 N_TotalRejectCount0_Node1{"The total reject count in the K3
segment is greater than zero"}:::decision N_TotalRejectCount0_Node1_action["Set error status indicating the
transaction has rejections"]:::main N_TotalRejectCount0_Node1 -- Yes --> N_TotalRejectCount0_Node1_action N_TotalRejectCount0_Node1_action --> E_TotalRejectCount0 N_TotalRejectCount0_Node0 -- No --> N_TotalRejectCount0_Node1 N_TotalRejectCount0_Node1 -- No --> E_TotalRejectCount0
reject count field"}:::decision N_TotalRejectCount0_Node0_action["If total reject count equals zero,
proceed to validate accept count,
otherwise set error status"]:::exclusion N_TotalRejectCount0_Node0 -- Yes -->|Alternative| N_TotalRejectCount0_Node0_action N_TotalRejectCount0_Node0_action --> E_TotalRejectCount0 S_TotalRejectCount0 --> N_TotalRejectCount0_Node0 N_TotalRejectCount0_Node1{"The total reject count in the K3
segment is greater than zero"}:::decision N_TotalRejectCount0_Node1_action["Set error status indicating the
transaction has rejections"]:::main N_TotalRejectCount0_Node1 -- Yes --> N_TotalRejectCount0_Node1_action N_TotalRejectCount0_Node1_action --> E_TotalRejectCount0 N_TotalRejectCount0_Node0 -- No --> N_TotalRejectCount0_Node1 N_TotalRejectCount0_Node1 -- No --> E_TotalRejectCount0
File: GCX015E.cbl
GIVEN:
K3 segment data is available for processing
WHEN:
The system evaluates the total reject count field
THEN:
If total reject count equals zero, proceed to validate accept count, otherwise set error status
File: GCX015E.cbl
GIVEN:
A K3 segment is being processed for US Customs response
WHEN:
The total reject count in the K3 segment is greater than zero
THEN:
Set error status indicating the transaction has rejections
β Consolidated Acceptance Criteria
- If the total accept count field → if total accept count is greater than zero, proceed to train status check, otherwise log zero counts message and set acknowledgment status
- The total accept count in the K3 segment is zero → log zero counts message and set acknowledgment 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_TotalAcceptCount0(["Start Step"])
E_TotalAcceptCount0(["End Step"])
N_TotalAcceptCount0_Node0{"The system evaluates the total
accept count field"}:::decision N_TotalAcceptCount0_Node0_action["If total accept count is greater
than zero, proceed to train status
check, otherwise log zero counts
message and set acknowledgment
status"]:::main N_TotalAcceptCount0_Node0 -- Yes --> N_TotalAcceptCount0_Node0_action N_TotalAcceptCount0_Node0_action --> E_TotalAcceptCount0 S_TotalAcceptCount0 --> N_TotalAcceptCount0_Node0 N_TotalAcceptCount0_Node1{"The total accept count in the K3
segment is zero"}:::decision N_TotalAcceptCount0_Node1_action["Log zero counts message and set
acknowledgment status"]:::main N_TotalAcceptCount0_Node1 -- Yes --> N_TotalAcceptCount0_Node1_action N_TotalAcceptCount0_Node1_action --> E_TotalAcceptCount0 N_TotalAcceptCount0_Node0 -- No --> N_TotalAcceptCount0_Node1 N_TotalAcceptCount0_Node1 -- No --> E_TotalAcceptCount0
accept count field"}:::decision N_TotalAcceptCount0_Node0_action["If total accept count is greater
than zero, proceed to train status
check, otherwise log zero counts
message and set acknowledgment
status"]:::main N_TotalAcceptCount0_Node0 -- Yes --> N_TotalAcceptCount0_Node0_action N_TotalAcceptCount0_Node0_action --> E_TotalAcceptCount0 S_TotalAcceptCount0 --> N_TotalAcceptCount0_Node0 N_TotalAcceptCount0_Node1{"The total accept count in the K3
segment is zero"}:::decision N_TotalAcceptCount0_Node1_action["Log zero counts message and set
acknowledgment status"]:::main N_TotalAcceptCount0_Node1 -- Yes --> N_TotalAcceptCount0_Node1_action N_TotalAcceptCount0_Node1_action --> E_TotalAcceptCount0 N_TotalAcceptCount0_Node0 -- No --> N_TotalAcceptCount0_Node1 N_TotalAcceptCount0_Node1 -- No --> E_TotalAcceptCount0
File: GCX015E.cbl
GIVEN:
K3 segment has zero reject count
WHEN:
The system evaluates the total accept count field
THEN:
- If total accept count is greater than zero, proceed to train status check, otherwise log zero counts message
- Set acknowledgment status
File: GCX015E.cbl
GIVEN:
A K3 segment is being processed with zero reject counts
WHEN:
The total accept count in the K3 segment is zero
THEN:
- Log zero counts message
- Set acknowledgment status
β Consolidated Acceptance Criteria
- If the current train status → if train is pre-arrived set pre-arrival status, if train is review complete set review completed status, otherwise set acknowledgment 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_TrainStatusCheck(["Start Step"])
E_TrainStatusCheck(["End Step"])
N_TrainStatusCheck_Node0{"The system evaluates the current
train status"}:::decision N_TrainStatusCheck_Node0_action["If train is pre-arrived set
pre-arrival status, if train is
review complete set review completed
status, otherwise set acknowledgment
status"]:::main N_TrainStatusCheck_Node0 -- Yes --> N_TrainStatusCheck_Node0_action N_TrainStatusCheck_Node0_action --> E_TrainStatusCheck S_TrainStatusCheck --> N_TrainStatusCheck_Node0 N_TrainStatusCheck_Node0 -- No --> E_TrainStatusCheck
train status"}:::decision N_TrainStatusCheck_Node0_action["If train is pre-arrived set
pre-arrival status, if train is
review complete set review completed
status, otherwise set acknowledgment
status"]:::main N_TrainStatusCheck_Node0 -- Yes --> N_TrainStatusCheck_Node0_action N_TrainStatusCheck_Node0_action --> E_TrainStatusCheck S_TrainStatusCheck --> N_TrainStatusCheck_Node0 N_TrainStatusCheck_Node0 -- No --> E_TrainStatusCheck
File: GCX015E.cbl
GIVEN:
K3 segment has zero rejects and positive accept count
WHEN:
The system evaluates the current train status
THEN:
If train is pre-arrived set pre-arrival status, if train is review complete set review completed status, otherwise set acknowledgment status
β Consolidated Acceptance Criteria
- The system determines the final processing status → set the processing status to 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_SetPreArrivalStatus(["Start Step"])
E_SetPreArrivalStatus(["End Step"])
N_SetPreArrivalStatus_Node0{"The system determines the final
processing status"}:::decision N_SetPreArrivalStatus_Node0_action["Set the processing status to
pre-arrival status"]:::main N_SetPreArrivalStatus_Node0 -- Yes --> N_SetPreArrivalStatus_Node0_action N_SetPreArrivalStatus_Node0_action --> E_SetPreArrivalStatus S_SetPreArrivalStatus --> N_SetPreArrivalStatus_Node0 N_SetPreArrivalStatus_Node0 -- No --> E_SetPreArrivalStatus
processing status"}:::decision N_SetPreArrivalStatus_Node0_action["Set the processing status to
pre-arrival status"]:::main N_SetPreArrivalStatus_Node0 -- Yes --> N_SetPreArrivalStatus_Node0_action N_SetPreArrivalStatus_Node0_action --> E_SetPreArrivalStatus S_SetPreArrivalStatus --> N_SetPreArrivalStatus_Node0 N_SetPreArrivalStatus_Node0 -- No --> E_SetPreArrivalStatus
File: GCX015E.cbl
GIVEN:
K3 segment has valid accept counts and train is in pre-arrived state
WHEN:
The system determines the final processing status
THEN:
Set the processing status to pre-arrival status
β Consolidated Acceptance Criteria
- The system determines the final processing status → set the processing status to review completed 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_SetReviewCompletedStatus(["Start Step"])
E_SetReviewCompletedStatus(["End Step"])
N_SetReviewCompletedStatus_Node0{"The system determines the final
processing status"}:::decision N_SetReviewCompletedStatus_Node0_action["Set the processing status to review
completed status"]:::main N_SetReviewCompletedStatus_Node0 -- Yes --> N_SetReviewCompletedStatus_Node0_action N_SetReviewCompletedStatus_Node0_action --> E_SetReviewCompletedStatus S_SetReviewCompletedStatus --> N_SetReviewCompletedStatus_Node0 N_SetReviewCompletedStatus_Node0 -- No --> E_SetReviewCompletedStatus
processing status"}:::decision N_SetReviewCompletedStatus_Node0_action["Set the processing status to review
completed status"]:::main N_SetReviewCompletedStatus_Node0 -- Yes --> N_SetReviewCompletedStatus_Node0_action N_SetReviewCompletedStatus_Node0_action --> E_SetReviewCompletedStatus S_SetReviewCompletedStatus --> N_SetReviewCompletedStatus_Node0 N_SetReviewCompletedStatus_Node0 -- No --> E_SetReviewCompletedStatus
File: GCX015E.cbl
GIVEN:
K3 segment has valid accept counts and train is in review complete state
WHEN:
The system determines the final processing status
THEN:
Set the processing status to review completed status
β Consolidated Acceptance Criteria
- The system determines the final processing status → set the processing status to acknowledgment 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_SetAcknowledgmentStatus(["Start Step"])
E_SetAcknowledgmentStatus(["End Step"])
N_SetAcknowledgmentStatus_Node0{"The system determines the final
processing status"}:::decision N_SetAcknowledgmentStatus_Node0_action["Set the processing status to
acknowledgment status"]:::main N_SetAcknowledgmentStatus_Node0 -- Yes --> N_SetAcknowledgmentStatus_Node0_action N_SetAcknowledgmentStatus_Node0_action --> E_SetAcknowledgmentStatus S_SetAcknowledgmentStatus --> N_SetAcknowledgmentStatus_Node0 N_SetAcknowledgmentStatus_Node0 -- No --> E_SetAcknowledgmentStatus
processing status"}:::decision N_SetAcknowledgmentStatus_Node0_action["Set the processing status to
acknowledgment status"]:::main N_SetAcknowledgmentStatus_Node0 -- Yes --> N_SetAcknowledgmentStatus_Node0_action N_SetAcknowledgmentStatus_Node0_action --> E_SetAcknowledgmentStatus S_SetAcknowledgmentStatus --> N_SetAcknowledgmentStatus_Node0 N_SetAcknowledgmentStatus_Node0 -- No --> E_SetAcknowledgmentStatus
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
K3 segment has valid accept counts and train is not in pre-arrived or review complete state, or K3 segment has zero counts
WHEN:
The system determines the final processing status
THEN:
Set the processing status to acknowledgment status
β Consolidated Acceptance Criteria
- The system processes the accept/reject counts → set the processing status to error status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorStatus(["Start Step"])
E_SetErrorStatus(["End Step"])
N_SetErrorStatus_Node0{"The system processes the
acceptreject counts"}:::decision N_SetErrorStatus_Node0_action["Set the processing status to error
status"]:::main N_SetErrorStatus_Node0 -- Yes --> N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node0 -- No --> E_SetErrorStatus
acceptreject counts"}:::decision N_SetErrorStatus_Node0_action["Set the processing status to error
status"]:::main N_SetErrorStatus_Node0 -- Yes --> N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node0 -- No --> E_SetErrorStatus
File: GCX015E.cbl
GIVEN:
K3 segment contains non-zero reject count
WHEN:
The system processes the accept/reject counts
THEN:
Set the processing status to error status
β Consolidated Acceptance Criteria
- The system processes the count validation → add message 'USCS K3 RECORD HAS ZERO COUNTS' to the log and increment log 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_AddZeroCountsMessagetoLog(["Start Step"])
E_AddZeroCountsMessagetoLog(["End Step"])
N_AddZeroCountsMessagetoLog_Node0{"The system processes the count
validation"}:::decision N_AddZeroCountsMessagetoLog_Node0_action["Add message USCS K3 RECORD HAS ZERO
COUNTS to the log and increment log
counter"]:::main N_AddZeroCountsMessagetoLog_Node0 -- Yes --> N_AddZeroCountsMessagetoLog_Node0_action N_AddZeroCountsMessagetoLog_Node0_action --> E_AddZeroCountsMessagetoLog S_AddZeroCountsMessagetoLog --> N_AddZeroCountsMessagetoLog_Node0 N_AddZeroCountsMessagetoLog_Node0 -- No --> E_AddZeroCountsMessagetoLog
validation"}:::decision N_AddZeroCountsMessagetoLog_Node0_action["Add message USCS K3 RECORD HAS ZERO
COUNTS to the log and increment log
counter"]:::main N_AddZeroCountsMessagetoLog_Node0 -- Yes --> N_AddZeroCountsMessagetoLog_Node0_action N_AddZeroCountsMessagetoLog_Node0_action --> E_AddZeroCountsMessagetoLog S_AddZeroCountsMessagetoLog --> N_AddZeroCountsMessagetoLog_Node0 N_AddZeroCountsMessagetoLog_Node0 -- No --> E_AddZeroCountsMessagetoLog
File: GCX015E.cbl
GIVEN:
K3 segment has zero reject count and zero accept count
WHEN:
The system processes the count validation
THEN:
- Add message 'uscs k3 record has zero counts' to the log
- Increment log counter
β Consolidated Acceptance Criteria
- The train status is Pre-Arrived → set pre-arrival acknowledgment status
- The train status is Review Complete → set review completed acknowledgment status
- The train status is neither Pre-Arrived nor Review Complete → set standard acknowledgment 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_CurrentTrainStatus(["Start Step"])
E_CurrentTrainStatus(["End Step"])
N_CurrentTrainStatus_Node0{"The train status is Pre-Arrived"}:::decision
N_CurrentTrainStatus_Node0_action["Set pre-arrival acknowledgment
status"]:::main N_CurrentTrainStatus_Node0 -- Yes --> N_CurrentTrainStatus_Node0_action N_CurrentTrainStatus_Node0_action --> E_CurrentTrainStatus S_CurrentTrainStatus --> N_CurrentTrainStatus_Node0 N_CurrentTrainStatus_Node1{"The train status is Review Complete"}:::decision N_CurrentTrainStatus_Node1_action["Set review completed acknowledgment
status"]:::main N_CurrentTrainStatus_Node1 -- Yes --> N_CurrentTrainStatus_Node1_action N_CurrentTrainStatus_Node1_action --> E_CurrentTrainStatus N_CurrentTrainStatus_Node0 -- No --> N_CurrentTrainStatus_Node1 N_CurrentTrainStatus_Node2{"The train status is neither
Pre-Arrived nor Review Complete"}:::decision N_CurrentTrainStatus_Node2_action["Set standard acknowledgment status"]:::main N_CurrentTrainStatus_Node2 -- Yes --> N_CurrentTrainStatus_Node2_action N_CurrentTrainStatus_Node2_action --> E_CurrentTrainStatus N_CurrentTrainStatus_Node1 -- No --> N_CurrentTrainStatus_Node2 N_CurrentTrainStatus_Node2 -- No --> E_CurrentTrainStatus
status"]:::main N_CurrentTrainStatus_Node0 -- Yes --> N_CurrentTrainStatus_Node0_action N_CurrentTrainStatus_Node0_action --> E_CurrentTrainStatus S_CurrentTrainStatus --> N_CurrentTrainStatus_Node0 N_CurrentTrainStatus_Node1{"The train status is Review Complete"}:::decision N_CurrentTrainStatus_Node1_action["Set review completed acknowledgment
status"]:::main N_CurrentTrainStatus_Node1 -- Yes --> N_CurrentTrainStatus_Node1_action N_CurrentTrainStatus_Node1_action --> E_CurrentTrainStatus N_CurrentTrainStatus_Node0 -- No --> N_CurrentTrainStatus_Node1 N_CurrentTrainStatus_Node2{"The train status is neither
Pre-Arrived nor Review Complete"}:::decision N_CurrentTrainStatus_Node2_action["Set standard acknowledgment status"]:::main N_CurrentTrainStatus_Node2 -- Yes --> N_CurrentTrainStatus_Node2_action N_CurrentTrainStatus_Node2_action --> E_CurrentTrainStatus N_CurrentTrainStatus_Node1 -- No --> N_CurrentTrainStatus_Node2 N_CurrentTrainStatus_Node2 -- No --> E_CurrentTrainStatus
File: GCX015E.cbl
GIVEN:
A K3 segment has zero rejects and positive accept counts for a train
WHEN:
The train status is Pre-Arrived
THEN:
Set pre-arrival acknowledgment status
File: GCX015E.cbl
GIVEN:
A K3 segment has zero rejects and positive accept counts for a train
WHEN:
The train status is Review Complete
THEN:
Set review completed acknowledgment status
File: GCX015E.cbl
GIVEN:
A K3 segment has zero rejects and positive accept counts for a train
WHEN:
The train status is neither Pre-Arrived nor Review Complete
THEN:
Set standard acknowledgment status
β Consolidated Acceptance Criteria
- The total accept count is also zero → log 'USCS K3 RECORD HAS ZERO COUNTS' message and set acknowledgment 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_SetErrorStatusZeroCounts(["Start Step"])
E_SetErrorStatusZeroCounts(["End Step"])
N_SetErrorStatusZeroCounts_Node0{"The total accept count is also zero"}:::decision
N_SetErrorStatusZeroCounts_Node0_action["Log USCS K3 RECORD HAS ZERO COUNTS
message and set acknowledgment
status"]:::main N_SetErrorStatusZeroCounts_Node0 -- Yes --> N_SetErrorStatusZeroCounts_Node0_action N_SetErrorStatusZeroCounts_Node0_action --> E_SetErrorStatusZeroCounts S_SetErrorStatusZeroCounts --> N_SetErrorStatusZeroCounts_Node0 N_SetErrorStatusZeroCounts_Node0 -- No --> E_SetErrorStatusZeroCounts
message and set acknowledgment
status"]:::main N_SetErrorStatusZeroCounts_Node0 -- Yes --> N_SetErrorStatusZeroCounts_Node0_action N_SetErrorStatusZeroCounts_Node0_action --> E_SetErrorStatusZeroCounts S_SetErrorStatusZeroCounts --> N_SetErrorStatusZeroCounts_Node0 N_SetErrorStatusZeroCounts_Node0 -- No --> E_SetErrorStatusZeroCounts
File: GCX015E.cbl
GIVEN:
A K3 segment is being processed with zero reject counts
WHEN:
The total accept count is also zero
THEN:
- Log 'uscs k3 record has zero counts' message
- Set acknowledgment status
β Consolidated Acceptance Criteria
- The total reject count in the K3 segment is greater than zero → set error status to indicate transaction rejections
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorStatusHasRejects(["Start Step"])
E_SetErrorStatusHasRejects(["End Step"])
N_SetErrorStatusHasRejects_Node0{"The total reject count in the K3
segment is greater than zero"}:::decision N_SetErrorStatusHasRejects_Node0_action["Set error status to indicate
transaction rejections"]:::main N_SetErrorStatusHasRejects_Node0 -- Yes --> N_SetErrorStatusHasRejects_Node0_action N_SetErrorStatusHasRejects_Node0_action --> E_SetErrorStatusHasRejects S_SetErrorStatusHasRejects --> N_SetErrorStatusHasRejects_Node0 N_SetErrorStatusHasRejects_Node0 -- No --> E_SetErrorStatusHasRejects
segment is greater than zero"}:::decision N_SetErrorStatusHasRejects_Node0_action["Set error status to indicate
transaction rejections"]:::main N_SetErrorStatusHasRejects_Node0 -- Yes --> N_SetErrorStatusHasRejects_Node0_action N_SetErrorStatusHasRejects_Node0_action --> E_SetErrorStatusHasRejects S_SetErrorStatusHasRejects --> N_SetErrorStatusHasRejects_Node0 N_SetErrorStatusHasRejects_Node0 -- No --> E_SetErrorStatusHasRejects
File: GCX015E.cbl
GIVEN:
A K3 segment is being processed for US Customs response
WHEN:
The total reject count in the K3 segment is greater than zero
THEN:
Set error status to indicate transaction rejections
β Consolidated Acceptance Criteria
- The system checks for the presence of M10 segment → if M10 segment is not found, record an error message 'M10 SEGMENT NOT FOUND ON 355 TRANSACTION' and continue 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_M10SegmentFound(["Start Step"])
E_M10SegmentFound(["End Step"])
N_M10SegmentFound_Node0{"The system checks for the presence
of M10 segment"}:::decision N_M10SegmentFound_Node0_action["If M10 segment is not found, record
an error message M10 SEGMENT NOT
FOUND ON 355 TRANSACTION and
continue validation"]:::main N_M10SegmentFound_Node0 -- Yes --> N_M10SegmentFound_Node0_action N_M10SegmentFound_Node0_action --> E_M10SegmentFound S_M10SegmentFound --> N_M10SegmentFound_Node0 N_M10SegmentFound_Node0 -- No --> E_M10SegmentFound
of M10 segment"}:::decision N_M10SegmentFound_Node0_action["If M10 segment is not found, record
an error message M10 SEGMENT NOT
FOUND ON 355 TRANSACTION and
continue validation"]:::main N_M10SegmentFound_Node0 -- Yes --> N_M10SegmentFound_Node0_action N_M10SegmentFound_Node0_action --> E_M10SegmentFound S_M10SegmentFound --> N_M10SegmentFound_Node0 N_M10SegmentFound_Node0 -- No --> E_M10SegmentFound
File: GCX015E.cbl
GIVEN:
A message is being processed for segment validation
WHEN:
The system checks for the presence of M10 segment
THEN:
If M10 segment is not found, record an error message 'M10 SEGMENT NOT FOUND ON 355 TRANSACTION' and continue validation
β Consolidated Acceptance Criteria
- The system checks for the presence of P4 segment → if P4 segment is not found, record an error message 'P4 SEGMENT NOT FOUND ON 355 TRANSACTION' and continue 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_P4SegmentFound(["Start Step"])
E_P4SegmentFound(["End Step"])
N_P4SegmentFound_Node0{"The system checks for the presence
of P4 segment"}:::decision N_P4SegmentFound_Node0_action["If P4 segment is not found, record
an error message P4 SEGMENT NOT
FOUND ON 355 TRANSACTION and
continue validation"]:::main N_P4SegmentFound_Node0 -- Yes --> N_P4SegmentFound_Node0_action N_P4SegmentFound_Node0_action --> E_P4SegmentFound S_P4SegmentFound --> N_P4SegmentFound_Node0 N_P4SegmentFound_Node0 -- No --> E_P4SegmentFound
of P4 segment"}:::decision N_P4SegmentFound_Node0_action["If P4 segment is not found, record
an error message P4 SEGMENT NOT
FOUND ON 355 TRANSACTION and
continue validation"]:::main N_P4SegmentFound_Node0 -- Yes --> N_P4SegmentFound_Node0_action N_P4SegmentFound_Node0_action --> E_P4SegmentFound S_P4SegmentFound --> N_P4SegmentFound_Node0 N_P4SegmentFound_Node0 -- No --> E_P4SegmentFound
File: GCX015E.cbl
GIVEN:
A message is being processed for segment validation and M10 validation is complete
WHEN:
The system checks for the presence of P4 segment
THEN:
If P4 segment is not found, record an error message 'P4 SEGMENT NOT FOUND ON 355 TRANSACTION' and continue validation
β Consolidated Acceptance Criteria
- The system prepares to query the cargo database → the cargo segment data structure 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_InitializeCargoSegment(["Start Step"])
E_InitializeCargoSegment(["End Step"])
N_InitializeCargoSegment_Node0{"The system prepares to query the
cargo database"}:::decision N_InitializeCargoSegment_Node0_action["The cargo segment data structure is
cleared to spaces"]:::main N_InitializeCargoSegment_Node0 -- Yes --> N_InitializeCargoSegment_Node0_action N_InitializeCargoSegment_Node0_action --> E_InitializeCargoSegment S_InitializeCargoSegment --> N_InitializeCargoSegment_Node0 N_InitializeCargoSegment_Node0 -- No --> E_InitializeCargoSegment
cargo database"}:::decision N_InitializeCargoSegment_Node0_action["The cargo segment data structure is
cleared to spaces"]:::main N_InitializeCargoSegment_Node0 -- Yes --> N_InitializeCargoSegment_Node0_action N_InitializeCargoSegment_Node0_action --> E_InitializeCargoSegment S_InitializeCargoSegment --> N_InitializeCargoSegment_Node0 N_InitializeCargoSegment_Node0 -- No --> E_InitializeCargoSegment
File: GCX015E.cbl
GIVEN:
A cargo retrieval operation is initiated
WHEN:
The system prepares to query the cargo database
THEN:
The cargo segment data structure is cleared to spaces
β Consolidated Acceptance Criteria
- The system configures the database operation parameters → the database function is set to GET UNIQUE and the segment type is set to GCSUSRT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDatabaseFunctiontoGETUNIQUE(["Start Step"])
E_SetDatabaseFunctiontoGETUNIQUE(["End Step"])
N_SetDatabaseFunctiontoGETUNIQUE_Node0{"The system configures the database
operation parameters"}:::decision N_SetDatabaseFunctiontoGETUNIQUE_Node0_action["The database function is set to GET
UNIQUE and the segment type is set
to GCSUSRT"]:::main N_SetDatabaseFunctiontoGETUNIQUE_Node0 -- Yes --> N_SetDatabaseFunctiontoGETUNIQUE_Node0_action N_SetDatabaseFunctiontoGETUNIQUE_Node0_action --> E_SetDatabaseFunctiontoGETUNIQUE S_SetDatabaseFunctiontoGETUNIQUE --> N_SetDatabaseFunctiontoGETUNIQUE_Node0 N_SetDatabaseFunctiontoGETUNIQUE_Node0 -- No --> E_SetDatabaseFunctiontoGETUNIQUE
operation parameters"}:::decision N_SetDatabaseFunctiontoGETUNIQUE_Node0_action["The database function is set to GET
UNIQUE and the segment type is set
to GCSUSRT"]:::main N_SetDatabaseFunctiontoGETUNIQUE_Node0 -- Yes --> N_SetDatabaseFunctiontoGETUNIQUE_Node0_action N_SetDatabaseFunctiontoGETUNIQUE_Node0_action --> E_SetDatabaseFunctiontoGETUNIQUE S_SetDatabaseFunctiontoGETUNIQUE --> N_SetDatabaseFunctiontoGETUNIQUE_Node0 N_SetDatabaseFunctiontoGETUNIQUE_Node0 -- No --> E_SetDatabaseFunctiontoGETUNIQUE
File: GCX015E.cbl
GIVEN:
A cargo record needs to be retrieved from the database
WHEN:
The system configures the database operation parameters
THEN:
- The database function is set to get unique
- The segment type is set to gcsusrt
β Consolidated Acceptance Criteria
- The system prepares to query the cargo database → the US-CCN-KEY from the processed M10 data is used as the database query 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_UseUSCCNKEYfromM10Segment(["Start Step"])
E_UseUSCCNKEYfromM10Segment(["End Step"])
N_UseUSCCNKEYfromM10Segment_Node0{"The system prepares to query the
cargo database"}:::decision N_UseUSCCNKEYfromM10Segment_Node0_action["The US-CCN-KEY from the processed
M10 data is used as the database
query key"]:::main N_UseUSCCNKEYfromM10Segment_Node0 -- Yes --> N_UseUSCCNKEYfromM10Segment_Node0_action N_UseUSCCNKEYfromM10Segment_Node0_action --> E_UseUSCCNKEYfromM10Segment S_UseUSCCNKEYfromM10Segment --> N_UseUSCCNKEYfromM10Segment_Node0 N_UseUSCCNKEYfromM10Segment_Node0 -- No --> E_UseUSCCNKEYfromM10Segment
cargo database"}:::decision N_UseUSCCNKEYfromM10Segment_Node0_action["The US-CCN-KEY from the processed
M10 data is used as the database
query key"]:::main N_UseUSCCNKEYfromM10Segment_Node0 -- Yes --> N_UseUSCCNKEYfromM10Segment_Node0_action N_UseUSCCNKEYfromM10Segment_Node0_action --> E_UseUSCCNKEYfromM10Segment S_UseUSCCNKEYfromM10Segment --> N_UseUSCCNKEYfromM10Segment_Node0 N_UseUSCCNKEYfromM10Segment_Node0 -- No --> E_UseUSCCNKEYfromM10Segment
File: GCX015E.cbl
GIVEN:
M10 segment data contains a US-CCN-KEY value
WHEN:
The system prepares to query the cargo database
THEN:
The US-CCN-KEY from the processed M10 data is used as the database query key
β Consolidated Acceptance Criteria
- The system executes the database retrieval operation → the GCCUSIO program is called with the cargo segment parameters to retrieve 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_CallDatabasetoRetrieveCargoRecord(["Start Step"])
E_CallDatabasetoRetrieveCargoRecord(["End Step"])
N_CallDatabasetoRetrieveCargoRecord_Node0{"The system executes the database
retrieval operation"}:::decision N_CallDatabasetoRetrieveCargoRecord_Node0_action["The GCCUSIO program is called with
the cargo segment parameters to
retrieve the cargo record"]:::main N_CallDatabasetoRetrieveCargoRecord_Node0 -- Yes --> N_CallDatabasetoRetrieveCargoRecord_Node0_action N_CallDatabasetoRetrieveCargoRecord_Node0_action --> E_CallDatabasetoRetrieveCargoRecord S_CallDatabasetoRetrieveCargoRecord --> N_CallDatabasetoRetrieveCargoRecord_Node0 N_CallDatabasetoRetrieveCargoRecord_Node0 -- No --> E_CallDatabasetoRetrieveCargoRecord
retrieval operation"}:::decision N_CallDatabasetoRetrieveCargoRecord_Node0_action["The GCCUSIO program is called with
the cargo segment parameters to
retrieve the cargo record"]:::main N_CallDatabasetoRetrieveCargoRecord_Node0 -- Yes --> N_CallDatabasetoRetrieveCargoRecord_Node0_action N_CallDatabasetoRetrieveCargoRecord_Node0_action --> E_CallDatabasetoRetrieveCargoRecord S_CallDatabasetoRetrieveCargoRecord --> N_CallDatabasetoRetrieveCargoRecord_Node0 N_CallDatabasetoRetrieveCargoRecord_Node0 -- No --> E_CallDatabasetoRetrieveCargoRecord
File: GCX015E.cbl
GIVEN:
Database parameters are configured with US-CCN-KEY and GET UNIQUE function
WHEN:
The system executes the database retrieval operation
THEN:
The GCCUSIO program is called with the cargo segment parameters to retrieve the cargo record
β Consolidated Acceptance Criteria
- The system checks the database operation status code → if the status code is spaces (successful), the cargo record is considered found, otherwise it 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_CargoRecordFound(["Start Step"])
E_CargoRecordFound(["End Step"])
N_CargoRecordFound_Node0{"The system checks the database
operation status code"}:::decision N_CargoRecordFound_Node0_action["If the status code is spaces
successful, the cargo record is
considered found, otherwise it is
not found"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node0 -- No --> E_CargoRecordFound
operation status code"}:::decision N_CargoRecordFound_Node0_action["If the status code is spaces
successful, the cargo record is
considered found, otherwise it is
not found"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node0 -- No --> E_CargoRecordFound
File: GCX015E.cbl
GIVEN:
A database retrieval operation has been executed for a cargo record
WHEN:
The system checks the database operation status code
THEN:
If the status code is spaces (successful), the cargo record is considered found, otherwise it is not found
β Consolidated Acceptance Criteria
- The system updates the cargo processing status → the cargo found flag (88-USCARGO-TRAIN-FOUND) is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoFoundFlag(["Start Step"])
E_SetCargoFoundFlag(["End Step"])
N_SetCargoFoundFlag_Node0{"The system updates the cargo
processing status"}:::decision N_SetCargoFoundFlag_Node0_action["The cargo found flag
88-USCARGO-TRAIN-FOUND is set to
true"]:::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
processing status"}:::decision N_SetCargoFoundFlag_Node0_action["The cargo found flag
88-USCARGO-TRAIN-FOUND is set to
true"]:::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: GCX015E.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system updates the cargo processing status
THEN:
The cargo found flag (88-USCARGO-TRAIN-FOUND) is set to true
β Consolidated Acceptance Criteria
- The system processes the cargo record data → the equipment car ID (GCUSRT-RT081-EQUIPMENT-CAR) is stored as the Merlin sub-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_StoreEquipmentCarInformation(["Start Step"])
E_StoreEquipmentCarInformation(["End Step"])
N_StoreEquipmentCarInformation_Node0{"The system processes the cargo
record data"}:::decision N_StoreEquipmentCarInformation_Node0_action["The equipment car ID
GCUSRT-RT081-EQUIPMENT-CAR is stored
as the Merlin sub-key"]:::main N_StoreEquipmentCarInformation_Node0 -- Yes --> N_StoreEquipmentCarInformation_Node0_action N_StoreEquipmentCarInformation_Node0_action --> E_StoreEquipmentCarInformation S_StoreEquipmentCarInformation --> N_StoreEquipmentCarInformation_Node0 N_StoreEquipmentCarInformation_Node0 -- No --> E_StoreEquipmentCarInformation
record data"}:::decision N_StoreEquipmentCarInformation_Node0_action["The equipment car ID
GCUSRT-RT081-EQUIPMENT-CAR is stored
as the Merlin sub-key"]:::main N_StoreEquipmentCarInformation_Node0 -- Yes --> N_StoreEquipmentCarInformation_Node0_action N_StoreEquipmentCarInformation_Node0_action --> E_StoreEquipmentCarInformation S_StoreEquipmentCarInformation --> N_StoreEquipmentCarInformation_Node0 N_StoreEquipmentCarInformation_Node0 -- No --> E_StoreEquipmentCarInformation
File: GCX015E.cbl
GIVEN:
A cargo record has been successfully retrieved from the database
WHEN:
The system processes the cargo record data
THEN:
The equipment car ID (GCUSRT-RT081-EQUIPMENT-CAR) is stored as the Merlin sub-key
β Consolidated Acceptance Criteria
- The system sets up Merlin identification keys → the Merlin key is set to the processed M10 data and the Merlin sub-key is set to the equipment 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_SetMerlinKeyandSubKey(["Start Step"])
E_SetMerlinKeyandSubKey(["End Step"])
N_SetMerlinKeyandSubKey_Node0{"The system sets up Merlin
identification keys"}:::decision N_SetMerlinKeyandSubKey_Node0_action["The Merlin key is set to the
processed M10 data and the Merlin
sub-key is set to the equipment car
ID"]:::main N_SetMerlinKeyandSubKey_Node0 -- Yes --> N_SetMerlinKeyandSubKey_Node0_action N_SetMerlinKeyandSubKey_Node0_action --> E_SetMerlinKeyandSubKey S_SetMerlinKeyandSubKey --> N_SetMerlinKeyandSubKey_Node0 N_SetMerlinKeyandSubKey_Node0 -- No --> E_SetMerlinKeyandSubKey
identification keys"}:::decision N_SetMerlinKeyandSubKey_Node0_action["The Merlin key is set to the
processed M10 data and the Merlin
sub-key is set to the equipment car
ID"]:::main N_SetMerlinKeyandSubKey_Node0 -- Yes --> N_SetMerlinKeyandSubKey_Node0_action N_SetMerlinKeyandSubKey_Node0_action --> E_SetMerlinKeyandSubKey S_SetMerlinKeyandSubKey --> N_SetMerlinKeyandSubKey_Node0 N_SetMerlinKeyandSubKey_Node0 -- No --> E_SetMerlinKeyandSubKey
File: GCX015E.cbl
GIVEN:
Cargo record data has been successfully retrieved and equipment information extracted
WHEN:
The system sets up Merlin identification keys
THEN:
- The merlin key is set to the processed m10 data
- The merlin sub-key is set to the equipment car id
β Consolidated Acceptance Criteria
- The system updates the cargo processing status → the cargo not found flag (88-USCARGO-TRAIN-NOTFND) is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoNotFoundFlag(["Start Step"])
E_SetCargoNotFoundFlag(["End Step"])
N_SetCargoNotFoundFlag_Node0{"The system updates the cargo
processing status"}:::decision N_SetCargoNotFoundFlag_Node0_action["The cargo not found flag
88-USCARGO-TRAIN-NOTFND is set to
true"]:::main N_SetCargoNotFoundFlag_Node0 -- Yes --> N_SetCargoNotFoundFlag_Node0_action N_SetCargoNotFoundFlag_Node0_action --> E_SetCargoNotFoundFlag S_SetCargoNotFoundFlag --> N_SetCargoNotFoundFlag_Node0 N_SetCargoNotFoundFlag_Node0 -- No --> E_SetCargoNotFoundFlag
processing status"}:::decision N_SetCargoNotFoundFlag_Node0_action["The cargo not found flag
88-USCARGO-TRAIN-NOTFND is set to
true"]:::main N_SetCargoNotFoundFlag_Node0 -- Yes --> N_SetCargoNotFoundFlag_Node0_action N_SetCargoNotFoundFlag_Node0_action --> E_SetCargoNotFoundFlag S_SetCargoNotFoundFlag --> N_SetCargoNotFoundFlag_Node0 N_SetCargoNotFoundFlag_Node0 -- No --> E_SetCargoNotFoundFlag
File: GCX015E.cbl
GIVEN:
A cargo database retrieval operation has failed to find a matching record
WHEN:
The system updates the cargo processing status
THEN:
The cargo not found flag (88-USCARGO-TRAIN-NOTFND) is set to true
β Consolidated Acceptance Criteria
- The system logs the error condition → an error message 'THIS US-CCN-KEY WAS NOT FOUND: ' is written to the Merlin error report and the line count is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorMessageUSCCNKEYNotFound(["Start Step"])
E_LogErrorMessageUSCCNKEYNotFound(["End Step"])
N_LogErrorMessageUSCCNKEYNotFound_Node0{"The system logs the error condition"}:::decision
N_LogErrorMessageUSCCNKEYNotFound_Node0_action["An error message THIS US-CCN-KEY
WAS NOT FOUND: is written to the
Merlin error report and the line
count is incremented"]:::exclusion N_LogErrorMessageUSCCNKEYNotFound_Node0 -- Yes -->|Alternative| N_LogErrorMessageUSCCNKEYNotFound_Node0_action N_LogErrorMessageUSCCNKEYNotFound_Node0_action --> E_LogErrorMessageUSCCNKEYNotFound S_LogErrorMessageUSCCNKEYNotFound --> N_LogErrorMessageUSCCNKEYNotFound_Node0 N_LogErrorMessageUSCCNKEYNotFound_Node0 -- No --> E_LogErrorMessageUSCCNKEYNotFound
WAS NOT FOUND: is written to the
Merlin error report and the line
count is incremented"]:::exclusion N_LogErrorMessageUSCCNKEYNotFound_Node0 -- Yes -->|Alternative| N_LogErrorMessageUSCCNKEYNotFound_Node0_action N_LogErrorMessageUSCCNKEYNotFound_Node0_action --> E_LogErrorMessageUSCCNKEYNotFound S_LogErrorMessageUSCCNKEYNotFound --> N_LogErrorMessageUSCCNKEYNotFound_Node0 N_LogErrorMessageUSCCNKEYNotFound_Node0 -- No --> E_LogErrorMessageUSCCNKEYNotFound
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record could not be found for the specified US-CCN-KEY
WHEN:
The system logs the error condition
THEN:
- An error message 'this us-ccn-key was not found: ' is written to the merlin error report
- The line count is incremented
β Consolidated Acceptance Criteria
- The system attempts to retrieve the train record from the train database → the system should call the database access function with the US Train ID as the search key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallDatabasetoGetTrainRecord(["Start Step"])
E_CallDatabasetoGetTrainRecord(["End Step"])
N_CallDatabasetoGetTrainRecord_Node0{"The system attempts to retrieve the
train record from the train database"}:::decision N_CallDatabasetoGetTrainRecord_Node0_action["The system should call the database
access function with the US Train ID
as the search key"]:::main N_CallDatabasetoGetTrainRecord_Node0 -- Yes --> N_CallDatabasetoGetTrainRecord_Node0_action N_CallDatabasetoGetTrainRecord_Node0_action --> E_CallDatabasetoGetTrainRecord S_CallDatabasetoGetTrainRecord --> N_CallDatabasetoGetTrainRecord_Node0 N_CallDatabasetoGetTrainRecord_Node0 -- No --> E_CallDatabasetoGetTrainRecord
train record from the train database"}:::decision N_CallDatabasetoGetTrainRecord_Node0_action["The system should call the database
access function with the US Train ID
as the search key"]:::main N_CallDatabasetoGetTrainRecord_Node0 -- Yes --> N_CallDatabasetoGetTrainRecord_Node0_action N_CallDatabasetoGetTrainRecord_Node0_action --> E_CallDatabasetoGetTrainRecord S_CallDatabasetoGetTrainRecord --> N_CallDatabasetoGetTrainRecord_Node0 N_CallDatabasetoGetTrainRecord_Node0 -- No --> E_CallDatabasetoGetTrainRecord
File: GCX015E.cbl
GIVEN:
A US Train ID is available from message processing
WHEN:
The system attempts to retrieve the train record from the train database
THEN:
The system should call the database access function with the US Train ID as the search key
β Consolidated Acceptance Criteria
- The database returns a response with a status code → if the status code is blank/spaces, the train record is found, otherwise the train record 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_TrainRecordFound(["Start Step"])
E_TrainRecordFound(["End Step"])
N_TrainRecordFound_Node0{"The database returns a response
with a status code"}:::decision N_TrainRecordFound_Node0_action["If the status code is blankspaces,
the train record is found, otherwise
the train record is not found"]:::main N_TrainRecordFound_Node0 -- Yes --> N_TrainRecordFound_Node0_action N_TrainRecordFound_Node0_action --> E_TrainRecordFound S_TrainRecordFound --> N_TrainRecordFound_Node0 N_TrainRecordFound_Node0 -- No --> E_TrainRecordFound
with a status code"}:::decision N_TrainRecordFound_Node0_action["If the status code is blankspaces,
the train record is found, otherwise
the train record is not found"]:::main N_TrainRecordFound_Node0 -- Yes --> N_TrainRecordFound_Node0_action N_TrainRecordFound_Node0_action --> E_TrainRecordFound S_TrainRecordFound --> N_TrainRecordFound_Node0 N_TrainRecordFound_Node0 -- No --> E_TrainRecordFound
File: GCX015E.cbl
GIVEN:
A database call has been made to retrieve a train record
WHEN:
The database returns a response with a status code
THEN:
If the status code is blank/spaces, the train record is found, otherwise the train record is not found
β Consolidated Acceptance Criteria
- The database status indicates successful retrieval → the system should set the train found flag to indicate successful train 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_SetTrainFoundFlag(["Start Step"])
E_SetTrainFoundFlag(["End Step"])
N_SetTrainFoundFlag_Node0{"The database status indicates
successful retrieval"}:::decision N_SetTrainFoundFlag_Node0_action["The system should set the train
found flag to indicate successful
train record retrieval"]:::main N_SetTrainFoundFlag_Node0 -- Yes --> N_SetTrainFoundFlag_Node0_action N_SetTrainFoundFlag_Node0_action --> E_SetTrainFoundFlag S_SetTrainFoundFlag --> N_SetTrainFoundFlag_Node0 N_SetTrainFoundFlag_Node0 -- No --> E_SetTrainFoundFlag
successful retrieval"}:::decision N_SetTrainFoundFlag_Node0_action["The system should set the train
found flag to indicate successful
train record retrieval"]:::main N_SetTrainFoundFlag_Node0 -- Yes --> N_SetTrainFoundFlag_Node0_action N_SetTrainFoundFlag_Node0_action --> E_SetTrainFoundFlag S_SetTrainFoundFlag --> N_SetTrainFoundFlag_Node0 N_SetTrainFoundFlag_Node0 -- No --> E_SetTrainFoundFlag
File: GCX015E.cbl
GIVEN:
A train record has been successfully found in the database
WHEN:
The database status indicates successful retrieval
THEN:
The system should set the train found flag to indicate successful train record retrieval
β Consolidated Acceptance Criteria
- The system needs to prepare for further train processing → the system should store the US Train ID in the MERLIN-KEY and the train ID in MERLIN-SUB-KEY for processing 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_StoreTrainIDinProcessingKeys(["Start Step"])
E_StoreTrainIDinProcessingKeys(["End Step"])
N_StoreTrainIDinProcessingKeys_Node0{"The system needs to prepare for
further train processing"}:::decision N_StoreTrainIDinProcessingKeys_Node0_action["The system should store the US
Train ID in the MERLIN-KEY and the
train ID in MERLIN-SUB-KEY for
processing reference"]:::main N_StoreTrainIDinProcessingKeys_Node0 -- Yes --> N_StoreTrainIDinProcessingKeys_Node0_action N_StoreTrainIDinProcessingKeys_Node0_action --> E_StoreTrainIDinProcessingKeys S_StoreTrainIDinProcessingKeys --> N_StoreTrainIDinProcessingKeys_Node0 N_StoreTrainIDinProcessingKeys_Node0 -- No --> E_StoreTrainIDinProcessingKeys
further train processing"}:::decision N_StoreTrainIDinProcessingKeys_Node0_action["The system should store the US
Train ID in the MERLIN-KEY and the
train ID in MERLIN-SUB-KEY for
processing reference"]:::main N_StoreTrainIDinProcessingKeys_Node0 -- Yes --> N_StoreTrainIDinProcessingKeys_Node0_action N_StoreTrainIDinProcessingKeys_Node0_action --> E_StoreTrainIDinProcessingKeys S_StoreTrainIDinProcessingKeys --> N_StoreTrainIDinProcessingKeys_Node0 N_StoreTrainIDinProcessingKeys_Node0 -- No --> E_StoreTrainIDinProcessingKeys
File: GCX015E.cbl
GIVEN:
A train record has been successfully found and the train found flag is set
WHEN:
The system needs to prepare for further train processing
THEN:
- The system should store the us train id in the merlin-key
- The train id in merlin-sub-key for processing reference
β Consolidated Acceptance Criteria
- The database returns a non-blank status code indicating the record was not found → the system should set the train not found flag to indicate unsuccessful train 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_SetTrainNotFoundFlag(["Start Step"])
E_SetTrainNotFoundFlag(["End Step"])
N_SetTrainNotFoundFlag_Node0{"The database returns a non-blank
status code indicating the record
was not found"}:::decision N_SetTrainNotFoundFlag_Node0_action["The system should set the train not
found flag to indicate unsuccessful
train record retrieval"]:::main N_SetTrainNotFoundFlag_Node0 -- Yes --> N_SetTrainNotFoundFlag_Node0_action N_SetTrainNotFoundFlag_Node0_action --> E_SetTrainNotFoundFlag S_SetTrainNotFoundFlag --> N_SetTrainNotFoundFlag_Node0 N_SetTrainNotFoundFlag_Node0 -- No --> E_SetTrainNotFoundFlag
status code indicating the record
was not found"}:::decision N_SetTrainNotFoundFlag_Node0_action["The system should set the train not
found flag to indicate unsuccessful
train record retrieval"]:::main N_SetTrainNotFoundFlag_Node0 -- Yes --> N_SetTrainNotFoundFlag_Node0_action N_SetTrainNotFoundFlag_Node0_action --> E_SetTrainNotFoundFlag S_SetTrainNotFoundFlag --> N_SetTrainNotFoundFlag_Node0 N_SetTrainNotFoundFlag_Node0 -- No --> E_SetTrainNotFoundFlag
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A database call has been made to retrieve a train record
WHEN:
The database returns a non-blank status code indicating the record was not found
THEN:
The system should set the train not found flag to indicate unsuccessful train record retrieval
β Consolidated Acceptance Criteria
- The system needs to record the failure for audit purposes → the system should log the message 'THIS US-TRAIN-ID WAS NOT FOUND: ' followed by the train ID that was searched
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainIDNotFoundMessage(["Start Step"])
E_LogTrainIDNotFoundMessage(["End Step"])
N_LogTrainIDNotFoundMessage_Node0{"The system needs to record the
failure for audit purposes"}:::decision N_LogTrainIDNotFoundMessage_Node0_action["The system should log the message
THIS US-TRAIN-ID WAS NOT FOUND:
followed by the train ID that was
searched"]:::main N_LogTrainIDNotFoundMessage_Node0 -- Yes --> N_LogTrainIDNotFoundMessage_Node0_action N_LogTrainIDNotFoundMessage_Node0_action --> E_LogTrainIDNotFoundMessage S_LogTrainIDNotFoundMessage --> N_LogTrainIDNotFoundMessage_Node0 N_LogTrainIDNotFoundMessage_Node0 -- No --> E_LogTrainIDNotFoundMessage
failure for audit purposes"}:::decision N_LogTrainIDNotFoundMessage_Node0_action["The system should log the message
THIS US-TRAIN-ID WAS NOT FOUND:
followed by the train ID that was
searched"]:::main N_LogTrainIDNotFoundMessage_Node0 -- Yes --> N_LogTrainIDNotFoundMessage_Node0_action N_LogTrainIDNotFoundMessage_Node0_action --> E_LogTrainIDNotFoundMessage S_LogTrainIDNotFoundMessage --> N_LogTrainIDNotFoundMessage_Node0 N_LogTrainIDNotFoundMessage_Node0 -- No --> E_LogTrainIDNotFoundMessage
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train record was not found in the database and the train not found flag is set
WHEN:
The system needs to record the failure for audit purposes
THEN:
The system should log the message 'THIS US-TRAIN-ID WAS NOT FOUND: ' followed by the train ID that was searched
β Consolidated Acceptance Criteria
- The system processes the train status update → the train current status is set to 'DELETED', security information is cleared, and the train record is updated 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_TrainStatusDELETEDAcknowledgmentReceived(["Start Step"])
E_TrainStatusDELETEDAcknowledgmentReceived(["End Step"])
N_TrainStatusDELETEDAcknowledgmentReceived_Node0{"The system processes the train
status update"}:::decision N_TrainStatusDELETEDAcknowledgmentReceived_Node0_action["The train current status is set to
DELETED , security information is
cleared, and the train record is
updated in the database"]:::main N_TrainStatusDELETEDAcknowledgmentReceived_Node0 -- Yes --> N_TrainStatusDELETEDAcknowledgmentReceived_Node0_action N_TrainStatusDELETEDAcknowledgmentReceived_Node0_action --> E_TrainStatusDELETEDAcknowledgmentReceived S_TrainStatusDELETEDAcknowledgmentReceived --> N_TrainStatusDELETEDAcknowledgmentReceived_Node0 N_TrainStatusDELETEDAcknowledgmentReceived_Node0 -- No --> E_TrainStatusDELETEDAcknowledgmentReceived
status update"}:::decision N_TrainStatusDELETEDAcknowledgmentReceived_Node0_action["The train current status is set to
DELETED , security information is
cleared, and the train record is
updated in the database"]:::main N_TrainStatusDELETEDAcknowledgmentReceived_Node0 -- Yes --> N_TrainStatusDELETEDAcknowledgmentReceived_Node0_action N_TrainStatusDELETEDAcknowledgmentReceived_Node0_action --> E_TrainStatusDELETEDAcknowledgmentReceived S_TrainStatusDELETEDAcknowledgmentReceived --> N_TrainStatusDELETEDAcknowledgmentReceived_Node0 N_TrainStatusDELETEDAcknowledgmentReceived_Node0 -- No --> E_TrainStatusDELETEDAcknowledgmentReceived
File: GCX015E.cbl
GIVEN:
A train record exists with DELETED status and acknowledgment status is received
WHEN:
The system processes the train status update
THEN:
The train current status is set to 'DELETED', security information is cleared, and the train record is updated in the database
β Consolidated Acceptance Criteria
- The system processes the train status update → the train current status is set to 'DELETED', security information is cleared, and the train record is updated 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_TrainStatusDELETEPENDINGAcknowledgmentReceived(["Start Step"])
E_TrainStatusDELETEPENDINGAcknowledgmentReceived(["End Step"])
N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0{"The system processes the train
status update"}:::decision N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0_action["The train current status is set to
DELETED , security information is
cleared, and the train record is
updated in the database"]:::main N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0 -- Yes --> N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0_action N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0_action --> E_TrainStatusDELETEPENDINGAcknowledgmentReceived S_TrainStatusDELETEPENDINGAcknowledgmentReceived --> N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0 N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0 -- No --> E_TrainStatusDELETEPENDINGAcknowledgmentReceived
status update"}:::decision N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0_action["The train current status is set to
DELETED , security information is
cleared, and the train record is
updated in the database"]:::main N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0 -- Yes --> N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0_action N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0_action --> E_TrainStatusDELETEPENDINGAcknowledgmentReceived S_TrainStatusDELETEPENDINGAcknowledgmentReceived --> N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0 N_TrainStatusDELETEPENDINGAcknowledgmentReceived_Node0 -- No --> E_TrainStatusDELETEPENDINGAcknowledgmentReceived
File: GCX015E.cbl
GIVEN:
A train record exists with DELETE-PENDING status and acknowledgment status is received
WHEN:
The system processes the train status update
THEN:
The train current status is set to 'DELETED', security information is cleared, and the train record is updated in the database
β Consolidated Acceptance Criteria
- The system processes the train status update → the train current status is set to the current response status and the train record is updated 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_TrainStatusOtherNotDeletedDeletePending(["Start Step"])
E_TrainStatusOtherNotDeletedDeletePending(["End Step"])
N_TrainStatusOtherNotDeletedDeletePending_Node0{"The system processes the train
status update"}:::decision N_TrainStatusOtherNotDeletedDeletePending_Node0_action["The train current status is set to
the current response status and the
train record is updated in the
database"]:::main N_TrainStatusOtherNotDeletedDeletePending_Node0 -- Yes --> N_TrainStatusOtherNotDeletedDeletePending_Node0_action N_TrainStatusOtherNotDeletedDeletePending_Node0_action --> E_TrainStatusOtherNotDeletedDeletePending S_TrainStatusOtherNotDeletedDeletePending --> N_TrainStatusOtherNotDeletedDeletePending_Node0 N_TrainStatusOtherNotDeletedDeletePending_Node0 -- No --> E_TrainStatusOtherNotDeletedDeletePending
status update"}:::decision N_TrainStatusOtherNotDeletedDeletePending_Node0_action["The train current status is set to
the current response status and the
train record is updated in the
database"]:::main N_TrainStatusOtherNotDeletedDeletePending_Node0 -- Yes --> N_TrainStatusOtherNotDeletedDeletePending_Node0_action N_TrainStatusOtherNotDeletedDeletePending_Node0_action --> E_TrainStatusOtherNotDeletedDeletePending S_TrainStatusOtherNotDeletedDeletePending --> N_TrainStatusOtherNotDeletedDeletePending_Node0 N_TrainStatusOtherNotDeletedDeletePending_Node0 -- No --> E_TrainStatusOtherNotDeletedDeletePending
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train record exists that is not in DELETED status and not in DELETE-PENDING status
WHEN:
The system processes the train status update
THEN:
- The train current status is set to the current response status
- The train record is updated in the database
β Consolidated Acceptance Criteria
- If AEI send requirements → the system performs AEI train send check to determine if additional processing is needed
- If AEI send eligibility → the train must be acknowledged, have AEI send flag set, be en-route but not reported, and have a train ID ending with 'T' to proceed with AEI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckAEITrainSendConditions(["Start Step"])
E_CheckAEITrainSendConditions(["End Step"])
N_CheckAEITrainSendConditions_Node0{"The system evaluates AEI send
requirements"}:::decision N_CheckAEITrainSendConditions_Node0_action["The system performs AEI train send
check to determine if additional
processing is needed"]:::main N_CheckAEITrainSendConditions_Node0 -- Yes --> N_CheckAEITrainSendConditions_Node0_action N_CheckAEITrainSendConditions_Node0_action --> E_CheckAEITrainSendConditions S_CheckAEITrainSendConditions --> N_CheckAEITrainSendConditions_Node0 N_CheckAEITrainSendConditions_Node1{"The system evaluates AEI send
eligibility"}:::decision N_CheckAEITrainSendConditions_Node1_action["The train must be acknowledged,
have AEI send flag set, be en-route
but not reported, and have a train
ID ending with T to proceed with AEI
processing"]:::main N_CheckAEITrainSendConditions_Node1 -- Yes --> N_CheckAEITrainSendConditions_Node1_action N_CheckAEITrainSendConditions_Node1_action --> E_CheckAEITrainSendConditions N_CheckAEITrainSendConditions_Node0 -- No --> N_CheckAEITrainSendConditions_Node1 N_CheckAEITrainSendConditions_Node1 -- No --> E_CheckAEITrainSendConditions
requirements"}:::decision N_CheckAEITrainSendConditions_Node0_action["The system performs AEI train send
check to determine if additional
processing is needed"]:::main N_CheckAEITrainSendConditions_Node0 -- Yes --> N_CheckAEITrainSendConditions_Node0_action N_CheckAEITrainSendConditions_Node0_action --> E_CheckAEITrainSendConditions S_CheckAEITrainSendConditions --> N_CheckAEITrainSendConditions_Node0 N_CheckAEITrainSendConditions_Node1{"The system evaluates AEI send
eligibility"}:::decision N_CheckAEITrainSendConditions_Node1_action["The train must be acknowledged,
have AEI send flag set, be en-route
but not reported, and have a train
ID ending with T to proceed with AEI
processing"]:::main N_CheckAEITrainSendConditions_Node1 -- Yes --> N_CheckAEITrainSendConditions_Node1_action N_CheckAEITrainSendConditions_Node1_action --> E_CheckAEITrainSendConditions N_CheckAEITrainSendConditions_Node0 -- No --> N_CheckAEITrainSendConditions_Node1 N_CheckAEITrainSendConditions_Node1 -- No --> E_CheckAEITrainSendConditions
File: GCX015E.cbl
GIVEN:
A train record has been updated with new status
WHEN:
The system evaluates AEI send requirements
THEN:
The system performs AEI train send check to determine if additional processing is needed
File: GCX015E.cbl
GIVEN:
A train record exists in the system
WHEN:
The system evaluates AEI send eligibility
THEN:
The train must be acknowledged, have AEI send flag set, be en-route but not reported, and have a train ID ending with 'T' to proceed with AEI processing
β Consolidated Acceptance Criteria
- The system checks for train arrival processing requirements → the system triggers the train arrival process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessTrainArrival(["Start Step"])
E_ProcessTrainArrival(["End Step"])
N_ProcessTrainArrival_Node0{"The system checks for train arrival
processing requirements"}:::decision N_ProcessTrainArrival_Node0_action["The system triggers the train
arrival process"]:::main N_ProcessTrainArrival_Node0 -- Yes --> N_ProcessTrainArrival_Node0_action N_ProcessTrainArrival_Node0_action --> E_ProcessTrainArrival S_ProcessTrainArrival --> N_ProcessTrainArrival_Node0 N_ProcessTrainArrival_Node0 -- No --> E_ProcessTrainArrival
processing requirements"}:::decision N_ProcessTrainArrival_Node0_action["The system triggers the train
arrival process"]:::main N_ProcessTrainArrival_Node0 -- Yes --> N_ProcessTrainArrival_Node0_action N_ProcessTrainArrival_Node0_action --> E_ProcessTrainArrival S_ProcessTrainArrival --> N_ProcessTrainArrival_Node0 N_ProcessTrainArrival_Node0 -- No --> E_ProcessTrainArrival
File: GCX015E.cbl
GIVEN:
A train record has acknowledgment status and is in arrived-pending state
WHEN:
The system checks for train arrival processing requirements
THEN:
The system triggers the train arrival process
β Consolidated Acceptance Criteria
- The system processes the train status update logic → the train current status should be set to 'DELETED', security context should be cleared, and the train record should be updated with root-only replacement
- The system processes the train status update logic → the train current status should be set to 'DELETED', security context should be cleared, and the train record should be updated with root-only 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_SetTrainStatustoDELETED(["Start Step"])
E_SetTrainStatustoDELETED(["End Step"])
N_SetTrainStatustoDELETED_Node0{"The system processes the train
status update logic"}:::decision N_SetTrainStatustoDELETED_Node0_action["The train current status should be
set to DELETED , security context
should be cleared, and the train
record should be updated with
root-only replacement"]:::main N_SetTrainStatustoDELETED_Node0 -- Yes --> N_SetTrainStatustoDELETED_Node0_action N_SetTrainStatustoDELETED_Node0_action --> E_SetTrainStatustoDELETED S_SetTrainStatustoDELETED --> N_SetTrainStatustoDELETED_Node0 N_SetTrainStatustoDELETED_Node1{"The system processes the train
status update logic"}:::decision N_SetTrainStatustoDELETED_Node1_action["The train current status should be
set to DELETED , security context
should be cleared, and the train
record should be updated with
root-only replacement"]:::main N_SetTrainStatustoDELETED_Node1 -- Yes --> N_SetTrainStatustoDELETED_Node1_action N_SetTrainStatustoDELETED_Node1_action --> E_SetTrainStatustoDELETED N_SetTrainStatustoDELETED_Node0 -- No --> N_SetTrainStatustoDELETED_Node1 N_SetTrainStatustoDELETED_Node1 -- No --> E_SetTrainStatustoDELETED
status update logic"}:::decision N_SetTrainStatustoDELETED_Node0_action["The train current status should be
set to DELETED , security context
should be cleared, and the train
record should be updated with
root-only replacement"]:::main N_SetTrainStatustoDELETED_Node0 -- Yes --> N_SetTrainStatustoDELETED_Node0_action N_SetTrainStatustoDELETED_Node0_action --> E_SetTrainStatustoDELETED S_SetTrainStatustoDELETED --> N_SetTrainStatustoDELETED_Node0 N_SetTrainStatustoDELETED_Node1{"The system processes the train
status update logic"}:::decision N_SetTrainStatustoDELETED_Node1_action["The train current status should be
set to DELETED , security context
should be cleared, and the train
record should be updated with
root-only replacement"]:::main N_SetTrainStatustoDELETED_Node1 -- Yes --> N_SetTrainStatustoDELETED_Node1_action N_SetTrainStatustoDELETED_Node1_action --> E_SetTrainStatustoDELETED N_SetTrainStatustoDELETED_Node0 -- No --> N_SetTrainStatustoDELETED_Node1 N_SetTrainStatustoDELETED_Node1 -- No --> E_SetTrainStatustoDELETED
File: GCX015E.cbl
GIVEN:
A train record exists with current status as DELETED and acknowledgment status is received
WHEN:
The system processes the train status update logic
THEN:
The train current status should be set to 'DELETED', security context should be cleared, and the train record should be updated with root-only replacement
File: GCX015E.cbl
GIVEN:
A train record exists with current status as DELETE-PENDING and acknowledgment status is received
WHEN:
The system processes the train status update logic
THEN:
The train current status should be set to 'DELETED', security context should be cleared, and the train record should be updated with root-only replacement
β Consolidated Acceptance Criteria
- The system processes the train status update logic → the train current status should be set to the current working status, the train record should be updated with root-only replacement, AEI train send check should be performed, and if the train is acknowledged and has arrived-pending status, the train arrival process should be 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_SetTrainStatustoCurrentWSSTATUS(["Start Step"])
E_SetTrainStatustoCurrentWSSTATUS(["End Step"])
N_SetTrainStatustoCurrentWSSTATUS_Node0{"The system processes the train
status update logic"}:::decision N_SetTrainStatustoCurrentWSSTATUS_Node0_action["The train current status should be
set to the current working status,
the train record should be updated
with root-only replacement, AEI
train send check should be
performed, and if the train is
acknowledged and has arrived-pending
status, the train arrival process
should be triggered"]:::main N_SetTrainStatustoCurrentWSSTATUS_Node0 -- Yes --> N_SetTrainStatustoCurrentWSSTATUS_Node0_action N_SetTrainStatustoCurrentWSSTATUS_Node0_action --> E_SetTrainStatustoCurrentWSSTATUS S_SetTrainStatustoCurrentWSSTATUS --> N_SetTrainStatustoCurrentWSSTATUS_Node0 N_SetTrainStatustoCurrentWSSTATUS_Node0 -- No --> E_SetTrainStatustoCurrentWSSTATUS
status update logic"}:::decision N_SetTrainStatustoCurrentWSSTATUS_Node0_action["The train current status should be
set to the current working status,
the train record should be updated
with root-only replacement, AEI
train send check should be
performed, and if the train is
acknowledged and has arrived-pending
status, the train arrival process
should be triggered"]:::main N_SetTrainStatustoCurrentWSSTATUS_Node0 -- Yes --> N_SetTrainStatustoCurrentWSSTATUS_Node0_action N_SetTrainStatustoCurrentWSSTATUS_Node0_action --> E_SetTrainStatustoCurrentWSSTATUS S_SetTrainStatustoCurrentWSSTATUS --> N_SetTrainStatustoCurrentWSSTATUS_Node0 N_SetTrainStatustoCurrentWSSTATUS_Node0 -- No --> E_SetTrainStatustoCurrentWSSTATUS
File: GCX015E.cbl
GIVEN:
A train record exists with status that is neither DELETED nor DELETE-PENDING
WHEN:
The system processes the train status update logic
THEN:
- The train current status should be set to the current working status, the train record should be updated with root-only replacement, aei train send check should be performed, and if the train is acknowledged
- Has arrived-pending status, the train arrival process should be triggered
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the saved cargo status is moved to current cargo status and saved status description is moved to current cargo short 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_RestorePreviousCargoStatus(["Start Step"])
E_RestorePreviousCargoStatus(["End Step"])
N_RestorePreviousCargoStatus_Node0{"The system processes the cargo
status update"}:::decision N_RestorePreviousCargoStatus_Node0_action["The saved cargo status is moved to
current cargo status and saved
status description is moved to
current cargo short description"]:::main N_RestorePreviousCargoStatus_Node0 -- Yes --> N_RestorePreviousCargoStatus_Node0_action N_RestorePreviousCargoStatus_Node0_action --> E_RestorePreviousCargoStatus S_RestorePreviousCargoStatus --> N_RestorePreviousCargoStatus_Node0 N_RestorePreviousCargoStatus_Node0 -- No --> E_RestorePreviousCargoStatus
status update"}:::decision N_RestorePreviousCargoStatus_Node0_action["The saved cargo status is moved to
current cargo status and saved
status description is moved to
current cargo short description"]:::main N_RestorePreviousCargoStatus_Node0 -- Yes --> N_RestorePreviousCargoStatus_Node0_action N_RestorePreviousCargoStatus_Node0_action --> E_RestorePreviousCargoStatus S_RestorePreviousCargoStatus --> N_RestorePreviousCargoStatus_Node0 N_RestorePreviousCargoStatus_Node0 -- No --> E_RestorePreviousCargoStatus
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with acknowledgment status and saved status description is not spaces
WHEN:
The system processes the cargo status update
THEN:
- The saved cargo status is moved to current cargo status
- Saved status description is moved to current cargo short description
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the cargo status is set to USCARGO-ACK and cargo short description is set to USCARGO-ACK
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatustoAcknowledged(["Start Step"])
E_SetStatustoAcknowledged(["End Step"])
N_SetStatustoAcknowledged_Node0{"The system processes the cargo
status update"}:::decision N_SetStatustoAcknowledged_Node0_action["The cargo status is set to
USCARGO-ACK and cargo short
description is set to USCARGO-ACK"]:::main N_SetStatustoAcknowledged_Node0 -- Yes --> N_SetStatustoAcknowledged_Node0_action N_SetStatustoAcknowledged_Node0_action --> E_SetStatustoAcknowledged S_SetStatustoAcknowledged --> N_SetStatustoAcknowledged_Node0 N_SetStatustoAcknowledged_Node0 -- No --> E_SetStatustoAcknowledged
status update"}:::decision N_SetStatustoAcknowledged_Node0_action["The cargo status is set to
USCARGO-ACK and cargo short
description is set to USCARGO-ACK"]:::main N_SetStatustoAcknowledged_Node0 -- Yes --> N_SetStatustoAcknowledged_Node0_action N_SetStatustoAcknowledged_Node0_action --> E_SetStatustoAcknowledged S_SetStatustoAcknowledged --> N_SetStatustoAcknowledged_Node0 N_SetStatustoAcknowledged_Node0 -- No --> E_SetStatustoAcknowledged
File: GCX015E.cbl
GIVEN:
A cargo record exists with acknowledgment status and saved status description is spaces
WHEN:
The system processes the cargo status update
THEN:
- The cargo status is set to uscargo-ack
- Cargo short description is set to uscargo-ack
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system continues processing without saving the current status
- The current cargo status is error:
- acknowledgment
- acknowledgment-revised
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CurrentStatusisErrorAck(["Start Step"])
E_CurrentStatusisErrorAck(["End Step"])
N_CurrentStatusisErrorAck_Node0{"The system processes the cargo
status update"}:::decision N_CurrentStatusisErrorAck_Node0_action["The system continues processing
without saving the current status"]:::main N_CurrentStatusisErrorAck_Node0 -- Yes --> N_CurrentStatusisErrorAck_Node0_action N_CurrentStatusisErrorAck_Node0_action --> E_CurrentStatusisErrorAck S_CurrentStatusisErrorAck --> N_CurrentStatusisErrorAck_Node0 N_CurrentStatusisErrorAck_Node1{"The current cargo status is error
OR acknowledgment OR
acknowledgment-revised"}:::decision N_CurrentStatusisErrorAck_Node1_action["The system should continue without
saving current status information"]:::exclusion N_CurrentStatusisErrorAck_Node1 -- Yes -->|Alternative| N_CurrentStatusisErrorAck_Node1_action N_CurrentStatusisErrorAck_Node1_action --> E_CurrentStatusisErrorAck N_CurrentStatusisErrorAck_Node0 -- No --> N_CurrentStatusisErrorAck_Node1 N_CurrentStatusisErrorAck_Node1 -- No --> E_CurrentStatusisErrorAck
status update"}:::decision N_CurrentStatusisErrorAck_Node0_action["The system continues processing
without saving the current status"]:::main N_CurrentStatusisErrorAck_Node0 -- Yes --> N_CurrentStatusisErrorAck_Node0_action N_CurrentStatusisErrorAck_Node0_action --> E_CurrentStatusisErrorAck S_CurrentStatusisErrorAck --> N_CurrentStatusisErrorAck_Node0 N_CurrentStatusisErrorAck_Node1{"The current cargo status is error
OR acknowledgment OR
acknowledgment-revised"}:::decision N_CurrentStatusisErrorAck_Node1_action["The system should continue without
saving current status information"]:::exclusion N_CurrentStatusisErrorAck_Node1 -- Yes -->|Alternative| N_CurrentStatusisErrorAck_Node1_action N_CurrentStatusisErrorAck_Node1_action --> E_CurrentStatusisErrorAck N_CurrentStatusisErrorAck_Node0 -- No --> N_CurrentStatusisErrorAck_Node1 N_CurrentStatusisErrorAck_Node1 -- No --> E_CurrentStatusisErrorAck
File: GCX015E.cbl
GIVEN:
A cargo record exists with error status and current cargo short description is USCARGO-ERROR or USCARGO-ACK or USCARGO-ACK-R
WHEN:
The system processes the cargo status update
THEN:
The system continues processing without saving the current status
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Cargo processing does not have acknowledgment status
WHEN:
The current cargo status is error OR acknowledgment OR acknowledgment-revised
THEN:
The system should continue without saving current status information
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the current cargo status is saved to saved status field and current cargo short description is saved to saved status description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveCurrentStatusforFutureRestoration(["Start Step"])
E_SaveCurrentStatusforFutureRestoration(["End Step"])
N_SaveCurrentStatusforFutureRestoration_Node0{"The system processes the cargo
status update"}:::decision N_SaveCurrentStatusforFutureRestoration_Node0_action["The current cargo status is saved
to saved status field and current
cargo short description is saved to
saved status description field"]:::main N_SaveCurrentStatusforFutureRestoration_Node0 -- Yes --> N_SaveCurrentStatusforFutureRestoration_Node0_action N_SaveCurrentStatusforFutureRestoration_Node0_action --> E_SaveCurrentStatusforFutureRestoration S_SaveCurrentStatusforFutureRestoration --> N_SaveCurrentStatusforFutureRestoration_Node0 N_SaveCurrentStatusforFutureRestoration_Node0 -- No --> E_SaveCurrentStatusforFutureRestoration
status update"}:::decision N_SaveCurrentStatusforFutureRestoration_Node0_action["The current cargo status is saved
to saved status field and current
cargo short description is saved to
saved status description field"]:::main N_SaveCurrentStatusforFutureRestoration_Node0 -- Yes --> N_SaveCurrentStatusforFutureRestoration_Node0_action N_SaveCurrentStatusforFutureRestoration_Node0_action --> E_SaveCurrentStatusforFutureRestoration S_SaveCurrentStatusforFutureRestoration --> N_SaveCurrentStatusforFutureRestoration_Node0 N_SaveCurrentStatusforFutureRestoration_Node0 -- No --> E_SaveCurrentStatusforFutureRestoration
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with error status and current cargo short description is not USCARGO-ERROR and not USCARGO-ACK and not USCARGO-ACK-R
WHEN:
The system processes the cargo status update
THEN:
- The current cargo status is saved to saved status field
- Current cargo short description is saved to saved status description field
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the CP cargo status is set to CPCARGO-ERROR
- The cargo status update process is executed → the CP cargo status is set to error AND the US cargo status is set to error AND the US cargo description is set to 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_SetCargoStatustoError(["Start Step"])
E_SetCargoStatustoError(["End Step"])
N_SetCargoStatustoError_Node0{"The system processes the cargo
status update"}:::decision N_SetCargoStatustoError_Node0_action["The CP cargo status is set to
CPCARGO-ERROR"]:::main N_SetCargoStatustoError_Node0 -- Yes --> N_SetCargoStatustoError_Node0_action N_SetCargoStatustoError_Node0_action --> E_SetCargoStatustoError S_SetCargoStatustoError --> N_SetCargoStatustoError_Node0 N_SetCargoStatustoError_Node1{"The cargo status update process is
executed"}:::decision N_SetCargoStatustoError_Node1_action["The CP cargo status is set to error
AND the US cargo status is set to
error AND the US cargo description
is set to error"]:::main N_SetCargoStatustoError_Node1 -- Yes --> N_SetCargoStatustoError_Node1_action N_SetCargoStatustoError_Node1_action --> E_SetCargoStatustoError N_SetCargoStatustoError_Node0 -- No --> N_SetCargoStatustoError_Node1 N_SetCargoStatustoError_Node1 -- No --> E_SetCargoStatustoError
status update"}:::decision N_SetCargoStatustoError_Node0_action["The CP cargo status is set to
CPCARGO-ERROR"]:::main N_SetCargoStatustoError_Node0 -- Yes --> N_SetCargoStatustoError_Node0_action N_SetCargoStatustoError_Node0_action --> E_SetCargoStatustoError S_SetCargoStatustoError --> N_SetCargoStatustoError_Node0 N_SetCargoStatustoError_Node1{"The cargo status update process is
executed"}:::decision N_SetCargoStatustoError_Node1_action["The CP cargo status is set to error
AND the US cargo status is set to
error AND the US cargo description
is set to error"]:::main N_SetCargoStatustoError_Node1 -- Yes --> N_SetCargoStatustoError_Node1_action N_SetCargoStatustoError_Node1_action --> E_SetCargoStatustoError N_SetCargoStatustoError_Node0 -- No --> N_SetCargoStatustoError_Node1 N_SetCargoStatustoError_Node1 -- No --> E_SetCargoStatustoError
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with error status and CP cargo status is not CPCARGO-DELETED
WHEN:
The system processes the cargo status update
THEN:
The CP cargo status is set to CPCARGO-ERROR
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo shipment has error status AND cargo is not marked as deleted
WHEN:
The cargo status update process is executed
THEN:
- The cp cargo status is set to error
- The us cargo status is set to error
- The us cargo description is set to error
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the US cargo status is set to USCARGO-ERROR and US cargo short description is set to USCARGO-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_SetUSCargoStatustoError(["Start Step"])
E_SetUSCargoStatustoError(["End Step"])
N_SetUSCargoStatustoError_Node0{"The system processes the cargo
status update"}:::decision N_SetUSCargoStatustoError_Node0_action["The US cargo status is set to
USCARGO-ERROR and US cargo short
description is set to USCARGO-ERROR"]:::main N_SetUSCargoStatustoError_Node0 -- Yes --> N_SetUSCargoStatustoError_Node0_action N_SetUSCargoStatustoError_Node0_action --> E_SetUSCargoStatustoError S_SetUSCargoStatustoError --> N_SetUSCargoStatustoError_Node0 N_SetUSCargoStatustoError_Node0 -- No --> E_SetUSCargoStatustoError
status update"}:::decision N_SetUSCargoStatustoError_Node0_action["The US cargo status is set to
USCARGO-ERROR and US cargo short
description is set to USCARGO-ERROR"]:::main N_SetUSCargoStatustoError_Node0 -- Yes --> N_SetUSCargoStatustoError_Node0_action N_SetUSCargoStatustoError_Node0_action --> E_SetUSCargoStatustoError S_SetUSCargoStatustoError --> N_SetUSCargoStatustoError_Node0 N_SetUSCargoStatustoError_Node0 -- No --> E_SetUSCargoStatustoError
File: GCX015E.cbl
GIVEN:
A cargo record exists with error status
WHEN:
The system processes the cargo status update
THEN:
- The us cargo status is set to uscargo-error
- Us cargo short description is set to uscargo-error
β Consolidated Acceptance Criteria
- The system needs to persist the cargo status updates → the cargo segment is updated in the database using GCCUSIO service with replace function for GCSUSRT segment
- The cargo database update is executed → the cargo segment is updated in the database with the new status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordinDatabase(["Start Step"])
E_UpdateCargoRecordinDatabase(["End Step"])
N_UpdateCargoRecordinDatabase_Node0{"The system needs to persist the
cargo status updates"}:::decision N_UpdateCargoRecordinDatabase_Node0_action["The cargo segment is updated in the
database using GCCUSIO service with
replace function for GCSUSRT segment"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node1{"The cargo database update is
executed"}:::decision N_UpdateCargoRecordinDatabase_Node1_action["The cargo segment is updated in the
database with the new status
information"]:::main N_UpdateCargoRecordinDatabase_Node1 -- Yes --> N_UpdateCargoRecordinDatabase_Node1_action N_UpdateCargoRecordinDatabase_Node1_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node0 -- No --> N_UpdateCargoRecordinDatabase_Node1 N_UpdateCargoRecordinDatabase_Node1 -- No --> E_UpdateCargoRecordinDatabase
cargo status updates"}:::decision N_UpdateCargoRecordinDatabase_Node0_action["The cargo segment is updated in the
database using GCCUSIO service with
replace function for GCSUSRT segment"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node1{"The cargo database update is
executed"}:::decision N_UpdateCargoRecordinDatabase_Node1_action["The cargo segment is updated in the
database with the new status
information"]:::main N_UpdateCargoRecordinDatabase_Node1 -- Yes --> N_UpdateCargoRecordinDatabase_Node1_action N_UpdateCargoRecordinDatabase_Node1_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node0 -- No --> N_UpdateCargoRecordinDatabase_Node1 N_UpdateCargoRecordinDatabase_Node1 -- No --> E_UpdateCargoRecordinDatabase
File: GCX015E.cbl
GIVEN:
Cargo status changes have been determined
WHEN:
The system needs to persist the cargo status updates
THEN:
The cargo segment is updated in the database using GCCUSIO service with replace function for GCSUSRT segment
File: GCX015E.cbl
GIVEN:
Cargo status fields have been updated with new values
WHEN:
The cargo database update is executed
THEN:
The cargo segment is updated in the database with the new status information
β Consolidated Acceptance Criteria
- The cargo status update process is executed → the cargo status is restored from the saved status field AND the cargo description is restored from the saved description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousCargoStatusfromSaveFields(["Start Step"])
E_RestorePreviousCargoStatusfromSaveFields(["End Step"])
N_RestorePreviousCargoStatusfromSaveFields_Node0{"The cargo status update process is
executed"}:::decision N_RestorePreviousCargoStatusfromSaveFields_Node0_action["The cargo status is restored from
the saved status field AND the cargo
description is restored from the
saved description field"]:::main N_RestorePreviousCargoStatusfromSaveFields_Node0 -- Yes --> N_RestorePreviousCargoStatusfromSaveFields_Node0_action N_RestorePreviousCargoStatusfromSaveFields_Node0_action --> E_RestorePreviousCargoStatusfromSaveFields S_RestorePreviousCargoStatusfromSaveFields --> N_RestorePreviousCargoStatusfromSaveFields_Node0 N_RestorePreviousCargoStatusfromSaveFields_Node0 -- No --> E_RestorePreviousCargoStatusfromSaveFields
executed"}:::decision N_RestorePreviousCargoStatusfromSaveFields_Node0_action["The cargo status is restored from
the saved status field AND the cargo
description is restored from the
saved description field"]:::main N_RestorePreviousCargoStatusfromSaveFields_Node0 -- Yes --> N_RestorePreviousCargoStatusfromSaveFields_Node0_action N_RestorePreviousCargoStatusfromSaveFields_Node0_action --> E_RestorePreviousCargoStatusfromSaveFields S_RestorePreviousCargoStatusfromSaveFields --> N_RestorePreviousCargoStatusfromSaveFields_Node0 N_RestorePreviousCargoStatusfromSaveFields_Node0 -- No --> E_RestorePreviousCargoStatusfromSaveFields
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo shipment has acknowledgment status AND previous status description save field is not empty
WHEN:
The cargo status update process is executed
THEN:
- The cargo status is restored from the saved status field
- The cargo description is restored from the saved description field
β Consolidated Acceptance Criteria
- The cargo status update process is executed → the cargo status is set to acknowledged AND the cargo description is set to acknowledged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoStatustoAcknowledged(["Start Step"])
E_SetCargoStatustoAcknowledged(["End Step"])
N_SetCargoStatustoAcknowledged_Node0{"The cargo status update process is
executed"}:::decision N_SetCargoStatustoAcknowledged_Node0_action["The cargo status is set to
acknowledged AND the cargo
description is set to acknowledged"]:::main N_SetCargoStatustoAcknowledged_Node0 -- Yes --> N_SetCargoStatustoAcknowledged_Node0_action N_SetCargoStatustoAcknowledged_Node0_action --> E_SetCargoStatustoAcknowledged S_SetCargoStatustoAcknowledged --> N_SetCargoStatustoAcknowledged_Node0 N_SetCargoStatustoAcknowledged_Node0 -- No --> E_SetCargoStatustoAcknowledged
executed"}:::decision N_SetCargoStatustoAcknowledged_Node0_action["The cargo status is set to
acknowledged AND the cargo
description is set to acknowledged"]:::main N_SetCargoStatustoAcknowledged_Node0 -- Yes --> N_SetCargoStatustoAcknowledged_Node0_action N_SetCargoStatustoAcknowledged_Node0_action --> E_SetCargoStatustoAcknowledged S_SetCargoStatustoAcknowledged --> N_SetCargoStatustoAcknowledged_Node0 N_SetCargoStatustoAcknowledged_Node0 -- No --> E_SetCargoStatustoAcknowledged
File: GCX015E.cbl
GIVEN:
A cargo shipment has acknowledgment status AND previous status description save field is empty
WHEN:
The cargo status update process is executed
THEN:
- The cargo status is set to acknowledged
- The cargo description is set to acknowledged
β Consolidated Acceptance Criteria
- The cargo status update process is executed → the current cargo status is saved to the save status field AND the current cargo description is saved to the save description field
- The system prepares to update cargo status to error → the system should move current cargo status to save status field AND move current cargo description to save description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveCurrentStatustoSaveFields(["Start Step"])
E_SaveCurrentStatustoSaveFields(["End Step"])
N_SaveCurrentStatustoSaveFields_Node0{"The cargo status update process is
executed"}:::decision N_SaveCurrentStatustoSaveFields_Node0_action["The current cargo status is saved
to the save status field AND the
current cargo description is saved
to the save description field"]:::main N_SaveCurrentStatustoSaveFields_Node0 -- Yes --> N_SaveCurrentStatustoSaveFields_Node0_action N_SaveCurrentStatustoSaveFields_Node0_action --> E_SaveCurrentStatustoSaveFields S_SaveCurrentStatustoSaveFields --> N_SaveCurrentStatustoSaveFields_Node0 N_SaveCurrentStatustoSaveFields_Node1{"The system prepares to update cargo
status to error"}:::decision N_SaveCurrentStatustoSaveFields_Node1_action["The system should move current
cargo status to save status field
AND move current cargo description
to save description field"]:::exclusion N_SaveCurrentStatustoSaveFields_Node1 -- Yes -->|Alternative| N_SaveCurrentStatustoSaveFields_Node1_action N_SaveCurrentStatustoSaveFields_Node1_action --> E_SaveCurrentStatustoSaveFields N_SaveCurrentStatustoSaveFields_Node0 -- No --> N_SaveCurrentStatustoSaveFields_Node1 N_SaveCurrentStatustoSaveFields_Node1 -- No --> E_SaveCurrentStatustoSaveFields
executed"}:::decision N_SaveCurrentStatustoSaveFields_Node0_action["The current cargo status is saved
to the save status field AND the
current cargo description is saved
to the save description field"]:::main N_SaveCurrentStatustoSaveFields_Node0 -- Yes --> N_SaveCurrentStatustoSaveFields_Node0_action N_SaveCurrentStatustoSaveFields_Node0_action --> E_SaveCurrentStatustoSaveFields S_SaveCurrentStatustoSaveFields --> N_SaveCurrentStatustoSaveFields_Node0 N_SaveCurrentStatustoSaveFields_Node1{"The system prepares to update cargo
status to error"}:::decision N_SaveCurrentStatustoSaveFields_Node1_action["The system should move current
cargo status to save status field
AND move current cargo description
to save description field"]:::exclusion N_SaveCurrentStatustoSaveFields_Node1 -- Yes -->|Alternative| N_SaveCurrentStatustoSaveFields_Node1_action N_SaveCurrentStatustoSaveFields_Node1_action --> E_SaveCurrentStatustoSaveFields N_SaveCurrentStatustoSaveFields_Node0 -- No --> N_SaveCurrentStatustoSaveFields_Node1 N_SaveCurrentStatustoSaveFields_Node1 -- No --> E_SaveCurrentStatustoSaveFields
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo shipment has error status AND current cargo status is not error AND current cargo status is not acknowledgment AND current cargo status is not acknowledgment-revised
WHEN:
The cargo status update process is executed
THEN:
- The current cargo status is saved to the save status field
- The current cargo description is saved to the save description field
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Cargo processing does not have acknowledgment status AND current status is not error, acknowledgment, or acknowledgment-revised
WHEN:
The system prepares to update cargo status to error
THEN:
- The system should move current cargo status to save status field
- Move current cargo description to save description field
β Consolidated Acceptance Criteria
- The cargo status update process is executed → no changes are made to the save status field AND no changes are made to the save description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipSavingCurrentStatus(["Start Step"])
E_SkipSavingCurrentStatus(["End Step"])
N_SkipSavingCurrentStatus_Node0{"The cargo status update process is
executed"}:::decision N_SkipSavingCurrentStatus_Node0_action["No changes are made to the save
status field AND no changes are made
to the save description field"]:::main N_SkipSavingCurrentStatus_Node0 -- Yes --> N_SkipSavingCurrentStatus_Node0_action N_SkipSavingCurrentStatus_Node0_action --> E_SkipSavingCurrentStatus S_SkipSavingCurrentStatus --> N_SkipSavingCurrentStatus_Node0 N_SkipSavingCurrentStatus_Node0 -- No --> E_SkipSavingCurrentStatus
executed"}:::decision N_SkipSavingCurrentStatus_Node0_action["No changes are made to the save
status field AND no changes are made
to the save description field"]:::main N_SkipSavingCurrentStatus_Node0 -- Yes --> N_SkipSavingCurrentStatus_Node0_action N_SkipSavingCurrentStatus_Node0_action --> E_SkipSavingCurrentStatus S_SkipSavingCurrentStatus --> N_SkipSavingCurrentStatus_Node0 N_SkipSavingCurrentStatus_Node0 -- No --> E_SkipSavingCurrentStatus
File: GCX015E.cbl
GIVEN:
A cargo shipment has error status AND (current cargo status is error OR current cargo status is acknowledgment OR current cargo status is acknowledgment-revised)
WHEN:
The cargo status update process is executed
THEN:
- No changes are made to the save status field
- No changes are made to the save description field
β Consolidated Acceptance Criteria
- The system receives an acknowledgment status response → the system should either set cargo to acknowledged status or restore previous status from save 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_CheckCargoProcessingStatus(["Start Step"])
E_CheckCargoProcessingStatus(["End Step"])
N_CheckCargoProcessingStatus_Node0{"The system receives an
acknowledgment status response"}:::decision N_CheckCargoProcessingStatus_Node0_action["The system should either set cargo
to acknowledged status or restore
previous status from save fields"]:::main N_CheckCargoProcessingStatus_Node0 -- Yes --> N_CheckCargoProcessingStatus_Node0_action N_CheckCargoProcessingStatus_Node0_action --> E_CheckCargoProcessingStatus S_CheckCargoProcessingStatus --> N_CheckCargoProcessingStatus_Node0 N_CheckCargoProcessingStatus_Node0 -- No --> E_CheckCargoProcessingStatus
acknowledgment status response"}:::decision N_CheckCargoProcessingStatus_Node0_action["The system should either set cargo
to acknowledged status or restore
previous status from save fields"]:::main N_CheckCargoProcessingStatus_Node0 -- Yes --> N_CheckCargoProcessingStatus_Node0_action N_CheckCargoProcessingStatus_Node0_action --> E_CheckCargoProcessingStatus S_CheckCargoProcessingStatus --> N_CheckCargoProcessingStatus_Node0 N_CheckCargoProcessingStatus_Node0 -- No --> E_CheckCargoProcessingStatus
File: GCX015E.cbl
GIVEN:
A cargo transaction is being processed with a current status
WHEN:
The system receives an acknowledgment status response
THEN:
The system should either set cargo to acknowledged status or restore previous status from save fields
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system should set both cargo status indicators to acknowledged 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_SetCargotoAcknowledgedStatus(["Start Step"])
E_SetCargotoAcknowledgedStatus(["End Step"])
N_SetCargotoAcknowledgedStatus_Node0{"The system processes the cargo
status update"}:::decision N_SetCargotoAcknowledgedStatus_Node0_action["The system should set both cargo
status indicators to acknowledged
state"]:::main N_SetCargotoAcknowledgedStatus_Node0 -- Yes --> N_SetCargotoAcknowledgedStatus_Node0_action N_SetCargotoAcknowledgedStatus_Node0_action --> E_SetCargotoAcknowledgedStatus S_SetCargotoAcknowledgedStatus --> N_SetCargotoAcknowledgedStatus_Node0 N_SetCargotoAcknowledgedStatus_Node0 -- No --> E_SetCargotoAcknowledgedStatus
status update"}:::decision N_SetCargotoAcknowledgedStatus_Node0_action["The system should set both cargo
status indicators to acknowledged
state"]:::main N_SetCargotoAcknowledgedStatus_Node0 -- Yes --> N_SetCargotoAcknowledgedStatus_Node0_action N_SetCargotoAcknowledgedStatus_Node0_action --> E_SetCargotoAcknowledgedStatus S_SetCargotoAcknowledgedStatus --> N_SetCargotoAcknowledgedStatus_Node0 N_SetCargotoAcknowledgedStatus_Node0 -- No --> E_SetCargotoAcknowledgedStatus
File: GCX015E.cbl
GIVEN:
Cargo processing has acknowledgment status AND save status description fields are empty
WHEN:
The system processes the cargo status update
THEN:
The system should set both cargo status indicators to acknowledged state
β Consolidated Acceptance Criteria
- The system processes the cargo status update → the system should restore the saved status to current status field AND restore the saved description to current description field
- The system checks for previously saved status information → if saved status description exists, restore the saved status and description to current fields, otherwise set cargo status to acknowledgment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousStatusfromSaveFields(["Start Step"])
E_RestorePreviousStatusfromSaveFields(["End Step"])
N_RestorePreviousStatusfromSaveFields_Node0{"The system processes the cargo
status update"}:::decision N_RestorePreviousStatusfromSaveFields_Node0_action["The system should restore the saved
status to current status field AND
restore the saved description to
current description field"]:::main N_RestorePreviousStatusfromSaveFields_Node0 -- Yes --> N_RestorePreviousStatusfromSaveFields_Node0_action N_RestorePreviousStatusfromSaveFields_Node0_action --> E_RestorePreviousStatusfromSaveFields S_RestorePreviousStatusfromSaveFields --> N_RestorePreviousStatusfromSaveFields_Node0 N_RestorePreviousStatusfromSaveFields_Node1{"The system checks for previously
saved status information"}:::decision N_RestorePreviousStatusfromSaveFields_Node1_action["If saved status description exists,
restore the saved status and
description to current fields,
otherwise set cargo status to
acknowledgment"]:::main N_RestorePreviousStatusfromSaveFields_Node1 -- Yes --> N_RestorePreviousStatusfromSaveFields_Node1_action N_RestorePreviousStatusfromSaveFields_Node1_action --> E_RestorePreviousStatusfromSaveFields N_RestorePreviousStatusfromSaveFields_Node0 -- No --> N_RestorePreviousStatusfromSaveFields_Node1 N_RestorePreviousStatusfromSaveFields_Node1 -- No --> E_RestorePreviousStatusfromSaveFields
status update"}:::decision N_RestorePreviousStatusfromSaveFields_Node0_action["The system should restore the saved
status to current status field AND
restore the saved description to
current description field"]:::main N_RestorePreviousStatusfromSaveFields_Node0 -- Yes --> N_RestorePreviousStatusfromSaveFields_Node0_action N_RestorePreviousStatusfromSaveFields_Node0_action --> E_RestorePreviousStatusfromSaveFields S_RestorePreviousStatusfromSaveFields --> N_RestorePreviousStatusfromSaveFields_Node0 N_RestorePreviousStatusfromSaveFields_Node1{"The system checks for previously
saved status information"}:::decision N_RestorePreviousStatusfromSaveFields_Node1_action["If saved status description exists,
restore the saved status and
description to current fields,
otherwise set cargo status to
acknowledgment"]:::main N_RestorePreviousStatusfromSaveFields_Node1 -- Yes --> N_RestorePreviousStatusfromSaveFields_Node1_action N_RestorePreviousStatusfromSaveFields_Node1_action --> E_RestorePreviousStatusfromSaveFields N_RestorePreviousStatusfromSaveFields_Node0 -- No --> N_RestorePreviousStatusfromSaveFields_Node1 N_RestorePreviousStatusfromSaveFields_Node1 -- No --> E_RestorePreviousStatusfromSaveFields
File: GCX015E.cbl
GIVEN:
Cargo processing has acknowledgment status AND save status description fields contain data
WHEN:
The system processes the cargo status update
THEN:
- The system should restore the saved status to current status field
- Restore the saved description to current description field
File: GCX015E.cbl
GIVEN:
A cargo record is being processed with acknowledgment status
WHEN:
The system checks for previously saved status information
THEN:
- If saved status description exists, restore the saved status
- Description to current fields, otherwise set cargo status to acknowledgment
β Consolidated Acceptance Criteria
- The system processes cargo status update for error condition AND cargo is not marked as deleted → the system should set Canadian cargo status to error AND set US cargo status to error AND set US cargo description to 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_SetCargotoErrorStatus(["Start Step"])
E_SetCargotoErrorStatus(["End Step"])
N_SetCargotoErrorStatus_Node0{"The system processes cargo status
update for error condition AND cargo
is not marked as deleted"}:::decision N_SetCargotoErrorStatus_Node0_action["The system should set Canadian
cargo status to error AND set US
cargo status to error AND set US
cargo description to error"]:::exclusion N_SetCargotoErrorStatus_Node0 -- Yes -->|Alternative| N_SetCargotoErrorStatus_Node0_action N_SetCargotoErrorStatus_Node0_action --> E_SetCargotoErrorStatus S_SetCargotoErrorStatus --> N_SetCargotoErrorStatus_Node0 N_SetCargotoErrorStatus_Node0 -- No --> E_SetCargotoErrorStatus
update for error condition AND cargo
is not marked as deleted"}:::decision N_SetCargotoErrorStatus_Node0_action["The system should set Canadian
cargo status to error AND set US
cargo status to error AND set US
cargo description to error"]:::exclusion N_SetCargotoErrorStatus_Node0 -- Yes -->|Alternative| N_SetCargotoErrorStatus_Node0_action N_SetCargotoErrorStatus_Node0_action --> E_SetCargotoErrorStatus S_SetCargotoErrorStatus --> N_SetCargotoErrorStatus_Node0 N_SetCargotoErrorStatus_Node0 -- No --> E_SetCargotoErrorStatus
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Cargo processing does not have acknowledgment status
WHEN:
- The system processes cargo status update for error condition
- Cargo is not marked as deleted
THEN:
- The system should set canadian cargo status to error
- Set us cargo status to error
- Set us cargo description to error
β Consolidated Acceptance Criteria
- The system checks for previously saved status information → if no saved status exists, set status to acknowledgment; if saved status exists, restore the saved status 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_IsAcknowledgmentStatus(["Start Step"])
E_IsAcknowledgmentStatus(["End Step"])
N_IsAcknowledgmentStatus_Node0{"The system checks for previously
saved status information"}:::decision N_IsAcknowledgmentStatus_Node0_action["If no saved status exists, set
status to acknowledgment if saved
status exists, restore the saved
status and description"]:::main N_IsAcknowledgmentStatus_Node0 -- Yes --> N_IsAcknowledgmentStatus_Node0_action N_IsAcknowledgmentStatus_Node0_action --> E_IsAcknowledgmentStatus S_IsAcknowledgmentStatus --> N_IsAcknowledgmentStatus_Node0 N_IsAcknowledgmentStatus_Node0 -- No --> E_IsAcknowledgmentStatus
saved status information"}:::decision N_IsAcknowledgmentStatus_Node0_action["If no saved status exists, set
status to acknowledgment if saved
status exists, restore the saved
status and description"]:::main N_IsAcknowledgmentStatus_Node0 -- Yes --> N_IsAcknowledgmentStatus_Node0_action N_IsAcknowledgmentStatus_Node0_action --> E_IsAcknowledgmentStatus S_IsAcknowledgmentStatus --> N_IsAcknowledgmentStatus_Node0 N_IsAcknowledgmentStatus_Node0 -- No --> E_IsAcknowledgmentStatus
File: GCX015E.cbl
GIVEN:
A cargo record is being processed with acknowledgment status
WHEN:
The system checks for previously saved status information
THEN:
- If no saved status exists, set status to acknowledgment; if saved status exists, restore the saved status
- Description
β Consolidated Acceptance Criteria
- The save status description field is empty → set both RT11 and RT21 cargo status fields to acknowledgment 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_SetStatustoACK(["Start Step"])
E_SetStatustoACK(["End Step"])
N_SetStatustoACK_Node0{"The save status description field
is empty"}:::decision N_SetStatustoACK_Node0_action["Set both RT11 and RT21 cargo status
fields to acknowledgment status"]:::main N_SetStatustoACK_Node0 -- Yes --> N_SetStatustoACK_Node0_action N_SetStatustoACK_Node0_action --> E_SetStatustoACK S_SetStatustoACK --> N_SetStatustoACK_Node0 N_SetStatustoACK_Node0 -- No --> E_SetStatustoACK
is empty"}:::decision N_SetStatustoACK_Node0_action["Set both RT11 and RT21 cargo status
fields to acknowledgment status"]:::main N_SetStatustoACK_Node0 -- Yes --> N_SetStatustoACK_Node0_action N_SetStatustoACK_Node0_action --> E_SetStatustoACK S_SetStatustoACK --> N_SetStatustoACK_Node0 N_SetStatustoACK_Node0 -- No --> E_SetStatustoACK
File: GCX015E.cbl
GIVEN:
A cargo record is being processed with acknowledgment status and no previously saved status information exists
WHEN:
The save status description field is empty
THEN:
- Set both rt11
- Rt21 cargo status fields to acknowledgment status
β Consolidated Acceptance Criteria
- The save status description field contains data → restore the cargo status from RT44 save field to RT11 status field and restore the status description from RT45 save field to RT21 description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreStatusfromSaveField(["Start Step"])
E_RestoreStatusfromSaveField(["End Step"])
N_RestoreStatusfromSaveField_Node0{"The save status description field
contains data"}:::decision N_RestoreStatusfromSaveField_Node0_action["Restore the cargo status from RT44
save field to RT11 status field and
restore the status description from
RT45 save field to RT21 description
field"]:::main N_RestoreStatusfromSaveField_Node0 -- Yes --> N_RestoreStatusfromSaveField_Node0_action N_RestoreStatusfromSaveField_Node0_action --> E_RestoreStatusfromSaveField S_RestoreStatusfromSaveField --> N_RestoreStatusfromSaveField_Node0 N_RestoreStatusfromSaveField_Node0 -- No --> E_RestoreStatusfromSaveField
contains data"}:::decision N_RestoreStatusfromSaveField_Node0_action["Restore the cargo status from RT44
save field to RT11 status field and
restore the status description from
RT45 save field to RT21 description
field"]:::main N_RestoreStatusfromSaveField_Node0 -- Yes --> N_RestoreStatusfromSaveField_Node0_action N_RestoreStatusfromSaveField_Node0_action --> E_RestoreStatusfromSaveField S_RestoreStatusfromSaveField --> N_RestoreStatusfromSaveField_Node0 N_RestoreStatusfromSaveField_Node0 -- No --> E_RestoreStatusfromSaveField
File: GCX015E.cbl
GIVEN:
A cargo record is being processed with acknowledgment status and previously saved status information exists
WHEN:
The save status description field contains data
THEN:
- Restore the cargo status from rt44 save field to rt11 status field
- Restore the status description from rt45 save field to rt21 description field
β Consolidated Acceptance Criteria
- The cargo status processing is complete → update the cargo segment record in the database with the new status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecord(["Start Step"])
E_UpdateCargoRecord(["End Step"])
N_UpdateCargoRecord_Node0{"The cargo status processing is
complete"}:::decision N_UpdateCargoRecord_Node0_action["Update the cargo segment record in
the database with the new status
information"]:::main N_UpdateCargoRecord_Node0 -- Yes --> N_UpdateCargoRecord_Node0_action N_UpdateCargoRecord_Node0_action --> E_UpdateCargoRecord S_UpdateCargoRecord --> N_UpdateCargoRecord_Node0 N_UpdateCargoRecord_Node0 -- No --> E_UpdateCargoRecord
complete"}:::decision N_UpdateCargoRecord_Node0_action["Update the cargo segment record in
the database with the new status
information"]:::main N_UpdateCargoRecord_Node0 -- Yes --> N_UpdateCargoRecord_Node0_action N_UpdateCargoRecord_Node0_action --> E_UpdateCargoRecord S_UpdateCargoRecord --> N_UpdateCargoRecord_Node0 N_UpdateCargoRecord_Node0 -- No --> E_UpdateCargoRecord
File: GCX015E.cbl
GIVEN:
Cargo status has been determined (either default acknowledgment or restored from saved fields)
WHEN:
The cargo status processing is complete
THEN:
Update the cargo segment record in the database with the new status information
β Consolidated Acceptance Criteria
- The system checks AEI send eligibility → the train must have ACK status to proceed with AEI processing
- The system checks the train status → aEI processing should only continue if the train status is ACK, otherwise skip AEI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainStatusACK(["Start Step"])
E_TrainStatusACK(["End Step"])
N_TrainStatusACK_Node0{"The system checks AEI send
eligibility"}:::decision N_TrainStatusACK_Node0_action["The train must have ACK status to
proceed with AEI processing"]:::main N_TrainStatusACK_Node0 -- Yes --> N_TrainStatusACK_Node0_action N_TrainStatusACK_Node0_action --> E_TrainStatusACK S_TrainStatusACK --> N_TrainStatusACK_Node0 N_TrainStatusACK_Node1{"The system checks the train status"}:::decision N_TrainStatusACK_Node1_action["AEI processing should only continue
if the train status is ACK,
otherwise skip AEI processing"]:::main N_TrainStatusACK_Node1 -- Yes --> N_TrainStatusACK_Node1_action N_TrainStatusACK_Node1_action --> E_TrainStatusACK N_TrainStatusACK_Node0 -- No --> N_TrainStatusACK_Node1 N_TrainStatusACK_Node1 -- No --> E_TrainStatusACK
eligibility"}:::decision N_TrainStatusACK_Node0_action["The train must have ACK status to
proceed with AEI processing"]:::main N_TrainStatusACK_Node0 -- Yes --> N_TrainStatusACK_Node0_action N_TrainStatusACK_Node0_action --> E_TrainStatusACK S_TrainStatusACK --> N_TrainStatusACK_Node0 N_TrainStatusACK_Node1{"The system checks the train status"}:::decision N_TrainStatusACK_Node1_action["AEI processing should only continue
if the train status is ACK,
otherwise skip AEI processing"]:::main N_TrainStatusACK_Node1 -- Yes --> N_TrainStatusACK_Node1_action N_TrainStatusACK_Node1_action --> E_TrainStatusACK N_TrainStatusACK_Node0 -- No --> N_TrainStatusACK_Node1 N_TrainStatusACK_Node1 -- No --> E_TrainStatusACK
File: GCX015E.cbl
GIVEN:
A train record exists in the system
WHEN:
The system checks AEI send eligibility
THEN:
The train must have ACK status to proceed with AEI processing
File: GCX015E.cbl
GIVEN:
A train record is being processed for AEI send validation
WHEN:
The system checks the train status
THEN:
AEI processing should only continue if the train status is ACK, otherwise skip AEI processing
β Consolidated Acceptance Criteria
- If AEI send requirements → the AEI send flag must be set to Yes 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_AEISendFlagYes(["Start Step"])
E_AEISendFlagYes(["End Step"])
N_AEISendFlagYes_Node0{"The system evaluates AEI send
requirements"}:::decision N_AEISendFlagYes_Node0_action["The AEI send flag must be set to
Yes to continue processing"]:::main N_AEISendFlagYes_Node0 -- Yes --> N_AEISendFlagYes_Node0_action N_AEISendFlagYes_Node0_action --> E_AEISendFlagYes S_AEISendFlagYes --> N_AEISendFlagYes_Node0 N_AEISendFlagYes_Node0 -- No --> E_AEISendFlagYes
requirements"}:::decision N_AEISendFlagYes_Node0_action["The AEI send flag must be set to
Yes to continue processing"]:::main N_AEISendFlagYes_Node0 -- Yes --> N_AEISendFlagYes_Node0_action N_AEISendFlagYes_Node0_action --> E_AEISendFlagYes S_AEISendFlagYes --> N_AEISendFlagYes_Node0 N_AEISendFlagYes_Node0 -- No --> E_AEISendFlagYes
File: GCX015E.cbl
GIVEN:
A train has ACK status
WHEN:
The system evaluates AEI send requirements
THEN:
The AEI send flag must be set to Yes to continue processing
β Consolidated Acceptance Criteria
- The system checks enroute reporting status → the train status must be 'Enroute Not Reported' to qualify for AEI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainStatusEnrouteNotReported(["Start Step"])
E_TrainStatusEnrouteNotReported(["End Step"])
N_TrainStatusEnrouteNotReported_Node0{"The system checks enroute reporting
status"}:::decision N_TrainStatusEnrouteNotReported_Node0_action["The train status must be Enroute
Not Reported to qualify for AEI
processing"]:::main N_TrainStatusEnrouteNotReported_Node0 -- Yes --> N_TrainStatusEnrouteNotReported_Node0_action N_TrainStatusEnrouteNotReported_Node0_action --> E_TrainStatusEnrouteNotReported S_TrainStatusEnrouteNotReported --> N_TrainStatusEnrouteNotReported_Node0 N_TrainStatusEnrouteNotReported_Node0 -- No --> E_TrainStatusEnrouteNotReported
status"}:::decision N_TrainStatusEnrouteNotReported_Node0_action["The train status must be Enroute
Not Reported to qualify for AEI
processing"]:::main N_TrainStatusEnrouteNotReported_Node0 -- Yes --> N_TrainStatusEnrouteNotReported_Node0_action N_TrainStatusEnrouteNotReported_Node0_action --> E_TrainStatusEnrouteNotReported S_TrainStatusEnrouteNotReported --> N_TrainStatusEnrouteNotReported_Node0 N_TrainStatusEnrouteNotReported_Node0 -- No --> E_TrainStatusEnrouteNotReported
File: GCX015E.cbl
GIVEN:
A train has ACK status and AEI send flag is Yes
WHEN:
The system checks enroute reporting status
THEN:
The train status must be 'Enroute Not Reported' to qualify for AEI processing
β Consolidated Acceptance Criteria
- The system validates train ID format → the train ID must end with character 'T' at position 23 to proceed with customs 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_TrainIDendswithT(["Start Step"])
E_TrainIDendswithT(["End Step"])
N_TrainIDendswithT_Node0{"The system validates train ID
format"}:::decision N_TrainIDendswithT_Node0_action["The train ID must end with
character T at position 23 to
proceed with customs transmission"]:::main N_TrainIDendswithT_Node0 -- Yes --> N_TrainIDendswithT_Node0_action N_TrainIDendswithT_Node0_action --> E_TrainIDendswithT S_TrainIDendswithT --> N_TrainIDendswithT_Node0 N_TrainIDendswithT_Node0 -- No --> E_TrainIDendswithT
format"}:::decision N_TrainIDendswithT_Node0_action["The train ID must end with
character T at position 23 to
proceed with customs transmission"]:::main N_TrainIDendswithT_Node0 -- Yes --> N_TrainIDendswithT_Node0_action N_TrainIDendswithT_Node0_action --> E_TrainIDendswithT S_TrainIDendswithT --> N_TrainIDendswithT_Node0 N_TrainIDendswithT_Node0 -- No --> E_TrainIDendswithT
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train meets ACK status, AEI send flag, and enroute not reported criteria
WHEN:
The system validates train ID format
THEN:
The train ID must end with character 'T' at position 23 to proceed with customs transmission
β Consolidated Acceptance Criteria
- The system prepares customs transaction → set transaction code to GCT1461E, security to high values, customs code to 'A', and copy train identification and routing details
- The system prepares the customs transaction → the customs transaction code must be set to 'GCT1461E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCustomsTransactionCodetoGCT1461E(["Start Step"])
E_SetCustomsTransactionCodetoGCT1461E(["End Step"])
N_SetCustomsTransactionCodetoGCT1461E_Node0{"The system prepares customs
transaction"}:::decision N_SetCustomsTransactionCodetoGCT1461E_Node0_action["Set transaction code to GCT1461E,
security to high values, customs
code to A , and copy train
identification and routing details"]:::main N_SetCustomsTransactionCodetoGCT1461E_Node0 -- Yes --> N_SetCustomsTransactionCodetoGCT1461E_Node0_action N_SetCustomsTransactionCodetoGCT1461E_Node0_action --> E_SetCustomsTransactionCodetoGCT1461E S_SetCustomsTransactionCodetoGCT1461E --> N_SetCustomsTransactionCodetoGCT1461E_Node0 N_SetCustomsTransactionCodetoGCT1461E_Node1{"The system prepares the customs
transaction"}:::decision N_SetCustomsTransactionCodetoGCT1461E_Node1_action["The customs transaction code must
be set to GCT1461E"]:::main N_SetCustomsTransactionCodetoGCT1461E_Node1 -- Yes --> N_SetCustomsTransactionCodetoGCT1461E_Node1_action N_SetCustomsTransactionCodetoGCT1461E_Node1_action --> E_SetCustomsTransactionCodetoGCT1461E N_SetCustomsTransactionCodetoGCT1461E_Node0 -- No --> N_SetCustomsTransactionCodetoGCT1461E_Node1 N_SetCustomsTransactionCodetoGCT1461E_Node1 -- No --> E_SetCustomsTransactionCodetoGCT1461E
transaction"}:::decision N_SetCustomsTransactionCodetoGCT1461E_Node0_action["Set transaction code to GCT1461E,
security to high values, customs
code to A , and copy train
identification and routing details"]:::main N_SetCustomsTransactionCodetoGCT1461E_Node0 -- Yes --> N_SetCustomsTransactionCodetoGCT1461E_Node0_action N_SetCustomsTransactionCodetoGCT1461E_Node0_action --> E_SetCustomsTransactionCodetoGCT1461E S_SetCustomsTransactionCodetoGCT1461E --> N_SetCustomsTransactionCodetoGCT1461E_Node0 N_SetCustomsTransactionCodetoGCT1461E_Node1{"The system prepares the customs
transaction"}:::decision N_SetCustomsTransactionCodetoGCT1461E_Node1_action["The customs transaction code must
be set to GCT1461E"]:::main N_SetCustomsTransactionCodetoGCT1461E_Node1 -- Yes --> N_SetCustomsTransactionCodetoGCT1461E_Node1_action N_SetCustomsTransactionCodetoGCT1461E_Node1_action --> E_SetCustomsTransactionCodetoGCT1461E N_SetCustomsTransactionCodetoGCT1461E_Node0 -- No --> N_SetCustomsTransactionCodetoGCT1461E_Node1 N_SetCustomsTransactionCodetoGCT1461E_Node1 -- No --> E_SetCustomsTransactionCodetoGCT1461E
File: GCX015E.cbl
GIVEN:
A train passes all AEI eligibility checks
WHEN:
The system prepares customs transaction
THEN:
- Set transaction code to gct1461e, security to high values, customs code to 'a', and copy train identification
- Routing details
File: GCX015E.cbl
GIVEN:
A train is eligible for AEI processing
WHEN:
The system prepares the customs transaction
THEN:
The customs transaction code must be set to 'GCT1461E'
β Consolidated Acceptance Criteria
- An equipment item has container indicator set to 'C' → skip the container equipment and do not include it in the customs car 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_EquipmentTypeisContainer(["Start Step"])
E_EquipmentTypeisContainer(["End Step"])
N_EquipmentTypeisContainer_Node0{"An equipment item has container
indicator set to C"}:::decision N_EquipmentTypeisContainer_Node0_action["Skip the container equipment and do
not include it in the customs car
data"]:::main N_EquipmentTypeisContainer_Node0 -- Yes --> N_EquipmentTypeisContainer_Node0_action N_EquipmentTypeisContainer_Node0_action --> E_EquipmentTypeisContainer S_EquipmentTypeisContainer --> N_EquipmentTypeisContainer_Node0 N_EquipmentTypeisContainer_Node0 -- No --> E_EquipmentTypeisContainer
indicator set to C"}:::decision N_EquipmentTypeisContainer_Node0_action["Skip the container equipment and do
not include it in the customs car
data"]:::main N_EquipmentTypeisContainer_Node0 -- Yes --> N_EquipmentTypeisContainer_Node0_action N_EquipmentTypeisContainer_Node0_action --> E_EquipmentTypeisContainer S_EquipmentTypeisContainer --> N_EquipmentTypeisContainer_Node0 N_EquipmentTypeisContainer_Node0 -- No --> E_EquipmentTypeisContainer
File: GCX015E.cbl
GIVEN:
The system is processing train equipment for AEI transmission
WHEN:
An equipment item has container indicator set to 'C'
THEN:
- Skip the container equipment
- Do not include it in the customs car data
β Consolidated Acceptance Criteria
- The system loads car information → copy equipment initial and convert equipment number to 6-digit format for customs car data
- The system loads car information → the car initial must be loaded from the equipment initial and the car number must be loaded from the equipment number converted to 6-digit 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_LoadCarInitialandNumber(["Start Step"])
E_LoadCarInitialandNumber(["End Step"])
N_LoadCarInitialandNumber_Node0{"The system loads car information"}:::decision
N_LoadCarInitialandNumber_Node0_action["Copy equipment initial and convert
equipment number to 6-digit format
for customs car data"]:::main N_LoadCarInitialandNumber_Node0 -- Yes --> N_LoadCarInitialandNumber_Node0_action N_LoadCarInitialandNumber_Node0_action --> E_LoadCarInitialandNumber S_LoadCarInitialandNumber --> N_LoadCarInitialandNumber_Node0 N_LoadCarInitialandNumber_Node1{"The system loads car information"}:::decision N_LoadCarInitialandNumber_Node1_action["The car initial must be loaded from
the equipment initial and the car
number must be loaded from the
equipment number converted to
6-digit format"]:::main N_LoadCarInitialandNumber_Node1 -- Yes --> N_LoadCarInitialandNumber_Node1_action N_LoadCarInitialandNumber_Node1_action --> E_LoadCarInitialandNumber N_LoadCarInitialandNumber_Node0 -- No --> N_LoadCarInitialandNumber_Node1 N_LoadCarInitialandNumber_Node1 -- No --> E_LoadCarInitialandNumber
equipment number to 6-digit format
for customs car data"]:::main N_LoadCarInitialandNumber_Node0 -- Yes --> N_LoadCarInitialandNumber_Node0_action N_LoadCarInitialandNumber_Node0_action --> E_LoadCarInitialandNumber S_LoadCarInitialandNumber --> N_LoadCarInitialandNumber_Node0 N_LoadCarInitialandNumber_Node1{"The system loads car information"}:::decision N_LoadCarInitialandNumber_Node1_action["The car initial must be loaded from
the equipment initial and the car
number must be loaded from the
equipment number converted to
6-digit format"]:::main N_LoadCarInitialandNumber_Node1 -- Yes --> N_LoadCarInitialandNumber_Node1_action N_LoadCarInitialandNumber_Node1_action --> E_LoadCarInitialandNumber N_LoadCarInitialandNumber_Node0 -- No --> N_LoadCarInitialandNumber_Node1 N_LoadCarInitialandNumber_Node1 -- No --> E_LoadCarInitialandNumber
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is not a container type
WHEN:
The system loads car information
THEN:
- Copy equipment initial
- Convert equipment number to 6-digit format for customs car data
File: GCX015E.cbl
GIVEN:
A non-container car exists in the train
WHEN:
The system loads car information
THEN:
- The car initial must be loaded from the equipment initial
- The car number must be loaded from the equipment number converted to 6-digit format
β Consolidated Acceptance Criteria
- The system sets load/empty indicator → if next equipment is container, set indicator to 'L', otherwise use the equipment's load/empty code
- The system determines the load/empty indicator → if the car position exceeds the total equipment quantity, use the car's load/empty code; otherwise, if the next car is a container, set indicator to 'L', else use the current car's load/empty 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_SetCarLoadEmptyIndicator(["Start Step"])
E_SetCarLoadEmptyIndicator(["End Step"])
N_SetCarLoadEmptyIndicator_Node0{"The system sets loadempty indicator"}:::decision
N_SetCarLoadEmptyIndicator_Node0_action["If next equipment is container, set
indicator to L , otherwise use the
equipment s loadempty code"]:::main N_SetCarLoadEmptyIndicator_Node0 -- Yes --> N_SetCarLoadEmptyIndicator_Node0_action N_SetCarLoadEmptyIndicator_Node0_action --> E_SetCarLoadEmptyIndicator S_SetCarLoadEmptyIndicator --> N_SetCarLoadEmptyIndicator_Node0 N_SetCarLoadEmptyIndicator_Node1{"The system determines the loadempty
indicator"}:::decision N_SetCarLoadEmptyIndicator_Node1_action["If the car position exceeds the
total equipment quantity, use the
car s loadempty code otherwise, if
the next car is a container, set
indicator to L , else use the
current car s loadempty code"]:::main N_SetCarLoadEmptyIndicator_Node1 -- Yes --> N_SetCarLoadEmptyIndicator_Node1_action N_SetCarLoadEmptyIndicator_Node1_action --> E_SetCarLoadEmptyIndicator N_SetCarLoadEmptyIndicator_Node0 -- No --> N_SetCarLoadEmptyIndicator_Node1 N_SetCarLoadEmptyIndicator_Node1 -- No --> E_SetCarLoadEmptyIndicator
indicator to L , otherwise use the
equipment s loadempty code"]:::main N_SetCarLoadEmptyIndicator_Node0 -- Yes --> N_SetCarLoadEmptyIndicator_Node0_action N_SetCarLoadEmptyIndicator_Node0_action --> E_SetCarLoadEmptyIndicator S_SetCarLoadEmptyIndicator --> N_SetCarLoadEmptyIndicator_Node0 N_SetCarLoadEmptyIndicator_Node1{"The system determines the loadempty
indicator"}:::decision N_SetCarLoadEmptyIndicator_Node1_action["If the car position exceeds the
total equipment quantity, use the
car s loadempty code otherwise, if
the next car is a container, set
indicator to L , else use the
current car s loadempty code"]:::main N_SetCarLoadEmptyIndicator_Node1 -- Yes --> N_SetCarLoadEmptyIndicator_Node1_action N_SetCarLoadEmptyIndicator_Node1_action --> E_SetCarLoadEmptyIndicator N_SetCarLoadEmptyIndicator_Node0 -- No --> N_SetCarLoadEmptyIndicator_Node1 N_SetCarLoadEmptyIndicator_Node1 -- No --> E_SetCarLoadEmptyIndicator
File: GCX015E.cbl
GIVEN:
Car identification has been loaded
WHEN:
The system sets load/empty indicator
THEN:
If next equipment is container, set indicator to 'L', otherwise use the equipment's load/empty code
File: GCX015E.cbl
GIVEN:
A car is being processed for customs transaction
WHEN:
The system determines the load/empty indicator
THEN:
If the car position exceeds the total equipment quantity, use the car's load/empty code; otherwise, if the next car is a container, set indicator to 'L', else use the current car's load/empty code
β Consolidated Acceptance Criteria
- The system determines car kind → if equipment type is 'LO' set kind to 'L', if 'ET' set to 'E', otherwise leave 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_SetCarKindBasedonEquipmentType(["Start Step"])
E_SetCarKindBasedonEquipmentType(["End Step"])
N_SetCarKindBasedonEquipmentType_Node0{"The system determines car kind"}:::decision
N_SetCarKindBasedonEquipmentType_Node0_action["If equipment type is LO set kind to
L , if ET set to E , otherwise leave
blank"]:::main N_SetCarKindBasedonEquipmentType_Node0 -- Yes --> N_SetCarKindBasedonEquipmentType_Node0_action N_SetCarKindBasedonEquipmentType_Node0_action --> E_SetCarKindBasedonEquipmentType S_SetCarKindBasedonEquipmentType --> N_SetCarKindBasedonEquipmentType_Node0 N_SetCarKindBasedonEquipmentType_Node0 -- No --> E_SetCarKindBasedonEquipmentType
L , if ET set to E , otherwise leave
blank"]:::main N_SetCarKindBasedonEquipmentType_Node0 -- Yes --> N_SetCarKindBasedonEquipmentType_Node0_action N_SetCarKindBasedonEquipmentType_Node0_action --> E_SetCarKindBasedonEquipmentType S_SetCarKindBasedonEquipmentType --> N_SetCarKindBasedonEquipmentType_Node0 N_SetCarKindBasedonEquipmentType_Node0 -- No --> E_SetCarKindBasedonEquipmentType
File: GCX015E.cbl
GIVEN:
Car load/empty indicator has been set
WHEN:
The system determines car kind
THEN:
If equipment type is 'LO' set kind to 'L', if 'ET' set to 'E', otherwise leave blank
β Consolidated Acceptance Criteria
- The system sends customs transaction → call CIMS program to transmit the customs transaction 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_SendCustomsTransactionviaCIMS(["Start Step"])
E_SendCustomsTransactionviaCIMS(["End Step"])
N_SendCustomsTransactionviaCIMS_Node0{"The system sends customs
transaction"}:::decision N_SendCustomsTransactionviaCIMS_Node0_action["Call CIMS program to transmit the
customs transaction data"]:::main N_SendCustomsTransactionviaCIMS_Node0 -- Yes --> N_SendCustomsTransactionviaCIMS_Node0_action N_SendCustomsTransactionviaCIMS_Node0_action --> E_SendCustomsTransactionviaCIMS S_SendCustomsTransactionviaCIMS --> N_SendCustomsTransactionviaCIMS_Node0 N_SendCustomsTransactionviaCIMS_Node0 -- No --> E_SendCustomsTransactionviaCIMS
transaction"}:::decision N_SendCustomsTransactionviaCIMS_Node0_action["Call CIMS program to transmit the
customs transaction data"]:::main N_SendCustomsTransactionviaCIMS_Node0 -- Yes --> N_SendCustomsTransactionviaCIMS_Node0_action N_SendCustomsTransactionviaCIMS_Node0_action --> E_SendCustomsTransactionviaCIMS S_SendCustomsTransactionviaCIMS --> N_SendCustomsTransactionviaCIMS_Node0 N_SendCustomsTransactionviaCIMS_Node0 -- No --> E_SendCustomsTransactionviaCIMS
File: GCX015E.cbl
GIVEN:
All car information has been loaded and formatted
WHEN:
The system sends customs transaction
THEN:
Call CIMS program to transmit the customs transaction data
β Consolidated Acceptance Criteria
- The system logs the transaction → call WRITMSGL program with message code 'S' to record the customs 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_SendTransactionMessageviaWRITMSGL(["Start Step"])
E_SendTransactionMessageviaWRITMSGL(["End Step"])
N_SendTransactionMessageviaWRITMSGL_Node0{"The system logs the transaction"}:::decision
N_SendTransactionMessageviaWRITMSGL_Node0_action["Call WRITMSGL program with message
code S to record the customs
transaction"]:::main N_SendTransactionMessageviaWRITMSGL_Node0 -- Yes --> N_SendTransactionMessageviaWRITMSGL_Node0_action N_SendTransactionMessageviaWRITMSGL_Node0_action --> E_SendTransactionMessageviaWRITMSGL S_SendTransactionMessageviaWRITMSGL --> N_SendTransactionMessageviaWRITMSGL_Node0 N_SendTransactionMessageviaWRITMSGL_Node0 -- No --> E_SendTransactionMessageviaWRITMSGL
code S to record the customs
transaction"]:::main N_SendTransactionMessageviaWRITMSGL_Node0 -- Yes --> N_SendTransactionMessageviaWRITMSGL_Node0_action N_SendTransactionMessageviaWRITMSGL_Node0_action --> E_SendTransactionMessageviaWRITMSGL S_SendTransactionMessageviaWRITMSGL --> N_SendTransactionMessageviaWRITMSGL_Node0 N_SendTransactionMessageviaWRITMSGL_Node0 -- No --> E_SendTransactionMessageviaWRITMSGL
File: GCX015E.cbl
GIVEN:
Customs transaction has been sent via CIMS
WHEN:
The system logs the transaction
THEN:
Call WRITMSGL program with message code 'S' to record the customs transaction
β Consolidated Acceptance Criteria
- The system performs cleanup → call CIMS program with PURG function to purge transaction resources
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PurgeTransactionviaCIMS(["Start Step"])
E_PurgeTransactionviaCIMS(["End Step"])
N_PurgeTransactionviaCIMS_Node0{"The system performs cleanup"}:::decision
N_PurgeTransactionviaCIMS_Node0_action["Call CIMS program with PURG
function to purge transaction
resources"]:::main N_PurgeTransactionviaCIMS_Node0 -- Yes --> N_PurgeTransactionviaCIMS_Node0_action N_PurgeTransactionviaCIMS_Node0_action --> E_PurgeTransactionviaCIMS S_PurgeTransactionviaCIMS --> N_PurgeTransactionviaCIMS_Node0 N_PurgeTransactionviaCIMS_Node0 -- No --> E_PurgeTransactionviaCIMS
function to purge transaction
resources"]:::main N_PurgeTransactionviaCIMS_Node0 -- Yes --> N_PurgeTransactionviaCIMS_Node0_action N_PurgeTransactionviaCIMS_Node0_action --> E_PurgeTransactionviaCIMS S_PurgeTransactionviaCIMS --> N_PurgeTransactionviaCIMS_Node0 N_PurgeTransactionviaCIMS_Node0 -- No --> E_PurgeTransactionviaCIMS
File: GCX015E.cbl
GIVEN:
Transaction message has been logged
WHEN:
The system performs cleanup
THEN:
Call CIMS program with PURG function to purge transaction resources
β Consolidated Acceptance Criteria
- The system completes AEI processing → send AEI status message 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_SendAEIStatusMessage(["Start Step"])
E_SendAEIStatusMessage(["End Step"])
N_SendAEIStatusMessage_Node0{"The system completes AEI processing"}:::decision
N_SendAEIStatusMessage_Node0_action["Send AEI status message
notification"]:::main N_SendAEIStatusMessage_Node0 -- Yes --> N_SendAEIStatusMessage_Node0_action N_SendAEIStatusMessage_Node0_action --> E_SendAEIStatusMessage S_SendAEIStatusMessage --> N_SendAEIStatusMessage_Node0 N_SendAEIStatusMessage_Node0 -- No --> E_SendAEIStatusMessage
notification"]:::main N_SendAEIStatusMessage_Node0 -- Yes --> N_SendAEIStatusMessage_Node0_action N_SendAEIStatusMessage_Node0_action --> E_SendAEIStatusMessage S_SendAEIStatusMessage --> N_SendAEIStatusMessage_Node0 N_SendAEIStatusMessage_Node0 -- No --> E_SendAEIStatusMessage
File: GCX015E.cbl
GIVEN:
AEI processing has been attempted or AEI send flag is set
WHEN:
The system completes AEI processing
THEN:
Send AEI status message notification
β Consolidated Acceptance Criteria
- The system checks the AEI send flag → aEI processing should only continue if the AEI send flag is true, otherwise skip AEI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AEISendFlagTrue(["Start Step"])
E_AEISendFlagTrue(["End Step"])
N_AEISendFlagTrue_Node0{"The system checks the AEI send flag"}:::decision
N_AEISendFlagTrue_Node0_action["AEI processing should only continue
if the AEI send flag is true,
otherwise skip AEI processing"]:::main N_AEISendFlagTrue_Node0 -- Yes --> N_AEISendFlagTrue_Node0_action N_AEISendFlagTrue_Node0_action --> E_AEISendFlagTrue S_AEISendFlagTrue --> N_AEISendFlagTrue_Node0 N_AEISendFlagTrue_Node0 -- No --> E_AEISendFlagTrue
if the AEI send flag is true,
otherwise skip AEI processing"]:::main N_AEISendFlagTrue_Node0 -- Yes --> N_AEISendFlagTrue_Node0_action N_AEISendFlagTrue_Node0_action --> E_AEISendFlagTrue S_AEISendFlagTrue --> N_AEISendFlagTrue_Node0 N_AEISendFlagTrue_Node0 -- No --> E_AEISendFlagTrue
File: GCX015E.cbl
GIVEN:
A train record with ACK status is being validated for AEI processing
WHEN:
The system checks the AEI send flag
THEN:
AEI processing should only continue if the AEI send flag is true, otherwise skip AEI processing
β Consolidated Acceptance Criteria
- The system checks the enroute reporting status → aEI processing should only continue if enroute status is not reported, otherwise skip AEI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EnrouteNotReported(["Start Step"])
E_EnrouteNotReported(["End Step"])
N_EnrouteNotReported_Node0{"The system checks the enroute
reporting status"}:::decision N_EnrouteNotReported_Node0_action["AEI processing should only continue
if enroute status is not reported,
otherwise skip AEI processing"]:::main N_EnrouteNotReported_Node0 -- Yes --> N_EnrouteNotReported_Node0_action N_EnrouteNotReported_Node0_action --> E_EnrouteNotReported S_EnrouteNotReported --> N_EnrouteNotReported_Node0 N_EnrouteNotReported_Node0 -- No --> E_EnrouteNotReported
reporting status"}:::decision N_EnrouteNotReported_Node0_action["AEI processing should only continue
if enroute status is not reported,
otherwise skip AEI processing"]:::main N_EnrouteNotReported_Node0 -- Yes --> N_EnrouteNotReported_Node0_action N_EnrouteNotReported_Node0_action --> E_EnrouteNotReported S_EnrouteNotReported --> N_EnrouteNotReported_Node0 N_EnrouteNotReported_Node0 -- No --> E_EnrouteNotReported
File: GCX015E.cbl
GIVEN:
A train record with ACK status and AEI send flag enabled is being validated
WHEN:
The system checks the enroute reporting status
THEN:
AEI processing should only continue if enroute status is not reported, otherwise skip AEI processing
β Consolidated Acceptance Criteria
- The system checks the train ID format at position 23 → aEI processing should only continue if position 23 of the train ID contains 'T', otherwise skip AEI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainIDFormatValidPosition23T(["Start Step"])
E_TrainIDFormatValidPosition23T(["End Step"])
N_TrainIDFormatValidPosition23T_Node0{"The system checks the train ID
format at position 23"}:::decision N_TrainIDFormatValidPosition23T_Node0_action["AEI processing should only continue
if position 23 of the train ID
contains T , otherwise skip AEI
processing"]:::main N_TrainIDFormatValidPosition23T_Node0 -- Yes --> N_TrainIDFormatValidPosition23T_Node0_action N_TrainIDFormatValidPosition23T_Node0_action --> E_TrainIDFormatValidPosition23T S_TrainIDFormatValidPosition23T --> N_TrainIDFormatValidPosition23T_Node0 N_TrainIDFormatValidPosition23T_Node0 -- No --> E_TrainIDFormatValidPosition23T
format at position 23"}:::decision N_TrainIDFormatValidPosition23T_Node0_action["AEI processing should only continue
if position 23 of the train ID
contains T , otherwise skip AEI
processing"]:::main N_TrainIDFormatValidPosition23T_Node0 -- Yes --> N_TrainIDFormatValidPosition23T_Node0_action N_TrainIDFormatValidPosition23T_Node0_action --> E_TrainIDFormatValidPosition23T S_TrainIDFormatValidPosition23T --> N_TrainIDFormatValidPosition23T_Node0 N_TrainIDFormatValidPosition23T_Node0 -- No --> E_TrainIDFormatValidPosition23T
File: GCX015E.cbl
GIVEN:
A train record that has passed ACK status, AEI send flag, and enroute status validations
WHEN:
The system checks the train ID format at position 23
THEN:
AEI processing should only continue if position 23 of the train ID contains 'T', otherwise skip AEI processing
β Consolidated Acceptance Criteria
- All conditions are met: train status is ACK AND AEI send flag is true AND enroute is not reported AND train ID position 23 equals 'T' → the system should set AEI processing conditions as met and proceed with customs transaction 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_SetAEIProcessingConditionsMet(["Start Step"])
E_SetAEIProcessingConditionsMet(["End Step"])
N_SetAEIProcessingConditionsMet_Node0{"All conditions are met: train
status is ACK AND AEI send flag is
true AND enroute is not reported AND
train ID position 23 equals T"}:::decision N_SetAEIProcessingConditionsMet_Node0_action["The system should set AEI
processing conditions as met and
proceed with customs transaction
generation"]:::main N_SetAEIProcessingConditionsMet_Node0 -- Yes --> N_SetAEIProcessingConditionsMet_Node0_action N_SetAEIProcessingConditionsMet_Node0_action --> E_SetAEIProcessingConditionsMet S_SetAEIProcessingConditionsMet --> N_SetAEIProcessingConditionsMet_Node0 N_SetAEIProcessingConditionsMet_Node0 -- No --> E_SetAEIProcessingConditionsMet
status is ACK AND AEI send flag is
true AND enroute is not reported AND
train ID position 23 equals T"}:::decision N_SetAEIProcessingConditionsMet_Node0_action["The system should set AEI
processing conditions as met and
proceed with customs transaction
generation"]:::main N_SetAEIProcessingConditionsMet_Node0 -- Yes --> N_SetAEIProcessingConditionsMet_Node0_action N_SetAEIProcessingConditionsMet_Node0_action --> E_SetAEIProcessingConditionsMet S_SetAEIProcessingConditionsMet --> N_SetAEIProcessingConditionsMet_Node0 N_SetAEIProcessingConditionsMet_Node0 -- No --> E_SetAEIProcessingConditionsMet
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train record is being evaluated for AEI processing eligibility
WHEN:
- All conditions are met: train status is ack
- Aei send flag is true
- Enroute is not reported
- Train id position 23 equals 't'
THEN:
- The system should set aei processing conditions as met
- Proceed with customs transaction generation
β Consolidated Acceptance Criteria
- The equipment container indicator is 'C' → skip the equipment and do not include it in customs car information
- The equipment container indicator is 'C' → the equipment should be skipped and not included in the customs car output 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_IsEquipmentaContainer(["Start Step"])
E_IsEquipmentaContainer(["End Step"])
N_IsEquipmentaContainer_Node0{"The equipment container indicator
is C"}:::decision N_IsEquipmentaContainer_Node0_action["Skip the equipment and do not
include it in customs car
information"]:::main N_IsEquipmentaContainer_Node0 -- Yes --> N_IsEquipmentaContainer_Node0_action N_IsEquipmentaContainer_Node0_action --> E_IsEquipmentaContainer S_IsEquipmentaContainer --> N_IsEquipmentaContainer_Node0 N_IsEquipmentaContainer_Node1{"The equipment container indicator
is C"}:::decision N_IsEquipmentaContainer_Node1_action["The equipment should be skipped and
not included in the customs car
output table"]:::main N_IsEquipmentaContainer_Node1 -- Yes --> N_IsEquipmentaContainer_Node1_action N_IsEquipmentaContainer_Node1_action --> E_IsEquipmentaContainer N_IsEquipmentaContainer_Node0 -- No --> N_IsEquipmentaContainer_Node1 N_IsEquipmentaContainer_Node1 -- No --> E_IsEquipmentaContainer
is C"}:::decision N_IsEquipmentaContainer_Node0_action["Skip the equipment and do not
include it in customs car
information"]:::main N_IsEquipmentaContainer_Node0 -- Yes --> N_IsEquipmentaContainer_Node0_action N_IsEquipmentaContainer_Node0_action --> E_IsEquipmentaContainer S_IsEquipmentaContainer --> N_IsEquipmentaContainer_Node0 N_IsEquipmentaContainer_Node1{"The equipment container indicator
is C"}:::decision N_IsEquipmentaContainer_Node1_action["The equipment should be skipped and
not included in the customs car
output table"]:::main N_IsEquipmentaContainer_Node1 -- Yes --> N_IsEquipmentaContainer_Node1_action N_IsEquipmentaContainer_Node1_action --> E_IsEquipmentaContainer N_IsEquipmentaContainer_Node0 -- No --> N_IsEquipmentaContainer_Node1 N_IsEquipmentaContainer_Node1 -- No --> E_IsEquipmentaContainer
File: GCX015E.cbl
GIVEN:
Equipment information is being processed for customs reporting
WHEN:
The equipment container indicator is 'C'
THEN:
- Skip the equipment
- Do not include it in customs car information
File: GCX015E.cbl
GIVEN:
A train equipment item is being processed for customs car loading
WHEN:
The equipment container indicator is 'C'
THEN:
- The equipment should be skipped
- Not included in the customs car output table
β Consolidated Acceptance Criteria
- Equipment initial information is available → copy the equipment initial to the customs car initial 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_ExtractEquipmentInitial(["Start Step"])
E_ExtractEquipmentInitial(["End Step"])
N_ExtractEquipmentInitial_Node0{"Equipment initial information is
available"}:::decision N_ExtractEquipmentInitial_Node0_action["Copy the equipment initial to the
customs car initial field"]:::main N_ExtractEquipmentInitial_Node0 -- Yes --> N_ExtractEquipmentInitial_Node0_action N_ExtractEquipmentInitial_Node0_action --> E_ExtractEquipmentInitial S_ExtractEquipmentInitial --> N_ExtractEquipmentInitial_Node0 N_ExtractEquipmentInitial_Node0 -- No --> E_ExtractEquipmentInitial
available"}:::decision N_ExtractEquipmentInitial_Node0_action["Copy the equipment initial to the
customs car initial field"]:::main N_ExtractEquipmentInitial_Node0 -- Yes --> N_ExtractEquipmentInitial_Node0_action N_ExtractEquipmentInitial_Node0_action --> E_ExtractEquipmentInitial S_ExtractEquipmentInitial --> N_ExtractEquipmentInitial_Node0 N_ExtractEquipmentInitial_Node0 -- No --> E_ExtractEquipmentInitial
File: GCX015E.cbl
GIVEN:
Non-container equipment is being processed
WHEN:
Equipment initial information is available
THEN:
Copy the equipment initial to the customs car initial field
β Consolidated Acceptance Criteria
- Equipment number information is available → extract the equipment number 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_ExtractEquipmentNumber(["Start Step"])
E_ExtractEquipmentNumber(["End Step"])
N_ExtractEquipmentNumber_Node0{"Equipment number information is
available"}:::decision N_ExtractEquipmentNumber_Node0_action["Extract the equipment number for
further processing"]:::main N_ExtractEquipmentNumber_Node0 -- Yes --> N_ExtractEquipmentNumber_Node0_action N_ExtractEquipmentNumber_Node0_action --> E_ExtractEquipmentNumber S_ExtractEquipmentNumber --> N_ExtractEquipmentNumber_Node0 N_ExtractEquipmentNumber_Node0 -- No --> E_ExtractEquipmentNumber
available"}:::decision N_ExtractEquipmentNumber_Node0_action["Extract the equipment number for
further processing"]:::main N_ExtractEquipmentNumber_Node0 -- Yes --> N_ExtractEquipmentNumber_Node0_action N_ExtractEquipmentNumber_Node0_action --> E_ExtractEquipmentNumber S_ExtractEquipmentNumber --> N_ExtractEquipmentNumber_Node0 N_ExtractEquipmentNumber_Node0 -- No --> E_ExtractEquipmentNumber
File: GCX015E.cbl
GIVEN:
Non-container equipment is being processed
WHEN:
Equipment number information is available
THEN:
Extract the equipment number for further processing
β Consolidated Acceptance Criteria
- The equipment number needs to be formatted for customs → convert the equipment number to 6-digit car number 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_Convertto6DigitCarNumber(["Start Step"])
E_Convertto6DigitCarNumber(["End Step"])
N_Convertto6DigitCarNumber_Node0{"The equipment number needs to be
formatted for customs"}:::decision N_Convertto6DigitCarNumber_Node0_action["Convert the equipment number to
6-digit car number format"]:::main N_Convertto6DigitCarNumber_Node0 -- Yes --> N_Convertto6DigitCarNumber_Node0_action N_Convertto6DigitCarNumber_Node0_action --> E_Convertto6DigitCarNumber S_Convertto6DigitCarNumber --> N_Convertto6DigitCarNumber_Node0 N_Convertto6DigitCarNumber_Node0 -- No --> E_Convertto6DigitCarNumber
formatted for customs"}:::decision N_Convertto6DigitCarNumber_Node0_action["Convert the equipment number to
6-digit car number format"]:::main N_Convertto6DigitCarNumber_Node0 -- Yes --> N_Convertto6DigitCarNumber_Node0_action N_Convertto6DigitCarNumber_Node0_action --> E_Convertto6DigitCarNumber S_Convertto6DigitCarNumber --> N_Convertto6DigitCarNumber_Node0 N_Convertto6DigitCarNumber_Node0 -- No --> E_Convertto6DigitCarNumber
File: GCX015E.cbl
GIVEN:
Equipment number has been extracted
WHEN:
The equipment number needs to be formatted for customs
THEN:
Convert the equipment number to 6-digit car number format
β Consolidated Acceptance Criteria
- The next equipment's container indicator is 'C' → set the current equipment's load/empty indicator to 'L'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLoadEmptyIndicatortoL(["Start Step"])
E_SetLoadEmptyIndicatortoL(["End Step"])
N_SetLoadEmptyIndicatortoL_Node0{"The next equipment s container
indicator is C"}:::decision N_SetLoadEmptyIndicatortoL_Node0_action["Set the current equipment s
loadempty indicator to L"]:::main N_SetLoadEmptyIndicatortoL_Node0 -- Yes --> N_SetLoadEmptyIndicatortoL_Node0_action N_SetLoadEmptyIndicatortoL_Node0_action --> E_SetLoadEmptyIndicatortoL S_SetLoadEmptyIndicatortoL --> N_SetLoadEmptyIndicatortoL_Node0 N_SetLoadEmptyIndicatortoL_Node0 -- No --> E_SetLoadEmptyIndicatortoL
indicator is C"}:::decision N_SetLoadEmptyIndicatortoL_Node0_action["Set the current equipment s
loadempty indicator to L"]:::main N_SetLoadEmptyIndicatortoL_Node0 -- Yes --> N_SetLoadEmptyIndicatortoL_Node0_action N_SetLoadEmptyIndicatortoL_Node0_action --> E_SetLoadEmptyIndicatortoL S_SetLoadEmptyIndicatortoL --> N_SetLoadEmptyIndicatortoL_Node0 N_SetLoadEmptyIndicatortoL_Node0 -- No --> E_SetLoadEmptyIndicatortoL
File: GCX015E.cbl
GIVEN:
Current equipment is being processed and there is a next equipment in the sequence
WHEN:
The next equipment's container indicator is 'C'
THEN:
Set the current equipment's load/empty indicator to 'L'
β Consolidated Acceptance Criteria
- The next equipment is not a container or there is no next equipment → copy the load/empty indicator from the current 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_CopyLoadEmptyfromEquipment(["Start Step"])
E_CopyLoadEmptyfromEquipment(["End Step"])
N_CopyLoadEmptyfromEquipment_Node0{"The next equipment is not a
container or there is no next
equipment"}:::decision N_CopyLoadEmptyfromEquipment_Node0_action["Copy the loadempty indicator from
the current equipment data"]:::main N_CopyLoadEmptyfromEquipment_Node0 -- Yes --> N_CopyLoadEmptyfromEquipment_Node0_action N_CopyLoadEmptyfromEquipment_Node0_action --> E_CopyLoadEmptyfromEquipment S_CopyLoadEmptyfromEquipment --> N_CopyLoadEmptyfromEquipment_Node0 N_CopyLoadEmptyfromEquipment_Node0 -- No --> E_CopyLoadEmptyfromEquipment
container or there is no next
equipment"}:::decision N_CopyLoadEmptyfromEquipment_Node0_action["Copy the loadempty indicator from
the current equipment data"]:::main N_CopyLoadEmptyfromEquipment_Node0 -- Yes --> N_CopyLoadEmptyfromEquipment_Node0_action N_CopyLoadEmptyfromEquipment_Node0_action --> E_CopyLoadEmptyfromEquipment S_CopyLoadEmptyfromEquipment --> N_CopyLoadEmptyfromEquipment_Node0 N_CopyLoadEmptyfromEquipment_Node0 -- No --> E_CopyLoadEmptyfromEquipment
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Current equipment is being processed
WHEN:
The next equipment is not a container or there is no next equipment
THEN:
Copy the load/empty indicator from the current equipment data
β Consolidated Acceptance Criteria
- The equipment type is 'LO' → set the car kind to 'L' indicating locomotive
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarKindtoLLocomotive(["Start Step"])
E_SetCarKindtoLLocomotive(["End Step"])
N_SetCarKindtoLLocomotive_Node0{"The equipment type is LO"}:::decision
N_SetCarKindtoLLocomotive_Node0_action["Set the car kind to L indicating
locomotive"]:::main N_SetCarKindtoLLocomotive_Node0 -- Yes --> N_SetCarKindtoLLocomotive_Node0_action N_SetCarKindtoLLocomotive_Node0_action --> E_SetCarKindtoLLocomotive S_SetCarKindtoLLocomotive --> N_SetCarKindtoLLocomotive_Node0 N_SetCarKindtoLLocomotive_Node0 -- No --> E_SetCarKindtoLLocomotive
locomotive"]:::main N_SetCarKindtoLLocomotive_Node0 -- Yes --> N_SetCarKindtoLLocomotive_Node0_action N_SetCarKindtoLLocomotive_Node0_action --> E_SetCarKindtoLLocomotive S_SetCarKindtoLLocomotive --> N_SetCarKindtoLLocomotive_Node0 N_SetCarKindtoLLocomotive_Node0 -- No --> E_SetCarKindtoLLocomotive
File: GCX015E.cbl
GIVEN:
Equipment type information is available
WHEN:
The equipment type is 'LO'
THEN:
Set the car kind to 'L' indicating locomotive
β Consolidated Acceptance Criteria
- The equipment type is 'ET' → set the car kind to 'E' indicating engine
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarKindtoEEngine(["Start Step"])
E_SetCarKindtoEEngine(["End Step"])
N_SetCarKindtoEEngine_Node0{"The equipment type is ET"}:::decision
N_SetCarKindtoEEngine_Node0_action["Set the car kind to E indicating
engine"]:::main N_SetCarKindtoEEngine_Node0 -- Yes --> N_SetCarKindtoEEngine_Node0_action N_SetCarKindtoEEngine_Node0_action --> E_SetCarKindtoEEngine S_SetCarKindtoEEngine --> N_SetCarKindtoEEngine_Node0 N_SetCarKindtoEEngine_Node0 -- No --> E_SetCarKindtoEEngine
engine"]:::main N_SetCarKindtoEEngine_Node0 -- Yes --> N_SetCarKindtoEEngine_Node0_action N_SetCarKindtoEEngine_Node0_action --> E_SetCarKindtoEEngine S_SetCarKindtoEEngine --> N_SetCarKindtoEEngine_Node0 N_SetCarKindtoEEngine_Node0 -- No --> E_SetCarKindtoEEngine
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type information is available and it is not 'LO'
WHEN:
The equipment type is 'ET'
THEN:
Set the car kind to 'E' indicating engine
β Consolidated Acceptance Criteria
- The equipment type is neither 'LO' nor 'ET' → set the car kind to spaces indicating standard railcar
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarKindtoSpaces(["Start Step"])
E_SetCarKindtoSpaces(["End Step"])
N_SetCarKindtoSpaces_Node0{"The equipment type is neither LO
nor ET"}:::decision N_SetCarKindtoSpaces_Node0_action["Set the car kind to spaces
indicating standard railcar"]:::main N_SetCarKindtoSpaces_Node0 -- Yes --> N_SetCarKindtoSpaces_Node0_action N_SetCarKindtoSpaces_Node0_action --> E_SetCarKindtoSpaces S_SetCarKindtoSpaces --> N_SetCarKindtoSpaces_Node0 N_SetCarKindtoSpaces_Node0 -- No --> E_SetCarKindtoSpaces
nor ET"}:::decision N_SetCarKindtoSpaces_Node0_action["Set the car kind to spaces
indicating standard railcar"]:::main N_SetCarKindtoSpaces_Node0 -- Yes --> N_SetCarKindtoSpaces_Node0_action N_SetCarKindtoSpaces_Node0_action --> E_SetCarKindtoSpaces S_SetCarKindtoSpaces --> N_SetCarKindtoSpaces_Node0 N_SetCarKindtoSpaces_Node0 -- No --> E_SetCarKindtoSpaces
File: GCX015E.cbl
GIVEN:
Equipment type information is available
WHEN:
The equipment type is neither 'LO' nor 'ET'
THEN:
Set the car kind to spaces indicating standard railcar
β Consolidated Acceptance Criteria
- All car details are ready for customs reporting → store the car initial, number, load/empty indicator, and car kind in the customs 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_StoreCarInformationinCustomsTable(["Start Step"])
E_StoreCarInformationinCustomsTable(["End Step"])
N_StoreCarInformationinCustomsTable_Node0{"All car details are ready for
customs reporting"}:::decision N_StoreCarInformationinCustomsTable_Node0_action["Store the car initial, number,
loadempty indicator, and car kind in
the customs table"]:::main N_StoreCarInformationinCustomsTable_Node0 -- Yes --> N_StoreCarInformationinCustomsTable_Node0_action N_StoreCarInformationinCustomsTable_Node0_action --> E_StoreCarInformationinCustomsTable S_StoreCarInformationinCustomsTable --> N_StoreCarInformationinCustomsTable_Node0 N_StoreCarInformationinCustomsTable_Node0 -- No --> E_StoreCarInformationinCustomsTable
customs reporting"}:::decision N_StoreCarInformationinCustomsTable_Node0_action["Store the car initial, number,
loadempty indicator, and car kind in
the customs table"]:::main N_StoreCarInformationinCustomsTable_Node0 -- Yes --> N_StoreCarInformationinCustomsTable_Node0_action N_StoreCarInformationinCustomsTable_Node0_action --> E_StoreCarInformationinCustomsTable S_StoreCarInformationinCustomsTable --> N_StoreCarInformationinCustomsTable_Node0 N_StoreCarInformationinCustomsTable_Node0 -- No --> E_StoreCarInformationinCustomsTable
File: GCX015E.cbl
GIVEN:
Car information has been processed and classified
WHEN:
All car details are ready for customs reporting
THEN:
Store the car initial, number, load/empty indicator, and car kind in the customs table
β Consolidated Acceptance Criteria
- Processing the equipment for customs car loading → the equipment initial should be moved to customs car initial and the equipment number should be moved to car number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarInitialfromTrainEquipment(["Start Step"])
E_ExtractCarInitialfromTrainEquipment(["End Step"])
N_ExtractCarInitialfromTrainEquipment_Node0{"Processing the equipment for
customs car loading"}:::decision N_ExtractCarInitialfromTrainEquipment_Node0_action["The equipment initial should be
moved to customs car initial and the
equipment number should be moved to
car number field"]:::main N_ExtractCarInitialfromTrainEquipment_Node0 -- Yes --> N_ExtractCarInitialfromTrainEquipment_Node0_action N_ExtractCarInitialfromTrainEquipment_Node0_action --> E_ExtractCarInitialfromTrainEquipment S_ExtractCarInitialfromTrainEquipment --> N_ExtractCarInitialfromTrainEquipment_Node0 N_ExtractCarInitialfromTrainEquipment_Node0 -- No --> E_ExtractCarInitialfromTrainEquipment
customs car loading"}:::decision N_ExtractCarInitialfromTrainEquipment_Node0_action["The equipment initial should be
moved to customs car initial and the
equipment number should be moved to
car number field"]:::main N_ExtractCarInitialfromTrainEquipment_Node0 -- Yes --> N_ExtractCarInitialfromTrainEquipment_Node0_action N_ExtractCarInitialfromTrainEquipment_Node0_action --> E_ExtractCarInitialfromTrainEquipment S_ExtractCarInitialfromTrainEquipment --> N_ExtractCarInitialfromTrainEquipment_Node0 N_ExtractCarInitialfromTrainEquipment_Node0 -- No --> E_ExtractCarInitialfromTrainEquipment
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train equipment item is not a container
WHEN:
Processing the equipment for customs car loading
THEN:
- The equipment initial should be moved to customs car initial
- The equipment number should be moved to car number field
β Consolidated Acceptance Criteria
- Preparing the car information for customs output → the car number should be formatted as a 6-digit number in the customs car number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarNumberto6Digits(["Start Step"])
E_FormatCarNumberto6Digits(["End Step"])
N_FormatCarNumberto6Digits_Node0{"Preparing the car information for
customs output"}:::decision N_FormatCarNumberto6Digits_Node0_action["The car number should be formatted
as a 6-digit number in the customs
car number field"]:::main N_FormatCarNumberto6Digits_Node0 -- Yes --> N_FormatCarNumberto6Digits_Node0_action N_FormatCarNumberto6Digits_Node0_action --> E_FormatCarNumberto6Digits S_FormatCarNumberto6Digits --> N_FormatCarNumberto6Digits_Node0 N_FormatCarNumberto6Digits_Node0 -- No --> E_FormatCarNumberto6Digits
customs output"}:::decision N_FormatCarNumberto6Digits_Node0_action["The car number should be formatted
as a 6-digit number in the customs
car number field"]:::main N_FormatCarNumberto6Digits_Node0 -- Yes --> N_FormatCarNumberto6Digits_Node0_action N_FormatCarNumberto6Digits_Node0_action --> E_FormatCarNumberto6Digits S_FormatCarNumberto6Digits --> N_FormatCarNumberto6Digits_Node0 N_FormatCarNumberto6Digits_Node0 -- No --> E_FormatCarNumberto6Digits
File: GCX015E.cbl
GIVEN:
A car number has been extracted from equipment data
WHEN:
Preparing the car information for customs output
THEN:
The car number should be formatted as a 6-digit number in the customs car number field
β Consolidated Acceptance Criteria
- The next equipment item is a container (indicator 'C') → the current car's load/empty indicator should be set to 'L', otherwise use the car's own load/empty 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_IsNextEquipmentContainer(["Start Step"])
E_IsNextEquipmentContainer(["End Step"])
N_IsNextEquipmentContainer_Node0{"The next equipment item is a
container indicator C"}:::decision N_IsNextEquipmentContainer_Node0_action["The current car s loadempty
indicator should be set to L ,
otherwise use the car s own
loadempty indicator"]:::main N_IsNextEquipmentContainer_Node0 -- Yes --> N_IsNextEquipmentContainer_Node0_action N_IsNextEquipmentContainer_Node0_action --> E_IsNextEquipmentContainer S_IsNextEquipmentContainer --> N_IsNextEquipmentContainer_Node0 N_IsNextEquipmentContainer_Node0 -- No --> E_IsNextEquipmentContainer
container indicator C"}:::decision N_IsNextEquipmentContainer_Node0_action["The current car s loadempty
indicator should be set to L ,
otherwise use the car s own
loadempty indicator"]:::main N_IsNextEquipmentContainer_Node0 -- Yes --> N_IsNextEquipmentContainer_Node0_action N_IsNextEquipmentContainer_Node0_action --> E_IsNextEquipmentContainer S_IsNextEquipmentContainer --> N_IsNextEquipmentContainer_Node0 N_IsNextEquipmentContainer_Node0 -- No --> E_IsNextEquipmentContainer
File: GCX015E.cbl
GIVEN:
A car is being processed and there is a next equipment item in the sequence
WHEN:
The next equipment item is a container (indicator 'C')
THEN:
The current car's load/empty indicator should be set to 'L', otherwise use the car's own load/empty indicator
β Consolidated Acceptance Criteria
- The equipment type is 'LO' → the car kind should be set to 'L' for locomotive
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeLO(["Start Step"])
E_EquipmentTypeLO(["End Step"])
N_EquipmentTypeLO_Node0{"The equipment type is LO"}:::decision
N_EquipmentTypeLO_Node0_action["The car kind should be set to L for
locomotive"]:::main N_EquipmentTypeLO_Node0 -- Yes --> N_EquipmentTypeLO_Node0_action N_EquipmentTypeLO_Node0_action --> E_EquipmentTypeLO S_EquipmentTypeLO --> N_EquipmentTypeLO_Node0 N_EquipmentTypeLO_Node0 -- No --> E_EquipmentTypeLO
locomotive"]:::main N_EquipmentTypeLO_Node0 -- Yes --> N_EquipmentTypeLO_Node0_action N_EquipmentTypeLO_Node0_action --> E_EquipmentTypeLO S_EquipmentTypeLO --> N_EquipmentTypeLO_Node0 N_EquipmentTypeLO_Node0 -- No --> E_EquipmentTypeLO
File: GCX015E.cbl
GIVEN:
An equipment item has been identified as non-container
WHEN:
The equipment type is 'LO'
THEN:
The car kind should be set to 'L' for locomotive
β Consolidated Acceptance Criteria
- The equipment type is 'ET' → the car kind should be set to 'E' for end of train device
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeET(["Start Step"])
E_EquipmentTypeET(["End Step"])
N_EquipmentTypeET_Node0{"The equipment type is ET"}:::decision
N_EquipmentTypeET_Node0_action["The car kind should be set to E for
end of train device"]:::main N_EquipmentTypeET_Node0 -- Yes --> N_EquipmentTypeET_Node0_action N_EquipmentTypeET_Node0_action --> E_EquipmentTypeET S_EquipmentTypeET --> N_EquipmentTypeET_Node0 N_EquipmentTypeET_Node0 -- No --> E_EquipmentTypeET
end of train device"]:::main N_EquipmentTypeET_Node0 -- Yes --> N_EquipmentTypeET_Node0_action N_EquipmentTypeET_Node0_action --> E_EquipmentTypeET S_EquipmentTypeET --> N_EquipmentTypeET_Node0 N_EquipmentTypeET_Node0 -- No --> E_EquipmentTypeET
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item is not a locomotive (type not 'LO')
WHEN:
The equipment type is 'ET'
THEN:
The car kind should be set to 'E' for end of train device
β Consolidated Acceptance Criteria
- The equipment type is neither 'LO' nor 'ET' → the car kind should be set to spaces (no 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_SetCarKindasSpaces(["Start Step"])
E_SetCarKindasSpaces(["End Step"])
N_SetCarKindasSpaces_Node0{"The equipment type is neither LO
nor ET"}:::decision N_SetCarKindasSpaces_Node0_action["The car kind should be set to
spaces no classification"]:::main N_SetCarKindasSpaces_Node0 -- Yes --> N_SetCarKindasSpaces_Node0_action N_SetCarKindasSpaces_Node0_action --> E_SetCarKindasSpaces S_SetCarKindasSpaces --> N_SetCarKindasSpaces_Node0 N_SetCarKindasSpaces_Node0 -- No --> E_SetCarKindasSpaces
nor ET"}:::decision N_SetCarKindasSpaces_Node0_action["The car kind should be set to
spaces no classification"]:::main N_SetCarKindasSpaces_Node0 -- Yes --> N_SetCarKindasSpaces_Node0_action N_SetCarKindasSpaces_Node0_action --> E_SetCarKindasSpaces S_SetCarKindasSpaces --> N_SetCarKindasSpaces_Node0 N_SetCarKindasSpaces_Node0 -- No --> E_SetCarKindasSpaces
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item is not a locomotive and not an end of train device
WHEN:
The equipment type is neither 'LO' nor 'ET'
THEN:
The car kind should be set to spaces (no classification)
β Consolidated Acceptance Criteria
- All car information is ready for customs reporting → the car counter should be incremented by 1 and the equipment sequence counter should be incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCartoCustomsOutputTable(["Start Step"])
E_AddCartoCustomsOutputTable(["End Step"])
N_AddCartoCustomsOutputTable_Node0{"All car information is ready for
customs reporting"}:::decision N_AddCartoCustomsOutputTable_Node0_action["The car counter should be
incremented by 1 and the equipment
sequence counter should be
incremented by 1"]:::main N_AddCartoCustomsOutputTable_Node0 -- Yes --> N_AddCartoCustomsOutputTable_Node0_action N_AddCartoCustomsOutputTable_Node0_action --> E_AddCartoCustomsOutputTable S_AddCartoCustomsOutputTable --> N_AddCartoCustomsOutputTable_Node0 N_AddCartoCustomsOutputTable_Node0 -- No --> E_AddCartoCustomsOutputTable
customs reporting"}:::decision N_AddCartoCustomsOutputTable_Node0_action["The car counter should be
incremented by 1 and the equipment
sequence counter should be
incremented by 1"]:::main N_AddCartoCustomsOutputTable_Node0 -- Yes --> N_AddCartoCustomsOutputTable_Node0_action N_AddCartoCustomsOutputTable_Node0_action --> E_AddCartoCustomsOutputTable S_AddCartoCustomsOutputTable --> N_AddCartoCustomsOutputTable_Node0 N_AddCartoCustomsOutputTable_Node0 -- No --> E_AddCartoCustomsOutputTable
File: GCX015E.cbl
GIVEN:
A car's details have been fully processed including initial, number, load/empty indicator, and car kind
WHEN:
All car information is ready for customs reporting
THEN:
- The car counter should be incremented by 1
- The equipment sequence counter should be incremented by 1
β Consolidated Acceptance Criteria
- The current equipment counter is less than or equal to the total equipment quantity and the car counter is less than or equal to 500 → processing should continue to the next equipment item, otherwise car loading should end
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmenttoProcess(["Start Step"])
E_MoreEquipmenttoProcess(["End Step"])
N_MoreEquipmenttoProcess_Node0{"The current equipment counter is
less than or equal to the total
equipment quantity and the car
counter is less than or equal to 500"}:::decision N_MoreEquipmenttoProcess_Node0_action["Processing should continue to the
next equipment item, otherwise car
loading should end"]:::main N_MoreEquipmenttoProcess_Node0 -- Yes --> N_MoreEquipmenttoProcess_Node0_action N_MoreEquipmenttoProcess_Node0_action --> E_MoreEquipmenttoProcess S_MoreEquipmenttoProcess --> N_MoreEquipmenttoProcess_Node0 N_MoreEquipmenttoProcess_Node0 -- No --> E_MoreEquipmenttoProcess
less than or equal to the total
equipment quantity and the car
counter is less than or equal to 500"}:::decision N_MoreEquipmenttoProcess_Node0_action["Processing should continue to the
next equipment item, otherwise car
loading should end"]:::main N_MoreEquipmenttoProcess_Node0 -- Yes --> N_MoreEquipmenttoProcess_Node0_action N_MoreEquipmenttoProcess_Node0_action --> E_MoreEquipmenttoProcess S_MoreEquipmenttoProcess --> N_MoreEquipmenttoProcess_Node0 N_MoreEquipmenttoProcess_Node0 -- No --> E_MoreEquipmenttoProcess
File: GCX015E.cbl
GIVEN:
Car loading is in progress for a train
WHEN:
- The current equipment counter is less than or equal to the total equipment quantity
- The car counter is less than or equal to 500
THEN:
Processing should continue to the next equipment item, otherwise car loading should end
β Consolidated Acceptance Criteria
- The system needs to send AEI status messages → the system queries CUSEMAIL database using train port as key to retrieve email 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_GetAEIMerlinIDfromDatabase(["Start Step"])
E_GetAEIMerlinIDfromDatabase(["End Step"])
N_GetAEIMerlinIDfromDatabase_Node0{"The system needs to send AEI status
messages"}:::decision N_GetAEIMerlinIDfromDatabase_Node0_action["The system queries CUSEMAIL
database using train port as key to
retrieve email contacts"]:::main N_GetAEIMerlinIDfromDatabase_Node0 -- Yes --> N_GetAEIMerlinIDfromDatabase_Node0_action N_GetAEIMerlinIDfromDatabase_Node0_action --> E_GetAEIMerlinIDfromDatabase S_GetAEIMerlinIDfromDatabase --> N_GetAEIMerlinIDfromDatabase_Node0 N_GetAEIMerlinIDfromDatabase_Node0 -- No --> E_GetAEIMerlinIDfromDatabase
messages"}:::decision N_GetAEIMerlinIDfromDatabase_Node0_action["The system queries CUSEMAIL
database using train port as key to
retrieve email contacts"]:::main N_GetAEIMerlinIDfromDatabase_Node0 -- Yes --> N_GetAEIMerlinIDfromDatabase_Node0_action N_GetAEIMerlinIDfromDatabase_Node0_action --> E_GetAEIMerlinIDfromDatabase S_GetAEIMerlinIDfromDatabase --> N_GetAEIMerlinIDfromDatabase_Node0 N_GetAEIMerlinIDfromDatabase_Node0 -- No --> E_GetAEIMerlinIDfromDatabase
File: GCX015E.cbl
GIVEN:
A train with security exchange data containing port information
WHEN:
The system needs to send AEI status messages
THEN:
The system queries CUSEMAIL database using train port as key to retrieve email contacts
β Consolidated Acceptance Criteria
- The system attempts to retrieve email contacts from database → the system uses default Merlin ID for email 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_AEIContactFound(["Start Step"])
E_AEIContactFound(["End Step"])
N_AEIContactFound_Node0{"The system attempts to retrieve
email contacts from database"}:::decision N_AEIContactFound_Node0_action["The system uses default Merlin ID
for email recipient"]:::main N_AEIContactFound_Node0 -- Yes --> N_AEIContactFound_Node0_action N_AEIContactFound_Node0_action --> E_AEIContactFound S_AEIContactFound --> N_AEIContactFound_Node0 N_AEIContactFound_Node0 -- No --> E_AEIContactFound
email contacts from database"}:::decision N_AEIContactFound_Node0_action["The system uses default Merlin ID
for email recipient"]:::main N_AEIContactFound_Node0 -- Yes --> N_AEIContactFound_Node0_action N_AEIContactFound_Node0_action --> E_AEIContactFound S_AEIContactFound --> N_AEIContactFound_Node0 N_AEIContactFound_Node0 -- No --> E_AEIContactFound
File: GCX015E.cbl
GIVEN:
AEI email contact lookup returns no entry found status
WHEN:
The system attempts to retrieve email contacts from database
THEN:
The system uses default Merlin ID for email recipient
β Consolidated Acceptance Criteria
- The system needs to determine email recipients → the system assigns default Merlin ID as the email 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_UseDefaultMerlinID(["Start Step"])
E_UseDefaultMerlinID(["End Step"])
N_UseDefaultMerlinID_Node0{"The system needs to determine email
recipients"}:::decision N_UseDefaultMerlinID_Node0_action["The system assigns default Merlin
ID as the email recipient"]:::main N_UseDefaultMerlinID_Node0 -- Yes --> N_UseDefaultMerlinID_Node0_action N_UseDefaultMerlinID_Node0_action --> E_UseDefaultMerlinID S_UseDefaultMerlinID --> N_UseDefaultMerlinID_Node0 N_UseDefaultMerlinID_Node0 -- No --> E_UseDefaultMerlinID
recipients"}:::decision N_UseDefaultMerlinID_Node0_action["The system assigns default Merlin
ID as the email recipient"]:::main N_UseDefaultMerlinID_Node0 -- Yes --> N_UseDefaultMerlinID_Node0_action N_UseDefaultMerlinID_Node0_action --> E_UseDefaultMerlinID S_UseDefaultMerlinID --> N_UseDefaultMerlinID_Node0 N_UseDefaultMerlinID_Node0 -- No --> E_UseDefaultMerlinID
File: GCX015E.cbl
GIVEN:
Database lookup for AEI contacts fails or returns no entry
WHEN:
The system needs to determine email recipients
THEN:
The system assigns default Merlin ID as the email recipient
β Consolidated Acceptance Criteria
- The system processes the retrieved contact information → the system assigns up to 10 user IDs from database as email recipients until empty entry 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_SetMultipleRecipientsfromDatabase(["Start Step"])
E_SetMultipleRecipientsfromDatabase(["End Step"])
N_SetMultipleRecipientsfromDatabase_Node0{"The system processes the retrieved
contact information"}:::decision N_SetMultipleRecipientsfromDatabase_Node0_action["The system assigns up to 10 user
IDs from database as email
recipients until empty entry is
found"]:::main N_SetMultipleRecipientsfromDatabase_Node0 -- Yes --> N_SetMultipleRecipientsfromDatabase_Node0_action N_SetMultipleRecipientsfromDatabase_Node0_action --> E_SetMultipleRecipientsfromDatabase S_SetMultipleRecipientsfromDatabase --> N_SetMultipleRecipientsfromDatabase_Node0 N_SetMultipleRecipientsfromDatabase_Node0 -- No --> E_SetMultipleRecipientsfromDatabase
contact information"}:::decision N_SetMultipleRecipientsfromDatabase_Node0_action["The system assigns up to 10 user
IDs from database as email
recipients until empty entry is
found"]:::main N_SetMultipleRecipientsfromDatabase_Node0 -- Yes --> N_SetMultipleRecipientsfromDatabase_Node0_action N_SetMultipleRecipientsfromDatabase_Node0_action --> E_SetMultipleRecipientsfromDatabase S_SetMultipleRecipientsfromDatabase --> N_SetMultipleRecipientsfromDatabase_Node0 N_SetMultipleRecipientsfromDatabase_Node0 -- No --> E_SetMultipleRecipientsfromDatabase
File: GCX015E.cbl
GIVEN:
Database lookup successfully returns AEI email contacts
WHEN:
The system processes the retrieved contact information
THEN:
The system assigns up to 10 user IDs from database as email recipients until empty entry is found
β Consolidated Acceptance Criteria
- The system prepares AEI status email message → the system formats email subject as 'TRAIN: [train_id] STATUS: [current_status]'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatTrainStatusMessage(["Start Step"])
E_FormatTrainStatusMessage(["End Step"])
N_FormatTrainStatusMessage_Node0{"The system prepares AEI status
email message"}:::decision N_FormatTrainStatusMessage_Node0_action["The system formats email subject as
TRAIN: trainid STATUS: currentstatus"]:::main N_FormatTrainStatusMessage_Node0 -- Yes --> N_FormatTrainStatusMessage_Node0_action N_FormatTrainStatusMessage_Node0_action --> E_FormatTrainStatusMessage S_FormatTrainStatusMessage --> N_FormatTrainStatusMessage_Node0 N_FormatTrainStatusMessage_Node0 -- No --> E_FormatTrainStatusMessage
email message"}:::decision N_FormatTrainStatusMessage_Node0_action["The system formats email subject as
TRAIN: trainid STATUS: currentstatus"]:::main N_FormatTrainStatusMessage_Node0 -- Yes --> N_FormatTrainStatusMessage_Node0_action N_FormatTrainStatusMessage_Node0_action --> E_FormatTrainStatusMessage S_FormatTrainStatusMessage --> N_FormatTrainStatusMessage_Node0 N_FormatTrainStatusMessage_Node0 -- No --> E_FormatTrainStatusMessage
File: GCX015E.cbl
GIVEN:
A train with customer train ID and current status information
WHEN:
The system prepares AEI status email message
THEN:
The system formats email subject as 'TRAIN: [train_id] STATUS: [current_status]'
β Consolidated Acceptance Criteria
- The system initiates email sending process → the system calls Merlin email service with specified parameters including 080 character width and inbox 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_SendMerlinEmailMessage(["Start Step"])
E_SendMerlinEmailMessage(["End Step"])
N_SendMerlinEmailMessage_Node0{"The system initiates email sending
process"}:::decision N_SendMerlinEmailMessage_Node0_action["The system calls Merlin email
service with specified parameters
including 080 character width and
inbox destination"]:::main N_SendMerlinEmailMessage_Node0 -- Yes --> N_SendMerlinEmailMessage_Node0_action N_SendMerlinEmailMessage_Node0_action --> E_SendMerlinEmailMessage S_SendMerlinEmailMessage --> N_SendMerlinEmailMessage_Node0 N_SendMerlinEmailMessage_Node0 -- No --> E_SendMerlinEmailMessage
process"}:::decision N_SendMerlinEmailMessage_Node0_action["The system calls Merlin email
service with specified parameters
including 080 character width and
inbox destination"]:::main N_SendMerlinEmailMessage_Node0 -- Yes --> N_SendMerlinEmailMessage_Node0_action N_SendMerlinEmailMessage_Node0_action --> E_SendMerlinEmailMessage S_SendMerlinEmailMessage --> N_SendMerlinEmailMessage_Node0 N_SendMerlinEmailMessage_Node0 -- No --> E_SendMerlinEmailMessage
File: GCX015E.cbl
GIVEN:
Formatted email subject, recipients, and default email settings
WHEN:
The system initiates email sending process
THEN:
- The system calls merlin email service with specified parameters including 080 character width
- Inbox destination
β Consolidated Acceptance Criteria
- The system checks email send result → if email send failed, the system initiates resend process to default recipients
- The system checks the email send result → if no errors are returned, the email is considered successfully sent, otherwise it requires retry processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailSendSuccessful(["Start Step"])
E_EmailSendSuccessful(["End Step"])
N_EmailSendSuccessful_Node0{"The system checks email send result"}:::decision
N_EmailSendSuccessful_Node0_action["If email send failed, the system
initiates resend process to default
recipients"]:::main N_EmailSendSuccessful_Node0 -- Yes --> N_EmailSendSuccessful_Node0_action N_EmailSendSuccessful_Node0_action --> E_EmailSendSuccessful S_EmailSendSuccessful --> N_EmailSendSuccessful_Node0 N_EmailSendSuccessful_Node1{"The system checks the email send
result"}:::decision N_EmailSendSuccessful_Node1_action["If no errors are returned, the
email is considered successfully
sent, otherwise it requires retry
processing"]:::main N_EmailSendSuccessful_Node1 -- Yes --> N_EmailSendSuccessful_Node1_action N_EmailSendSuccessful_Node1_action --> E_EmailSendSuccessful N_EmailSendSuccessful_Node0 -- No --> N_EmailSendSuccessful_Node1 N_EmailSendSuccessful_Node1 -- No --> E_EmailSendSuccessful
initiates resend process to default
recipients"]:::main N_EmailSendSuccessful_Node0 -- Yes --> N_EmailSendSuccessful_Node0_action N_EmailSendSuccessful_Node0_action --> E_EmailSendSuccessful S_EmailSendSuccessful --> N_EmailSendSuccessful_Node0 N_EmailSendSuccessful_Node1{"The system checks the email send
result"}:::decision N_EmailSendSuccessful_Node1_action["If no errors are returned, the
email is considered successfully
sent, otherwise it requires retry
processing"]:::main N_EmailSendSuccessful_Node1 -- Yes --> N_EmailSendSuccessful_Node1_action N_EmailSendSuccessful_Node1_action --> E_EmailSendSuccessful N_EmailSendSuccessful_Node0 -- No --> N_EmailSendSuccessful_Node1 N_EmailSendSuccessful_Node1 -- No --> E_EmailSendSuccessful
File: GCX015E.cbl
GIVEN:
Email send operation completed with return status
WHEN:
The system checks email send result
THEN:
If email send failed, the system initiates resend process to default recipients
File: GCX015E.cbl
GIVEN:
An email send operation has been attempted through Merlin
WHEN:
The system checks the email send result
THEN:
If no errors are returned, the email is considered successfully sent, otherwise it requires retry processing
β Consolidated Acceptance Criteria
- The system executes retry mechanism → the system sends email to default recipients AEI9999 and OM01247 with same 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_ResendtoDefaultRecipients(["Start Step"])
E_ResendtoDefaultRecipients(["End Step"])
N_ResendtoDefaultRecipients_Node0{"The system executes retry mechanism"}:::decision
N_ResendtoDefaultRecipients_Node0_action["The system sends email to default
recipients AEI9999 and OM01247 with
same message content"]:::main N_ResendtoDefaultRecipients_Node0 -- Yes --> N_ResendtoDefaultRecipients_Node0_action N_ResendtoDefaultRecipients_Node0_action --> E_ResendtoDefaultRecipients S_ResendtoDefaultRecipients --> N_ResendtoDefaultRecipients_Node0 N_ResendtoDefaultRecipients_Node0 -- No --> E_ResendtoDefaultRecipients
recipients AEI9999 and OM01247 with
same message content"]:::main N_ResendtoDefaultRecipients_Node0 -- Yes --> N_ResendtoDefaultRecipients_Node0_action N_ResendtoDefaultRecipients_Node0_action --> E_ResendtoDefaultRecipients S_ResendtoDefaultRecipients --> N_ResendtoDefaultRecipients_Node0 N_ResendtoDefaultRecipients_Node0 -- No --> E_ResendtoDefaultRecipients
File: GCX015E.cbl
GIVEN:
Primary email send operation failed
WHEN:
The system executes retry mechanism
THEN:
- The system sends email to default recipients aei9999
- Om01247 with same message content
β Consolidated Acceptance Criteria
- The system completes all retry attempts → the system logs 'SEND TO FILE OF OM01247 FAILED' error message
- The system processes the complete delivery failure → the system logs the error message 'SEND TO FILE OF OM01247 FAILED' and triggers 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_LogEmailSendFailure(["Start Step"])
E_LogEmailSendFailure(["End Step"])
N_LogEmailSendFailure_Node0{"The system completes all retry
attempts"}:::decision N_LogEmailSendFailure_Node0_action["The system logs SEND TO FILE OF
OM01247 FAILED error message"]:::main N_LogEmailSendFailure_Node0 -- Yes --> N_LogEmailSendFailure_Node0_action N_LogEmailSendFailure_Node0_action --> E_LogEmailSendFailure S_LogEmailSendFailure --> N_LogEmailSendFailure_Node0 N_LogEmailSendFailure_Node1{"The system processes the complete
delivery failure"}:::decision N_LogEmailSendFailure_Node1_action["The system logs the error message
SEND TO FILE OF OM01247 FAILED and
triggers error handling"]:::main N_LogEmailSendFailure_Node1 -- Yes --> N_LogEmailSendFailure_Node1_action N_LogEmailSendFailure_Node1_action --> E_LogEmailSendFailure N_LogEmailSendFailure_Node0 -- No --> N_LogEmailSendFailure_Node1 N_LogEmailSendFailure_Node1 -- No --> E_LogEmailSendFailure
attempts"}:::decision N_LogEmailSendFailure_Node0_action["The system logs SEND TO FILE OF
OM01247 FAILED error message"]:::main N_LogEmailSendFailure_Node0 -- Yes --> N_LogEmailSendFailure_Node0_action N_LogEmailSendFailure_Node0_action --> E_LogEmailSendFailure S_LogEmailSendFailure --> N_LogEmailSendFailure_Node0 N_LogEmailSendFailure_Node1{"The system processes the complete
delivery failure"}:::decision N_LogEmailSendFailure_Node1_action["The system logs the error message
SEND TO FILE OF OM01247 FAILED and
triggers error handling"]:::main N_LogEmailSendFailure_Node1 -- Yes --> N_LogEmailSendFailure_Node1_action N_LogEmailSendFailure_Node1_action --> E_LogEmailSendFailure N_LogEmailSendFailure_Node0 -- No --> N_LogEmailSendFailure_Node1 N_LogEmailSendFailure_Node1 -- No --> E_LogEmailSendFailure
File: GCX015E.cbl
GIVEN:
Both primary and retry email send operations failed
WHEN:
The system completes all retry attempts
THEN:
The system logs 'SEND TO FILE OF OM01247 FAILED' error message
File: GCX015E.cbl
GIVEN:
Both primary and backup email send attempts have failed
WHEN:
The system processes the complete delivery failure
THEN:
The system logs the error message 'SEND TO FILE OF OM01247 FAILED' and triggers error handling
β Consolidated Acceptance Criteria
- The system checks train arrival processing eligibility → the train must be acknowledged AND have arrived-pending status to proceed with arrival processing
- The system checks if the train is both acknowledged AND has arrived-pending status → the system should proceed with arrival processing only if both conditions are met, otherwise skip arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckTrainStatusConditions(["Start Step"])
E_CheckTrainStatusConditions(["End Step"])
N_CheckTrainStatusConditions_Node0{"The system checks train arrival
processing eligibility"}:::decision N_CheckTrainStatusConditions_Node0_action["The train must be acknowledged AND
have arrived-pending status to
proceed with arrival processing"]:::main N_CheckTrainStatusConditions_Node0 -- Yes --> N_CheckTrainStatusConditions_Node0_action N_CheckTrainStatusConditions_Node0_action --> E_CheckTrainStatusConditions S_CheckTrainStatusConditions --> N_CheckTrainStatusConditions_Node0 N_CheckTrainStatusConditions_Node1{"The system checks if the train is
both acknowledged AND has
arrived-pending status"}:::decision N_CheckTrainStatusConditions_Node1_action["The system should proceed with
arrival processing only if both
conditions are met, otherwise skip
arrival processing"]:::main N_CheckTrainStatusConditions_Node1 -- Yes --> N_CheckTrainStatusConditions_Node1_action N_CheckTrainStatusConditions_Node1_action --> E_CheckTrainStatusConditions N_CheckTrainStatusConditions_Node0 -- No --> N_CheckTrainStatusConditions_Node1 N_CheckTrainStatusConditions_Node1 -- No --> E_CheckTrainStatusConditions
processing eligibility"}:::decision N_CheckTrainStatusConditions_Node0_action["The train must be acknowledged AND
have arrived-pending status to
proceed with arrival processing"]:::main N_CheckTrainStatusConditions_Node0 -- Yes --> N_CheckTrainStatusConditions_Node0_action N_CheckTrainStatusConditions_Node0_action --> E_CheckTrainStatusConditions S_CheckTrainStatusConditions --> N_CheckTrainStatusConditions_Node0 N_CheckTrainStatusConditions_Node1{"The system checks if the train is
both acknowledged AND has
arrived-pending status"}:::decision N_CheckTrainStatusConditions_Node1_action["The system should proceed with
arrival processing only if both
conditions are met, otherwise skip
arrival processing"]:::main N_CheckTrainStatusConditions_Node1 -- Yes --> N_CheckTrainStatusConditions_Node1_action N_CheckTrainStatusConditions_Node1_action --> E_CheckTrainStatusConditions N_CheckTrainStatusConditions_Node0 -- No --> N_CheckTrainStatusConditions_Node1 N_CheckTrainStatusConditions_Node1 -- No --> E_CheckTrainStatusConditions
File: GCX015E.cbl
GIVEN:
A train record exists in the system
WHEN:
The system checks train arrival processing eligibility
THEN:
- The train must be acknowledged
- Have arrived-pending status to proceed with arrival processing
File: GCX015E.cbl
GIVEN:
A train record exists with status indicators for acknowledgment and arrival pending
WHEN:
- The system checks if the train is both acknowledged
- Has arrived-pending status
THEN:
The system should proceed with arrival processing only if both conditions are met, otherwise skip arrival processing
β Consolidated Acceptance Criteria
- The system sets up the transaction parameters → the action code must be set to 'TAR' to identify this as a train arrival transaction
- The system prepares the arrival transaction message → the action code should be set to 'TAR' 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_SetActionCodetoTAR(["Start Step"])
E_SetActionCodetoTAR(["End Step"])
N_SetActionCodetoTAR_Node0{"The system sets up the transaction
parameters"}:::decision N_SetActionCodetoTAR_Node0_action["The action code must be set to TAR
to identify this as a train arrival
transaction"]:::main N_SetActionCodetoTAR_Node0 -- Yes --> N_SetActionCodetoTAR_Node0_action N_SetActionCodetoTAR_Node0_action --> E_SetActionCodetoTAR S_SetActionCodetoTAR --> N_SetActionCodetoTAR_Node0 N_SetActionCodetoTAR_Node1{"The system prepares the arrival
transaction message"}:::decision N_SetActionCodetoTAR_Node1_action["The action code should be set to
TAR to indicate train arrival"]:::main N_SetActionCodetoTAR_Node1 -- Yes --> N_SetActionCodetoTAR_Node1_action N_SetActionCodetoTAR_Node1_action --> E_SetActionCodetoTAR N_SetActionCodetoTAR_Node0 -- No --> N_SetActionCodetoTAR_Node1 N_SetActionCodetoTAR_Node1 -- No --> E_SetActionCodetoTAR
parameters"}:::decision N_SetActionCodetoTAR_Node0_action["The action code must be set to TAR
to identify this as a train arrival
transaction"]:::main N_SetActionCodetoTAR_Node0 -- Yes --> N_SetActionCodetoTAR_Node0_action N_SetActionCodetoTAR_Node0_action --> E_SetActionCodetoTAR S_SetActionCodetoTAR --> N_SetActionCodetoTAR_Node0 N_SetActionCodetoTAR_Node1{"The system prepares the arrival
transaction message"}:::decision N_SetActionCodetoTAR_Node1_action["The action code should be set to
TAR to indicate train arrival"]:::main N_SetActionCodetoTAR_Node1 -- Yes --> N_SetActionCodetoTAR_Node1_action N_SetActionCodetoTAR_Node1_action --> E_SetActionCodetoTAR N_SetActionCodetoTAR_Node0 -- No --> N_SetActionCodetoTAR_Node1 N_SetActionCodetoTAR_Node1 -- No --> E_SetActionCodetoTAR
File: GCX015E.cbl
GIVEN:
A train arrival message is being prepared
WHEN:
The system sets up the transaction parameters
THEN:
The action code must be set to 'TAR' to identify this as a train arrival transaction
File: GCX015E.cbl
GIVEN:
A train arrival event is being processed
WHEN:
The system prepares the arrival transaction message
THEN:
The action code should be set to 'TAR' to indicate train arrival
β Consolidated Acceptance Criteria
- The system needs to record the arrival timestamp → the current system date and time must be captured and formatted for the 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_GetCurrentSystemDateTime(["Start Step"])
E_GetCurrentSystemDateTime(["End Step"])
N_GetCurrentSystemDateTime_Node0{"The system needs to record the
arrival timestamp"}:::decision N_GetCurrentSystemDateTime_Node0_action["The current system date and time
must be captured and formatted for
the arrival event"]:::main N_GetCurrentSystemDateTime_Node0 -- Yes --> N_GetCurrentSystemDateTime_Node0_action N_GetCurrentSystemDateTime_Node0_action --> E_GetCurrentSystemDateTime S_GetCurrentSystemDateTime --> N_GetCurrentSystemDateTime_Node0 N_GetCurrentSystemDateTime_Node0 -- No --> E_GetCurrentSystemDateTime
arrival timestamp"}:::decision N_GetCurrentSystemDateTime_Node0_action["The current system date and time
must be captured and formatted for
the arrival event"]:::main N_GetCurrentSystemDateTime_Node0 -- Yes --> N_GetCurrentSystemDateTime_Node0_action N_GetCurrentSystemDateTime_Node0_action --> E_GetCurrentSystemDateTime S_GetCurrentSystemDateTime --> N_GetCurrentSystemDateTime_Node0 N_GetCurrentSystemDateTime_Node0 -- No --> E_GetCurrentSystemDateTime
File: GCX015E.cbl
GIVEN:
A train arrival is being processed
WHEN:
The system needs to record the arrival timestamp
THEN:
- The current system date
- Time must be captured
- Formatted for the arrival event
β Consolidated Acceptance Criteria
- The arrival message is being constructed → the date must be formatted as YYMMDD and time as HHMM for the event 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_FormatEventDateandTime(["Start Step"])
E_FormatEventDateandTime(["End Step"])
N_FormatEventDateandTime_Node0{"The arrival message is being
constructed"}:::decision N_FormatEventDateandTime_Node0_action["The date must be formatted as
YYMMDD and time as HHMM for the
event timestamp"]:::main N_FormatEventDateandTime_Node0 -- Yes --> N_FormatEventDateandTime_Node0_action N_FormatEventDateandTime_Node0_action --> E_FormatEventDateandTime S_FormatEventDateandTime --> N_FormatEventDateandTime_Node0 N_FormatEventDateandTime_Node0 -- No --> E_FormatEventDateandTime
constructed"}:::decision N_FormatEventDateandTime_Node0_action["The date must be formatted as
YYMMDD and time as HHMM for the
event timestamp"]:::main N_FormatEventDateandTime_Node0 -- Yes --> N_FormatEventDateandTime_Node0_action N_FormatEventDateandTime_Node0_action --> E_FormatEventDateandTime S_FormatEventDateandTime --> N_FormatEventDateandTime_Node0 N_FormatEventDateandTime_Node0 -- No --> E_FormatEventDateandTime
File: GCX015E.cbl
GIVEN:
System date and time have been captured
WHEN:
The arrival message is being constructed
THEN:
- The date must be formatted as yymmdd
- Time as hhmm for the event timestamp
β Consolidated Acceptance Criteria
- The system assigns train identification → the US Custom Train ID from the train record must be used as the train identifier in the arrival 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_SetTrainIDfromUSCustomTrainID(["Start Step"])
E_SetTrainIDfromUSCustomTrainID(["End Step"])
N_SetTrainIDfromUSCustomTrainID_Node0{"The system assigns train
identification"}:::decision N_SetTrainIDfromUSCustomTrainID_Node0_action["The US Custom Train ID from the
train record must be used as the
train identifier in the arrival
message"]:::main N_SetTrainIDfromUSCustomTrainID_Node0 -- Yes --> N_SetTrainIDfromUSCustomTrainID_Node0_action N_SetTrainIDfromUSCustomTrainID_Node0_action --> E_SetTrainIDfromUSCustomTrainID S_SetTrainIDfromUSCustomTrainID --> N_SetTrainIDfromUSCustomTrainID_Node0 N_SetTrainIDfromUSCustomTrainID_Node0 -- No --> E_SetTrainIDfromUSCustomTrainID
identification"}:::decision N_SetTrainIDfromUSCustomTrainID_Node0_action["The US Custom Train ID from the
train record must be used as the
train identifier in the arrival
message"]:::main N_SetTrainIDfromUSCustomTrainID_Node0 -- Yes --> N_SetTrainIDfromUSCustomTrainID_Node0_action N_SetTrainIDfromUSCustomTrainID_Node0_action --> E_SetTrainIDfromUSCustomTrainID S_SetTrainIDfromUSCustomTrainID --> N_SetTrainIDfromUSCustomTrainID_Node0 N_SetTrainIDfromUSCustomTrainID_Node0 -- No --> E_SetTrainIDfromUSCustomTrainID
File: GCX015E.cbl
GIVEN:
A train arrival message is being prepared
WHEN:
The system assigns train identification
THEN:
The US Custom Train ID from the train record must be used as the train identifier in the arrival message
β Consolidated Acceptance Criteria
- Security parameters are being set → the security byte must be set to HIGH-VALUE and the transaction type must be marked as US-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_SetSecurityParameters(["Start Step"])
E_SetSecurityParameters(["End Step"])
N_SetSecurityParameters_Node0{"Security parameters are being set"}:::decision
N_SetSecurityParameters_Node0_action["The security byte must be set to
HIGH-VALUE and the transaction type
must be marked as US-TRAIN"]:::main N_SetSecurityParameters_Node0 -- Yes --> N_SetSecurityParameters_Node0_action N_SetSecurityParameters_Node0_action --> E_SetSecurityParameters S_SetSecurityParameters --> N_SetSecurityParameters_Node0 N_SetSecurityParameters_Node0 -- No --> E_SetSecurityParameters
HIGH-VALUE and the transaction type
must be marked as US-TRAIN"]:::main N_SetSecurityParameters_Node0 -- Yes --> N_SetSecurityParameters_Node0_action N_SetSecurityParameters_Node0_action --> E_SetSecurityParameters S_SetSecurityParameters --> N_SetSecurityParameters_Node0 N_SetSecurityParameters_Node0 -- No --> E_SetSecurityParameters
File: GCX015E.cbl
GIVEN:
A train arrival transaction is being created
WHEN:
Security parameters are being set
THEN:
- The security byte must be set to high-value
- The transaction type must be marked as us-train
β Consolidated Acceptance Criteria
- The system creates the transaction message → a complete GCT1121E message must be generated with action code, event date/time, train ID, and security 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_CreateTrainArrivalTransactionMessage(["Start Step"])
E_CreateTrainArrivalTransactionMessage(["End Step"])
N_CreateTrainArrivalTransactionMessage_Node0{"The system creates the transaction
message"}:::decision N_CreateTrainArrivalTransactionMessage_Node0_action["A complete GCT1121E message must be
generated with action code, event
datetime, train ID, and security
parameters"]:::main N_CreateTrainArrivalTransactionMessage_Node0 -- Yes --> N_CreateTrainArrivalTransactionMessage_Node0_action N_CreateTrainArrivalTransactionMessage_Node0_action --> E_CreateTrainArrivalTransactionMessage S_CreateTrainArrivalTransactionMessage --> N_CreateTrainArrivalTransactionMessage_Node0 N_CreateTrainArrivalTransactionMessage_Node0 -- No --> E_CreateTrainArrivalTransactionMessage
message"}:::decision N_CreateTrainArrivalTransactionMessage_Node0_action["A complete GCT1121E message must be
generated with action code, event
datetime, train ID, and security
parameters"]:::main N_CreateTrainArrivalTransactionMessage_Node0 -- Yes --> N_CreateTrainArrivalTransactionMessage_Node0_action N_CreateTrainArrivalTransactionMessage_Node0_action --> E_CreateTrainArrivalTransactionMessage S_CreateTrainArrivalTransactionMessage --> N_CreateTrainArrivalTransactionMessage_Node0 N_CreateTrainArrivalTransactionMessage_Node0 -- No --> E_CreateTrainArrivalTransactionMessage
File: GCX015E.cbl
GIVEN:
All train arrival parameters have been set
WHEN:
The system creates the transaction message
THEN:
A complete GCT1121E message must be generated with action code, event date/time, train ID, and security parameters
β Consolidated Acceptance Criteria
- The message needs to be queued for processing → the message must be sent to the IMS queue using CIMS with CHNG operation and ALT-PCB
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoIMSQueue(["Start Step"])
E_SendMessagetoIMSQueue(["End Step"])
N_SendMessagetoIMSQueue_Node0{"The message needs to be queued for
processing"}:::decision N_SendMessagetoIMSQueue_Node0_action["The message must be sent to the IMS
queue using CIMS with CHNG operation
and ALT-PCB"]:::main N_SendMessagetoIMSQueue_Node0 -- Yes --> N_SendMessagetoIMSQueue_Node0_action N_SendMessagetoIMSQueue_Node0_action --> E_SendMessagetoIMSQueue S_SendMessagetoIMSQueue --> N_SendMessagetoIMSQueue_Node0 N_SendMessagetoIMSQueue_Node0 -- No --> E_SendMessagetoIMSQueue
processing"}:::decision N_SendMessagetoIMSQueue_Node0_action["The message must be sent to the IMS
queue using CIMS with CHNG operation
and ALT-PCB"]:::main N_SendMessagetoIMSQueue_Node0 -- Yes --> N_SendMessagetoIMSQueue_Node0_action N_SendMessagetoIMSQueue_Node0_action --> E_SendMessagetoIMSQueue S_SendMessagetoIMSQueue --> N_SendMessagetoIMSQueue_Node0 N_SendMessagetoIMSQueue_Node0 -- No --> E_SendMessagetoIMSQueue
File: GCX015E.cbl
GIVEN:
A train arrival message has been created
WHEN:
The message needs to be queued for processing
THEN:
- The message must be sent to the ims queue using cims with chng operation
- Alt-pcb
β Consolidated Acceptance Criteria
- The message needs to be logged → the message must be written using WRITMSGL with the message code, content, length, and module 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_WriteTrainArrivalMessage(["Start Step"])
E_WriteTrainArrivalMessage(["End Step"])
N_WriteTrainArrivalMessage_Node0{"The message needs to be logged"}:::decision
N_WriteTrainArrivalMessage_Node0_action["The message must be written using
WRITMSGL with the message code,
content, length, and module name"]:::main N_WriteTrainArrivalMessage_Node0 -- Yes --> N_WriteTrainArrivalMessage_Node0_action N_WriteTrainArrivalMessage_Node0_action --> E_WriteTrainArrivalMessage S_WriteTrainArrivalMessage --> N_WriteTrainArrivalMessage_Node0 N_WriteTrainArrivalMessage_Node0 -- No --> E_WriteTrainArrivalMessage
WRITMSGL with the message code,
content, length, and module name"]:::main N_WriteTrainArrivalMessage_Node0 -- Yes --> N_WriteTrainArrivalMessage_Node0_action N_WriteTrainArrivalMessage_Node0_action --> E_WriteTrainArrivalMessage S_WriteTrainArrivalMessage --> N_WriteTrainArrivalMessage_Node0 N_WriteTrainArrivalMessage_Node0 -- No --> E_WriteTrainArrivalMessage
File: GCX015E.cbl
GIVEN:
A train arrival message is queued in IMS
WHEN:
The message needs to be logged
THEN:
The message must be written using WRITMSGL with the message code, content, length, and module name
β Consolidated Acceptance Criteria
- Message processing is complete → the IMS message queue must be purged using CIMS with PURG 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_PurgeIMSMessage(["Start Step"])
E_PurgeIMSMessage(["End Step"])
N_PurgeIMSMessage_Node0{"Message processing is complete"}:::decision
N_PurgeIMSMessage_Node0_action["The IMS message queue must be
purged using CIMS with PURG
operation"]:::main N_PurgeIMSMessage_Node0 -- Yes --> N_PurgeIMSMessage_Node0_action N_PurgeIMSMessage_Node0_action --> E_PurgeIMSMessage S_PurgeIMSMessage --> N_PurgeIMSMessage_Node0 N_PurgeIMSMessage_Node0 -- No --> E_PurgeIMSMessage
purged using CIMS with PURG
operation"]:::main N_PurgeIMSMessage_Node0 -- Yes --> N_PurgeIMSMessage_Node0_action N_PurgeIMSMessage_Node0_action --> E_PurgeIMSMessage S_PurgeIMSMessage --> N_PurgeIMSMessage_Node0 N_PurgeIMSMessage_Node0 -- No --> E_PurgeIMSMessage
File: GCX015E.cbl
GIVEN:
A train arrival message has been written to the log
WHEN:
Message processing is complete
THEN:
The IMS message queue must be purged using CIMS with PURG operation
β Consolidated Acceptance Criteria
- The system processes cargo segment data retrieval → the system searches through cargo secondary segments to find freight forwarder (N101 type) and consignee (N101 type) information, and identifies segment 07 data
- The system processes segment type 03 records with N101 consignee type → the system captures the consignee name from GCUS-N102-NAME field and sets consignee 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_RetrieveCargoSegmentData(["Start Step"])
E_RetrieveCargoSegmentData(["End Step"])
N_RetrieveCargoSegmentData_Node0{"The system processes cargo segment
data retrieval"}:::decision N_RetrieveCargoSegmentData_Node0_action["The system searches through cargo
secondary segments to find freight
forwarder N101 type and consignee
N101 type information, and
identifies segment 07 data"]:::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 segment type
03 records with N101 consignee type"}:::decision N_RetrieveCargoSegmentData_Node1_action["The system captures the consignee
name from GCUS-N102-NAME field and
sets consignee found flag"]:::main N_RetrieveCargoSegmentData_Node1 -- Yes --> N_RetrieveCargoSegmentData_Node1_action N_RetrieveCargoSegmentData_Node1_action --> E_RetrieveCargoSegmentData N_RetrieveCargoSegmentData_Node0 -- No --> N_RetrieveCargoSegmentData_Node1 N_RetrieveCargoSegmentData_Node1 -- No --> E_RetrieveCargoSegmentData
data retrieval"}:::decision N_RetrieveCargoSegmentData_Node0_action["The system searches through cargo
secondary segments to find freight
forwarder N101 type and consignee
N101 type information, and
identifies segment 07 data"]:::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 segment type
03 records with N101 consignee type"}:::decision N_RetrieveCargoSegmentData_Node1_action["The system captures the consignee
name from GCUS-N102-NAME field and
sets consignee found flag"]:::main N_RetrieveCargoSegmentData_Node1 -- Yes --> N_RetrieveCargoSegmentData_Node1_action N_RetrieveCargoSegmentData_Node1_action --> E_RetrieveCargoSegmentData N_RetrieveCargoSegmentData_Node0 -- No --> N_RetrieveCargoSegmentData_Node1 N_RetrieveCargoSegmentData_Node1 -- No --> E_RetrieveCargoSegmentData
File: GCX015E.cbl
GIVEN:
A cargo shipment requires email warning notification
WHEN:
The system processes cargo segment data retrieval
THEN:
The system searches through cargo secondary segments to find freight forwarder (N101 type) and consignee (N101 type) information, and identifies segment 07 data
File: GCX015E.cbl
GIVEN:
Cargo segment data contains consignee information
WHEN:
The system processes segment type 03 records with N101 consignee type
THEN:
- The system captures the consignee name from gcus-n102-name field
- Sets consignee found flag
β Consolidated Acceptance Criteria
- The system examines segment type 03 records → if GCUS-N101 field indicates forwarder type, set freight forwarder found 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_FreightForwarderFound(["Start Step"])
E_FreightForwarderFound(["End Step"])
N_FreightForwarderFound_Node0{"The system examines segment type 03
records"}:::decision N_FreightForwarderFound_Node0_action["If GCUS-N101 field indicates
forwarder type, set freight
forwarder found flag to true"]:::main N_FreightForwarderFound_Node0 -- Yes --> N_FreightForwarderFound_Node0_action N_FreightForwarderFound_Node0_action --> E_FreightForwarderFound S_FreightForwarderFound --> N_FreightForwarderFound_Node0 N_FreightForwarderFound_Node0 -- No --> E_FreightForwarderFound
records"}:::decision N_FreightForwarderFound_Node0_action["If GCUS-N101 field indicates
forwarder type, set freight
forwarder found flag to true"]:::main N_FreightForwarderFound_Node0 -- Yes --> N_FreightForwarderFound_Node0_action N_FreightForwarderFound_Node0_action --> E_FreightForwarderFound S_FreightForwarderFound --> N_FreightForwarderFound_Node0 N_FreightForwarderFound_Node0 -- No --> E_FreightForwarderFound
File: GCX015E.cbl
GIVEN:
Cargo segment data is being processed for email notifications
WHEN:
The system examines segment type 03 records
THEN:
If GCUS-N101 field indicates forwarder type, set freight forwarder found flag to true
β Consolidated Acceptance Criteria
- The system constructs a lookup key with 'FW=' prefix and freight forwarder name → the system retrieves broker short name from GCST2RT table, or initializes empty broker name segment if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFreightForwarderBrokerShortName(["Start Step"])
E_GetFreightForwarderBrokerShortName(["End Step"])
N_GetFreightForwarderBrokerShortName_Node0{"The system constructs a lookup key
with FW prefix and freight forwarder
name"}:::decision N_GetFreightForwarderBrokerShortName_Node0_action["The system retrieves broker short
name from GCST2RT table, or
initializes empty broker name
segment if not found"]:::main N_GetFreightForwarderBrokerShortName_Node0 -- Yes --> N_GetFreightForwarderBrokerShortName_Node0_action N_GetFreightForwarderBrokerShortName_Node0_action --> E_GetFreightForwarderBrokerShortName S_GetFreightForwarderBrokerShortName --> N_GetFreightForwarderBrokerShortName_Node0 N_GetFreightForwarderBrokerShortName_Node0 -- No --> E_GetFreightForwarderBrokerShortName
with FW prefix and freight forwarder
name"}:::decision N_GetFreightForwarderBrokerShortName_Node0_action["The system retrieves broker short
name from GCST2RT table, or
initializes empty broker name
segment if not found"]:::main N_GetFreightForwarderBrokerShortName_Node0 -- Yes --> N_GetFreightForwarderBrokerShortName_Node0_action N_GetFreightForwarderBrokerShortName_Node0_action --> E_GetFreightForwarderBrokerShortName S_GetFreightForwarderBrokerShortName --> N_GetFreightForwarderBrokerShortName_Node0 N_GetFreightForwarderBrokerShortName_Node0 -- No --> E_GetFreightForwarderBrokerShortName
File: GCX015E.cbl
GIVEN:
A freight forwarder name is available from cargo segments
WHEN:
- The system constructs a lookup key with 'fw=' prefix
- Freight forwarder name
THEN:
The system retrieves broker short name from GCST2RT table, or initializes empty broker name segment if not found
β Consolidated Acceptance Criteria
- If the retrieved broker information → if GCT2-BROKER-NAME-SHORT is not spaces, proceed to get detailed broker 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_BrokerShortNameAvailable(["Start Step"])
E_BrokerShortNameAvailable(["End Step"])
N_BrokerShortNameAvailable_Node0{"The system evaluates the retrieved
broker information"}:::decision N_BrokerShortNameAvailable_Node0_action["If GCT2-BROKER-NAME-SHORT is not
spaces, proceed to get detailed
broker contact information"]:::main N_BrokerShortNameAvailable_Node0 -- Yes --> N_BrokerShortNameAvailable_Node0_action N_BrokerShortNameAvailable_Node0_action --> E_BrokerShortNameAvailable S_BrokerShortNameAvailable --> N_BrokerShortNameAvailable_Node0 N_BrokerShortNameAvailable_Node0 -- No --> E_BrokerShortNameAvailable
broker information"}:::decision N_BrokerShortNameAvailable_Node0_action["If GCT2-BROKER-NAME-SHORT is not
spaces, proceed to get detailed
broker contact information"]:::main N_BrokerShortNameAvailable_Node0 -- Yes --> N_BrokerShortNameAvailable_Node0_action N_BrokerShortNameAvailable_Node0_action --> E_BrokerShortNameAvailable S_BrokerShortNameAvailable --> N_BrokerShortNameAvailable_Node0 N_BrokerShortNameAvailable_Node0 -- No --> E_BrokerShortNameAvailable
File: GCX015E.cbl
GIVEN:
Freight forwarder broker lookup has been performed
WHEN:
The system evaluates the retrieved broker information
THEN:
If GCT2-BROKER-NAME-SHORT is not spaces, proceed to get detailed broker contact information
β Consolidated Acceptance Criteria
- The system constructs lookup keys using broker short name with either M1203 location ID or P401 location ID → the system retrieves broker segment (BK) and internet address segment (B1) from table, and if broker uses internet, sets email recipient to internet 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_GetFreightForwarderBrokerContactInformation(["Start Step"])
E_GetFreightForwarderBrokerContactInformation(["End Step"])
N_GetFreightForwarderBrokerContactInformation_Node0{"The system constructs lookup keys
using broker short name with either
M1203 location ID or P401 location
ID"}:::decision N_GetFreightForwarderBrokerContactInformation_Node0_action["The system retrieves broker segment
BK and internet address segment B1
from table, and if broker uses
internet, sets email recipient to
internet address"]:::main N_GetFreightForwarderBrokerContactInformation_Node0 -- Yes --> N_GetFreightForwarderBrokerContactInformation_Node0_action N_GetFreightForwarderBrokerContactInformation_Node0_action --> E_GetFreightForwarderBrokerContactInformation S_GetFreightForwarderBrokerContactInformation --> N_GetFreightForwarderBrokerContactInformation_Node0 N_GetFreightForwarderBrokerContactInformation_Node0 -- No --> E_GetFreightForwarderBrokerContactInformation
using broker short name with either
M1203 location ID or P401 location
ID"}:::decision N_GetFreightForwarderBrokerContactInformation_Node0_action["The system retrieves broker segment
BK and internet address segment B1
from table, and if broker uses
internet, sets email recipient to
internet address"]:::main N_GetFreightForwarderBrokerContactInformation_Node0 -- Yes --> N_GetFreightForwarderBrokerContactInformation_Node0_action N_GetFreightForwarderBrokerContactInformation_Node0_action --> E_GetFreightForwarderBrokerContactInformation S_GetFreightForwarderBrokerContactInformation --> N_GetFreightForwarderBrokerContactInformation_Node0 N_GetFreightForwarderBrokerContactInformation_Node0 -- No --> E_GetFreightForwarderBrokerContactInformation
File: GCX015E.cbl
GIVEN:
Broker short name is available and location ID exists
WHEN:
The system constructs lookup keys using broker short name with either M1203 location ID or P401 location ID
THEN:
The system retrieves broker segment (BK) and internet address segment (B1) from table, and if broker uses internet, sets email recipient to internet address
β Consolidated Acceptance Criteria
- The system prepares the email subject → the system sets the email subject to the predefined warning email subject format
- The system formats the email subject line → the system uses the predefined email subject format for CBP warnings
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmailSubjectLine(["Start Step"])
E_FormatEmailSubjectLine(["End Step"])
N_FormatEmailSubjectLine_Node0{"The system prepares the email
subject"}:::decision N_FormatEmailSubjectLine_Node0_action["The system sets the email subject
to the predefined warning email
subject format"]:::main N_FormatEmailSubjectLine_Node0 -- Yes --> N_FormatEmailSubjectLine_Node0_action N_FormatEmailSubjectLine_Node0_action --> E_FormatEmailSubjectLine S_FormatEmailSubjectLine --> N_FormatEmailSubjectLine_Node0 N_FormatEmailSubjectLine_Node1{"The system formats the email
subject line"}:::decision N_FormatEmailSubjectLine_Node1_action["The system uses the predefined
email subject format for CBP
warnings"]:::main N_FormatEmailSubjectLine_Node1 -- Yes --> N_FormatEmailSubjectLine_Node1_action N_FormatEmailSubjectLine_Node1_action --> E_FormatEmailSubjectLine N_FormatEmailSubjectLine_Node0 -- No --> N_FormatEmailSubjectLine_Node1 N_FormatEmailSubjectLine_Node1 -- No --> E_FormatEmailSubjectLine
subject"}:::decision N_FormatEmailSubjectLine_Node0_action["The system sets the email subject
to the predefined warning email
subject format"]:::main N_FormatEmailSubjectLine_Node0 -- Yes --> N_FormatEmailSubjectLine_Node0_action N_FormatEmailSubjectLine_Node0_action --> E_FormatEmailSubjectLine S_FormatEmailSubjectLine --> N_FormatEmailSubjectLine_Node0 N_FormatEmailSubjectLine_Node1{"The system formats the email
subject line"}:::decision N_FormatEmailSubjectLine_Node1_action["The system uses the predefined
email subject format for CBP
warnings"]:::main N_FormatEmailSubjectLine_Node1 -- Yes --> N_FormatEmailSubjectLine_Node1_action N_FormatEmailSubjectLine_Node1_action --> E_FormatEmailSubjectLine N_FormatEmailSubjectLine_Node0 -- No --> N_FormatEmailSubjectLine_Node1 N_FormatEmailSubjectLine_Node1 -- No --> E_FormatEmailSubjectLine
File: GCX015E.cbl
GIVEN:
Email warning notification needs to be sent
WHEN:
The system prepares the email subject
THEN:
The system sets the email subject to the predefined warning email subject format
File: GCX015E.cbl
GIVEN:
A CBP warning message needs to be sent via email
WHEN:
The system formats the email subject line
THEN:
The system uses the predefined email subject format for CBP warnings
β Consolidated Acceptance Criteria
- The system constructs email content → the system formats email with header lines, equipment details, waybill information, CCN data, load/empty indicator, content description, origin/destination stations, consignee info, CBP warning message, timestamp, and footer 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_FormatEmailContentwithShipmentDetails(["Start Step"])
E_FormatEmailContentwithShipmentDetails(["End Step"])
N_FormatEmailContentwithShipmentDetails_Node0{"The system constructs email content"}:::decision
N_FormatEmailContentwithShipmentDetails_Node0_action["The system formats email with
header lines, equipment details,
waybill information, CCN data,
loadempty indicator, content
description, origindestination
stations, consignee info, CBP
warning message, timestamp, and
footer text"]:::main N_FormatEmailContentwithShipmentDetails_Node0 -- Yes --> N_FormatEmailContentwithShipmentDetails_Node0_action N_FormatEmailContentwithShipmentDetails_Node0_action --> E_FormatEmailContentwithShipmentDetails S_FormatEmailContentwithShipmentDetails --> N_FormatEmailContentwithShipmentDetails_Node0 N_FormatEmailContentwithShipmentDetails_Node0 -- No --> E_FormatEmailContentwithShipmentDetails
header lines, equipment details,
waybill information, CCN data,
loadempty indicator, content
description, origindestination
stations, consignee info, CBP
warning message, timestamp, and
footer text"]:::main N_FormatEmailContentwithShipmentDetails_Node0 -- Yes --> N_FormatEmailContentwithShipmentDetails_Node0_action N_FormatEmailContentwithShipmentDetails_Node0_action --> E_FormatEmailContentwithShipmentDetails S_FormatEmailContentwithShipmentDetails --> N_FormatEmailContentwithShipmentDetails_Node0 N_FormatEmailContentwithShipmentDetails_Node0 -- No --> E_FormatEmailContentwithShipmentDetails
File: GCX015E.cbl
GIVEN:
Shipment data is available for email warning
WHEN:
The system constructs email content
THEN:
The system formats email with header lines, equipment details, waybill information, CCN data, load/empty indicator, content description, origin/destination stations, consignee info, CBP warning message, timestamp, and footer text
β Consolidated Acceptance Criteria
- The system formats email content → the system adds equipment ID number from GCUSRT-RT071-CAR-ID-NUM-INDEX to the email 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_AddEquipmentInformation(["Start Step"])
E_AddEquipmentInformation(["End Step"])
N_AddEquipmentInformation_Node0{"The system formats email content"}:::decision
N_AddEquipmentInformation_Node0_action["The system adds equipment ID number
from GCUSRT-RT071-CAR-ID-NUM-INDEX
to the email text"]:::main N_AddEquipmentInformation_Node0 -- Yes --> N_AddEquipmentInformation_Node0_action N_AddEquipmentInformation_Node0_action --> E_AddEquipmentInformation S_AddEquipmentInformation --> N_AddEquipmentInformation_Node0 N_AddEquipmentInformation_Node0 -- No --> E_AddEquipmentInformation
from GCUSRT-RT071-CAR-ID-NUM-INDEX
to the email text"]:::main N_AddEquipmentInformation_Node0 -- Yes --> N_AddEquipmentInformation_Node0_action N_AddEquipmentInformation_Node0_action --> E_AddEquipmentInformation S_AddEquipmentInformation --> N_AddEquipmentInformation_Node0 N_AddEquipmentInformation_Node0 -- No --> E_AddEquipmentInformation
File: GCX015E.cbl
GIVEN:
Cargo equipment information is available
WHEN:
The system formats email content
THEN:
The system adds equipment ID number from GCUSRT-RT071-CAR-ID-NUM-INDEX to the email text
β Consolidated Acceptance Criteria
- The system formats email content → the system concatenates road index, station index, and waybill index from GCUSRT-RT072 fields into waybill line 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_AddWaybillInformation(["Start Step"])
E_AddWaybillInformation(["End Step"])
N_AddWaybillInformation_Node0{"The system formats email content"}:::decision
N_AddWaybillInformation_Node0_action["The system concatenates road index,
station index, and waybill index
from GCUSRT-RT072 fields into
waybill line data"]:::main N_AddWaybillInformation_Node0 -- Yes --> N_AddWaybillInformation_Node0_action N_AddWaybillInformation_Node0_action --> E_AddWaybillInformation S_AddWaybillInformation --> N_AddWaybillInformation_Node0 N_AddWaybillInformation_Node0 -- No --> E_AddWaybillInformation
station index, and waybill index
from GCUSRT-RT072 fields into
waybill line data"]:::main N_AddWaybillInformation_Node0 -- Yes --> N_AddWaybillInformation_Node0_action N_AddWaybillInformation_Node0_action --> E_AddWaybillInformation S_AddWaybillInformation --> N_AddWaybillInformation_Node0 N_AddWaybillInformation_Node0 -- No --> E_AddWaybillInformation
File: GCX015E.cbl
GIVEN:
Waybill information is available from cargo data
WHEN:
The system formats email content
THEN:
The system concatenates road index, station index, and waybill index from GCUSRT-RT072 fields into waybill line data
β Consolidated Acceptance Criteria
- The system formats email content → the system adds the CCN (Container Control Number) from WORK-M10-12-DATA to the email 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_AddCCNInformation(["Start Step"])
E_AddCCNInformation(["End Step"])
N_AddCCNInformation_Node0{"The system formats email content"}:::decision
N_AddCCNInformation_Node0_action["The system adds the CCN Container
Control Number from WORK-M10-12-DATA
to the email text"]:::main N_AddCCNInformation_Node0 -- Yes --> N_AddCCNInformation_Node0_action N_AddCCNInformation_Node0_action --> E_AddCCNInformation S_AddCCNInformation --> N_AddCCNInformation_Node0 N_AddCCNInformation_Node0 -- No --> E_AddCCNInformation
Control Number from WORK-M10-12-DATA
to the email text"]:::main N_AddCCNInformation_Node0 -- Yes --> N_AddCCNInformation_Node0_action N_AddCCNInformation_Node0_action --> E_AddCCNInformation S_AddCCNInformation --> N_AddCCNInformation_Node0 N_AddCCNInformation_Node0 -- No --> E_AddCCNInformation
File: GCX015E.cbl
GIVEN:
CCN data is available from message processing
WHEN:
The system formats email content
THEN:
The system adds the CCN (Container Control Number) from WORK-M10-12-DATA to the email text
β Consolidated Acceptance Criteria
- The system formats email content → the system adds the load/empty code from GCUSRT-VID10-LOAD-EMPTY-CDE to the email 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_AddLoadEmptyIndicator(["Start Step"])
E_AddLoadEmptyIndicator(["End Step"])
N_AddLoadEmptyIndicator_Node0{"The system formats email content"}:::decision
N_AddLoadEmptyIndicator_Node0_action["The system adds the loadempty code
from GCUSRT-VID10-LOAD-EMPTY-CDE to
the email text"]:::main N_AddLoadEmptyIndicator_Node0 -- Yes --> N_AddLoadEmptyIndicator_Node0_action N_AddLoadEmptyIndicator_Node0_action --> E_AddLoadEmptyIndicator S_AddLoadEmptyIndicator --> N_AddLoadEmptyIndicator_Node0 N_AddLoadEmptyIndicator_Node0 -- No --> E_AddLoadEmptyIndicator
from GCUSRT-VID10-LOAD-EMPTY-CDE to
the email text"]:::main N_AddLoadEmptyIndicator_Node0 -- Yes --> N_AddLoadEmptyIndicator_Node0_action N_AddLoadEmptyIndicator_Node0_action --> E_AddLoadEmptyIndicator S_AddLoadEmptyIndicator --> N_AddLoadEmptyIndicator_Node0 N_AddLoadEmptyIndicator_Node0 -- No --> E_AddLoadEmptyIndicator
File: GCX015E.cbl
GIVEN:
Load/empty indicator is available from cargo data
WHEN:
The system formats email content
THEN:
The system adds the load/empty code from GCUSRT-VID10-LOAD-EMPTY-CDE to the email text
β Consolidated Acceptance Criteria
- The system formats email content → the system adds the long description from GCUS-N1002-LONG-DESC to the email 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_AddContentDescription(["Start Step"])
E_AddContentDescription(["End Step"])
N_AddContentDescription_Node0{"The system formats email content"}:::decision
N_AddContentDescription_Node0_action["The system adds the long
description from
GCUS-N1002-LONG-DESC to the email
text"]:::main N_AddContentDescription_Node0 -- Yes --> N_AddContentDescription_Node0_action N_AddContentDescription_Node0_action --> E_AddContentDescription S_AddContentDescription --> N_AddContentDescription_Node0 N_AddContentDescription_Node0 -- No --> E_AddContentDescription
description from
GCUS-N1002-LONG-DESC to the email
text"]:::main N_AddContentDescription_Node0 -- Yes --> N_AddContentDescription_Node0_action N_AddContentDescription_Node0_action --> E_AddContentDescription S_AddContentDescription --> N_AddContentDescription_Node0 N_AddContentDescription_Node0 -- No --> E_AddContentDescription
File: GCX015E.cbl
GIVEN:
Content description is available from cargo data
WHEN:
The system formats email content
THEN:
The system adds the long description from GCUS-N1002-LONG-DESC to the email text
β Consolidated Acceptance Criteria
- The system formats email content → the system concatenates origin station name and province/state code into origin station data for the 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_AddOriginStationInformation(["Start Step"])
E_AddOriginStationInformation(["End Step"])
N_AddOriginStationInformation_Node0{"The system formats email content"}:::decision
N_AddOriginStationInformation_Node0_action["The system concatenates origin
station name and provincestate code
into origin station data for the
email"]:::main N_AddOriginStationInformation_Node0 -- Yes --> N_AddOriginStationInformation_Node0_action N_AddOriginStationInformation_Node0_action --> E_AddOriginStationInformation S_AddOriginStationInformation --> N_AddOriginStationInformation_Node0 N_AddOriginStationInformation_Node0 -- No --> E_AddOriginStationInformation
station name and provincestate code
into origin station data for the
email"]:::main N_AddOriginStationInformation_Node0 -- Yes --> N_AddOriginStationInformation_Node0_action N_AddOriginStationInformation_Node0_action --> E_AddOriginStationInformation S_AddOriginStationInformation --> N_AddOriginStationInformation_Node0 N_AddOriginStationInformation_Node0 -- No --> E_AddOriginStationInformation
File: GCX015E.cbl
GIVEN:
Origin station information is available from shipment data
WHEN:
The system formats email content
THEN:
- The system concatenates origin station name
- Province/state code into origin station data for the email
β Consolidated Acceptance Criteria
- The system formats email content → the system concatenates destination station name and province/state code into destination station data for the 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_AddDestinationStationInformation(["Start Step"])
E_AddDestinationStationInformation(["End Step"])
N_AddDestinationStationInformation_Node0{"The system formats email content"}:::decision
N_AddDestinationStationInformation_Node0_action["The system concatenates destination
station name and provincestate code
into destination station data for
the email"]:::main N_AddDestinationStationInformation_Node0 -- Yes --> N_AddDestinationStationInformation_Node0_action N_AddDestinationStationInformation_Node0_action --> E_AddDestinationStationInformation S_AddDestinationStationInformation --> N_AddDestinationStationInformation_Node0 N_AddDestinationStationInformation_Node0 -- No --> E_AddDestinationStationInformation
station name and provincestate code
into destination station data for
the email"]:::main N_AddDestinationStationInformation_Node0 -- Yes --> N_AddDestinationStationInformation_Node0_action N_AddDestinationStationInformation_Node0_action --> E_AddDestinationStationInformation S_AddDestinationStationInformation --> N_AddDestinationStationInformation_Node0 N_AddDestinationStationInformation_Node0 -- No --> E_AddDestinationStationInformation
File: GCX015E.cbl
GIVEN:
Destination station information is available from shipment data
WHEN:
The system formats email content
THEN:
- The system concatenates destination station name
- Province/state code into destination station data for the email
β Consolidated Acceptance Criteria
- The system formats email content → the system adds the consignee name to the email 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_AddConsigneeInformation(["Start Step"])
E_AddConsigneeInformation(["End Step"])
N_AddConsigneeInformation_Node0{"The system formats email content"}:::decision
N_AddConsigneeInformation_Node0_action["The system adds the consignee name
to the email text"]:::main N_AddConsigneeInformation_Node0 -- Yes --> N_AddConsigneeInformation_Node0_action N_AddConsigneeInformation_Node0_action --> E_AddConsigneeInformation S_AddConsigneeInformation --> N_AddConsigneeInformation_Node0 N_AddConsigneeInformation_Node0 -- No --> E_AddConsigneeInformation
to the email text"]:::main N_AddConsigneeInformation_Node0 -- Yes --> N_AddConsigneeInformation_Node0_action N_AddConsigneeInformation_Node0_action --> E_AddConsigneeInformation S_AddConsigneeInformation --> N_AddConsigneeInformation_Node0 N_AddConsigneeInformation_Node0 -- No --> E_AddConsigneeInformation
File: GCX015E.cbl
GIVEN:
Consignee information was found in cargo segments
WHEN:
The system formats email content
THEN:
The system adds the consignee name to the email text
β Consolidated Acceptance Criteria
- The system formats email content → the system adds the free-form message from K1-02-FREE-FORM-MESSAGE as the CBP warning message data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCBPWarningMessage(["Start Step"])
E_AddCBPWarningMessage(["End Step"])
N_AddCBPWarningMessage_Node0{"The system formats email content"}:::decision
N_AddCBPWarningMessage_Node0_action["The system adds the free-form
message from K1-02-FREE-FORM-MESSAGE
as the CBP warning message data"]:::main N_AddCBPWarningMessage_Node0 -- Yes --> N_AddCBPWarningMessage_Node0_action N_AddCBPWarningMessage_Node0_action --> E_AddCBPWarningMessage S_AddCBPWarningMessage --> N_AddCBPWarningMessage_Node0 N_AddCBPWarningMessage_Node0 -- No --> E_AddCBPWarningMessage
message from K1-02-FREE-FORM-MESSAGE
as the CBP warning message data"]:::main N_AddCBPWarningMessage_Node0 -- Yes --> N_AddCBPWarningMessage_Node0_action N_AddCBPWarningMessage_Node0_action --> E_AddCBPWarningMessage S_AddCBPWarningMessage --> N_AddCBPWarningMessage_Node0 N_AddCBPWarningMessage_Node0 -- No --> E_AddCBPWarningMessage
File: GCX015E.cbl
GIVEN:
K1 segment contains a CBP warning message
WHEN:
The system formats email content
THEN:
The system adds the free-form message from K1-02-FREE-FORM-MESSAGE as the CBP warning message data
β Consolidated Acceptance Criteria
- The system formats email content → the system formats date from machine century, K3-01-DATE, and time from K3-01-TIME into a readable timestamp and adds it to the 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_AddDateandTimeInformation(["Start Step"])
E_AddDateandTimeInformation(["End Step"])
N_AddDateandTimeInformation_Node0{"The system formats email content"}:::decision
N_AddDateandTimeInformation_Node0_action["The system formats date from
machine century, K3-01-DATE, and
time from K3-01-TIME into a readable
timestamp and adds it to the email"]:::main N_AddDateandTimeInformation_Node0 -- Yes --> N_AddDateandTimeInformation_Node0_action N_AddDateandTimeInformation_Node0_action --> E_AddDateandTimeInformation S_AddDateandTimeInformation --> N_AddDateandTimeInformation_Node0 N_AddDateandTimeInformation_Node0 -- No --> E_AddDateandTimeInformation
machine century, K3-01-DATE, and
time from K3-01-TIME into a readable
timestamp and adds it to the email"]:::main N_AddDateandTimeInformation_Node0 -- Yes --> N_AddDateandTimeInformation_Node0_action N_AddDateandTimeInformation_Node0_action --> E_AddDateandTimeInformation S_AddDateandTimeInformation --> N_AddDateandTimeInformation_Node0 N_AddDateandTimeInformation_Node0 -- No --> E_AddDateandTimeInformation
File: GCX015E.cbl
GIVEN:
K3 segment contains date and time information
WHEN:
The system formats email content
THEN:
- The system formats date from machine century, k3-01-date, and time from k3-01-time into a readable timestamp
- Adds it to the email
β Consolidated Acceptance Criteria
- The system completes email formatting → the system adds predefined footer text to the email content
- The system completes the email structure → footer text is placed at email text line 20
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddFooterText(["Start Step"])
E_AddFooterText(["End Step"])
N_AddFooterText_Node0{"The system completes email
formatting"}:::decision N_AddFooterText_Node0_action["The system adds predefined footer
text to the email content"]:::main N_AddFooterText_Node0 -- Yes --> N_AddFooterText_Node0_action N_AddFooterText_Node0_action --> E_AddFooterText S_AddFooterText --> N_AddFooterText_Node0 N_AddFooterText_Node1{"The system completes the email
structure"}:::decision N_AddFooterText_Node1_action["Footer text is placed at email text
line 20"]:::main N_AddFooterText_Node1 -- Yes --> N_AddFooterText_Node1_action N_AddFooterText_Node1_action --> E_AddFooterText N_AddFooterText_Node0 -- No --> N_AddFooterText_Node1 N_AddFooterText_Node1 -- No --> E_AddFooterText
formatting"}:::decision N_AddFooterText_Node0_action["The system adds predefined footer
text to the email content"]:::main N_AddFooterText_Node0 -- Yes --> N_AddFooterText_Node0_action N_AddFooterText_Node0_action --> E_AddFooterText S_AddFooterText --> N_AddFooterText_Node0 N_AddFooterText_Node1{"The system completes the email
structure"}:::decision N_AddFooterText_Node1_action["Footer text is placed at email text
line 20"]:::main N_AddFooterText_Node1 -- Yes --> N_AddFooterText_Node1_action N_AddFooterText_Node1_action --> E_AddFooterText N_AddFooterText_Node0 -- No --> N_AddFooterText_Node1 N_AddFooterText_Node1 -- No --> E_AddFooterText
File: GCX015E.cbl
GIVEN:
Email content is being finalized
WHEN:
The system completes email formatting
THEN:
The system adds predefined footer text to the email content
File: GCX015E.cbl
GIVEN:
Email warning content is being finalized
WHEN:
The system completes the email structure
THEN:
Footer text is placed at email text line 20
β Consolidated Acceptance Criteria
- The system determines email recipient → if broker uses internet (GCSTBRT-BK-USE-INTERNET = 'Y'), set email recipient to freight forwarder internet address, otherwise use default system 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_SendtoFreightForwarder(["Start Step"])
E_SendtoFreightForwarder(["End Step"])
N_SendtoFreightForwarder_Node0{"The system determines email
recipient"}:::decision N_SendtoFreightForwarder_Node0_action["If broker uses internet
GCSTBRT-BK-USE-INTERNET Y , set
email recipient to freight forwarder
internet address, otherwise use
default system address"]:::main N_SendtoFreightForwarder_Node0 -- Yes --> N_SendtoFreightForwarder_Node0_action N_SendtoFreightForwarder_Node0_action --> E_SendtoFreightForwarder S_SendtoFreightForwarder --> N_SendtoFreightForwarder_Node0 N_SendtoFreightForwarder_Node0 -- No --> E_SendtoFreightForwarder
recipient"}:::decision N_SendtoFreightForwarder_Node0_action["If broker uses internet
GCSTBRT-BK-USE-INTERNET Y , set
email recipient to freight forwarder
internet address, otherwise use
default system address"]:::main N_SendtoFreightForwarder_Node0 -- Yes --> N_SendtoFreightForwarder_Node0_action N_SendtoFreightForwarder_Node0_action --> E_SendtoFreightForwarder S_SendtoFreightForwarder --> N_SendtoFreightForwarder_Node0 N_SendtoFreightForwarder_Node0 -- No --> E_SendtoFreightForwarder
File: GCX015E.cbl
GIVEN:
Broker contact information has been retrieved
WHEN:
The system determines email recipient
THEN:
If broker uses internet (GCSTBRT-BK-USE-INTERNET = 'Y'), set email recipient to freight forwarder internet address, otherwise use default system address
β Consolidated Acceptance Criteria
- The system sets email recipient → the system sets email destination to 'EXTMAIL' and includes freight forwarder internet address in email header, and sets freight forwarder email 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_SetEmailRecipienttoFreightForwarderInternetAddress(["Start Step"])
E_SetEmailRecipienttoFreightForwarderInternetAddress(["End Step"])
N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0{"The system sets email recipient"}:::decision
N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0_action["The system sets email destination
to EXTMAIL and includes freight
forwarder internet address in email
header, and sets freight forwarder
email flag"]:::main N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0 -- Yes --> N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0_action N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0_action --> E_SetEmailRecipienttoFreightForwarderInternetAddress S_SetEmailRecipienttoFreightForwarderInternetAddress --> N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0 N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0 -- No --> E_SetEmailRecipienttoFreightForwarderInternetAddress
to EXTMAIL and includes freight
forwarder internet address in email
header, and sets freight forwarder
email flag"]:::main N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0 -- Yes --> N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0_action N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0_action --> E_SetEmailRecipienttoFreightForwarderInternetAddress S_SetEmailRecipienttoFreightForwarderInternetAddress --> N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0 N_SetEmailRecipienttoFreightForwarderInternetAddress_Node0 -- No --> E_SetEmailRecipienttoFreightForwarderInternetAddress
File: GCX015E.cbl
GIVEN:
Freight forwarder uses internet communication and has valid internet address
WHEN:
The system sets email recipient
THEN:
The system sets email destination to 'EXTMAIL' and includes freight forwarder internet address in email header, and sets freight forwarder email flag
β Consolidated Acceptance Criteria
- The system sets email recipient → the system sets email recipient to default system 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_SetEmailRecipienttoDefaultSystemAddress(["Start Step"])
E_SetEmailRecipienttoDefaultSystemAddress(["End Step"])
N_SetEmailRecipienttoDefaultSystemAddress_Node0{"The system sets email recipient"}:::decision
N_SetEmailRecipienttoDefaultSystemAddress_Node0_action["The system sets email recipient to
default system Merlin ID"]:::main N_SetEmailRecipienttoDefaultSystemAddress_Node0 -- Yes --> N_SetEmailRecipienttoDefaultSystemAddress_Node0_action N_SetEmailRecipienttoDefaultSystemAddress_Node0_action --> E_SetEmailRecipienttoDefaultSystemAddress S_SetEmailRecipienttoDefaultSystemAddress --> N_SetEmailRecipienttoDefaultSystemAddress_Node0 N_SetEmailRecipienttoDefaultSystemAddress_Node0 -- No --> E_SetEmailRecipienttoDefaultSystemAddress
default system Merlin ID"]:::main N_SetEmailRecipienttoDefaultSystemAddress_Node0 -- Yes --> N_SetEmailRecipienttoDefaultSystemAddress_Node0_action N_SetEmailRecipienttoDefaultSystemAddress_Node0_action --> E_SetEmailRecipienttoDefaultSystemAddress S_SetEmailRecipienttoDefaultSystemAddress --> N_SetEmailRecipienttoDefaultSystemAddress_Node0 N_SetEmailRecipienttoDefaultSystemAddress_Node0 -- No --> E_SetEmailRecipienttoDefaultSystemAddress
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
Freight forwarder does not use internet communication or internet address is not available
WHEN:
The system sets email recipient
THEN:
The system sets email recipient to default system Merlin ID
β Consolidated Acceptance Criteria
- The system sends the email warning → the system calls Merlin email service to send the message and sets do-not-send-warning flag to prevent duplicate sends
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendEmailMessage(["Start Step"])
E_SendEmailMessage(["End Step"])
N_SendEmailMessage_Node0{"The system sends the email warning"}:::decision
N_SendEmailMessage_Node0_action["The system calls Merlin email
service to send the message and sets
do-not-send-warning flag to prevent
duplicate sends"]:::main N_SendEmailMessage_Node0 -- Yes --> N_SendEmailMessage_Node0_action N_SendEmailMessage_Node0_action --> E_SendEmailMessage S_SendEmailMessage --> N_SendEmailMessage_Node0 N_SendEmailMessage_Node0 -- No --> E_SendEmailMessage
service to send the message and sets
do-not-send-warning flag to prevent
duplicate sends"]:::main N_SendEmailMessage_Node0 -- Yes --> N_SendEmailMessage_Node0_action N_SendEmailMessage_Node0_action --> E_SendEmailMessage S_SendEmailMessage --> N_SendEmailMessage_Node0 N_SendEmailMessage_Node0 -- No --> E_SendEmailMessage
File: GCX015E.cbl
GIVEN:
Email content is formatted and recipient is determined
WHEN:
The system sends the email warning
THEN:
- The system calls merlin email service to send the message
- Sets do-not-send-warning flag to prevent duplicate sends
β Consolidated Acceptance Criteria
- The system prepares the email notification → the email subject line is set to the predefined warning subject 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_SetEmailSubjectLine(["Start Step"])
E_SetEmailSubjectLine(["End Step"])
N_SetEmailSubjectLine_Node0{"The system prepares the email
notification"}:::decision N_SetEmailSubjectLine_Node0_action["The email subject line is set to
the predefined warning subject
format"]:::main N_SetEmailSubjectLine_Node0 -- Yes --> N_SetEmailSubjectLine_Node0_action N_SetEmailSubjectLine_Node0_action --> E_SetEmailSubjectLine S_SetEmailSubjectLine --> N_SetEmailSubjectLine_Node0 N_SetEmailSubjectLine_Node0 -- No --> E_SetEmailSubjectLine
notification"}:::decision N_SetEmailSubjectLine_Node0_action["The email subject line is set to
the predefined warning subject
format"]:::main N_SetEmailSubjectLine_Node0 -- Yes --> N_SetEmailSubjectLine_Node0_action N_SetEmailSubjectLine_Node0_action --> E_SetEmailSubjectLine S_SetEmailSubjectLine --> N_SetEmailSubjectLine_Node0 N_SetEmailSubjectLine_Node0 -- No --> E_SetEmailSubjectLine
File: GCX015E.cbl
GIVEN:
A CBP warning message needs to be sent via email
WHEN:
The system prepares the email notification
THEN:
The email subject line is set to the predefined warning subject format
β Consolidated Acceptance Criteria
- The system builds the email content structure → three header lines are formatted and positioned in the email body at lines 2, 3, and 5
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmailHeaderLines(["Start Step"])
E_FormatEmailHeaderLines(["End Step"])
N_FormatEmailHeaderLines_Node0{"The system builds the email content
structure"}:::decision N_FormatEmailHeaderLines_Node0_action["Three header lines are formatted
and positioned in the email body at
lines 2, 3, and 5"]:::main N_FormatEmailHeaderLines_Node0 -- Yes --> N_FormatEmailHeaderLines_Node0_action N_FormatEmailHeaderLines_Node0_action --> E_FormatEmailHeaderLines S_FormatEmailHeaderLines --> N_FormatEmailHeaderLines_Node0 N_FormatEmailHeaderLines_Node0 -- No --> E_FormatEmailHeaderLines
structure"}:::decision N_FormatEmailHeaderLines_Node0_action["Three header lines are formatted
and positioned in the email body at
lines 2, 3, and 5"]:::main N_FormatEmailHeaderLines_Node0 -- Yes --> N_FormatEmailHeaderLines_Node0_action N_FormatEmailHeaderLines_Node0_action --> E_FormatEmailHeaderLines S_FormatEmailHeaderLines --> N_FormatEmailHeaderLines_Node0 N_FormatEmailHeaderLines_Node0 -- No --> E_FormatEmailHeaderLines
File: GCX015E.cbl
GIVEN:
An email warning is being constructed
WHEN:
The system builds the email content structure
THEN:
- Three header lines are formatted
- Positioned in the email body at lines 2, 3, and 5
β Consolidated Acceptance Criteria
- The system builds email warning content → the equipment identification number is extracted from the cargo record field RT071-CAR-ID-NUM-INDEX
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentInformation(["Start Step"])
E_ExtractEquipmentInformation(["End Step"])
N_ExtractEquipmentInformation_Node0{"The system builds email warning
content"}:::decision N_ExtractEquipmentInformation_Node0_action["The equipment identification number
is extracted from the cargo record
field RT071-CAR-ID-NUM-INDEX"]:::main N_ExtractEquipmentInformation_Node0 -- Yes --> N_ExtractEquipmentInformation_Node0_action N_ExtractEquipmentInformation_Node0_action --> E_ExtractEquipmentInformation S_ExtractEquipmentInformation --> N_ExtractEquipmentInformation_Node0 N_ExtractEquipmentInformation_Node0 -- No --> E_ExtractEquipmentInformation
content"}:::decision N_ExtractEquipmentInformation_Node0_action["The equipment identification number
is extracted from the cargo record
field RT071-CAR-ID-NUM-INDEX"]:::main N_ExtractEquipmentInformation_Node0 -- Yes --> N_ExtractEquipmentInformation_Node0_action N_ExtractEquipmentInformation_Node0_action --> E_ExtractEquipmentInformation S_ExtractEquipmentInformation --> N_ExtractEquipmentInformation_Node0 N_ExtractEquipmentInformation_Node0 -- No --> E_ExtractEquipmentInformation
File: GCX015E.cbl
GIVEN:
A cargo record with equipment information exists
WHEN:
The system builds email warning content
THEN:
The equipment identification number is extracted from the cargo record field RT071-CAR-ID-NUM-INDEX
β Consolidated Acceptance Criteria
- The system formats the email content → the equipment data is formatted into equipment line variables and placed at email text line 7
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentLineData(["Start Step"])
E_FormatEquipmentLineData(["End Step"])
N_FormatEquipmentLineData_Node0{"The system formats the email
content"}:::decision N_FormatEquipmentLineData_Node0_action["The equipment data is formatted
into equipment line variables and
placed at email text line 7"]:::main N_FormatEquipmentLineData_Node0 -- Yes --> N_FormatEquipmentLineData_Node0_action N_FormatEquipmentLineData_Node0_action --> E_FormatEquipmentLineData S_FormatEquipmentLineData --> N_FormatEquipmentLineData_Node0 N_FormatEquipmentLineData_Node0 -- No --> E_FormatEquipmentLineData
content"}:::decision N_FormatEquipmentLineData_Node0_action["The equipment data is formatted
into equipment line variables and
placed at email text line 7"]:::main N_FormatEquipmentLineData_Node0 -- Yes --> N_FormatEquipmentLineData_Node0_action N_FormatEquipmentLineData_Node0_action --> E_FormatEquipmentLineData S_FormatEquipmentLineData --> N_FormatEquipmentLineData_Node0 N_FormatEquipmentLineData_Node0 -- No --> E_FormatEquipmentLineData
File: GCX015E.cbl
GIVEN:
Equipment identification information has been extracted
WHEN:
The system formats the email content
THEN:
- The equipment data is formatted into equipment line variables
- Placed at email text line 7
β Consolidated Acceptance Criteria
- The system builds email warning content → road index, station index, and waybill index are concatenated from RT072 fields into waybill line 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_ExtractWaybillInformation(["Start Step"])
E_ExtractWaybillInformation(["End Step"])
N_ExtractWaybillInformation_Node0{"The system builds email warning
content"}:::decision N_ExtractWaybillInformation_Node0_action["Road index, station index, and
waybill index are concatenated from
RT072 fields into waybill line data"]:::main N_ExtractWaybillInformation_Node0 -- Yes --> N_ExtractWaybillInformation_Node0_action N_ExtractWaybillInformation_Node0_action --> E_ExtractWaybillInformation S_ExtractWaybillInformation --> N_ExtractWaybillInformation_Node0 N_ExtractWaybillInformation_Node0 -- No --> E_ExtractWaybillInformation
content"}:::decision N_ExtractWaybillInformation_Node0_action["Road index, station index, and
waybill index are concatenated from
RT072 fields into waybill line data"]:::main N_ExtractWaybillInformation_Node0 -- Yes --> N_ExtractWaybillInformation_Node0_action N_ExtractWaybillInformation_Node0_action --> E_ExtractWaybillInformation S_ExtractWaybillInformation --> N_ExtractWaybillInformation_Node0 N_ExtractWaybillInformation_Node0 -- No --> E_ExtractWaybillInformation
File: GCX015E.cbl
GIVEN:
A cargo record contains waybill reference data
WHEN:
The system builds email warning content
THEN:
Road index, station index, and waybill index are concatenated from RT072 fields into waybill line data
β Consolidated Acceptance Criteria
- The system formats the email content → the waybill line variables are placed at email text line 8
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatWaybillLineData(["Start Step"])
E_FormatWaybillLineData(["End Step"])
N_FormatWaybillLineData_Node0{"The system formats the email
content"}:::decision N_FormatWaybillLineData_Node0_action["The waybill line variables are
placed at email text line 8"]:::main N_FormatWaybillLineData_Node0 -- Yes --> N_FormatWaybillLineData_Node0_action N_FormatWaybillLineData_Node0_action --> E_FormatWaybillLineData S_FormatWaybillLineData --> N_FormatWaybillLineData_Node0 N_FormatWaybillLineData_Node0 -- No --> E_FormatWaybillLineData
content"}:::decision N_FormatWaybillLineData_Node0_action["The waybill line variables are
placed at email text line 8"]:::main N_FormatWaybillLineData_Node0 -- Yes --> N_FormatWaybillLineData_Node0_action N_FormatWaybillLineData_Node0_action --> E_FormatWaybillLineData S_FormatWaybillLineData --> N_FormatWaybillLineData_Node0 N_FormatWaybillLineData_Node0 -- No --> E_FormatWaybillLineData
File: GCX015E.cbl
GIVEN:
Waybill information has been extracted and concatenated
WHEN:
The system formats the email content
THEN:
The waybill line variables are placed at email text line 8
β Consolidated Acceptance Criteria
- The system builds email warning content → the CCN line variables are formatted and placed at email text line 9
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCCNKeyInformation(["Start Step"])
E_FormatCCNKeyInformation(["End Step"])
N_FormatCCNKeyInformation_Node0{"The system builds email warning
content"}:::decision N_FormatCCNKeyInformation_Node0_action["The CCN line variables are
formatted and placed at email text
line 9"]:::main N_FormatCCNKeyInformation_Node0 -- Yes --> N_FormatCCNKeyInformation_Node0_action N_FormatCCNKeyInformation_Node0_action --> E_FormatCCNKeyInformation S_FormatCCNKeyInformation --> N_FormatCCNKeyInformation_Node0 N_FormatCCNKeyInformation_Node0 -- No --> E_FormatCCNKeyInformation
content"}:::decision N_FormatCCNKeyInformation_Node0_action["The CCN line variables are
formatted and placed at email text
line 9"]:::main N_FormatCCNKeyInformation_Node0 -- Yes --> N_FormatCCNKeyInformation_Node0_action N_FormatCCNKeyInformation_Node0_action --> E_FormatCCNKeyInformation S_FormatCCNKeyInformation --> N_FormatCCNKeyInformation_Node0 N_FormatCCNKeyInformation_Node0 -- No --> E_FormatCCNKeyInformation
File: GCX015E.cbl
GIVEN:
The M10-12 work data contains CCN information
WHEN:
The system builds email warning content
THEN:
- The ccn line variables are formatted
- Placed at email text line 9
β Consolidated Acceptance Criteria
- The system builds email warning content → the load/empty code is extracted from VID10-LOAD-EMPTY-CDE 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_ExtractLoadEmptyIndicator(["Start Step"])
E_ExtractLoadEmptyIndicator(["End Step"])
N_ExtractLoadEmptyIndicator_Node0{"The system builds email warning
content"}:::decision N_ExtractLoadEmptyIndicator_Node0_action["The loadempty code is extracted
from VID10-LOAD-EMPTY-CDE field"]:::main N_ExtractLoadEmptyIndicator_Node0 -- Yes --> N_ExtractLoadEmptyIndicator_Node0_action N_ExtractLoadEmptyIndicator_Node0_action --> E_ExtractLoadEmptyIndicator S_ExtractLoadEmptyIndicator --> N_ExtractLoadEmptyIndicator_Node0 N_ExtractLoadEmptyIndicator_Node0 -- No --> E_ExtractLoadEmptyIndicator
content"}:::decision N_ExtractLoadEmptyIndicator_Node0_action["The loadempty code is extracted
from VID10-LOAD-EMPTY-CDE field"]:::main N_ExtractLoadEmptyIndicator_Node0 -- Yes --> N_ExtractLoadEmptyIndicator_Node0_action N_ExtractLoadEmptyIndicator_Node0_action --> E_ExtractLoadEmptyIndicator S_ExtractLoadEmptyIndicator --> N_ExtractLoadEmptyIndicator_Node0 N_ExtractLoadEmptyIndicator_Node0 -- No --> E_ExtractLoadEmptyIndicator
File: GCX015E.cbl
GIVEN:
A cargo record contains equipment load/empty status
WHEN:
The system builds email warning content
THEN:
The load/empty code is extracted from VID10-LOAD-EMPTY-CDE field
β Consolidated Acceptance Criteria
- The system formats the email content → the load/empty indicator variables are placed at email text line 10
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatLoadEmptyLine(["Start Step"])
E_FormatLoadEmptyLine(["End Step"])
N_FormatLoadEmptyLine_Node0{"The system formats the email
content"}:::decision N_FormatLoadEmptyLine_Node0_action["The loadempty indicator variables
are placed at email text line 10"]:::main N_FormatLoadEmptyLine_Node0 -- Yes --> N_FormatLoadEmptyLine_Node0_action N_FormatLoadEmptyLine_Node0_action --> E_FormatLoadEmptyLine S_FormatLoadEmptyLine --> N_FormatLoadEmptyLine_Node0 N_FormatLoadEmptyLine_Node0 -- No --> E_FormatLoadEmptyLine
content"}:::decision N_FormatLoadEmptyLine_Node0_action["The loadempty indicator variables
are placed at email text line 10"]:::main N_FormatLoadEmptyLine_Node0 -- Yes --> N_FormatLoadEmptyLine_Node0_action N_FormatLoadEmptyLine_Node0_action --> E_FormatLoadEmptyLine S_FormatLoadEmptyLine --> N_FormatLoadEmptyLine_Node0 N_FormatLoadEmptyLine_Node0 -- No --> E_FormatLoadEmptyLine
File: GCX015E.cbl
GIVEN:
Load/empty indicator has been extracted
WHEN:
The system formats the email content
THEN:
The load/empty indicator variables are placed at email text line 10
β Consolidated Acceptance Criteria
- The system builds email warning content → the long description is extracted from GCUS-N1002-LONG-DESC 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_ExtractContentDescription(["Start Step"])
E_ExtractContentDescription(["End Step"])
N_ExtractContentDescription_Node0{"The system builds email warning
content"}:::decision N_ExtractContentDescription_Node0_action["The long description is extracted
from GCUS-N1002-LONG-DESC field"]:::main N_ExtractContentDescription_Node0 -- Yes --> N_ExtractContentDescription_Node0_action N_ExtractContentDescription_Node0_action --> E_ExtractContentDescription S_ExtractContentDescription --> N_ExtractContentDescription_Node0 N_ExtractContentDescription_Node0 -- No --> E_ExtractContentDescription
content"}:::decision N_ExtractContentDescription_Node0_action["The long description is extracted
from GCUS-N1002-LONG-DESC field"]:::main N_ExtractContentDescription_Node0 -- Yes --> N_ExtractContentDescription_Node0_action N_ExtractContentDescription_Node0_action --> E_ExtractContentDescription S_ExtractContentDescription --> N_ExtractContentDescription_Node0 N_ExtractContentDescription_Node0 -- No --> E_ExtractContentDescription
File: GCX015E.cbl
GIVEN:
A cargo record contains content description information
WHEN:
The system builds email warning content
THEN:
The long description is extracted from GCUS-N1002-LONG-DESC field
β Consolidated Acceptance Criteria
- The system formats the email content → the content variables are placed at email text line 11
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatContentLine(["Start Step"])
E_FormatContentLine(["End Step"])
N_FormatContentLine_Node0{"The system formats the email
content"}:::decision N_FormatContentLine_Node0_action["The content variables are placed at
email text line 11"]:::main N_FormatContentLine_Node0 -- Yes --> N_FormatContentLine_Node0_action N_FormatContentLine_Node0_action --> E_FormatContentLine S_FormatContentLine --> N_FormatContentLine_Node0 N_FormatContentLine_Node0 -- No --> E_FormatContentLine
content"}:::decision N_FormatContentLine_Node0_action["The content variables are placed at
email text line 11"]:::main N_FormatContentLine_Node0 -- Yes --> N_FormatContentLine_Node0_action N_FormatContentLine_Node0_action --> E_FormatContentLine S_FormatContentLine --> N_FormatContentLine_Node0 N_FormatContentLine_Node0 -- No --> E_FormatContentLine
File: GCX015E.cbl
GIVEN:
Content description has been extracted
WHEN:
The system formats the email content
THEN:
The content variables are placed at email text line 11
β Consolidated Acceptance Criteria
- The system builds email warning content → machine century is combined with K3-01-DATE to form year, month and day are extracted, and hour and minute are extracted from K3-01-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_FormatDateandTime(["Start Step"])
E_FormatDateandTime(["End Step"])
N_FormatDateandTime_Node0{"The system builds email warning
content"}:::decision N_FormatDateandTime_Node0_action["Machine century is combined with
K3-01-DATE to form year, month and
day are extracted, and hour and
minute are extracted from K3-01-TIME"]:::main N_FormatDateandTime_Node0 -- Yes --> N_FormatDateandTime_Node0_action N_FormatDateandTime_Node0_action --> E_FormatDateandTime S_FormatDateandTime --> N_FormatDateandTime_Node0 N_FormatDateandTime_Node0 -- No --> E_FormatDateandTime
content"}:::decision N_FormatDateandTime_Node0_action["Machine century is combined with
K3-01-DATE to form year, month and
day are extracted, and hour and
minute are extracted from K3-01-TIME"]:::main N_FormatDateandTime_Node0 -- Yes --> N_FormatDateandTime_Node0_action N_FormatDateandTime_Node0_action --> E_FormatDateandTime S_FormatDateandTime --> N_FormatDateandTime_Node0 N_FormatDateandTime_Node0 -- No --> E_FormatDateandTime
File: GCX015E.cbl
GIVEN:
K3 segment contains date and time information
WHEN:
The system builds email warning content
THEN:
- Machine century is combined with k3-01-date to form year, month
- Day are extracted, and hour
- Minute are extracted from k3-01-time
β Consolidated Acceptance Criteria
- The system builds email warning content → origin station name and province/state code are concatenated with comma separator into origin 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_ExtractOriginStationInfo(["Start Step"])
E_ExtractOriginStationInfo(["End Step"])
N_ExtractOriginStationInfo_Node0{"The system builds email warning
content"}:::decision N_ExtractOriginStationInfo_Node0_action["Origin station name and
provincestate code are concatenated
with comma separator into origin
station data"]:::main N_ExtractOriginStationInfo_Node0 -- Yes --> N_ExtractOriginStationInfo_Node0_action N_ExtractOriginStationInfo_Node0_action --> E_ExtractOriginStationInfo S_ExtractOriginStationInfo --> N_ExtractOriginStationInfo_Node0 N_ExtractOriginStationInfo_Node0 -- No --> E_ExtractOriginStationInfo
content"}:::decision N_ExtractOriginStationInfo_Node0_action["Origin station name and
provincestate code are concatenated
with comma separator into origin
station data"]:::main N_ExtractOriginStationInfo_Node0 -- Yes --> N_ExtractOriginStationInfo_Node0_action N_ExtractOriginStationInfo_Node0_action --> E_ExtractOriginStationInfo S_ExtractOriginStationInfo --> N_ExtractOriginStationInfo_Node0 N_ExtractOriginStationInfo_Node0 -- No --> E_ExtractOriginStationInfo
File: GCX015E.cbl
GIVEN:
Shipment record contains origin station information
WHEN:
The system builds email warning content
THEN:
- Origin station name
- Province/state code are concatenated with comma separator into origin station data
β Consolidated Acceptance Criteria
- The system formats the email content → the origin station variables are placed at email text line 12
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatOriginStationLine(["Start Step"])
E_FormatOriginStationLine(["End Step"])
N_FormatOriginStationLine_Node0{"The system formats the email
content"}:::decision N_FormatOriginStationLine_Node0_action["The origin station variables are
placed at email text line 12"]:::main N_FormatOriginStationLine_Node0 -- Yes --> N_FormatOriginStationLine_Node0_action N_FormatOriginStationLine_Node0_action --> E_FormatOriginStationLine S_FormatOriginStationLine --> N_FormatOriginStationLine_Node0 N_FormatOriginStationLine_Node0 -- No --> E_FormatOriginStationLine
content"}:::decision N_FormatOriginStationLine_Node0_action["The origin station variables are
placed at email text line 12"]:::main N_FormatOriginStationLine_Node0 -- Yes --> N_FormatOriginStationLine_Node0_action N_FormatOriginStationLine_Node0_action --> E_FormatOriginStationLine S_FormatOriginStationLine --> N_FormatOriginStationLine_Node0 N_FormatOriginStationLine_Node0 -- No --> E_FormatOriginStationLine
File: GCX015E.cbl
GIVEN:
Origin station information has been extracted and formatted
WHEN:
The system formats the email content
THEN:
The origin station variables are placed at email text line 12
β Consolidated Acceptance Criteria
- The system builds email warning content → destination station name and province/state code are concatenated with comma separator into destination 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_ExtractDestinationStationInfo(["Start Step"])
E_ExtractDestinationStationInfo(["End Step"])
N_ExtractDestinationStationInfo_Node0{"The system builds email warning
content"}:::decision N_ExtractDestinationStationInfo_Node0_action["Destination station name and
provincestate code are concatenated
with comma separator into
destination station data"]:::main N_ExtractDestinationStationInfo_Node0 -- Yes --> N_ExtractDestinationStationInfo_Node0_action N_ExtractDestinationStationInfo_Node0_action --> E_ExtractDestinationStationInfo S_ExtractDestinationStationInfo --> N_ExtractDestinationStationInfo_Node0 N_ExtractDestinationStationInfo_Node0 -- No --> E_ExtractDestinationStationInfo
content"}:::decision N_ExtractDestinationStationInfo_Node0_action["Destination station name and
provincestate code are concatenated
with comma separator into
destination station data"]:::main N_ExtractDestinationStationInfo_Node0 -- Yes --> N_ExtractDestinationStationInfo_Node0_action N_ExtractDestinationStationInfo_Node0_action --> E_ExtractDestinationStationInfo S_ExtractDestinationStationInfo --> N_ExtractDestinationStationInfo_Node0 N_ExtractDestinationStationInfo_Node0 -- No --> E_ExtractDestinationStationInfo
File: GCX015E.cbl
GIVEN:
Shipment record contains destination station information
WHEN:
The system builds email warning content
THEN:
- Destination station name
- Province/state code are concatenated with comma separator into destination station data
β Consolidated Acceptance Criteria
- The system formats the email content → the destination station variables are placed at email text line 13
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDestinationStationLine(["Start Step"])
E_FormatDestinationStationLine(["End Step"])
N_FormatDestinationStationLine_Node0{"The system formats the email
content"}:::decision N_FormatDestinationStationLine_Node0_action["The destination station variables
are placed at email text line 13"]:::main N_FormatDestinationStationLine_Node0 -- Yes --> N_FormatDestinationStationLine_Node0_action N_FormatDestinationStationLine_Node0_action --> E_FormatDestinationStationLine S_FormatDestinationStationLine --> N_FormatDestinationStationLine_Node0 N_FormatDestinationStationLine_Node0 -- No --> E_FormatDestinationStationLine
content"}:::decision N_FormatDestinationStationLine_Node0_action["The destination station variables
are placed at email text line 13"]:::main N_FormatDestinationStationLine_Node0 -- Yes --> N_FormatDestinationStationLine_Node0_action N_FormatDestinationStationLine_Node0_action --> E_FormatDestinationStationLine S_FormatDestinationStationLine --> N_FormatDestinationStationLine_Node0 N_FormatDestinationStationLine_Node0 -- No --> E_FormatDestinationStationLine
File: GCX015E.cbl
GIVEN:
Destination station information has been extracted and formatted
WHEN:
The system formats the email content
THEN:
The destination station variables are placed at email text line 13
β Consolidated Acceptance Criteria
- The system formats the email content → the consignee variables are placed at email text line 14
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatConsigneeInformation(["Start Step"])
E_FormatConsigneeInformation(["End Step"])
N_FormatConsigneeInformation_Node0{"The system formats the email
content"}:::decision N_FormatConsigneeInformation_Node0_action["The consignee variables are placed
at email text line 14"]:::main N_FormatConsigneeInformation_Node0 -- Yes --> N_FormatConsigneeInformation_Node0_action N_FormatConsigneeInformation_Node0_action --> E_FormatConsigneeInformation S_FormatConsigneeInformation --> N_FormatConsigneeInformation_Node0 N_FormatConsigneeInformation_Node0 -- No --> E_FormatConsigneeInformation
content"}:::decision N_FormatConsigneeInformation_Node0_action["The consignee variables are placed
at email text line 14"]:::main N_FormatConsigneeInformation_Node0 -- Yes --> N_FormatConsigneeInformation_Node0_action N_FormatConsigneeInformation_Node0_action --> E_FormatConsigneeInformation S_FormatConsigneeInformation --> N_FormatConsigneeInformation_Node0 N_FormatConsigneeInformation_Node0 -- No --> E_FormatConsigneeInformation
File: GCX015E.cbl
GIVEN:
Consignee information has been previously extracted and stored
WHEN:
The system formats the email content
THEN:
The consignee variables are placed at email text line 14
β Consolidated Acceptance Criteria
- The system builds email warning content → the free form message is extracted from K1-02-FREE-FORM-MESSAGE field into CBP warning message data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCBPWarningMessage(["Start Step"])
E_ExtractCBPWarningMessage(["End Step"])
N_ExtractCBPWarningMessage_Node0{"The system builds email warning
content"}:::decision N_ExtractCBPWarningMessage_Node0_action["The free form message is extracted
from K1-02-FREE-FORM-MESSAGE field
into CBP warning message data"]:::main N_ExtractCBPWarningMessage_Node0 -- Yes --> N_ExtractCBPWarningMessage_Node0_action N_ExtractCBPWarningMessage_Node0_action --> E_ExtractCBPWarningMessage S_ExtractCBPWarningMessage --> N_ExtractCBPWarningMessage_Node0 N_ExtractCBPWarningMessage_Node0 -- No --> E_ExtractCBPWarningMessage
content"}:::decision N_ExtractCBPWarningMessage_Node0_action["The free form message is extracted
from K1-02-FREE-FORM-MESSAGE field
into CBP warning message data"]:::main N_ExtractCBPWarningMessage_Node0 -- Yes --> N_ExtractCBPWarningMessage_Node0_action N_ExtractCBPWarningMessage_Node0_action --> E_ExtractCBPWarningMessage S_ExtractCBPWarningMessage --> N_ExtractCBPWarningMessage_Node0 N_ExtractCBPWarningMessage_Node0 -- No --> E_ExtractCBPWarningMessage
File: GCX015E.cbl
GIVEN:
K1 segment contains a free form warning message
WHEN:
The system builds email warning content
THEN:
The free form message is extracted from K1-02-FREE-FORM-MESSAGE field into CBP warning message data
β Consolidated Acceptance Criteria
- The system formats the email content → the CBP warning message variables are placed at email text line 16
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatWarningMessageLine(["Start Step"])
E_FormatWarningMessageLine(["End Step"])
N_FormatWarningMessageLine_Node0{"The system formats the email
content"}:::decision N_FormatWarningMessageLine_Node0_action["The CBP warning message variables
are placed at email text line 16"]:::main N_FormatWarningMessageLine_Node0 -- Yes --> N_FormatWarningMessageLine_Node0_action N_FormatWarningMessageLine_Node0_action --> E_FormatWarningMessageLine S_FormatWarningMessageLine --> N_FormatWarningMessageLine_Node0 N_FormatWarningMessageLine_Node0 -- No --> E_FormatWarningMessageLine
content"}:::decision N_FormatWarningMessageLine_Node0_action["The CBP warning message variables
are placed at email text line 16"]:::main N_FormatWarningMessageLine_Node0 -- Yes --> N_FormatWarningMessageLine_Node0_action N_FormatWarningMessageLine_Node0_action --> E_FormatWarningMessageLine S_FormatWarningMessageLine --> N_FormatWarningMessageLine_Node0 N_FormatWarningMessageLine_Node0 -- No --> E_FormatWarningMessageLine
File: GCX015E.cbl
GIVEN:
CBP warning message has been extracted
WHEN:
The system formats the email content
THEN:
The CBP warning message variables are placed at email text line 16
β Consolidated Acceptance Criteria
- The system builds email warning content → date formatter and time formatter are concatenated with space separator into occurrence data and placed at email text line 17
- The system formats the occurrence date and time for email content → the system concatenates formatted date with formatted time separated by space to create occurrence 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_FormatOccurrenceDateTime(["Start Step"])
E_FormatOccurrenceDateTime(["End Step"])
N_FormatOccurrenceDateTime_Node0{"The system builds email warning
content"}:::decision N_FormatOccurrenceDateTime_Node0_action["Date formatter and time formatter
are concatenated with space
separator into occurrence data and
placed at email text line 17"]:::main N_FormatOccurrenceDateTime_Node0 -- Yes --> N_FormatOccurrenceDateTime_Node0_action N_FormatOccurrenceDateTime_Node0_action --> E_FormatOccurrenceDateTime S_FormatOccurrenceDateTime --> N_FormatOccurrenceDateTime_Node0 N_FormatOccurrenceDateTime_Node1{"The system formats the occurrence
date and time for email content"}:::decision N_FormatOccurrenceDateTime_Node1_action["The system concatenates formatted
date with formatted time separated
by space to create occurrence
timestamp"]:::main N_FormatOccurrenceDateTime_Node1 -- Yes --> N_FormatOccurrenceDateTime_Node1_action N_FormatOccurrenceDateTime_Node1_action --> E_FormatOccurrenceDateTime N_FormatOccurrenceDateTime_Node0 -- No --> N_FormatOccurrenceDateTime_Node1 N_FormatOccurrenceDateTime_Node1 -- No --> E_FormatOccurrenceDateTime
content"}:::decision N_FormatOccurrenceDateTime_Node0_action["Date formatter and time formatter
are concatenated with space
separator into occurrence data and
placed at email text line 17"]:::main N_FormatOccurrenceDateTime_Node0 -- Yes --> N_FormatOccurrenceDateTime_Node0_action N_FormatOccurrenceDateTime_Node0_action --> E_FormatOccurrenceDateTime S_FormatOccurrenceDateTime --> N_FormatOccurrenceDateTime_Node0 N_FormatOccurrenceDateTime_Node1{"The system formats the occurrence
date and time for email content"}:::decision N_FormatOccurrenceDateTime_Node1_action["The system concatenates formatted
date with formatted time separated
by space to create occurrence
timestamp"]:::main N_FormatOccurrenceDateTime_Node1 -- Yes --> N_FormatOccurrenceDateTime_Node1_action N_FormatOccurrenceDateTime_Node1_action --> E_FormatOccurrenceDateTime N_FormatOccurrenceDateTime_Node0 -- No --> N_FormatOccurrenceDateTime_Node1 N_FormatOccurrenceDateTime_Node1 -- No --> E_FormatOccurrenceDateTime
File: GCX015E.cbl
GIVEN:
Date and time components have been formatted
WHEN:
The system builds email warning content
THEN:
- Date formatter
- Time formatter are concatenated with space separator into occurrence data
- Placed at email text line 17
File: GCX015E.cbl
GIVEN:
Date and time components have been extracted from K3 segment
WHEN:
- The system formats the occurrence date
- Time for email content
THEN:
The system concatenates formatted date with formatted time separated by space to create occurrence timestamp
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the century component is extracted and stored in the first 2 positions of the date year 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_ExtractCenturyfromCCMACHINECENTURY(["Start Step"])
E_ExtractCenturyfromCCMACHINECENTURY(["End Step"])
N_ExtractCenturyfromCCMACHINECENTURY_Node0{"Processing email warning message
formatting"}:::decision N_ExtractCenturyfromCCMACHINECENTURY_Node0_action["The century component is extracted
and stored in the first 2 positions
of the date year field"]:::main N_ExtractCenturyfromCCMACHINECENTURY_Node0 -- Yes --> N_ExtractCenturyfromCCMACHINECENTURY_Node0_action N_ExtractCenturyfromCCMACHINECENTURY_Node0_action --> E_ExtractCenturyfromCCMACHINECENTURY S_ExtractCenturyfromCCMACHINECENTURY --> N_ExtractCenturyfromCCMACHINECENTURY_Node0 N_ExtractCenturyfromCCMACHINECENTURY_Node0 -- No --> E_ExtractCenturyfromCCMACHINECENTURY
formatting"}:::decision N_ExtractCenturyfromCCMACHINECENTURY_Node0_action["The century component is extracted
and stored in the first 2 positions
of the date year field"]:::main N_ExtractCenturyfromCCMACHINECENTURY_Node0 -- Yes --> N_ExtractCenturyfromCCMACHINECENTURY_Node0_action N_ExtractCenturyfromCCMACHINECENTURY_Node0_action --> E_ExtractCenturyfromCCMACHINECENTURY S_ExtractCenturyfromCCMACHINECENTURY --> N_ExtractCenturyfromCCMACHINECENTURY_Node0 N_ExtractCenturyfromCCMACHINECENTURY_Node0 -- No --> E_ExtractCenturyfromCCMACHINECENTURY
File: GCX015E.cbl
GIVEN:
The system has access to machine century information
WHEN:
Processing email warning message formatting
THEN:
- The century component is extracted
- Stored in the first 2 positions of the date year field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the year component from positions 1-2 of K3-01-DATE is extracted and stored in positions 3-4 of the date year 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_ExtractYearfromK301DATEpositions12(["Start Step"])
E_ExtractYearfromK301DATEpositions12(["End Step"])
N_ExtractYearfromK301DATEpositions12_Node0{"Processing email warning message
formatting"}:::decision N_ExtractYearfromK301DATEpositions12_Node0_action["The year component from positions
1-2 of K3-01-DATE is extracted and
stored in positions 3-4 of the date
year field"]:::main N_ExtractYearfromK301DATEpositions12_Node0 -- Yes --> N_ExtractYearfromK301DATEpositions12_Node0_action N_ExtractYearfromK301DATEpositions12_Node0_action --> E_ExtractYearfromK301DATEpositions12 S_ExtractYearfromK301DATEpositions12 --> N_ExtractYearfromK301DATEpositions12_Node0 N_ExtractYearfromK301DATEpositions12_Node0 -- No --> E_ExtractYearfromK301DATEpositions12
formatting"}:::decision N_ExtractYearfromK301DATEpositions12_Node0_action["The year component from positions
1-2 of K3-01-DATE is extracted and
stored in positions 3-4 of the date
year field"]:::main N_ExtractYearfromK301DATEpositions12_Node0 -- Yes --> N_ExtractYearfromK301DATEpositions12_Node0_action N_ExtractYearfromK301DATEpositions12_Node0_action --> E_ExtractYearfromK301DATEpositions12 S_ExtractYearfromK301DATEpositions12 --> N_ExtractYearfromK301DATEpositions12_Node0 N_ExtractYearfromK301DATEpositions12_Node0 -- No --> E_ExtractYearfromK301DATEpositions12
File: GCX015E.cbl
GIVEN:
A K3 segment contains date information in K3-01-DATE field
WHEN:
Processing email warning message formatting
THEN:
- The year component from positions 1-2 of k3-01-date is extracted
- Stored in positions 3-4 of the date year field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the month component from positions 3-4 of K3-01-DATE is extracted and stored in the date month 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_ExtractMonthfromK301DATEpositions32(["Start Step"])
E_ExtractMonthfromK301DATEpositions32(["End Step"])
N_ExtractMonthfromK301DATEpositions32_Node0{"Processing email warning message
formatting"}:::decision N_ExtractMonthfromK301DATEpositions32_Node0_action["The month component from positions
3-4 of K3-01-DATE is extracted and
stored in the date month field"]:::main N_ExtractMonthfromK301DATEpositions32_Node0 -- Yes --> N_ExtractMonthfromK301DATEpositions32_Node0_action N_ExtractMonthfromK301DATEpositions32_Node0_action --> E_ExtractMonthfromK301DATEpositions32 S_ExtractMonthfromK301DATEpositions32 --> N_ExtractMonthfromK301DATEpositions32_Node0 N_ExtractMonthfromK301DATEpositions32_Node0 -- No --> E_ExtractMonthfromK301DATEpositions32
formatting"}:::decision N_ExtractMonthfromK301DATEpositions32_Node0_action["The month component from positions
3-4 of K3-01-DATE is extracted and
stored in the date month field"]:::main N_ExtractMonthfromK301DATEpositions32_Node0 -- Yes --> N_ExtractMonthfromK301DATEpositions32_Node0_action N_ExtractMonthfromK301DATEpositions32_Node0_action --> E_ExtractMonthfromK301DATEpositions32 S_ExtractMonthfromK301DATEpositions32 --> N_ExtractMonthfromK301DATEpositions32_Node0 N_ExtractMonthfromK301DATEpositions32_Node0 -- No --> E_ExtractMonthfromK301DATEpositions32
File: GCX015E.cbl
GIVEN:
A K3 segment contains date information in K3-01-DATE field
WHEN:
Processing email warning message formatting
THEN:
- The month component from positions 3-4 of k3-01-date is extracted
- Stored in the date month field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the day component from positions 5-6 of K3-01-DATE is extracted and stored in the date day 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_ExtractDayfromK301DATEpositions52(["Start Step"])
E_ExtractDayfromK301DATEpositions52(["End Step"])
N_ExtractDayfromK301DATEpositions52_Node0{"Processing email warning message
formatting"}:::decision N_ExtractDayfromK301DATEpositions52_Node0_action["The day component from positions
5-6 of K3-01-DATE is extracted and
stored in the date day field"]:::main N_ExtractDayfromK301DATEpositions52_Node0 -- Yes --> N_ExtractDayfromK301DATEpositions52_Node0_action N_ExtractDayfromK301DATEpositions52_Node0_action --> E_ExtractDayfromK301DATEpositions52 S_ExtractDayfromK301DATEpositions52 --> N_ExtractDayfromK301DATEpositions52_Node0 N_ExtractDayfromK301DATEpositions52_Node0 -- No --> E_ExtractDayfromK301DATEpositions52
formatting"}:::decision N_ExtractDayfromK301DATEpositions52_Node0_action["The day component from positions
5-6 of K3-01-DATE is extracted and
stored in the date day field"]:::main N_ExtractDayfromK301DATEpositions52_Node0 -- Yes --> N_ExtractDayfromK301DATEpositions52_Node0_action N_ExtractDayfromK301DATEpositions52_Node0_action --> E_ExtractDayfromK301DATEpositions52 S_ExtractDayfromK301DATEpositions52 --> N_ExtractDayfromK301DATEpositions52_Node0 N_ExtractDayfromK301DATEpositions52_Node0 -- No --> E_ExtractDayfromK301DATEpositions52
File: GCX015E.cbl
GIVEN:
A K3 segment contains date information in K3-01-DATE field
WHEN:
Processing email warning message formatting
THEN:
- The day component from positions 5-6 of k3-01-date is extracted
- Stored in the date day field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the hour component from positions 1-2 of K3-01-TIME is extracted and stored in the time hour 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_ExtractHourfromK301TIMEpositions12(["Start Step"])
E_ExtractHourfromK301TIMEpositions12(["End Step"])
N_ExtractHourfromK301TIMEpositions12_Node0{"Processing email warning message
formatting"}:::decision N_ExtractHourfromK301TIMEpositions12_Node0_action["The hour component from positions
1-2 of K3-01-TIME is extracted and
stored in the time hour field"]:::main N_ExtractHourfromK301TIMEpositions12_Node0 -- Yes --> N_ExtractHourfromK301TIMEpositions12_Node0_action N_ExtractHourfromK301TIMEpositions12_Node0_action --> E_ExtractHourfromK301TIMEpositions12 S_ExtractHourfromK301TIMEpositions12 --> N_ExtractHourfromK301TIMEpositions12_Node0 N_ExtractHourfromK301TIMEpositions12_Node0 -- No --> E_ExtractHourfromK301TIMEpositions12
formatting"}:::decision N_ExtractHourfromK301TIMEpositions12_Node0_action["The hour component from positions
1-2 of K3-01-TIME is extracted and
stored in the time hour field"]:::main N_ExtractHourfromK301TIMEpositions12_Node0 -- Yes --> N_ExtractHourfromK301TIMEpositions12_Node0_action N_ExtractHourfromK301TIMEpositions12_Node0_action --> E_ExtractHourfromK301TIMEpositions12 S_ExtractHourfromK301TIMEpositions12 --> N_ExtractHourfromK301TIMEpositions12_Node0 N_ExtractHourfromK301TIMEpositions12_Node0 -- No --> E_ExtractHourfromK301TIMEpositions12
File: GCX015E.cbl
GIVEN:
A K3 segment contains time information in K3-01-TIME field
WHEN:
Processing email warning message formatting
THEN:
- The hour component from positions 1-2 of k3-01-time is extracted
- Stored in the time hour field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the minutes component from positions 3-4 of K3-01-TIME is extracted and stored in the time minutes 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_ExtractMinutesfromK301TIMEpositions32(["Start Step"])
E_ExtractMinutesfromK301TIMEpositions32(["End Step"])
N_ExtractMinutesfromK301TIMEpositions32_Node0{"Processing email warning message
formatting"}:::decision N_ExtractMinutesfromK301TIMEpositions32_Node0_action["The minutes component from
positions 3-4 of K3-01-TIME is
extracted and stored in the time
minutes field"]:::main N_ExtractMinutesfromK301TIMEpositions32_Node0 -- Yes --> N_ExtractMinutesfromK301TIMEpositions32_Node0_action N_ExtractMinutesfromK301TIMEpositions32_Node0_action --> E_ExtractMinutesfromK301TIMEpositions32 S_ExtractMinutesfromK301TIMEpositions32 --> N_ExtractMinutesfromK301TIMEpositions32_Node0 N_ExtractMinutesfromK301TIMEpositions32_Node0 -- No --> E_ExtractMinutesfromK301TIMEpositions32
formatting"}:::decision N_ExtractMinutesfromK301TIMEpositions32_Node0_action["The minutes component from
positions 3-4 of K3-01-TIME is
extracted and stored in the time
minutes field"]:::main N_ExtractMinutesfromK301TIMEpositions32_Node0 -- Yes --> N_ExtractMinutesfromK301TIMEpositions32_Node0_action N_ExtractMinutesfromK301TIMEpositions32_Node0_action --> E_ExtractMinutesfromK301TIMEpositions32 S_ExtractMinutesfromK301TIMEpositions32 --> N_ExtractMinutesfromK301TIMEpositions32_Node0 N_ExtractMinutesfromK301TIMEpositions32_Node0 -- No --> E_ExtractMinutesfromK301TIMEpositions32
File: GCX015E.cbl
GIVEN:
A K3 segment contains time information in K3-01-TIME field
WHEN:
Processing email warning message formatting
THEN:
- The minutes component from positions 3-4 of k3-01-time is extracted
- Stored in the time minutes field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the century and year are combined to form a complete 4-digit year in WS-DATE-YEAR 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_CombineCenturyandYearintoWSDATEYEAR(["Start Step"])
E_CombineCenturyandYearintoWSDATEYEAR(["End Step"])
N_CombineCenturyandYearintoWSDATEYEAR_Node0{"Processing email warning message
formatting"}:::decision N_CombineCenturyandYearintoWSDATEYEAR_Node0_action["The century and year are combined
to form a complete 4-digit year in
WS-DATE-YEAR field"]:::main N_CombineCenturyandYearintoWSDATEYEAR_Node0 -- Yes --> N_CombineCenturyandYearintoWSDATEYEAR_Node0_action N_CombineCenturyandYearintoWSDATEYEAR_Node0_action --> E_CombineCenturyandYearintoWSDATEYEAR S_CombineCenturyandYearintoWSDATEYEAR --> N_CombineCenturyandYearintoWSDATEYEAR_Node0 N_CombineCenturyandYearintoWSDATEYEAR_Node0 -- No --> E_CombineCenturyandYearintoWSDATEYEAR
formatting"}:::decision N_CombineCenturyandYearintoWSDATEYEAR_Node0_action["The century and year are combined
to form a complete 4-digit year in
WS-DATE-YEAR field"]:::main N_CombineCenturyandYearintoWSDATEYEAR_Node0 -- Yes --> N_CombineCenturyandYearintoWSDATEYEAR_Node0_action N_CombineCenturyandYearintoWSDATEYEAR_Node0_action --> E_CombineCenturyandYearintoWSDATEYEAR S_CombineCenturyandYearintoWSDATEYEAR --> N_CombineCenturyandYearintoWSDATEYEAR_Node0 N_CombineCenturyandYearintoWSDATEYEAR_Node0 -- No --> E_CombineCenturyandYearintoWSDATEYEAR
File: GCX015E.cbl
GIVEN:
Century component and 2-digit year component are available
WHEN:
Processing email warning message formatting
THEN:
- The century
- Year are combined to form a complete 4-digit year in ws-date-year field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the date components are formatted into a complete readable date string using WS-DATE-FORMATER
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCompleteDateusingWSDATEFORMATER(["Start Step"])
E_FormatCompleteDateusingWSDATEFORMATER(["End Step"])
N_FormatCompleteDateusingWSDATEFORMATER_Node0{"Processing email warning message
formatting"}:::decision N_FormatCompleteDateusingWSDATEFORMATER_Node0_action["The date components are formatted
into a complete readable date string
using WS-DATE-FORMATER"]:::main N_FormatCompleteDateusingWSDATEFORMATER_Node0 -- Yes --> N_FormatCompleteDateusingWSDATEFORMATER_Node0_action N_FormatCompleteDateusingWSDATEFORMATER_Node0_action --> E_FormatCompleteDateusingWSDATEFORMATER S_FormatCompleteDateusingWSDATEFORMATER --> N_FormatCompleteDateusingWSDATEFORMATER_Node0 N_FormatCompleteDateusingWSDATEFORMATER_Node0 -- No --> E_FormatCompleteDateusingWSDATEFORMATER
formatting"}:::decision N_FormatCompleteDateusingWSDATEFORMATER_Node0_action["The date components are formatted
into a complete readable date string
using WS-DATE-FORMATER"]:::main N_FormatCompleteDateusingWSDATEFORMATER_Node0 -- Yes --> N_FormatCompleteDateusingWSDATEFORMATER_Node0_action N_FormatCompleteDateusingWSDATEFORMATER_Node0_action --> E_FormatCompleteDateusingWSDATEFORMATER S_FormatCompleteDateusingWSDATEFORMATER --> N_FormatCompleteDateusingWSDATEFORMATER_Node0 N_FormatCompleteDateusingWSDATEFORMATER_Node0 -- No --> E_FormatCompleteDateusingWSDATEFORMATER
File: GCX015E.cbl
GIVEN:
Year, month, and day components are extracted and available
WHEN:
Processing email warning message formatting
THEN:
The date components are formatted into a complete readable date string using WS-DATE-FORMATER
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the time components are formatted into a complete readable time string using WS-TIME-FORMATER
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCompleteTimeusingWSTIMEFORMATER(["Start Step"])
E_FormatCompleteTimeusingWSTIMEFORMATER(["End Step"])
N_FormatCompleteTimeusingWSTIMEFORMATER_Node0{"Processing email warning message
formatting"}:::decision N_FormatCompleteTimeusingWSTIMEFORMATER_Node0_action["The time components are formatted
into a complete readable time string
using WS-TIME-FORMATER"]:::main N_FormatCompleteTimeusingWSTIMEFORMATER_Node0 -- Yes --> N_FormatCompleteTimeusingWSTIMEFORMATER_Node0_action N_FormatCompleteTimeusingWSTIMEFORMATER_Node0_action --> E_FormatCompleteTimeusingWSTIMEFORMATER S_FormatCompleteTimeusingWSTIMEFORMATER --> N_FormatCompleteTimeusingWSTIMEFORMATER_Node0 N_FormatCompleteTimeusingWSTIMEFORMATER_Node0 -- No --> E_FormatCompleteTimeusingWSTIMEFORMATER
formatting"}:::decision N_FormatCompleteTimeusingWSTIMEFORMATER_Node0_action["The time components are formatted
into a complete readable time string
using WS-TIME-FORMATER"]:::main N_FormatCompleteTimeusingWSTIMEFORMATER_Node0 -- Yes --> N_FormatCompleteTimeusingWSTIMEFORMATER_Node0_action N_FormatCompleteTimeusingWSTIMEFORMATER_Node0_action --> E_FormatCompleteTimeusingWSTIMEFORMATER S_FormatCompleteTimeusingWSTIMEFORMATER --> N_FormatCompleteTimeusingWSTIMEFORMATER_Node0 N_FormatCompleteTimeusingWSTIMEFORMATER_Node0 -- No --> E_FormatCompleteTimeusingWSTIMEFORMATER
File: GCX015E.cbl
GIVEN:
Hour and minutes components are extracted and available
WHEN:
Processing email warning message formatting
THEN:
The time components are formatted into a complete readable time string using WS-TIME-FORMATER
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the formatted date and time are combined with a space delimiter into WS-OCCURED-ON-DATA 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_CombineDateandTimeintoWSOCCUREDONDATA(["Start Step"])
E_CombineDateandTimeintoWSOCCUREDONDATA(["End Step"])
N_CombineDateandTimeintoWSOCCUREDONDATA_Node0{"Processing email warning message
formatting"}:::decision N_CombineDateandTimeintoWSOCCUREDONDATA_Node0_action["The formatted date and time are
combined with a space delimiter into
WS-OCCURED-ON-DATA field"]:::main N_CombineDateandTimeintoWSOCCUREDONDATA_Node0 -- Yes --> N_CombineDateandTimeintoWSOCCUREDONDATA_Node0_action N_CombineDateandTimeintoWSOCCUREDONDATA_Node0_action --> E_CombineDateandTimeintoWSOCCUREDONDATA S_CombineDateandTimeintoWSOCCUREDONDATA --> N_CombineDateandTimeintoWSOCCUREDONDATA_Node0 N_CombineDateandTimeintoWSOCCUREDONDATA_Node0 -- No --> E_CombineDateandTimeintoWSOCCUREDONDATA
formatting"}:::decision N_CombineDateandTimeintoWSOCCUREDONDATA_Node0_action["The formatted date and time are
combined with a space delimiter into
WS-OCCURED-ON-DATA field"]:::main N_CombineDateandTimeintoWSOCCUREDONDATA_Node0 -- Yes --> N_CombineDateandTimeintoWSOCCUREDONDATA_Node0_action N_CombineDateandTimeintoWSOCCUREDONDATA_Node0_action --> E_CombineDateandTimeintoWSOCCUREDONDATA S_CombineDateandTimeintoWSOCCUREDONDATA --> N_CombineDateandTimeintoWSOCCUREDONDATA_Node0 N_CombineDateandTimeintoWSOCCUREDONDATA_Node0 -- No --> E_CombineDateandTimeintoWSOCCUREDONDATA
File: GCX015E.cbl
GIVEN:
Formatted date string and formatted time string are available
WHEN:
Processing email warning message formatting
THEN:
- The formatted date
- Time are combined with a space delimiter into ws-occured-on-data field
β Consolidated Acceptance Criteria
- Processing email warning message formatting → the formatted occurrence timestamp is moved to WS-OCCURED-ON-VARS and assigned to email text line 17 for 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_MoveFormattedDateTimetoEmailLineforDisplay(["Start Step"])
E_MoveFormattedDateTimetoEmailLineforDisplay(["End Step"])
N_MoveFormattedDateTimetoEmailLineforDisplay_Node0{"Processing email warning message
formatting"}:::decision N_MoveFormattedDateTimetoEmailLineforDisplay_Node0_action["The formatted occurrence timestamp
is moved to WS-OCCURED-ON-VARS and
assigned to email text line 17 for
display"]:::main N_MoveFormattedDateTimetoEmailLineforDisplay_Node0 -- Yes --> N_MoveFormattedDateTimetoEmailLineforDisplay_Node0_action N_MoveFormattedDateTimetoEmailLineforDisplay_Node0_action --> E_MoveFormattedDateTimetoEmailLineforDisplay S_MoveFormattedDateTimetoEmailLineforDisplay --> N_MoveFormattedDateTimetoEmailLineforDisplay_Node0 N_MoveFormattedDateTimetoEmailLineforDisplay_Node0 -- No --> E_MoveFormattedDateTimetoEmailLineforDisplay
formatting"}:::decision N_MoveFormattedDateTimetoEmailLineforDisplay_Node0_action["The formatted occurrence timestamp
is moved to WS-OCCURED-ON-VARS and
assigned to email text line 17 for
display"]:::main N_MoveFormattedDateTimetoEmailLineforDisplay_Node0 -- Yes --> N_MoveFormattedDateTimetoEmailLineforDisplay_Node0_action N_MoveFormattedDateTimetoEmailLineforDisplay_Node0_action --> E_MoveFormattedDateTimetoEmailLineforDisplay S_MoveFormattedDateTimetoEmailLineforDisplay --> N_MoveFormattedDateTimetoEmailLineforDisplay_Node0 N_MoveFormattedDateTimetoEmailLineforDisplay_Node0 -- No --> E_MoveFormattedDateTimetoEmailLineforDisplay
File: GCX015E.cbl
GIVEN:
Complete formatted date-time occurrence information is available in WS-OCCURED-ON-DATA
WHEN:
Processing email warning message formatting
THEN:
- The formatted occurrence timestamp is moved to ws-occured-on-vars
- Assigned to email text line 17 for display
β Consolidated Acceptance Criteria
- The system needs to extract origin station information for email notification → the origin station name should be retrieved from SHIPROOT database using the waybill 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_GetOriginStationNamefromSHIPROOT(["Start Step"])
E_GetOriginStationNamefromSHIPROOT(["End Step"])
N_GetOriginStationNamefromSHIPROOT_Node0{"The system needs to extract origin
station information for email
notification"}:::decision N_GetOriginStationNamefromSHIPROOT_Node0_action["The origin station name should be
retrieved from SHIPROOT database
using the waybill key"]:::main N_GetOriginStationNamefromSHIPROOT_Node0 -- Yes --> N_GetOriginStationNamefromSHIPROOT_Node0_action N_GetOriginStationNamefromSHIPROOT_Node0_action --> E_GetOriginStationNamefromSHIPROOT S_GetOriginStationNamefromSHIPROOT --> N_GetOriginStationNamefromSHIPROOT_Node0 N_GetOriginStationNamefromSHIPROOT_Node0 -- No --> E_GetOriginStationNamefromSHIPROOT
station information for email
notification"}:::decision N_GetOriginStationNamefromSHIPROOT_Node0_action["The origin station name should be
retrieved from SHIPROOT database
using the waybill key"]:::main N_GetOriginStationNamefromSHIPROOT_Node0 -- Yes --> N_GetOriginStationNamefromSHIPROOT_Node0_action N_GetOriginStationNamefromSHIPROOT_Node0_action --> E_GetOriginStationNamefromSHIPROOT S_GetOriginStationNamefromSHIPROOT --> N_GetOriginStationNamefromSHIPROOT_Node0 N_GetOriginStationNamefromSHIPROOT_Node0 -- No --> E_GetOriginStationNamefromSHIPROOT
File: GCX015E.cbl
GIVEN:
A cargo shipment record exists with waybill key information
WHEN:
The system needs to extract origin station information for email notification
THEN:
The origin station name should be retrieved from SHIPROOT database using the waybill key
β Consolidated Acceptance Criteria
- The system needs to extract origin location details for email notification → the origin province or state code should be retrieved from SHIPROOT database using the waybill 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_GetOriginProvinceStateCodefromSHIPROOT(["Start Step"])
E_GetOriginProvinceStateCodefromSHIPROOT(["End Step"])
N_GetOriginProvinceStateCodefromSHIPROOT_Node0{"The system needs to extract origin
location details for email
notification"}:::decision N_GetOriginProvinceStateCodefromSHIPROOT_Node0_action["The origin province or state code
should be retrieved from SHIPROOT
database using the waybill key"]:::main N_GetOriginProvinceStateCodefromSHIPROOT_Node0 -- Yes --> N_GetOriginProvinceStateCodefromSHIPROOT_Node0_action N_GetOriginProvinceStateCodefromSHIPROOT_Node0_action --> E_GetOriginProvinceStateCodefromSHIPROOT S_GetOriginProvinceStateCodefromSHIPROOT --> N_GetOriginProvinceStateCodefromSHIPROOT_Node0 N_GetOriginProvinceStateCodefromSHIPROOT_Node0 -- No --> E_GetOriginProvinceStateCodefromSHIPROOT
location details for email
notification"}:::decision N_GetOriginProvinceStateCodefromSHIPROOT_Node0_action["The origin province or state code
should be retrieved from SHIPROOT
database using the waybill key"]:::main N_GetOriginProvinceStateCodefromSHIPROOT_Node0 -- Yes --> N_GetOriginProvinceStateCodefromSHIPROOT_Node0_action N_GetOriginProvinceStateCodefromSHIPROOT_Node0_action --> E_GetOriginProvinceStateCodefromSHIPROOT S_GetOriginProvinceStateCodefromSHIPROOT --> N_GetOriginProvinceStateCodefromSHIPROOT_Node0 N_GetOriginProvinceStateCodefromSHIPROOT_Node0 -- No --> E_GetOriginProvinceStateCodefromSHIPROOT
File: GCX015E.cbl
GIVEN:
A cargo shipment record exists with waybill key information
WHEN:
The system needs to extract origin location details for email notification
THEN:
The origin province or state code should be retrieved from SHIPROOT database using the waybill key
β Consolidated Acceptance Criteria
- The system needs to extract destination station information for email notification → the destination station name should be retrieved from SHIPROOT database using the waybill 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_GetDestinationStationNamefromSHIPROOT(["Start Step"])
E_GetDestinationStationNamefromSHIPROOT(["End Step"])
N_GetDestinationStationNamefromSHIPROOT_Node0{"The system needs to extract
destination station information for
email notification"}:::decision N_GetDestinationStationNamefromSHIPROOT_Node0_action["The destination station name should
be retrieved from SHIPROOT database
using the waybill key"]:::main N_GetDestinationStationNamefromSHIPROOT_Node0 -- Yes --> N_GetDestinationStationNamefromSHIPROOT_Node0_action N_GetDestinationStationNamefromSHIPROOT_Node0_action --> E_GetDestinationStationNamefromSHIPROOT S_GetDestinationStationNamefromSHIPROOT --> N_GetDestinationStationNamefromSHIPROOT_Node0 N_GetDestinationStationNamefromSHIPROOT_Node0 -- No --> E_GetDestinationStationNamefromSHIPROOT
destination station information for
email notification"}:::decision N_GetDestinationStationNamefromSHIPROOT_Node0_action["The destination station name should
be retrieved from SHIPROOT database
using the waybill key"]:::main N_GetDestinationStationNamefromSHIPROOT_Node0 -- Yes --> N_GetDestinationStationNamefromSHIPROOT_Node0_action N_GetDestinationStationNamefromSHIPROOT_Node0_action --> E_GetDestinationStationNamefromSHIPROOT S_GetDestinationStationNamefromSHIPROOT --> N_GetDestinationStationNamefromSHIPROOT_Node0 N_GetDestinationStationNamefromSHIPROOT_Node0 -- No --> E_GetDestinationStationNamefromSHIPROOT
File: GCX015E.cbl
GIVEN:
A cargo shipment record exists with waybill key information
WHEN:
The system needs to extract destination station information for email notification
THEN:
The destination station name should be retrieved from SHIPROOT database using the waybill key
β Consolidated Acceptance Criteria
- The system needs to extract destination location details for email notification → the destination province or state code should be retrieved from SHIPROOT database using the waybill 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_GetDestinationProvinceStateCodefromSHIPROOT(["Start Step"])
E_GetDestinationProvinceStateCodefromSHIPROOT(["End Step"])
N_GetDestinationProvinceStateCodefromSHIPROOT_Node0{"The system needs to extract
destination location details for
email notification"}:::decision N_GetDestinationProvinceStateCodefromSHIPROOT_Node0_action["The destination province or state
code should be retrieved from
SHIPROOT database using the waybill
key"]:::main N_GetDestinationProvinceStateCodefromSHIPROOT_Node0 -- Yes --> N_GetDestinationProvinceStateCodefromSHIPROOT_Node0_action N_GetDestinationProvinceStateCodefromSHIPROOT_Node0_action --> E_GetDestinationProvinceStateCodefromSHIPROOT S_GetDestinationProvinceStateCodefromSHIPROOT --> N_GetDestinationProvinceStateCodefromSHIPROOT_Node0 N_GetDestinationProvinceStateCodefromSHIPROOT_Node0 -- No --> E_GetDestinationProvinceStateCodefromSHIPROOT
destination location details for
email notification"}:::decision N_GetDestinationProvinceStateCodefromSHIPROOT_Node0_action["The destination province or state
code should be retrieved from
SHIPROOT database using the waybill
key"]:::main N_GetDestinationProvinceStateCodefromSHIPROOT_Node0 -- Yes --> N_GetDestinationProvinceStateCodefromSHIPROOT_Node0_action N_GetDestinationProvinceStateCodefromSHIPROOT_Node0_action --> E_GetDestinationProvinceStateCodefromSHIPROOT S_GetDestinationProvinceStateCodefromSHIPROOT --> N_GetDestinationProvinceStateCodefromSHIPROOT_Node0 N_GetDestinationProvinceStateCodefromSHIPROOT_Node0 -- No --> E_GetDestinationProvinceStateCodefromSHIPROOT
File: GCX015E.cbl
GIVEN:
A cargo shipment record exists with waybill key information
WHEN:
The system needs to extract destination location details for email notification
THEN:
The destination province or state code should be retrieved from SHIPROOT database using the waybill key
β Consolidated Acceptance Criteria
- The system needs to create a formatted origin location string for email notification → the origin station name and province/state code should be concatenated with comma separator into a readable format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatOriginStationString(["Start Step"])
E_FormatOriginStationString(["End Step"])
N_FormatOriginStationString_Node0{"The system needs to create a
formatted origin location string for
email notification"}:::decision N_FormatOriginStationString_Node0_action["The origin station name and
provincestate code should be
concatenated with comma separator
into a readable format"]:::main N_FormatOriginStationString_Node0 -- Yes --> N_FormatOriginStationString_Node0_action N_FormatOriginStationString_Node0_action --> E_FormatOriginStationString S_FormatOriginStationString --> N_FormatOriginStationString_Node0 N_FormatOriginStationString_Node0 -- No --> E_FormatOriginStationString
formatted origin location string for
email notification"}:::decision N_FormatOriginStationString_Node0_action["The origin station name and
provincestate code should be
concatenated with comma separator
into a readable format"]:::main N_FormatOriginStationString_Node0 -- Yes --> N_FormatOriginStationString_Node0_action N_FormatOriginStationString_Node0_action --> E_FormatOriginStationString S_FormatOriginStationString --> N_FormatOriginStationString_Node0 N_FormatOriginStationString_Node0 -- No --> E_FormatOriginStationString
File: GCX015E.cbl
GIVEN:
Origin station name and province/state code are available from SHIPROOT database
WHEN:
The system needs to create a formatted origin location string for email notification
THEN:
- The origin station name
- Province/state code should be concatenated with comma separator into a readable format
β Consolidated Acceptance Criteria
- The system needs to create a formatted destination location string for email notification → the destination station name and province/state code should be concatenated with comma separator into a readable format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDestinationStationString(["Start Step"])
E_FormatDestinationStationString(["End Step"])
N_FormatDestinationStationString_Node0{"The system needs to create a
formatted destination location
string for email notification"}:::decision N_FormatDestinationStationString_Node0_action["The destination station name and
provincestate code should be
concatenated with comma separator
into a readable format"]:::main N_FormatDestinationStationString_Node0 -- Yes --> N_FormatDestinationStationString_Node0_action N_FormatDestinationStationString_Node0_action --> E_FormatDestinationStationString S_FormatDestinationStationString --> N_FormatDestinationStationString_Node0 N_FormatDestinationStationString_Node0 -- No --> E_FormatDestinationStationString
formatted destination location
string for email notification"}:::decision N_FormatDestinationStationString_Node0_action["The destination station name and
provincestate code should be
concatenated with comma separator
into a readable format"]:::main N_FormatDestinationStationString_Node0 -- Yes --> N_FormatDestinationStationString_Node0_action N_FormatDestinationStationString_Node0_action --> E_FormatDestinationStationString S_FormatDestinationStationString --> N_FormatDestinationStationString_Node0 N_FormatDestinationStationString_Node0 -- No --> E_FormatDestinationStationString
File: GCX015E.cbl
GIVEN:
Destination station name and province/state code are available from SHIPROOT database
WHEN:
The system needs to create a formatted destination location string for email notification
THEN:
- The destination station name
- Province/state code should be concatenated with comma separator into a readable format
β Consolidated Acceptance Criteria
- The system formats origin station information for email display → the system combines the origin station name and province/state code with a comma and space delimiter and stores the formatted string in the origin station data field
- The system prepares an email warning notification → the destination station string should be formatted by combining the destination station name, a comma delimiter, and the province/state code, then stored in the email text line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineStationNameandProvinceStatewithCommaDelimiter(["Start Step"])
E_CombineStationNameandProvinceStatewithCommaDelimiter(["End Step"])
N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0{"The system formats origin station
information for email display"}:::decision N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0_action["The system combines the origin
station name and provincestate code
with a comma and space delimiter and
stores the formatted string in the
origin station data field"]:::main N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0 -- Yes --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0_action N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0_action --> E_CombineStationNameandProvinceStatewithCommaDelimiter S_CombineStationNameandProvinceStatewithCommaDelimiter --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0 N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1{"The system prepares an email
warning notification"}:::decision N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1_action["The destination station string
should be formatted by combining the
destination station name, a comma
delimiter, and the provincestate
code, then stored in the email text
line"]:::main N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1 -- Yes --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1_action N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1_action --> E_CombineStationNameandProvinceStatewithCommaDelimiter N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0 -- No --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1 N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1 -- No --> E_CombineStationNameandProvinceStatewithCommaDelimiter
information for email display"}:::decision N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0_action["The system combines the origin
station name and provincestate code
with a comma and space delimiter and
stores the formatted string in the
origin station data field"]:::main N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0 -- Yes --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0_action N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0_action --> E_CombineStationNameandProvinceStatewithCommaDelimiter S_CombineStationNameandProvinceStatewithCommaDelimiter --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0 N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1{"The system prepares an email
warning notification"}:::decision N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1_action["The destination station string
should be formatted by combining the
destination station name, a comma
delimiter, and the provincestate
code, then stored in the email text
line"]:::main N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1 -- Yes --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1_action N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1_action --> E_CombineStationNameandProvinceStatewithCommaDelimiter N_CombineStationNameandProvinceStatewithCommaDelimiter_Node0 -- No --> N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1 N_CombineStationNameandProvinceStatewithCommaDelimiter_Node1 -- No --> E_CombineStationNameandProvinceStatewithCommaDelimiter
File: GCX015E.cbl
GIVEN:
Origin station name exists in ORIG-STN-NM and province/state code exists in ORIG-PROV-STATE-CDE
WHEN:
The system formats origin station information for email display
THEN:
- The system combines the origin station name
- Province/state code with a comma
- Space delimiter
- Stores the formatted string in the origin station data field
File: GCX015E.cbl
GIVEN:
A cargo shipment has destination station name and province/state code available
WHEN:
The system prepares an email warning notification
THEN:
The destination station string should be formatted by combining the destination station name, a comma delimiter, and the province/state code, then stored in the email text line
β Consolidated Acceptance Criteria
- The system prepares email content for cargo warning notifications → the system assigns the formatted origin station information to email text line 12
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveFormattedOriginStationtoEmailTextLine(["Start Step"])
E_MoveFormattedOriginStationtoEmailTextLine(["End Step"])
N_MoveFormattedOriginStationtoEmailTextLine_Node0{"The system prepares email content
for cargo warning notifications"}:::decision N_MoveFormattedOriginStationtoEmailTextLine_Node0_action["The system assigns the formatted
origin station information to email
text line 12"]:::main N_MoveFormattedOriginStationtoEmailTextLine_Node0 -- Yes --> N_MoveFormattedOriginStationtoEmailTextLine_Node0_action N_MoveFormattedOriginStationtoEmailTextLine_Node0_action --> E_MoveFormattedOriginStationtoEmailTextLine S_MoveFormattedOriginStationtoEmailTextLine --> N_MoveFormattedOriginStationtoEmailTextLine_Node0 N_MoveFormattedOriginStationtoEmailTextLine_Node0 -- No --> E_MoveFormattedOriginStationtoEmailTextLine
for cargo warning notifications"}:::decision N_MoveFormattedOriginStationtoEmailTextLine_Node0_action["The system assigns the formatted
origin station information to email
text line 12"]:::main N_MoveFormattedOriginStationtoEmailTextLine_Node0 -- Yes --> N_MoveFormattedOriginStationtoEmailTextLine_Node0_action N_MoveFormattedOriginStationtoEmailTextLine_Node0_action --> E_MoveFormattedOriginStationtoEmailTextLine S_MoveFormattedOriginStationtoEmailTextLine --> N_MoveFormattedOriginStationtoEmailTextLine_Node0 N_MoveFormattedOriginStationtoEmailTextLine_Node0 -- No --> E_MoveFormattedOriginStationtoEmailTextLine
File: GCX015E.cbl
GIVEN:
Origin station information has been formatted and stored in WS-ORIGIN-STN-VARS
WHEN:
The system prepares email content for cargo warning notifications
THEN:
The system assigns the formatted origin station information to email text line 12
β Consolidated Acceptance Criteria
- The system searches for the first secondary record with record type '00' and sequence '00' using greater than operator → the first available secondary record for the CCN is retrieved or no record found status is returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFirstUSCargoSecondaryRecord(["Start Step"])
E_GetFirstUSCargoSecondaryRecord(["End Step"])
N_GetFirstUSCargoSecondaryRecord_Node0{"The system searches for the first
secondary record with record type 00
and sequence 00 using greater than
operator"}:::decision N_GetFirstUSCargoSecondaryRecord_Node0_action["The first available secondary
record for the CCN is retrieved or
no record found status is returned"]:::main N_GetFirstUSCargoSecondaryRecord_Node0 -- Yes --> N_GetFirstUSCargoSecondaryRecord_Node0_action N_GetFirstUSCargoSecondaryRecord_Node0_action --> E_GetFirstUSCargoSecondaryRecord S_GetFirstUSCargoSecondaryRecord --> N_GetFirstUSCargoSecondaryRecord_Node0 N_GetFirstUSCargoSecondaryRecord_Node0 -- No --> E_GetFirstUSCargoSecondaryRecord
secondary record with record type 00
and sequence 00 using greater than
operator"}:::decision N_GetFirstUSCargoSecondaryRecord_Node0_action["The first available secondary
record for the CCN is retrieved or
no record found status is returned"]:::main N_GetFirstUSCargoSecondaryRecord_Node0 -- Yes --> N_GetFirstUSCargoSecondaryRecord_Node0_action N_GetFirstUSCargoSecondaryRecord_Node0_action --> E_GetFirstUSCargoSecondaryRecord S_GetFirstUSCargoSecondaryRecord --> N_GetFirstUSCargoSecondaryRecord_Node0 N_GetFirstUSCargoSecondaryRecord_Node0 -- No --> E_GetFirstUSCargoSecondaryRecord
File: GCX015E.cbl
GIVEN:
A valid US Cargo CCN key exists
WHEN:
The system searches for the first secondary record with record type '00' and sequence '00' using greater than operator
THEN:
The first available secondary record for the CCN is retrieved or no record found status is returned
β Consolidated Acceptance Criteria
- The N101 qualifier code is evaluated for forwarder identification → if the N101 qualifier indicates forwarder, the freight forwarder found status is set to true
- The N101 qualifier code is evaluated for consignee identification → if the N101 qualifier indicates consignee, the consignee name is extracted from N102 field and consignee found status is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRecordType(["Start Step"])
E_CheckRecordType(["End Step"])
N_CheckRecordType_Node0{"The N101 qualifier code is
evaluated for forwarder
identification"}:::decision N_CheckRecordType_Node0_action["If the N101 qualifier indicates
forwarder, the freight forwarder
found status is set to true"]:::main N_CheckRecordType_Node0 -- Yes --> N_CheckRecordType_Node0_action N_CheckRecordType_Node0_action --> E_CheckRecordType S_CheckRecordType --> N_CheckRecordType_Node0 N_CheckRecordType_Node1{"The N101 qualifier code is
evaluated for consignee
identification"}:::decision N_CheckRecordType_Node1_action["If the N101 qualifier indicates
consignee, the consignee name is
extracted from N102 field and
consignee found status is set to
true"]:::main N_CheckRecordType_Node1 -- Yes --> N_CheckRecordType_Node1_action N_CheckRecordType_Node1_action --> E_CheckRecordType N_CheckRecordType_Node0 -- No --> N_CheckRecordType_Node1 N_CheckRecordType_Node1 -- No --> E_CheckRecordType
evaluated for forwarder
identification"}:::decision N_CheckRecordType_Node0_action["If the N101 qualifier indicates
forwarder, the freight forwarder
found status is set to true"]:::main N_CheckRecordType_Node0 -- Yes --> N_CheckRecordType_Node0_action N_CheckRecordType_Node0_action --> E_CheckRecordType S_CheckRecordType --> N_CheckRecordType_Node0 N_CheckRecordType_Node1{"The N101 qualifier code is
evaluated for consignee
identification"}:::decision N_CheckRecordType_Node1_action["If the N101 qualifier indicates
consignee, the consignee name is
extracted from N102 field and
consignee found status is set to
true"]:::main N_CheckRecordType_Node1 -- Yes --> N_CheckRecordType_Node1_action N_CheckRecordType_Node1_action --> E_CheckRecordType N_CheckRecordType_Node0 -- No --> N_CheckRecordType_Node1 N_CheckRecordType_Node1 -- No --> E_CheckRecordType
File: GCX015E.cbl
GIVEN:
A secondary record with type '03' is retrieved
WHEN:
The N101 qualifier code is evaluated for forwarder identification
THEN:
If the N101 qualifier indicates forwarder, the freight forwarder found status is set to true
File: GCX015E.cbl
GIVEN:
A secondary record with type '03' is retrieved
WHEN:
The N101 qualifier code is evaluated for consignee identification
THEN:
- If the n101 qualifier indicates consignee, the consignee name is extracted from n102 field
- Consignee found status is set to true
β Consolidated Acceptance Criteria
- The record type is '07' → the additional data segment found indicator is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkAdditionalDataFound(["Start Step"])
E_MarkAdditionalDataFound(["End Step"])
N_MarkAdditionalDataFound_Node0{"The record type is 07"}:::decision
N_MarkAdditionalDataFound_Node0_action["The additional data segment found
indicator is set to true"]:::main N_MarkAdditionalDataFound_Node0 -- Yes --> N_MarkAdditionalDataFound_Node0_action N_MarkAdditionalDataFound_Node0_action --> E_MarkAdditionalDataFound S_MarkAdditionalDataFound --> N_MarkAdditionalDataFound_Node0 N_MarkAdditionalDataFound_Node0 -- No --> E_MarkAdditionalDataFound
indicator is set to true"]:::main N_MarkAdditionalDataFound_Node0 -- Yes --> N_MarkAdditionalDataFound_Node0_action N_MarkAdditionalDataFound_Node0_action --> E_MarkAdditionalDataFound S_MarkAdditionalDataFound --> N_MarkAdditionalDataFound_Node0 N_MarkAdditionalDataFound_Node0 -- No --> E_MarkAdditionalDataFound
File: GCX015E.cbl
GIVEN:
A secondary record is being processed
WHEN:
The record type is '07'
THEN:
The additional data segment found indicator is set to true
β Consolidated Acceptance Criteria
- The system continues searching using get next function → the next secondary record for the same CCN is retrieved or end of records is indicated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextUSCargoSecondaryRecord(["Start Step"])
E_GetNextUSCargoSecondaryRecord(["End Step"])
N_GetNextUSCargoSecondaryRecord_Node0{"The system continues searching
using get next function"}:::decision N_GetNextUSCargoSecondaryRecord_Node0_action["The next secondary record for the
same CCN is retrieved or end of
records is indicated"]:::main N_GetNextUSCargoSecondaryRecord_Node0 -- Yes --> N_GetNextUSCargoSecondaryRecord_Node0_action N_GetNextUSCargoSecondaryRecord_Node0_action --> E_GetNextUSCargoSecondaryRecord S_GetNextUSCargoSecondaryRecord --> N_GetNextUSCargoSecondaryRecord_Node0 N_GetNextUSCargoSecondaryRecord_Node0 -- No --> E_GetNextUSCargoSecondaryRecord
using get next function"}:::decision N_GetNextUSCargoSecondaryRecord_Node0_action["The next secondary record for the
same CCN is retrieved or end of
records is indicated"]:::main N_GetNextUSCargoSecondaryRecord_Node0 -- Yes --> N_GetNextUSCargoSecondaryRecord_Node0_action N_GetNextUSCargoSecondaryRecord_Node0_action --> E_GetNextUSCargoSecondaryRecord S_GetNextUSCargoSecondaryRecord --> N_GetNextUSCargoSecondaryRecord_Node0 N_GetNextUSCargoSecondaryRecord_Node0 -- No --> E_GetNextUSCargoSecondaryRecord
File: GCX015E.cbl
GIVEN:
A secondary record has been processed and more records may exist
WHEN:
The system continues searching using get next function
THEN:
The next secondary record for the same CCN is retrieved or end of records is indicated
β Consolidated Acceptance Criteria
- The record's CCN key is compared with the original search CCN → if the CCN keys match, continue processing; if they don't match, stop 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_MoreRecordsforSameCCN(["Start Step"])
E_MoreRecordsforSameCCN(["End Step"])
N_MoreRecordsforSameCCN_Node0{"The record s CCN key is compared
with the original search CCN"}:::decision N_MoreRecordsforSameCCN_Node0_action["If the CCN keys match, continue
processing if they don t match, stop
the search process"]:::main N_MoreRecordsforSameCCN_Node0 -- Yes --> N_MoreRecordsforSameCCN_Node0_action N_MoreRecordsforSameCCN_Node0_action --> E_MoreRecordsforSameCCN S_MoreRecordsforSameCCN --> N_MoreRecordsforSameCCN_Node0 N_MoreRecordsforSameCCN_Node0 -- No --> E_MoreRecordsforSameCCN
with the original search CCN"}:::decision N_MoreRecordsforSameCCN_Node0_action["If the CCN keys match, continue
processing if they don t match, stop
the search process"]:::main N_MoreRecordsforSameCCN_Node0 -- Yes --> N_MoreRecordsforSameCCN_Node0_action N_MoreRecordsforSameCCN_Node0_action --> E_MoreRecordsforSameCCN S_MoreRecordsforSameCCN --> N_MoreRecordsforSameCCN_Node0 N_MoreRecordsforSameCCN_Node0 -- No --> E_MoreRecordsforSameCCN
File: GCX015E.cbl
GIVEN:
A secondary record is retrieved during the search process
WHEN:
The record's CCN key is compared with the original search CCN
THEN:
If the CCN keys match, continue processing; if they don't match, stop the search process
β Consolidated Acceptance Criteria
- If the search results → if both freight forwarder and consignee are found, or if freight forwarder is found and additional data segment 07 is found, or if consignee is found, the search 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_BothFreightForwarderandConsigneeFound(["Start Step"])
E_BothFreightForwarderandConsigneeFound(["End Step"])
N_BothFreightForwarderandConsigneeFound_Node0{"The system evaluates the search
results"}:::decision N_BothFreightForwarderandConsigneeFound_Node0_action["If both freight forwarder and
consignee are found, or if freight
forwarder is found and additional
data segment 07 is found, or if
consignee is found, the search is
considered complete"]:::main N_BothFreightForwarderandConsigneeFound_Node0 -- Yes --> N_BothFreightForwarderandConsigneeFound_Node0_action N_BothFreightForwarderandConsigneeFound_Node0_action --> E_BothFreightForwarderandConsigneeFound S_BothFreightForwarderandConsigneeFound --> N_BothFreightForwarderandConsigneeFound_Node0 N_BothFreightForwarderandConsigneeFound_Node0 -- No --> E_BothFreightForwarderandConsigneeFound
results"}:::decision N_BothFreightForwarderandConsigneeFound_Node0_action["If both freight forwarder and
consignee are found, or if freight
forwarder is found and additional
data segment 07 is found, or if
consignee is found, the search is
considered complete"]:::main N_BothFreightForwarderandConsigneeFound_Node0 -- Yes --> N_BothFreightForwarderandConsigneeFound_Node0_action N_BothFreightForwarderandConsigneeFound_Node0_action --> E_BothFreightForwarderandConsigneeFound S_BothFreightForwarderandConsigneeFound --> N_BothFreightForwarderandConsigneeFound_Node0 N_BothFreightForwarderandConsigneeFound_Node0 -- No --> E_BothFreightForwarderandConsigneeFound
File: GCX015E.cbl
GIVEN:
The search process has completed for all secondary records of a CCN
WHEN:
The system evaluates the search results
THEN:
- If both freight forwarder
- Consignee are found, or if freight forwarder is found
- Additional data segment 07 is found, or if consignee is found, the search is considered complete
β Consolidated Acceptance Criteria
- The system needs to lookup freight forwarder contact details → the system builds a lookup key by concatenating 'FW=' prefix with the freight forwarder 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_BuildFreightForwarderKeyfromName(["Start Step"])
E_BuildFreightForwarderKeyfromName(["End Step"])
N_BuildFreightForwarderKeyfromName_Node0{"The system needs to lookup freight
forwarder contact details"}:::decision N_BuildFreightForwarderKeyfromName_Node0_action["The system builds a lookup key by
concatenating FW prefix with the
freight forwarder name"]:::main N_BuildFreightForwarderKeyfromName_Node0 -- Yes --> N_BuildFreightForwarderKeyfromName_Node0_action N_BuildFreightForwarderKeyfromName_Node0_action --> E_BuildFreightForwarderKeyfromName S_BuildFreightForwarderKeyfromName --> N_BuildFreightForwarderKeyfromName_Node0 N_BuildFreightForwarderKeyfromName_Node0 -- No --> E_BuildFreightForwarderKeyfromName
forwarder contact details"}:::decision N_BuildFreightForwarderKeyfromName_Node0_action["The system builds a lookup key by
concatenating FW prefix with the
freight forwarder name"]:::main N_BuildFreightForwarderKeyfromName_Node0 -- Yes --> N_BuildFreightForwarderKeyfromName_Node0_action N_BuildFreightForwarderKeyfromName_Node0_action --> E_BuildFreightForwarderKeyfromName S_BuildFreightForwarderKeyfromName --> N_BuildFreightForwarderKeyfromName_Node0 N_BuildFreightForwarderKeyfromName_Node0 -- No --> E_BuildFreightForwarderKeyfromName
File: GCX015E.cbl
GIVEN:
A freight forwarder name exists in the cargo segment
WHEN:
The system needs to lookup freight forwarder contact details
THEN:
The system builds a lookup key by concatenating 'FW=' prefix with the freight forwarder name
β Consolidated Acceptance Criteria
- The system queries the GCST2RT table with the lookup key → the system retrieves the freight forwarder's short name if found, otherwise initializes empty 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_RetrieveFreightForwarderShortNamefromGCST2RT(["Start Step"])
E_RetrieveFreightForwarderShortNamefromGCST2RT(["End Step"])
N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0{"The system queries the GCST2RT
table with the lookup key"}:::decision N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0_action["The system retrieves the freight
forwarder s short name if found,
otherwise initializes empty broker
information"]:::main N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0 -- Yes --> N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0_action N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0_action --> E_RetrieveFreightForwarderShortNamefromGCST2RT S_RetrieveFreightForwarderShortNamefromGCST2RT --> N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0 N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0 -- No --> E_RetrieveFreightForwarderShortNamefromGCST2RT
table with the lookup key"}:::decision N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0_action["The system retrieves the freight
forwarder s short name if found,
otherwise initializes empty broker
information"]:::main N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0 -- Yes --> N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0_action N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0_action --> E_RetrieveFreightForwarderShortNamefromGCST2RT S_RetrieveFreightForwarderShortNamefromGCST2RT --> N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0 N_RetrieveFreightForwarderShortNamefromGCST2RT_Node0 -- No --> E_RetrieveFreightForwarderShortNamefromGCST2RT
File: GCX015E.cbl
GIVEN:
A freight forwarder lookup key has been constructed
WHEN:
The system queries the GCST2RT table with the lookup key
THEN:
The system retrieves the freight forwarder's short name if found, otherwise initializes empty broker information
β Consolidated Acceptance Criteria
- The system cannot find a matching freight forwarder short name → the system initializes the broker name segment to empty 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_InitializeEmptyBrokerInformation(["Start Step"])
E_InitializeEmptyBrokerInformation(["End Step"])
N_InitializeEmptyBrokerInformation_Node0{"The system cannot find a matching
freight forwarder short name"}:::decision N_InitializeEmptyBrokerInformation_Node0_action["The system initializes the broker
name segment to empty values"]:::main N_InitializeEmptyBrokerInformation_Node0 -- Yes --> N_InitializeEmptyBrokerInformation_Node0_action N_InitializeEmptyBrokerInformation_Node0_action --> E_InitializeEmptyBrokerInformation S_InitializeEmptyBrokerInformation --> N_InitializeEmptyBrokerInformation_Node0 N_InitializeEmptyBrokerInformation_Node0 -- No --> E_InitializeEmptyBrokerInformation
freight forwarder short name"}:::decision N_InitializeEmptyBrokerInformation_Node0_action["The system initializes the broker
name segment to empty values"]:::main N_InitializeEmptyBrokerInformation_Node0 -- Yes --> N_InitializeEmptyBrokerInformation_Node0_action N_InitializeEmptyBrokerInformation_Node0_action --> E_InitializeEmptyBrokerInformation S_InitializeEmptyBrokerInformation --> N_InitializeEmptyBrokerInformation_Node0 N_InitializeEmptyBrokerInformation_Node0 -- No --> E_InitializeEmptyBrokerInformation
File: GCX015E.cbl
GIVEN:
The freight forwarder lookup in GCST2RT table returns no results
WHEN:
The system cannot find a matching freight forwarder short name
THEN:
The system initializes the broker name segment to empty values
β Consolidated Acceptance Criteria
- The system needs to lookup broker contact information → the system builds a broker key by concatenating the short name with the primary location ID if available, otherwise uses the alternate location ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildBrokerKeyusingShortNameandLocation(["Start Step"])
E_BuildBrokerKeyusingShortNameandLocation(["End Step"])
N_BuildBrokerKeyusingShortNameandLocation_Node0{"The system needs to lookup broker
contact information"}:::decision N_BuildBrokerKeyusingShortNameandLocation_Node0_action["The system builds a broker key by
concatenating the short name with
the primary location ID if
available, otherwise uses the
alternate location ID"]:::main N_BuildBrokerKeyusingShortNameandLocation_Node0 -- Yes --> N_BuildBrokerKeyusingShortNameandLocation_Node0_action N_BuildBrokerKeyusingShortNameandLocation_Node0_action --> E_BuildBrokerKeyusingShortNameandLocation S_BuildBrokerKeyusingShortNameandLocation --> N_BuildBrokerKeyusingShortNameandLocation_Node0 N_BuildBrokerKeyusingShortNameandLocation_Node0 -- No --> E_BuildBrokerKeyusingShortNameandLocation
contact information"}:::decision N_BuildBrokerKeyusingShortNameandLocation_Node0_action["The system builds a broker key by
concatenating the short name with
the primary location ID if
available, otherwise uses the
alternate location ID"]:::main N_BuildBrokerKeyusingShortNameandLocation_Node0 -- Yes --> N_BuildBrokerKeyusingShortNameandLocation_Node0_action N_BuildBrokerKeyusingShortNameandLocation_Node0_action --> E_BuildBrokerKeyusingShortNameandLocation S_BuildBrokerKeyusingShortNameandLocation --> N_BuildBrokerKeyusingShortNameandLocation_Node0 N_BuildBrokerKeyusingShortNameandLocation_Node0 -- No --> E_BuildBrokerKeyusingShortNameandLocation
File: GCX015E.cbl
GIVEN:
A freight forwarder short name exists and location information is available
WHEN:
The system needs to lookup broker contact information
THEN:
The system builds a broker key by concatenating the short name with the primary location ID if available, otherwise uses the alternate location ID
β Consolidated Acceptance Criteria
- The system queries the BK table segment with the broker key → the system retrieves broker contact information if found, otherwise initializes empty broker contact 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_RetrieveBrokerContactInformationfromBKTable(["Start Step"])
E_RetrieveBrokerContactInformationfromBKTable(["End Step"])
N_RetrieveBrokerContactInformationfromBKTable_Node0{"The system queries the BK table
segment with the broker key"}:::decision N_RetrieveBrokerContactInformationfromBKTable_Node0_action["The system retrieves broker contact
information if found, otherwise
initializes empty broker contact
data"]:::main N_RetrieveBrokerContactInformationfromBKTable_Node0 -- Yes --> N_RetrieveBrokerContactInformationfromBKTable_Node0_action N_RetrieveBrokerContactInformationfromBKTable_Node0_action --> E_RetrieveBrokerContactInformationfromBKTable S_RetrieveBrokerContactInformationfromBKTable --> N_RetrieveBrokerContactInformationfromBKTable_Node0 N_RetrieveBrokerContactInformationfromBKTable_Node0 -- No --> E_RetrieveBrokerContactInformationfromBKTable
segment with the broker key"}:::decision N_RetrieveBrokerContactInformationfromBKTable_Node0_action["The system retrieves broker contact
information if found, otherwise
initializes empty broker contact
data"]:::main N_RetrieveBrokerContactInformationfromBKTable_Node0 -- Yes --> N_RetrieveBrokerContactInformationfromBKTable_Node0_action N_RetrieveBrokerContactInformationfromBKTable_Node0_action --> E_RetrieveBrokerContactInformationfromBKTable S_RetrieveBrokerContactInformationfromBKTable --> N_RetrieveBrokerContactInformationfromBKTable_Node0 N_RetrieveBrokerContactInformationfromBKTable_Node0 -- No --> E_RetrieveBrokerContactInformationfromBKTable
File: GCX015E.cbl
GIVEN:
A broker lookup key has been constructed with short name and location
WHEN:
The system queries the BK table segment with the broker key
THEN:
The system retrieves broker contact information if found, otherwise initializes empty broker contact data
β Consolidated Acceptance Criteria
- The system cannot find matching broker contact information → the system initializes the BK segment to empty values and skips 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_InitializeEmptyBrokerContact(["Start Step"])
E_InitializeEmptyBrokerContact(["End Step"])
N_InitializeEmptyBrokerContact_Node0{"The system cannot find matching
broker contact information"}:::decision N_InitializeEmptyBrokerContact_Node0_action["The system initializes the BK
segment to empty values and skips
further processing"]:::main N_InitializeEmptyBrokerContact_Node0 -- Yes --> N_InitializeEmptyBrokerContact_Node0_action N_InitializeEmptyBrokerContact_Node0_action --> E_InitializeEmptyBrokerContact S_InitializeEmptyBrokerContact --> N_InitializeEmptyBrokerContact_Node0 N_InitializeEmptyBrokerContact_Node0 -- No --> E_InitializeEmptyBrokerContact
broker contact information"}:::decision N_InitializeEmptyBrokerContact_Node0_action["The system initializes the BK
segment to empty values and skips
further processing"]:::main N_InitializeEmptyBrokerContact_Node0 -- Yes --> N_InitializeEmptyBrokerContact_Node0_action N_InitializeEmptyBrokerContact_Node0_action --> E_InitializeEmptyBrokerContact S_InitializeEmptyBrokerContact --> N_InitializeEmptyBrokerContact_Node0 N_InitializeEmptyBrokerContact_Node0 -- No --> E_InitializeEmptyBrokerContact
File: GCX015E.cbl
GIVEN:
The broker contact lookup in BK table returns no results
WHEN:
The system cannot find matching broker contact information
THEN:
- The system initializes the bk segment to empty values
- Skips further processing
β Consolidated Acceptance Criteria
- The system queries the B1 table for internet address information → the system retrieves internet address data if found, otherwise initializes empty internet address information
- The system queries the B1 table with table ID 'B1' using the same lookup key → the internet address information is retrieved and stored in GCSTBRT-B1-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_RetrieveInternetAddressfromB1Table(["Start Step"])
E_RetrieveInternetAddressfromB1Table(["End Step"])
N_RetrieveInternetAddressfromB1Table_Node0{"The system queries the B1 table for
internet address information"}:::decision N_RetrieveInternetAddressfromB1Table_Node0_action["The system retrieves internet
address data if found, otherwise
initializes empty internet address
information"]:::main N_RetrieveInternetAddressfromB1Table_Node0 -- Yes --> N_RetrieveInternetAddressfromB1Table_Node0_action N_RetrieveInternetAddressfromB1Table_Node0_action --> E_RetrieveInternetAddressfromB1Table S_RetrieveInternetAddressfromB1Table --> N_RetrieveInternetAddressfromB1Table_Node0 N_RetrieveInternetAddressfromB1Table_Node1{"The system queries the B1 table
with table ID B1 using the same
lookup key"}:::decision N_RetrieveInternetAddressfromB1Table_Node1_action["The internet address information is
retrieved and stored in
GCSTBRT-B1-SEGMENT"]:::main N_RetrieveInternetAddressfromB1Table_Node1 -- Yes --> N_RetrieveInternetAddressfromB1Table_Node1_action N_RetrieveInternetAddressfromB1Table_Node1_action --> E_RetrieveInternetAddressfromB1Table N_RetrieveInternetAddressfromB1Table_Node0 -- No --> N_RetrieveInternetAddressfromB1Table_Node1 N_RetrieveInternetAddressfromB1Table_Node1 -- No --> E_RetrieveInternetAddressfromB1Table
internet address information"}:::decision N_RetrieveInternetAddressfromB1Table_Node0_action["The system retrieves internet
address data if found, otherwise
initializes empty internet address
information"]:::main N_RetrieveInternetAddressfromB1Table_Node0 -- Yes --> N_RetrieveInternetAddressfromB1Table_Node0_action N_RetrieveInternetAddressfromB1Table_Node0_action --> E_RetrieveInternetAddressfromB1Table S_RetrieveInternetAddressfromB1Table --> N_RetrieveInternetAddressfromB1Table_Node0 N_RetrieveInternetAddressfromB1Table_Node1{"The system queries the B1 table
with table ID B1 using the same
lookup key"}:::decision N_RetrieveInternetAddressfromB1Table_Node1_action["The internet address information is
retrieved and stored in
GCSTBRT-B1-SEGMENT"]:::main N_RetrieveInternetAddressfromB1Table_Node1 -- Yes --> N_RetrieveInternetAddressfromB1Table_Node1_action N_RetrieveInternetAddressfromB1Table_Node1_action --> E_RetrieveInternetAddressfromB1Table N_RetrieveInternetAddressfromB1Table_Node0 -- No --> N_RetrieveInternetAddressfromB1Table_Node1 N_RetrieveInternetAddressfromB1Table_Node1 -- No --> E_RetrieveInternetAddressfromB1Table
File: GCX015E.cbl
GIVEN:
Broker contact information exists in the BK segment
WHEN:
The system queries the B1 table for internet address information
THEN:
The system retrieves internet address data if found, otherwise initializes empty internet address information
File: GCX015E.cbl
GIVEN:
Valid broker contact details exist in GCSTBRT-BK-SEGMENT
WHEN:
The system queries the B1 table with table ID 'B1' using the same lookup key
THEN:
- The internet address information is retrieved
- Stored in gcstbrt-b1-segment
β Consolidated Acceptance Criteria
- The system cannot find matching internet address information → the system initializes the B1 segment to empty values and skips email 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_InitializeEmptyInternetAddress(["Start Step"])
E_InitializeEmptyInternetAddress(["End Step"])
N_InitializeEmptyInternetAddress_Node0{"The system cannot find matching
internet address information"}:::decision N_InitializeEmptyInternetAddress_Node0_action["The system initializes the B1
segment to empty values and skips
email configuration"]:::main N_InitializeEmptyInternetAddress_Node0 -- Yes --> N_InitializeEmptyInternetAddress_Node0_action N_InitializeEmptyInternetAddress_Node0_action --> E_InitializeEmptyInternetAddress S_InitializeEmptyInternetAddress --> N_InitializeEmptyInternetAddress_Node0 N_InitializeEmptyInternetAddress_Node0 -- No --> E_InitializeEmptyInternetAddress
internet address information"}:::decision N_InitializeEmptyInternetAddress_Node0_action["The system initializes the B1
segment to empty values and skips
email configuration"]:::main N_InitializeEmptyInternetAddress_Node0 -- Yes --> N_InitializeEmptyInternetAddress_Node0_action N_InitializeEmptyInternetAddress_Node0_action --> E_InitializeEmptyInternetAddress S_InitializeEmptyInternetAddress --> N_InitializeEmptyInternetAddress_Node0 N_InitializeEmptyInternetAddress_Node0 -- No --> E_InitializeEmptyInternetAddress
File: GCX015E.cbl
GIVEN:
The internet address lookup in B1 table returns no results
WHEN:
The system cannot find matching internet address information
THEN:
- The system initializes the b1 segment to empty values
- Skips email configuration
β Consolidated Acceptance Criteria
- If email delivery options for the freight forwarder → the system sets the email text line with internet address, configures external mail delivery, and enables freight forwarder email 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_SetEmailAddressforFreightForwarder(["Start Step"])
E_SetEmailAddressforFreightForwarder(["End Step"])
N_SetEmailAddressforFreightForwarder_Node0{"The system evaluates email delivery
options for the freight forwarder"}:::decision N_SetEmailAddressforFreightForwarder_Node0_action["The system sets the email text line
with internet address, configures
external mail delivery, and enables
freight forwarder email flag"]:::main N_SetEmailAddressforFreightForwarder_Node0 -- Yes --> N_SetEmailAddressforFreightForwarder_Node0_action N_SetEmailAddressforFreightForwarder_Node0_action --> E_SetEmailAddressforFreightForwarder S_SetEmailAddressforFreightForwarder --> N_SetEmailAddressforFreightForwarder_Node0 N_SetEmailAddressforFreightForwarder_Node0 -- No --> E_SetEmailAddressforFreightForwarder
options for the freight forwarder"}:::decision N_SetEmailAddressforFreightForwarder_Node0_action["The system sets the email text line
with internet address, configures
external mail delivery, and enables
freight forwarder email flag"]:::main N_SetEmailAddressforFreightForwarder_Node0 -- Yes --> N_SetEmailAddressforFreightForwarder_Node0_action N_SetEmailAddressforFreightForwarder_Node0_action --> E_SetEmailAddressforFreightForwarder S_SetEmailAddressforFreightForwarder --> N_SetEmailAddressforFreightForwarder_Node0 N_SetEmailAddressforFreightForwarder_Node0 -- No --> E_SetEmailAddressforFreightForwarder
File: GCX015E.cbl
GIVEN:
Broker contact information indicates internet usage is enabled ('Y') and valid internet address exists
WHEN:
The system evaluates email delivery options for the freight forwarder
THEN:
The system sets the email text line with internet address, configures external mail delivery, and enables freight forwarder email flag
β Consolidated Acceptance Criteria
- The system begins the shipment root data retrieval process → the shipment root work area is cleared and initialized 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_InitializeShipmentRootParameters(["Start Step"])
E_InitializeShipmentRootParameters(["End Step"])
N_InitializeShipmentRootParameters_Node0{"The system begins the shipment root
data retrieval process"}:::decision N_InitializeShipmentRootParameters_Node0_action["The shipment root work area is
cleared and initialized to spaces"]:::main N_InitializeShipmentRootParameters_Node0 -- Yes --> N_InitializeShipmentRootParameters_Node0_action N_InitializeShipmentRootParameters_Node0_action --> E_InitializeShipmentRootParameters S_InitializeShipmentRootParameters --> N_InitializeShipmentRootParameters_Node0 N_InitializeShipmentRootParameters_Node0 -- No --> E_InitializeShipmentRootParameters
data retrieval process"}:::decision N_InitializeShipmentRootParameters_Node0_action["The shipment root work area is
cleared and initialized to spaces"]:::main N_InitializeShipmentRootParameters_Node0 -- Yes --> N_InitializeShipmentRootParameters_Node0_action N_InitializeShipmentRootParameters_Node0_action --> E_InitializeShipmentRootParameters S_InitializeShipmentRootParameters --> N_InitializeShipmentRootParameters_Node0 N_InitializeShipmentRootParameters_Node0 -- No --> E_InitializeShipmentRootParameters
File: GCX015E.cbl
GIVEN:
A request to retrieve shipment root data is initiated
WHEN:
The system begins the shipment root data retrieval process
THEN:
- The shipment root work area is cleared
- Initialized to spaces
β Consolidated Acceptance Criteria
- The system sets up the database query parameters → the segment type is set to 'SHIPROOT' to specify the data type being requested
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentTypetoSHIPROOT(["Start Step"])
E_SetSegmentTypetoSHIPROOT(["End Step"])
N_SetSegmentTypetoSHIPROOT_Node0{"The system sets up the database
query parameters"}:::decision N_SetSegmentTypetoSHIPROOT_Node0_action["The segment type is set to SHIPROOT
to specify the data type being
requested"]:::main N_SetSegmentTypetoSHIPROOT_Node0 -- Yes --> N_SetSegmentTypetoSHIPROOT_Node0_action N_SetSegmentTypetoSHIPROOT_Node0_action --> E_SetSegmentTypetoSHIPROOT S_SetSegmentTypetoSHIPROOT --> N_SetSegmentTypetoSHIPROOT_Node0 N_SetSegmentTypetoSHIPROOT_Node0 -- No --> E_SetSegmentTypetoSHIPROOT
query parameters"}:::decision N_SetSegmentTypetoSHIPROOT_Node0_action["The segment type is set to SHIPROOT
to specify the data type being
requested"]:::main N_SetSegmentTypetoSHIPROOT_Node0 -- Yes --> N_SetSegmentTypetoSHIPROOT_Node0_action N_SetSegmentTypetoSHIPROOT_Node0_action --> E_SetSegmentTypetoSHIPROOT S_SetSegmentTypetoSHIPROOT --> N_SetSegmentTypetoSHIPROOT_Node0 N_SetSegmentTypetoSHIPROOT_Node0 -- No --> E_SetSegmentTypetoSHIPROOT
File: GCX015E.cbl
GIVEN:
Shipment root parameters are being configured
WHEN:
The system sets up the database query parameters
THEN:
The segment type is set to 'SHIPROOT' to specify the data type being requested
β Consolidated Acceptance Criteria
- The system prepares to retrieve shipment root data → the function code is set to 'GU' to perform a get unique 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_SetFunctionCodetoGUGetUnique(["Start Step"])
E_SetFunctionCodetoGUGetUnique(["End Step"])
N_SetFunctionCodetoGUGetUnique_Node0{"The system prepares to retrieve
shipment root data"}:::decision N_SetFunctionCodetoGUGetUnique_Node0_action["The function code is set to GU to
perform a get unique operation"]:::main N_SetFunctionCodetoGUGetUnique_Node0 -- Yes --> N_SetFunctionCodetoGUGetUnique_Node0_action N_SetFunctionCodetoGUGetUnique_Node0_action --> E_SetFunctionCodetoGUGetUnique S_SetFunctionCodetoGUGetUnique --> N_SetFunctionCodetoGUGetUnique_Node0 N_SetFunctionCodetoGUGetUnique_Node0 -- No --> E_SetFunctionCodetoGUGetUnique
shipment root data"}:::decision N_SetFunctionCodetoGUGetUnique_Node0_action["The function code is set to GU to
perform a get unique operation"]:::main N_SetFunctionCodetoGUGetUnique_Node0 -- Yes --> N_SetFunctionCodetoGUGetUnique_Node0_action N_SetFunctionCodetoGUGetUnique_Node0_action --> E_SetFunctionCodetoGUGetUnique S_SetFunctionCodetoGUGetUnique --> N_SetFunctionCodetoGUGetUnique_Node0 N_SetFunctionCodetoGUGetUnique_Node0 -- No --> E_SetFunctionCodetoGUGetUnique
File: GCX015E.cbl
GIVEN:
Database query parameters are being established
WHEN:
The system prepares to retrieve shipment root data
THEN:
The function code is set to 'GU' to perform a get unique operation
β Consolidated Acceptance Criteria
- The system establishes query criteria → the accept status is set to 'GE' to retrieve records with exact key 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_SetAcceptStatustoGEGetEqual(["Start Step"])
E_SetAcceptStatustoGEGetEqual(["End Step"])
N_SetAcceptStatustoGEGetEqual_Node0{"The system establishes query
criteria"}:::decision N_SetAcceptStatustoGEGetEqual_Node0_action["The accept status is set to GE to
retrieve records with exact key
match"]:::main N_SetAcceptStatustoGEGetEqual_Node0 -- Yes --> N_SetAcceptStatustoGEGetEqual_Node0_action N_SetAcceptStatustoGEGetEqual_Node0_action --> E_SetAcceptStatustoGEGetEqual S_SetAcceptStatustoGEGetEqual --> N_SetAcceptStatustoGEGetEqual_Node0 N_SetAcceptStatustoGEGetEqual_Node0 -- No --> E_SetAcceptStatustoGEGetEqual
criteria"}:::decision N_SetAcceptStatustoGEGetEqual_Node0_action["The accept status is set to GE to
retrieve records with exact key
match"]:::main N_SetAcceptStatustoGEGetEqual_Node0 -- Yes --> N_SetAcceptStatustoGEGetEqual_Node0_action N_SetAcceptStatustoGEGetEqual_Node0_action --> E_SetAcceptStatustoGEGetEqual S_SetAcceptStatustoGEGetEqual --> N_SetAcceptStatustoGEGetEqual_Node0 N_SetAcceptStatustoGEGetEqual_Node0 -- No --> E_SetAcceptStatustoGEGetEqual
File: GCX015E.cbl
GIVEN:
Database retrieval parameters are being configured
WHEN:
The system establishes query criteria
THEN:
The accept status is set to 'GE' to retrieve records with exact key match
β Consolidated Acceptance Criteria
- The system prepares the log information structure → the message field is cleared, action code is cleared, and security byte is set to high 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_PrepareLogInformationStructure(["Start Step"])
E_PrepareLogInformationStructure(["End Step"])
N_PrepareLogInformationStructure_Node0{"The system prepares the log
information structure"}:::decision N_PrepareLogInformationStructure_Node0_action["The message field is cleared,
action code is cleared, and security
byte is set to high value"]:::main N_PrepareLogInformationStructure_Node0 -- Yes --> N_PrepareLogInformationStructure_Node0_action N_PrepareLogInformationStructure_Node0_action --> E_PrepareLogInformationStructure S_PrepareLogInformationStructure --> N_PrepareLogInformationStructure_Node0 N_PrepareLogInformationStructure_Node0 -- No --> E_PrepareLogInformationStructure
information structure"}:::decision N_PrepareLogInformationStructure_Node0_action["The message field is cleared,
action code is cleared, and security
byte is set to high value"]:::main N_PrepareLogInformationStructure_Node0 -- Yes --> N_PrepareLogInformationStructure_Node0_action N_PrepareLogInformationStructure_Node0_action --> E_PrepareLogInformationStructure S_PrepareLogInformationStructure --> N_PrepareLogInformationStructure_Node0 N_PrepareLogInformationStructure_Node0 -- No --> E_PrepareLogInformationStructure
File: GCX015E.cbl
GIVEN:
A customs response needs to be logged
WHEN:
The system prepares the log information structure
THEN:
The message field is cleared, action code is cleared, and security byte is set to high value
β Consolidated Acceptance Criteria
- The system captures transaction context → the sending transaction code and ACF2 user ID are 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_CaptureTransactionCode(["Start Step"])
E_CaptureTransactionCode(["End Step"])
N_CaptureTransactionCode_Node0{"The system captures transaction
context"}:::decision N_CaptureTransactionCode_Node0_action["The sending transaction code and
ACF2 user ID are recorded in the log
entry"]:::main N_CaptureTransactionCode_Node0 -- Yes --> N_CaptureTransactionCode_Node0_action N_CaptureTransactionCode_Node0_action --> E_CaptureTransactionCode S_CaptureTransactionCode --> N_CaptureTransactionCode_Node0 N_CaptureTransactionCode_Node0 -- No --> E_CaptureTransactionCode
context"}:::decision N_CaptureTransactionCode_Node0_action["The sending transaction code and
ACF2 user ID are recorded in the log
entry"]:::main N_CaptureTransactionCode_Node0 -- Yes --> N_CaptureTransactionCode_Node0_action N_CaptureTransactionCode_Node0_action --> E_CaptureTransactionCode S_CaptureTransactionCode --> N_CaptureTransactionCode_Node0 N_CaptureTransactionCode_Node0 -- No --> E_CaptureTransactionCode
File: GCX015E.cbl
GIVEN:
A customs response is being logged
WHEN:
The system captures transaction context
THEN:
- The sending transaction code
- Acf2 user id are recorded in the log entry
β Consolidated Acceptance Criteria
- The system formats the timestamp → the date is formatted by concatenating machine century with K3-01-DATE and time is set from K3-01-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_FormatCurrentDate(["Start Step"])
E_FormatCurrentDate(["End Step"])
N_FormatCurrentDate_Node0{"The system formats the timestamp"}:::decision
N_FormatCurrentDate_Node0_action["The date is formatted by
concatenating machine century with
K3-01-DATE and time is set from
K3-01-TIME"]:::main N_FormatCurrentDate_Node0 -- Yes --> N_FormatCurrentDate_Node0_action N_FormatCurrentDate_Node0_action --> E_FormatCurrentDate S_FormatCurrentDate --> N_FormatCurrentDate_Node0 N_FormatCurrentDate_Node0 -- No --> E_FormatCurrentDate
concatenating machine century with
K3-01-DATE and time is set from
K3-01-TIME"]:::main N_FormatCurrentDate_Node0 -- Yes --> N_FormatCurrentDate_Node0_action N_FormatCurrentDate_Node0_action --> E_FormatCurrentDate S_FormatCurrentDate --> N_FormatCurrentDate_Node0 N_FormatCurrentDate_Node0 -- No --> E_FormatCurrentDate
File: GCX015E.cbl
GIVEN:
A customs response log entry is being created
WHEN:
The system formats the timestamp
THEN:
- The date is formatted by concatenating machine century with k3-01-date
- Time is set from k3-01-time
β Consolidated Acceptance Criteria
- The system sets the entity type indicator → if processing train data then train indicator is set, otherwise cargo indicator 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_SetTrainorCargoIndicator(["Start Step"])
E_SetTrainorCargoIndicator(["End Step"])
N_SetTrainorCargoIndicator_Node0{"The system sets the entity type
indicator"}:::decision N_SetTrainorCargoIndicator_Node0_action["If processing train data then train
indicator is set, otherwise cargo
indicator is set"]:::main N_SetTrainorCargoIndicator_Node0 -- Yes --> N_SetTrainorCargoIndicator_Node0_action N_SetTrainorCargoIndicator_Node0_action --> E_SetTrainorCargoIndicator S_SetTrainorCargoIndicator --> N_SetTrainorCargoIndicator_Node0 N_SetTrainorCargoIndicator_Node0 -- No --> E_SetTrainorCargoIndicator
indicator"}:::decision N_SetTrainorCargoIndicator_Node0_action["If processing train data then train
indicator is set, otherwise cargo
indicator is set"]:::main N_SetTrainorCargoIndicator_Node0 -- Yes --> N_SetTrainorCargoIndicator_Node0_action N_SetTrainorCargoIndicator_Node0_action --> E_SetTrainorCargoIndicator S_SetTrainorCargoIndicator --> N_SetTrainorCargoIndicator_Node0 N_SetTrainorCargoIndicator_Node0 -- No --> E_SetTrainorCargoIndicator
File: GCX015E.cbl
GIVEN:
A customs response is being logged for either train or cargo
WHEN:
The system sets the entity type indicator
THEN:
If processing train data then train indicator is set, otherwise cargo indicator is set
β Consolidated Acceptance Criteria
- The system sets the action code → the action code is set to 'ZZZ' to identify this as a customs response 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_SetActionCodetoZZZ(["Start Step"])
E_SetActionCodetoZZZ(["End Step"])
N_SetActionCodetoZZZ_Node0{"The system sets the action code"}:::decision
N_SetActionCodetoZZZ_Node0_action["The action code is set to ZZZ to
identify this as a customs response
log entry"]:::main N_SetActionCodetoZZZ_Node0 -- Yes --> N_SetActionCodetoZZZ_Node0_action N_SetActionCodetoZZZ_Node0_action --> E_SetActionCodetoZZZ S_SetActionCodetoZZZ --> N_SetActionCodetoZZZ_Node0 N_SetActionCodetoZZZ_Node0 -- No --> E_SetActionCodetoZZZ
identify this as a customs response
log entry"]:::main N_SetActionCodetoZZZ_Node0 -- Yes --> N_SetActionCodetoZZZ_Node0_action N_SetActionCodetoZZZ_Node0_action --> E_SetActionCodetoZZZ S_SetActionCodetoZZZ --> N_SetActionCodetoZZZ_Node0 N_SetActionCodetoZZZ_Node0 -- No --> E_SetActionCodetoZZZ
File: GCX015E.cbl
GIVEN:
A customs response log entry is being created
WHEN:
The system sets the action code
THEN:
The action code is set to 'ZZZ' to identify this as a customs response log entry
β Consolidated Acceptance Criteria
- The system adds the status message → if entity is cargo then cargo log message is used, else if entity is train then train log message is used, else if status should not be updated then no-update log message is used
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddStatusMessage(["Start Step"])
E_AddStatusMessage(["End Step"])
N_AddStatusMessage_Node0{"The system adds the status message"}:::decision
N_AddStatusMessage_Node0_action["If entity is cargo then cargo log
message is used, else if entity is
train then train log message is
used, else if status should not be
updated then no-update log message
is used"]:::main N_AddStatusMessage_Node0 -- Yes --> N_AddStatusMessage_Node0_action N_AddStatusMessage_Node0_action --> E_AddStatusMessage S_AddStatusMessage --> N_AddStatusMessage_Node0 N_AddStatusMessage_Node0 -- No --> E_AddStatusMessage
message is used, else if entity is
train then train log message is
used, else if status should not be
updated then no-update log message
is used"]:::main N_AddStatusMessage_Node0 -- Yes --> N_AddStatusMessage_Node0_action N_AddStatusMessage_Node0_action --> E_AddStatusMessage S_AddStatusMessage --> N_AddStatusMessage_Node0 N_AddStatusMessage_Node0 -- No --> E_AddStatusMessage
File: GCX015E.cbl
GIVEN:
A customs response log entry needs a status message
WHEN:
The system adds the status message
THEN:
If entity is cargo then cargo log message is used, else if entity is train then train log message is used, else if status should not be updated then no-update log message is used
β Consolidated Acceptance Criteria
- The system sends the log entry → the log entry is transmitted to GCT1051E transaction via message queue for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendLogEntrytoGCT1051E(["Start Step"])
E_SendLogEntrytoGCT1051E(["End Step"])
N_SendLogEntrytoGCT1051E_Node0{"The system sends the log entry"}:::decision
N_SendLogEntrytoGCT1051E_Node0_action["The log entry is transmitted to
GCT1051E transaction via message
queue for processing"]:::main N_SendLogEntrytoGCT1051E_Node0 -- Yes --> N_SendLogEntrytoGCT1051E_Node0_action N_SendLogEntrytoGCT1051E_Node0_action --> E_SendLogEntrytoGCT1051E S_SendLogEntrytoGCT1051E --> N_SendLogEntrytoGCT1051E_Node0 N_SendLogEntrytoGCT1051E_Node0 -- No --> E_SendLogEntrytoGCT1051E
GCT1051E transaction via message
queue for processing"]:::main N_SendLogEntrytoGCT1051E_Node0 -- Yes --> N_SendLogEntrytoGCT1051E_Node0_action N_SendLogEntrytoGCT1051E_Node0_action --> E_SendLogEntrytoGCT1051E S_SendLogEntrytoGCT1051E --> N_SendLogEntrytoGCT1051E_Node0 N_SendLogEntrytoGCT1051E_Node0 -- No --> E_SendLogEntrytoGCT1051E
File: GCX015E.cbl
GIVEN:
A complete customs response log entry is prepared
WHEN:
The system sends the log entry
THEN:
The log entry is transmitted to GCT1051E transaction via message queue for processing
β Consolidated Acceptance Criteria
- The system processes additional K1 messages → for each K1 message that is not empty and counter is less than or equal to 999, a separate log entry is created and 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_ProcessNextK1Message(["Start Step"])
E_ProcessNextK1Message(["End Step"])
N_ProcessNextK1Message_Node0{"The system processes additional K1
messages"}:::decision N_ProcessNextK1Message_Node0_action["For each K1 message that is not
empty and counter is less than or
equal to 999, a separate log entry
is created and sent"]:::main N_ProcessNextK1Message_Node0 -- Yes --> N_ProcessNextK1Message_Node0_action N_ProcessNextK1Message_Node0_action --> E_ProcessNextK1Message S_ProcessNextK1Message --> N_ProcessNextK1Message_Node0 N_ProcessNextK1Message_Node0 -- No --> E_ProcessNextK1Message
messages"}:::decision N_ProcessNextK1Message_Node0_action["For each K1 message that is not
empty and counter is less than or
equal to 999, a separate log entry
is created and sent"]:::main N_ProcessNextK1Message_Node0 -- Yes --> N_ProcessNextK1Message_Node0_action N_ProcessNextK1Message_Node0_action --> E_ProcessNextK1Message S_ProcessNextK1Message --> N_ProcessNextK1Message_Node0 N_ProcessNextK1Message_Node0 -- No --> E_ProcessNextK1Message
File: GCX015E.cbl
GIVEN:
Multiple K1 messages exist for logging
WHEN:
The system processes additional K1 messages
THEN:
- For each k1 message that is not empty
- Counter is less than or equal to 999, a separate log entry is created
- Sent
β Consolidated Acceptance Criteria
- The system creates an individual K1 log entry → the log entry contains the same transaction context with train/cargo identifier, action code 'ZZZ', and the specific K1 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_CreateAdditionalLogEntry(["Start Step"])
E_CreateAdditionalLogEntry(["End Step"])
N_CreateAdditionalLogEntry_Node0{"The system creates an individual K1
log entry"}:::decision N_CreateAdditionalLogEntry_Node0_action["The log entry contains the same
transaction context with traincargo
identifier, action code ZZZ , and
the specific K1 message content"]:::main N_CreateAdditionalLogEntry_Node0 -- Yes --> N_CreateAdditionalLogEntry_Node0_action N_CreateAdditionalLogEntry_Node0_action --> E_CreateAdditionalLogEntry S_CreateAdditionalLogEntry --> N_CreateAdditionalLogEntry_Node0 N_CreateAdditionalLogEntry_Node0 -- No --> E_CreateAdditionalLogEntry
log entry"}:::decision N_CreateAdditionalLogEntry_Node0_action["The log entry contains the same
transaction context with traincargo
identifier, action code ZZZ , and
the specific K1 message content"]:::main N_CreateAdditionalLogEntry_Node0 -- Yes --> N_CreateAdditionalLogEntry_Node0_action N_CreateAdditionalLogEntry_Node0_action --> E_CreateAdditionalLogEntry S_CreateAdditionalLogEntry --> N_CreateAdditionalLogEntry_Node0 N_CreateAdditionalLogEntry_Node0 -- No --> E_CreateAdditionalLogEntry
File: GCX015E.cbl
GIVEN:
A non-empty K1 message needs to be logged
WHEN:
The system creates an individual K1 log entry
THEN:
The log entry contains the same transaction context with train/cargo identifier, action code 'ZZZ', and the specific K1 message content
β Consolidated Acceptance Criteria
- The system needs to update manifest acknowledgment timestamps → the T1 table entry is retrieved using table ID 'T1' and empty sequence ID
- The system needs to update acknowledgment timestamps → the system retrieves the T1 table entry using table ID 'T1' and empty sequence 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_RetrieveT1TableEntry(["Start Step"])
E_RetrieveT1TableEntry(["End Step"])
N_RetrieveT1TableEntry_Node0{"The system needs to update manifest
acknowledgment timestamps"}:::decision N_RetrieveT1TableEntry_Node0_action["The T1 table entry is retrieved
using table ID T1 and empty sequence
ID"]:::main N_RetrieveT1TableEntry_Node0 -- Yes --> N_RetrieveT1TableEntry_Node0_action N_RetrieveT1TableEntry_Node0_action --> E_RetrieveT1TableEntry S_RetrieveT1TableEntry --> N_RetrieveT1TableEntry_Node0 N_RetrieveT1TableEntry_Node1{"The system needs to update
acknowledgment timestamps"}:::decision N_RetrieveT1TableEntry_Node1_action["The system retrieves the T1 table
entry using table ID T1 and empty
sequence ID"]:::main N_RetrieveT1TableEntry_Node1 -- Yes --> N_RetrieveT1TableEntry_Node1_action N_RetrieveT1TableEntry_Node1_action --> E_RetrieveT1TableEntry N_RetrieveT1TableEntry_Node0 -- No --> N_RetrieveT1TableEntry_Node1 N_RetrieveT1TableEntry_Node1 -- No --> E_RetrieveT1TableEntry
acknowledgment timestamps"}:::decision N_RetrieveT1TableEntry_Node0_action["The T1 table entry is retrieved
using table ID T1 and empty sequence
ID"]:::main N_RetrieveT1TableEntry_Node0 -- Yes --> N_RetrieveT1TableEntry_Node0_action N_RetrieveT1TableEntry_Node0_action --> E_RetrieveT1TableEntry S_RetrieveT1TableEntry --> N_RetrieveT1TableEntry_Node0 N_RetrieveT1TableEntry_Node1{"The system needs to update
acknowledgment timestamps"}:::decision N_RetrieveT1TableEntry_Node1_action["The system retrieves the T1 table
entry using table ID T1 and empty
sequence ID"]:::main N_RetrieveT1TableEntry_Node1 -- Yes --> N_RetrieveT1TableEntry_Node1_action N_RetrieveT1TableEntry_Node1_action --> E_RetrieveT1TableEntry N_RetrieveT1TableEntry_Node0 -- No --> N_RetrieveT1TableEntry_Node1 N_RetrieveT1TableEntry_Node1 -- No --> E_RetrieveT1TableEntry
File: GCX015E.cbl
GIVEN:
A manifest processing request is initiated
WHEN:
The system needs to update manifest acknowledgment timestamps
THEN:
The T1 table entry is retrieved using table ID 'T1' and empty sequence ID
File: GCX015E.cbl
GIVEN:
A manifest processing request is initiated
WHEN:
The system needs to update acknowledgment timestamps
THEN:
The system retrieves the T1 table entry using table ID 'T1' and empty sequence ID
β Consolidated Acceptance Criteria
- The table lookup operation completes → if the T1 table entry is not found, the system terminates processing with error message 'T1 CHECK TABLE ENTRY NOT FOUND'
- The T1 table entry retrieval operation completes → if the T1 table entry is not found, the system must terminate processing with an error message 'T1 CHECK TABLE ENTRY 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_T1TableEntryFound(["Start Step"])
E_T1TableEntryFound(["End Step"])
N_T1TableEntryFound_Node0{"The table lookup operation
completes"}:::decision N_T1TableEntryFound_Node0_action["If the T1 table entry is not found,
the system terminates processing
with error message T1 CHECK TABLE
ENTRY NOT FOUND"]:::main N_T1TableEntryFound_Node0 -- Yes --> N_T1TableEntryFound_Node0_action N_T1TableEntryFound_Node0_action --> E_T1TableEntryFound S_T1TableEntryFound --> N_T1TableEntryFound_Node0 N_T1TableEntryFound_Node1{"The T1 table entry retrieval
operation completes"}:::decision N_T1TableEntryFound_Node1_action["If the T1 table entry is not found,
the system must terminate processing
with an error message T1 CHECK TABLE
ENTRY NOT FOUND"]:::exclusion N_T1TableEntryFound_Node1 -- Yes -->|Alternative| N_T1TableEntryFound_Node1_action N_T1TableEntryFound_Node1_action --> E_T1TableEntryFound N_T1TableEntryFound_Node0 -- No --> N_T1TableEntryFound_Node1 N_T1TableEntryFound_Node1 -- No --> E_T1TableEntryFound
completes"}:::decision N_T1TableEntryFound_Node0_action["If the T1 table entry is not found,
the system terminates processing
with error message T1 CHECK TABLE
ENTRY NOT FOUND"]:::main N_T1TableEntryFound_Node0 -- Yes --> N_T1TableEntryFound_Node0_action N_T1TableEntryFound_Node0_action --> E_T1TableEntryFound S_T1TableEntryFound --> N_T1TableEntryFound_Node0 N_T1TableEntryFound_Node1{"The T1 table entry retrieval
operation completes"}:::decision N_T1TableEntryFound_Node1_action["If the T1 table entry is not found,
the system must terminate processing
with an error message T1 CHECK TABLE
ENTRY NOT FOUND"]:::exclusion N_T1TableEntryFound_Node1 -- Yes -->|Alternative| N_T1TableEntryFound_Node1_action N_T1TableEntryFound_Node1_action --> E_T1TableEntryFound N_T1TableEntryFound_Node0 -- No --> N_T1TableEntryFound_Node1 N_T1TableEntryFound_Node1 -- No --> E_T1TableEntryFound
File: GCX015E.cbl
GIVEN:
A request to retrieve T1 table entry has been made
WHEN:
The table lookup operation completes
THEN:
If the T1 table entry is not found, the system terminates processing with error message 'T1 CHECK TABLE ENTRY NOT FOUND'
File: GCX015E.cbl
GIVEN:
A request to retrieve T1 table entry has been made
WHEN:
The T1 table entry retrieval operation completes
THEN:
If the T1 table entry is not found, the system must terminate processing with an error message 'T1 CHECK TABLE ENTRY NOT FOUND'
β Consolidated Acceptance Criteria
- The system prepares to update acknowledgment timestamps → current machine date, century, and time are captured from 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_GetCurrentDateandTime(["Start Step"])
E_GetCurrentDateandTime(["End Step"])
N_GetCurrentDateandTime_Node0{"The system prepares to update
acknowledgment timestamps"}:::decision N_GetCurrentDateandTime_Node0_action["Current machine date, century, and
time are captured from the system"]:::main N_GetCurrentDateandTime_Node0 -- Yes --> N_GetCurrentDateandTime_Node0_action N_GetCurrentDateandTime_Node0_action --> E_GetCurrentDateandTime S_GetCurrentDateandTime --> N_GetCurrentDateandTime_Node0 N_GetCurrentDateandTime_Node0 -- No --> E_GetCurrentDateandTime
acknowledgment timestamps"}:::decision N_GetCurrentDateandTime_Node0_action["Current machine date, century, and
time are captured from the system"]:::main N_GetCurrentDateandTime_Node0 -- Yes --> N_GetCurrentDateandTime_Node0_action N_GetCurrentDateandTime_Node0_action --> E_GetCurrentDateandTime S_GetCurrentDateandTime --> N_GetCurrentDateandTime_Node0 N_GetCurrentDateandTime_Node0 -- No --> E_GetCurrentDateandTime
File: GCX015E.cbl
GIVEN:
T1 table entry exists and timestamp update is required
WHEN:
The system prepares to update acknowledgment timestamps
THEN:
Current machine date, century, and time are captured from the system
β Consolidated Acceptance Criteria
- If the manifest type code from the message → the system routes to appropriate timestamp update based on manifest type: 'P' for 309 acknowledgment, 'H' for 353 acknowledgment, or 'S' for 358 acknowledgment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManifestTypeCode(["Start Step"])
E_ManifestTypeCode(["End Step"])
N_ManifestTypeCode_Node0{"The system evaluates the manifest
type code from the message"}:::decision N_ManifestTypeCode_Node0_action["The system routes to appropriate
timestamp update based on manifest
type: P for 309 acknowledgment, H
for 353 acknowledgment, or S for 358
acknowledgment"]:::main N_ManifestTypeCode_Node0 -- Yes --> N_ManifestTypeCode_Node0_action N_ManifestTypeCode_Node0_action --> E_ManifestTypeCode S_ManifestTypeCode --> N_ManifestTypeCode_Node0 N_ManifestTypeCode_Node0 -- No --> E_ManifestTypeCode
type code from the message"}:::decision N_ManifestTypeCode_Node0_action["The system routes to appropriate
timestamp update based on manifest
type: P for 309 acknowledgment, H
for 353 acknowledgment, or S for 358
acknowledgment"]:::main N_ManifestTypeCode_Node0 -- Yes --> N_ManifestTypeCode_Node0_action N_ManifestTypeCode_Node0_action --> E_ManifestTypeCode S_ManifestTypeCode --> N_ManifestTypeCode_Node0 N_ManifestTypeCode_Node0 -- No --> E_ManifestTypeCode
File: GCX015E.cbl
GIVEN:
Current date and time have been captured and manifest type code is available
WHEN:
The system evaluates the manifest type code from the message
THEN:
The system routes to appropriate timestamp update based on manifest type: 'P' for 309 acknowledgment, 'H' for 353 acknowledgment, or 'S' for 358 acknowledgment
β Consolidated Acceptance Criteria
- The system processes the manifest acknowledgment → the 309 acknowledgment timestamp is updated with current machine date (YYMMDD format starting at position 3), century (positions 1-2), and time (HHMM format starting at position 9)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update309AcknowledgmentTimestampTypePManifest(["Start Step"])
E_Update309AcknowledgmentTimestampTypePManifest(["End Step"])
N_Update309AcknowledgmentTimestampTypePManifest_Node0{"The system processes the manifest
acknowledgment"}:::decision N_Update309AcknowledgmentTimestampTypePManifest_Node0_action["The 309 acknowledgment timestamp is
updated with current machine date
YYMMDD format starting at position
3, century positions 1-2, and time
HHMM format starting at position 9"]:::main N_Update309AcknowledgmentTimestampTypePManifest_Node0 -- Yes --> N_Update309AcknowledgmentTimestampTypePManifest_Node0_action N_Update309AcknowledgmentTimestampTypePManifest_Node0_action --> E_Update309AcknowledgmentTimestampTypePManifest S_Update309AcknowledgmentTimestampTypePManifest --> N_Update309AcknowledgmentTimestampTypePManifest_Node0 N_Update309AcknowledgmentTimestampTypePManifest_Node0 -- No --> E_Update309AcknowledgmentTimestampTypePManifest
acknowledgment"}:::decision N_Update309AcknowledgmentTimestampTypePManifest_Node0_action["The 309 acknowledgment timestamp is
updated with current machine date
YYMMDD format starting at position
3, century positions 1-2, and time
HHMM format starting at position 9"]:::main N_Update309AcknowledgmentTimestampTypePManifest_Node0 -- Yes --> N_Update309AcknowledgmentTimestampTypePManifest_Node0_action N_Update309AcknowledgmentTimestampTypePManifest_Node0_action --> E_Update309AcknowledgmentTimestampTypePManifest S_Update309AcknowledgmentTimestampTypePManifest --> N_Update309AcknowledgmentTimestampTypePManifest_Node0 N_Update309AcknowledgmentTimestampTypePManifest_Node0 -- No --> E_Update309AcknowledgmentTimestampTypePManifest
File: GCX015E.cbl
GIVEN:
Manifest type code is 'P' and current date/time are available
WHEN:
The system processes the manifest acknowledgment
THEN:
The 309 acknowledgment timestamp is updated with current machine date (YYMMDD format starting at position 3), century (positions 1-2), and time (HHMM format starting at position 9)
β Consolidated Acceptance Criteria
- The system processes the delete manifest acknowledgment → the 353 acknowledgment timestamp is updated with current machine date (YYMMDD format starting at position 3), century (positions 1-2), and time (HHMM format starting at position 9)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update353AcknowledgmentTimestampTypeHDeleteManifest(["Start Step"])
E_Update353AcknowledgmentTimestampTypeHDeleteManifest(["End Step"])
N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0{"The system processes the delete
manifest acknowledgment"}:::decision N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0_action["The 353 acknowledgment timestamp is
updated with current machine date
YYMMDD format starting at position
3, century positions 1-2, and time
HHMM format starting at position 9"]:::main N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0 -- Yes --> N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0_action N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0_action --> E_Update353AcknowledgmentTimestampTypeHDeleteManifest S_Update353AcknowledgmentTimestampTypeHDeleteManifest --> N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0 N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0 -- No --> E_Update353AcknowledgmentTimestampTypeHDeleteManifest
manifest acknowledgment"}:::decision N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0_action["The 353 acknowledgment timestamp is
updated with current machine date
YYMMDD format starting at position
3, century positions 1-2, and time
HHMM format starting at position 9"]:::main N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0 -- Yes --> N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0_action N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0_action --> E_Update353AcknowledgmentTimestampTypeHDeleteManifest S_Update353AcknowledgmentTimestampTypeHDeleteManifest --> N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0 N_Update353AcknowledgmentTimestampTypeHDeleteManifest_Node0 -- No --> E_Update353AcknowledgmentTimestampTypeHDeleteManifest
File: GCX015E.cbl
GIVEN:
Manifest type code is 'H' and current date/time are available
WHEN:
The system processes the delete manifest acknowledgment
THEN:
The 353 acknowledgment timestamp is updated with current machine date (YYMMDD format starting at position 3), century (positions 1-2), and time (HHMM format starting at position 9)
β Consolidated Acceptance Criteria
- The system processes the status manifest acknowledgment → the 358 acknowledgment timestamp is updated with current machine date (YYMMDD format starting at position 3), century (positions 1-2), and time (HHMM format starting at position 9)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update358AcknowledgmentTimestampTypeSStatusManifest(["Start Step"])
E_Update358AcknowledgmentTimestampTypeSStatusManifest(["End Step"])
N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0{"The system processes the status
manifest acknowledgment"}:::decision N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0_action["The 358 acknowledgment timestamp is
updated with current machine date
YYMMDD format starting at position
3, century positions 1-2, and time
HHMM format starting at position 9"]:::main N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0 -- Yes --> N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0_action N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0_action --> E_Update358AcknowledgmentTimestampTypeSStatusManifest S_Update358AcknowledgmentTimestampTypeSStatusManifest --> N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0 N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0 -- No --> E_Update358AcknowledgmentTimestampTypeSStatusManifest
manifest acknowledgment"}:::decision N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0_action["The 358 acknowledgment timestamp is
updated with current machine date
YYMMDD format starting at position
3, century positions 1-2, and time
HHMM format starting at position 9"]:::main N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0 -- Yes --> N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0_action N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0_action --> E_Update358AcknowledgmentTimestampTypeSStatusManifest S_Update358AcknowledgmentTimestampTypeSStatusManifest --> N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0 N_Update358AcknowledgmentTimestampTypeSStatusManifest_Node0 -- No --> E_Update358AcknowledgmentTimestampTypeSStatusManifest
File: GCX015E.cbl
GIVEN:
Manifest type code is 'S' and current date/time are available
WHEN:
The system processes the status manifest acknowledgment
THEN:
The 358 acknowledgment timestamp is updated with current machine date (YYMMDD format starting at position 3), century (positions 1-2), and time (HHMM format starting at position 9)
β Consolidated Acceptance Criteria
- The timestamp update is complete → the updated T1 table entry is saved back to the table using replace function
- The timestamp update is complete → the updated T1 table entry must be saved back to the configuration database using replace 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_SaveUpdatedT1TableEntry(["Start Step"])
E_SaveUpdatedT1TableEntry(["End Step"])
N_SaveUpdatedT1TableEntry_Node0{"The timestamp update is complete"}:::decision
N_SaveUpdatedT1TableEntry_Node0_action["The updated T1 table entry is saved
back to the table using replace
function"]:::main N_SaveUpdatedT1TableEntry_Node0 -- Yes --> N_SaveUpdatedT1TableEntry_Node0_action N_SaveUpdatedT1TableEntry_Node0_action --> E_SaveUpdatedT1TableEntry S_SaveUpdatedT1TableEntry --> N_SaveUpdatedT1TableEntry_Node0 N_SaveUpdatedT1TableEntry_Node1{"The timestamp update is complete"}:::decision N_SaveUpdatedT1TableEntry_Node1_action["The updated T1 table entry must be
saved back to the configuration
database using replace function"]:::main N_SaveUpdatedT1TableEntry_Node1 -- Yes --> N_SaveUpdatedT1TableEntry_Node1_action N_SaveUpdatedT1TableEntry_Node1_action --> E_SaveUpdatedT1TableEntry N_SaveUpdatedT1TableEntry_Node0 -- No --> N_SaveUpdatedT1TableEntry_Node1 N_SaveUpdatedT1TableEntry_Node1 -- No --> E_SaveUpdatedT1TableEntry
back to the table using replace
function"]:::main N_SaveUpdatedT1TableEntry_Node0 -- Yes --> N_SaveUpdatedT1TableEntry_Node0_action N_SaveUpdatedT1TableEntry_Node0_action --> E_SaveUpdatedT1TableEntry S_SaveUpdatedT1TableEntry --> N_SaveUpdatedT1TableEntry_Node0 N_SaveUpdatedT1TableEntry_Node1{"The timestamp update is complete"}:::decision N_SaveUpdatedT1TableEntry_Node1_action["The updated T1 table entry must be
saved back to the configuration
database using replace function"]:::main N_SaveUpdatedT1TableEntry_Node1 -- Yes --> N_SaveUpdatedT1TableEntry_Node1_action N_SaveUpdatedT1TableEntry_Node1_action --> E_SaveUpdatedT1TableEntry N_SaveUpdatedT1TableEntry_Node0 -- No --> N_SaveUpdatedT1TableEntry_Node1 N_SaveUpdatedT1TableEntry_Node1 -- No --> E_SaveUpdatedT1TableEntry
File: GCX015E.cbl
GIVEN:
The appropriate acknowledgment timestamp has been updated in the T1 table entry
WHEN:
The timestamp update is complete
THEN:
The updated T1 table entry is saved back to the table using replace function
File: GCX015E.cbl
GIVEN:
A T1 table entry has been updated with acknowledgment timestamp
WHEN:
The timestamp update is complete
THEN:
The updated T1 table entry must be saved back to the configuration database using replace function
β Consolidated Acceptance Criteria
- The system sets security parameters → the customs security must be set to high 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_SetSecuritytoHighValues(["Start Step"])
E_SetSecuritytoHighValues(["End Step"])
N_SetSecuritytoHighValues_Node0{"The system sets security parameters"}:::decision
N_SetSecuritytoHighValues_Node0_action["The customs security must be set to
high values"]:::main N_SetSecuritytoHighValues_Node0 -- Yes --> N_SetSecuritytoHighValues_Node0_action N_SetSecuritytoHighValues_Node0_action --> E_SetSecuritytoHighValues S_SetSecuritytoHighValues --> N_SetSecuritytoHighValues_Node0 N_SetSecuritytoHighValues_Node0 -- No --> E_SetSecuritytoHighValues
high values"]:::main N_SetSecuritytoHighValues_Node0 -- Yes --> N_SetSecuritytoHighValues_Node0_action N_SetSecuritytoHighValues_Node0_action --> E_SetSecuritytoHighValues S_SetSecuritytoHighValues --> N_SetSecuritytoHighValues_Node0 N_SetSecuritytoHighValues_Node0 -- No --> E_SetSecuritytoHighValues
File: GCX015E.cbl
GIVEN:
A customs transaction is being prepared
WHEN:
The system sets security parameters
THEN:
The customs security must be set to high values
β Consolidated Acceptance Criteria
- The system assigns the customs code → the customs code must be set to 'A' for arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCustomsCodetoA(["Start Step"])
E_SetCustomsCodetoA(["End Step"])
N_SetCustomsCodetoA_Node0{"The system assigns the customs code"}:::decision
N_SetCustomsCodetoA_Node0_action["The customs code must be set to A
for arrival processing"]:::main N_SetCustomsCodetoA_Node0 -- Yes --> N_SetCustomsCodetoA_Node0_action N_SetCustomsCodetoA_Node0_action --> E_SetCustomsCodetoA S_SetCustomsCodetoA --> N_SetCustomsCodetoA_Node0 N_SetCustomsCodetoA_Node0 -- No --> E_SetCustomsCodetoA
for arrival processing"]:::main N_SetCustomsCodetoA_Node0 -- Yes --> N_SetCustomsCodetoA_Node0_action N_SetCustomsCodetoA_Node0_action --> E_SetCustomsCodetoA S_SetCustomsCodetoA --> N_SetCustomsCodetoA_Node0 N_SetCustomsCodetoA_Node0 -- No --> E_SetCustomsCodetoA
File: GCX015E.cbl
GIVEN:
A customs transaction is being prepared for a train
WHEN:
The system assigns the customs code
THEN:
The customs code must be set to 'A' for arrival processing
β Consolidated Acceptance Criteria
- The system prepares the customs transaction → the customs train ID must be set from the train list US customer 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_SetTrainIDfromTrainList(["Start Step"])
E_SetTrainIDfromTrainList(["End Step"])
N_SetTrainIDfromTrainList_Node0{"The system prepares the customs
transaction"}:::decision N_SetTrainIDfromTrainList_Node0_action["The customs train ID must be set
from the train list US customer
train ID"]:::main N_SetTrainIDfromTrainList_Node0 -- Yes --> N_SetTrainIDfromTrainList_Node0_action N_SetTrainIDfromTrainList_Node0_action --> E_SetTrainIDfromTrainList S_SetTrainIDfromTrainList --> N_SetTrainIDfromTrainList_Node0 N_SetTrainIDfromTrainList_Node0 -- No --> E_SetTrainIDfromTrainList
transaction"}:::decision N_SetTrainIDfromTrainList_Node0_action["The customs train ID must be set
from the train list US customer
train ID"]:::main N_SetTrainIDfromTrainList_Node0 -- Yes --> N_SetTrainIDfromTrainList_Node0_action N_SetTrainIDfromTrainList_Node0_action --> E_SetTrainIDfromTrainList S_SetTrainIDfromTrainList --> N_SetTrainIDfromTrainList_Node0 N_SetTrainIDfromTrainList_Node0 -- No --> E_SetTrainIDfromTrainList
File: GCX015E.cbl
GIVEN:
A train record with a valid US customer train ID exists
WHEN:
The system prepares the customs transaction
THEN:
The customs train ID must be set from the train list US customer train ID
β Consolidated Acceptance Criteria
- The system prepares the customs transaction → both the customs to-station and from-station must be set from the train's CP train from 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_SetStationInformation(["Start Step"])
E_SetStationInformation(["End Step"])
N_SetStationInformation_Node0{"The system prepares the customs
transaction"}:::decision N_SetStationInformation_Node0_action["Both the customs to-station and
from-station must be set from the
train s CP train from station"]:::main N_SetStationInformation_Node0 -- Yes --> N_SetStationInformation_Node0_action N_SetStationInformation_Node0_action --> E_SetStationInformation S_SetStationInformation --> N_SetStationInformation_Node0 N_SetStationInformation_Node0 -- No --> E_SetStationInformation
transaction"}:::decision N_SetStationInformation_Node0_action["Both the customs to-station and
from-station must be set from the
train s CP train from station"]:::main N_SetStationInformation_Node0 -- Yes --> N_SetStationInformation_Node0_action N_SetStationInformation_Node0_action --> E_SetStationInformation S_SetStationInformation --> N_SetStationInformation_Node0 N_SetStationInformation_Node0 -- No --> E_SetStationInformation
File: GCX015E.cbl
GIVEN:
A train record contains station information
WHEN:
The system prepares the customs transaction
THEN:
- Both the customs to-station
- From-station must be set from the train's cp train from station
β Consolidated Acceptance Criteria
- The system prepares the customs transaction → the customs consist number must be set from the train's CP train consist 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_SetConsistNumber(["Start Step"])
E_SetConsistNumber(["End Step"])
N_SetConsistNumber_Node0{"The system prepares the customs
transaction"}:::decision N_SetConsistNumber_Node0_action["The customs consist number must be
set from the train s CP train
consist number"]:::main N_SetConsistNumber_Node0 -- Yes --> N_SetConsistNumber_Node0_action N_SetConsistNumber_Node0_action --> E_SetConsistNumber S_SetConsistNumber --> N_SetConsistNumber_Node0 N_SetConsistNumber_Node0 -- No --> E_SetConsistNumber
transaction"}:::decision N_SetConsistNumber_Node0_action["The customs consist number must be
set from the train s CP train
consist number"]:::main N_SetConsistNumber_Node0 -- Yes --> N_SetConsistNumber_Node0_action N_SetConsistNumber_Node0_action --> E_SetConsistNumber S_SetConsistNumber --> N_SetConsistNumber_Node0 N_SetConsistNumber_Node0 -- No --> E_SetConsistNumber
File: GCX015E.cbl
GIVEN:
A train record contains a consist number
WHEN:
The system prepares the customs transaction
THEN:
The customs consist number must be set from the train's CP train consist number
β Consolidated Acceptance Criteria
- The system prepares the customs transaction → the customs date must be set from the train's estimated date of arrival and the customs time must be set from the train's estimated time of 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_SetDateandTime(["Start Step"])
E_SetDateandTime(["End Step"])
N_SetDateandTime_Node0{"The system prepares the customs
transaction"}:::decision N_SetDateandTime_Node0_action["The customs date must be set from
the train s estimated date of
arrival and the customs time must be
set from the train s estimated time
of arrival"]:::main N_SetDateandTime_Node0 -- Yes --> N_SetDateandTime_Node0_action N_SetDateandTime_Node0_action --> E_SetDateandTime S_SetDateandTime --> N_SetDateandTime_Node0 N_SetDateandTime_Node0 -- No --> E_SetDateandTime
transaction"}:::decision N_SetDateandTime_Node0_action["The customs date must be set from
the train s estimated date of
arrival and the customs time must be
set from the train s estimated time
of arrival"]:::main N_SetDateandTime_Node0 -- Yes --> N_SetDateandTime_Node0_action N_SetDateandTime_Node0_action --> E_SetDateandTime S_SetDateandTime --> N_SetDateandTime_Node0 N_SetDateandTime_Node0 -- No --> E_SetDateandTime
File: GCX015E.cbl
GIVEN:
A train record contains estimated arrival information
WHEN:
The system prepares the customs transaction
THEN:
- The customs date must be set from the train's estimated date of arrival
- The customs time must be set from the train's estimated time of arrival
β Consolidated Acceptance Criteria
- Car processing begins → the car counter must be initialized to 1 and the secondary counter must be initialized to 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCarCounter(["Start Step"])
E_InitializeCarCounter(["End Step"])
N_InitializeCarCounter_Node0{"Car processing begins"}:::decision
N_InitializeCarCounter_Node0_action["The car counter must be initialized
to 1 and the secondary counter must
be initialized to 2"]:::main N_InitializeCarCounter_Node0 -- Yes --> N_InitializeCarCounter_Node0_action N_InitializeCarCounter_Node0_action --> E_InitializeCarCounter S_InitializeCarCounter --> N_InitializeCarCounter_Node0 N_InitializeCarCounter_Node0 -- No --> E_InitializeCarCounter
to 1 and the secondary counter must
be initialized to 2"]:::main N_InitializeCarCounter_Node0 -- Yes --> N_InitializeCarCounter_Node0_action N_InitializeCarCounter_Node0_action --> E_InitializeCarCounter S_InitializeCarCounter --> N_InitializeCarCounter_Node0 N_InitializeCarCounter_Node0 -- No --> E_InitializeCarCounter
File: GCX015E.cbl
GIVEN:
The system is preparing to load car information
WHEN:
Car processing begins
THEN:
- The car counter must be initialized to 1
- The secondary counter must be initialized to 2
β Consolidated Acceptance Criteria
- The system processes car information for customs → cars with container indicator 'C' must be skipped and not included in the customs 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_SkipContainerCar(["Start Step"])
E_SkipContainerCar(["End Step"])
N_SkipContainerCar_Node0{"The system processes car
information for customs"}:::decision N_SkipContainerCar_Node0_action["Cars with container indicator C
must be skipped and not included in
the customs transaction"]:::main N_SkipContainerCar_Node0 -- Yes --> N_SkipContainerCar_Node0_action N_SkipContainerCar_Node0_action --> E_SkipContainerCar S_SkipContainerCar --> N_SkipContainerCar_Node0 N_SkipContainerCar_Node0 -- No --> E_SkipContainerCar
information for customs"}:::decision N_SkipContainerCar_Node0_action["Cars with container indicator C
must be skipped and not included in
the customs transaction"]:::main N_SkipContainerCar_Node0 -- Yes --> N_SkipContainerCar_Node0_action N_SkipContainerCar_Node0_action --> E_SkipContainerCar S_SkipContainerCar --> N_SkipContainerCar_Node0 N_SkipContainerCar_Node0 -- No --> E_SkipContainerCar
File: GCX015E.cbl
GIVEN:
A car in the train has a container indicator
WHEN:
The system processes car information for customs
THEN:
- Cars with container indicator 'c' must be skipped
- Not included in the customs transaction
β Consolidated Acceptance Criteria
- The system sets car type information → if equipment type is 'LO', set car kind to 'L'; if equipment type is 'ET', set car kind to 'E'; otherwise, set car kind 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_SetCarTypeInformation(["Start Step"])
E_SetCarTypeInformation(["End Step"])
N_SetCarTypeInformation_Node0{"The system sets car type
information"}:::decision N_SetCarTypeInformation_Node0_action["If equipment type is LO , set car
kind to L if equipment type is ET ,
set car kind to E otherwise, set car
kind to spaces"]:::main N_SetCarTypeInformation_Node0 -- Yes --> N_SetCarTypeInformation_Node0_action N_SetCarTypeInformation_Node0_action --> E_SetCarTypeInformation S_SetCarTypeInformation --> N_SetCarTypeInformation_Node0 N_SetCarTypeInformation_Node0 -- No --> E_SetCarTypeInformation
information"}:::decision N_SetCarTypeInformation_Node0_action["If equipment type is LO , set car
kind to L if equipment type is ET ,
set car kind to E otherwise, set car
kind to spaces"]:::main N_SetCarTypeInformation_Node0 -- Yes --> N_SetCarTypeInformation_Node0_action N_SetCarTypeInformation_Node0_action --> E_SetCarTypeInformation S_SetCarTypeInformation --> N_SetCarTypeInformation_Node0 N_SetCarTypeInformation_Node0 -- No --> E_SetCarTypeInformation
File: GCX015E.cbl
GIVEN:
A car has an equipment type designation
WHEN:
The system sets car type information
THEN:
If equipment type is 'LO', set car kind to 'L'; if equipment type is 'ET', set car kind to 'E'; otherwise, set car kind to spaces
β Consolidated Acceptance Criteria
- The system checks for more cars to process → continue processing while the car counter is less than or equal to the equipment quantity and the secondary counter is less than or equal to 500
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCarstoProcess(["Start Step"])
E_MoreCarstoProcess(["End Step"])
N_MoreCarstoProcess_Node0{"The system checks for more cars to
process"}:::decision N_MoreCarstoProcess_Node0_action["Continue processing while the car
counter is less than or equal to the
equipment quantity and the secondary
counter is less than or equal to 500"]:::main N_MoreCarstoProcess_Node0 -- Yes --> N_MoreCarstoProcess_Node0_action N_MoreCarstoProcess_Node0_action --> E_MoreCarstoProcess S_MoreCarstoProcess --> N_MoreCarstoProcess_Node0 N_MoreCarstoProcess_Node0 -- No --> E_MoreCarstoProcess
process"}:::decision N_MoreCarstoProcess_Node0_action["Continue processing while the car
counter is less than or equal to the
equipment quantity and the secondary
counter is less than or equal to 500"]:::main N_MoreCarstoProcess_Node0 -- Yes --> N_MoreCarstoProcess_Node0_action N_MoreCarstoProcess_Node0_action --> E_MoreCarstoProcess S_MoreCarstoProcess --> N_MoreCarstoProcess_Node0 N_MoreCarstoProcess_Node0 -- No --> E_MoreCarstoProcess
File: GCX015E.cbl
GIVEN:
The system is processing cars in a train
WHEN:
The system checks for more cars to process
THEN:
- Continue processing while the car counter is less than or equal to the equipment quantity
- The secondary counter is less than or equal to 500
β Consolidated Acceptance Criteria
- The system submits the transaction → the transaction must be sent via CIMS using the change function and alternate PCB
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendTransactionviaCIMS(["Start Step"])
E_SendTransactionviaCIMS(["End Step"])
N_SendTransactionviaCIMS_Node0{"The system submits the transaction"}:::decision
N_SendTransactionviaCIMS_Node0_action["The transaction must be sent via
CIMS using the change function and
alternate PCB"]:::main N_SendTransactionviaCIMS_Node0 -- Yes --> N_SendTransactionviaCIMS_Node0_action N_SendTransactionviaCIMS_Node0_action --> E_SendTransactionviaCIMS S_SendTransactionviaCIMS --> N_SendTransactionviaCIMS_Node0 N_SendTransactionviaCIMS_Node0 -- No --> E_SendTransactionviaCIMS
CIMS using the change function and
alternate PCB"]:::main N_SendTransactionviaCIMS_Node0 -- Yes --> N_SendTransactionviaCIMS_Node0_action N_SendTransactionviaCIMS_Node0_action --> E_SendTransactionviaCIMS S_SendTransactionviaCIMS --> N_SendTransactionviaCIMS_Node0 N_SendTransactionviaCIMS_Node0 -- No --> E_SendTransactionviaCIMS
File: GCX015E.cbl
GIVEN:
A complete customs transaction has been prepared
WHEN:
The system submits the transaction
THEN:
- The transaction must be sent via cims using the change function
- Alternate pcb
β Consolidated Acceptance Criteria
- The system writes to the message queue → the message must be written using WRITMSGL with the transaction message, length, and module 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_WriteMessagetoQueue(["Start Step"])
E_WriteMessagetoQueue(["End Step"])
N_WriteMessagetoQueue_Node0{"The system writes to the message
queue"}:::decision N_WriteMessagetoQueue_Node0_action["The message must be written using
WRITMSGL with the transaction
message, length, and module name"]:::main N_WriteMessagetoQueue_Node0 -- Yes --> N_WriteMessagetoQueue_Node0_action N_WriteMessagetoQueue_Node0_action --> E_WriteMessagetoQueue S_WriteMessagetoQueue --> N_WriteMessagetoQueue_Node0 N_WriteMessagetoQueue_Node0 -- No --> E_WriteMessagetoQueue
queue"}:::decision N_WriteMessagetoQueue_Node0_action["The message must be written using
WRITMSGL with the transaction
message, length, and module name"]:::main N_WriteMessagetoQueue_Node0 -- Yes --> N_WriteMessagetoQueue_Node0_action N_WriteMessagetoQueue_Node0_action --> E_WriteMessagetoQueue S_WriteMessagetoQueue --> N_WriteMessagetoQueue_Node0 N_WriteMessagetoQueue_Node0 -- No --> E_WriteMessagetoQueue
File: GCX015E.cbl
GIVEN:
A customs transaction has been submitted via CIMS
WHEN:
The system writes to the message queue
THEN:
The message must be written using WRITMSGL with the transaction message, length, and module name
β Consolidated Acceptance Criteria
- The system completes transaction processing → the transaction must be purged using CIMS with the purge function and alternate PCB
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PurgeTransaction(["Start Step"])
E_PurgeTransaction(["End Step"])
N_PurgeTransaction_Node0{"The system completes transaction
processing"}:::decision N_PurgeTransaction_Node0_action["The transaction must be purged
using CIMS with the purge function
and alternate PCB"]:::main N_PurgeTransaction_Node0 -- Yes --> N_PurgeTransaction_Node0_action N_PurgeTransaction_Node0_action --> E_PurgeTransaction S_PurgeTransaction --> N_PurgeTransaction_Node0 N_PurgeTransaction_Node0 -- No --> E_PurgeTransaction
processing"}:::decision N_PurgeTransaction_Node0_action["The transaction must be purged
using CIMS with the purge function
and alternate PCB"]:::main N_PurgeTransaction_Node0 -- Yes --> N_PurgeTransaction_Node0_action N_PurgeTransaction_Node0_action --> E_PurgeTransaction S_PurgeTransaction --> N_PurgeTransaction_Node0 N_PurgeTransaction_Node0 -- No --> E_PurgeTransaction
File: GCX015E.cbl
GIVEN:
A customs transaction has been written to the message queue
WHEN:
The system completes transaction processing
THEN:
- The transaction must be purged using cims with the purge function
- Alternate pcb
β Consolidated Acceptance Criteria
- The K1 message number equals '000' → the message severity is set to Information and the processing status is set to Acknowledged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSeverityInformation(["Start Step"])
E_SetSeverityInformation(["End Step"])
N_SetSeverityInformation_Node0{"The K1 message number equals 000"}:::decision
N_SetSeverityInformation_Node0_action["The message severity is set to
Information and the processing
status is set to Acknowledged"]:::main N_SetSeverityInformation_Node0 -- Yes --> N_SetSeverityInformation_Node0_action N_SetSeverityInformation_Node0_action --> E_SetSeverityInformation S_SetSeverityInformation --> N_SetSeverityInformation_Node0 N_SetSeverityInformation_Node0 -- No --> E_SetSeverityInformation
Information and the processing
status is set to Acknowledged"]:::main N_SetSeverityInformation_Node0 -- Yes --> N_SetSeverityInformation_Node0_action N_SetSeverityInformation_Node0_action --> E_SetSeverityInformation S_SetSeverityInformation --> N_SetSeverityInformation_Node0 N_SetSeverityInformation_Node0 -- No --> E_SetSeverityInformation
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1 message number equals '000'
THEN:
- The message severity is set to information
- The processing status is set to acknowledged
β Consolidated Acceptance Criteria
- The K1 message number equals '009':
- '017'
- '038'
- '040'
- '291'
- '630'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSeverityFatal(["Start Step"])
E_SetSeverityFatal(["End Step"])
N_SetSeverityFatal_Node0{"The K1 message number equals 009 OR
017 OR 038 OR 040 OR 291 OR 630"}:::decision N_SetSeverityFatal_Node0_action["The message severity is set to
Fatal and the processing status is
set to Error"]:::main N_SetSeverityFatal_Node0 -- Yes --> N_SetSeverityFatal_Node0_action N_SetSeverityFatal_Node0_action --> E_SetSeverityFatal S_SetSeverityFatal --> N_SetSeverityFatal_Node0 N_SetSeverityFatal_Node0 -- No --> E_SetSeverityFatal
017 OR 038 OR 040 OR 291 OR 630"}:::decision N_SetSeverityFatal_Node0_action["The message severity is set to
Fatal and the processing status is
set to Error"]:::main N_SetSeverityFatal_Node0 -- Yes --> N_SetSeverityFatal_Node0_action N_SetSeverityFatal_Node0_action --> E_SetSeverityFatal S_SetSeverityFatal --> N_SetSeverityFatal_Node0 N_SetSeverityFatal_Node0 -- No --> E_SetSeverityFatal
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1 message number equals '009' OR '017' OR '038' OR '040' OR '291' OR '630'
THEN:
- The message severity is set to fatal
- The processing status is set to error
β Consolidated Acceptance Criteria
- The K1 message number equals '631':
- '632'
- '633'
- '634'
- '695'
- '696'
- '697'
- '698'
- '699'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSeverityWarning(["Start Step"])
E_SetSeverityWarning(["End Step"])
N_SetSeverityWarning_Node0{"The K1 message number equals 631 OR
632 OR 633 OR 634 OR 695 OR 696 OR
697 OR 698 OR 699"}:::decision N_SetSeverityWarning_Node0_action["The message severity is set to
Warning and the processing status is
set to Acknowledged"]:::main N_SetSeverityWarning_Node0 -- Yes --> N_SetSeverityWarning_Node0_action N_SetSeverityWarning_Node0_action --> E_SetSeverityWarning S_SetSeverityWarning --> N_SetSeverityWarning_Node0 N_SetSeverityWarning_Node0 -- No --> E_SetSeverityWarning
632 OR 633 OR 634 OR 695 OR 696 OR
697 OR 698 OR 699"}:::decision N_SetSeverityWarning_Node0_action["The message severity is set to
Warning and the processing status is
set to Acknowledged"]:::main N_SetSeverityWarning_Node0 -- Yes --> N_SetSeverityWarning_Node0_action N_SetSeverityWarning_Node0_action --> E_SetSeverityWarning S_SetSeverityWarning --> N_SetSeverityWarning_Node0 N_SetSeverityWarning_Node0 -- No --> E_SetSeverityWarning
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1 message number equals '631' OR '632' OR '633' OR '634' OR '695' OR '696' OR '697' OR '698' OR '699'
THEN:
- The message severity is set to warning
- The processing status is set to acknowledged
β Consolidated Acceptance Criteria
- The K1 message number does not equal '000' AND does not equal any of the fatal error numbers ('009', '017', '038', '040', '291', '630') AND does not equal any of the warning numbers ('631', '632', '633', '634', '695', '696', '697', '698', '699') → the message severity is set to Unknown and the processing status is set to Acknowledged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSeverityUnknown(["Start Step"])
E_SetSeverityUnknown(["End Step"])
N_SetSeverityUnknown_Node0{"The K1 message number does not
equal 000 AND does not equal any of
the fatal error numbers 009 , 017 ,
038 , 040 , 291 , 630 AND does not
equal any of the warning numbers 631
, 632 , 633 , 634 , 695 , 696 , 697
, 698 , 699"}:::decision N_SetSeverityUnknown_Node0_action["The message severity is set to
Unknown and the processing status is
set to Acknowledged"]:::exclusion N_SetSeverityUnknown_Node0 -- Yes -->|Alternative| N_SetSeverityUnknown_Node0_action N_SetSeverityUnknown_Node0_action --> E_SetSeverityUnknown S_SetSeverityUnknown --> N_SetSeverityUnknown_Node0 N_SetSeverityUnknown_Node0 -- No --> E_SetSeverityUnknown
equal 000 AND does not equal any of
the fatal error numbers 009 , 017 ,
038 , 040 , 291 , 630 AND does not
equal any of the warning numbers 631
, 632 , 633 , 634 , 695 , 696 , 697
, 698 , 699"}:::decision N_SetSeverityUnknown_Node0_action["The message severity is set to
Unknown and the processing status is
set to Acknowledged"]:::exclusion N_SetSeverityUnknown_Node0 -- Yes -->|Alternative| N_SetSeverityUnknown_Node0_action N_SetSeverityUnknown_Node0_action --> E_SetSeverityUnknown S_SetSeverityUnknown --> N_SetSeverityUnknown_Node0 N_SetSeverityUnknown_Node0 -- No --> E_SetSeverityUnknown
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message segment is being processed
WHEN:
The K1 message number does not equal '000' AND does not equal any of the fatal error numbers ('009', '017', '038', '040', '291', '630') AND does not equal any of the warning numbers ('631', '632', '633', '634', '695', '696', '697', '698', '699')
THEN:
- The message severity is set to unknown
- The processing status is set to acknowledged
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '000' → set message severity to Information (MSG-SEV-I) and set processing status to acknowledged (WS-ACK-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_MessageNumber000(["Start Step"])
E_MessageNumber000(["End Step"])
N_MessageNumber000_Node0{"The K1-02-MSG-NUMBER equals 000"}:::decision
N_MessageNumber000_Node0_action["Set message severity to Information
MSG-SEV-I and set processing status
to acknowledged WS-ACK-STATUS"]:::main N_MessageNumber000_Node0 -- Yes --> N_MessageNumber000_Node0_action N_MessageNumber000_Node0_action --> E_MessageNumber000 S_MessageNumber000 --> N_MessageNumber000_Node0 N_MessageNumber000_Node0 -- No --> E_MessageNumber000
MSG-SEV-I and set processing status
to acknowledged WS-ACK-STATUS"]:::main N_MessageNumber000_Node0 -- Yes --> N_MessageNumber000_Node0_action N_MessageNumber000_Node0_action --> E_MessageNumber000 S_MessageNumber000 --> N_MessageNumber000_Node0 N_MessageNumber000_Node0 -- No --> E_MessageNumber000
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER equals '000'
THEN:
Set message severity to Information (MSG-SEV-I) and set processing status to acknowledged (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '009':
- '017'
- '038'
- '040'
- '291'
- '630'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageNumberinFatalCategory009017038040291630(["Start Step"])
E_MessageNumberinFatalCategory009017038040291630(["End Step"])
N_MessageNumberinFatalCategory009017038040291630_Node0{"The K1-02-MSG-NUMBER equals 009 OR
017 OR 038 OR 040 OR 291 OR 630"}:::decision N_MessageNumberinFatalCategory009017038040291630_Node0_action["Set message severity to Fatal
MSG-SEV-F and set processing status
to error WS-ERROR-STATUS"]:::main N_MessageNumberinFatalCategory009017038040291630_Node0 -- Yes --> N_MessageNumberinFatalCategory009017038040291630_Node0_action N_MessageNumberinFatalCategory009017038040291630_Node0_action --> E_MessageNumberinFatalCategory009017038040291630 S_MessageNumberinFatalCategory009017038040291630 --> N_MessageNumberinFatalCategory009017038040291630_Node0 N_MessageNumberinFatalCategory009017038040291630_Node0 -- No --> E_MessageNumberinFatalCategory009017038040291630
017 OR 038 OR 040 OR 291 OR 630"}:::decision N_MessageNumberinFatalCategory009017038040291630_Node0_action["Set message severity to Fatal
MSG-SEV-F and set processing status
to error WS-ERROR-STATUS"]:::main N_MessageNumberinFatalCategory009017038040291630_Node0 -- Yes --> N_MessageNumberinFatalCategory009017038040291630_Node0_action N_MessageNumberinFatalCategory009017038040291630_Node0_action --> E_MessageNumberinFatalCategory009017038040291630 S_MessageNumberinFatalCategory009017038040291630 --> N_MessageNumberinFatalCategory009017038040291630_Node0 N_MessageNumberinFatalCategory009017038040291630_Node0 -- No --> E_MessageNumberinFatalCategory009017038040291630
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER equals '009' OR '017' OR '038' OR '040' OR '291' OR '630'
THEN:
Set message severity to Fatal (MSG-SEV-F) and set processing status to error (WS-ERROR-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER equals '631':
- '632'
- '633'
- '634'
- '695'
- '696'
- '697'
- '698'
- '699'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageNumberinWarningCategory631632633634695696697698699(["Start Step"])
E_MessageNumberinWarningCategory631632633634695696697698699(["End Step"])
N_MessageNumberinWarningCategory631632633634695696697698699_Node0{"The K1-02-MSG-NUMBER equals 631 OR
632 OR 633 OR 634 OR 695 OR 696 OR
697 OR 698 OR 699"}:::decision N_MessageNumberinWarningCategory631632633634695696697698699_Node0_action["Set message severity to Warning
MSG-SEV-W and set processing status
to acknowledged WS-ACK-STATUS"]:::main N_MessageNumberinWarningCategory631632633634695696697698699_Node0 -- Yes --> N_MessageNumberinWarningCategory631632633634695696697698699_Node0_action N_MessageNumberinWarningCategory631632633634695696697698699_Node0_action --> E_MessageNumberinWarningCategory631632633634695696697698699 S_MessageNumberinWarningCategory631632633634695696697698699 --> N_MessageNumberinWarningCategory631632633634695696697698699_Node0 N_MessageNumberinWarningCategory631632633634695696697698699_Node0 -- No --> E_MessageNumberinWarningCategory631632633634695696697698699
632 OR 633 OR 634 OR 695 OR 696 OR
697 OR 698 OR 699"}:::decision N_MessageNumberinWarningCategory631632633634695696697698699_Node0_action["Set message severity to Warning
MSG-SEV-W and set processing status
to acknowledged WS-ACK-STATUS"]:::main N_MessageNumberinWarningCategory631632633634695696697698699_Node0 -- Yes --> N_MessageNumberinWarningCategory631632633634695696697698699_Node0_action N_MessageNumberinWarningCategory631632633634695696697698699_Node0_action --> E_MessageNumberinWarningCategory631632633634695696697698699 S_MessageNumberinWarningCategory631632633634695696697698699 --> N_MessageNumberinWarningCategory631632633634695696697698699_Node0 N_MessageNumberinWarningCategory631632633634695696697698699_Node0 -- No --> E_MessageNumberinWarningCategory631632633634695696697698699
File: GCX015E.cbl
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER equals '631' OR '632' OR '633' OR '634' OR '695' OR '696' OR '697' OR '698' OR '699'
THEN:
Set message severity to Warning (MSG-SEV-W) and set processing status to acknowledged (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- The K1-02-MSG-NUMBER does not equal '000' AND does not match any fatal error numbers (009, 017, 038, 040, 291, 630) AND does not match any warning numbers (631, 632, 633, 634, 695, 696, 697, 698, 699) → set message severity to Unknown (MSG-SEV-U) and set processing status to acknowledged (WS-ACK-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_SetSeverityUnknownSetStatusAcknowledged(["Start Step"])
E_SetSeverityUnknownSetStatusAcknowledged(["End Step"])
N_SetSeverityUnknownSetStatusAcknowledged_Node0{"The K1-02-MSG-NUMBER does not equal
000 AND does not match any fatal
error numbers 009, 017, 038, 040,
291, 630 AND does not match any
warning numbers 631, 632, 633, 634,
695, 696, 697, 698, 699"}:::decision N_SetSeverityUnknownSetStatusAcknowledged_Node0_action["Set message severity to Unknown
MSG-SEV-U and set processing status
to acknowledged WS-ACK-STATUS"]:::exclusion N_SetSeverityUnknownSetStatusAcknowledged_Node0 -- Yes -->|Alternative| N_SetSeverityUnknownSetStatusAcknowledged_Node0_action N_SetSeverityUnknownSetStatusAcknowledged_Node0_action --> E_SetSeverityUnknownSetStatusAcknowledged S_SetSeverityUnknownSetStatusAcknowledged --> N_SetSeverityUnknownSetStatusAcknowledged_Node0 N_SetSeverityUnknownSetStatusAcknowledged_Node0 -- No --> E_SetSeverityUnknownSetStatusAcknowledged
000 AND does not match any fatal
error numbers 009, 017, 038, 040,
291, 630 AND does not match any
warning numbers 631, 632, 633, 634,
695, 696, 697, 698, 699"}:::decision N_SetSeverityUnknownSetStatusAcknowledged_Node0_action["Set message severity to Unknown
MSG-SEV-U and set processing status
to acknowledged WS-ACK-STATUS"]:::exclusion N_SetSeverityUnknownSetStatusAcknowledged_Node0 -- Yes -->|Alternative| N_SetSeverityUnknownSetStatusAcknowledged_Node0_action N_SetSeverityUnknownSetStatusAcknowledged_Node0_action --> E_SetSeverityUnknownSetStatusAcknowledged S_SetSeverityUnknownSetStatusAcknowledged --> N_SetSeverityUnknownSetStatusAcknowledged_Node0 N_SetSeverityUnknownSetStatusAcknowledged_Node0 -- No --> E_SetSeverityUnknownSetStatusAcknowledged
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A K1 message segment is being processed
WHEN:
The K1-02-MSG-NUMBER does not equal '000' AND does not match any fatal error numbers (009, 017, 038, 040, 291, 630) AND does not match any warning numbers (631, 632, 633, 634, 695, 696, 697, 698, 699)
THEN:
Set message severity to Unknown (MSG-SEV-U) and set processing status to acknowledged (WS-ACK-STATUS)
β Consolidated Acceptance Criteria
- Connection to MQ manager is attempted → connection is established successfully or system terminates with connection error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConnecttoMQManager(["Start Step"])
E_ConnecttoMQManager(["End Step"])
N_ConnecttoMQManager_Node0{"Connection to MQ manager is
attempted"}:::decision N_ConnecttoMQManager_Node0_action["Connection is established
successfully or system terminates
with connection error"]:::main N_ConnecttoMQManager_Node0 -- Yes --> N_ConnecttoMQManager_Node0_action N_ConnecttoMQManager_Node0_action --> E_ConnecttoMQManager S_ConnecttoMQManager --> N_ConnecttoMQManager_Node0 N_ConnecttoMQManager_Node0 -- No --> E_ConnecttoMQManager
attempted"}:::decision N_ConnecttoMQManager_Node0_action["Connection is established
successfully or system terminates
with connection error"]:::main N_ConnecttoMQManager_Node0 -- Yes --> N_ConnecttoMQManager_Node0_action N_ConnecttoMQManager_Node0_action --> E_ConnecttoMQManager S_ConnecttoMQManager --> N_ConnecttoMQManager_Node0 N_ConnecttoMQManager_Node0 -- No --> E_ConnecttoMQManager
File: GCX015E.cbl
GIVEN:
System needs to process customs messages from message queue
WHEN:
Connection to MQ manager is attempted
THEN:
Connection is established successfully or system terminates with connection error
β Consolidated Acceptance Criteria
- System attempts to get message from queue → message is retrieved successfully, or no message available condition is handled, or system terminates on retrieval 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_ReadMessagefromQueue(["Start Step"])
E_ReadMessagefromQueue(["End Step"])
N_ReadMessagefromQueue_Node0{"System attempts to get message from
queue"}:::decision N_ReadMessagefromQueue_Node0_action["Message is retrieved successfully,
or no message available condition is
handled, or system terminates on
retrieval failure"]:::main N_ReadMessagefromQueue_Node0 -- Yes --> N_ReadMessagefromQueue_Node0_action N_ReadMessagefromQueue_Node0_action --> E_ReadMessagefromQueue S_ReadMessagefromQueue --> N_ReadMessagefromQueue_Node0 N_ReadMessagefromQueue_Node0 -- No --> E_ReadMessagefromQueue
queue"}:::decision N_ReadMessagefromQueue_Node0_action["Message is retrieved successfully,
or no message available condition is
handled, or system terminates on
retrieval failure"]:::main N_ReadMessagefromQueue_Node0 -- Yes --> N_ReadMessagefromQueue_Node0_action N_ReadMessagefromQueue_Node0_action --> E_ReadMessagefromQueue S_ReadMessagefromQueue --> N_ReadMessagefromQueue_Node0 N_ReadMessagefromQueue_Node0 -- No --> E_ReadMessagefromQueue
File: GCX015E.cbl
GIVEN:
Message queue is open for reading
WHEN:
System attempts to get message from queue
THEN:
Message is retrieved successfully, or no message available condition is handled, or system terminates on retrieval failure
β Consolidated Acceptance Criteria
- Message backout count is checked → if backout count equals zero then message is marked as good for processing, otherwise message is marked to be skipped
- The message backout count is not equal to 0 → the system should mark the message as skip message and not process it 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_CheckMessageBackoutCount(["Start Step"])
E_CheckMessageBackoutCount(["End Step"])
N_CheckMessageBackoutCount_Node0{"Message backout count is checked"}:::decision
N_CheckMessageBackoutCount_Node0_action["If backout count equals zero then
message is marked as good for
processing, otherwise message is
marked to be skipped"]:::main N_CheckMessageBackoutCount_Node0 -- Yes --> N_CheckMessageBackoutCount_Node0_action N_CheckMessageBackoutCount_Node0_action --> E_CheckMessageBackoutCount S_CheckMessageBackoutCount --> N_CheckMessageBackoutCount_Node0 N_CheckMessageBackoutCount_Node1{"The message backout count is not
equal to 0"}:::decision N_CheckMessageBackoutCount_Node1_action["The system should mark the message
as skip message and not process it
further"]:::main N_CheckMessageBackoutCount_Node1 -- Yes --> N_CheckMessageBackoutCount_Node1_action N_CheckMessageBackoutCount_Node1_action --> E_CheckMessageBackoutCount N_CheckMessageBackoutCount_Node0 -- No --> N_CheckMessageBackoutCount_Node1 N_CheckMessageBackoutCount_Node1 -- No --> E_CheckMessageBackoutCount
message is marked as good for
processing, otherwise message is
marked to be skipped"]:::main N_CheckMessageBackoutCount_Node0 -- Yes --> N_CheckMessageBackoutCount_Node0_action N_CheckMessageBackoutCount_Node0_action --> E_CheckMessageBackoutCount S_CheckMessageBackoutCount --> N_CheckMessageBackoutCount_Node0 N_CheckMessageBackoutCount_Node1{"The message backout count is not
equal to 0"}:::decision N_CheckMessageBackoutCount_Node1_action["The system should mark the message
as skip message and not process it
further"]:::main N_CheckMessageBackoutCount_Node1 -- Yes --> N_CheckMessageBackoutCount_Node1_action N_CheckMessageBackoutCount_Node1_action --> E_CheckMessageBackoutCount N_CheckMessageBackoutCount_Node0 -- No --> N_CheckMessageBackoutCount_Node1 N_CheckMessageBackoutCount_Node1 -- No --> E_CheckMessageBackoutCount
File: GCX015E.cbl
GIVEN:
Message is successfully retrieved from queue
WHEN:
Message backout count is checked
THEN:
If backout count equals zero then message is marked as good for processing, otherwise message is marked to be skipped
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A customs message has been successfully retrieved with completion code OK
WHEN:
The message backout count is not equal to 0
THEN:
- The system should mark the message as skip message
- Not process it further
β Consolidated Acceptance Criteria
- System calculates maximum message entries based on message length → if calculated entries is less than 1 then system terminates with message too short error, otherwise processing continues
- The system processes the message structure → the maximum message entries is calculated as (data length minus header length minus unused length) divided by single entry length
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNumberofMessageEntries(["Start Step"])
E_CalculateNumberofMessageEntries(["End Step"])
N_CalculateNumberofMessageEntries_Node0{"System calculates maximum message
entries based on message length"}:::decision N_CalculateNumberofMessageEntries_Node0_action["If calculated entries is less than
1 then system terminates with
message too short error, otherwise
processing continues"]:::main N_CalculateNumberofMessageEntries_Node0 -- Yes --> N_CalculateNumberofMessageEntries_Node0_action N_CalculateNumberofMessageEntries_Node0_action --> E_CalculateNumberofMessageEntries S_CalculateNumberofMessageEntries --> N_CalculateNumberofMessageEntries_Node0 N_CalculateNumberofMessageEntries_Node1{"The system processes the message
structure"}:::decision N_CalculateNumberofMessageEntries_Node1_action["The maximum message entries is
calculated as data length minus
header length minus unused length
divided by single entry length"]:::main N_CalculateNumberofMessageEntries_Node1 -- Yes --> N_CalculateNumberofMessageEntries_Node1_action N_CalculateNumberofMessageEntries_Node1_action --> E_CalculateNumberofMessageEntries N_CalculateNumberofMessageEntries_Node0 -- No --> N_CalculateNumberofMessageEntries_Node1 N_CalculateNumberofMessageEntries_Node1 -- No --> E_CalculateNumberofMessageEntries
entries based on message length"}:::decision N_CalculateNumberofMessageEntries_Node0_action["If calculated entries is less than
1 then system terminates with
message too short error, otherwise
processing continues"]:::main N_CalculateNumberofMessageEntries_Node0 -- Yes --> N_CalculateNumberofMessageEntries_Node0_action N_CalculateNumberofMessageEntries_Node0_action --> E_CalculateNumberofMessageEntries S_CalculateNumberofMessageEntries --> N_CalculateNumberofMessageEntries_Node0 N_CalculateNumberofMessageEntries_Node1{"The system processes the message
structure"}:::decision N_CalculateNumberofMessageEntries_Node1_action["The maximum message entries is
calculated as data length minus
header length minus unused length
divided by single entry length"]:::main N_CalculateNumberofMessageEntries_Node1 -- Yes --> N_CalculateNumberofMessageEntries_Node1_action N_CalculateNumberofMessageEntries_Node1_action --> E_CalculateNumberofMessageEntries N_CalculateNumberofMessageEntries_Node0 -- No --> N_CalculateNumberofMessageEntries_Node1 N_CalculateNumberofMessageEntries_Node1 -- No --> E_CalculateNumberofMessageEntries
File: GCX015E.cbl
GIVEN:
Message is retrieved and marked as good for processing
WHEN:
System calculates maximum message entries based on message length
THEN:
If calculated entries is less than 1 then system terminates with message too short error, otherwise processing continues
File: GCX015E.cbl
GIVEN:
A message has been retrieved with valid data length
WHEN:
The system processes the message structure
THEN:
The maximum message entries is calculated as (data length minus header length minus unused length) divided by single entry length
β Consolidated Acceptance Criteria
- Queue close operation is performed → message queue is closed successfully or system terminates with close failure 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_CloseMessageQueue(["Start Step"])
E_CloseMessageQueue(["End Step"])
N_CloseMessageQueue_Node0{"Queue close operation is performed"}:::decision
N_CloseMessageQueue_Node0_action["Message queue is closed
successfully or system terminates
with close failure error"]:::main N_CloseMessageQueue_Node0 -- Yes --> N_CloseMessageQueue_Node0_action N_CloseMessageQueue_Node0_action --> E_CloseMessageQueue S_CloseMessageQueue --> N_CloseMessageQueue_Node0 N_CloseMessageQueue_Node0 -- No --> E_CloseMessageQueue
successfully or system terminates
with close failure error"]:::main N_CloseMessageQueue_Node0 -- Yes --> N_CloseMessageQueue_Node0_action N_CloseMessageQueue_Node0_action --> E_CloseMessageQueue S_CloseMessageQueue --> N_CloseMessageQueue_Node0 N_CloseMessageQueue_Node0 -- No --> E_CloseMessageQueue
File: GCX015E.cbl
GIVEN:
Message processing is complete or terminated
WHEN:
Queue close operation is performed
THEN:
Message queue is closed successfully or system terminates with close failure error
β Consolidated Acceptance Criteria
- Disconnection from MQ manager is performed → mQ manager connection is terminated successfully or system terminates with disconnection failure 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_DisconnectfromMQManager(["Start Step"])
E_DisconnectfromMQManager(["End Step"])
N_DisconnectfromMQManager_Node0{"Disconnection from MQ manager is
performed"}:::decision N_DisconnectfromMQManager_Node0_action["MQ manager connection is terminated
successfully or system terminates
with disconnection failure error"]:::main N_DisconnectfromMQManager_Node0 -- Yes --> N_DisconnectfromMQManager_Node0_action N_DisconnectfromMQManager_Node0_action --> E_DisconnectfromMQManager S_DisconnectfromMQManager --> N_DisconnectfromMQManager_Node0 N_DisconnectfromMQManager_Node0 -- No --> E_DisconnectfromMQManager
performed"}:::decision N_DisconnectfromMQManager_Node0_action["MQ manager connection is terminated
successfully or system terminates
with disconnection failure error"]:::main N_DisconnectfromMQManager_Node0 -- Yes --> N_DisconnectfromMQManager_Node0_action N_DisconnectfromMQManager_Node0_action --> E_DisconnectfromMQManager S_DisconnectfromMQManager --> N_DisconnectfromMQManager_Node0 N_DisconnectfromMQManager_Node0 -- No --> E_DisconnectfromMQManager
File: GCX015E.cbl
GIVEN:
Message queue is closed
WHEN:
Disconnection from MQ manager is performed
THEN:
MQ manager connection is terminated successfully or system terminates with disconnection failure error
β Consolidated Acceptance Criteria
- No message available reason code 2033 is returned → processing is marked as finished and system proceeds to cleanup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoMoreMessages(["Start Step"])
E_NoMoreMessages(["End Step"])
N_NoMoreMessages_Node0{"No message available reason code
2033 is returned"}:::decision N_NoMoreMessages_Node0_action["Processing is marked as finished
and system proceeds to cleanup"]:::main N_NoMoreMessages_Node0 -- Yes --> N_NoMoreMessages_Node0_action N_NoMoreMessages_Node0_action --> E_NoMoreMessages S_NoMoreMessages --> N_NoMoreMessages_Node0 N_NoMoreMessages_Node0 -- No --> E_NoMoreMessages
2033 is returned"}:::decision N_NoMoreMessages_Node0_action["Processing is marked as finished
and system proceeds to cleanup"]:::main N_NoMoreMessages_Node0 -- Yes --> N_NoMoreMessages_Node0_action N_NoMoreMessages_Node0_action --> E_NoMoreMessages S_NoMoreMessages --> N_NoMoreMessages_Node0 N_NoMoreMessages_Node0 -- No --> E_NoMoreMessages
File: GCX015E.cbl
GIVEN:
System is attempting to retrieve messages from queue
WHEN:
No message available reason code 2033 is returned
THEN:
- Processing is marked as finished
- System proceeds to cleanup
β Consolidated Acceptance Criteria
- The system checks if the maximum message entries is less than 1 → the system should generate a user abend with error message 'MESSAGE TOO SHORT' 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_CheckMessageLength(["Start Step"])
E_CheckMessageLength(["End Step"])
N_CheckMessageLength_Node0{"The system checks if the maximum
message entries is less than 1"}:::decision N_CheckMessageLength_Node0_action["The system should generate a user
abend with error message MESSAGE TOO
SHORT and terminate processing"]:::exclusion N_CheckMessageLength_Node0 -- Yes -->|Alternative| N_CheckMessageLength_Node0_action N_CheckMessageLength_Node0_action --> E_CheckMessageLength S_CheckMessageLength --> N_CheckMessageLength_Node0 N_CheckMessageLength_Node0 -- No --> E_CheckMessageLength
message entries is less than 1"}:::decision N_CheckMessageLength_Node0_action["The system should generate a user
abend with error message MESSAGE TOO
SHORT and terminate processing"]:::exclusion N_CheckMessageLength_Node0 -- Yes -->|Alternative| N_CheckMessageLength_Node0_action N_CheckMessageLength_Node0_action --> E_CheckMessageLength S_CheckMessageLength --> N_CheckMessageLength_Node0 N_CheckMessageLength_Node0 -- No --> E_CheckMessageLength
File: GCX015E.cbl
GIVEN:
A customs message has been retrieved from the message queue
WHEN:
The system checks if the maximum message entries is less than 1
THEN:
The system should generate a user abend with error message 'MESSAGE TOO SHORT' and terminate processing
β Consolidated Acceptance Criteria
- The message backout count equals 0 → the system should mark the message as good message and proceed with 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_MarkasGoodMessageValidFormat(["Start Step"])
E_MarkasGoodMessageValidFormat(["End Step"])
N_MarkasGoodMessageValidFormat_Node0{"The message backout count equals 0"}:::decision
N_MarkasGoodMessageValidFormat_Node0_action["The system should mark the message
as good message and proceed with
customs processing"]:::main N_MarkasGoodMessageValidFormat_Node0 -- Yes --> N_MarkasGoodMessageValidFormat_Node0_action N_MarkasGoodMessageValidFormat_Node0_action --> E_MarkasGoodMessageValidFormat S_MarkasGoodMessageValidFormat --> N_MarkasGoodMessageValidFormat_Node0 N_MarkasGoodMessageValidFormat_Node0 -- No --> E_MarkasGoodMessageValidFormat
as good message and proceed with
customs processing"]:::main N_MarkasGoodMessageValidFormat_Node0 -- Yes --> N_MarkasGoodMessageValidFormat_Node0_action N_MarkasGoodMessageValidFormat_Node0_action --> E_MarkasGoodMessageValidFormat S_MarkasGoodMessageValidFormat --> N_MarkasGoodMessageValidFormat_Node0 N_MarkasGoodMessageValidFormat_Node0 -- No --> E_MarkasGoodMessageValidFormat
File: GCX015E.cbl
GIVEN:
A customs message has been successfully retrieved with completion code OK
WHEN:
The message backout count equals 0
THEN:
- The system should mark the message as good message
- Proceed with customs processing
β Consolidated Acceptance Criteria
- The completion code is FAILED and the reason code indicates no message available → the system should generate an MQ error message, set transaction code to 355, and abort processing with 'MQGET FAILED' 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_CheckifNoMessagesAvailable(["Start Step"])
E_CheckifNoMessagesAvailable(["End Step"])
N_CheckifNoMessagesAvailable_Node0{"The completion code is FAILED and
the reason code indicates no message
available"}:::decision N_CheckifNoMessagesAvailable_Node0_action["The system should generate an MQ
error message, set transaction code
to 355, and abort processing with
MQGET FAILED error"]:::exclusion N_CheckifNoMessagesAvailable_Node0 -- Yes -->|Alternative| N_CheckifNoMessagesAvailable_Node0_action N_CheckifNoMessagesAvailable_Node0_action --> E_CheckifNoMessagesAvailable S_CheckifNoMessagesAvailable --> N_CheckifNoMessagesAvailable_Node0 N_CheckifNoMessagesAvailable_Node0 -- No --> E_CheckifNoMessagesAvailable
the reason code indicates no message
available"}:::decision N_CheckifNoMessagesAvailable_Node0_action["The system should generate an MQ
error message, set transaction code
to 355, and abort processing with
MQGET FAILED error"]:::exclusion N_CheckifNoMessagesAvailable_Node0 -- Yes -->|Alternative| N_CheckifNoMessagesAvailable_Node0_action N_CheckifNoMessagesAvailable_Node0_action --> E_CheckifNoMessagesAvailable S_CheckifNoMessagesAvailable --> N_CheckifNoMessagesAvailable_Node0 N_CheckifNoMessagesAvailable_Node0 -- No --> E_CheckifNoMessagesAvailable
File: GCX015E.cbl
GIVEN:
The system attempts to retrieve a message from the customs queue
WHEN:
- The completion code is failed
- The reason code indicates no message available
THEN:
The system should generate an MQ error message, set transaction code to 355, and abort processing with 'MQGET FAILED' error
β Consolidated Acceptance Criteria
- The completion code is not OK and the reason is not 'no message available' → the system should set end of queue flag, generate MQ error message, set transaction code to 355, and abort processing with 'MQGET FAILED' error
- The completion code is MQCC-FAILED and the reason code is MQRC-NO-MSG-AVAILABLE → the system sets the end of message queue 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_SetEndofQueueFlag(["Start Step"])
E_SetEndofQueueFlag(["End Step"])
N_SetEndofQueueFlag_Node0{"The completion code is not OK and
the reason is not no message
available"}:::decision N_SetEndofQueueFlag_Node0_action["The system should set end of queue
flag, generate MQ error message, set
transaction code to 355, and abort
processing with MQGET FAILED error"]:::exclusion N_SetEndofQueueFlag_Node0 -- Yes -->|Alternative| N_SetEndofQueueFlag_Node0_action N_SetEndofQueueFlag_Node0_action --> E_SetEndofQueueFlag S_SetEndofQueueFlag --> N_SetEndofQueueFlag_Node0 N_SetEndofQueueFlag_Node1{"The completion code is MQCC-FAILED
and the reason code is
MQRC-NO-MSG-AVAILABLE"}:::decision N_SetEndofQueueFlag_Node1_action["The system sets the end of message
queue flag to true"]:::exclusion N_SetEndofQueueFlag_Node1 -- Yes -->|Alternative| N_SetEndofQueueFlag_Node1_action N_SetEndofQueueFlag_Node1_action --> E_SetEndofQueueFlag N_SetEndofQueueFlag_Node0 -- No --> N_SetEndofQueueFlag_Node1 N_SetEndofQueueFlag_Node1 -- No --> E_SetEndofQueueFlag
the reason is not no message
available"}:::decision N_SetEndofQueueFlag_Node0_action["The system should set end of queue
flag, generate MQ error message, set
transaction code to 355, and abort
processing with MQGET FAILED error"]:::exclusion N_SetEndofQueueFlag_Node0 -- Yes -->|Alternative| N_SetEndofQueueFlag_Node0_action N_SetEndofQueueFlag_Node0_action --> E_SetEndofQueueFlag S_SetEndofQueueFlag --> N_SetEndofQueueFlag_Node0 N_SetEndofQueueFlag_Node1{"The completion code is MQCC-FAILED
and the reason code is
MQRC-NO-MSG-AVAILABLE"}:::decision N_SetEndofQueueFlag_Node1_action["The system sets the end of message
queue flag to true"]:::exclusion N_SetEndofQueueFlag_Node1 -- Yes -->|Alternative| N_SetEndofQueueFlag_Node1_action N_SetEndofQueueFlag_Node1_action --> E_SetEndofQueueFlag N_SetEndofQueueFlag_Node0 -- No --> N_SetEndofQueueFlag_Node1 N_SetEndofQueueFlag_Node1 -- No --> E_SetEndofQueueFlag
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The system encounters an error while retrieving messages from the customs queue
WHEN:
- The completion code is not ok
- The reason is not 'no message available'
THEN:
The system should set end of queue flag, generate MQ error message, set transaction code to 355, and abort processing with 'MQGET FAILED' error
File: GCX015E.cbl
GIVEN:
A message retrieval attempt has been made
WHEN:
- The completion code is mqcc-failed
- The reason code is mqrc-no-msg-available
THEN:
The system sets the end of message queue flag to true
β Consolidated Acceptance Criteria
- The system prepares log information → the message field is cleared, action code is cleared, and security byte is set to high 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_PrepareLogInformation(["Start Step"])
E_PrepareLogInformation(["End Step"])
N_PrepareLogInformation_Node0{"The system prepares log information"}:::decision
N_PrepareLogInformation_Node0_action["The message field is cleared,
action code is cleared, and security
byte is set to high value"]:::main N_PrepareLogInformation_Node0 -- Yes --> N_PrepareLogInformation_Node0_action N_PrepareLogInformation_Node0_action --> E_PrepareLogInformation S_PrepareLogInformation --> N_PrepareLogInformation_Node0 N_PrepareLogInformation_Node0 -- No --> E_PrepareLogInformation
action code is cleared, and security
byte is set to high value"]:::main N_PrepareLogInformation_Node0 -- Yes --> N_PrepareLogInformation_Node0_action N_PrepareLogInformation_Node0_action --> E_PrepareLogInformation S_PrepareLogInformation --> N_PrepareLogInformation_Node0 N_PrepareLogInformation_Node0 -- No --> E_PrepareLogInformation
File: GCX015E.cbl
GIVEN:
An audit trail generation process is initiated
WHEN:
The system prepares log information
THEN:
The message field is cleared, action code is cleared, and security byte is set to high value
β Consolidated Acceptance Criteria
- Transaction details are being set → the sending transaction is set to the current transaction code from CCCOM
- Transaction details are being set → the train or US CCN identifier is set to WORK-M10-12-DATA 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_SetTransactionDetails(["Start Step"])
E_SetTransactionDetails(["End Step"])
N_SetTransactionDetails_Node0{"Transaction details are being set"}:::decision
N_SetTransactionDetails_Node0_action["The sending transaction is set to
the current transaction code from
CCCOM"]:::main N_SetTransactionDetails_Node0 -- Yes --> N_SetTransactionDetails_Node0_action N_SetTransactionDetails_Node0_action --> E_SetTransactionDetails S_SetTransactionDetails --> N_SetTransactionDetails_Node0 N_SetTransactionDetails_Node1{"Transaction details are being set"}:::decision N_SetTransactionDetails_Node1_action["The train or US CCN identifier is
set to WORK-M10-12-DATA value"]:::main N_SetTransactionDetails_Node1 -- Yes --> N_SetTransactionDetails_Node1_action N_SetTransactionDetails_Node1_action --> E_SetTransactionDetails N_SetTransactionDetails_Node0 -- No --> N_SetTransactionDetails_Node1 N_SetTransactionDetails_Node1 -- No --> E_SetTransactionDetails
the current transaction code from
CCCOM"]:::main N_SetTransactionDetails_Node0 -- Yes --> N_SetTransactionDetails_Node0_action N_SetTransactionDetails_Node0_action --> E_SetTransactionDetails S_SetTransactionDetails --> N_SetTransactionDetails_Node0 N_SetTransactionDetails_Node1{"Transaction details are being set"}:::decision N_SetTransactionDetails_Node1_action["The train or US CCN identifier is
set to WORK-M10-12-DATA value"]:::main N_SetTransactionDetails_Node1 -- Yes --> N_SetTransactionDetails_Node1_action N_SetTransactionDetails_Node1_action --> E_SetTransactionDetails N_SetTransactionDetails_Node0 -- No --> N_SetTransactionDetails_Node1 N_SetTransactionDetails_Node1 -- No --> E_SetTransactionDetails
File: GCX015E.cbl
GIVEN:
Audit log information is being prepared
WHEN:
Transaction details are being set
THEN:
The sending transaction is set to the current transaction code from CCCOM
File: GCX015E.cbl
GIVEN:
Audit log information is being prepared and WORK-M10-12-DATA contains the identifier
WHEN:
Transaction details are being set
THEN:
The train or US CCN identifier is set to WORK-M10-12-DATA value
β Consolidated Acceptance Criteria
- User ID information is being set → the ACF2 user ID from CCCOM is recorded in the audit log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserIDInformation(["Start Step"])
E_SetUserIDInformation(["End Step"])
N_SetUserIDInformation_Node0{"User ID information is being set"}:::decision
N_SetUserIDInformation_Node0_action["The ACF2 user ID from CCCOM is
recorded in the audit log"]:::main N_SetUserIDInformation_Node0 -- Yes --> N_SetUserIDInformation_Node0_action N_SetUserIDInformation_Node0_action --> E_SetUserIDInformation S_SetUserIDInformation --> N_SetUserIDInformation_Node0 N_SetUserIDInformation_Node0 -- No --> E_SetUserIDInformation
recorded in the audit log"]:::main N_SetUserIDInformation_Node0 -- Yes --> N_SetUserIDInformation_Node0_action N_SetUserIDInformation_Node0_action --> E_SetUserIDInformation S_SetUserIDInformation --> N_SetUserIDInformation_Node0 N_SetUserIDInformation_Node0 -- No --> E_SetUserIDInformation
File: GCX015E.cbl
GIVEN:
Audit log information is being prepared
WHEN:
User ID information is being set
THEN:
The ACF2 user ID from CCCOM is recorded in the audit log
β Consolidated Acceptance Criteria
- Date and time stamps are being set → the date is set by concatenating machine century with K3-01-DATE and time is set to K3-01-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_SetDateandTimeStamps(["Start Step"])
E_SetDateandTimeStamps(["End Step"])
N_SetDateandTimeStamps_Node0{"Date and time stamps are being set"}:::decision
N_SetDateandTimeStamps_Node0_action["The date is set by concatenating
machine century with K3-01-DATE and
time is set to K3-01-TIME"]:::main N_SetDateandTimeStamps_Node0 -- Yes --> N_SetDateandTimeStamps_Node0_action N_SetDateandTimeStamps_Node0_action --> E_SetDateandTimeStamps S_SetDateandTimeStamps --> N_SetDateandTimeStamps_Node0 N_SetDateandTimeStamps_Node0 -- No --> E_SetDateandTimeStamps
machine century with K3-01-DATE and
time is set to K3-01-TIME"]:::main N_SetDateandTimeStamps_Node0 -- Yes --> N_SetDateandTimeStamps_Node0_action N_SetDateandTimeStamps_Node0_action --> E_SetDateandTimeStamps S_SetDateandTimeStamps --> N_SetDateandTimeStamps_Node0 N_SetDateandTimeStamps_Node0 -- No --> E_SetDateandTimeStamps
File: GCX015E.cbl
GIVEN:
Audit log information is being prepared and K3 segment data is available
WHEN:
- Date
- Time stamps are being set
THEN:
- The date is set by concatenating machine century with k3-01-date
- Time is set to k3-01-time
β Consolidated Acceptance Criteria
- Message type is being determined for logging → if WS-TRAIN flag is set, then GCX105-US-TRAIN is set to true, otherwise GCX105-US-CARGO is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineMessageType(["Start Step"])
E_DetermineMessageType(["End Step"])
N_DetermineMessageType_Node0{"Message type is being determined
for logging"}:::decision N_DetermineMessageType_Node0_action["If WS-TRAIN flag is set, then
GCX105-US-TRAIN is set to true,
otherwise GCX105-US-CARGO is set to
true"]:::main N_DetermineMessageType_Node0 -- Yes --> N_DetermineMessageType_Node0_action N_DetermineMessageType_Node0_action --> E_DetermineMessageType S_DetermineMessageType --> N_DetermineMessageType_Node0 N_DetermineMessageType_Node0 -- No --> E_DetermineMessageType
for logging"}:::decision N_DetermineMessageType_Node0_action["If WS-TRAIN flag is set, then
GCX105-US-TRAIN is set to true,
otherwise GCX105-US-CARGO is set to
true"]:::main N_DetermineMessageType_Node0 -- Yes --> N_DetermineMessageType_Node0_action N_DetermineMessageType_Node0_action --> E_DetermineMessageType S_DetermineMessageType --> N_DetermineMessageType_Node0 N_DetermineMessageType_Node0 -- No --> E_DetermineMessageType
File: GCX015E.cbl
GIVEN:
Audit log information is being prepared and processing type has been determined
WHEN:
Message type is being determined for logging
THEN:
If WS-TRAIN flag is set, then GCX105-US-TRAIN is set to true, otherwise GCX105-US-CARGO is set to true
β Consolidated Acceptance Criteria
- Action code is being set → the action code is set to 'ZZZ'
- Status message is being formatted → if processing cargo, then USCS-LOG-MESSAGE1 is used; if processing train, then USCS-LOG-MESSAGE2 is used; if should not update status, then USCS-LOG-MESSAGE3 is used
- Abend audit log entry is being generated → the message is set to the error message, train/cargo identifier is set to 'GCX015ER-ABEND', cargo type is set, action code is set to 'ZZZ', and current date/time information 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_FormatMainStatusMessage(["Start Step"])
E_FormatMainStatusMessage(["End Step"])
N_FormatMainStatusMessage_Node0{"Action code is being set"}:::decision
N_FormatMainStatusMessage_Node0_action["The action code is set to ZZZ"]:::main
N_FormatMainStatusMessage_Node0 -- Yes --> N_FormatMainStatusMessage_Node0_action
N_FormatMainStatusMessage_Node0_action --> E_FormatMainStatusMessage
S_FormatMainStatusMessage --> N_FormatMainStatusMessage_Node0
N_FormatMainStatusMessage_Node1{"Status message is being formatted"}:::decision
N_FormatMainStatusMessage_Node1_action["If processing cargo, then
USCS-LOG-MESSAGE1 is used if
processing train, then
USCS-LOG-MESSAGE2 is used if should
not update status, then
USCS-LOG-MESSAGE3 is used"]:::main N_FormatMainStatusMessage_Node1 -- Yes --> N_FormatMainStatusMessage_Node1_action N_FormatMainStatusMessage_Node1_action --> E_FormatMainStatusMessage N_FormatMainStatusMessage_Node0 -- No --> N_FormatMainStatusMessage_Node1 N_FormatMainStatusMessage_Node2{"Abend audit log entry is being
generated"}:::decision N_FormatMainStatusMessage_Node2_action["The message is set to the error
message, traincargo identifier is
set to GCX015ER-ABEND , cargo type
is set, action code is set to ZZZ ,
and current datetime information is
captured"]:::exclusion N_FormatMainStatusMessage_Node2 -- Yes -->|Alternative| N_FormatMainStatusMessage_Node2_action N_FormatMainStatusMessage_Node2_action --> E_FormatMainStatusMessage N_FormatMainStatusMessage_Node1 -- No --> N_FormatMainStatusMessage_Node2 N_FormatMainStatusMessage_Node2 -- No --> E_FormatMainStatusMessage
USCS-LOG-MESSAGE1 is used if
processing train, then
USCS-LOG-MESSAGE2 is used if should
not update status, then
USCS-LOG-MESSAGE3 is used"]:::main N_FormatMainStatusMessage_Node1 -- Yes --> N_FormatMainStatusMessage_Node1_action N_FormatMainStatusMessage_Node1_action --> E_FormatMainStatusMessage N_FormatMainStatusMessage_Node0 -- No --> N_FormatMainStatusMessage_Node1 N_FormatMainStatusMessage_Node2{"Abend audit log entry is being
generated"}:::decision N_FormatMainStatusMessage_Node2_action["The message is set to the error
message, traincargo identifier is
set to GCX015ER-ABEND , cargo type
is set, action code is set to ZZZ ,
and current datetime information is
captured"]:::exclusion N_FormatMainStatusMessage_Node2 -- Yes -->|Alternative| N_FormatMainStatusMessage_Node2_action N_FormatMainStatusMessage_Node2_action --> E_FormatMainStatusMessage N_FormatMainStatusMessage_Node1 -- No --> N_FormatMainStatusMessage_Node2 N_FormatMainStatusMessage_Node2 -- No --> E_FormatMainStatusMessage
File: GCX015E.cbl
GIVEN:
A main status message is being formatted for audit logging
WHEN:
Action code is being set
THEN:
The action code is set to 'ZZZ'
File: GCX015E.cbl
GIVEN:
A main status message is being formatted and processing type is determined
WHEN:
Status message is being formatted
THEN:
If processing cargo, then USCS-LOG-MESSAGE1 is used; if processing train, then USCS-LOG-MESSAGE2 is used; if should not update status, then USCS-LOG-MESSAGE3 is used
File: GCX015E.cbl
GIVEN:
A system abend condition has occurred and error message exists in CCCOM
WHEN:
Abend audit log entry is being generated
THEN:
The message is set to the error message, train/cargo identifier is set to 'GCX015ER-ABEND', cargo type is set, action code is set to 'ZZZ', and current date/time information is captured
β Consolidated Acceptance Criteria
- K1 error message is being formatted → if HOLD-K1-MESSAGE is not spaces, then the message content is moved to GCX105-MESSAGE for logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatK1ErrorMessage(["Start Step"])
E_FormatK1ErrorMessage(["End Step"])
N_FormatK1ErrorMessage_Node0{"K1 error message is being formatted"}:::decision
N_FormatK1ErrorMessage_Node0_action["If HOLD-K1-MESSAGE is not spaces,
then the message content is moved to
GCX105-MESSAGE for logging"]:::exclusion N_FormatK1ErrorMessage_Node0 -- Yes -->|Alternative| N_FormatK1ErrorMessage_Node0_action N_FormatK1ErrorMessage_Node0_action --> E_FormatK1ErrorMessage S_FormatK1ErrorMessage --> N_FormatK1ErrorMessage_Node0 N_FormatK1ErrorMessage_Node0 -- No --> E_FormatK1ErrorMessage
then the message content is moved to
GCX105-MESSAGE for logging"]:::exclusion N_FormatK1ErrorMessage_Node0 -- Yes -->|Alternative| N_FormatK1ErrorMessage_Node0_action N_FormatK1ErrorMessage_Node0_action --> E_FormatK1ErrorMessage S_FormatK1ErrorMessage --> N_FormatK1ErrorMessage_Node0 N_FormatK1ErrorMessage_Node0 -- No --> E_FormatK1ErrorMessage
File: GCX015E.cbl
GIVEN:
K1 error messages are being processed and HOLD-K1-MESSAGE contains content
WHEN:
K1 error message is being formatted
THEN:
If HOLD-K1-MESSAGE is not spaces, then the message content is moved to GCX105-MESSAGE for logging
β Consolidated Acceptance Criteria
- Log message is being sent to transaction logger → gCT1051E transaction logging service is invoked with the formatted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendLogMessagetoGCT1051E(["Start Step"])
E_SendLogMessagetoGCT1051E(["End Step"])
N_SendLogMessagetoGCT1051E_Node0{"Log message is being sent to
transaction logger"}:::decision N_SendLogMessagetoGCT1051E_Node0_action["GCT1051E transaction logging
service is invoked with the
formatted message"]:::main N_SendLogMessagetoGCT1051E_Node0 -- Yes --> N_SendLogMessagetoGCT1051E_Node0_action N_SendLogMessagetoGCT1051E_Node0_action --> E_SendLogMessagetoGCT1051E S_SendLogMessagetoGCT1051E --> N_SendLogMessagetoGCT1051E_Node0 N_SendLogMessagetoGCT1051E_Node0 -- No --> E_SendLogMessagetoGCT1051E
transaction logger"}:::decision N_SendLogMessagetoGCT1051E_Node0_action["GCT1051E transaction logging
service is invoked with the
formatted message"]:::main N_SendLogMessagetoGCT1051E_Node0 -- Yes --> N_SendLogMessagetoGCT1051E_Node0_action N_SendLogMessagetoGCT1051E_Node0_action --> E_SendLogMessagetoGCT1051E S_SendLogMessagetoGCT1051E --> N_SendLogMessagetoGCT1051E_Node0 N_SendLogMessagetoGCT1051E_Node0 -- No --> E_SendLogMessagetoGCT1051E
File: GCX015E.cbl
GIVEN:
Audit log information has been formatted in GCX105-INPUT
WHEN:
Log message is being sent to transaction logger
THEN:
GCT1051E transaction logging service is invoked with the formatted message
β Consolidated Acceptance Criteria
- Multiple K1 messages are being logged → system processes each K1-CNT from 1 incrementing by 1 until HOLD-K1-MESSAGE is spaces or K1-CNT exceeds 999
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMultipleK1Messages(["Start Step"])
E_LogMultipleK1Messages(["End Step"])
N_LogMultipleK1Messages_Node0{"Multiple K1 messages are being
logged"}:::decision N_LogMultipleK1Messages_Node0_action["System processes each K1-CNT from 1
incrementing by 1 until
HOLD-K1-MESSAGE is spaces or K1-CNT
exceeds 999"]:::main N_LogMultipleK1Messages_Node0 -- Yes --> N_LogMultipleK1Messages_Node0_action N_LogMultipleK1Messages_Node0_action --> E_LogMultipleK1Messages S_LogMultipleK1Messages --> N_LogMultipleK1Messages_Node0 N_LogMultipleK1Messages_Node0 -- No --> E_LogMultipleK1Messages
logged"}:::decision N_LogMultipleK1Messages_Node0_action["System processes each K1-CNT from 1
incrementing by 1 until
HOLD-K1-MESSAGE is spaces or K1-CNT
exceeds 999"]:::main N_LogMultipleK1Messages_Node0 -- Yes --> N_LogMultipleK1Messages_Node0_action N_LogMultipleK1Messages_Node0_action --> E_LogMultipleK1Messages S_LogMultipleK1Messages --> N_LogMultipleK1Messages_Node0 N_LogMultipleK1Messages_Node0 -- No --> E_LogMultipleK1Messages
File: GCX015E.cbl
GIVEN:
Multiple K1 error messages exist in HOLD-K1-MESSAGE array
WHEN:
Multiple K1 messages are being logged
THEN:
System processes each K1-CNT from 1 incrementing by 1 until HOLD-K1-MESSAGE is spaces or K1-CNT exceeds 999
β Consolidated Acceptance Criteria
- The system processes the M11 segment → the system should extract the M11 segment data 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_M11SegmentFound(["Start Step"])
E_M11SegmentFound(["End Step"])
N_M11SegmentFound_Node0{"The system processes the M11
segment"}:::decision N_M11SegmentFound_Node0_action["The system should extract the M11
segment data and continue processing"]:::main N_M11SegmentFound_Node0 -- Yes --> N_M11SegmentFound_Node0_action N_M11SegmentFound_Node0_action --> E_M11SegmentFound S_M11SegmentFound --> N_M11SegmentFound_Node0 N_M11SegmentFound_Node0 -- No --> E_M11SegmentFound
segment"}:::decision N_M11SegmentFound_Node0_action["The system should extract the M11
segment data and continue processing"]:::main N_M11SegmentFound_Node0 -- Yes --> N_M11SegmentFound_Node0_action N_M11SegmentFound_Node0_action --> E_M11SegmentFound S_M11SegmentFound --> N_M11SegmentFound_Node0 N_M11SegmentFound_Node0 -- No --> E_M11SegmentFound
File: GCX015E.cbl
GIVEN:
An M11 segment is present in the message and the current data type is marked as unknown
WHEN:
The system processes the M11 segment
THEN:
- The system should extract the m11 segment data
- Continue processing
β Consolidated Acceptance Criteria
- The system begins extracting cargo key information → the cargo key work area should be initialized 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_InitializeCargoKeyStructure(["Start Step"])
E_InitializeCargoKeyStructure(["End Step"])
N_InitializeCargoKeyStructure_Node0{"The system begins extracting cargo
key information"}:::decision N_InitializeCargoKeyStructure_Node0_action["The cargo key work area should be
initialized to spaces"]:::main N_InitializeCargoKeyStructure_Node0 -- Yes --> N_InitializeCargoKeyStructure_Node0_action N_InitializeCargoKeyStructure_Node0_action --> E_InitializeCargoKeyStructure S_InitializeCargoKeyStructure --> N_InitializeCargoKeyStructure_Node0 N_InitializeCargoKeyStructure_Node0 -- No --> E_InitializeCargoKeyStructure
key information"}:::decision N_InitializeCargoKeyStructure_Node0_action["The cargo key work area should be
initialized to spaces"]:::main N_InitializeCargoKeyStructure_Node0 -- Yes --> N_InitializeCargoKeyStructure_Node0_action N_InitializeCargoKeyStructure_Node0_action --> E_InitializeCargoKeyStructure S_InitializeCargoKeyStructure --> N_InitializeCargoKeyStructure_Node0 N_InitializeCargoKeyStructure_Node0 -- No --> E_InitializeCargoKeyStructure
File: GCX015E.cbl
GIVEN:
An M11 segment needs to be processed for cargo identification
WHEN:
The system begins extracting cargo key information
THEN:
The cargo key work area should be initialized to spaces
β Consolidated Acceptance Criteria
- The system extracts the SCAC code → the M11-12-SCAC value should be moved to the WORK-SCAC 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_ExtractSCACCodefromM1112(["Start Step"])
E_ExtractSCACCodefromM1112(["End Step"])
N_ExtractSCACCodefromM1112_Node0{"The system extracts the SCAC code"}:::decision
N_ExtractSCACCodefromM1112_Node0_action["The M11-12-SCAC value should be
moved to the WORK-SCAC field"]:::main N_ExtractSCACCodefromM1112_Node0 -- Yes --> N_ExtractSCACCodefromM1112_Node0_action N_ExtractSCACCodefromM1112_Node0_action --> E_ExtractSCACCodefromM1112 S_ExtractSCACCodefromM1112 --> N_ExtractSCACCodefromM1112_Node0 N_ExtractSCACCodefromM1112_Node0 -- No --> E_ExtractSCACCodefromM1112
moved to the WORK-SCAC field"]:::main N_ExtractSCACCodefromM1112_Node0 -- Yes --> N_ExtractSCACCodefromM1112_Node0_action N_ExtractSCACCodefromM1112_Node0_action --> E_ExtractSCACCodefromM1112 S_ExtractSCACCodefromM1112 --> N_ExtractSCACCodefromM1112_Node0 N_ExtractSCACCodefromM1112_Node0 -- No --> E_ExtractSCACCodefromM1112
File: GCX015E.cbl
GIVEN:
An M11 segment contains cargo information
WHEN:
The system extracts the SCAC code
THEN:
The M11-12-SCAC value should be moved to the WORK-SCAC field
β Consolidated Acceptance Criteria
- The system extracts the bill number → the M11-01-BOL-WB-NUM value should be moved to the WORK-BILL-NUMBER field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBillWaybillNumberfromM1101(["Start Step"])
E_ExtractBillWaybillNumberfromM1101(["End Step"])
N_ExtractBillWaybillNumberfromM1101_Node0{"The system extracts the bill number"}:::decision
N_ExtractBillWaybillNumberfromM1101_Node0_action["The M11-01-BOL-WB-NUM value should
be moved to the WORK-BILL-NUMBER
field"]:::main N_ExtractBillWaybillNumberfromM1101_Node0 -- Yes --> N_ExtractBillWaybillNumberfromM1101_Node0_action N_ExtractBillWaybillNumberfromM1101_Node0_action --> E_ExtractBillWaybillNumberfromM1101 S_ExtractBillWaybillNumberfromM1101 --> N_ExtractBillWaybillNumberfromM1101_Node0 N_ExtractBillWaybillNumberfromM1101_Node0 -- No --> E_ExtractBillWaybillNumberfromM1101
be moved to the WORK-BILL-NUMBER
field"]:::main N_ExtractBillWaybillNumberfromM1101_Node0 -- Yes --> N_ExtractBillWaybillNumberfromM1101_Node0_action N_ExtractBillWaybillNumberfromM1101_Node0_action --> E_ExtractBillWaybillNumberfromM1101 S_ExtractBillWaybillNumberfromM1101 --> N_ExtractBillWaybillNumberfromM1101_Node0 N_ExtractBillWaybillNumberfromM1101_Node0 -- No --> E_ExtractBillWaybillNumberfromM1101
File: GCX015E.cbl
GIVEN:
An M11 segment contains cargo information
WHEN:
The system extracts the bill number
THEN:
The M11-01-BOL-WB-NUM value should be moved to the WORK-BILL-NUMBER field
β Consolidated Acceptance Criteria
- The system builds the complete cargo key → the WORK-CARGO-KEY should be moved to WORK-M10-12-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_BuildCompleteCargoKey(["Start Step"])
E_BuildCompleteCargoKey(["End Step"])
N_BuildCompleteCargoKey_Node0{"The system builds the complete
cargo key"}:::decision N_BuildCompleteCargoKey_Node0_action["The WORK-CARGO-KEY should be moved
to WORK-M10-12-DATA for further
processing"]:::main N_BuildCompleteCargoKey_Node0 -- Yes --> N_BuildCompleteCargoKey_Node0_action N_BuildCompleteCargoKey_Node0_action --> E_BuildCompleteCargoKey S_BuildCompleteCargoKey --> N_BuildCompleteCargoKey_Node0 N_BuildCompleteCargoKey_Node0 -- No --> E_BuildCompleteCargoKey
cargo key"}:::decision N_BuildCompleteCargoKey_Node0_action["The WORK-CARGO-KEY should be moved
to WORK-M10-12-DATA for further
processing"]:::main N_BuildCompleteCargoKey_Node0 -- Yes --> N_BuildCompleteCargoKey_Node0_action N_BuildCompleteCargoKey_Node0_action --> E_BuildCompleteCargoKey S_BuildCompleteCargoKey --> N_BuildCompleteCargoKey_Node0 N_BuildCompleteCargoKey_Node0 -- No --> E_BuildCompleteCargoKey
File: GCX015E.cbl
GIVEN:
SCAC code and bill number have been extracted from M11 segment
WHEN:
The system builds the complete cargo key
THEN:
The WORK-CARGO-KEY should be moved to WORK-M10-12-DATA for further processing
β Consolidated Acceptance Criteria
- The system determines the processing type → the processing type should be set to cargo (WS-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_SetProcessingTypetoCargo(["Start Step"])
E_SetProcessingTypetoCargo(["End Step"])
N_SetProcessingTypetoCargo_Node0{"The system determines the
processing type"}:::decision N_SetProcessingTypetoCargo_Node0_action["The processing type should be set
to cargo WS-CARGO"]:::main N_SetProcessingTypetoCargo_Node0 -- Yes --> N_SetProcessingTypetoCargo_Node0_action N_SetProcessingTypetoCargo_Node0_action --> E_SetProcessingTypetoCargo S_SetProcessingTypetoCargo --> N_SetProcessingTypetoCargo_Node0 N_SetProcessingTypetoCargo_Node0 -- No --> E_SetProcessingTypetoCargo
processing type"}:::decision N_SetProcessingTypetoCargo_Node0_action["The processing type should be set
to cargo WS-CARGO"]:::main N_SetProcessingTypetoCargo_Node0 -- Yes --> N_SetProcessingTypetoCargo_Node0_action N_SetProcessingTypetoCargo_Node0_action --> E_SetProcessingTypetoCargo S_SetProcessingTypetoCargo --> N_SetProcessingTypetoCargo_Node0 N_SetProcessingTypetoCargo_Node0 -- No --> E_SetProcessingTypetoCargo
File: GCX015E.cbl
GIVEN:
M11 segment has been successfully processed and cargo key has been built
WHEN:
The system determines the processing type
THEN:
The processing type should be set to cargo (WS-CARGO)
β Consolidated Acceptance Criteria
- The system needs to update acknowledgment timestamps → the T1 table entry must be retrieved from the configuration 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_GetT1TableEntry(["Start Step"])
E_GetT1TableEntry(["End Step"])
N_GetT1TableEntry_Node0{"The system needs to update
acknowledgment timestamps"}:::decision N_GetT1TableEntry_Node0_action["The T1 table entry must be
retrieved from the configuration
database"]:::main N_GetT1TableEntry_Node0 -- Yes --> N_GetT1TableEntry_Node0_action N_GetT1TableEntry_Node0_action --> E_GetT1TableEntry S_GetT1TableEntry --> N_GetT1TableEntry_Node0 N_GetT1TableEntry_Node0 -- No --> E_GetT1TableEntry
acknowledgment timestamps"}:::decision N_GetT1TableEntry_Node0_action["The T1 table entry must be
retrieved from the configuration
database"]:::main N_GetT1TableEntry_Node0 -- Yes --> N_GetT1TableEntry_Node0_action N_GetT1TableEntry_Node0_action --> E_GetT1TableEntry S_GetT1TableEntry --> N_GetT1TableEntry_Node0 N_GetT1TableEntry_Node0 -- No --> E_GetT1TableEntry
File: GCX015E.cbl
GIVEN:
A manifest processing request is initiated
WHEN:
The system needs to update acknowledgment timestamps
THEN:
The T1 table entry must be retrieved from the configuration database
β Consolidated Acceptance Criteria
- The system needs to update acknowledgment timestamps → the manifest type code from the message queue entry must be evaluated to determine the appropriate timestamp field
- The system checks the manifest type code from MQS-TABLE-MANI-TYPE → route to appropriate timestamp update based on manifest type: 'P' for 309-ACK, 'H' for 353-ACK, 'S' for 358-ACK, or no update for other 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_CheckManifestTypeCode(["Start Step"])
E_CheckManifestTypeCode(["End Step"])
N_CheckManifestTypeCode_Node0{"The system needs to update
acknowledgment timestamps"}:::decision N_CheckManifestTypeCode_Node0_action["The manifest type code from the
message queue entry must be
evaluated to determine the
appropriate timestamp field"]:::main N_CheckManifestTypeCode_Node0 -- Yes --> N_CheckManifestTypeCode_Node0_action N_CheckManifestTypeCode_Node0_action --> E_CheckManifestTypeCode S_CheckManifestTypeCode --> N_CheckManifestTypeCode_Node0 N_CheckManifestTypeCode_Node1{"The system checks the manifest type
code from MQS-TABLE-MANI-TYPE"}:::decision N_CheckManifestTypeCode_Node1_action["Route to appropriate timestamp
update based on manifest type: P for
309-ACK, H for 353-ACK, S for
358-ACK, or no update for other
types"]:::main N_CheckManifestTypeCode_Node1 -- Yes --> N_CheckManifestTypeCode_Node1_action N_CheckManifestTypeCode_Node1_action --> E_CheckManifestTypeCode N_CheckManifestTypeCode_Node0 -- No --> N_CheckManifestTypeCode_Node1 N_CheckManifestTypeCode_Node1 -- No --> E_CheckManifestTypeCode
acknowledgment timestamps"}:::decision N_CheckManifestTypeCode_Node0_action["The manifest type code from the
message queue entry must be
evaluated to determine the
appropriate timestamp field"]:::main N_CheckManifestTypeCode_Node0 -- Yes --> N_CheckManifestTypeCode_Node0_action N_CheckManifestTypeCode_Node0_action --> E_CheckManifestTypeCode S_CheckManifestTypeCode --> N_CheckManifestTypeCode_Node0 N_CheckManifestTypeCode_Node1{"The system checks the manifest type
code from MQS-TABLE-MANI-TYPE"}:::decision N_CheckManifestTypeCode_Node1_action["Route to appropriate timestamp
update based on manifest type: P for
309-ACK, H for 353-ACK, S for
358-ACK, or no update for other
types"]:::main N_CheckManifestTypeCode_Node1 -- Yes --> N_CheckManifestTypeCode_Node1_action N_CheckManifestTypeCode_Node1_action --> E_CheckManifestTypeCode N_CheckManifestTypeCode_Node0 -- No --> N_CheckManifestTypeCode_Node1 N_CheckManifestTypeCode_Node1 -- No --> E_CheckManifestTypeCode
File: GCX015E.cbl
GIVEN:
A valid T1 table entry exists and a manifest message is being processed
WHEN:
The system needs to update acknowledgment timestamps
THEN:
The manifest type code from the message queue entry must be evaluated to determine the appropriate timestamp field
File: GCX015E.cbl
GIVEN:
A manifest message is being processed for timestamp updates
WHEN:
The system checks the manifest type code from MQS-TABLE-MANI-TYPE
THEN:
Route to appropriate timestamp update based on manifest type: 'P' for 309-ACK, 'H' for 353-ACK, 'S' for 358-ACK, or no update for other types
β Consolidated Acceptance Criteria
- The manifest type code equals 'P' → the system must update the T1-309-ACK field with current machine date (CCYYMMDD format) and current machine time (HHMM format)
- The manifest type code is 'P' → the T1-309-ACK field is updated with current machine date (century + 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_Update309AcknowledgmentTimestamp(["Start Step"])
E_Update309AcknowledgmentTimestamp(["End Step"])
N_Update309AcknowledgmentTimestamp_Node0{"The manifest type code equals P"}:::decision
N_Update309AcknowledgmentTimestamp_Node0_action["The system must update the
T1-309-ACK field with current
machine date CCYYMMDD format and
current machine time HHMM format"]:::main N_Update309AcknowledgmentTimestamp_Node0 -- Yes --> N_Update309AcknowledgmentTimestamp_Node0_action N_Update309AcknowledgmentTimestamp_Node0_action --> E_Update309AcknowledgmentTimestamp S_Update309AcknowledgmentTimestamp --> N_Update309AcknowledgmentTimestamp_Node0 N_Update309AcknowledgmentTimestamp_Node1{"The manifest type code is P"}:::decision N_Update309AcknowledgmentTimestamp_Node1_action["The T1-309-ACK field is updated
with current machine date century
date and time"]:::main N_Update309AcknowledgmentTimestamp_Node1 -- Yes --> N_Update309AcknowledgmentTimestamp_Node1_action N_Update309AcknowledgmentTimestamp_Node1_action --> E_Update309AcknowledgmentTimestamp N_Update309AcknowledgmentTimestamp_Node0 -- No --> N_Update309AcknowledgmentTimestamp_Node1 N_Update309AcknowledgmentTimestamp_Node1 -- No --> E_Update309AcknowledgmentTimestamp
T1-309-ACK field with current
machine date CCYYMMDD format and
current machine time HHMM format"]:::main N_Update309AcknowledgmentTimestamp_Node0 -- Yes --> N_Update309AcknowledgmentTimestamp_Node0_action N_Update309AcknowledgmentTimestamp_Node0_action --> E_Update309AcknowledgmentTimestamp S_Update309AcknowledgmentTimestamp --> N_Update309AcknowledgmentTimestamp_Node0 N_Update309AcknowledgmentTimestamp_Node1{"The manifest type code is P"}:::decision N_Update309AcknowledgmentTimestamp_Node1_action["The T1-309-ACK field is updated
with current machine date century
date and time"]:::main N_Update309AcknowledgmentTimestamp_Node1 -- Yes --> N_Update309AcknowledgmentTimestamp_Node1_action N_Update309AcknowledgmentTimestamp_Node1_action --> E_Update309AcknowledgmentTimestamp N_Update309AcknowledgmentTimestamp_Node0 -- No --> N_Update309AcknowledgmentTimestamp_Node1 N_Update309AcknowledgmentTimestamp_Node1 -- No --> E_Update309AcknowledgmentTimestamp
File: GCX015E.cbl
GIVEN:
A T1 table entry exists and a manifest message is being processed
WHEN:
The manifest type code equals 'P'
THEN:
The system must update the T1-309-ACK field with current machine date (CCYYMMDD format) and current machine time (HHMM format)
File: GCX015E.cbl
GIVEN:
A special test message is being processed AND T1 table segment is retrieved
WHEN:
The manifest type code is 'P'
THEN:
The T1-309-ACK field is updated with current machine date (century + date) and time
β Consolidated Acceptance Criteria
- The manifest type code equals 'H' → the system must update the T1-353-ACK field with current machine date (CCYYMMDD format) and current machine time (HHMM format)
- The manifest type code is 'H' → the T1-353-ACK field is updated with current machine date (century + 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_Update353AcknowledgmentTimestamp(["Start Step"])
E_Update353AcknowledgmentTimestamp(["End Step"])
N_Update353AcknowledgmentTimestamp_Node0{"The manifest type code equals H"}:::decision
N_Update353AcknowledgmentTimestamp_Node0_action["The system must update the
T1-353-ACK field with current
machine date CCYYMMDD format and
current machine time HHMM format"]:::main N_Update353AcknowledgmentTimestamp_Node0 -- Yes --> N_Update353AcknowledgmentTimestamp_Node0_action N_Update353AcknowledgmentTimestamp_Node0_action --> E_Update353AcknowledgmentTimestamp S_Update353AcknowledgmentTimestamp --> N_Update353AcknowledgmentTimestamp_Node0 N_Update353AcknowledgmentTimestamp_Node1{"The manifest type code is H"}:::decision N_Update353AcknowledgmentTimestamp_Node1_action["The T1-353-ACK field is updated
with current machine date century
date and time"]:::main N_Update353AcknowledgmentTimestamp_Node1 -- Yes --> N_Update353AcknowledgmentTimestamp_Node1_action N_Update353AcknowledgmentTimestamp_Node1_action --> E_Update353AcknowledgmentTimestamp N_Update353AcknowledgmentTimestamp_Node0 -- No --> N_Update353AcknowledgmentTimestamp_Node1 N_Update353AcknowledgmentTimestamp_Node1 -- No --> E_Update353AcknowledgmentTimestamp
T1-353-ACK field with current
machine date CCYYMMDD format and
current machine time HHMM format"]:::main N_Update353AcknowledgmentTimestamp_Node0 -- Yes --> N_Update353AcknowledgmentTimestamp_Node0_action N_Update353AcknowledgmentTimestamp_Node0_action --> E_Update353AcknowledgmentTimestamp S_Update353AcknowledgmentTimestamp --> N_Update353AcknowledgmentTimestamp_Node0 N_Update353AcknowledgmentTimestamp_Node1{"The manifest type code is H"}:::decision N_Update353AcknowledgmentTimestamp_Node1_action["The T1-353-ACK field is updated
with current machine date century
date and time"]:::main N_Update353AcknowledgmentTimestamp_Node1 -- Yes --> N_Update353AcknowledgmentTimestamp_Node1_action N_Update353AcknowledgmentTimestamp_Node1_action --> E_Update353AcknowledgmentTimestamp N_Update353AcknowledgmentTimestamp_Node0 -- No --> N_Update353AcknowledgmentTimestamp_Node1 N_Update353AcknowledgmentTimestamp_Node1 -- No --> E_Update353AcknowledgmentTimestamp
File: GCX015E.cbl
GIVEN:
A T1 table entry exists and a manifest message is being processed
WHEN:
The manifest type code equals 'H'
THEN:
The system must update the T1-353-ACK field with current machine date (CCYYMMDD format) and current machine time (HHMM format)
File: GCX015E.cbl
GIVEN:
A special test message is being processed AND T1 table segment is retrieved
WHEN:
The manifest type code is 'H'
THEN:
The T1-353-ACK field is updated with current machine date (century + date) and time
β Consolidated Acceptance Criteria
- The manifest type code equals 'S' → the system must update the T1-358-ACK field with current machine date (CCYYMMDD format) and current machine time (HHMM format)
- The manifest type code is 'S' → the T1-358-ACK field is updated with current machine date (century + 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_Update358AcknowledgmentTimestamp(["Start Step"])
E_Update358AcknowledgmentTimestamp(["End Step"])
N_Update358AcknowledgmentTimestamp_Node0{"The manifest type code equals S"}:::decision
N_Update358AcknowledgmentTimestamp_Node0_action["The system must update the
T1-358-ACK field with current
machine date CCYYMMDD format and
current machine time HHMM format"]:::main N_Update358AcknowledgmentTimestamp_Node0 -- Yes --> N_Update358AcknowledgmentTimestamp_Node0_action N_Update358AcknowledgmentTimestamp_Node0_action --> E_Update358AcknowledgmentTimestamp S_Update358AcknowledgmentTimestamp --> N_Update358AcknowledgmentTimestamp_Node0 N_Update358AcknowledgmentTimestamp_Node1{"The manifest type code is S"}:::decision N_Update358AcknowledgmentTimestamp_Node1_action["The T1-358-ACK field is updated
with current machine date century
date and time"]:::main N_Update358AcknowledgmentTimestamp_Node1 -- Yes --> N_Update358AcknowledgmentTimestamp_Node1_action N_Update358AcknowledgmentTimestamp_Node1_action --> E_Update358AcknowledgmentTimestamp N_Update358AcknowledgmentTimestamp_Node0 -- No --> N_Update358AcknowledgmentTimestamp_Node1 N_Update358AcknowledgmentTimestamp_Node1 -- No --> E_Update358AcknowledgmentTimestamp
T1-358-ACK field with current
machine date CCYYMMDD format and
current machine time HHMM format"]:::main N_Update358AcknowledgmentTimestamp_Node0 -- Yes --> N_Update358AcknowledgmentTimestamp_Node0_action N_Update358AcknowledgmentTimestamp_Node0_action --> E_Update358AcknowledgmentTimestamp S_Update358AcknowledgmentTimestamp --> N_Update358AcknowledgmentTimestamp_Node0 N_Update358AcknowledgmentTimestamp_Node1{"The manifest type code is S"}:::decision N_Update358AcknowledgmentTimestamp_Node1_action["The T1-358-ACK field is updated
with current machine date century
date and time"]:::main N_Update358AcknowledgmentTimestamp_Node1 -- Yes --> N_Update358AcknowledgmentTimestamp_Node1_action N_Update358AcknowledgmentTimestamp_Node1_action --> E_Update358AcknowledgmentTimestamp N_Update358AcknowledgmentTimestamp_Node0 -- No --> N_Update358AcknowledgmentTimestamp_Node1 N_Update358AcknowledgmentTimestamp_Node1 -- No --> E_Update358AcknowledgmentTimestamp
File: GCX015E.cbl
GIVEN:
A T1 table entry exists and a manifest message is being processed
WHEN:
The manifest type code equals 'S'
THEN:
The system must update the T1-358-ACK field with current machine date (CCYYMMDD format) and current machine time (HHMM format)
File: GCX015E.cbl
GIVEN:
A special test message is being processed AND T1 table segment is retrieved
WHEN:
The manifest type code is 'S'
THEN:
The T1-358-ACK field is updated with current machine date (century + date) and time
β Consolidated Acceptance Criteria
- The M10 table reference number equals 'TRAINCPRSTESTTRAIN0000000000' OR 'CARGOCPRS940000000000' → the message is identified as a special test message
- The M10 reference number matches 'TRAINCPRSTESTTRAIN0000000000' OR 'CARGOCPRS940000000000' patterns → the system triggers special test 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_CheckM10ReferenceNumber(["Start Step"])
E_CheckM10ReferenceNumber(["End Step"])
N_CheckM10ReferenceNumber_Node0{"The M10 table reference number
equals TRAINCPRSTESTTRAIN0000000000
OR CARGOCPRS940000000000"}:::decision N_CheckM10ReferenceNumber_Node0_action["The message is identified as a
special test message"]:::main N_CheckM10ReferenceNumber_Node0 -- Yes --> N_CheckM10ReferenceNumber_Node0_action N_CheckM10ReferenceNumber_Node0_action --> E_CheckM10ReferenceNumber S_CheckM10ReferenceNumber --> N_CheckM10ReferenceNumber_Node0 N_CheckM10ReferenceNumber_Node1{"The M10 reference number matches
TRAINCPRSTESTTRAIN0000000000 OR
CARGOCPRS940000000000 patterns"}:::decision N_CheckM10ReferenceNumber_Node1_action["The system triggers special test
processing workflow"]:::main N_CheckM10ReferenceNumber_Node1 -- Yes --> N_CheckM10ReferenceNumber_Node1_action N_CheckM10ReferenceNumber_Node1_action --> E_CheckM10ReferenceNumber N_CheckM10ReferenceNumber_Node0 -- No --> N_CheckM10ReferenceNumber_Node1 N_CheckM10ReferenceNumber_Node1 -- No --> E_CheckM10ReferenceNumber
equals TRAINCPRSTESTTRAIN0000000000
OR CARGOCPRS940000000000"}:::decision N_CheckM10ReferenceNumber_Node0_action["The message is identified as a
special test message"]:::main N_CheckM10ReferenceNumber_Node0 -- Yes --> N_CheckM10ReferenceNumber_Node0_action N_CheckM10ReferenceNumber_Node0_action --> E_CheckM10ReferenceNumber S_CheckM10ReferenceNumber --> N_CheckM10ReferenceNumber_Node0 N_CheckM10ReferenceNumber_Node1{"The M10 reference number matches
TRAINCPRSTESTTRAIN0000000000 OR
CARGOCPRS940000000000 patterns"}:::decision N_CheckM10ReferenceNumber_Node1_action["The system triggers special test
processing workflow"]:::main N_CheckM10ReferenceNumber_Node1 -- Yes --> N_CheckM10ReferenceNumber_Node1_action N_CheckM10ReferenceNumber_Node1_action --> E_CheckM10ReferenceNumber N_CheckM10ReferenceNumber_Node0 -- No --> N_CheckM10ReferenceNumber_Node1 N_CheckM10ReferenceNumber_Node1 -- No --> E_CheckM10ReferenceNumber
File: GCX015E.cbl
GIVEN:
A message with M10 segment is being processed
WHEN:
The M10 table reference number equals 'TRAINCPRSTESTTRAIN0000000000' OR 'CARGOCPRS940000000000'
THEN:
The message is identified as a special test message
File: GCX015E.cbl
GIVEN:
A message with M10 segment is being processed
WHEN:
The M10 reference number matches 'TRAINCPRSTESTTRAIN0000000000' OR 'CARGOCPRS940000000000' patterns
THEN:
The system triggers special test processing workflow
β Consolidated Acceptance Criteria
- The system processes the test message → the message array is cleared to spaces AND the end processing flag is set to true AND processing returns immediately
- T1 table has been updated and saved → the system clears the message array to spaces, sets end processing flag to true, and exits the special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearMessageArray(["Start Step"])
E_ClearMessageArray(["End Step"])
N_ClearMessageArray_Node0{"The system processes the test
message"}:::decision N_ClearMessageArray_Node0_action["The message array is cleared to
spaces AND the end processing flag
is set to true AND processing
returns immediately"]:::main N_ClearMessageArray_Node0 -- Yes --> N_ClearMessageArray_Node0_action N_ClearMessageArray_Node0_action --> E_ClearMessageArray S_ClearMessageArray --> N_ClearMessageArray_Node0 N_ClearMessageArray_Node1{"T1 table has been updated and saved"}:::decision N_ClearMessageArray_Node1_action["The system clears the message array
to spaces, sets end processing flag
to true, and exits the special
processing"]:::main N_ClearMessageArray_Node1 -- Yes --> N_ClearMessageArray_Node1_action N_ClearMessageArray_Node1_action --> E_ClearMessageArray N_ClearMessageArray_Node0 -- No --> N_ClearMessageArray_Node1 N_ClearMessageArray_Node1 -- No --> E_ClearMessageArray
message"}:::decision N_ClearMessageArray_Node0_action["The message array is cleared to
spaces AND the end processing flag
is set to true AND processing
returns immediately"]:::main N_ClearMessageArray_Node0 -- Yes --> N_ClearMessageArray_Node0_action N_ClearMessageArray_Node0_action --> E_ClearMessageArray S_ClearMessageArray --> N_ClearMessageArray_Node0 N_ClearMessageArray_Node1{"T1 table has been updated and saved"}:::decision N_ClearMessageArray_Node1_action["The system clears the message array
to spaces, sets end processing flag
to true, and exits the special
processing"]:::main N_ClearMessageArray_Node1 -- Yes --> N_ClearMessageArray_Node1_action N_ClearMessageArray_Node1_action --> E_ClearMessageArray N_ClearMessageArray_Node0 -- No --> N_ClearMessageArray_Node1 N_ClearMessageArray_Node1 -- No --> E_ClearMessageArray
File: GCX015E.cbl
GIVEN:
A special test message has been identified
WHEN:
The system processes the test message
THEN:
- The message array is cleared to spaces
- The end processing flag is set to true
- Processing returns immediately
File: GCX015E.cbl
GIVEN:
Test message acknowledgment processing is complete
WHEN:
- T1 table has been updated
- Saved
THEN:
The system clears the message array to spaces, sets end processing flag to true, and exits the special processing
β Consolidated Acceptance Criteria
- The system needs to access T1 table data → t1 table segment is retrieved using table ID 'T1' with empty sequence ID AND if retrieval fails then system abends with error message 'T1 CHECK TABLE ENTRY 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_UpdateT1TableTimestamps(["Start Step"])
E_UpdateT1TableTimestamps(["End Step"])
N_UpdateT1TableTimestamps_Node0{"The system needs to access T1 table
data"}:::decision N_UpdateT1TableTimestamps_Node0_action["T1 table segment is retrieved using
table ID T1 with empty sequence ID
AND if retrieval fails then system
abends with error message T1 CHECK
TABLE ENTRY NOT FOUND"]:::main N_UpdateT1TableTimestamps_Node0 -- Yes --> N_UpdateT1TableTimestamps_Node0_action N_UpdateT1TableTimestamps_Node0_action --> E_UpdateT1TableTimestamps S_UpdateT1TableTimestamps --> N_UpdateT1TableTimestamps_Node0 N_UpdateT1TableTimestamps_Node0 -- No --> E_UpdateT1TableTimestamps
data"}:::decision N_UpdateT1TableTimestamps_Node0_action["T1 table segment is retrieved using
table ID T1 with empty sequence ID
AND if retrieval fails then system
abends with error message T1 CHECK
TABLE ENTRY NOT FOUND"]:::main N_UpdateT1TableTimestamps_Node0 -- Yes --> N_UpdateT1TableTimestamps_Node0_action N_UpdateT1TableTimestamps_Node0_action --> E_UpdateT1TableTimestamps S_UpdateT1TableTimestamps --> N_UpdateT1TableTimestamps_Node0 N_UpdateT1TableTimestamps_Node0 -- No --> E_UpdateT1TableTimestamps
File: GCX015E.cbl
GIVEN:
A special test message requires T1 table updates
WHEN:
The system needs to access T1 table data
THEN:
- T1 table segment is retrieved using table id 't1' with empty sequence id
- If retrieval fails then system abends with error message 't1 check table entry not found'
β Consolidated Acceptance Criteria
- The system needs to update acknowledgment timestamps → the system retrieves T1 table configuration using table ID 'T1' and empty sequence 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_RetrieveT1TableConfiguration(["Start Step"])
E_RetrieveT1TableConfiguration(["End Step"])
N_RetrieveT1TableConfiguration_Node0{"The system needs to update
acknowledgment timestamps"}:::decision N_RetrieveT1TableConfiguration_Node0_action["The system retrieves T1 table
configuration using table ID T1 and
empty sequence ID"]:::main N_RetrieveT1TableConfiguration_Node0 -- Yes --> N_RetrieveT1TableConfiguration_Node0_action N_RetrieveT1TableConfiguration_Node0_action --> E_RetrieveT1TableConfiguration S_RetrieveT1TableConfiguration --> N_RetrieveT1TableConfiguration_Node0 N_RetrieveT1TableConfiguration_Node0 -- No --> E_RetrieveT1TableConfiguration
acknowledgment timestamps"}:::decision N_RetrieveT1TableConfiguration_Node0_action["The system retrieves T1 table
configuration using table ID T1 and
empty sequence ID"]:::main N_RetrieveT1TableConfiguration_Node0 -- Yes --> N_RetrieveT1TableConfiguration_Node0_action N_RetrieveT1TableConfiguration_Node0_action --> E_RetrieveT1TableConfiguration S_RetrieveT1TableConfiguration --> N_RetrieveT1TableConfiguration_Node0 N_RetrieveT1TableConfiguration_Node0 -- No --> E_RetrieveT1TableConfiguration
File: GCX015E.cbl
GIVEN:
A test message pattern has been detected
WHEN:
The system needs to update acknowledgment timestamps
THEN:
The system retrieves T1 table configuration using table ID 'T1' and empty sequence ID
β Consolidated Acceptance Criteria
- The T1 table entry is not found (return flag is not '0') → the system generates error message 'T1 CHECK TABLE ENTRY NOT FOUND' and terminates processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleTableNotFoundError(["Start Step"])
E_HandleTableNotFoundError(["End Step"])
N_HandleTableNotFoundError_Node0{"The T1 table entry is not found
return flag is not 0"}:::decision N_HandleTableNotFoundError_Node0_action["The system generates error message
T1 CHECK TABLE ENTRY NOT FOUND and
terminates processing"]:::main N_HandleTableNotFoundError_Node0 -- Yes --> N_HandleTableNotFoundError_Node0_action N_HandleTableNotFoundError_Node0_action --> E_HandleTableNotFoundError S_HandleTableNotFoundError --> N_HandleTableNotFoundError_Node0 N_HandleTableNotFoundError_Node0 -- No --> E_HandleTableNotFoundError
return flag is not 0"}:::decision N_HandleTableNotFoundError_Node0_action["The system generates error message
T1 CHECK TABLE ENTRY NOT FOUND and
terminates processing"]:::main N_HandleTableNotFoundError_Node0 -- Yes --> N_HandleTableNotFoundError_Node0_action N_HandleTableNotFoundError_Node0_action --> E_HandleTableNotFoundError S_HandleTableNotFoundError --> N_HandleTableNotFoundError_Node0 N_HandleTableNotFoundError_Node0 -- No --> E_HandleTableNotFoundError
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The system is attempting to retrieve T1 table configuration
WHEN:
The T1 table entry is not found (return flag is not '0')
THEN:
The system generates error message 'T1 CHECK TABLE ENTRY NOT FOUND' and terminates processing
β Consolidated Acceptance Criteria
- The manifest type in the message is 'P' → the system updates T1-309-ACK field with current machine date (century + date) and time (first 4 digits)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update309AcknowledgmentTimestampManifestTypeP(["Start Step"])
E_Update309AcknowledgmentTimestampManifestTypeP(["End Step"])
N_Update309AcknowledgmentTimestampManifestTypeP_Node0{"The manifest type in the message is
P"}:::decision N_Update309AcknowledgmentTimestampManifestTypeP_Node0_action["The system updates T1-309-ACK field
with current machine date century
date and time first 4 digits"]:::main N_Update309AcknowledgmentTimestampManifestTypeP_Node0 -- Yes --> N_Update309AcknowledgmentTimestampManifestTypeP_Node0_action N_Update309AcknowledgmentTimestampManifestTypeP_Node0_action --> E_Update309AcknowledgmentTimestampManifestTypeP S_Update309AcknowledgmentTimestampManifestTypeP --> N_Update309AcknowledgmentTimestampManifestTypeP_Node0 N_Update309AcknowledgmentTimestampManifestTypeP_Node0 -- No --> E_Update309AcknowledgmentTimestampManifestTypeP
P"}:::decision N_Update309AcknowledgmentTimestampManifestTypeP_Node0_action["The system updates T1-309-ACK field
with current machine date century
date and time first 4 digits"]:::main N_Update309AcknowledgmentTimestampManifestTypeP_Node0 -- Yes --> N_Update309AcknowledgmentTimestampManifestTypeP_Node0_action N_Update309AcknowledgmentTimestampManifestTypeP_Node0_action --> E_Update309AcknowledgmentTimestampManifestTypeP S_Update309AcknowledgmentTimestampManifestTypeP --> N_Update309AcknowledgmentTimestampManifestTypeP_Node0 N_Update309AcknowledgmentTimestampManifestTypeP_Node0 -- No --> E_Update309AcknowledgmentTimestampManifestTypeP
File: GCX015E.cbl
GIVEN:
A test message is being processed and T1 table configuration is available
WHEN:
The manifest type in the message is 'P'
THEN:
The system updates T1-309-ACK field with current machine date (century + date) and time (first 4 digits)
β Consolidated Acceptance Criteria
- The manifest type in the message is 'H' → the system updates T1-353-ACK field with current machine date (century + date) and time (first 4 digits)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update353AcknowledgmentTimestampManifestTypeH(["Start Step"])
E_Update353AcknowledgmentTimestampManifestTypeH(["End Step"])
N_Update353AcknowledgmentTimestampManifestTypeH_Node0{"The manifest type in the message is
H"}:::decision N_Update353AcknowledgmentTimestampManifestTypeH_Node0_action["The system updates T1-353-ACK field
with current machine date century
date and time first 4 digits"]:::main N_Update353AcknowledgmentTimestampManifestTypeH_Node0 -- Yes --> N_Update353AcknowledgmentTimestampManifestTypeH_Node0_action N_Update353AcknowledgmentTimestampManifestTypeH_Node0_action --> E_Update353AcknowledgmentTimestampManifestTypeH S_Update353AcknowledgmentTimestampManifestTypeH --> N_Update353AcknowledgmentTimestampManifestTypeH_Node0 N_Update353AcknowledgmentTimestampManifestTypeH_Node0 -- No --> E_Update353AcknowledgmentTimestampManifestTypeH
H"}:::decision N_Update353AcknowledgmentTimestampManifestTypeH_Node0_action["The system updates T1-353-ACK field
with current machine date century
date and time first 4 digits"]:::main N_Update353AcknowledgmentTimestampManifestTypeH_Node0 -- Yes --> N_Update353AcknowledgmentTimestampManifestTypeH_Node0_action N_Update353AcknowledgmentTimestampManifestTypeH_Node0_action --> E_Update353AcknowledgmentTimestampManifestTypeH S_Update353AcknowledgmentTimestampManifestTypeH --> N_Update353AcknowledgmentTimestampManifestTypeH_Node0 N_Update353AcknowledgmentTimestampManifestTypeH_Node0 -- No --> E_Update353AcknowledgmentTimestampManifestTypeH
File: GCX015E.cbl
GIVEN:
A test message is being processed and T1 table configuration is available
WHEN:
The manifest type in the message is 'H'
THEN:
The system updates T1-353-ACK field with current machine date (century + date) and time (first 4 digits)
β Consolidated Acceptance Criteria
- The manifest type in the message is 'S' → the system updates T1-358-ACK field with current machine date (century + date) and time (first 4 digits)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update358AcknowledgmentTimestampManifestTypeS(["Start Step"])
E_Update358AcknowledgmentTimestampManifestTypeS(["End Step"])
N_Update358AcknowledgmentTimestampManifestTypeS_Node0{"The manifest type in the message is
S"}:::decision N_Update358AcknowledgmentTimestampManifestTypeS_Node0_action["The system updates T1-358-ACK field
with current machine date century
date and time first 4 digits"]:::main N_Update358AcknowledgmentTimestampManifestTypeS_Node0 -- Yes --> N_Update358AcknowledgmentTimestampManifestTypeS_Node0_action N_Update358AcknowledgmentTimestampManifestTypeS_Node0_action --> E_Update358AcknowledgmentTimestampManifestTypeS S_Update358AcknowledgmentTimestampManifestTypeS --> N_Update358AcknowledgmentTimestampManifestTypeS_Node0 N_Update358AcknowledgmentTimestampManifestTypeS_Node0 -- No --> E_Update358AcknowledgmentTimestampManifestTypeS
S"}:::decision N_Update358AcknowledgmentTimestampManifestTypeS_Node0_action["The system updates T1-358-ACK field
with current machine date century
date and time first 4 digits"]:::main N_Update358AcknowledgmentTimestampManifestTypeS_Node0 -- Yes --> N_Update358AcknowledgmentTimestampManifestTypeS_Node0_action N_Update358AcknowledgmentTimestampManifestTypeS_Node0_action --> E_Update358AcknowledgmentTimestampManifestTypeS S_Update358AcknowledgmentTimestampManifestTypeS --> N_Update358AcknowledgmentTimestampManifestTypeS_Node0 N_Update358AcknowledgmentTimestampManifestTypeS_Node0 -- No --> E_Update358AcknowledgmentTimestampManifestTypeS
File: GCX015E.cbl
GIVEN:
A test message is being processed and T1 table configuration is available
WHEN:
The manifest type in the message is 'S'
THEN:
The system updates T1-358-ACK field with current machine date (century + date) and time (first 4 digits)
β Consolidated Acceptance Criteria
- The timestamp update is complete → the system saves the updated T1 table segment using REPL function 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_SaveUpdatedT1Table(["Start Step"])
E_SaveUpdatedT1Table(["End Step"])
N_SaveUpdatedT1Table_Node0{"The timestamp update is complete"}:::decision
N_SaveUpdatedT1Table_Node0_action["The system saves the updated T1
table segment using REPL function
code"]:::main N_SaveUpdatedT1Table_Node0 -- Yes --> N_SaveUpdatedT1Table_Node0_action N_SaveUpdatedT1Table_Node0_action --> E_SaveUpdatedT1Table S_SaveUpdatedT1Table --> N_SaveUpdatedT1Table_Node0 N_SaveUpdatedT1Table_Node0 -- No --> E_SaveUpdatedT1Table
table segment using REPL function
code"]:::main N_SaveUpdatedT1Table_Node0 -- Yes --> N_SaveUpdatedT1Table_Node0_action N_SaveUpdatedT1Table_Node0_action --> E_SaveUpdatedT1Table S_SaveUpdatedT1Table --> N_SaveUpdatedT1Table_Node0 N_SaveUpdatedT1Table_Node0 -- No --> E_SaveUpdatedT1Table
File: GCX015E.cbl
GIVEN:
T1 table acknowledgment timestamps have been updated
WHEN:
The timestamp update is complete
THEN:
The system saves the updated T1 table segment using REPL function code
β Consolidated Acceptance Criteria
- The system needs to access T1 table configuration data → the system retrieves the T1 table segment using table ID 'T1' with empty sequence 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_RetrieveT1TableSegment(["Start Step"])
E_RetrieveT1TableSegment(["End Step"])
N_RetrieveT1TableSegment_Node0{"The system needs to access T1 table
configuration data"}:::decision N_RetrieveT1TableSegment_Node0_action["The system retrieves the T1 table
segment using table ID T1 with empty
sequence ID"]:::main N_RetrieveT1TableSegment_Node0 -- Yes --> N_RetrieveT1TableSegment_Node0_action N_RetrieveT1TableSegment_Node0_action --> E_RetrieveT1TableSegment S_RetrieveT1TableSegment --> N_RetrieveT1TableSegment_Node0 N_RetrieveT1TableSegment_Node0 -- No --> E_RetrieveT1TableSegment
configuration data"}:::decision N_RetrieveT1TableSegment_Node0_action["The system retrieves the T1 table
segment using table ID T1 with empty
sequence ID"]:::main N_RetrieveT1TableSegment_Node0 -- Yes --> N_RetrieveT1TableSegment_Node0_action N_RetrieveT1TableSegment_Node0_action --> E_RetrieveT1TableSegment S_RetrieveT1TableSegment --> N_RetrieveT1TableSegment_Node0 N_RetrieveT1TableSegment_Node0 -- No --> E_RetrieveT1TableSegment
File: GCX015E.cbl
GIVEN:
A manifest processing request is initiated
WHEN:
The system needs to access T1 table configuration data
THEN:
The system retrieves the T1 table segment using table ID 'T1' with empty sequence ID
β Consolidated Acceptance Criteria
- The T1 table retrieval operation is completed → if T1 table is not found, log error 'T1 CHECK TABLE ENTRY NOT FOUND' and terminate processing, otherwise proceed with timestamp 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_T1TableFound(["Start Step"])
E_T1TableFound(["End Step"])
N_T1TableFound_Node0{"The T1 table retrieval operation is
completed"}:::decision N_T1TableFound_Node0_action["If T1 table is not found, log error
T1 CHECK TABLE ENTRY NOT FOUND and
terminate processing, otherwise
proceed with timestamp updates"]:::exclusion N_T1TableFound_Node0 -- Yes -->|Alternative| N_T1TableFound_Node0_action N_T1TableFound_Node0_action --> E_T1TableFound S_T1TableFound --> N_T1TableFound_Node0 N_T1TableFound_Node0 -- No --> E_T1TableFound
completed"}:::decision N_T1TableFound_Node0_action["If T1 table is not found, log error
T1 CHECK TABLE ENTRY NOT FOUND and
terminate processing, otherwise
proceed with timestamp updates"]:::exclusion N_T1TableFound_Node0 -- Yes -->|Alternative| N_T1TableFound_Node0_action N_T1TableFound_Node0_action --> E_T1TableFound S_T1TableFound --> N_T1TableFound_Node0 N_T1TableFound_Node0 -- No --> E_T1TableFound
File: GCX015E.cbl
GIVEN:
A request to update manifest acknowledgment timestamps
WHEN:
The T1 table retrieval operation is completed
THEN:
If T1 table is not found, log error 'T1 CHECK TABLE ENTRY NOT FOUND' and terminate processing, otherwise proceed with timestamp updates
β Consolidated Acceptance Criteria
- The system updates acknowledgment timestamps → set T1-309-ACK field with current machine century (positions 1-2), current machine date (positions 3-8), and current machine time first 4 digits (positions 9-12)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update309ACKTimestampwithCurrentDateTime(["Start Step"])
E_Update309ACKTimestampwithCurrentDateTime(["End Step"])
N_Update309ACKTimestampwithCurrentDateTime_Node0{"The system updates acknowledgment
timestamps"}:::decision N_Update309ACKTimestampwithCurrentDateTime_Node0_action["Set T1-309-ACK field with current
machine century positions 1-2,
current machine date positions 3-8,
and current machine time first 4
digits positions 9-12"]:::main N_Update309ACKTimestampwithCurrentDateTime_Node0 -- Yes --> N_Update309ACKTimestampwithCurrentDateTime_Node0_action N_Update309ACKTimestampwithCurrentDateTime_Node0_action --> E_Update309ACKTimestampwithCurrentDateTime S_Update309ACKTimestampwithCurrentDateTime --> N_Update309ACKTimestampwithCurrentDateTime_Node0 N_Update309ACKTimestampwithCurrentDateTime_Node0 -- No --> E_Update309ACKTimestampwithCurrentDateTime
timestamps"}:::decision N_Update309ACKTimestampwithCurrentDateTime_Node0_action["Set T1-309-ACK field with current
machine century positions 1-2,
current machine date positions 3-8,
and current machine time first 4
digits positions 9-12"]:::main N_Update309ACKTimestampwithCurrentDateTime_Node0 -- Yes --> N_Update309ACKTimestampwithCurrentDateTime_Node0_action N_Update309ACKTimestampwithCurrentDateTime_Node0_action --> E_Update309ACKTimestampwithCurrentDateTime S_Update309ACKTimestampwithCurrentDateTime --> N_Update309ACKTimestampwithCurrentDateTime_Node0 N_Update309ACKTimestampwithCurrentDateTime_Node0 -- No --> E_Update309ACKTimestampwithCurrentDateTime
File: GCX015E.cbl
GIVEN:
A manifest with type code 'P' (Preliminary) is being processed
WHEN:
The system updates acknowledgment timestamps
THEN:
Set T1-309-ACK field with current machine century (positions 1-2), current machine date (positions 3-8), and current machine time first 4 digits (positions 9-12)
β Consolidated Acceptance Criteria
- The system updates acknowledgment timestamps → set T1-353-ACK field with current machine century (positions 1-2), current machine date (positions 3-8), and current machine time first 4 digits (positions 9-12)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update353ACKTimestampwithCurrentDateTime(["Start Step"])
E_Update353ACKTimestampwithCurrentDateTime(["End Step"])
N_Update353ACKTimestampwithCurrentDateTime_Node0{"The system updates acknowledgment
timestamps"}:::decision N_Update353ACKTimestampwithCurrentDateTime_Node0_action["Set T1-353-ACK field with current
machine century positions 1-2,
current machine date positions 3-8,
and current machine time first 4
digits positions 9-12"]:::main N_Update353ACKTimestampwithCurrentDateTime_Node0 -- Yes --> N_Update353ACKTimestampwithCurrentDateTime_Node0_action N_Update353ACKTimestampwithCurrentDateTime_Node0_action --> E_Update353ACKTimestampwithCurrentDateTime S_Update353ACKTimestampwithCurrentDateTime --> N_Update353ACKTimestampwithCurrentDateTime_Node0 N_Update353ACKTimestampwithCurrentDateTime_Node0 -- No --> E_Update353ACKTimestampwithCurrentDateTime
timestamps"}:::decision N_Update353ACKTimestampwithCurrentDateTime_Node0_action["Set T1-353-ACK field with current
machine century positions 1-2,
current machine date positions 3-8,
and current machine time first 4
digits positions 9-12"]:::main N_Update353ACKTimestampwithCurrentDateTime_Node0 -- Yes --> N_Update353ACKTimestampwithCurrentDateTime_Node0_action N_Update353ACKTimestampwithCurrentDateTime_Node0_action --> E_Update353ACKTimestampwithCurrentDateTime S_Update353ACKTimestampwithCurrentDateTime --> N_Update353ACKTimestampwithCurrentDateTime_Node0 N_Update353ACKTimestampwithCurrentDateTime_Node0 -- No --> E_Update353ACKTimestampwithCurrentDateTime
File: GCX015E.cbl
GIVEN:
A manifest with type code 'H' (Hold) is being processed
WHEN:
The system updates acknowledgment timestamps
THEN:
Set T1-353-ACK field with current machine century (positions 1-2), current machine date (positions 3-8), and current machine time first 4 digits (positions 9-12)
β Consolidated Acceptance Criteria
- The system updates acknowledgment timestamps → set T1-358-ACK field with current machine century (positions 1-2), current machine date (positions 3-8), and current machine time first 4 digits (positions 9-12)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update358ACKTimestampwithCurrentDateTime(["Start Step"])
E_Update358ACKTimestampwithCurrentDateTime(["End Step"])
N_Update358ACKTimestampwithCurrentDateTime_Node0{"The system updates acknowledgment
timestamps"}:::decision N_Update358ACKTimestampwithCurrentDateTime_Node0_action["Set T1-358-ACK field with current
machine century positions 1-2,
current machine date positions 3-8,
and current machine time first 4
digits positions 9-12"]:::main N_Update358ACKTimestampwithCurrentDateTime_Node0 -- Yes --> N_Update358ACKTimestampwithCurrentDateTime_Node0_action N_Update358ACKTimestampwithCurrentDateTime_Node0_action --> E_Update358ACKTimestampwithCurrentDateTime S_Update358ACKTimestampwithCurrentDateTime --> N_Update358ACKTimestampwithCurrentDateTime_Node0 N_Update358ACKTimestampwithCurrentDateTime_Node0 -- No --> E_Update358ACKTimestampwithCurrentDateTime
timestamps"}:::decision N_Update358ACKTimestampwithCurrentDateTime_Node0_action["Set T1-358-ACK field with current
machine century positions 1-2,
current machine date positions 3-8,
and current machine time first 4
digits positions 9-12"]:::main N_Update358ACKTimestampwithCurrentDateTime_Node0 -- Yes --> N_Update358ACKTimestampwithCurrentDateTime_Node0_action N_Update358ACKTimestampwithCurrentDateTime_Node0_action --> E_Update358ACKTimestampwithCurrentDateTime S_Update358ACKTimestampwithCurrentDateTime --> N_Update358ACKTimestampwithCurrentDateTime_Node0 N_Update358ACKTimestampwithCurrentDateTime_Node0 -- No --> E_Update358ACKTimestampwithCurrentDateTime
File: GCX015E.cbl
GIVEN:
A manifest with type code 'S' (Supplemental) is being processed
WHEN:
The system updates acknowledgment timestamps
THEN:
Set T1-358-ACK field with current machine century (positions 1-2), current machine date (positions 3-8), and current machine time first 4 digits (positions 9-12)
β Consolidated Acceptance Criteria
- The timestamp update process is completed → write the modified T1 segment back to table storage using REPL function 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_WriteUpdatedT1Segment(["Start Step"])
E_WriteUpdatedT1Segment(["End Step"])
N_WriteUpdatedT1Segment_Node0{"The timestamp update process is
completed"}:::decision N_WriteUpdatedT1Segment_Node0_action["Write the modified T1 segment back
to table storage using REPL function
code"]:::main N_WriteUpdatedT1Segment_Node0 -- Yes --> N_WriteUpdatedT1Segment_Node0_action N_WriteUpdatedT1Segment_Node0_action --> E_WriteUpdatedT1Segment S_WriteUpdatedT1Segment --> N_WriteUpdatedT1Segment_Node0 N_WriteUpdatedT1Segment_Node0 -- No --> E_WriteUpdatedT1Segment
completed"}:::decision N_WriteUpdatedT1Segment_Node0_action["Write the modified T1 segment back
to table storage using REPL function
code"]:::main N_WriteUpdatedT1Segment_Node0 -- Yes --> N_WriteUpdatedT1Segment_Node0_action N_WriteUpdatedT1Segment_Node0_action --> E_WriteUpdatedT1Segment S_WriteUpdatedT1Segment --> N_WriteUpdatedT1Segment_Node0 N_WriteUpdatedT1Segment_Node0 -- No --> E_WriteUpdatedT1Segment
File: GCX015E.cbl
GIVEN:
T1 table segment has been updated with new acknowledgment timestamp
WHEN:
The timestamp update process is completed
THEN:
Write the modified T1 segment back to table storage using REPL function code
β Consolidated Acceptance Criteria
- The manifest type code is P (Manifest), H (Delete Manifest), or S (Status Manifest) → the system updates the corresponding acknowledgment timestamp field (309-ACK for P, 353-ACK for H, 358-ACK for S) 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_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS(["Start Step"])
E_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS(["End Step"])
N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0{"The manifest type code is P
Manifest, H Delete Manifest, or S
Status Manifest"}:::decision N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0_action["The system updates the
corresponding acknowledgment
timestamp field 309-ACK for P,
353-ACK for H, 358-ACK for S with
current date and time"]:::main N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0 -- Yes --> N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0_action N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0_action --> E_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS S_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS --> N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0 N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0 -- No --> E_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS
Manifest, H Delete Manifest, or S
Status Manifest"}:::decision N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0_action["The system updates the
corresponding acknowledgment
timestamp field 309-ACK for P,
353-ACK for H, 358-ACK for S with
current date and time"]:::main N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0 -- Yes --> N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0_action N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0_action --> E_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS S_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS --> N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0 N_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS_Node0 -- No --> E_Updatedifferenttimestampfields309353358inT1tablebasedonmanifesttypecodePHS
File: GCX015E.cbl
GIVEN:
A manifest message is being processed and the T1 table entry exists
WHEN:
The manifest type code is P (Manifest), H (Delete Manifest), or S (Status Manifest)
THEN:
- The system updates the corresponding acknowledgment timestamp field (309-ack for p, 353-ack for h, 358-ack for s) with current date
- Time
β Consolidated Acceptance Criteria
- The T1 table entry retrieval is attempted → if the T1 table entry is not found, the system generates an error message 'T1 CHECK TABLE ENTRY NOT FOUND' and terminates processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_T1EntryFound(["Start Step"])
E_T1EntryFound(["End Step"])
N_T1EntryFound_Node0{"The T1 table entry retrieval is
attempted"}:::decision N_T1EntryFound_Node0_action["If the T1 table entry is not found,
the system generates an error
message T1 CHECK TABLE ENTRY NOT
FOUND and terminates processing"]:::main N_T1EntryFound_Node0 -- Yes --> N_T1EntryFound_Node0_action N_T1EntryFound_Node0_action --> E_T1EntryFound S_T1EntryFound --> N_T1EntryFound_Node0 N_T1EntryFound_Node0 -- No --> E_T1EntryFound
attempted"}:::decision N_T1EntryFound_Node0_action["If the T1 table entry is not found,
the system generates an error
message T1 CHECK TABLE ENTRY NOT
FOUND and terminates processing"]:::main N_T1EntryFound_Node0 -- Yes --> N_T1EntryFound_Node0_action N_T1EntryFound_Node0_action --> E_T1EntryFound S_T1EntryFound --> N_T1EntryFound_Node0 N_T1EntryFound_Node0 -- No --> E_T1EntryFound
File: GCX015E.cbl
GIVEN:
A request to update manifest acknowledgment timestamps
WHEN:
The T1 table entry retrieval is attempted
THEN:
If the T1 table entry is not found, the system generates an error message 'T1 CHECK TABLE ENTRY NOT FOUND' and terminates processing
β Consolidated Acceptance Criteria
- The manifest type code is 'P' → the system updates the T1-309-ACK field with current machine date (century + date) and time (first 4 digits)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update309ACKTimestampTypePManifest(["Start Step"])
E_Update309ACKTimestampTypePManifest(["End Step"])
N_Update309ACKTimestampTypePManifest_Node0{"The manifest type code is P"}:::decision
N_Update309ACKTimestampTypePManifest_Node0_action["The system updates the T1-309-ACK
field with current machine date
century date and time first 4 digits"]:::main N_Update309ACKTimestampTypePManifest_Node0 -- Yes --> N_Update309ACKTimestampTypePManifest_Node0_action N_Update309ACKTimestampTypePManifest_Node0_action --> E_Update309ACKTimestampTypePManifest S_Update309ACKTimestampTypePManifest --> N_Update309ACKTimestampTypePManifest_Node0 N_Update309ACKTimestampTypePManifest_Node0 -- No --> E_Update309ACKTimestampTypePManifest
field with current machine date
century date and time first 4 digits"]:::main N_Update309ACKTimestampTypePManifest_Node0 -- Yes --> N_Update309ACKTimestampTypePManifest_Node0_action N_Update309ACKTimestampTypePManifest_Node0_action --> E_Update309ACKTimestampTypePManifest S_Update309ACKTimestampTypePManifest --> N_Update309ACKTimestampTypePManifest_Node0 N_Update309ACKTimestampTypePManifest_Node0 -- No --> E_Update309ACKTimestampTypePManifest
File: GCX015E.cbl
GIVEN:
A manifest message with type code 'P' is being processed and T1 table entry exists
WHEN:
The manifest type code is 'P'
THEN:
The system updates the T1-309-ACK field with current machine date (century + date) and time (first 4 digits)
β Consolidated Acceptance Criteria
- The manifest type code is 'H' → the system updates the T1-353-ACK field with current machine date (century + date) and time (first 4 digits)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update353ACKTimestampTypeHDeleteManifest(["Start Step"])
E_Update353ACKTimestampTypeHDeleteManifest(["End Step"])
N_Update353ACKTimestampTypeHDeleteManifest_Node0{"The manifest type code is H"}:::decision
N_Update353ACKTimestampTypeHDeleteManifest_Node0_action["The system updates the T1-353-ACK
field with current machine date
century date and time first 4 digits"]:::main N_Update353ACKTimestampTypeHDeleteManifest_Node0 -- Yes --> N_Update353ACKTimestampTypeHDeleteManifest_Node0_action N_Update353ACKTimestampTypeHDeleteManifest_Node0_action --> E_Update353ACKTimestampTypeHDeleteManifest S_Update353ACKTimestampTypeHDeleteManifest --> N_Update353ACKTimestampTypeHDeleteManifest_Node0 N_Update353ACKTimestampTypeHDeleteManifest_Node0 -- No --> E_Update353ACKTimestampTypeHDeleteManifest
field with current machine date
century date and time first 4 digits"]:::main N_Update353ACKTimestampTypeHDeleteManifest_Node0 -- Yes --> N_Update353ACKTimestampTypeHDeleteManifest_Node0_action N_Update353ACKTimestampTypeHDeleteManifest_Node0_action --> E_Update353ACKTimestampTypeHDeleteManifest S_Update353ACKTimestampTypeHDeleteManifest --> N_Update353ACKTimestampTypeHDeleteManifest_Node0 N_Update353ACKTimestampTypeHDeleteManifest_Node0 -- No --> E_Update353ACKTimestampTypeHDeleteManifest
File: GCX015E.cbl
GIVEN:
A manifest message with type code 'H' is being processed and T1 table entry exists
WHEN:
The manifest type code is 'H'
THEN:
The system updates the T1-353-ACK field with current machine date (century + date) and time (first 4 digits)
β Consolidated Acceptance Criteria
- The manifest type code is 'S' → the system updates the T1-358-ACK field with current machine date (century + date) and time (first 4 digits)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Update358ACKTimestampTypeSStatusManifest(["Start Step"])
E_Update358ACKTimestampTypeSStatusManifest(["End Step"])
N_Update358ACKTimestampTypeSStatusManifest_Node0{"The manifest type code is S"}:::decision
N_Update358ACKTimestampTypeSStatusManifest_Node0_action["The system updates the T1-358-ACK
field with current machine date
century date and time first 4 digits"]:::main N_Update358ACKTimestampTypeSStatusManifest_Node0 -- Yes --> N_Update358ACKTimestampTypeSStatusManifest_Node0_action N_Update358ACKTimestampTypeSStatusManifest_Node0_action --> E_Update358ACKTimestampTypeSStatusManifest S_Update358ACKTimestampTypeSStatusManifest --> N_Update358ACKTimestampTypeSStatusManifest_Node0 N_Update358ACKTimestampTypeSStatusManifest_Node0 -- No --> E_Update358ACKTimestampTypeSStatusManifest
field with current machine date
century date and time first 4 digits"]:::main N_Update358ACKTimestampTypeSStatusManifest_Node0 -- Yes --> N_Update358ACKTimestampTypeSStatusManifest_Node0_action N_Update358ACKTimestampTypeSStatusManifest_Node0_action --> E_Update358ACKTimestampTypeSStatusManifest S_Update358ACKTimestampTypeSStatusManifest --> N_Update358ACKTimestampTypeSStatusManifest_Node0 N_Update358ACKTimestampTypeSStatusManifest_Node0 -- No --> E_Update358ACKTimestampTypeSStatusManifest
File: GCX015E.cbl
GIVEN:
A manifest message with type code 'S' is being processed and T1 table entry exists
WHEN:
The manifest type code is 'S'
THEN:
The system updates the T1-358-ACK field with current machine date (century + date) and time (first 4 digits)
β Consolidated Acceptance Criteria
- The timestamp update is complete → the system saves the updated T1 segment back to the table using REPL function 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_SaveUpdatedT1Entry(["Start Step"])
E_SaveUpdatedT1Entry(["End Step"])
N_SaveUpdatedT1Entry_Node0{"The timestamp update is complete"}:::decision
N_SaveUpdatedT1Entry_Node0_action["The system saves the updated T1
segment back to the table using REPL
function code"]:::main N_SaveUpdatedT1Entry_Node0 -- Yes --> N_SaveUpdatedT1Entry_Node0_action N_SaveUpdatedT1Entry_Node0_action --> E_SaveUpdatedT1Entry S_SaveUpdatedT1Entry --> N_SaveUpdatedT1Entry_Node0 N_SaveUpdatedT1Entry_Node0 -- No --> E_SaveUpdatedT1Entry
segment back to the table using REPL
function code"]:::main N_SaveUpdatedT1Entry_Node0 -- Yes --> N_SaveUpdatedT1Entry_Node0_action N_SaveUpdatedT1Entry_Node0_action --> E_SaveUpdatedT1Entry S_SaveUpdatedT1Entry --> N_SaveUpdatedT1Entry_Node0 N_SaveUpdatedT1Entry_Node0 -- No --> E_SaveUpdatedT1Entry
File: GCX015E.cbl
GIVEN:
The T1 table entry has been updated with new acknowledgment timestamp
WHEN:
The timestamp update is complete
THEN:
The system saves the updated T1 segment back to the table using REPL function code
β Consolidated Acceptance Criteria
- The train status update process is executed → the train status should be set to 'DELETED' and the train record should be updated with root-only replacement
- The train status update process is executed → the train status should be changed from DELETE-PENDING to 'DELETED' and the train record should be updated with root-only 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_SetStatustoDELETED(["Start Step"])
E_SetStatustoDELETED(["End Step"])
N_SetStatustoDELETED_Node0{"The train status update process is
executed"}:::decision N_SetStatustoDELETED_Node0_action["The train status should be set to
DELETED and the train record should
be updated with root-only
replacement"]:::main N_SetStatustoDELETED_Node0 -- Yes --> N_SetStatustoDELETED_Node0_action N_SetStatustoDELETED_Node0_action --> E_SetStatustoDELETED S_SetStatustoDELETED --> N_SetStatustoDELETED_Node0 N_SetStatustoDELETED_Node1{"The train status update process is
executed"}:::decision N_SetStatustoDELETED_Node1_action["The train status should be changed
from DELETE-PENDING to DELETED and
the train record should be updated
with root-only replacement"]:::main N_SetStatustoDELETED_Node1 -- Yes --> N_SetStatustoDELETED_Node1_action N_SetStatustoDELETED_Node1_action --> E_SetStatustoDELETED N_SetStatustoDELETED_Node0 -- No --> N_SetStatustoDELETED_Node1 N_SetStatustoDELETED_Node1 -- No --> E_SetStatustoDELETED
executed"}:::decision N_SetStatustoDELETED_Node0_action["The train status should be set to
DELETED and the train record should
be updated with root-only
replacement"]:::main N_SetStatustoDELETED_Node0 -- Yes --> N_SetStatustoDELETED_Node0_action N_SetStatustoDELETED_Node0_action --> E_SetStatustoDELETED S_SetStatustoDELETED --> N_SetStatustoDELETED_Node0 N_SetStatustoDELETED_Node1{"The train status update process is
executed"}:::decision N_SetStatustoDELETED_Node1_action["The train status should be changed
from DELETE-PENDING to DELETED and
the train record should be updated
with root-only replacement"]:::main N_SetStatustoDELETED_Node1 -- Yes --> N_SetStatustoDELETED_Node1_action N_SetStatustoDELETED_Node1_action --> E_SetStatustoDELETED N_SetStatustoDELETED_Node0 -- No --> N_SetStatustoDELETED_Node1 N_SetStatustoDELETED_Node1 -- No --> E_SetStatustoDELETED
File: GCX015E.cbl
GIVEN:
A train record exists with current status of DELETED and the processing type is TRAIN and the customs response indicates ACK status
WHEN:
The train status update process is executed
THEN:
The train status should be set to 'DELETED' and the train record should be updated with root-only replacement
File: GCX015E.cbl
GIVEN:
A train record exists with current status of DELETE-PENDING and the processing type is TRAIN and the customs response indicates ACK status
WHEN:
The train status update process is executed
THEN:
The train status should be changed from DELETE-PENDING to 'DELETED' and the train record should be updated with root-only replacement
β Consolidated Acceptance Criteria
- The train status update process is executed → the train status should be updated to the current customs status value and the train record should be updated with root-only 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_SetStatustoCurrentCustomsStatus(["Start Step"])
E_SetStatustoCurrentCustomsStatus(["End Step"])
N_SetStatustoCurrentCustomsStatus_Node0{"The train status update process is
executed"}:::decision N_SetStatustoCurrentCustomsStatus_Node0_action["The train status should be updated
to the current customs status value
and the train record should be
updated with root-only replacement"]:::main N_SetStatustoCurrentCustomsStatus_Node0 -- Yes --> N_SetStatustoCurrentCustomsStatus_Node0_action N_SetStatustoCurrentCustomsStatus_Node0_action --> E_SetStatustoCurrentCustomsStatus S_SetStatustoCurrentCustomsStatus --> N_SetStatustoCurrentCustomsStatus_Node0 N_SetStatustoCurrentCustomsStatus_Node0 -- No --> E_SetStatustoCurrentCustomsStatus
executed"}:::decision N_SetStatustoCurrentCustomsStatus_Node0_action["The train status should be updated
to the current customs status value
and the train record should be
updated with root-only replacement"]:::main N_SetStatustoCurrentCustomsStatus_Node0 -- Yes --> N_SetStatustoCurrentCustomsStatus_Node0_action N_SetStatustoCurrentCustomsStatus_Node0_action --> E_SetStatustoCurrentCustomsStatus S_SetStatustoCurrentCustomsStatus --> N_SetStatustoCurrentCustomsStatus_Node0 N_SetStatustoCurrentCustomsStatus_Node0 -- No --> E_SetStatustoCurrentCustomsStatus
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train record exists with current status that is not DELETED and not DELETE-PENDING and the processing type is TRAIN
WHEN:
The train status update process is executed
THEN:
- The train status should be updated to the current customs status value
- The train record should be updated with root-only replacement
β Consolidated Acceptance Criteria
- The train record update is completed → the system should perform AEI train send check processing
- The train record update is completed → the system should trigger the train arrival process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainRecord(["Start Step"])
E_UpdateTrainRecord(["End Step"])
N_UpdateTrainRecord_Node0{"The train record update is
completed"}:::decision N_UpdateTrainRecord_Node0_action["The system should perform AEI train
send check processing"]:::main N_UpdateTrainRecord_Node0 -- Yes --> N_UpdateTrainRecord_Node0_action N_UpdateTrainRecord_Node0_action --> E_UpdateTrainRecord S_UpdateTrainRecord --> N_UpdateTrainRecord_Node0 N_UpdateTrainRecord_Node1{"The train record update is
completed"}:::decision N_UpdateTrainRecord_Node1_action["The system should trigger the train
arrival process"]:::main N_UpdateTrainRecord_Node1 -- Yes --> N_UpdateTrainRecord_Node1_action N_UpdateTrainRecord_Node1_action --> E_UpdateTrainRecord N_UpdateTrainRecord_Node0 -- No --> N_UpdateTrainRecord_Node1 N_UpdateTrainRecord_Node1 -- No --> E_UpdateTrainRecord
completed"}:::decision N_UpdateTrainRecord_Node0_action["The system should perform AEI train
send check processing"]:::main N_UpdateTrainRecord_Node0 -- Yes --> N_UpdateTrainRecord_Node0_action N_UpdateTrainRecord_Node0_action --> E_UpdateTrainRecord S_UpdateTrainRecord --> N_UpdateTrainRecord_Node0 N_UpdateTrainRecord_Node1{"The train record update is
completed"}:::decision N_UpdateTrainRecord_Node1_action["The system should trigger the train
arrival process"]:::main N_UpdateTrainRecord_Node1 -- Yes --> N_UpdateTrainRecord_Node1_action N_UpdateTrainRecord_Node1_action --> E_UpdateTrainRecord N_UpdateTrainRecord_Node0 -- No --> N_UpdateTrainRecord_Node1 N_UpdateTrainRecord_Node1 -- No --> E_UpdateTrainRecord
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A train record has been updated with status that is not DELETED and not DELETE-PENDING
WHEN:
The train record update is completed
THEN:
The system should perform AEI train send check processing
File: GCX015E.cbl
GIVEN:
A train record has been updated and the train has ACK status and the train is in ARRIVED-PENDING state
WHEN:
The train record update is completed
THEN:
The system should trigger the train arrival process
β Consolidated Acceptance Criteria
- The system processes the status update → set both USCARGO status fields to acknowledgment 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_SetCargoStatustoACK(["Start Step"])
E_SetCargoStatustoACK(["End Step"])
N_SetCargoStatustoACK_Node0{"The system processes the status
update"}:::decision N_SetCargoStatustoACK_Node0_action["Set both USCARGO status fields to
acknowledgment status"]:::main N_SetCargoStatustoACK_Node0 -- Yes --> N_SetCargoStatustoACK_Node0_action N_SetCargoStatustoACK_Node0_action --> E_SetCargoStatustoACK S_SetCargoStatustoACK --> N_SetCargoStatustoACK_Node0 N_SetCargoStatustoACK_Node0 -- No --> E_SetCargoStatustoACK
update"}:::decision N_SetCargoStatustoACK_Node0_action["Set both USCARGO status fields to
acknowledgment status"]:::main N_SetCargoStatustoACK_Node0 -- Yes --> N_SetCargoStatustoACK_Node0_action N_SetCargoStatustoACK_Node0_action --> E_SetCargoStatustoACK S_SetCargoStatustoACK --> N_SetCargoStatustoACK_Node0 N_SetCargoStatustoACK_Node0 -- No --> E_SetCargoStatustoACK
File: GCX015E.cbl
GIVEN:
A cargo record is being processed with acknowledgment status and saved status description is empty
WHEN:
The system processes the status update
THEN:
Set both USCARGO status fields to acknowledgment status
β Consolidated Acceptance Criteria
- The system processes status restoration → move saved status to current USCARGO status field and move saved description to current USCARGO description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveSavedStatustoCurrentStatus(["Start Step"])
E_MoveSavedStatustoCurrentStatus(["End Step"])
N_MoveSavedStatustoCurrentStatus_Node0{"The system processes status
restoration"}:::decision N_MoveSavedStatustoCurrentStatus_Node0_action["Move saved status to current
USCARGO status field and move saved
description to current USCARGO
description field"]:::main N_MoveSavedStatustoCurrentStatus_Node0 -- Yes --> N_MoveSavedStatustoCurrentStatus_Node0_action N_MoveSavedStatustoCurrentStatus_Node0_action --> E_MoveSavedStatustoCurrentStatus S_MoveSavedStatustoCurrentStatus --> N_MoveSavedStatustoCurrentStatus_Node0 N_MoveSavedStatustoCurrentStatus_Node0 -- No --> E_MoveSavedStatustoCurrentStatus
restoration"}:::decision N_MoveSavedStatustoCurrentStatus_Node0_action["Move saved status to current
USCARGO status field and move saved
description to current USCARGO
description field"]:::main N_MoveSavedStatustoCurrentStatus_Node0 -- Yes --> N_MoveSavedStatustoCurrentStatus_Node0_action N_MoveSavedStatustoCurrentStatus_Node0_action --> E_MoveSavedStatustoCurrentStatus S_MoveSavedStatustoCurrentStatus --> N_MoveSavedStatustoCurrentStatus_Node0 N_MoveSavedStatustoCurrentStatus_Node0 -- No --> E_MoveSavedStatustoCurrentStatus
File: GCX015E.cbl
GIVEN:
A cargo record has saved status and description information available
WHEN:
The system processes status restoration
THEN:
- Move saved status to current uscargo status field
- Move saved description to current uscargo description field
β Consolidated Acceptance Criteria
- An error status is being set AND the current status is not already ERROR, ACK, or ACK-R → save the current status to RT44-US-SAVE-STATUS 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_SaveCurrentStatustoRT44USSAVESTATUS(["Start Step"])
E_SaveCurrentStatustoRT44USSAVESTATUS(["End Step"])
N_SaveCurrentStatustoRT44USSAVESTATUS_Node0{"An error status is being set AND
the current status is not already
ERROR, ACK, or ACK-R"}:::decision N_SaveCurrentStatustoRT44USSAVESTATUS_Node0_action["Save the current status to
RT44-US-SAVE-STATUS field"]:::exclusion N_SaveCurrentStatustoRT44USSAVESTATUS_Node0 -- Yes -->|Alternative| N_SaveCurrentStatustoRT44USSAVESTATUS_Node0_action N_SaveCurrentStatustoRT44USSAVESTATUS_Node0_action --> E_SaveCurrentStatustoRT44USSAVESTATUS S_SaveCurrentStatustoRT44USSAVESTATUS --> N_SaveCurrentStatustoRT44USSAVESTATUS_Node0 N_SaveCurrentStatustoRT44USSAVESTATUS_Node0 -- No --> E_SaveCurrentStatustoRT44USSAVESTATUS
the current status is not already
ERROR, ACK, or ACK-R"}:::decision N_SaveCurrentStatustoRT44USSAVESTATUS_Node0_action["Save the current status to
RT44-US-SAVE-STATUS field"]:::exclusion N_SaveCurrentStatustoRT44USSAVESTATUS_Node0 -- Yes -->|Alternative| N_SaveCurrentStatustoRT44USSAVESTATUS_Node0_action N_SaveCurrentStatustoRT44USSAVESTATUS_Node0_action --> E_SaveCurrentStatustoRT44USSAVESTATUS S_SaveCurrentStatustoRT44USSAVESTATUS --> N_SaveCurrentStatustoRT44USSAVESTATUS_Node0 N_SaveCurrentStatustoRT44USSAVESTATUS_Node0 -- No --> E_SaveCurrentStatustoRT44USSAVESTATUS
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with current status and description
WHEN:
- An error status is being set
- The current status is not already error, ack, or ack-r
THEN:
Save the current status to RT44-US-SAVE-STATUS field
β Consolidated Acceptance Criteria
- An error status is being set AND the current status is not already ERROR, ACK, or ACK-R → save the current status description to RT45-US-SAVE-STAT-DESC 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_SaveCurrentDescriptiontoRT45USSAVESTATDESC(["Start Step"])
E_SaveCurrentDescriptiontoRT45USSAVESTATDESC(["End Step"])
N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0{"An error status is being set AND
the current status is not already
ERROR, ACK, or ACK-R"}:::decision N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0_action["Save the current status description
to RT45-US-SAVE-STAT-DESC field"]:::exclusion N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0 -- Yes -->|Alternative| N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0_action N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0_action --> E_SaveCurrentDescriptiontoRT45USSAVESTATDESC S_SaveCurrentDescriptiontoRT45USSAVESTATDESC --> N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0 N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0 -- No --> E_SaveCurrentDescriptiontoRT45USSAVESTATDESC
the current status is not already
ERROR, ACK, or ACK-R"}:::decision N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0_action["Save the current status description
to RT45-US-SAVE-STAT-DESC field"]:::exclusion N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0 -- Yes -->|Alternative| N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0_action N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0_action --> E_SaveCurrentDescriptiontoRT45USSAVESTATDESC S_SaveCurrentDescriptiontoRT45USSAVESTATDESC --> N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0 N_SaveCurrentDescriptiontoRT45USSAVESTATDESC_Node0 -- No --> E_SaveCurrentDescriptiontoRT45USSAVESTATDESC
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists with current status description
WHEN:
- An error status is being set
- The current status is not already error, ack, or ack-r
THEN:
Save the current status description to RT45-US-SAVE-STAT-DESC field
β Consolidated Acceptance Criteria
- An error status update is being processed → skip saving the current status and description to preserve 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_SkipSaveStatusAlreadyErrorACK(["Start Step"])
E_SkipSaveStatusAlreadyErrorACK(["End Step"])
N_SkipSaveStatusAlreadyErrorACK_Node0{"An error status update is being
processed"}:::decision N_SkipSaveStatusAlreadyErrorACK_Node0_action["Skip saving the current status and
description to preserve previously
saved values"]:::exclusion N_SkipSaveStatusAlreadyErrorACK_Node0 -- Yes -->|Alternative| N_SkipSaveStatusAlreadyErrorACK_Node0_action N_SkipSaveStatusAlreadyErrorACK_Node0_action --> E_SkipSaveStatusAlreadyErrorACK S_SkipSaveStatusAlreadyErrorACK --> N_SkipSaveStatusAlreadyErrorACK_Node0 N_SkipSaveStatusAlreadyErrorACK_Node0 -- No --> E_SkipSaveStatusAlreadyErrorACK
processed"}:::decision N_SkipSaveStatusAlreadyErrorACK_Node0_action["Skip saving the current status and
description to preserve previously
saved values"]:::exclusion N_SkipSaveStatusAlreadyErrorACK_Node0 -- Yes -->|Alternative| N_SkipSaveStatusAlreadyErrorACK_Node0_action N_SkipSaveStatusAlreadyErrorACK_Node0_action --> E_SkipSaveStatusAlreadyErrorACK S_SkipSaveStatusAlreadyErrorACK --> N_SkipSaveStatusAlreadyErrorACK_Node0 N_SkipSaveStatusAlreadyErrorACK_Node0 -- No --> E_SkipSaveStatusAlreadyErrorACK
File: GCX015E.cbl
GIVEN:
A cargo record has current status of ERROR, ACK, or ACK-R
WHEN:
An error status update is being processed
THEN:
- Skip saving the current status
- Description to preserve previously saved values
β Consolidated Acceptance Criteria
- The email sender is being configured → the system sets the default Merlin ID as the from user code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultMerlinIDasFromUser(["Start Step"])
E_SetDefaultMerlinIDasFromUser(["End Step"])
N_SetDefaultMerlinIDasFromUser_Node0{"The email sender is being
configured"}:::decision N_SetDefaultMerlinIDasFromUser_Node0_action["The system sets the default Merlin
ID as the from user code"]:::main N_SetDefaultMerlinIDasFromUser_Node0 -- Yes --> N_SetDefaultMerlinIDasFromUser_Node0_action N_SetDefaultMerlinIDasFromUser_Node0_action --> E_SetDefaultMerlinIDasFromUser S_SetDefaultMerlinIDasFromUser --> N_SetDefaultMerlinIDasFromUser_Node0 N_SetDefaultMerlinIDasFromUser_Node0 -- No --> E_SetDefaultMerlinIDasFromUser
configured"}:::decision N_SetDefaultMerlinIDasFromUser_Node0_action["The system sets the default Merlin
ID as the from user code"]:::main N_SetDefaultMerlinIDasFromUser_Node0 -- Yes --> N_SetDefaultMerlinIDasFromUser_Node0_action N_SetDefaultMerlinIDasFromUser_Node0_action --> E_SetDefaultMerlinIDasFromUser S_SetDefaultMerlinIDasFromUser --> N_SetDefaultMerlinIDasFromUser_Node0 N_SetDefaultMerlinIDasFromUser_Node0 -- No --> E_SetDefaultMerlinIDasFromUser
File: GCX015E.cbl
GIVEN:
An email needs to be sent through the Merlin system
WHEN:
The email sender is being configured
THEN:
The system sets the default Merlin ID as the from user code
β Consolidated Acceptance Criteria
- The system looks up email recipients in the AEI database using the train port information → if the database lookup is successful, the system uses the retrieved user IDs as recipients, otherwise it uses the default Merlin ID as the recipient
- The database lookup fails with an error other than 'no entry found' → the system triggers a database error 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_SetEmailRecipients(["Start Step"])
E_SetEmailRecipients(["End Step"])
N_SetEmailRecipients_Node0{"The system looks up email
recipients in the AEI database using
the train port information"}:::decision N_SetEmailRecipients_Node0_action["If the database lookup is
successful, the system uses the
retrieved user IDs as recipients,
otherwise it uses the default Merlin
ID as the recipient"]:::main N_SetEmailRecipients_Node0 -- Yes --> N_SetEmailRecipients_Node0_action N_SetEmailRecipients_Node0_action --> E_SetEmailRecipients S_SetEmailRecipients --> N_SetEmailRecipients_Node0 N_SetEmailRecipients_Node1{"The database lookup fails with an
error other than no entry found"}:::decision N_SetEmailRecipients_Node1_action["The system triggers a database
error notification process"]:::exclusion N_SetEmailRecipients_Node1 -- Yes -->|Alternative| N_SetEmailRecipients_Node1_action N_SetEmailRecipients_Node1_action --> E_SetEmailRecipients N_SetEmailRecipients_Node0 -- No --> N_SetEmailRecipients_Node1 N_SetEmailRecipients_Node1 -- No --> E_SetEmailRecipients
recipients in the AEI database using
the train port information"}:::decision N_SetEmailRecipients_Node0_action["If the database lookup is
successful, the system uses the
retrieved user IDs as recipients,
otherwise it uses the default Merlin
ID as the recipient"]:::main N_SetEmailRecipients_Node0 -- Yes --> N_SetEmailRecipients_Node0_action N_SetEmailRecipients_Node0_action --> E_SetEmailRecipients S_SetEmailRecipients --> N_SetEmailRecipients_Node0 N_SetEmailRecipients_Node1{"The database lookup fails with an
error other than no entry found"}:::decision N_SetEmailRecipients_Node1_action["The system triggers a database
error notification process"]:::exclusion N_SetEmailRecipients_Node1 -- Yes -->|Alternative| N_SetEmailRecipients_Node1_action N_SetEmailRecipients_Node1_action --> E_SetEmailRecipients N_SetEmailRecipients_Node0 -- No --> N_SetEmailRecipients_Node1 N_SetEmailRecipients_Node1 -- No --> E_SetEmailRecipients
File: GCX015E.cbl
GIVEN:
An AEI email needs to be sent and train security information is available
WHEN:
The system looks up email recipients in the AEI database using the train port information
THEN:
If the database lookup is successful, the system uses the retrieved user IDs as recipients, otherwise it uses the default Merlin ID as the recipient
File: GCX015E.cbl
GIVEN:
The system attempts to retrieve email recipients from the AEI database
WHEN:
The database lookup fails with an error other than 'no entry found'
THEN:
The system triggers a database error notification process
β Consolidated Acceptance Criteria
- The email subject is being formatted → the system creates a subject line containing 'TRAIN: [train_id] STATUS: [current_status]'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmailSubject(["Start Step"])
E_FormatEmailSubject(["End Step"])
N_FormatEmailSubject_Node0{"The email subject is being
formatted"}:::decision N_FormatEmailSubject_Node0_action["The system creates a subject line
containing TRAIN: trainid STATUS:
currentstatus"]:::main N_FormatEmailSubject_Node0 -- Yes --> N_FormatEmailSubject_Node0_action N_FormatEmailSubject_Node0_action --> E_FormatEmailSubject S_FormatEmailSubject --> N_FormatEmailSubject_Node0 N_FormatEmailSubject_Node0 -- No --> E_FormatEmailSubject
formatted"}:::decision N_FormatEmailSubject_Node0_action["The system creates a subject line
containing TRAIN: trainid STATUS:
currentstatus"]:::main N_FormatEmailSubject_Node0 -- Yes --> N_FormatEmailSubject_Node0_action N_FormatEmailSubject_Node0_action --> E_FormatEmailSubject S_FormatEmailSubject --> N_FormatEmailSubject_Node0 N_FormatEmailSubject_Node0 -- No --> E_FormatEmailSubject
File: GCX015E.cbl
GIVEN:
A train status email needs to be sent
WHEN:
The email subject is being formatted
THEN:
The system creates a subject line containing 'TRAIN: [train_id] STATUS: [current_status]'
β Consolidated Acceptance Criteria
- The system determines that warning emails should not be sent → the system clears the email text content 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_FormatEmailContent(["Start Step"])
E_FormatEmailContent(["End Step"])
N_FormatEmailContent_Node0{"The system determines that warning
emails should not be sent"}:::decision N_FormatEmailContent_Node0_action["The system clears the email text
content to spaces"]:::main N_FormatEmailContent_Node0 -- Yes --> N_FormatEmailContent_Node0_action N_FormatEmailContent_Node0_action --> E_FormatEmailContent S_FormatEmailContent --> N_FormatEmailContent_Node0 N_FormatEmailContent_Node0 -- No --> E_FormatEmailContent
emails should not be sent"}:::decision N_FormatEmailContent_Node0_action["The system clears the email text
content to spaces"]:::main N_FormatEmailContent_Node0 -- Yes --> N_FormatEmailContent_Node0_action N_FormatEmailContent_Node0_action --> E_FormatEmailContent S_FormatEmailContent --> N_FormatEmailContent_Node0 N_FormatEmailContent_Node0 -- No --> E_FormatEmailContent
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
An email is being prepared for sending
WHEN:
The system determines that warning emails should not be sent
THEN:
The system clears the email text content to spaces
β Consolidated Acceptance Criteria
- Email parameters are being configured → the system sets the destination filename to inbox, item width to 080, and clears copy usercode, keywords, 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_SetEmailParameters(["Start Step"])
E_SetEmailParameters(["End Step"])
N_SetEmailParameters_Node0{"Email parameters are being
configured"}:::decision N_SetEmailParameters_Node0_action["The system sets the destination
filename to inbox, item width to
080, and clears copy usercode,
keywords, and sequence numbers"]:::main N_SetEmailParameters_Node0 -- Yes --> N_SetEmailParameters_Node0_action N_SetEmailParameters_Node0_action --> E_SetEmailParameters S_SetEmailParameters --> N_SetEmailParameters_Node0 N_SetEmailParameters_Node0 -- No --> E_SetEmailParameters
configured"}:::decision N_SetEmailParameters_Node0_action["The system sets the destination
filename to inbox, item width to
080, and clears copy usercode,
keywords, and sequence numbers"]:::main N_SetEmailParameters_Node0 -- Yes --> N_SetEmailParameters_Node0_action N_SetEmailParameters_Node0_action --> E_SetEmailParameters S_SetEmailParameters --> N_SetEmailParameters_Node0 N_SetEmailParameters_Node0 -- No --> E_SetEmailParameters
File: GCX015E.cbl
GIVEN:
An email is being prepared for sending through Merlin
WHEN:
Email parameters are being configured
THEN:
The system sets the destination filename to inbox, item width to 080, and clears copy usercode, keywords, and sequence numbers
β Consolidated Acceptance Criteria
- The system needs to send the email → the system calls the EMCSEND3 service with all configured email 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_CallEMCSEND3toSendEmail(["Start Step"])
E_CallEMCSEND3toSendEmail(["End Step"])
N_CallEMCSEND3toSendEmail_Node0{"The system needs to send the email"}:::decision
N_CallEMCSEND3toSendEmail_Node0_action["The system calls the EMCSEND3
service with all configured email
parameters"]:::main N_CallEMCSEND3toSendEmail_Node0 -- Yes --> N_CallEMCSEND3toSendEmail_Node0_action N_CallEMCSEND3toSendEmail_Node0_action --> E_CallEMCSEND3toSendEmail S_CallEMCSEND3toSendEmail --> N_CallEMCSEND3toSendEmail_Node0 N_CallEMCSEND3toSendEmail_Node0 -- No --> E_CallEMCSEND3toSendEmail
service with all configured email
parameters"]:::main N_CallEMCSEND3toSendEmail_Node0 -- Yes --> N_CallEMCSEND3toSendEmail_Node0_action N_CallEMCSEND3toSendEmail_Node0_action --> E_CallEMCSEND3toSendEmail S_CallEMCSEND3toSendEmail --> N_CallEMCSEND3toSendEmail_Node0 N_CallEMCSEND3toSendEmail_Node0 -- No --> E_CallEMCSEND3toSendEmail
File: GCX015E.cbl
GIVEN:
Email parameters and content have been configured
WHEN:
The system needs to send the email
THEN:
The system calls the EMCSEND3 service with all configured email parameters
β Consolidated Acceptance Criteria
- The system prepares to resend the email → the system sets AEI9999 as the first backup recipient and OM01247 as the second backup 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_SetBackupRecipientsAEI9999OM01247(["Start Step"])
E_SetBackupRecipientsAEI9999OM01247(["End Step"])
N_SetBackupRecipientsAEI9999OM01247_Node0{"The system prepares to resend the
email"}:::decision N_SetBackupRecipientsAEI9999OM01247_Node0_action["The system sets AEI9999 as the
first backup recipient and OM01247
as the second backup recipient"]:::main N_SetBackupRecipientsAEI9999OM01247_Node0 -- Yes --> N_SetBackupRecipientsAEI9999OM01247_Node0_action N_SetBackupRecipientsAEI9999OM01247_Node0_action --> E_SetBackupRecipientsAEI9999OM01247 S_SetBackupRecipientsAEI9999OM01247 --> N_SetBackupRecipientsAEI9999OM01247_Node0 N_SetBackupRecipientsAEI9999OM01247_Node0 -- No --> E_SetBackupRecipientsAEI9999OM01247
email"}:::decision N_SetBackupRecipientsAEI9999OM01247_Node0_action["The system sets AEI9999 as the
first backup recipient and OM01247
as the second backup recipient"]:::main N_SetBackupRecipientsAEI9999OM01247_Node0 -- Yes --> N_SetBackupRecipientsAEI9999OM01247_Node0_action N_SetBackupRecipientsAEI9999OM01247_Node0_action --> E_SetBackupRecipientsAEI9999OM01247 S_SetBackupRecipientsAEI9999OM01247 --> N_SetBackupRecipientsAEI9999OM01247_Node0 N_SetBackupRecipientsAEI9999OM01247_Node0 -- No --> E_SetBackupRecipientsAEI9999OM01247
File: GCX015E.cbl
GIVEN:
The primary email send operation has failed
WHEN:
The system prepares to resend the email
THEN:
- The system sets aei9999 as the first backup recipient
- Om01247 as the second backup recipient
β Consolidated Acceptance Criteria
- The system attempts backup email delivery → the system calls EMCSEND3 again with the backup recipient 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_CallEMCSEND3forBackupSend(["Start Step"])
E_CallEMCSEND3forBackupSend(["End Step"])
N_CallEMCSEND3forBackupSend_Node0{"The system attempts backup email
delivery"}:::decision N_CallEMCSEND3forBackupSend_Node0_action["The system calls EMCSEND3 again
with the backup recipient
configuration"]:::main N_CallEMCSEND3forBackupSend_Node0 -- Yes --> N_CallEMCSEND3forBackupSend_Node0_action N_CallEMCSEND3forBackupSend_Node0_action --> E_CallEMCSEND3forBackupSend S_CallEMCSEND3forBackupSend --> N_CallEMCSEND3forBackupSend_Node0 N_CallEMCSEND3forBackupSend_Node0 -- No --> E_CallEMCSEND3forBackupSend
delivery"}:::decision N_CallEMCSEND3forBackupSend_Node0_action["The system calls EMCSEND3 again
with the backup recipient
configuration"]:::main N_CallEMCSEND3forBackupSend_Node0 -- Yes --> N_CallEMCSEND3forBackupSend_Node0_action N_CallEMCSEND3forBackupSend_Node0_action --> E_CallEMCSEND3forBackupSend S_CallEMCSEND3forBackupSend --> N_CallEMCSEND3forBackupSend_Node0 N_CallEMCSEND3forBackupSend_Node0 -- No --> E_CallEMCSEND3forBackupSend
File: GCX015E.cbl
GIVEN:
The primary email send has failed and backup recipients have been configured
WHEN:
The system attempts backup email delivery
THEN:
The system calls EMCSEND3 again with the backup recipient configuration
β Consolidated Acceptance Criteria
- The system performs cleanup operations → the system purges the message queue and resets the accept 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_PurgeMessageQueue(["Start Step"])
E_PurgeMessageQueue(["End Step"])
N_PurgeMessageQueue_Node0{"The system performs cleanup
operations"}:::decision N_PurgeMessageQueue_Node0_action["The system purges the message queue
and resets the accept status"]:::main N_PurgeMessageQueue_Node0 -- Yes --> N_PurgeMessageQueue_Node0_action N_PurgeMessageQueue_Node0_action --> E_PurgeMessageQueue S_PurgeMessageQueue --> N_PurgeMessageQueue_Node0 N_PurgeMessageQueue_Node0 -- No --> E_PurgeMessageQueue
operations"}:::decision N_PurgeMessageQueue_Node0_action["The system purges the message queue
and resets the accept status"]:::main N_PurgeMessageQueue_Node0 -- Yes --> N_PurgeMessageQueue_Node0_action N_PurgeMessageQueue_Node0_action --> E_PurgeMessageQueue S_PurgeMessageQueue --> N_PurgeMessageQueue_Node0 N_PurgeMessageQueue_Node0 -- No --> E_PurgeMessageQueue
File: GCX015E.cbl
GIVEN:
Email processing has completed either successfully or with failure
WHEN:
The system performs cleanup operations
THEN:
- The system purges the message queue
- Resets the accept status
β Consolidated Acceptance Criteria
- The system sets the event date → the event date should be populated with the current machine date including century
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEventDatefromMachineDate(["Start Step"])
E_SetEventDatefromMachineDate(["End Step"])
N_SetEventDatefromMachineDate_Node0{"The system sets the event date"}:::decision
N_SetEventDatefromMachineDate_Node0_action["The event date should be populated
with the current machine date
including century"]:::main N_SetEventDatefromMachineDate_Node0 -- Yes --> N_SetEventDatefromMachineDate_Node0_action N_SetEventDatefromMachineDate_Node0_action --> E_SetEventDatefromMachineDate S_SetEventDatefromMachineDate --> N_SetEventDatefromMachineDate_Node0 N_SetEventDatefromMachineDate_Node0 -- No --> E_SetEventDatefromMachineDate
with the current machine date
including century"]:::main N_SetEventDatefromMachineDate_Node0 -- Yes --> N_SetEventDatefromMachineDate_Node0_action N_SetEventDatefromMachineDate_Node0_action --> E_SetEventDatefromMachineDate S_SetEventDatefromMachineDate --> N_SetEventDatefromMachineDate_Node0 N_SetEventDatefromMachineDate_Node0 -- No --> E_SetEventDatefromMachineDate
File: GCX015E.cbl
GIVEN:
A train arrival event is being recorded
WHEN:
The system sets the event date
THEN:
The event date should be populated with the current machine date including century
β Consolidated Acceptance Criteria
- The system sets the event time → the event time should be populated with the first 4 digits of the current machine 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_SetEventTimefromMachineTime(["Start Step"])
E_SetEventTimefromMachineTime(["End Step"])
N_SetEventTimefromMachineTime_Node0{"The system sets the event time"}:::decision
N_SetEventTimefromMachineTime_Node0_action["The event time should be populated
with the first 4 digits of the
current machine time"]:::main N_SetEventTimefromMachineTime_Node0 -- Yes --> N_SetEventTimefromMachineTime_Node0_action N_SetEventTimefromMachineTime_Node0_action --> E_SetEventTimefromMachineTime S_SetEventTimefromMachineTime --> N_SetEventTimefromMachineTime_Node0 N_SetEventTimefromMachineTime_Node0 -- No --> E_SetEventTimefromMachineTime
with the first 4 digits of the
current machine time"]:::main N_SetEventTimefromMachineTime_Node0 -- Yes --> N_SetEventTimefromMachineTime_Node0_action N_SetEventTimefromMachineTime_Node0_action --> E_SetEventTimefromMachineTime S_SetEventTimefromMachineTime --> N_SetEventTimefromMachineTime_Node0 N_SetEventTimefromMachineTime_Node0 -- No --> E_SetEventTimefromMachineTime
File: GCX015E.cbl
GIVEN:
A train arrival event is being recorded
WHEN:
The system sets the event time
THEN:
The event time should be populated with the first 4 digits of the current machine time
β Consolidated Acceptance Criteria
- The system populates the train identifier in the arrival message → the train ID should be set to the US customer train ID 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_SetTrainIDfromUSCustomerTrainID(["Start Step"])
E_SetTrainIDfromUSCustomerTrainID(["End Step"])
N_SetTrainIDfromUSCustomerTrainID_Node0{"The system populates the train
identifier in the arrival message"}:::decision N_SetTrainIDfromUSCustomerTrainID_Node0_action["The train ID should be set to the
US customer train ID from the train
record"]:::main N_SetTrainIDfromUSCustomerTrainID_Node0 -- Yes --> N_SetTrainIDfromUSCustomerTrainID_Node0_action N_SetTrainIDfromUSCustomerTrainID_Node0_action --> E_SetTrainIDfromUSCustomerTrainID S_SetTrainIDfromUSCustomerTrainID --> N_SetTrainIDfromUSCustomerTrainID_Node0 N_SetTrainIDfromUSCustomerTrainID_Node0 -- No --> E_SetTrainIDfromUSCustomerTrainID
identifier in the arrival message"}:::decision N_SetTrainIDfromUSCustomerTrainID_Node0_action["The train ID should be set to the
US customer train ID from the train
record"]:::main N_SetTrainIDfromUSCustomerTrainID_Node0 -- Yes --> N_SetTrainIDfromUSCustomerTrainID_Node0_action N_SetTrainIDfromUSCustomerTrainID_Node0_action --> E_SetTrainIDfromUSCustomerTrainID S_SetTrainIDfromUSCustomerTrainID --> N_SetTrainIDfromUSCustomerTrainID_Node0 N_SetTrainIDfromUSCustomerTrainID_Node0 -- No --> E_SetTrainIDfromUSCustomerTrainID
File: GCX015E.cbl
GIVEN:
A train arrival event is being processed for a specific train
WHEN:
The system populates the train identifier in the arrival message
THEN:
The train ID should be set to the US customer train ID from the train record
β Consolidated Acceptance Criteria
- The system sets the security classification → the security byte should be set to high value to ensure proper security 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_SetSecurityBytetoHighValue(["Start Step"])
E_SetSecurityBytetoHighValue(["End Step"])
N_SetSecurityBytetoHighValue_Node0{"The system sets the security
classification"}:::decision N_SetSecurityBytetoHighValue_Node0_action["The security byte should be set to
high value to ensure proper security
handling"]:::main N_SetSecurityBytetoHighValue_Node0 -- Yes --> N_SetSecurityBytetoHighValue_Node0_action N_SetSecurityBytetoHighValue_Node0_action --> E_SetSecurityBytetoHighValue S_SetSecurityBytetoHighValue --> N_SetSecurityBytetoHighValue_Node0 N_SetSecurityBytetoHighValue_Node0 -- No --> E_SetSecurityBytetoHighValue
classification"}:::decision N_SetSecurityBytetoHighValue_Node0_action["The security byte should be set to
high value to ensure proper security
handling"]:::main N_SetSecurityBytetoHighValue_Node0 -- Yes --> N_SetSecurityBytetoHighValue_Node0_action N_SetSecurityBytetoHighValue_Node0_action --> E_SetSecurityBytetoHighValue S_SetSecurityBytetoHighValue --> N_SetSecurityBytetoHighValue_Node0 N_SetSecurityBytetoHighValue_Node0 -- No --> E_SetSecurityBytetoHighValue
File: GCX015E.cbl
GIVEN:
A train arrival event message is being prepared
WHEN:
The system sets the security classification
THEN:
The security byte should be set to high value to ensure proper security handling
β Consolidated Acceptance Criteria
- The system sets the train type indicator → the train should be marked as US train 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_MarkasUSTrainType(["Start Step"])
E_MarkasUSTrainType(["End Step"])
N_MarkasUSTrainType_Node0{"The system sets the train type
indicator"}:::decision N_MarkasUSTrainType_Node0_action["The train should be marked as US
train type"]:::main N_MarkasUSTrainType_Node0 -- Yes --> N_MarkasUSTrainType_Node0_action N_MarkasUSTrainType_Node0_action --> E_MarkasUSTrainType S_MarkasUSTrainType --> N_MarkasUSTrainType_Node0 N_MarkasUSTrainType_Node0 -- No --> E_MarkasUSTrainType
indicator"}:::decision N_MarkasUSTrainType_Node0_action["The train should be marked as US
train type"]:::main N_MarkasUSTrainType_Node0 -- Yes --> N_MarkasUSTrainType_Node0_action N_MarkasUSTrainType_Node0_action --> E_MarkasUSTrainType S_MarkasUSTrainType --> N_MarkasUSTrainType_Node0 N_MarkasUSTrainType_Node0 -- No --> E_MarkasUSTrainType
File: GCX015E.cbl
GIVEN:
A train arrival event is being processed
WHEN:
The system sets the train type indicator
THEN:
The train should be marked as US train type
β Consolidated Acceptance Criteria
- The system submits the message for processing → the message should be written to the message queue using the GCT1121E 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_WriteTrainArrivalMessagetoQueue(["Start Step"])
E_WriteTrainArrivalMessagetoQueue(["End Step"])
N_WriteTrainArrivalMessagetoQueue_Node0{"The system submits the message for
processing"}:::decision N_WriteTrainArrivalMessagetoQueue_Node0_action["The message should be written to
the message queue using the GCT1121E
message format"]:::main N_WriteTrainArrivalMessagetoQueue_Node0 -- Yes --> N_WriteTrainArrivalMessagetoQueue_Node0_action N_WriteTrainArrivalMessagetoQueue_Node0_action --> E_WriteTrainArrivalMessagetoQueue S_WriteTrainArrivalMessagetoQueue --> N_WriteTrainArrivalMessagetoQueue_Node0 N_WriteTrainArrivalMessagetoQueue_Node0 -- No --> E_WriteTrainArrivalMessagetoQueue
processing"}:::decision N_WriteTrainArrivalMessagetoQueue_Node0_action["The message should be written to
the message queue using the GCT1121E
message format"]:::main N_WriteTrainArrivalMessagetoQueue_Node0 -- Yes --> N_WriteTrainArrivalMessagetoQueue_Node0_action N_WriteTrainArrivalMessagetoQueue_Node0_action --> E_WriteTrainArrivalMessagetoQueue S_WriteTrainArrivalMessagetoQueue --> N_WriteTrainArrivalMessagetoQueue_Node0 N_WriteTrainArrivalMessagetoQueue_Node0 -- No --> E_WriteTrainArrivalMessagetoQueue
File: GCX015E.cbl
GIVEN:
A complete train arrival message has been prepared with all required fields
WHEN:
The system submits the message for processing
THEN:
The message should be written to the message queue using the GCT1121E message format
β Consolidated Acceptance Criteria
- The system needs to retrieve broker contact information for the freight forwarder → the freight forwarder name is extracted from GCUS-N102-NAME and used to build the broker lookup key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFreightForwarderNamefromCargoData(["Start Step"])
E_GetFreightForwarderNamefromCargoData(["End Step"])
N_GetFreightForwarderNamefromCargoData_Node0{"The system needs to retrieve broker
contact information for the freight
forwarder"}:::decision N_GetFreightForwarderNamefromCargoData_Node0_action["The freight forwarder name is
extracted from GCUS-N102-NAME and
used to build the broker lookup key"]:::main N_GetFreightForwarderNamefromCargoData_Node0 -- Yes --> N_GetFreightForwarderNamefromCargoData_Node0_action N_GetFreightForwarderNamefromCargoData_Node0_action --> E_GetFreightForwarderNamefromCargoData S_GetFreightForwarderNamefromCargoData --> N_GetFreightForwarderNamefromCargoData_Node0 N_GetFreightForwarderNamefromCargoData_Node0 -- No --> E_GetFreightForwarderNamefromCargoData
contact information for the freight
forwarder"}:::decision N_GetFreightForwarderNamefromCargoData_Node0_action["The freight forwarder name is
extracted from GCUS-N102-NAME and
used to build the broker lookup key"]:::main N_GetFreightForwarderNamefromCargoData_Node0 -- Yes --> N_GetFreightForwarderNamefromCargoData_Node0_action N_GetFreightForwarderNamefromCargoData_Node0_action --> E_GetFreightForwarderNamefromCargoData S_GetFreightForwarderNamefromCargoData --> N_GetFreightForwarderNamefromCargoData_Node0 N_GetFreightForwarderNamefromCargoData_Node0 -- No --> E_GetFreightForwarderNamefromCargoData
File: GCX015E.cbl
GIVEN:
A cargo shipment record exists with freight forwarder information in GCUS-N102-NAME field
WHEN:
The system needs to retrieve broker contact information for the freight forwarder
THEN:
- The freight forwarder name is extracted from gcus-n102-name
- Used to build the broker lookup key
β Consolidated Acceptance Criteria
- The system builds a broker lookup key for database retrieval → the key is constructed by concatenating 'FW=' prefix with the freight forwarder name and stored in GCWUSIO-GCST2RT-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_BuildBrokerKeywithFWPrefix(["Start Step"])
E_BuildBrokerKeywithFWPrefix(["End Step"])
N_BuildBrokerKeywithFWPrefix_Node0{"The system builds a broker lookup
key for database retrieval"}:::decision N_BuildBrokerKeywithFWPrefix_Node0_action["The key is constructed by
concatenating FW prefix with the
freight forwarder name and stored in
GCWUSIO-GCST2RT-KEY"]:::main N_BuildBrokerKeywithFWPrefix_Node0 -- Yes --> N_BuildBrokerKeywithFWPrefix_Node0_action N_BuildBrokerKeywithFWPrefix_Node0_action --> E_BuildBrokerKeywithFWPrefix S_BuildBrokerKeywithFWPrefix --> N_BuildBrokerKeywithFWPrefix_Node0 N_BuildBrokerKeywithFWPrefix_Node0 -- No --> E_BuildBrokerKeywithFWPrefix
key for database retrieval"}:::decision N_BuildBrokerKeywithFWPrefix_Node0_action["The key is constructed by
concatenating FW prefix with the
freight forwarder name and stored in
GCWUSIO-GCST2RT-KEY"]:::main N_BuildBrokerKeywithFWPrefix_Node0 -- Yes --> N_BuildBrokerKeywithFWPrefix_Node0_action N_BuildBrokerKeywithFWPrefix_Node0_action --> E_BuildBrokerKeywithFWPrefix S_BuildBrokerKeywithFWPrefix --> N_BuildBrokerKeywithFWPrefix_Node0 N_BuildBrokerKeywithFWPrefix_Node0 -- No --> E_BuildBrokerKeywithFWPrefix
File: GCX015E.cbl
GIVEN:
A freight forwarder name is available from the cargo data
WHEN:
The system builds a broker lookup key for database retrieval
THEN:
- The key is constructed by concatenating 'fw=' prefix with the freight forwarder name
- Stored in gcwusio-gcst2rt-key
β Consolidated Acceptance Criteria
- The system queries the GCST2RT broker master table → the broker short name is retrieved and stored in GCT2-BROKER-NAME-SHORT 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_RetrieveBrokerShortNamefromGCST2RT(["Start Step"])
E_RetrieveBrokerShortNamefromGCST2RT(["End Step"])
N_RetrieveBrokerShortNamefromGCST2RT_Node0{"The system queries the GCST2RT
broker master table"}:::decision N_RetrieveBrokerShortNamefromGCST2RT_Node0_action["The broker short name is retrieved
and stored in GCT2-BROKER-NAME-SHORT
field"]:::main N_RetrieveBrokerShortNamefromGCST2RT_Node0 -- Yes --> N_RetrieveBrokerShortNamefromGCST2RT_Node0_action N_RetrieveBrokerShortNamefromGCST2RT_Node0_action --> E_RetrieveBrokerShortNamefromGCST2RT S_RetrieveBrokerShortNamefromGCST2RT --> N_RetrieveBrokerShortNamefromGCST2RT_Node0 N_RetrieveBrokerShortNamefromGCST2RT_Node0 -- No --> E_RetrieveBrokerShortNamefromGCST2RT
broker master table"}:::decision N_RetrieveBrokerShortNamefromGCST2RT_Node0_action["The broker short name is retrieved
and stored in GCT2-BROKER-NAME-SHORT
field"]:::main N_RetrieveBrokerShortNamefromGCST2RT_Node0 -- Yes --> N_RetrieveBrokerShortNamefromGCST2RT_Node0_action N_RetrieveBrokerShortNamefromGCST2RT_Node0_action --> E_RetrieveBrokerShortNamefromGCST2RT S_RetrieveBrokerShortNamefromGCST2RT --> N_RetrieveBrokerShortNamefromGCST2RT_Node0 N_RetrieveBrokerShortNamefromGCST2RT_Node0 -- No --> E_RetrieveBrokerShortNamefromGCST2RT
File: GCX015E.cbl
GIVEN:
A broker lookup key has been constructed with FW= prefix and freight forwarder name
WHEN:
The system queries the GCST2RT broker master table
THEN:
- The broker short name is retrieved
- Stored in gct2-broker-name-short field
β Consolidated Acceptance Criteria
- The database query returns a status code indicating the broker was not found → the broker name segment is initialized to empty values 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_BrokerShortNameFound(["Start Step"])
E_BrokerShortNameFound(["End Step"])
N_BrokerShortNameFound_Node0{"The database query returns a status
code indicating the broker was not
found"}:::decision N_BrokerShortNameFound_Node0_action["The broker name segment is
initialized to empty values and
processing continues"]:::main N_BrokerShortNameFound_Node0 -- Yes --> N_BrokerShortNameFound_Node0_action N_BrokerShortNameFound_Node0_action --> E_BrokerShortNameFound S_BrokerShortNameFound --> N_BrokerShortNameFound_Node0 N_BrokerShortNameFound_Node0 -- No --> E_BrokerShortNameFound
code indicating the broker was not
found"}:::decision N_BrokerShortNameFound_Node0_action["The broker name segment is
initialized to empty values and
processing continues"]:::main N_BrokerShortNameFound_Node0 -- Yes --> N_BrokerShortNameFound_Node0_action N_BrokerShortNameFound_Node0_action --> E_BrokerShortNameFound S_BrokerShortNameFound --> N_BrokerShortNameFound_Node0 N_BrokerShortNameFound_Node0 -- No --> E_BrokerShortNameFound
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A broker lookup has been performed on the GCST2RT table
WHEN:
The database query returns a status code indicating the broker was not found
THEN:
- The broker name segment is initialized to empty values
- Processing continues
β Consolidated Acceptance Criteria
- The system needs to retrieve detailed broker contact information → a lookup key is built by concatenating broker short name with either M1203-LOCATION-ID1 or P401-LOCATION-ID and stored in GCSTBRT-KEY-SEQID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildBrokerInfoKeywithShortNameandLocation(["Start Step"])
E_BuildBrokerInfoKeywithShortNameandLocation(["End Step"])
N_BuildBrokerInfoKeywithShortNameandLocation_Node0{"The system needs to retrieve
detailed broker contact information"}:::decision N_BuildBrokerInfoKeywithShortNameandLocation_Node0_action["A lookup key is built by
concatenating broker short name with
either M1203-LOCATION-ID1 or
P401-LOCATION-ID and stored in
GCSTBRT-KEY-SEQID"]:::main N_BuildBrokerInfoKeywithShortNameandLocation_Node0 -- Yes --> N_BuildBrokerInfoKeywithShortNameandLocation_Node0_action N_BuildBrokerInfoKeywithShortNameandLocation_Node0_action --> E_BuildBrokerInfoKeywithShortNameandLocation S_BuildBrokerInfoKeywithShortNameandLocation --> N_BuildBrokerInfoKeywithShortNameandLocation_Node0 N_BuildBrokerInfoKeywithShortNameandLocation_Node0 -- No --> E_BuildBrokerInfoKeywithShortNameandLocation
detailed broker contact information"}:::decision N_BuildBrokerInfoKeywithShortNameandLocation_Node0_action["A lookup key is built by
concatenating broker short name with
either M1203-LOCATION-ID1 or
P401-LOCATION-ID and stored in
GCSTBRT-KEY-SEQID"]:::main N_BuildBrokerInfoKeywithShortNameandLocation_Node0 -- Yes --> N_BuildBrokerInfoKeywithShortNameandLocation_Node0_action N_BuildBrokerInfoKeywithShortNameandLocation_Node0_action --> E_BuildBrokerInfoKeywithShortNameandLocation S_BuildBrokerInfoKeywithShortNameandLocation --> N_BuildBrokerInfoKeywithShortNameandLocation_Node0 N_BuildBrokerInfoKeywithShortNameandLocation_Node0 -- No --> E_BuildBrokerInfoKeywithShortNameandLocation
File: GCX015E.cbl
GIVEN:
A valid broker short name exists and location information is available from cargo data
WHEN:
The system needs to retrieve detailed broker contact information
THEN:
- A lookup key is built by concatenating broker short name with either m1203-location-id1 or p401-location-id
- Stored in gcstbrt-key-seqid
β Consolidated Acceptance Criteria
- The system queries the BK table with table ID 'BK' → the broker contact details are retrieved and stored in GCSTBRT-BK-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_RetrieveBrokerDetailsfromBKTable(["Start Step"])
E_RetrieveBrokerDetailsfromBKTable(["End Step"])
N_RetrieveBrokerDetailsfromBKTable_Node0{"The system queries the BK table
with table ID BK"}:::decision N_RetrieveBrokerDetailsfromBKTable_Node0_action["The broker contact details are
retrieved and stored in
GCSTBRT-BK-SEGMENT"]:::main N_RetrieveBrokerDetailsfromBKTable_Node0 -- Yes --> N_RetrieveBrokerDetailsfromBKTable_Node0_action N_RetrieveBrokerDetailsfromBKTable_Node0_action --> E_RetrieveBrokerDetailsfromBKTable S_RetrieveBrokerDetailsfromBKTable --> N_RetrieveBrokerDetailsfromBKTable_Node0 N_RetrieveBrokerDetailsfromBKTable_Node0 -- No --> E_RetrieveBrokerDetailsfromBKTable
with table ID BK"}:::decision N_RetrieveBrokerDetailsfromBKTable_Node0_action["The broker contact details are
retrieved and stored in
GCSTBRT-BK-SEGMENT"]:::main N_RetrieveBrokerDetailsfromBKTable_Node0 -- Yes --> N_RetrieveBrokerDetailsfromBKTable_Node0_action N_RetrieveBrokerDetailsfromBKTable_Node0_action --> E_RetrieveBrokerDetailsfromBKTable S_RetrieveBrokerDetailsfromBKTable --> N_RetrieveBrokerDetailsfromBKTable_Node0 N_RetrieveBrokerDetailsfromBKTable_Node0 -- No --> E_RetrieveBrokerDetailsfromBKTable
File: GCX015E.cbl
GIVEN:
A broker detail lookup key has been constructed with short name and location
WHEN:
The system queries the BK table with table ID 'BK'
THEN:
- The broker contact details are retrieved
- Stored in gcstbrt-bk-segment
β Consolidated Acceptance Criteria
- The database query returns a non-zero status code indicating broker details were not found → the broker details segment is initialized to empty values and processing terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerDetailsFound(["Start Step"])
E_BrokerDetailsFound(["End Step"])
N_BrokerDetailsFound_Node0{"The database query returns a
non-zero status code indicating
broker details were not found"}:::decision N_BrokerDetailsFound_Node0_action["The broker details segment is
initialized to empty values and
processing terminates"]:::main N_BrokerDetailsFound_Node0 -- Yes --> N_BrokerDetailsFound_Node0_action N_BrokerDetailsFound_Node0_action --> E_BrokerDetailsFound S_BrokerDetailsFound --> N_BrokerDetailsFound_Node0 N_BrokerDetailsFound_Node0 -- No --> E_BrokerDetailsFound
non-zero status code indicating
broker details were not found"}:::decision N_BrokerDetailsFound_Node0_action["The broker details segment is
initialized to empty values and
processing terminates"]:::main N_BrokerDetailsFound_Node0 -- Yes --> N_BrokerDetailsFound_Node0_action N_BrokerDetailsFound_Node0_action --> E_BrokerDetailsFound S_BrokerDetailsFound --> N_BrokerDetailsFound_Node0 N_BrokerDetailsFound_Node0 -- No --> E_BrokerDetailsFound
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A broker details lookup has been performed on the BK table
WHEN:
The database query returns a non-zero status code indicating broker details were not found
THEN:
- The broker details segment is initialized to empty values
- Processing terminates
β Consolidated Acceptance Criteria
- The database query returns a non-zero status code indicating internet address was not found → the internet address segment is initialized to empty values and processing terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InternetAddressFound(["Start Step"])
E_InternetAddressFound(["End Step"])
N_InternetAddressFound_Node0{"The database query returns a
non-zero status code indicating
internet address was not found"}:::decision N_InternetAddressFound_Node0_action["The internet address segment is
initialized to empty values and
processing terminates"]:::main N_InternetAddressFound_Node0 -- Yes --> N_InternetAddressFound_Node0_action N_InternetAddressFound_Node0_action --> E_InternetAddressFound S_InternetAddressFound --> N_InternetAddressFound_Node0 N_InternetAddressFound_Node0 -- No --> E_InternetAddressFound
non-zero status code indicating
internet address was not found"}:::decision N_InternetAddressFound_Node0_action["The internet address segment is
initialized to empty values and
processing terminates"]:::main N_InternetAddressFound_Node0 -- Yes --> N_InternetAddressFound_Node0_action N_InternetAddressFound_Node0_action --> E_InternetAddressFound S_InternetAddressFound --> N_InternetAddressFound_Node0 N_InternetAddressFound_Node0 -- No --> E_InternetAddressFound
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
An internet address lookup has been performed on the B1 table
WHEN:
The database query returns a non-zero status code indicating internet address was not found
THEN:
- The internet address segment is initialized to empty values
- Processing terminates
β Consolidated Acceptance Criteria
- The system checks the GCSTBRT-BK-USE-INTERNET field → if the value equals 'Y', internet communication is enabled; otherwise, standard communication methods are 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_UseInternetCommunication(["Start Step"])
E_UseInternetCommunication(["End Step"])
N_UseInternetCommunication_Node0{"The system checks the
GCSTBRT-BK-USE-INTERNET field"}:::decision N_UseInternetCommunication_Node0_action["If the value equals Y , internet
communication is enabled otherwise,
standard communication methods are
used"]:::main N_UseInternetCommunication_Node0 -- Yes --> N_UseInternetCommunication_Node0_action N_UseInternetCommunication_Node0_action --> E_UseInternetCommunication S_UseInternetCommunication --> N_UseInternetCommunication_Node0 N_UseInternetCommunication_Node0 -- No --> E_UseInternetCommunication
GCSTBRT-BK-USE-INTERNET field"}:::decision N_UseInternetCommunication_Node0_action["If the value equals Y , internet
communication is enabled otherwise,
standard communication methods are
used"]:::main N_UseInternetCommunication_Node0 -- Yes --> N_UseInternetCommunication_Node0_action N_UseInternetCommunication_Node0_action --> E_UseInternetCommunication S_UseInternetCommunication --> N_UseInternetCommunication_Node0 N_UseInternetCommunication_Node0 -- No --> E_UseInternetCommunication
File: GCX015E.cbl
GIVEN:
Valid broker details exist with internet communication preference setting
WHEN:
The system checks the GCSTBRT-BK-USE-INTERNET field
THEN:
If the value equals 'Y', internet communication is enabled; otherwise, standard communication methods are used
β Consolidated Acceptance Criteria
- The system configures email notification settings → the email text line is populated with 'INTERNET: ' prefix followed by the broker's internet address from GCSTBRT-B1-INTERNET-ADDRESS, and email destination is set to 'EXTMAIL'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailAddressforExternalMail(["Start Step"])
E_SetEmailAddressforExternalMail(["End Step"])
N_SetEmailAddressforExternalMail_Node0{"The system configures email
notification settings"}:::decision N_SetEmailAddressforExternalMail_Node0_action["The email text line is populated
with INTERNET: prefix followed by
the broker s internet address from
GCSTBRT-B1-INTERNET-ADDRESS, and
email destination is set to EXTMAIL"]:::main N_SetEmailAddressforExternalMail_Node0 -- Yes --> N_SetEmailAddressforExternalMail_Node0_action N_SetEmailAddressforExternalMail_Node0_action --> E_SetEmailAddressforExternalMail S_SetEmailAddressforExternalMail --> N_SetEmailAddressforExternalMail_Node0 N_SetEmailAddressforExternalMail_Node0 -- No --> E_SetEmailAddressforExternalMail
notification settings"}:::decision N_SetEmailAddressforExternalMail_Node0_action["The email text line is populated
with INTERNET: prefix followed by
the broker s internet address from
GCSTBRT-B1-INTERNET-ADDRESS, and
email destination is set to EXTMAIL"]:::main N_SetEmailAddressforExternalMail_Node0 -- Yes --> N_SetEmailAddressforExternalMail_Node0_action N_SetEmailAddressforExternalMail_Node0_action --> E_SetEmailAddressforExternalMail S_SetEmailAddressforExternalMail --> N_SetEmailAddressforExternalMail_Node0 N_SetEmailAddressforExternalMail_Node0 -- No --> E_SetEmailAddressforExternalMail
File: GCX015E.cbl
GIVEN:
Broker has internet communication enabled (GCSTBRT-BK-USE-INTERNET = 'Y') and valid internet address exists
WHEN:
The system configures email notification settings
THEN:
The email text line is populated with 'INTERNET: ' prefix followed by the broker's internet address from GCSTBRT-B1-INTERNET-ADDRESS, and email destination is set to 'EXTMAIL'
β Consolidated Acceptance Criteria
- The system finalizes email notification setup → the WS-EMAIL-TO-FREIGHT-FRWDR flag is set to TRUE to indicate freight forwarder email notifications are enabled
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFreightForwarderEmailFlag(["Start Step"])
E_SetFreightForwarderEmailFlag(["End Step"])
N_SetFreightForwarderEmailFlag_Node0{"The system finalizes email
notification setup"}:::decision N_SetFreightForwarderEmailFlag_Node0_action["The WS-EMAIL-TO-FREIGHT-FRWDR flag
is set to TRUE to indicate freight
forwarder email notifications are
enabled"]:::main N_SetFreightForwarderEmailFlag_Node0 -- Yes --> N_SetFreightForwarderEmailFlag_Node0_action N_SetFreightForwarderEmailFlag_Node0_action --> E_SetFreightForwarderEmailFlag S_SetFreightForwarderEmailFlag --> N_SetFreightForwarderEmailFlag_Node0 N_SetFreightForwarderEmailFlag_Node0 -- No --> E_SetFreightForwarderEmailFlag
notification setup"}:::decision N_SetFreightForwarderEmailFlag_Node0_action["The WS-EMAIL-TO-FREIGHT-FRWDR flag
is set to TRUE to indicate freight
forwarder email notifications are
enabled"]:::main N_SetFreightForwarderEmailFlag_Node0 -- Yes --> N_SetFreightForwarderEmailFlag_Node0_action N_SetFreightForwarderEmailFlag_Node0_action --> E_SetFreightForwarderEmailFlag S_SetFreightForwarderEmailFlag --> N_SetFreightForwarderEmailFlag_Node0 N_SetFreightForwarderEmailFlag_Node0 -- No --> E_SetFreightForwarderEmailFlag
File: GCX015E.cbl
GIVEN:
Internet communication has been successfully configured for the broker
WHEN:
The system finalizes email notification setup
THEN:
The WS-EMAIL-TO-FREIGHT-FRWDR flag is set to TRUE to indicate freight forwarder email notifications are enabled
β Consolidated Acceptance Criteria
- The system processes secondary segments with record type '03' for freight forwarder (N101 code) and consignee information → the system identifies freight forwarder when N101 code indicates forwarder role and captures consignee name when N101 code indicates consignee role
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFreightForwarderData(["Start Step"])
E_GetFreightForwarderData(["End Step"])
N_GetFreightForwarderData_Node0{"The system processes secondary
segments with record type 03 for
freight forwarder N101 code and
consignee information"}:::decision N_GetFreightForwarderData_Node0_action["The system identifies freight
forwarder when N101 code indicates
forwarder role and captures
consignee name when N101 code
indicates consignee role"]:::main N_GetFreightForwarderData_Node0 -- Yes --> N_GetFreightForwarderData_Node0_action N_GetFreightForwarderData_Node0_action --> E_GetFreightForwarderData S_GetFreightForwarderData --> N_GetFreightForwarderData_Node0 N_GetFreightForwarderData_Node0 -- No --> E_GetFreightForwarderData
segments with record type 03 for
freight forwarder N101 code and
consignee information"}:::decision N_GetFreightForwarderData_Node0_action["The system identifies freight
forwarder when N101 code indicates
forwarder role and captures
consignee name when N101 code
indicates consignee role"]:::main N_GetFreightForwarderData_Node0 -- Yes --> N_GetFreightForwarderData_Node0_action N_GetFreightForwarderData_Node0_action --> E_GetFreightForwarderData S_GetFreightForwarderData --> N_GetFreightForwarderData_Node0 N_GetFreightForwarderData_Node0 -- No --> E_GetFreightForwarderData
File: GCX015E.cbl
GIVEN:
A cargo record exists with secondary segments containing party information
WHEN:
The system processes secondary segments with record type '03' for freight forwarder (N101 code) and consignee information
THEN:
- The system identifies freight forwarder when n101 code indicates forwarder role
- Captures consignee name when n101 code indicates consignee role
β Consolidated Acceptance Criteria
- The system searches the broker name table using 'FW=' prefix concatenated with the freight forwarder name → the system retrieves the corresponding broker short name if found, otherwise initializes empty broker name 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_GetBrokerShortName(["Start Step"])
E_GetBrokerShortName(["End Step"])
N_GetBrokerShortName_Node0{"The system searches the broker name
table using FW prefix concatenated
with the freight forwarder name"}:::decision N_GetBrokerShortName_Node0_action["The system retrieves the
corresponding broker short name if
found, otherwise initializes empty
broker name segment"]:::main N_GetBrokerShortName_Node0 -- Yes --> N_GetBrokerShortName_Node0_action N_GetBrokerShortName_Node0_action --> E_GetBrokerShortName S_GetBrokerShortName --> N_GetBrokerShortName_Node0 N_GetBrokerShortName_Node0 -- No --> E_GetBrokerShortName
table using FW prefix concatenated
with the freight forwarder name"}:::decision N_GetBrokerShortName_Node0_action["The system retrieves the
corresponding broker short name if
found, otherwise initializes empty
broker name segment"]:::main N_GetBrokerShortName_Node0 -- Yes --> N_GetBrokerShortName_Node0_action N_GetBrokerShortName_Node0_action --> E_GetBrokerShortName S_GetBrokerShortName --> N_GetBrokerShortName_Node0 N_GetBrokerShortName_Node0 -- No --> E_GetBrokerShortName
File: GCX015E.cbl
GIVEN:
A freight forwarder name has been identified from cargo segments
WHEN:
The system searches the broker name table using 'FW=' prefix concatenated with the freight forwarder name
THEN:
The system retrieves the corresponding broker short name if found, otherwise initializes empty broker name segment
β Consolidated Acceptance Criteria
- The system checks the broker's internet usage preference flag → if broker uses internet (flag = 'Y'), system sets email destination to 'EXTMAIL', formats internet address in email text, and marks for freight forwarder email delivery, otherwise uses default contact 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_GetBrokerContactInformation(["Start Step"])
E_GetBrokerContactInformation(["End Step"])
N_GetBrokerContactInformation_Node0{"The system checks the broker s
internet usage preference flag"}:::decision N_GetBrokerContactInformation_Node0_action["If broker uses internet flag Y ,
system sets email destination to
EXTMAIL , formats internet address
in email text, and marks for freight
forwarder email delivery, otherwise
uses default contact method"]:::main N_GetBrokerContactInformation_Node0 -- Yes --> N_GetBrokerContactInformation_Node0_action N_GetBrokerContactInformation_Node0_action --> E_GetBrokerContactInformation S_GetBrokerContactInformation --> N_GetBrokerContactInformation_Node0 N_GetBrokerContactInformation_Node0 -- No --> E_GetBrokerContactInformation
internet usage preference flag"}:::decision N_GetBrokerContactInformation_Node0_action["If broker uses internet flag Y ,
system sets email destination to
EXTMAIL , formats internet address
in email text, and marks for freight
forwarder email delivery, otherwise
uses default contact method"]:::main N_GetBrokerContactInformation_Node0 -- Yes --> N_GetBrokerContactInformation_Node0_action N_GetBrokerContactInformation_Node0_action --> E_GetBrokerContactInformation S_GetBrokerContactInformation --> N_GetBrokerContactInformation_Node0 N_GetBrokerContactInformation_Node0 -- No --> E_GetBrokerContactInformation
File: GCX015E.cbl
GIVEN:
A broker short name exists and broker contact information is available
WHEN:
The system checks the broker's internet usage preference flag
THEN:
If broker uses internet (flag = 'Y'), system sets email destination to 'EXTMAIL', formats internet address in email text, and marks for freight forwarder email delivery, otherwise uses default contact method
β Consolidated Acceptance Criteria
- The system formats equipment information for email content → the system includes the car identification number in the formatted equipment line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentInformationLine(["Start Step"])
E_FormatEquipmentInformationLine(["End Step"])
N_FormatEquipmentInformationLine_Node0{"The system formats equipment
information for email content"}:::decision N_FormatEquipmentInformationLine_Node0_action["The system includes the car
identification number in the
formatted equipment line"]:::main N_FormatEquipmentInformationLine_Node0 -- Yes --> N_FormatEquipmentInformationLine_Node0_action N_FormatEquipmentInformationLine_Node0_action --> E_FormatEquipmentInformationLine S_FormatEquipmentInformationLine --> N_FormatEquipmentInformationLine_Node0 N_FormatEquipmentInformationLine_Node0 -- No --> E_FormatEquipmentInformationLine
information for email content"}:::decision N_FormatEquipmentInformationLine_Node0_action["The system includes the car
identification number in the
formatted equipment line"]:::main N_FormatEquipmentInformationLine_Node0 -- Yes --> N_FormatEquipmentInformationLine_Node0_action N_FormatEquipmentInformationLine_Node0_action --> E_FormatEquipmentInformationLine S_FormatEquipmentInformationLine --> N_FormatEquipmentInformationLine_Node0 N_FormatEquipmentInformationLine_Node0 -- No --> E_FormatEquipmentInformationLine
File: GCX015E.cbl
GIVEN:
Cargo equipment information is available from the cargo record
WHEN:
The system formats equipment information for email content
THEN:
The system includes the car identification number in the formatted equipment line
β Consolidated Acceptance Criteria
- The system formats waybill information for email content → the system concatenates road index, station index, and waybill index into a formatted waybill line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatWaybillInformationLine(["Start Step"])
E_FormatWaybillInformationLine(["End Step"])
N_FormatWaybillInformationLine_Node0{"The system formats waybill
information for email content"}:::decision N_FormatWaybillInformationLine_Node0_action["The system concatenates road index,
station index, and waybill index
into a formatted waybill line"]:::main N_FormatWaybillInformationLine_Node0 -- Yes --> N_FormatWaybillInformationLine_Node0_action N_FormatWaybillInformationLine_Node0_action --> E_FormatWaybillInformationLine S_FormatWaybillInformationLine --> N_FormatWaybillInformationLine_Node0 N_FormatWaybillInformationLine_Node0 -- No --> E_FormatWaybillInformationLine
information for email content"}:::decision N_FormatWaybillInformationLine_Node0_action["The system concatenates road index,
station index, and waybill index
into a formatted waybill line"]:::main N_FormatWaybillInformationLine_Node0 -- Yes --> N_FormatWaybillInformationLine_Node0_action N_FormatWaybillInformationLine_Node0_action --> E_FormatWaybillInformationLine S_FormatWaybillInformationLine --> N_FormatWaybillInformationLine_Node0 N_FormatWaybillInformationLine_Node0 -- No --> E_FormatWaybillInformationLine
File: GCX015E.cbl
GIVEN:
Waybill information exists in the cargo record
WHEN:
The system formats waybill information for email content
THEN:
The system concatenates road index, station index, and waybill index into a formatted waybill line
β Consolidated Acceptance Criteria
- The system formats load/empty indicator for email content → the system includes the load/empty code in the formatted indicator line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatLoadEmptyIndicatorLine(["Start Step"])
E_FormatLoadEmptyIndicatorLine(["End Step"])
N_FormatLoadEmptyIndicatorLine_Node0{"The system formats loadempty
indicator for email content"}:::decision N_FormatLoadEmptyIndicatorLine_Node0_action["The system includes the loadempty
code in the formatted indicator line"]:::main N_FormatLoadEmptyIndicatorLine_Node0 -- Yes --> N_FormatLoadEmptyIndicatorLine_Node0_action N_FormatLoadEmptyIndicatorLine_Node0_action --> E_FormatLoadEmptyIndicatorLine S_FormatLoadEmptyIndicatorLine --> N_FormatLoadEmptyIndicatorLine_Node0 N_FormatLoadEmptyIndicatorLine_Node0 -- No --> E_FormatLoadEmptyIndicatorLine
indicator for email content"}:::decision N_FormatLoadEmptyIndicatorLine_Node0_action["The system includes the loadempty
code in the formatted indicator line"]:::main N_FormatLoadEmptyIndicatorLine_Node0 -- Yes --> N_FormatLoadEmptyIndicatorLine_Node0_action N_FormatLoadEmptyIndicatorLine_Node0_action --> E_FormatLoadEmptyIndicatorLine S_FormatLoadEmptyIndicatorLine --> N_FormatLoadEmptyIndicatorLine_Node0 N_FormatLoadEmptyIndicatorLine_Node0 -- No --> E_FormatLoadEmptyIndicatorLine
File: GCX015E.cbl
GIVEN:
Equipment load/empty status is available in the cargo record
WHEN:
The system formats load/empty indicator for email content
THEN:
The system includes the load/empty code in the formatted indicator line
β Consolidated Acceptance Criteria
- The system formats content description for email content → the system includes the long description of the cargo content in the formatted content line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatContentDescriptionLine(["Start Step"])
E_FormatContentDescriptionLine(["End Step"])
N_FormatContentDescriptionLine_Node0{"The system formats content
description for email content"}:::decision N_FormatContentDescriptionLine_Node0_action["The system includes the long
description of the cargo content in
the formatted content line"]:::main N_FormatContentDescriptionLine_Node0 -- Yes --> N_FormatContentDescriptionLine_Node0_action N_FormatContentDescriptionLine_Node0_action --> E_FormatContentDescriptionLine S_FormatContentDescriptionLine --> N_FormatContentDescriptionLine_Node0 N_FormatContentDescriptionLine_Node0 -- No --> E_FormatContentDescriptionLine
description for email content"}:::decision N_FormatContentDescriptionLine_Node0_action["The system includes the long
description of the cargo content in
the formatted content line"]:::main N_FormatContentDescriptionLine_Node0 -- Yes --> N_FormatContentDescriptionLine_Node0_action N_FormatContentDescriptionLine_Node0_action --> E_FormatContentDescriptionLine S_FormatContentDescriptionLine --> N_FormatContentDescriptionLine_Node0 N_FormatContentDescriptionLine_Node0 -- No --> E_FormatContentDescriptionLine
File: GCX015E.cbl
GIVEN:
Cargo content description is available in the system
WHEN:
The system formats content description for email content
THEN:
The system includes the long description of the cargo content in the formatted content line
β Consolidated Acceptance Criteria
- The system formats date and time for email display → the system combines machine century with K3 date to create full year, extracts month and day from K3 date, and extracts hour and minute from K3 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_FormatDateandTimeInformation(["Start Step"])
E_FormatDateandTimeInformation(["End Step"])
N_FormatDateandTimeInformation_Node0{"The system formats date and time
for email display"}:::decision N_FormatDateandTimeInformation_Node0_action["The system combines machine century
with K3 date to create full year,
extracts month and day from K3 date,
and extracts hour and minute from K3
time"]:::main N_FormatDateandTimeInformation_Node0 -- Yes --> N_FormatDateandTimeInformation_Node0_action N_FormatDateandTimeInformation_Node0_action --> E_FormatDateandTimeInformation S_FormatDateandTimeInformation --> N_FormatDateandTimeInformation_Node0 N_FormatDateandTimeInformation_Node0 -- No --> E_FormatDateandTimeInformation
for email display"}:::decision N_FormatDateandTimeInformation_Node0_action["The system combines machine century
with K3 date to create full year,
extracts month and day from K3 date,
and extracts hour and minute from K3
time"]:::main N_FormatDateandTimeInformation_Node0 -- Yes --> N_FormatDateandTimeInformation_Node0_action N_FormatDateandTimeInformation_Node0_action --> E_FormatDateandTimeInformation S_FormatDateandTimeInformation --> N_FormatDateandTimeInformation_Node0 N_FormatDateandTimeInformation_Node0 -- No --> E_FormatDateandTimeInformation
File: GCX015E.cbl
GIVEN:
K3 segment contains date and time information
WHEN:
- The system formats date
- Time for email display
THEN:
- The system combines machine century with k3 date to create full year, extracts month
- Day from k3 date, and extracts hour
- Minute from k3 time
β Consolidated Acceptance Criteria
- The system formats origin station information for email content → the system concatenates origin station name with province/state code separated by comma and space
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatOriginStationInformation(["Start Step"])
E_FormatOriginStationInformation(["End Step"])
N_FormatOriginStationInformation_Node0{"The system formats origin station
information for email content"}:::decision N_FormatOriginStationInformation_Node0_action["The system concatenates origin
station name with provincestate code
separated by comma and space"]:::main N_FormatOriginStationInformation_Node0 -- Yes --> N_FormatOriginStationInformation_Node0_action N_FormatOriginStationInformation_Node0_action --> E_FormatOriginStationInformation S_FormatOriginStationInformation --> N_FormatOriginStationInformation_Node0 N_FormatOriginStationInformation_Node0 -- No --> E_FormatOriginStationInformation
information for email content"}:::decision N_FormatOriginStationInformation_Node0_action["The system concatenates origin
station name with provincestate code
separated by comma and space"]:::main N_FormatOriginStationInformation_Node0 -- Yes --> N_FormatOriginStationInformation_Node0_action N_FormatOriginStationInformation_Node0_action --> E_FormatOriginStationInformation S_FormatOriginStationInformation --> N_FormatOriginStationInformation_Node0 N_FormatOriginStationInformation_Node0 -- No --> E_FormatOriginStationInformation
File: GCX015E.cbl
GIVEN:
Origin station information is available from shipment data
WHEN:
The system formats origin station information for email content
THEN:
- The system concatenates origin station name with province/state code separated by comma
- Space
β Consolidated Acceptance Criteria
- The system formats destination station information for email content → the system concatenates destination station name with province/state code separated by comma and space
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDestinationStationInformation(["Start Step"])
E_FormatDestinationStationInformation(["End Step"])
N_FormatDestinationStationInformation_Node0{"The system formats destination
station information for email
content"}:::decision N_FormatDestinationStationInformation_Node0_action["The system concatenates destination
station name with provincestate code
separated by comma and space"]:::main N_FormatDestinationStationInformation_Node0 -- Yes --> N_FormatDestinationStationInformation_Node0_action N_FormatDestinationStationInformation_Node0_action --> E_FormatDestinationStationInformation S_FormatDestinationStationInformation --> N_FormatDestinationStationInformation_Node0 N_FormatDestinationStationInformation_Node0 -- No --> E_FormatDestinationStationInformation
station information for email
content"}:::decision N_FormatDestinationStationInformation_Node0_action["The system concatenates destination
station name with provincestate code
separated by comma and space"]:::main N_FormatDestinationStationInformation_Node0 -- Yes --> N_FormatDestinationStationInformation_Node0_action N_FormatDestinationStationInformation_Node0_action --> E_FormatDestinationStationInformation S_FormatDestinationStationInformation --> N_FormatDestinationStationInformation_Node0 N_FormatDestinationStationInformation_Node0 -- No --> E_FormatDestinationStationInformation
File: GCX015E.cbl
GIVEN:
Destination station information is available from shipment data
WHEN:
The system formats destination station information for email content
THEN:
- The system concatenates destination station name with province/state code separated by comma
- Space
β Consolidated Acceptance Criteria
- The system formats the CBP warning message for email content → the system includes the free-form message text from the K1 segment in the formatted warning message line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCBPWarningMessage(["Start Step"])
E_FormatCBPWarningMessage(["End Step"])
N_FormatCBPWarningMessage_Node0{"The system formats the CBP warning
message for email content"}:::decision N_FormatCBPWarningMessage_Node0_action["The system includes the free-form
message text from the K1 segment in
the formatted warning message line"]:::main N_FormatCBPWarningMessage_Node0 -- Yes --> N_FormatCBPWarningMessage_Node0_action N_FormatCBPWarningMessage_Node0_action --> E_FormatCBPWarningMessage S_FormatCBPWarningMessage --> N_FormatCBPWarningMessage_Node0 N_FormatCBPWarningMessage_Node0 -- No --> E_FormatCBPWarningMessage
message for email content"}:::decision N_FormatCBPWarningMessage_Node0_action["The system includes the free-form
message text from the K1 segment in
the formatted warning message line"]:::main N_FormatCBPWarningMessage_Node0 -- Yes --> N_FormatCBPWarningMessage_Node0_action N_FormatCBPWarningMessage_Node0_action --> E_FormatCBPWarningMessage S_FormatCBPWarningMessage --> N_FormatCBPWarningMessage_Node0 N_FormatCBPWarningMessage_Node0 -- No --> E_FormatCBPWarningMessage
File: GCX015E.cbl
GIVEN:
A K1 segment contains a CBP warning message
WHEN:
The system formats the CBP warning message for email content
THEN:
The system includes the free-form message text from the K1 segment in the formatted warning message line
β Consolidated Acceptance Criteria
- A connection request is made to the message queue manager → the system should establish a successful connection to enable 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_CallMQCONNCtoConnecttoMessageQueueManager(["Start Step"])
E_CallMQCONNCtoConnecttoMessageQueueManager(["End Step"])
N_CallMQCONNCtoConnecttoMessageQueueManager_Node0{"A connection request is made to the
message queue manager"}:::decision N_CallMQCONNCtoConnecttoMessageQueueManager_Node0_action["The system should establish a
successful connection to enable
message processing"]:::main N_CallMQCONNCtoConnecttoMessageQueueManager_Node0 -- Yes --> N_CallMQCONNCtoConnecttoMessageQueueManager_Node0_action N_CallMQCONNCtoConnecttoMessageQueueManager_Node0_action --> E_CallMQCONNCtoConnecttoMessageQueueManager S_CallMQCONNCtoConnecttoMessageQueueManager --> N_CallMQCONNCtoConnecttoMessageQueueManager_Node0 N_CallMQCONNCtoConnecttoMessageQueueManager_Node0 -- No --> E_CallMQCONNCtoConnecttoMessageQueueManager
message queue manager"}:::decision N_CallMQCONNCtoConnecttoMessageQueueManager_Node0_action["The system should establish a
successful connection to enable
message processing"]:::main N_CallMQCONNCtoConnecttoMessageQueueManager_Node0 -- Yes --> N_CallMQCONNCtoConnecttoMessageQueueManager_Node0_action N_CallMQCONNCtoConnecttoMessageQueueManager_Node0_action --> E_CallMQCONNCtoConnecttoMessageQueueManager S_CallMQCONNCtoConnecttoMessageQueueManager --> N_CallMQCONNCtoConnecttoMessageQueueManager_Node0 N_CallMQCONNCtoConnecttoMessageQueueManager_Node0 -- No --> E_CallMQCONNCtoConnecttoMessageQueueManager
File: GCX015E.cbl
GIVEN:
The system needs to process customs messages from the message queue
WHEN:
A connection request is made to the message queue manager
THEN:
The system should establish a successful connection to enable message processing
β Consolidated Acceptance Criteria
- The connection completion code is evaluated → the system should determine if the 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{"The connection completion code is
evaluated"}:::decision N_ConnectionSuccessful_Node0_action["The system should determine if the
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
evaluated"}:::decision N_ConnectionSuccessful_Node0_action["The system should determine if the
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: GCX015E.cbl
GIVEN:
A connection attempt has been made to the message queue manager
WHEN:
The connection completion code is evaluated
THEN:
The system should determine if the connection was successful or failed
β Consolidated Acceptance Criteria
- The connection completion code indicates failure → the system should capture the specific reason code for the connection failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetErrorReasonCode(["Start Step"])
E_GetErrorReasonCode(["End Step"])
N_GetErrorReasonCode_Node0{"The connection completion code
indicates failure"}:::decision N_GetErrorReasonCode_Node0_action["The system should capture the
specific reason code for the
connection failure"]:::main N_GetErrorReasonCode_Node0 -- Yes --> N_GetErrorReasonCode_Node0_action N_GetErrorReasonCode_Node0_action --> E_GetErrorReasonCode S_GetErrorReasonCode --> N_GetErrorReasonCode_Node0 N_GetErrorReasonCode_Node0 -- No --> E_GetErrorReasonCode
indicates failure"}:::decision N_GetErrorReasonCode_Node0_action["The system should capture the
specific reason code for the
connection failure"]:::main N_GetErrorReasonCode_Node0 -- Yes --> N_GetErrorReasonCode_Node0_action N_GetErrorReasonCode_Node0_action --> E_GetErrorReasonCode S_GetErrorReasonCode --> N_GetErrorReasonCode_Node0 N_GetErrorReasonCode_Node0 -- No --> E_GetErrorReasonCode
File: GCX015E.cbl
GIVEN:
The message queue connection attempt has failed
WHEN:
The connection completion code indicates failure
THEN:
The system should capture the specific reason code for the connection failure
β Consolidated Acceptance Criteria
- An error message needs to be formatted → the system should create a formatted error message that includes the reason code and descriptive 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_FormatErrorMessagewithReasonCode(["Start Step"])
E_FormatErrorMessagewithReasonCode(["End Step"])
N_FormatErrorMessagewithReasonCode_Node0{"An error message needs to be
formatted"}:::decision N_FormatErrorMessagewithReasonCode_Node0_action["The system should create a
formatted error message that
includes the reason code and
descriptive text"]:::exclusion N_FormatErrorMessagewithReasonCode_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithReasonCode_Node0_action N_FormatErrorMessagewithReasonCode_Node0_action --> E_FormatErrorMessagewithReasonCode S_FormatErrorMessagewithReasonCode --> N_FormatErrorMessagewithReasonCode_Node0 N_FormatErrorMessagewithReasonCode_Node0 -- No --> E_FormatErrorMessagewithReasonCode
formatted"}:::decision N_FormatErrorMessagewithReasonCode_Node0_action["The system should create a
formatted error message that
includes the reason code and
descriptive text"]:::exclusion N_FormatErrorMessagewithReasonCode_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithReasonCode_Node0_action N_FormatErrorMessagewithReasonCode_Node0_action --> E_FormatErrorMessagewithReasonCode S_FormatErrorMessagewithReasonCode --> N_FormatErrorMessagewithReasonCode_Node0 N_FormatErrorMessagewithReasonCode_Node0 -- No --> E_FormatErrorMessagewithReasonCode
File: GCX015E.cbl
GIVEN:
A message queue connection failure has occurred with a specific reason code
WHEN:
An error message needs to be formatted
THEN:
- The system should create a formatted error message that includes the reason code
- Descriptive text
β Consolidated Acceptance Criteria
- Error information is being prepared for logging → the system should set the transaction set identifier to '355'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionSetto355(["Start Step"])
E_SetTransactionSetto355(["End Step"])
N_SetTransactionSetto355_Node0{"Error information is being prepared
for logging"}:::decision N_SetTransactionSetto355_Node0_action["The system should set the
transaction set identifier to 355"]:::exclusion N_SetTransactionSetto355_Node0 -- Yes -->|Alternative| N_SetTransactionSetto355_Node0_action N_SetTransactionSetto355_Node0_action --> E_SetTransactionSetto355 S_SetTransactionSetto355 --> N_SetTransactionSetto355_Node0 N_SetTransactionSetto355_Node0 -- No --> E_SetTransactionSetto355
for logging"}:::decision N_SetTransactionSetto355_Node0_action["The system should set the
transaction set identifier to 355"]:::exclusion N_SetTransactionSetto355_Node0 -- Yes -->|Alternative| N_SetTransactionSetto355_Node0_action N_SetTransactionSetto355_Node0_action --> E_SetTransactionSetto355 S_SetTransactionSetto355 --> N_SetTransactionSetto355_Node0 N_SetTransactionSetto355_Node0 -- No --> E_SetTransactionSetto355
File: GCX015E.cbl
GIVEN:
A message queue connection error has occurred
WHEN:
Error information is being prepared for logging
THEN:
The system should set the transaction set identifier to '355'
β Consolidated Acceptance Criteria
- Error description is being set → the system should set the program error text to 'MQCONN 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_SetErrorTexttoMQCONNFAILED(["Start Step"])
E_SetErrorTexttoMQCONNFAILED(["End Step"])
N_SetErrorTexttoMQCONNFAILED_Node0{"Error description is being set"}:::decision
N_SetErrorTexttoMQCONNFAILED_Node0_action["The system should set the program
error text to MQCONN FAILED"]:::exclusion N_SetErrorTexttoMQCONNFAILED_Node0 -- Yes -->|Alternative| N_SetErrorTexttoMQCONNFAILED_Node0_action N_SetErrorTexttoMQCONNFAILED_Node0_action --> E_SetErrorTexttoMQCONNFAILED S_SetErrorTexttoMQCONNFAILED --> N_SetErrorTexttoMQCONNFAILED_Node0 N_SetErrorTexttoMQCONNFAILED_Node0 -- No --> E_SetErrorTexttoMQCONNFAILED
error text to MQCONN FAILED"]:::exclusion N_SetErrorTexttoMQCONNFAILED_Node0 -- Yes -->|Alternative| N_SetErrorTexttoMQCONNFAILED_Node0_action N_SetErrorTexttoMQCONNFAILED_Node0_action --> E_SetErrorTexttoMQCONNFAILED S_SetErrorTexttoMQCONNFAILED --> N_SetErrorTexttoMQCONNFAILED_Node0 N_SetErrorTexttoMQCONNFAILED_Node0 -- No --> E_SetErrorTexttoMQCONNFAILED
File: GCX015E.cbl
GIVEN:
A message queue connection error has occurred
WHEN:
Error description is being set
THEN:
The system should set the program error text to 'MQCONN FAILED'
β Consolidated Acceptance Criteria
- The system determines that processing cannot continue → the system should abort processing and report the connection error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AbortProcessingwithErrorMessage(["Start Step"])
E_AbortProcessingwithErrorMessage(["End Step"])
N_AbortProcessingwithErrorMessage_Node0{"The system determines that
processing cannot continue"}:::decision N_AbortProcessingwithErrorMessage_Node0_action["The system should abort processing
and report the connection error"]:::exclusion N_AbortProcessingwithErrorMessage_Node0 -- Yes -->|Alternative| N_AbortProcessingwithErrorMessage_Node0_action N_AbortProcessingwithErrorMessage_Node0_action --> E_AbortProcessingwithErrorMessage S_AbortProcessingwithErrorMessage --> N_AbortProcessingwithErrorMessage_Node0 N_AbortProcessingwithErrorMessage_Node0 -- No --> E_AbortProcessingwithErrorMessage
processing cannot continue"}:::decision N_AbortProcessingwithErrorMessage_Node0_action["The system should abort processing
and report the connection error"]:::exclusion N_AbortProcessingwithErrorMessage_Node0 -- Yes -->|Alternative| N_AbortProcessingwithErrorMessage_Node0_action N_AbortProcessingwithErrorMessage_Node0_action --> E_AbortProcessingwithErrorMessage S_AbortProcessingwithErrorMessage --> N_AbortProcessingwithErrorMessage_Node0 N_AbortProcessingwithErrorMessage_Node0 -- No --> E_AbortProcessingwithErrorMessage
File: GCX015E.cbl
GIVEN:
Message queue connection has failed and error information has been prepared
WHEN:
The system determines that processing cannot continue
THEN:
- The system should abort processing
- Report the connection error
β Consolidated Acceptance Criteria
- The queue configuration process begins → the queue object type should be set to standard queue type for message 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_SetQueueObjectType(["Start Step"])
E_SetQueueObjectType(["End Step"])
N_SetQueueObjectType_Node0{"The queue configuration process
begins"}:::decision N_SetQueueObjectType_Node0_action["The queue object type should be set
to standard queue type for message
retrieval"]:::main N_SetQueueObjectType_Node0 -- Yes --> N_SetQueueObjectType_Node0_action N_SetQueueObjectType_Node0_action --> E_SetQueueObjectType S_SetQueueObjectType --> N_SetQueueObjectType_Node0 N_SetQueueObjectType_Node0 -- No --> E_SetQueueObjectType
begins"}:::decision N_SetQueueObjectType_Node0_action["The queue object type should be set
to standard queue type for message
retrieval"]:::main N_SetQueueObjectType_Node0 -- Yes --> N_SetQueueObjectType_Node0_action N_SetQueueObjectType_Node0_action --> E_SetQueueObjectType S_SetQueueObjectType --> N_SetQueueObjectType_Node0 N_SetQueueObjectType_Node0 -- No --> E_SetQueueObjectType
File: GCX015E.cbl
GIVEN:
The system needs to access customs transaction messages from a message queue
WHEN:
The queue configuration process begins
THEN:
The queue object type should be set to standard queue type for message retrieval
β Consolidated Acceptance Criteria
- The queue opening process requires queue identification → the queue name should be set from the MQTMC-QNAME configuration 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_SetQueueNamefromMQTMCQNAME(["Start Step"])
E_SetQueueNamefromMQTMCQNAME(["End Step"])
N_SetQueueNamefromMQTMCQNAME_Node0{"The queue opening process requires
queue identification"}:::decision N_SetQueueNamefromMQTMCQNAME_Node0_action["The queue name should be set from
the MQTMC-QNAME configuration value"]:::main N_SetQueueNamefromMQTMCQNAME_Node0 -- Yes --> N_SetQueueNamefromMQTMCQNAME_Node0_action N_SetQueueNamefromMQTMCQNAME_Node0_action --> E_SetQueueNamefromMQTMCQNAME S_SetQueueNamefromMQTMCQNAME --> N_SetQueueNamefromMQTMCQNAME_Node0 N_SetQueueNamefromMQTMCQNAME_Node0 -- No --> E_SetQueueNamefromMQTMCQNAME
queue identification"}:::decision N_SetQueueNamefromMQTMCQNAME_Node0_action["The queue name should be set from
the MQTMC-QNAME configuration value"]:::main N_SetQueueNamefromMQTMCQNAME_Node0 -- Yes --> N_SetQueueNamefromMQTMCQNAME_Node0_action N_SetQueueNamefromMQTMCQNAME_Node0_action --> E_SetQueueNamefromMQTMCQNAME S_SetQueueNamefromMQTMCQNAME --> N_SetQueueNamefromMQTMCQNAME_Node0 N_SetQueueNamefromMQTMCQNAME_Node0 -- No --> E_SetQueueNamefromMQTMCQNAME
File: GCX015E.cbl
GIVEN:
The system has a configured queue name for customs messages in MQTMC-QNAME
WHEN:
The queue opening process requires queue identification
THEN:
The queue name should be set from the MQTMC-QNAME configuration value
β Consolidated Acceptance Criteria
- Queue access options are being configured → the queue options should be set to input-as-queue-defined to enable message reading
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInputOptionsforQueue(["Start Step"])
E_SetInputOptionsforQueue(["End Step"])
N_SetInputOptionsforQueue_Node0{"Queue access options are being
configured"}:::decision N_SetInputOptionsforQueue_Node0_action["The queue options should be set to
input-as-queue-defined to enable
message reading"]:::main N_SetInputOptionsforQueue_Node0 -- Yes --> N_SetInputOptionsforQueue_Node0_action N_SetInputOptionsforQueue_Node0_action --> E_SetInputOptionsforQueue S_SetInputOptionsforQueue --> N_SetInputOptionsforQueue_Node0 N_SetInputOptionsforQueue_Node0 -- No --> E_SetInputOptionsforQueue
configured"}:::decision N_SetInputOptionsforQueue_Node0_action["The queue options should be set to
input-as-queue-defined to enable
message reading"]:::main N_SetInputOptionsforQueue_Node0 -- Yes --> N_SetInputOptionsforQueue_Node0_action N_SetInputOptionsforQueue_Node0_action --> E_SetInputOptionsforQueue S_SetInputOptionsforQueue --> N_SetInputOptionsforQueue_Node0 N_SetInputOptionsforQueue_Node0 -- No --> E_SetInputOptionsforQueue
File: GCX015E.cbl
GIVEN:
The system needs to read customs transaction messages from the queue
WHEN:
Queue access options are being configured
THEN:
The queue options should be set to input-as-queue-defined to enable message reading
β Consolidated Acceptance Criteria
- The system attempts to open the message queue connection → the MQOPEN service should be invoked with the connection handle, queue descriptor, options, and response 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_CallMQOPENtoOpenQueue(["Start Step"])
E_CallMQOPENtoOpenQueue(["End Step"])
N_CallMQOPENtoOpenQueue_Node0{"The system attempts to open the
message queue connection"}:::decision N_CallMQOPENtoOpenQueue_Node0_action["The MQOPEN service should be
invoked with the connection handle,
queue descriptor, options, and
response parameters"]:::main N_CallMQOPENtoOpenQueue_Node0 -- Yes --> N_CallMQOPENtoOpenQueue_Node0_action N_CallMQOPENtoOpenQueue_Node0_action --> E_CallMQOPENtoOpenQueue S_CallMQOPENtoOpenQueue --> N_CallMQOPENtoOpenQueue_Node0 N_CallMQOPENtoOpenQueue_Node0 -- No --> E_CallMQOPENtoOpenQueue
message queue connection"}:::decision N_CallMQOPENtoOpenQueue_Node0_action["The MQOPEN service should be
invoked with the connection handle,
queue descriptor, options, and
response parameters"]:::main N_CallMQOPENtoOpenQueue_Node0 -- Yes --> N_CallMQOPENtoOpenQueue_Node0_action N_CallMQOPENtoOpenQueue_Node0_action --> E_CallMQOPENtoOpenQueue S_CallMQOPENtoOpenQueue --> N_CallMQOPENtoOpenQueue_Node0 N_CallMQOPENtoOpenQueue_Node0 -- No --> E_CallMQOPENtoOpenQueue
File: GCX015E.cbl
GIVEN:
The queue type, name, and access options are configured
WHEN:
The system attempts to open the message queue connection
THEN:
The MQOPEN service should be invoked with the connection handle, queue descriptor, options, and response parameters
β Consolidated Acceptance Criteria
- The queue open operation fails with reason code 2085 indicating queue not found → the system should return to main processing without generating an error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueNotFoundError(["Start Step"])
E_QueueNotFoundError(["End Step"])
N_QueueNotFoundError_Node0{"The queue open operation fails with
reason code 2085 indicating queue
not found"}:::decision N_QueueNotFoundError_Node0_action["The system should return to main
processing without generating an
error"]:::main N_QueueNotFoundError_Node0 -- Yes --> N_QueueNotFoundError_Node0_action N_QueueNotFoundError_Node0_action --> E_QueueNotFoundError S_QueueNotFoundError --> N_QueueNotFoundError_Node0 N_QueueNotFoundError_Node0 -- No --> E_QueueNotFoundError
reason code 2085 indicating queue
not found"}:::decision N_QueueNotFoundError_Node0_action["The system should return to main
processing without generating an
error"]:::main N_QueueNotFoundError_Node0 -- Yes --> N_QueueNotFoundError_Node0_action N_QueueNotFoundError_Node0_action --> E_QueueNotFoundError S_QueueNotFoundError --> N_QueueNotFoundError_Node0 N_QueueNotFoundError_Node0 -- No --> E_QueueNotFoundError
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The system attempts to open a customs message queue
WHEN:
The queue open operation fails with reason code 2085 indicating queue not found
THEN:
The system should return to main processing without generating an error
β Consolidated Acceptance Criteria
- The queue open operation completes → if the completion code equals MQCC-OK, the queue is successfully opened, otherwise it has 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{"The queue open operation completes"}:::decision
N_QueueOpenSuccessful_Node0_action["If the completion code equals
MQCC-OK, the queue is successfully
opened, otherwise it has failed"]:::main N_QueueOpenSuccessful_Node0 -- Yes --> N_QueueOpenSuccessful_Node0_action N_QueueOpenSuccessful_Node0_action --> E_QueueOpenSuccessful S_QueueOpenSuccessful --> N_QueueOpenSuccessful_Node0 N_QueueOpenSuccessful_Node0 -- No --> E_QueueOpenSuccessful
MQCC-OK, the queue is successfully
opened, otherwise it has failed"]:::main N_QueueOpenSuccessful_Node0 -- Yes --> N_QueueOpenSuccessful_Node0_action N_QueueOpenSuccessful_Node0_action --> E_QueueOpenSuccessful S_QueueOpenSuccessful --> N_QueueOpenSuccessful_Node0 N_QueueOpenSuccessful_Node0 -- No --> E_QueueOpenSuccessful
File: GCX015E.cbl
GIVEN:
The system has attempted to open the customs message queue
WHEN:
The queue open operation completes
THEN:
If the completion code equals MQCC-OK, the queue is successfully opened, otherwise it has failed
β Consolidated Acceptance Criteria
- Error information needs to be generated → the system should call GCCMQERR service to convert the reason code to descriptive error text and format it with the reason code
- The completion code indicates an error other than no messages available → the system generates an MQ error message with reason code and description, sets transaction code to 355, and prepares for abend
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMQErrorMessage(["Start Step"])
E_GenerateMQErrorMessage(["End Step"])
N_GenerateMQErrorMessage_Node0{"Error information needs to be
generated"}:::decision N_GenerateMQErrorMessage_Node0_action["The system should call GCCMQERR
service to convert the reason code
to descriptive error text and format
it with the reason code"]:::exclusion N_GenerateMQErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateMQErrorMessage_Node0_action N_GenerateMQErrorMessage_Node0_action --> E_GenerateMQErrorMessage S_GenerateMQErrorMessage --> N_GenerateMQErrorMessage_Node0 N_GenerateMQErrorMessage_Node1{"The completion code indicates an
error other than no messages
available"}:::decision N_GenerateMQErrorMessage_Node1_action["The system generates an MQ error
message with reason code and
description, sets transaction code
to 355, and prepares for abend"]:::exclusion N_GenerateMQErrorMessage_Node1 -- Yes -->|Alternative| N_GenerateMQErrorMessage_Node1_action N_GenerateMQErrorMessage_Node1_action --> E_GenerateMQErrorMessage N_GenerateMQErrorMessage_Node0 -- No --> N_GenerateMQErrorMessage_Node1 N_GenerateMQErrorMessage_Node1 -- No --> E_GenerateMQErrorMessage
generated"}:::decision N_GenerateMQErrorMessage_Node0_action["The system should call GCCMQERR
service to convert the reason code
to descriptive error text and format
it with the reason code"]:::exclusion N_GenerateMQErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateMQErrorMessage_Node0_action N_GenerateMQErrorMessage_Node0_action --> E_GenerateMQErrorMessage S_GenerateMQErrorMessage --> N_GenerateMQErrorMessage_Node0 N_GenerateMQErrorMessage_Node1{"The completion code indicates an
error other than no messages
available"}:::decision N_GenerateMQErrorMessage_Node1_action["The system generates an MQ error
message with reason code and
description, sets transaction code
to 355, and prepares for abend"]:::exclusion N_GenerateMQErrorMessage_Node1 -- Yes -->|Alternative| N_GenerateMQErrorMessage_Node1_action N_GenerateMQErrorMessage_Node1_action --> E_GenerateMQErrorMessage N_GenerateMQErrorMessage_Node0 -- No --> N_GenerateMQErrorMessage_Node1 N_GenerateMQErrorMessage_Node1 -- No --> E_GenerateMQErrorMessage
File: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
The customs message queue open operation has failed with an error other than queue not found
WHEN:
Error information needs to be generated
THEN:
- The system should call gccmqerr service to convert the reason code to descriptive error text
- Format it with the reason code
File: GCX015E.cbl
GIVEN:
A message retrieval attempt has failed
WHEN:
The completion code indicates an error other than no messages available
THEN:
- The system generates an mq error message with reason code
- Description, sets transaction code to 355, and prepares for abend
β Consolidated Acceptance Criteria
- Error context needs to be established → the transaction set should be set to '355', program error text should be set to 'MQOPEN FAILED', and the complete error message should be prepared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorDetails(["Start Step"])
E_SetErrorDetails(["End Step"])
N_SetErrorDetails_Node0{"Error context needs to be
established"}:::decision N_SetErrorDetails_Node0_action["The transaction set should be set
to 355 , program error text should
be set to MQOPEN FAILED , and the
complete error message should be
prepared"]:::exclusion N_SetErrorDetails_Node0 -- Yes -->|Alternative| N_SetErrorDetails_Node0_action N_SetErrorDetails_Node0_action --> E_SetErrorDetails S_SetErrorDetails --> N_SetErrorDetails_Node0 N_SetErrorDetails_Node0 -- No --> E_SetErrorDetails
established"}:::decision N_SetErrorDetails_Node0_action["The transaction set should be set
to 355 , program error text should
be set to MQOPEN FAILED , and the
complete error message should be
prepared"]:::exclusion N_SetErrorDetails_Node0 -- Yes -->|Alternative| N_SetErrorDetails_Node0_action N_SetErrorDetails_Node0_action --> E_SetErrorDetails S_SetErrorDetails --> N_SetErrorDetails_Node0 N_SetErrorDetails_Node0 -- No --> E_SetErrorDetails
File: GCX015E.cbl
GIVEN:
A customs message queue error has occurred and error message has been generated
WHEN:
Error context needs to be established
THEN:
The transaction set should be set to '355', program error text should be set to 'MQOPEN FAILED', and the complete error message should be prepared
β Consolidated Acceptance Criteria
- The system cannot continue normal processing → the system should invoke the Z900-ABEND procedure to 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_AbortProcessing(["Start Step"])
E_AbortProcessing(["End Step"])
N_AbortProcessing_Node0{"The system cannot continue normal
processing"}:::decision N_AbortProcessing_Node0_action["The system should invoke the
Z900-ABEND procedure to terminate
processing"]:::exclusion N_AbortProcessing_Node0 -- Yes -->|Alternative| N_AbortProcessing_Node0_action N_AbortProcessing_Node0_action --> E_AbortProcessing S_AbortProcessing --> N_AbortProcessing_Node0 N_AbortProcessing_Node0 -- No --> E_AbortProcessing
processing"}:::decision N_AbortProcessing_Node0_action["The system should invoke the
Z900-ABEND procedure to terminate
processing"]:::exclusion N_AbortProcessing_Node0 -- Yes -->|Alternative| N_AbortProcessing_Node0_action N_AbortProcessing_Node0_action --> E_AbortProcessing S_AbortProcessing --> N_AbortProcessing_Node0 N_AbortProcessing_Node0 -- No --> E_AbortProcessing
File: GCX015E.cbl
GIVEN:
A critical customs message queue error has occurred and error details have been set
WHEN:
The system cannot continue normal processing
THEN:
The system should invoke the Z900-ABEND procedure to terminate processing
β Consolidated Acceptance Criteria
- A message retrieval request is made → the system calls MQGET to retrieve the next available message from the queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallMQGETtoRetrieveMessage(["Start Step"])
E_CallMQGETtoRetrieveMessage(["End Step"])
N_CallMQGETtoRetrieveMessage_Node0{"A message retrieval request is made"}:::decision
N_CallMQGETtoRetrieveMessage_Node0_action["The system calls MQGET to retrieve
the next available message from the
queue"]:::main N_CallMQGETtoRetrieveMessage_Node0 -- Yes --> N_CallMQGETtoRetrieveMessage_Node0_action N_CallMQGETtoRetrieveMessage_Node0_action --> E_CallMQGETtoRetrieveMessage S_CallMQGETtoRetrieveMessage --> N_CallMQGETtoRetrieveMessage_Node0 N_CallMQGETtoRetrieveMessage_Node0 -- No --> E_CallMQGETtoRetrieveMessage
the next available message from the
queue"]:::main N_CallMQGETtoRetrieveMessage_Node0 -- Yes --> N_CallMQGETtoRetrieveMessage_Node0_action N_CallMQGETtoRetrieveMessage_Node0_action --> E_CallMQGETtoRetrieveMessage S_CallMQGETtoRetrieveMessage --> N_CallMQGETtoRetrieveMessage_Node0 N_CallMQGETtoRetrieveMessage_Node0 -- No --> E_CallMQGETtoRetrieveMessage
File: GCX015E.cbl
GIVEN:
The system is connected to the message queue
WHEN:
A message retrieval request is made
THEN:
The system calls MQGET to retrieve the next available message from the queue
β Consolidated Acceptance Criteria
- The message queue completion code equals MQCC-OK → the message is considered successfully 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_MessageSuccessfullyRetrieved(["Start Step"])
E_MessageSuccessfullyRetrieved(["End Step"])
N_MessageSuccessfullyRetrieved_Node0{"The message queue completion code
equals MQCC-OK"}:::decision N_MessageSuccessfullyRetrieved_Node0_action["The message is considered
successfully retrieved for
processing"]:::main N_MessageSuccessfullyRetrieved_Node0 -- Yes --> N_MessageSuccessfullyRetrieved_Node0_action N_MessageSuccessfullyRetrieved_Node0_action --> E_MessageSuccessfullyRetrieved S_MessageSuccessfullyRetrieved --> N_MessageSuccessfullyRetrieved_Node0 N_MessageSuccessfullyRetrieved_Node0 -- No --> E_MessageSuccessfullyRetrieved
equals MQCC-OK"}:::decision N_MessageSuccessfullyRetrieved_Node0_action["The message is considered
successfully retrieved for
processing"]:::main N_MessageSuccessfullyRetrieved_Node0 -- Yes --> N_MessageSuccessfullyRetrieved_Node0_action N_MessageSuccessfullyRetrieved_Node0_action --> E_MessageSuccessfullyRetrieved S_MessageSuccessfullyRetrieved --> N_MessageSuccessfullyRetrieved_Node0 N_MessageSuccessfullyRetrieved_Node0 -- No --> E_MessageSuccessfullyRetrieved
File: GCX015E.cbl
GIVEN:
A message retrieval attempt has been made
WHEN:
The message queue completion code equals MQCC-OK
THEN:
The message is considered successfully retrieved for processing
β Consolidated Acceptance Criteria
- The calculated maximum message entries is less than 1 → the system generates a user abend 355 error for message too short
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTooShortCheck(["Start Step"])
E_MessageTooShortCheck(["End Step"])
N_MessageTooShortCheck_Node0{"The calculated maximum message
entries is less than 1"}:::decision N_MessageTooShortCheck_Node0_action["The system generates a user abend
355 error for message too short"]:::exclusion N_MessageTooShortCheck_Node0 -- Yes -->|Alternative| N_MessageTooShortCheck_Node0_action N_MessageTooShortCheck_Node0_action --> E_MessageTooShortCheck S_MessageTooShortCheck --> N_MessageTooShortCheck_Node0 N_MessageTooShortCheck_Node0 -- No --> E_MessageTooShortCheck
entries is less than 1"}:::decision N_MessageTooShortCheck_Node0_action["The system generates a user abend
355 error for message too short"]:::exclusion N_MessageTooShortCheck_Node0 -- Yes -->|Alternative| N_MessageTooShortCheck_Node0_action N_MessageTooShortCheck_Node0_action --> E_MessageTooShortCheck S_MessageTooShortCheck --> N_MessageTooShortCheck_Node0 N_MessageTooShortCheck_Node0 -- No --> E_MessageTooShortCheck
File: GCX015E.cbl
GIVEN:
A message has been successfully retrieved from the queue
WHEN:
The calculated maximum message entries is less than 1
THEN:
The system generates a user abend 355 error for message too short
β Consolidated Acceptance Criteria
- The message backout count equals 0 → the message is marked as good for processing, otherwise it is marked to 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_MessageBackoutCountCheck(["Start Step"])
E_MessageBackoutCountCheck(["End Step"])
N_MessageBackoutCountCheck_Node0{"The message backout count equals 0"}:::decision
N_MessageBackoutCountCheck_Node0_action["The message is marked as good for
processing, otherwise it is marked
to be skipped"]:::main N_MessageBackoutCountCheck_Node0 -- Yes --> N_MessageBackoutCountCheck_Node0_action N_MessageBackoutCountCheck_Node0_action --> E_MessageBackoutCountCheck S_MessageBackoutCountCheck --> N_MessageBackoutCountCheck_Node0 N_MessageBackoutCountCheck_Node0 -- No --> E_MessageBackoutCountCheck
processing, otherwise it is marked
to be skipped"]:::main N_MessageBackoutCountCheck_Node0 -- Yes --> N_MessageBackoutCountCheck_Node0_action N_MessageBackoutCountCheck_Node0_action --> E_MessageBackoutCountCheck S_MessageBackoutCountCheck --> N_MessageBackoutCountCheck_Node0 N_MessageBackoutCountCheck_Node0 -- No --> E_MessageBackoutCountCheck
File: GCX015E.cbl
GIVEN:
A message has been successfully retrieved from the queue
WHEN:
The message backout count equals 0
THEN:
The message is marked as good for processing, otherwise it is marked to be skipped
β Consolidated Acceptance Criteria
- The message passes all initial validations → the system sets the good message found 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_SetGoodMessageFoundFlag(["Start Step"])
E_SetGoodMessageFoundFlag(["End Step"])
N_SetGoodMessageFoundFlag_Node0{"The message passes all initial
validations"}:::decision N_SetGoodMessageFoundFlag_Node0_action["The system sets the good message
found flag to true"]:::main N_SetGoodMessageFoundFlag_Node0 -- Yes --> N_SetGoodMessageFoundFlag_Node0_action N_SetGoodMessageFoundFlag_Node0_action --> E_SetGoodMessageFoundFlag S_SetGoodMessageFoundFlag --> N_SetGoodMessageFoundFlag_Node0 N_SetGoodMessageFoundFlag_Node0 -- No --> E_SetGoodMessageFoundFlag
validations"}:::decision N_SetGoodMessageFoundFlag_Node0_action["The system sets the good message
found flag to true"]:::main N_SetGoodMessageFoundFlag_Node0 -- Yes --> N_SetGoodMessageFoundFlag_Node0_action N_SetGoodMessageFoundFlag_Node0_action --> E_SetGoodMessageFoundFlag S_SetGoodMessageFoundFlag --> N_SetGoodMessageFoundFlag_Node0 N_SetGoodMessageFoundFlag_Node0 -- No --> E_SetGoodMessageFoundFlag
File: GCX015E.cbl
GIVEN:
A message has been retrieved with completion code MQCC-OK and backout count of 0
WHEN:
The message passes all initial validations
THEN:
The system sets the good message found flag to true
β Consolidated Acceptance Criteria
- The message backout count is not equal to 0 → the system sets the skip message 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_SetSkipMessageFlag(["Start Step"])
E_SetSkipMessageFlag(["End Step"])
N_SetSkipMessageFlag_Node0{"The message backout count is not
equal to 0"}:::decision N_SetSkipMessageFlag_Node0_action["The system sets the skip message
flag to true"]:::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
equal to 0"}:::decision N_SetSkipMessageFlag_Node0_action["The system sets the skip message
flag to true"]:::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: GCX015E.cbl
Exclusion / Alternative Path
GIVEN:
A message has been retrieved with completion code MQCC-OK
WHEN:
The message backout count is not equal to 0
THEN:
The system sets the skip message flag to true
β Consolidated Acceptance Criteria
- Either the message is too short or a message queue error has occurred → the system performs an abend to 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_SetErrorStatusandAbend(["Start Step"])
E_SetErrorStatusandAbend(["End Step"])
N_SetErrorStatusandAbend_Node0{"Either the message is too short or
a message queue error has occurred"}:::decision N_SetErrorStatusandAbend_Node0_action["The system performs an abend to
terminate processing"]:::exclusion N_SetErrorStatusandAbend_Node0 -- Yes -->|Alternative| N_SetErrorStatusandAbend_Node0_action N_SetErrorStatusandAbend_Node0_action --> E_SetErrorStatusandAbend S_SetErrorStatusandAbend --> N_SetErrorStatusandAbend_Node0 N_SetErrorStatusandAbend_Node0 -- No --> E_SetErrorStatusandAbend
a message queue error has occurred"}:::decision N_SetErrorStatusandAbend_Node0_action["The system performs an abend to
terminate processing"]:::exclusion N_SetErrorStatusandAbend_Node0 -- Yes -->|Alternative| N_SetErrorStatusandAbend_Node0_action N_SetErrorStatusandAbend_Node0_action --> E_SetErrorStatusandAbend S_SetErrorStatusandAbend --> N_SetErrorStatusandAbend_Node0 N_SetErrorStatusandAbend_Node0 -- No --> E_SetErrorStatusandAbend
File: GCX015E.cbl
GIVEN:
A critical error has occurred during message processing
WHEN:
Either the message is too short or a message queue error has occurred
THEN:
The system performs an abend to terminate processing