π
← Back to Categories
GCCE358 Sequence (GCCE358)
Objective: Orchestrates key processes including Validate Processing Mode, Generate Transmission Number, Insert EDI Root Segment, Count Bill of Lading Records, Process M10 Manifest Header, and other related sub-functions.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start EDI 358 Processing]:::start
B{1:Validate Processing Mode}:::decision
C[2:Generate Transmission Number]:::process
D[3:Insert EDI Root Segment]:::process
E[4:Count Bill of Lading Records]:::process
F[5:Process M10 Manifest Header]:::process
G[6:Process P4 Port Information]:::process
H[Initialize Equipment Processing]:::process
I{More Equipment to Process?}:::decision
J{Equipment ID Changed?}:::decision
K[7:Process Equipment Records]:::process
L[8:Determine Equipment Load Status]:::process
M[9:Lookup Foreign Carrier Information]:::process
N[10:Create VID Equipment Segment]:::process
O{Equipment Has Bill of Lading?}:::decision
P[11:Process Bill of Lading Records]:::process
Q[12:Determine Automated Carrier Status]:::process
R[13:Apply Special ER Processing Rules]:::process
S[14:Create MBL Bill Segment]:::process
T[15:Start EDI Send Function]:::process
U[16:Start Log Update Function]:::process
V[Processing Complete Successfully]:::success
W[Invalid Processing Mode Error]:::error
%% Datasources
DS1[(GCSA9RT - EDI Root Segment)]:::datasource
DS2[(GCSA9DP - EDI Data Segment)]:::datasource
DS3[(GCSUSRT - Cargo Information)]:::datasource
DS4[(GCSTBRT - SCAC Table)]:::datasource
DS5[(GCT1091E - EDI Send Function)]:::datasource
DS6[(GCT1051E - Log Update Function)]:::datasource
%% Main Flow
A --> B
B -->|Valid Mode| C
B -->|Invalid Mode| W
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I
I -->|Yes| J
J -->|Yes| K
J -->|No| O
K --> L
L --> M
M --> N
N --> O
O -->|Yes| P
O -->|No| I
P --> Q
Q --> R
R --> S
S --> I
I -->|No| T
T --> U
U --> V
%% Datasource Interactions
DS1 -.->|Insert Root Segment| D
DS2 -.->|Insert M10 Segment| F
DS2 -.->|Insert P4 Segment| G
DS3 -.->|Lookup Equipment Info| M
DS2 -.->|Insert VID Segment| N
DS4 -.->|Check Automated Carrier| Q
DS2 -.->|Insert MBL Segment| S
DS5 -.->|Start EDI Transmission| T
DS6 -.->|Create Log Entry| U
%% Class Definitions
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The processing mode is checked → processing continues only if mode is FOREGROUND or BACKGROUND, otherwise sets wrong mode 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_1ValidateProcessingMode(["Start Step"])
E_1ValidateProcessingMode(["End Step"])
N_1ValidateProcessingMode_Node0{"the processing mode is checked"}:::decision
N_1ValidateProcessingMode_Node0_action["processing continues only if mode
is FOREGROUND or BACKGROUND,
otherwise sets wrong mode indicator"]:::main N_1ValidateProcessingMode_Node0 -- Yes --> N_1ValidateProcessingMode_Node0_action N_1ValidateProcessingMode_Node0_action --> E_1ValidateProcessingMode S_1ValidateProcessingMode --> N_1ValidateProcessingMode_Node0 N_1ValidateProcessingMode_Node0 -- No --> E_1ValidateProcessingMode
is FOREGROUND or BACKGROUND,
otherwise sets wrong mode indicator"]:::main N_1ValidateProcessingMode_Node0 -- Yes --> N_1ValidateProcessingMode_Node0_action N_1ValidateProcessingMode_Node0_action --> E_1ValidateProcessingMode S_1ValidateProcessingMode --> N_1ValidateProcessingMode_Node0 N_1ValidateProcessingMode_Node0 -- No --> E_1ValidateProcessingMode
File: GCCE358.cbl
GIVEN:
EDI 358 processing is initiated
WHEN:
the processing mode is checked
THEN:
processing continues only if mode is FOREGROUND or BACKGROUND, otherwise sets wrong mode indicator
β Consolidated Acceptance Criteria
- Generating transmission number → use prefix 106 for FOREGROUND mode or prefix 110 for BACKGROUND mode, combined with 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_2GenerateTransmissionNumber(["Start Step"])
E_2GenerateTransmissionNumber(["End Step"])
N_2GenerateTransmissionNumber_Node0{"generating transmission number"}:::decision
N_2GenerateTransmissionNumber_Node0_action["use prefix 106 for FOREGROUND mode
or prefix 110 for BACKGROUND mode,
combined with machine time"]:::main N_2GenerateTransmissionNumber_Node0 -- Yes --> N_2GenerateTransmissionNumber_Node0_action N_2GenerateTransmissionNumber_Node0_action --> E_2GenerateTransmissionNumber S_2GenerateTransmissionNumber --> N_2GenerateTransmissionNumber_Node0 N_2GenerateTransmissionNumber_Node0 -- No --> E_2GenerateTransmissionNumber
or prefix 110 for BACKGROUND mode,
combined with machine time"]:::main N_2GenerateTransmissionNumber_Node0 -- Yes --> N_2GenerateTransmissionNumber_Node0_action N_2GenerateTransmissionNumber_Node0_action --> E_2GenerateTransmissionNumber S_2GenerateTransmissionNumber --> N_2GenerateTransmissionNumber_Node0 N_2GenerateTransmissionNumber_Node0 -- No --> E_2GenerateTransmissionNumber
File: GCCE358.cbl
GIVEN:
a valid processing mode is confirmed
WHEN:
generating transmission number
THEN:
use prefix 106 for FOREGROUND mode or prefix 110 for BACKGROUND mode, combined with machine time
β Consolidated Acceptance Criteria
- Attempting to insert EDI root segment → if transmission number already exists, increment by 1 and retry until unique number 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_3InsertEDIRootSegment(["Start Step"])
E_3InsertEDIRootSegment(["End Step"])
N_3InsertEDIRootSegment_Node0{"attempting to insert EDI root
segment"}:::decision N_3InsertEDIRootSegment_Node0_action["if transmission number already
exists, increment by 1 and retry
until unique number is found"]:::main N_3InsertEDIRootSegment_Node0 -- Yes --> N_3InsertEDIRootSegment_Node0_action N_3InsertEDIRootSegment_Node0_action --> E_3InsertEDIRootSegment S_3InsertEDIRootSegment --> N_3InsertEDIRootSegment_Node0 N_3InsertEDIRootSegment_Node0 -- No --> E_3InsertEDIRootSegment
segment"}:::decision N_3InsertEDIRootSegment_Node0_action["if transmission number already
exists, increment by 1 and retry
until unique number is found"]:::main N_3InsertEDIRootSegment_Node0 -- Yes --> N_3InsertEDIRootSegment_Node0_action N_3InsertEDIRootSegment_Node0_action --> E_3InsertEDIRootSegment S_3InsertEDIRootSegment --> N_3InsertEDIRootSegment_Node0 N_3InsertEDIRootSegment_Node0 -- No --> E_3InsertEDIRootSegment
File: GCCE358.cbl
GIVEN:
a transmission number is generated
WHEN:
attempting to insert EDI root segment
THEN:
- If transmission number already exists, increment by 1
- Retry until unique number is found
β Consolidated Acceptance Criteria
- Counting bill of lading records → increment count for each equipment item where US-CCN-KEY is not 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_4CountBillofLadingRecords(["Start Step"])
E_4CountBillofLadingRecords(["End Step"])
N_4CountBillofLadingRecords_Node0{"counting bill of lading records"}:::decision
N_4CountBillofLadingRecords_Node0_action["increment count for each equipment
item where US-CCN-KEY is not spaces"]:::main N_4CountBillofLadingRecords_Node0 -- Yes --> N_4CountBillofLadingRecords_Node0_action N_4CountBillofLadingRecords_Node0_action --> E_4CountBillofLadingRecords S_4CountBillofLadingRecords --> N_4CountBillofLadingRecords_Node0 N_4CountBillofLadingRecords_Node0 -- No --> E_4CountBillofLadingRecords
item where US-CCN-KEY is not spaces"]:::main N_4CountBillofLadingRecords_Node0 -- Yes --> N_4CountBillofLadingRecords_Node0_action N_4CountBillofLadingRecords_Node0_action --> E_4CountBillofLadingRecords S_4CountBillofLadingRecords --> N_4CountBillofLadingRecords_Node0 N_4CountBillofLadingRecords_Node0 -- No --> E_4CountBillofLadingRecords
File: GCCE358.cbl
GIVEN:
train equipment list is available
WHEN:
counting bill of lading records
THEN:
increment count for each equipment item where US-CCN-KEY is not spaces
β Consolidated Acceptance Criteria
- Creating M10 manifest header → set SCAC to 'CPRS', transport type to 'R', country to 'CA', vessel name to customer train ID, voyage number to train creation date, quantity to BOL count, manifest type to 'S', condition response to 'Y', record type to 'TRAIN', and record number to 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_5ProcessM10ManifestHeader(["Start Step"])
E_5ProcessM10ManifestHeader(["End Step"])
N_5ProcessM10ManifestHeader_Node0{"creating M10 manifest header"}:::decision
N_5ProcessM10ManifestHeader_Node0_action["set SCAC to CPRS , transport type
to R , country to CA , vessel name
to customer train ID, voyage number
to train creation date, quantity to
BOL count, manifest type to S ,
condition response to Y , record
type to TRAIN , and record number to
customer train ID"]:::main N_5ProcessM10ManifestHeader_Node0 -- Yes --> N_5ProcessM10ManifestHeader_Node0_action N_5ProcessM10ManifestHeader_Node0_action --> E_5ProcessM10ManifestHeader S_5ProcessM10ManifestHeader --> N_5ProcessM10ManifestHeader_Node0 N_5ProcessM10ManifestHeader_Node0 -- No --> E_5ProcessM10ManifestHeader
to R , country to CA , vessel name
to customer train ID, voyage number
to train creation date, quantity to
BOL count, manifest type to S ,
condition response to Y , record
type to TRAIN , and record number to
customer train ID"]:::main N_5ProcessM10ManifestHeader_Node0 -- Yes --> N_5ProcessM10ManifestHeader_Node0_action N_5ProcessM10ManifestHeader_Node0_action --> E_5ProcessM10ManifestHeader S_5ProcessM10ManifestHeader --> N_5ProcessM10ManifestHeader_Node0 N_5ProcessM10ManifestHeader_Node0 -- No --> E_5ProcessM10ManifestHeader
File: GCCE358.cbl
GIVEN:
bill of lading count is calculated
WHEN:
creating M10 manifest header
THEN:
set SCAC to 'CPRS', transport type to 'R', country to 'CA', vessel name to customer train ID, voyage number to train creation date, quantity to BOL count, manifest type to 'S', condition response to 'Y', record type to 'TRAIN', and record number to customer train ID
β Consolidated Acceptance Criteria
- Creating P4 port information → set location to origin service center, quantity to BOL count, time to ETA, ID code to FIRMS code, and for ETA date: if year less than 70 use century 20, if year 70 or greater use century 19, if date is spaces or zeros use century 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_6ProcessP4PortInformation(["Start Step"])
E_6ProcessP4PortInformation(["End Step"])
N_6ProcessP4PortInformation_Node0{"creating P4 port information"}:::decision
N_6ProcessP4PortInformation_Node0_action["set location to origin service
center, quantity to BOL count, time
to ETA, ID code to FIRMS code, and
for ETA date: if year less than 70
use century 20, if year 70 or
greater use century 19, if date is
spaces or zeros use century 0"]:::main N_6ProcessP4PortInformation_Node0 -- Yes --> N_6ProcessP4PortInformation_Node0_action N_6ProcessP4PortInformation_Node0_action --> E_6ProcessP4PortInformation S_6ProcessP4PortInformation --> N_6ProcessP4PortInformation_Node0 N_6ProcessP4PortInformation_Node0 -- No --> E_6ProcessP4PortInformation
center, quantity to BOL count, time
to ETA, ID code to FIRMS code, and
for ETA date: if year less than 70
use century 20, if year 70 or
greater use century 19, if date is
spaces or zeros use century 0"]:::main N_6ProcessP4PortInformation_Node0 -- Yes --> N_6ProcessP4PortInformation_Node0_action N_6ProcessP4PortInformation_Node0_action --> E_6ProcessP4PortInformation S_6ProcessP4PortInformation --> N_6ProcessP4PortInformation_Node0 N_6ProcessP4PortInformation_Node0 -- No --> E_6ProcessP4PortInformation
File: GCCE358.cbl
GIVEN:
port and timing information is available
WHEN:
creating P4 port information
THEN:
set location to origin service center, quantity to BOL count, time to ETA, ID code to FIRMS code, and for ETA date: if year less than 70 use century 20, if year 70 or greater use century 19, if date is spaces or zeros use century 0
β Consolidated Acceptance Criteria
- Assigning equipment number → if US-CCN-KEY starts with 'CPRS' or car number is spaces, use equipment number from train list, otherwise use car number from cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7ProcessEquipmentRecords(["Start Step"])
E_7ProcessEquipmentRecords(["End Step"])
N_7ProcessEquipmentRecords_Node0{"assigning equipment number"}:::decision
N_7ProcessEquipmentRecords_Node0_action["if US-CCN-KEY starts with CPRS or
car number is spaces, use equipment
number from train list, otherwise
use car number from cargo record"]:::main N_7ProcessEquipmentRecords_Node0 -- Yes --> N_7ProcessEquipmentRecords_Node0_action N_7ProcessEquipmentRecords_Node0_action --> E_7ProcessEquipmentRecords S_7ProcessEquipmentRecords --> N_7ProcessEquipmentRecords_Node0 N_7ProcessEquipmentRecords_Node0 -- No --> E_7ProcessEquipmentRecords
car number is spaces, use equipment
number from train list, otherwise
use car number from cargo record"]:::main N_7ProcessEquipmentRecords_Node0 -- Yes --> N_7ProcessEquipmentRecords_Node0_action N_7ProcessEquipmentRecords_Node0_action --> E_7ProcessEquipmentRecords S_7ProcessEquipmentRecords --> N_7ProcessEquipmentRecords_Node0 N_7ProcessEquipmentRecords_Node0 -- No --> E_7ProcessEquipmentRecords
File: GCCE358.cbl
GIVEN:
equipment record is being created
WHEN:
assigning equipment number
THEN:
if US-CCN-KEY starts with 'CPRS' or car number is spaces, use equipment number from train list, otherwise use car number from cargo record
β Consolidated Acceptance Criteria
- Determining final load status → if status is 'H' change to 'E', if status is 'E' and CCN key exists and cargo weight greater than 1 change to 'L', otherwise keep original 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_8DetermineEquipmentLoadStatus(["Start Step"])
E_8DetermineEquipmentLoadStatus(["End Step"])
N_8DetermineEquipmentLoadStatus_Node0{"determining final load status"}:::decision
N_8DetermineEquipmentLoadStatus_Node0_action["if status is H change to E , if
status is E and CCN key exists and
cargo weight greater than 1 change
to L , otherwise keep original
status"]:::main N_8DetermineEquipmentLoadStatus_Node0 -- Yes --> N_8DetermineEquipmentLoadStatus_Node0_action N_8DetermineEquipmentLoadStatus_Node0_action --> E_8DetermineEquipmentLoadStatus S_8DetermineEquipmentLoadStatus --> N_8DetermineEquipmentLoadStatus_Node0 N_8DetermineEquipmentLoadStatus_Node0 -- No --> E_8DetermineEquipmentLoadStatus
status is E and CCN key exists and
cargo weight greater than 1 change
to L , otherwise keep original
status"]:::main N_8DetermineEquipmentLoadStatus_Node0 -- Yes --> N_8DetermineEquipmentLoadStatus_Node0_action N_8DetermineEquipmentLoadStatus_Node0_action --> E_8DetermineEquipmentLoadStatus S_8DetermineEquipmentLoadStatus --> N_8DetermineEquipmentLoadStatus_Node0 N_8DetermineEquipmentLoadStatus_Node0 -- No --> E_8DetermineEquipmentLoadStatus
File: GCCE358.cbl
GIVEN:
equipment load/empty status and cargo information is available
WHEN:
determining final load status
THEN:
- If status is 'h' change to 'e', if status is 'e' and ccn key exists
- Cargo weight greater than 1 change to 'l', otherwise keep original status
β Consolidated Acceptance Criteria
- Processing equipment records → lookup cargo information using the CCN key to retrieve additional equipment details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_9LookupForeignCarrierInformation(["Start Step"])
E_9LookupForeignCarrierInformation(["End Step"])
N_9LookupForeignCarrierInformation_Node0{"processing equipment records"}:::decision
N_9LookupForeignCarrierInformation_Node0_action["lookup cargo information using the
CCN key to retrieve additional
equipment details"]:::main N_9LookupForeignCarrierInformation_Node0 -- Yes --> N_9LookupForeignCarrierInformation_Node0_action N_9LookupForeignCarrierInformation_Node0_action --> E_9LookupForeignCarrierInformation S_9LookupForeignCarrierInformation --> N_9LookupForeignCarrierInformation_Node0 N_9LookupForeignCarrierInformation_Node0 -- No --> E_9LookupForeignCarrierInformation
CCN key to retrieve additional
equipment details"]:::main N_9LookupForeignCarrierInformation_Node0 -- Yes --> N_9LookupForeignCarrierInformation_Node0_action N_9LookupForeignCarrierInformation_Node0_action --> E_9LookupForeignCarrierInformation S_9LookupForeignCarrierInformation --> N_9LookupForeignCarrierInformation_Node0 N_9LookupForeignCarrierInformation_Node0 -- No --> E_9LookupForeignCarrierInformation
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
equipment has US-CCN-KEY that is not spaces
WHEN:
processing equipment records
THEN:
lookup cargo information using the CCN key to retrieve additional equipment details
β Consolidated Acceptance Criteria
- Creating VID equipment segment → populate VID segment with equipment type, initial, processed equipment number, and determined load 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_10CreateVIDEquipmentSegment(["Start Step"])
E_10CreateVIDEquipmentSegment(["End Step"])
N_10CreateVIDEquipmentSegment_Node0{"creating VID equipment segment"}:::decision
N_10CreateVIDEquipmentSegment_Node0_action["populate VID segment with equipment
type, initial, processed equipment
number, and determined load status"]:::main N_10CreateVIDEquipmentSegment_Node0 -- Yes --> N_10CreateVIDEquipmentSegment_Node0_action N_10CreateVIDEquipmentSegment_Node0_action --> E_10CreateVIDEquipmentSegment S_10CreateVIDEquipmentSegment --> N_10CreateVIDEquipmentSegment_Node0 N_10CreateVIDEquipmentSegment_Node0 -- No --> E_10CreateVIDEquipmentSegment
type, initial, processed equipment
number, and determined load status"]:::main N_10CreateVIDEquipmentSegment_Node0 -- Yes --> N_10CreateVIDEquipmentSegment_Node0_action N_10CreateVIDEquipmentSegment_Node0_action --> E_10CreateVIDEquipmentSegment S_10CreateVIDEquipmentSegment --> N_10CreateVIDEquipmentSegment_Node0 N_10CreateVIDEquipmentSegment_Node0 -- No --> E_10CreateVIDEquipmentSegment
File: GCCE358.cbl
GIVEN:
equipment information is processed and validated
WHEN:
creating VID equipment segment
THEN:
populate VID segment with equipment type, initial, processed equipment number, and determined load status
β Consolidated Acceptance Criteria
- Processing bill of lading records → extract SCAC and BOL/Waybill information from equipment data for MBL segment creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_11ProcessBillofLadingRecords(["Start Step"])
E_11ProcessBillofLadingRecords(["End Step"])
N_11ProcessBillofLadingRecords_Node0{"processing bill of lading records"}:::decision
N_11ProcessBillofLadingRecords_Node0_action["extract SCAC and BOLWaybill
information from equipment data for
MBL segment creation"]:::main N_11ProcessBillofLadingRecords_Node0 -- Yes --> N_11ProcessBillofLadingRecords_Node0_action N_11ProcessBillofLadingRecords_Node0_action --> E_11ProcessBillofLadingRecords S_11ProcessBillofLadingRecords --> N_11ProcessBillofLadingRecords_Node0 N_11ProcessBillofLadingRecords_Node0 -- No --> E_11ProcessBillofLadingRecords
information from equipment data for
MBL segment creation"]:::main N_11ProcessBillofLadingRecords_Node0 -- Yes --> N_11ProcessBillofLadingRecords_Node0_action N_11ProcessBillofLadingRecords_Node0_action --> E_11ProcessBillofLadingRecords S_11ProcessBillofLadingRecords --> N_11ProcessBillofLadingRecords_Node0 N_11ProcessBillofLadingRecords_Node0 -- No --> E_11ProcessBillofLadingRecords
File: GCCE358.cbl
GIVEN:
equipment has bill of lading information
WHEN:
processing bill of lading records
THEN:
- Extract scac
- Bol/waybill information from equipment data for mbl segment creation
β Consolidated Acceptance Criteria
- Determining automated carrier status → if SCAC is 'CPRS' set response to 'Y', otherwise lookup SCAC in table and if automated carrier flag is 'Y' set response to 'Y', else set to 'N'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_12DetermineAutomatedCarrierStatus(["Start Step"])
E_12DetermineAutomatedCarrierStatus(["End Step"])
N_12DetermineAutomatedCarrierStatus_Node0{"determining automated carrier
status"}:::decision N_12DetermineAutomatedCarrierStatus_Node0_action["if SCAC is CPRS set response to Y ,
otherwise lookup SCAC in table and
if automated carrier flag is Y set
response to Y , else set to N"]:::main N_12DetermineAutomatedCarrierStatus_Node0 -- Yes --> N_12DetermineAutomatedCarrierStatus_Node0_action N_12DetermineAutomatedCarrierStatus_Node0_action --> E_12DetermineAutomatedCarrierStatus S_12DetermineAutomatedCarrierStatus --> N_12DetermineAutomatedCarrierStatus_Node0 N_12DetermineAutomatedCarrierStatus_Node0 -- No --> E_12DetermineAutomatedCarrierStatus
status"}:::decision N_12DetermineAutomatedCarrierStatus_Node0_action["if SCAC is CPRS set response to Y ,
otherwise lookup SCAC in table and
if automated carrier flag is Y set
response to Y , else set to N"]:::main N_12DetermineAutomatedCarrierStatus_Node0 -- Yes --> N_12DetermineAutomatedCarrierStatus_Node0_action N_12DetermineAutomatedCarrierStatus_Node0_action --> E_12DetermineAutomatedCarrierStatus S_12DetermineAutomatedCarrierStatus --> N_12DetermineAutomatedCarrierStatus_Node0 N_12DetermineAutomatedCarrierStatus_Node0 -- No --> E_12DetermineAutomatedCarrierStatus
File: GCCE358.cbl
GIVEN:
SCAC and port information is available
WHEN:
determining automated carrier status
THEN:
- If scac is 'cprs' set response to 'y', otherwise lookup scac in table
- If automated carrier flag is 'y' set response to 'y', else set to 'n'
β Consolidated Acceptance Criteria
- Applying special ER processing rules → if equipment status is 'E' and CCN key exists and BOL type is 23, override response code to 'Y'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13ApplySpecialERProcessingRules(["Start Step"])
E_13ApplySpecialERProcessingRules(["End Step"])
N_13ApplySpecialERProcessingRules_Node0{"applying special ER processing
rules"}:::decision N_13ApplySpecialERProcessingRules_Node0_action["if equipment status is E and CCN
key exists and BOL type is 23,
override response code to Y"]:::main N_13ApplySpecialERProcessingRules_Node0 -- Yes --> N_13ApplySpecialERProcessingRules_Node0_action N_13ApplySpecialERProcessingRules_Node0_action --> E_13ApplySpecialERProcessingRules S_13ApplySpecialERProcessingRules --> N_13ApplySpecialERProcessingRules_Node0 N_13ApplySpecialERProcessingRules_Node0 -- No --> E_13ApplySpecialERProcessingRules
rules"}:::decision N_13ApplySpecialERProcessingRules_Node0_action["if equipment status is E and CCN
key exists and BOL type is 23,
override response code to Y"]:::main N_13ApplySpecialERProcessingRules_Node0 -- Yes --> N_13ApplySpecialERProcessingRules_Node0_action N_13ApplySpecialERProcessingRules_Node0_action --> E_13ApplySpecialERProcessingRules S_13ApplySpecialERProcessingRules --> N_13ApplySpecialERProcessingRules_Node0 N_13ApplySpecialERProcessingRules_Node0 -- No --> E_13ApplySpecialERProcessingRules
File: GCCE358.cbl
GIVEN:
equipment and bill of lading information is processed
WHEN:
applying special ER processing rules
THEN:
- If equipment status is 'e' and ccn key exists
- Bol type is 23, override response code to 'y'
β Consolidated Acceptance Criteria
- Creating MBL bill segment → populate MBL segment with SCAC, BOL/Waybill number, and determined response code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_14CreateMBLBillSegment(["Start Step"])
E_14CreateMBLBillSegment(["End Step"])
N_14CreateMBLBillSegment_Node0{"creating MBL bill segment"}:::decision
N_14CreateMBLBillSegment_Node0_action["populate MBL segment with SCAC,
BOLWaybill number, and determined
response code"]:::main N_14CreateMBLBillSegment_Node0 -- Yes --> N_14CreateMBLBillSegment_Node0_action N_14CreateMBLBillSegment_Node0_action --> E_14CreateMBLBillSegment S_14CreateMBLBillSegment --> N_14CreateMBLBillSegment_Node0 N_14CreateMBLBillSegment_Node0 -- No --> E_14CreateMBLBillSegment
BOLWaybill number, and determined
response code"]:::main N_14CreateMBLBillSegment_Node0 -- Yes --> N_14CreateMBLBillSegment_Node0_action N_14CreateMBLBillSegment_Node0_action --> E_14CreateMBLBillSegment S_14CreateMBLBillSegment --> N_14CreateMBLBillSegment_Node0 N_14CreateMBLBillSegment_Node0 -- No --> E_14CreateMBLBillSegment
File: GCCE358.cbl
GIVEN:
bill of lading information and automated carrier status is determined
WHEN:
creating MBL bill segment
THEN:
populate MBL segment with SCAC, BOL/Waybill number, and determined response code
β Consolidated Acceptance Criteria
- Starting EDI send function → invoke EDI send function with transmission number and high-values security setting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_15StartEDISendFunction(["Start Step"])
E_15StartEDISendFunction(["End Step"])
N_15StartEDISendFunction_Node0{"starting EDI send function"}:::decision
N_15StartEDISendFunction_Node0_action["invoke EDI send function with
transmission number and high-values
security setting"]:::main N_15StartEDISendFunction_Node0 -- Yes --> N_15StartEDISendFunction_Node0_action N_15StartEDISendFunction_Node0_action --> E_15StartEDISendFunction S_15StartEDISendFunction --> N_15StartEDISendFunction_Node0 N_15StartEDISendFunction_Node0 -- No --> E_15StartEDISendFunction
transmission number and high-values
security setting"]:::main N_15StartEDISendFunction_Node0 -- Yes --> N_15StartEDISendFunction_Node0_action N_15StartEDISendFunction_Node0_action --> E_15StartEDISendFunction S_15StartEDISendFunction --> N_15StartEDISendFunction_Node0 N_15StartEDISendFunction_Node0 -- No --> E_15StartEDISendFunction
File: GCCE358.cbl
GIVEN:
all EDI segments are created successfully
WHEN:
starting EDI send function
THEN:
- Invoke edi send function with transmission number
- High-values security setting
β Consolidated Acceptance Criteria
- Starting log update function → if FOREGROUND mode use foreground action code and transaction name, if BACKGROUND mode use background action code and transaction name, include user ID, 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_16StartLogUpdateFunction(["Start Step"])
E_16StartLogUpdateFunction(["End Step"])
N_16StartLogUpdateFunction_Node0{"starting log update function"}:::decision
N_16StartLogUpdateFunction_Node0_action["if FOREGROUND mode use foreground
action code and transaction name, if
BACKGROUND mode use background
action code and transaction name,
include user ID, current date and
time"]:::main N_16StartLogUpdateFunction_Node0 -- Yes --> N_16StartLogUpdateFunction_Node0_action N_16StartLogUpdateFunction_Node0_action --> E_16StartLogUpdateFunction S_16StartLogUpdateFunction --> N_16StartLogUpdateFunction_Node0 N_16StartLogUpdateFunction_Node0 -- No --> E_16StartLogUpdateFunction
action code and transaction name, if
BACKGROUND mode use background
action code and transaction name,
include user ID, current date and
time"]:::main N_16StartLogUpdateFunction_Node0 -- Yes --> N_16StartLogUpdateFunction_Node0_action N_16StartLogUpdateFunction_Node0_action --> E_16StartLogUpdateFunction S_16StartLogUpdateFunction --> N_16StartLogUpdateFunction_Node0 N_16StartLogUpdateFunction_Node0 -- No --> E_16StartLogUpdateFunction
File: GCCE358.cbl
GIVEN:
EDI processing is completed
WHEN:
starting log update function
THEN:
- If foreground mode use foreground action code
- Transaction name, if background mode use background action code
- Transaction name, include user id, current date
- Time
β Consolidated Acceptance Criteria
- Processing equipment items → continue processing while equipment index is less than or equal to total equipment quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmenttoProcess(["Start Step"])
E_MoreEquipmenttoProcess(["End Step"])
N_MoreEquipmenttoProcess_Node0{"processing equipment items"}:::decision
N_MoreEquipmenttoProcess_Node0_action["continue processing while equipment
index is less than or equal to total
equipment quantity"]:::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
index is less than or equal to total
equipment quantity"]:::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: GCCE358.cbl
GIVEN:
train equipment list contains multiple items
WHEN:
processing equipment items
THEN:
continue processing while equipment index is less than or equal to total equipment quantity
β Consolidated Acceptance Criteria
- Checking current equipment ID → if current equipment ID is different from last processed equipment ID, process VID record and update last equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDChanged(["Start Step"])
E_EquipmentIDChanged(["End Step"])
N_EquipmentIDChanged_Node0{"checking current equipment ID"}:::decision
N_EquipmentIDChanged_Node0_action["if current equipment ID is
different from last processed
equipment ID, process VID record and
update last equipment ID"]:::main N_EquipmentIDChanged_Node0 -- Yes --> N_EquipmentIDChanged_Node0_action N_EquipmentIDChanged_Node0_action --> E_EquipmentIDChanged S_EquipmentIDChanged --> N_EquipmentIDChanged_Node0 N_EquipmentIDChanged_Node0 -- No --> E_EquipmentIDChanged
different from last processed
equipment ID, process VID record and
update last equipment ID"]:::main N_EquipmentIDChanged_Node0 -- Yes --> N_EquipmentIDChanged_Node0_action N_EquipmentIDChanged_Node0_action --> E_EquipmentIDChanged S_EquipmentIDChanged --> N_EquipmentIDChanged_Node0 N_EquipmentIDChanged_Node0 -- No --> E_EquipmentIDChanged
File: GCCE358.cbl
GIVEN:
equipment items are being processed sequentially
WHEN:
checking current equipment ID
THEN:
- If current equipment id is different from last processed equipment id, process vid record
- Update last equipment id
β Consolidated Acceptance Criteria
- Checking for bill of lading information → if US-CCN-KEY is not spaces, process MBL bill of lading record
- The equipment has no associated bill of lading (US-CCN-KEY is spaces) → the equipment status should remain 'E' (Empty)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentHasBillofLading(["Start Step"])
E_EquipmentHasBillofLading(["End Step"])
N_EquipmentHasBillofLading_Node0{"checking for bill of lading
information"}:::decision N_EquipmentHasBillofLading_Node0_action["if US-CCN-KEY is not spaces,
process MBL bill of lading record"]:::main N_EquipmentHasBillofLading_Node0 -- Yes --> N_EquipmentHasBillofLading_Node0_action N_EquipmentHasBillofLading_Node0_action --> E_EquipmentHasBillofLading S_EquipmentHasBillofLading --> N_EquipmentHasBillofLading_Node0 N_EquipmentHasBillofLading_Node1{"The equipment has no associated
bill of lading US-CCN-KEY is spaces"}:::decision N_EquipmentHasBillofLading_Node1_action["The equipment status should remain
E Empty"]:::main N_EquipmentHasBillofLading_Node1 -- Yes --> N_EquipmentHasBillofLading_Node1_action N_EquipmentHasBillofLading_Node1_action --> E_EquipmentHasBillofLading N_EquipmentHasBillofLading_Node0 -- No --> N_EquipmentHasBillofLading_Node1 N_EquipmentHasBillofLading_Node1 -- No --> E_EquipmentHasBillofLading
information"}:::decision N_EquipmentHasBillofLading_Node0_action["if US-CCN-KEY is not spaces,
process MBL bill of lading record"]:::main N_EquipmentHasBillofLading_Node0 -- Yes --> N_EquipmentHasBillofLading_Node0_action N_EquipmentHasBillofLading_Node0_action --> E_EquipmentHasBillofLading S_EquipmentHasBillofLading --> N_EquipmentHasBillofLading_Node0 N_EquipmentHasBillofLading_Node1{"The equipment has no associated
bill of lading US-CCN-KEY is spaces"}:::decision N_EquipmentHasBillofLading_Node1_action["The equipment status should remain
E Empty"]:::main N_EquipmentHasBillofLading_Node1 -- Yes --> N_EquipmentHasBillofLading_Node1_action N_EquipmentHasBillofLading_Node1_action --> E_EquipmentHasBillofLading N_EquipmentHasBillofLading_Node0 -- No --> N_EquipmentHasBillofLading_Node1 N_EquipmentHasBillofLading_Node1 -- No --> E_EquipmentHasBillofLading
File: GCCE358.cbl
GIVEN:
equipment item is being processed
WHEN:
checking for bill of lading information
THEN:
if US-CCN-KEY is not spaces, process MBL bill of lading record
File: GCCE358.cbl
GIVEN:
An equipment item with status 'E' (Empty)
WHEN:
The equipment has no associated bill of lading (US-CCN-KEY is spaces)
THEN:
The equipment status should remain 'E' (Empty)
β Consolidated Acceptance Criteria
- The system checks the processing mode indicator → if the mode is foreground OR background, set success flag and continue processing, otherwise set wrong mode error flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid(["Start Step"])
E_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid(["End Step"])
N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0{"The system checks the processing
mode indicator"}:::decision N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0_action["If the mode is foreground OR
background, set success flag and
continue processing, otherwise set
wrong mode error flag"]:::main N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0 -- Yes --> N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0_action N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0_action --> E_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid S_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid --> N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0 N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0 -- No --> E_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid
mode indicator"}:::decision N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0_action["If the mode is foreground OR
background, set success flag and
continue processing, otherwise set
wrong mode error flag"]:::main N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0 -- Yes --> N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0_action N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0_action --> E_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid S_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid --> N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0 N_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid_Node0 -- No --> E_ValidateProcessingModeCheckiftheprocessingmodeisforegroundorbackgroundreturnerrorifinvalid
File: GCCE358.cbl
GIVEN:
A train equipment processing request is initiated
WHEN:
The system checks the processing mode indicator
THEN:
- If the mode is foreground or background, set success flag
- Continue processing, otherwise set wrong mode error flag
β Consolidated Acceptance Criteria
- The validation check passes → set the success flag to true to allow continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSuccessFlagContinueProcessing(["Start Step"])
E_SetSuccessFlagContinueProcessing(["End Step"])
N_SetSuccessFlagContinueProcessing_Node0{"The validation check passes"}:::decision
N_SetSuccessFlagContinueProcessing_Node0_action["Set the success flag to true to
allow continued processing"]:::main N_SetSuccessFlagContinueProcessing_Node0 -- Yes --> N_SetSuccessFlagContinueProcessing_Node0_action N_SetSuccessFlagContinueProcessing_Node0_action --> E_SetSuccessFlagContinueProcessing S_SetSuccessFlagContinueProcessing --> N_SetSuccessFlagContinueProcessing_Node0 N_SetSuccessFlagContinueProcessing_Node0 -- No --> E_SetSuccessFlagContinueProcessing
allow continued processing"]:::main N_SetSuccessFlagContinueProcessing_Node0 -- Yes --> N_SetSuccessFlagContinueProcessing_Node0_action N_SetSuccessFlagContinueProcessing_Node0_action --> E_SetSuccessFlagContinueProcessing S_SetSuccessFlagContinueProcessing --> N_SetSuccessFlagContinueProcessing_Node0 N_SetSuccessFlagContinueProcessing_Node0 -- No --> E_SetSuccessFlagContinueProcessing
File: GCCE358.cbl
GIVEN:
The processing mode has been validated as either foreground or background
WHEN:
The validation check passes
THEN:
Set the success flag to true to allow continued processing
β Consolidated Acceptance Criteria
- The validation check fails → set the wrong mode error flag to true to prevent continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWrongModeErrorFlag(["Start Step"])
E_SetWrongModeErrorFlag(["End Step"])
N_SetWrongModeErrorFlag_Node0{"The validation check fails"}:::decision
N_SetWrongModeErrorFlag_Node0_action["Set the wrong mode error flag to
true to prevent continued processing"]:::main N_SetWrongModeErrorFlag_Node0 -- Yes --> N_SetWrongModeErrorFlag_Node0_action N_SetWrongModeErrorFlag_Node0_action --> E_SetWrongModeErrorFlag S_SetWrongModeErrorFlag --> N_SetWrongModeErrorFlag_Node0 N_SetWrongModeErrorFlag_Node0 -- No --> E_SetWrongModeErrorFlag
true to prevent continued processing"]:::main N_SetWrongModeErrorFlag_Node0 -- Yes --> N_SetWrongModeErrorFlag_Node0_action N_SetWrongModeErrorFlag_Node0_action --> E_SetWrongModeErrorFlag S_SetWrongModeErrorFlag --> N_SetWrongModeErrorFlag_Node0 N_SetWrongModeErrorFlag_Node0 -- No --> E_SetWrongModeErrorFlag
File: GCCE358.cbl
GIVEN:
The processing mode is neither foreground nor background
WHEN:
The validation check fails
THEN:
Set the wrong mode error flag to true to prevent continued processing
β Consolidated Acceptance Criteria
- The system checks the processing mode indicator → if the mode is foreground, set transmission prefix to 106, otherwise if the mode is background, set transmission prefix to 110
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckProcessingMode(["Start Step"])
E_CheckProcessingMode(["End Step"])
N_CheckProcessingMode_Node0{"The system checks the processing
mode indicator"}:::decision N_CheckProcessingMode_Node0_action["If the mode is foreground, set
transmission prefix to 106,
otherwise if the mode is background,
set transmission prefix to 110"]:::main N_CheckProcessingMode_Node0 -- Yes --> N_CheckProcessingMode_Node0_action N_CheckProcessingMode_Node0_action --> E_CheckProcessingMode S_CheckProcessingMode --> N_CheckProcessingMode_Node0 N_CheckProcessingMode_Node0 -- No --> E_CheckProcessingMode
mode indicator"}:::decision N_CheckProcessingMode_Node0_action["If the mode is foreground, set
transmission prefix to 106,
otherwise if the mode is background,
set transmission prefix to 110"]:::main N_CheckProcessingMode_Node0 -- Yes --> N_CheckProcessingMode_Node0_action N_CheckProcessingMode_Node0_action --> E_CheckProcessingMode S_CheckProcessingMode --> N_CheckProcessingMode_Node0 N_CheckProcessingMode_Node0 -- No --> E_CheckProcessingMode
File: GCCE358.cbl
GIVEN:
A train equipment processing request is initiated
WHEN:
The system checks the processing mode indicator
THEN:
If the mode is foreground, set transmission prefix to 106, otherwise if the mode is background, set transmission prefix to 110
β Consolidated Acceptance Criteria
- The system needs to create a transmission number → retrieve the current machine time and use it as the base transmission 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_GetCurrentMachineTime(["Start Step"])
E_GetCurrentMachineTime(["End Step"])
N_GetCurrentMachineTime_Node0{"The system needs to create a
transmission number"}:::decision N_GetCurrentMachineTime_Node0_action["Retrieve the current machine time
and use it as the base transmission
number"]:::main N_GetCurrentMachineTime_Node0 -- Yes --> N_GetCurrentMachineTime_Node0_action N_GetCurrentMachineTime_Node0_action --> E_GetCurrentMachineTime S_GetCurrentMachineTime --> N_GetCurrentMachineTime_Node0 N_GetCurrentMachineTime_Node0 -- No --> E_GetCurrentMachineTime
transmission number"}:::decision N_GetCurrentMachineTime_Node0_action["Retrieve the current machine time
and use it as the base transmission
number"]:::main N_GetCurrentMachineTime_Node0 -- Yes --> N_GetCurrentMachineTime_Node0_action N_GetCurrentMachineTime_Node0_action --> E_GetCurrentMachineTime S_GetCurrentMachineTime --> N_GetCurrentMachineTime_Node0 N_GetCurrentMachineTime_Node0 -- No --> E_GetCurrentMachineTime
File: GCCE358.cbl
GIVEN:
The transmission prefix has been determined based on processing mode
WHEN:
The system needs to create a transmission number
THEN:
- Retrieve the current machine time
- Use it as the base transmission number
β Consolidated Acceptance Criteria
- The system creates the transmission number → combine the prefix with the machine time to form the complete transmission 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_CombinePrefixMachineTimetoCreateTransmissionNumber(["Start Step"])
E_CombinePrefixMachineTimetoCreateTransmissionNumber(["End Step"])
N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0{"The system creates the transmission
number"}:::decision N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0_action["Combine the prefix with the machine
time to form the complete
transmission number"]:::main N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0 -- Yes --> N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0_action N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0_action --> E_CombinePrefixMachineTimetoCreateTransmissionNumber S_CombinePrefixMachineTimetoCreateTransmissionNumber --> N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0 N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0 -- No --> E_CombinePrefixMachineTimetoCreateTransmissionNumber
number"}:::decision N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0_action["Combine the prefix with the machine
time to form the complete
transmission number"]:::main N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0 -- Yes --> N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0_action N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0_action --> E_CombinePrefixMachineTimetoCreateTransmissionNumber S_CombinePrefixMachineTimetoCreateTransmissionNumber --> N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0 N_CombinePrefixMachineTimetoCreateTransmissionNumber_Node0 -- No --> E_CombinePrefixMachineTimetoCreateTransmissionNumber
File: GCCE358.cbl
GIVEN:
A transmission prefix (106 or 110) and machine time are available
WHEN:
The system creates the transmission number
THEN:
Combine the prefix with the machine time to form the complete transmission number
β Consolidated Acceptance Criteria
- The system attempts to create a transmission record → if the transmission number already exists, increment the number by 1 and retry until a unique number 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_TransmissionNumberGenerated(["Start Step"])
E_TransmissionNumberGenerated(["End Step"])
N_TransmissionNumberGenerated_Node0{"The system attempts to create a
transmission record"}:::decision N_TransmissionNumberGenerated_Node0_action["If the transmission number already
exists, increment the number by 1
and retry until a unique number is
found"]:::main N_TransmissionNumberGenerated_Node0 -- Yes --> N_TransmissionNumberGenerated_Node0_action N_TransmissionNumberGenerated_Node0_action --> E_TransmissionNumberGenerated S_TransmissionNumberGenerated --> N_TransmissionNumberGenerated_Node0 N_TransmissionNumberGenerated_Node0 -- No --> E_TransmissionNumberGenerated
transmission record"}:::decision N_TransmissionNumberGenerated_Node0_action["If the transmission number already
exists, increment the number by 1
and retry until a unique number is
found"]:::main N_TransmissionNumberGenerated_Node0 -- Yes --> N_TransmissionNumberGenerated_Node0_action N_TransmissionNumberGenerated_Node0_action --> E_TransmissionNumberGenerated S_TransmissionNumberGenerated --> N_TransmissionNumberGenerated_Node0 N_TransmissionNumberGenerated_Node0 -- No --> E_TransmissionNumberGenerated
File: GCCE358.cbl
GIVEN:
A transmission number has been generated
WHEN:
The system attempts to create a transmission record
THEN:
- If the transmission number already exists, increment the number by 1
- Retry until a unique number is found
β Consolidated Acceptance Criteria
- The root segment creation process begins → the A9RT transmission segment structure is initialized 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_InitializeRootSegmentStructure(["Start Step"])
E_InitializeRootSegmentStructure(["End Step"])
N_InitializeRootSegmentStructure_Node0{"The root segment creation process
begins"}:::decision N_InitializeRootSegmentStructure_Node0_action["The A9RT transmission segment
structure is initialized to empty
values"]:::main N_InitializeRootSegmentStructure_Node0 -- Yes --> N_InitializeRootSegmentStructure_Node0_action N_InitializeRootSegmentStructure_Node0_action --> E_InitializeRootSegmentStructure S_InitializeRootSegmentStructure --> N_InitializeRootSegmentStructure_Node0 N_InitializeRootSegmentStructure_Node0 -- No --> E_InitializeRootSegmentStructure
begins"}:::decision N_InitializeRootSegmentStructure_Node0_action["The A9RT transmission segment
structure is initialized to empty
values"]:::main N_InitializeRootSegmentStructure_Node0 -- Yes --> N_InitializeRootSegmentStructure_Node0_action N_InitializeRootSegmentStructure_Node0_action --> E_InitializeRootSegmentStructure S_InitializeRootSegmentStructure --> N_InitializeRootSegmentStructure_Node0 N_InitializeRootSegmentStructure_Node0 -- No --> E_InitializeRootSegmentStructure
File: GCCE358.cbl
GIVEN:
An EDI transmission needs to be created
WHEN:
The root segment creation process begins
THEN:
The A9RT transmission segment structure is initialized to empty values
β Consolidated Acceptance Criteria
- Creating the EDI root segment → the transmission number is assigned to the A9RT transmission 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_SetTransmissionNumberfromGeneratedValue(["Start Step"])
E_SetTransmissionNumberfromGeneratedValue(["End Step"])
N_SetTransmissionNumberfromGeneratedValue_Node0{"Creating the EDI root segment"}:::decision
N_SetTransmissionNumberfromGeneratedValue_Node0_action["The transmission number is assigned
to the A9RT transmission number
field"]:::main N_SetTransmissionNumberfromGeneratedValue_Node0 -- Yes --> N_SetTransmissionNumberfromGeneratedValue_Node0_action N_SetTransmissionNumberfromGeneratedValue_Node0_action --> E_SetTransmissionNumberfromGeneratedValue S_SetTransmissionNumberfromGeneratedValue --> N_SetTransmissionNumberfromGeneratedValue_Node0 N_SetTransmissionNumberfromGeneratedValue_Node0 -- No --> E_SetTransmissionNumberfromGeneratedValue
to the A9RT transmission number
field"]:::main N_SetTransmissionNumberfromGeneratedValue_Node0 -- Yes --> N_SetTransmissionNumberfromGeneratedValue_Node0_action N_SetTransmissionNumberfromGeneratedValue_Node0_action --> E_SetTransmissionNumberfromGeneratedValue S_SetTransmissionNumberfromGeneratedValue --> N_SetTransmissionNumberfromGeneratedValue_Node0 N_SetTransmissionNumberfromGeneratedValue_Node0 -- No --> E_SetTransmissionNumberfromGeneratedValue
File: GCCE358.cbl
GIVEN:
A transmission number has been generated based on machine time
WHEN:
Creating the EDI root segment
THEN:
The transmission number is assigned to the A9RT transmission number field
β Consolidated Acceptance Criteria
- Setting the transaction set identifier → the transaction set code is set to '358'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionSetto358(["Start Step"])
E_SetTransactionSetto358(["End Step"])
N_SetTransactionSetto358_Node0{"Setting the transaction set
identifier"}:::decision N_SetTransactionSetto358_Node0_action["The transaction set code is set to
358"]:::main N_SetTransactionSetto358_Node0 -- Yes --> N_SetTransactionSetto358_Node0_action N_SetTransactionSetto358_Node0_action --> E_SetTransactionSetto358 S_SetTransactionSetto358 --> N_SetTransactionSetto358_Node0 N_SetTransactionSetto358_Node0 -- No --> E_SetTransactionSetto358
identifier"}:::decision N_SetTransactionSetto358_Node0_action["The transaction set code is set to
358"]:::main N_SetTransactionSetto358_Node0 -- Yes --> N_SetTransactionSetto358_Node0_action N_SetTransactionSetto358_Node0_action --> E_SetTransactionSetto358 S_SetTransactionSetto358 --> N_SetTransactionSetto358_Node0 N_SetTransactionSetto358_Node0 -- No --> E_SetTransactionSetto358
File: GCCE358.cbl
GIVEN:
An EDI root segment is being created for train equipment data
WHEN:
Setting the transaction set identifier
THEN:
The transaction set code is set to '358'
β Consolidated Acceptance Criteria
- Inserting the segment into the EDI database → the system attempts to insert the A9RT segment using database insert operation
- The system attempts to insert the root segment into the EDI database → the insertion is attempted and the result status is captured for evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttempttoInsertRootSegmentintoEDIDatabase(["Start Step"])
E_AttempttoInsertRootSegmentintoEDIDatabase(["End Step"])
N_AttempttoInsertRootSegmentintoEDIDatabase_Node0{"Inserting the segment into the EDI
database"}:::decision N_AttempttoInsertRootSegmentintoEDIDatabase_Node0_action["The system attempts to insert the
A9RT segment using database insert
operation"]:::main N_AttempttoInsertRootSegmentintoEDIDatabase_Node0 -- Yes --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node0_action N_AttempttoInsertRootSegmentintoEDIDatabase_Node0_action --> E_AttempttoInsertRootSegmentintoEDIDatabase S_AttempttoInsertRootSegmentintoEDIDatabase --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node0 N_AttempttoInsertRootSegmentintoEDIDatabase_Node1{"The system attempts to insert the
root segment into the EDI database"}:::decision N_AttempttoInsertRootSegmentintoEDIDatabase_Node1_action["The insertion is attempted and the
result status is captured for
evaluation"]:::main N_AttempttoInsertRootSegmentintoEDIDatabase_Node1 -- Yes --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node1_action N_AttempttoInsertRootSegmentintoEDIDatabase_Node1_action --> E_AttempttoInsertRootSegmentintoEDIDatabase N_AttempttoInsertRootSegmentintoEDIDatabase_Node0 -- No --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node1 N_AttempttoInsertRootSegmentintoEDIDatabase_Node1 -- No --> E_AttempttoInsertRootSegmentintoEDIDatabase
database"}:::decision N_AttempttoInsertRootSegmentintoEDIDatabase_Node0_action["The system attempts to insert the
A9RT segment using database insert
operation"]:::main N_AttempttoInsertRootSegmentintoEDIDatabase_Node0 -- Yes --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node0_action N_AttempttoInsertRootSegmentintoEDIDatabase_Node0_action --> E_AttempttoInsertRootSegmentintoEDIDatabase S_AttempttoInsertRootSegmentintoEDIDatabase --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node0 N_AttempttoInsertRootSegmentintoEDIDatabase_Node1{"The system attempts to insert the
root segment into the EDI database"}:::decision N_AttempttoInsertRootSegmentintoEDIDatabase_Node1_action["The insertion is attempted and the
result status is captured for
evaluation"]:::main N_AttempttoInsertRootSegmentintoEDIDatabase_Node1 -- Yes --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node1_action N_AttempttoInsertRootSegmentintoEDIDatabase_Node1_action --> E_AttempttoInsertRootSegmentintoEDIDatabase N_AttempttoInsertRootSegmentintoEDIDatabase_Node0 -- No --> N_AttempttoInsertRootSegmentintoEDIDatabase_Node1 N_AttempttoInsertRootSegmentintoEDIDatabase_Node1 -- No --> E_AttempttoInsertRootSegmentintoEDIDatabase
File: GCCE358.cbl
GIVEN:
A complete EDI root segment with transmission number and transaction set
WHEN:
Inserting the segment into the EDI database
THEN:
The system attempts to insert the A9RT segment using database insert operation
File: GCCE358.cbl
GIVEN:
A root segment has been initialized with transmission number and transaction set
WHEN:
The system attempts to insert the root segment into the EDI database
THEN:
- The insertion is attempted
- The result status is captured for evaluation
β Consolidated Acceptance Criteria
- The database insert operation completes → if the status code is not blank, the insertion failed due to duplicate transmission number
- The insertion fails due to duplicate transmission number → the system detects the failure and initiates the duplicate resolution 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_InsertSuccessful(["Start Step"])
E_InsertSuccessful(["End Step"])
N_InsertSuccessful_Node0{"The database insert operation
completes"}:::decision N_InsertSuccessful_Node0_action["If the status code is not blank,
the insertion failed due to
duplicate transmission number"]:::main N_InsertSuccessful_Node0 -- Yes --> N_InsertSuccessful_Node0_action N_InsertSuccessful_Node0_action --> E_InsertSuccessful S_InsertSuccessful --> N_InsertSuccessful_Node0 N_InsertSuccessful_Node1{"The insertion fails due to
duplicate transmission number"}:::decision N_InsertSuccessful_Node1_action["The system detects the failure and
initiates the duplicate resolution
process"]:::main N_InsertSuccessful_Node1 -- Yes --> N_InsertSuccessful_Node1_action N_InsertSuccessful_Node1_action --> E_InsertSuccessful N_InsertSuccessful_Node0 -- No --> N_InsertSuccessful_Node1 N_InsertSuccessful_Node1 -- No --> E_InsertSuccessful
completes"}:::decision N_InsertSuccessful_Node0_action["If the status code is not blank,
the insertion failed due to
duplicate transmission number"]:::main N_InsertSuccessful_Node0 -- Yes --> N_InsertSuccessful_Node0_action N_InsertSuccessful_Node0_action --> E_InsertSuccessful S_InsertSuccessful --> N_InsertSuccessful_Node0 N_InsertSuccessful_Node1{"The insertion fails due to
duplicate transmission number"}:::decision N_InsertSuccessful_Node1_action["The system detects the failure and
initiates the duplicate resolution
process"]:::main N_InsertSuccessful_Node1 -- Yes --> N_InsertSuccessful_Node1_action N_InsertSuccessful_Node1_action --> E_InsertSuccessful N_InsertSuccessful_Node0 -- No --> N_InsertSuccessful_Node1 N_InsertSuccessful_Node1 -- No --> E_InsertSuccessful
File: GCCE358.cbl
GIVEN:
An EDI root segment insertion has been attempted
WHEN:
The database insert operation completes
THEN:
If the status code is not blank, the insertion failed due to duplicate transmission number
File: GCCE358.cbl
GIVEN:
A root segment insertion has been attempted
WHEN:
The insertion fails due to duplicate transmission number
THEN:
- The system detects the failure
- Initiates the duplicate resolution process
β Consolidated Acceptance Criteria
- Resolving the transmission number collision → the transmission number is incremented by 1 and assigned to the root segment
- The system needs to resolve the conflict → the transmission number is incremented by 1 and the insertion process is retried
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementTransmissionNumberby1(["Start Step"])
E_IncrementTransmissionNumberby1(["End Step"])
N_IncrementTransmissionNumberby1_Node0{"Resolving the transmission number
collision"}:::decision N_IncrementTransmissionNumberby1_Node0_action["The transmission number is
incremented by 1 and assigned to the
root segment"]:::main N_IncrementTransmissionNumberby1_Node0 -- Yes --> N_IncrementTransmissionNumberby1_Node0_action N_IncrementTransmissionNumberby1_Node0_action --> E_IncrementTransmissionNumberby1 S_IncrementTransmissionNumberby1 --> N_IncrementTransmissionNumberby1_Node0 N_IncrementTransmissionNumberby1_Node1{"The system needs to resolve the
conflict"}:::decision N_IncrementTransmissionNumberby1_Node1_action["The transmission number is
incremented by 1 and the insertion
process is retried"]:::main N_IncrementTransmissionNumberby1_Node1 -- Yes --> N_IncrementTransmissionNumberby1_Node1_action N_IncrementTransmissionNumberby1_Node1_action --> E_IncrementTransmissionNumberby1 N_IncrementTransmissionNumberby1_Node0 -- No --> N_IncrementTransmissionNumberby1_Node1 N_IncrementTransmissionNumberby1_Node1 -- No --> E_IncrementTransmissionNumberby1
collision"}:::decision N_IncrementTransmissionNumberby1_Node0_action["The transmission number is
incremented by 1 and assigned to the
root segment"]:::main N_IncrementTransmissionNumberby1_Node0 -- Yes --> N_IncrementTransmissionNumberby1_Node0_action N_IncrementTransmissionNumberby1_Node0_action --> E_IncrementTransmissionNumberby1 S_IncrementTransmissionNumberby1 --> N_IncrementTransmissionNumberby1_Node0 N_IncrementTransmissionNumberby1_Node1{"The system needs to resolve the
conflict"}:::decision N_IncrementTransmissionNumberby1_Node1_action["The transmission number is
incremented by 1 and the insertion
process is retried"]:::main N_IncrementTransmissionNumberby1_Node1 -- Yes --> N_IncrementTransmissionNumberby1_Node1_action N_IncrementTransmissionNumberby1_Node1_action --> E_IncrementTransmissionNumberby1 N_IncrementTransmissionNumberby1_Node0 -- No --> N_IncrementTransmissionNumberby1_Node1 N_IncrementTransmissionNumberby1_Node1 -- No --> E_IncrementTransmissionNumberby1
File: GCCE358.cbl
GIVEN:
An EDI root segment insertion failed due to duplicate transmission number
WHEN:
Resolving the transmission number collision
THEN:
- The transmission number is incremented by 1
- Assigned to the root segment
File: GCCE358.cbl
GIVEN:
A duplicate transmission number conflict has been detected
WHEN:
The system needs to resolve the conflict
THEN:
- The transmission number is incremented by 1
- The insertion process is retried
β Consolidated Acceptance Criteria
- Attempting to insert the root segment again → the system continues the insertion retry loop until the status code is blank indicating success
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RootSegmentSuccessfullyCreated(["Start Step"])
E_RootSegmentSuccessfullyCreated(["End Step"])
N_RootSegmentSuccessfullyCreated_Node0{"Attempting to insert the root
segment again"}:::decision N_RootSegmentSuccessfullyCreated_Node0_action["The system continues the insertion
retry loop until the status code is
blank indicating success"]:::main N_RootSegmentSuccessfullyCreated_Node0 -- Yes --> N_RootSegmentSuccessfullyCreated_Node0_action N_RootSegmentSuccessfullyCreated_Node0_action --> E_RootSegmentSuccessfullyCreated S_RootSegmentSuccessfullyCreated --> N_RootSegmentSuccessfullyCreated_Node0 N_RootSegmentSuccessfullyCreated_Node0 -- No --> E_RootSegmentSuccessfullyCreated
segment again"}:::decision N_RootSegmentSuccessfullyCreated_Node0_action["The system continues the insertion
retry loop until the status code is
blank indicating success"]:::main N_RootSegmentSuccessfullyCreated_Node0 -- Yes --> N_RootSegmentSuccessfullyCreated_Node0_action N_RootSegmentSuccessfullyCreated_Node0_action --> E_RootSegmentSuccessfullyCreated S_RootSegmentSuccessfullyCreated --> N_RootSegmentSuccessfullyCreated_Node0 N_RootSegmentSuccessfullyCreated_Node0 -- No --> E_RootSegmentSuccessfullyCreated
File: GCCE358.cbl
GIVEN:
A transmission number collision has been detected and resolved by incrementing
WHEN:
Attempting to insert the root segment again
THEN:
The system continues the insertion retry loop until the status code is blank indicating success
β Consolidated Acceptance Criteria
- The system initializes the root segment → the transmission number is set from machine time, transaction set is set to '358', and the root segment is prepared for insertion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeRootSegmentwithTransmissionNumberandTransactionSet358(["Start Step"])
E_InitializeRootSegmentwithTransmissionNumberandTransactionSet358(["End Step"])
N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0{"The system initializes the root
segment"}:::decision N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0_action["The transmission number is set from
machine time, transaction set is set
to 358 , and the root segment is
prepared for insertion"]:::main N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0 -- Yes --> N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0_action N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0_action --> E_InitializeRootSegmentwithTransmissionNumberandTransactionSet358 S_InitializeRootSegmentwithTransmissionNumberandTransactionSet358 --> N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0 N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0 -- No --> E_InitializeRootSegmentwithTransmissionNumberandTransactionSet358
segment"}:::decision N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0_action["The transmission number is set from
machine time, transaction set is set
to 358 , and the root segment is
prepared for insertion"]:::main N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0 -- Yes --> N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0_action N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0_action --> E_InitializeRootSegmentwithTransmissionNumberandTransactionSet358 S_InitializeRootSegmentwithTransmissionNumberandTransactionSet358 --> N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0 N_InitializeRootSegmentwithTransmissionNumberandTransactionSet358_Node0 -- No --> E_InitializeRootSegmentwithTransmissionNumberandTransactionSet358
File: GCCE358.cbl
GIVEN:
A transmission needs to be created for EDI processing
WHEN:
The system initializes the root segment
THEN:
The transmission number is set from machine time, transaction set is set to '358', and the root segment is prepared for insertion
β Consolidated Acceptance Criteria
- The insertion is successful without conflicts → the root segment is successfully stored in the EDI database and the process 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_RootSegmentSuccessfullyInserted(["Start Step"])
E_RootSegmentSuccessfullyInserted(["End Step"])
N_RootSegmentSuccessfullyInserted_Node0{"The insertion is successful without
conflicts"}:::decision N_RootSegmentSuccessfullyInserted_Node0_action["The root segment is successfully
stored in the EDI database and the
process continues"]:::main N_RootSegmentSuccessfullyInserted_Node0 -- Yes --> N_RootSegmentSuccessfullyInserted_Node0_action N_RootSegmentSuccessfullyInserted_Node0_action --> E_RootSegmentSuccessfullyInserted S_RootSegmentSuccessfullyInserted --> N_RootSegmentSuccessfullyInserted_Node0 N_RootSegmentSuccessfullyInserted_Node0 -- No --> E_RootSegmentSuccessfullyInserted
conflicts"}:::decision N_RootSegmentSuccessfullyInserted_Node0_action["The root segment is successfully
stored in the EDI database and the
process continues"]:::main N_RootSegmentSuccessfullyInserted_Node0 -- Yes --> N_RootSegmentSuccessfullyInserted_Node0_action N_RootSegmentSuccessfullyInserted_Node0_action --> E_RootSegmentSuccessfullyInserted S_RootSegmentSuccessfullyInserted --> N_RootSegmentSuccessfullyInserted_Node0 N_RootSegmentSuccessfullyInserted_Node0 -- No --> E_RootSegmentSuccessfullyInserted
File: GCCE358.cbl
GIVEN:
A root segment insertion has been attempted
WHEN:
The insertion is successful without conflicts
THEN:
- The root segment is successfully stored in the edi database
- The process continues
β Consolidated Acceptance Criteria
- The counting process begins → the bill of lading counter is set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeBillofLadingCountertoZero(["Start Step"])
E_InitializeBillofLadingCountertoZero(["End Step"])
N_InitializeBillofLadingCountertoZero_Node0{"The counting process begins"}:::decision
N_InitializeBillofLadingCountertoZero_Node0_action["The bill of lading counter is set
to zero"]:::main N_InitializeBillofLadingCountertoZero_Node0 -- Yes --> N_InitializeBillofLadingCountertoZero_Node0_action N_InitializeBillofLadingCountertoZero_Node0_action --> E_InitializeBillofLadingCountertoZero S_InitializeBillofLadingCountertoZero --> N_InitializeBillofLadingCountertoZero_Node0 N_InitializeBillofLadingCountertoZero_Node0 -- No --> E_InitializeBillofLadingCountertoZero
to zero"]:::main N_InitializeBillofLadingCountertoZero_Node0 -- Yes --> N_InitializeBillofLadingCountertoZero_Node0_action N_InitializeBillofLadingCountertoZero_Node0_action --> E_InitializeBillofLadingCountertoZero S_InitializeBillofLadingCountertoZero --> N_InitializeBillofLadingCountertoZero_Node0 N_InitializeBillofLadingCountertoZero_Node0 -- No --> E_InitializeBillofLadingCountertoZero
File: GCCE358.cbl
GIVEN:
The system is ready to count bill of lading records
WHEN:
The counting process begins
THEN:
The bill of lading counter is set to zero
β Consolidated Acceptance Criteria
- The equipment loop begins → the equipment index is set to 1 to start from the first 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_StartEquipmentLoopIndex1(["Start Step"])
E_StartEquipmentLoopIndex1(["End Step"])
N_StartEquipmentLoopIndex1_Node0{"The equipment loop begins"}:::decision
N_StartEquipmentLoopIndex1_Node0_action["The equipment index is set to 1 to
start from the first record"]:::main N_StartEquipmentLoopIndex1_Node0 -- Yes --> N_StartEquipmentLoopIndex1_Node0_action N_StartEquipmentLoopIndex1_Node0_action --> E_StartEquipmentLoopIndex1 S_StartEquipmentLoopIndex1 --> N_StartEquipmentLoopIndex1_Node0 N_StartEquipmentLoopIndex1_Node0 -- No --> E_StartEquipmentLoopIndex1
start from the first record"]:::main N_StartEquipmentLoopIndex1_Node0 -- Yes --> N_StartEquipmentLoopIndex1_Node0_action N_StartEquipmentLoopIndex1_Node0_action --> E_StartEquipmentLoopIndex1 S_StartEquipmentLoopIndex1 --> N_StartEquipmentLoopIndex1_Node0 N_StartEquipmentLoopIndex1_Node0 -- No --> E_StartEquipmentLoopIndex1
File: GCCE358.cbl
GIVEN:
Equipment records are available for processing
WHEN:
The equipment loop begins
THEN:
The equipment index is set to 1 to start from the first record
β Consolidated Acceptance Criteria
- The system checks for more records to process → continue processing if index is less than or equal to total equipment quantity, otherwise stop processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmentRecordstoProcess(["Start Step"])
E_MoreEquipmentRecordstoProcess(["End Step"])
N_MoreEquipmentRecordstoProcess_Node0{"The system checks for more records
to process"}:::decision N_MoreEquipmentRecordstoProcess_Node0_action["Continue processing if index is
less than or equal to total
equipment quantity, otherwise stop
processing"]:::main N_MoreEquipmentRecordstoProcess_Node0 -- Yes --> N_MoreEquipmentRecordstoProcess_Node0_action N_MoreEquipmentRecordstoProcess_Node0_action --> E_MoreEquipmentRecordstoProcess S_MoreEquipmentRecordstoProcess --> N_MoreEquipmentRecordstoProcess_Node0 N_MoreEquipmentRecordstoProcess_Node0 -- No --> E_MoreEquipmentRecordstoProcess
to process"}:::decision N_MoreEquipmentRecordstoProcess_Node0_action["Continue processing if index is
less than or equal to total
equipment quantity, otherwise stop
processing"]:::main N_MoreEquipmentRecordstoProcess_Node0 -- Yes --> N_MoreEquipmentRecordstoProcess_Node0_action N_MoreEquipmentRecordstoProcess_Node0_action --> E_MoreEquipmentRecordstoProcess S_MoreEquipmentRecordstoProcess --> N_MoreEquipmentRecordstoProcess_Node0 N_MoreEquipmentRecordstoProcess_Node0 -- No --> E_MoreEquipmentRecordstoProcess
File: GCCE358.cbl
GIVEN:
An equipment index and total equipment quantity are available
WHEN:
The system checks for more records to process
THEN:
Continue processing if index is less than or equal to total equipment quantity, otherwise stop processing
β Consolidated Acceptance Criteria
- If the equipment's US CCN key field → if the US CCN key is not equal to spaces, the equipment has a valid key, otherwise it does not
- The system checks the US CCN key field for the equipment → if the US CCN key is not equal to spaces, the equipment qualifies for bill of lading counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentHasUSCCNKey(["Start Step"])
E_EquipmentHasUSCCNKey(["End Step"])
N_EquipmentHasUSCCNKey_Node0{"The system evaluates the equipment
s US CCN key field"}:::decision N_EquipmentHasUSCCNKey_Node0_action["If the US CCN key is not equal to
spaces, the equipment has a valid
key, otherwise it does not"]:::main N_EquipmentHasUSCCNKey_Node0 -- Yes --> N_EquipmentHasUSCCNKey_Node0_action N_EquipmentHasUSCCNKey_Node0_action --> E_EquipmentHasUSCCNKey S_EquipmentHasUSCCNKey --> N_EquipmentHasUSCCNKey_Node0 N_EquipmentHasUSCCNKey_Node1{"The system checks the US CCN key
field for the equipment"}:::decision N_EquipmentHasUSCCNKey_Node1_action["If the US CCN key is not equal to
spaces, the equipment qualifies for
bill of lading counting"]:::main N_EquipmentHasUSCCNKey_Node1 -- Yes --> N_EquipmentHasUSCCNKey_Node1_action N_EquipmentHasUSCCNKey_Node1_action --> E_EquipmentHasUSCCNKey N_EquipmentHasUSCCNKey_Node0 -- No --> N_EquipmentHasUSCCNKey_Node1 N_EquipmentHasUSCCNKey_Node1 -- No --> E_EquipmentHasUSCCNKey
s US CCN key field"}:::decision N_EquipmentHasUSCCNKey_Node0_action["If the US CCN key is not equal to
spaces, the equipment has a valid
key, otherwise it does not"]:::main N_EquipmentHasUSCCNKey_Node0 -- Yes --> N_EquipmentHasUSCCNKey_Node0_action N_EquipmentHasUSCCNKey_Node0_action --> E_EquipmentHasUSCCNKey S_EquipmentHasUSCCNKey --> N_EquipmentHasUSCCNKey_Node0 N_EquipmentHasUSCCNKey_Node1{"The system checks the US CCN key
field for the equipment"}:::decision N_EquipmentHasUSCCNKey_Node1_action["If the US CCN key is not equal to
spaces, the equipment qualifies for
bill of lading counting"]:::main N_EquipmentHasUSCCNKey_Node1 -- Yes --> N_EquipmentHasUSCCNKey_Node1_action N_EquipmentHasUSCCNKey_Node1_action --> E_EquipmentHasUSCCNKey N_EquipmentHasUSCCNKey_Node0 -- No --> N_EquipmentHasUSCCNKey_Node1 N_EquipmentHasUSCCNKey_Node1 -- No --> E_EquipmentHasUSCCNKey
File: GCCE358.cbl
GIVEN:
An equipment record at the current index position
WHEN:
The system evaluates the equipment's US CCN key field
THEN:
If the US CCN key is not equal to spaces, the equipment has a valid key, otherwise it does not
File: GCCE358.cbl
GIVEN:
An equipment record is being processed for bill of lading counting
WHEN:
The system checks the US CCN key field for the equipment
THEN:
If the US CCN key is not equal to spaces, the equipment qualifies for bill of lading counting
β Consolidated Acceptance Criteria
- The system processes this equipment record → the bill of lading counter is increased 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_IncrementBillofLadingCounter(["Start Step"])
E_IncrementBillofLadingCounter(["End Step"])
N_IncrementBillofLadingCounter_Node0{"The system processes this equipment
record"}:::decision N_IncrementBillofLadingCounter_Node0_action["The bill of lading counter is
increased by 1"]:::main N_IncrementBillofLadingCounter_Node0 -- Yes --> N_IncrementBillofLadingCounter_Node0_action N_IncrementBillofLadingCounter_Node0_action --> E_IncrementBillofLadingCounter S_IncrementBillofLadingCounter --> N_IncrementBillofLadingCounter_Node0 N_IncrementBillofLadingCounter_Node0 -- No --> E_IncrementBillofLadingCounter
record"}:::decision N_IncrementBillofLadingCounter_Node0_action["The bill of lading counter is
increased by 1"]:::main N_IncrementBillofLadingCounter_Node0 -- Yes --> N_IncrementBillofLadingCounter_Node0_action N_IncrementBillofLadingCounter_Node0_action --> E_IncrementBillofLadingCounter S_IncrementBillofLadingCounter --> N_IncrementBillofLadingCounter_Node0 N_IncrementBillofLadingCounter_Node0 -- No --> E_IncrementBillofLadingCounter
File: GCCE358.cbl
GIVEN:
An equipment record with a valid US CCN key (not spaces)
WHEN:
The system processes this equipment record
THEN:
The bill of lading counter is increased by 1
β Consolidated Acceptance Criteria
- The system moves to the next record → the equipment index is 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_MovetoNextEquipmentRecord(["Start Step"])
E_MovetoNextEquipmentRecord(["End Step"])
N_MovetoNextEquipmentRecord_Node0{"The system moves to the next record"}:::decision
N_MovetoNextEquipmentRecord_Node0_action["The equipment index is incremented
by 1"]:::main N_MovetoNextEquipmentRecord_Node0 -- Yes --> N_MovetoNextEquipmentRecord_Node0_action N_MovetoNextEquipmentRecord_Node0_action --> E_MovetoNextEquipmentRecord S_MovetoNextEquipmentRecord --> N_MovetoNextEquipmentRecord_Node0 N_MovetoNextEquipmentRecord_Node0 -- No --> E_MovetoNextEquipmentRecord
by 1"]:::main N_MovetoNextEquipmentRecord_Node0 -- Yes --> N_MovetoNextEquipmentRecord_Node0_action N_MovetoNextEquipmentRecord_Node0_action --> E_MovetoNextEquipmentRecord S_MovetoNextEquipmentRecord --> N_MovetoNextEquipmentRecord_Node0 N_MovetoNextEquipmentRecord_Node0 -- No --> E_MovetoNextEquipmentRecord
File: GCCE358.cbl
GIVEN:
The current equipment record has been processed
WHEN:
The system moves to the next record
THEN:
The equipment index is incremented by 1
β Consolidated Acceptance Criteria
- M10 manifest processing begins → the M10 segment structure is initialized to clear any previous 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_InitializeM10SegmentStructure(["Start Step"])
E_InitializeM10SegmentStructure(["End Step"])
N_InitializeM10SegmentStructure_Node0{"M10 manifest processing begins"}:::decision
N_InitializeM10SegmentStructure_Node0_action["The M10 segment structure is
initialized to clear any previous
data"]:::main N_InitializeM10SegmentStructure_Node0 -- Yes --> N_InitializeM10SegmentStructure_Node0_action N_InitializeM10SegmentStructure_Node0_action --> E_InitializeM10SegmentStructure S_InitializeM10SegmentStructure --> N_InitializeM10SegmentStructure_Node0 N_InitializeM10SegmentStructure_Node0 -- No --> E_InitializeM10SegmentStructure
initialized to clear any previous
data"]:::main N_InitializeM10SegmentStructure_Node0 -- Yes --> N_InitializeM10SegmentStructure_Node0_action N_InitializeM10SegmentStructure_Node0_action --> E_InitializeM10SegmentStructure S_InitializeM10SegmentStructure --> N_InitializeM10SegmentStructure_Node0 N_InitializeM10SegmentStructure_Node0 -- No --> E_InitializeM10SegmentStructure
File: GCCE358.cbl
GIVEN:
The system needs to create a new M10 manifest segment
WHEN:
M10 manifest processing begins
THEN:
The M10 segment structure is initialized to clear any previous data
β Consolidated Acceptance Criteria
- The segment identifier needs to be set → the identifier is set to 'M10'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetM10Identifier(["Start Step"])
E_SetM10Identifier(["End Step"])
N_SetM10Identifier_Node0{"The segment identifier needs to be
set"}:::decision N_SetM10Identifier_Node0_action["The identifier is set to M10"]:::main N_SetM10Identifier_Node0 -- Yes --> N_SetM10Identifier_Node0_action N_SetM10Identifier_Node0_action --> E_SetM10Identifier S_SetM10Identifier --> N_SetM10Identifier_Node0 N_SetM10Identifier_Node0 -- No --> E_SetM10Identifier
set"}:::decision N_SetM10Identifier_Node0_action["The identifier is set to M10"]:::main N_SetM10Identifier_Node0 -- Yes --> N_SetM10Identifier_Node0_action N_SetM10Identifier_Node0_action --> E_SetM10Identifier S_SetM10Identifier --> N_SetM10Identifier_Node0 N_SetM10Identifier_Node0 -- No --> E_SetM10Identifier
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created
WHEN:
The segment identifier needs to be set
THEN:
The identifier is set to 'M10'
β Consolidated Acceptance Criteria
- The SCAC code needs to be assigned → the SCAC code is set to 'CPRS' for Canadian Pacific Railway
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSCACCodetoCPRS(["Start Step"])
E_SetSCACCodetoCPRS(["End Step"])
N_SetSCACCodetoCPRS_Node0{"The SCAC code needs to be assigned"}:::decision
N_SetSCACCodetoCPRS_Node0_action["The SCAC code is set to CPRS for
Canadian Pacific Railway"]:::main N_SetSCACCodetoCPRS_Node0 -- Yes --> N_SetSCACCodetoCPRS_Node0_action N_SetSCACCodetoCPRS_Node0_action --> E_SetSCACCodetoCPRS S_SetSCACCodetoCPRS --> N_SetSCACCodetoCPRS_Node0 N_SetSCACCodetoCPRS_Node0 -- No --> E_SetSCACCodetoCPRS
Canadian Pacific Railway"]:::main N_SetSCACCodetoCPRS_Node0 -- Yes --> N_SetSCACCodetoCPRS_Node0_action N_SetSCACCodetoCPRS_Node0_action --> E_SetSCACCodetoCPRS S_SetSCACCodetoCPRS --> N_SetSCACCodetoCPRS_Node0 N_SetSCACCodetoCPRS_Node0 -- No --> E_SetSCACCodetoCPRS
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created for rail transport
WHEN:
The SCAC code needs to be assigned
THEN:
The SCAC code is set to 'CPRS' for Canadian Pacific Railway
β Consolidated Acceptance Criteria
- The transport type code needs to be assigned → the transport type code is set to 'R' to indicate rail transport
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransportTypeCodetoRforRail(["Start Step"])
E_SetTransportTypeCodetoRforRail(["End Step"])
N_SetTransportTypeCodetoRforRail_Node0{"The transport type code needs to be
assigned"}:::decision N_SetTransportTypeCodetoRforRail_Node0_action["The transport type code is set to R
to indicate rail transport"]:::main N_SetTransportTypeCodetoRforRail_Node0 -- Yes --> N_SetTransportTypeCodetoRforRail_Node0_action N_SetTransportTypeCodetoRforRail_Node0_action --> E_SetTransportTypeCodetoRforRail S_SetTransportTypeCodetoRforRail --> N_SetTransportTypeCodetoRforRail_Node0 N_SetTransportTypeCodetoRforRail_Node0 -- No --> E_SetTransportTypeCodetoRforRail
assigned"}:::decision N_SetTransportTypeCodetoRforRail_Node0_action["The transport type code is set to R
to indicate rail transport"]:::main N_SetTransportTypeCodetoRforRail_Node0 -- Yes --> N_SetTransportTypeCodetoRforRail_Node0_action N_SetTransportTypeCodetoRforRail_Node0_action --> E_SetTransportTypeCodetoRforRail S_SetTransportTypeCodetoRforRail --> N_SetTransportTypeCodetoRforRail_Node0 N_SetTransportTypeCodetoRforRail_Node0 -- No --> E_SetTransportTypeCodetoRforRail
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created
WHEN:
The transport type code needs to be assigned
THEN:
The transport type code is set to 'R' to indicate rail transport
β Consolidated Acceptance Criteria
- The country code needs to be assigned → the country code is set to 'CA' for Canada
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCountryCodetoCAforCanada(["Start Step"])
E_SetCountryCodetoCAforCanada(["End Step"])
N_SetCountryCodetoCAforCanada_Node0{"The country code needs to be
assigned"}:::decision N_SetCountryCodetoCAforCanada_Node0_action["The country code is set to CA for
Canada"]:::main N_SetCountryCodetoCAforCanada_Node0 -- Yes --> N_SetCountryCodetoCAforCanada_Node0_action N_SetCountryCodetoCAforCanada_Node0_action --> E_SetCountryCodetoCAforCanada S_SetCountryCodetoCAforCanada --> N_SetCountryCodetoCAforCanada_Node0 N_SetCountryCodetoCAforCanada_Node0 -- No --> E_SetCountryCodetoCAforCanada
assigned"}:::decision N_SetCountryCodetoCAforCanada_Node0_action["The country code is set to CA for
Canada"]:::main N_SetCountryCodetoCAforCanada_Node0 -- Yes --> N_SetCountryCodetoCAforCanada_Node0_action N_SetCountryCodetoCAforCanada_Node0_action --> E_SetCountryCodetoCAforCanada S_SetCountryCodetoCAforCanada --> N_SetCountryCodetoCAforCanada_Node0 N_SetCountryCodetoCAforCanada_Node0 -- No --> E_SetCountryCodetoCAforCanada
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created for Canadian rail operations
WHEN:
The country code needs to be assigned
THEN:
The country code is set to 'CA' for Canada
β Consolidated Acceptance Criteria
- The vessel name needs to be assigned → the vessel name is set to the customer train ID from the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetVesselNamefromTrainID(["Start Step"])
E_SetVesselNamefromTrainID(["End Step"])
N_SetVesselNamefromTrainID_Node0{"The vessel name needs to be
assigned"}:::decision N_SetVesselNamefromTrainID_Node0_action["The vessel name is set to the
customer train ID from the train
list"]:::main N_SetVesselNamefromTrainID_Node0 -- Yes --> N_SetVesselNamefromTrainID_Node0_action N_SetVesselNamefromTrainID_Node0_action --> E_SetVesselNamefromTrainID S_SetVesselNamefromTrainID --> N_SetVesselNamefromTrainID_Node0 N_SetVesselNamefromTrainID_Node0 -- No --> E_SetVesselNamefromTrainID
assigned"}:::decision N_SetVesselNamefromTrainID_Node0_action["The vessel name is set to the
customer train ID from the train
list"]:::main N_SetVesselNamefromTrainID_Node0 -- Yes --> N_SetVesselNamefromTrainID_Node0_action N_SetVesselNamefromTrainID_Node0_action --> E_SetVesselNamefromTrainID S_SetVesselNamefromTrainID --> N_SetVesselNamefromTrainID_Node0 N_SetVesselNamefromTrainID_Node0 -- No --> E_SetVesselNamefromTrainID
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created and customer train ID is available
WHEN:
The vessel name needs to be assigned
THEN:
The vessel name is set to the customer train ID from the train list
β Consolidated Acceptance Criteria
- The voyage number needs to be assigned → the voyage number is set to the train creation date from the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetVoyageNumberfromTrainCreationDate(["Start Step"])
E_SetVoyageNumberfromTrainCreationDate(["End Step"])
N_SetVoyageNumberfromTrainCreationDate_Node0{"The voyage number needs to be
assigned"}:::decision N_SetVoyageNumberfromTrainCreationDate_Node0_action["The voyage number is set to the
train creation date from the train
list"]:::main N_SetVoyageNumberfromTrainCreationDate_Node0 -- Yes --> N_SetVoyageNumberfromTrainCreationDate_Node0_action N_SetVoyageNumberfromTrainCreationDate_Node0_action --> E_SetVoyageNumberfromTrainCreationDate S_SetVoyageNumberfromTrainCreationDate --> N_SetVoyageNumberfromTrainCreationDate_Node0 N_SetVoyageNumberfromTrainCreationDate_Node0 -- No --> E_SetVoyageNumberfromTrainCreationDate
assigned"}:::decision N_SetVoyageNumberfromTrainCreationDate_Node0_action["The voyage number is set to the
train creation date from the train
list"]:::main N_SetVoyageNumberfromTrainCreationDate_Node0 -- Yes --> N_SetVoyageNumberfromTrainCreationDate_Node0_action N_SetVoyageNumberfromTrainCreationDate_Node0_action --> E_SetVoyageNumberfromTrainCreationDate S_SetVoyageNumberfromTrainCreationDate --> N_SetVoyageNumberfromTrainCreationDate_Node0 N_SetVoyageNumberfromTrainCreationDate_Node0 -- No --> E_SetVoyageNumberfromTrainCreationDate
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created and train creation date is available
WHEN:
The voyage number needs to be assigned
THEN:
The voyage number is set to the train creation date from the train list
β Consolidated Acceptance Criteria
- The quantity needs to be assigned → the quantity is set to the total count of bills of lading
- P4 segment quantity field needs to be populated → the quantity is set to the bill of lading count 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_SetQuantityfromBillofLadingCount(["Start Step"])
E_SetQuantityfromBillofLadingCount(["End Step"])
N_SetQuantityfromBillofLadingCount_Node0{"The quantity needs to be assigned"}:::decision
N_SetQuantityfromBillofLadingCount_Node0_action["The quantity is set to the total
count of bills of lading"]:::main N_SetQuantityfromBillofLadingCount_Node0 -- Yes --> N_SetQuantityfromBillofLadingCount_Node0_action N_SetQuantityfromBillofLadingCount_Node0_action --> E_SetQuantityfromBillofLadingCount S_SetQuantityfromBillofLadingCount --> N_SetQuantityfromBillofLadingCount_Node0 N_SetQuantityfromBillofLadingCount_Node1{"P4 segment quantity field needs to
be populated"}:::decision N_SetQuantityfromBillofLadingCount_Node1_action["The quantity is set to the bill of
lading count value"]:::main N_SetQuantityfromBillofLadingCount_Node1 -- Yes --> N_SetQuantityfromBillofLadingCount_Node1_action N_SetQuantityfromBillofLadingCount_Node1_action --> E_SetQuantityfromBillofLadingCount N_SetQuantityfromBillofLadingCount_Node0 -- No --> N_SetQuantityfromBillofLadingCount_Node1 N_SetQuantityfromBillofLadingCount_Node1 -- No --> E_SetQuantityfromBillofLadingCount
count of bills of lading"]:::main N_SetQuantityfromBillofLadingCount_Node0 -- Yes --> N_SetQuantityfromBillofLadingCount_Node0_action N_SetQuantityfromBillofLadingCount_Node0_action --> E_SetQuantityfromBillofLadingCount S_SetQuantityfromBillofLadingCount --> N_SetQuantityfromBillofLadingCount_Node0 N_SetQuantityfromBillofLadingCount_Node1{"P4 segment quantity field needs to
be populated"}:::decision N_SetQuantityfromBillofLadingCount_Node1_action["The quantity is set to the bill of
lading count value"]:::main N_SetQuantityfromBillofLadingCount_Node1 -- Yes --> N_SetQuantityfromBillofLadingCount_Node1_action N_SetQuantityfromBillofLadingCount_Node1_action --> E_SetQuantityfromBillofLadingCount N_SetQuantityfromBillofLadingCount_Node0 -- No --> N_SetQuantityfromBillofLadingCount_Node1 N_SetQuantityfromBillofLadingCount_Node1 -- No --> E_SetQuantityfromBillofLadingCount
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created and bill of lading count is calculated
WHEN:
The quantity needs to be assigned
THEN:
The quantity is set to the total count of bills of lading
File: GCCE358.cbl
GIVEN:
Bill of lading count has been calculated from equipment processing
WHEN:
P4 segment quantity field needs to be populated
THEN:
The quantity is set to the bill of lading count value
β Consolidated Acceptance Criteria
- The manifest type code needs to be assigned → the manifest type code is set to 'S' for standard manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestTypeCodetoSforStandard(["Start Step"])
E_SetManifestTypeCodetoSforStandard(["End Step"])
N_SetManifestTypeCodetoSforStandard_Node0{"The manifest type code needs to be
assigned"}:::decision N_SetManifestTypeCodetoSforStandard_Node0_action["The manifest type code is set to S
for standard manifest"]:::main N_SetManifestTypeCodetoSforStandard_Node0 -- Yes --> N_SetManifestTypeCodetoSforStandard_Node0_action N_SetManifestTypeCodetoSforStandard_Node0_action --> E_SetManifestTypeCodetoSforStandard S_SetManifestTypeCodetoSforStandard --> N_SetManifestTypeCodetoSforStandard_Node0 N_SetManifestTypeCodetoSforStandard_Node0 -- No --> E_SetManifestTypeCodetoSforStandard
assigned"}:::decision N_SetManifestTypeCodetoSforStandard_Node0_action["The manifest type code is set to S
for standard manifest"]:::main N_SetManifestTypeCodetoSforStandard_Node0 -- Yes --> N_SetManifestTypeCodetoSforStandard_Node0_action N_SetManifestTypeCodetoSforStandard_Node0_action --> E_SetManifestTypeCodetoSforStandard S_SetManifestTypeCodetoSforStandard --> N_SetManifestTypeCodetoSforStandard_Node0 N_SetManifestTypeCodetoSforStandard_Node0 -- No --> E_SetManifestTypeCodetoSforStandard
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created
WHEN:
The manifest type code needs to be assigned
THEN:
The manifest type code is set to 'S' for standard manifest
β Consolidated Acceptance Criteria
- The conditional response code needs to be assigned → the conditional response code is set to 'Y' to indicate response is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConditionalResponseCodetoY(["Start Step"])
E_SetConditionalResponseCodetoY(["End Step"])
N_SetConditionalResponseCodetoY_Node0{"The conditional response code needs
to be assigned"}:::decision N_SetConditionalResponseCodetoY_Node0_action["The conditional response code is
set to Y to indicate response is
required"]:::main N_SetConditionalResponseCodetoY_Node0 -- Yes --> N_SetConditionalResponseCodetoY_Node0_action N_SetConditionalResponseCodetoY_Node0_action --> E_SetConditionalResponseCodetoY S_SetConditionalResponseCodetoY --> N_SetConditionalResponseCodetoY_Node0 N_SetConditionalResponseCodetoY_Node0 -- No --> E_SetConditionalResponseCodetoY
to be assigned"}:::decision N_SetConditionalResponseCodetoY_Node0_action["The conditional response code is
set to Y to indicate response is
required"]:::main N_SetConditionalResponseCodetoY_Node0 -- Yes --> N_SetConditionalResponseCodetoY_Node0_action N_SetConditionalResponseCodetoY_Node0_action --> E_SetConditionalResponseCodetoY S_SetConditionalResponseCodetoY --> N_SetConditionalResponseCodetoY_Node0 N_SetConditionalResponseCodetoY_Node0 -- No --> E_SetConditionalResponseCodetoY
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created
WHEN:
The conditional response code needs to be assigned
THEN:
The conditional response code is set to 'Y' to indicate response is required
β Consolidated Acceptance Criteria
- The record type needs to be assigned → the record type is set to '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_SetRecordTypetoTRAIN(["Start Step"])
E_SetRecordTypetoTRAIN(["End Step"])
N_SetRecordTypetoTRAIN_Node0{"The record type needs to be
assigned"}:::decision N_SetRecordTypetoTRAIN_Node0_action["The record type is set to TRAIN"]:::main N_SetRecordTypetoTRAIN_Node0 -- Yes --> N_SetRecordTypetoTRAIN_Node0_action N_SetRecordTypetoTRAIN_Node0_action --> E_SetRecordTypetoTRAIN S_SetRecordTypetoTRAIN --> N_SetRecordTypetoTRAIN_Node0 N_SetRecordTypetoTRAIN_Node0 -- No --> E_SetRecordTypetoTRAIN
assigned"}:::decision N_SetRecordTypetoTRAIN_Node0_action["The record type is set to TRAIN"]:::main N_SetRecordTypetoTRAIN_Node0 -- Yes --> N_SetRecordTypetoTRAIN_Node0_action N_SetRecordTypetoTRAIN_Node0_action --> E_SetRecordTypetoTRAIN S_SetRecordTypetoTRAIN --> N_SetRecordTypetoTRAIN_Node0 N_SetRecordTypetoTRAIN_Node0 -- No --> E_SetRecordTypetoTRAIN
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created for train operations
WHEN:
The record type needs to be assigned
THEN:
The record type is set to 'TRAIN'
β Consolidated Acceptance Criteria
- The record number needs to be assigned → the record number is set to the customer train ID from the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecordNumberfromTrainID(["Start Step"])
E_SetRecordNumberfromTrainID(["End Step"])
N_SetRecordNumberfromTrainID_Node0{"The record number needs to be
assigned"}:::decision N_SetRecordNumberfromTrainID_Node0_action["The record number is set to the
customer train ID from the train
list"]:::main N_SetRecordNumberfromTrainID_Node0 -- Yes --> N_SetRecordNumberfromTrainID_Node0_action N_SetRecordNumberfromTrainID_Node0_action --> E_SetRecordNumberfromTrainID S_SetRecordNumberfromTrainID --> N_SetRecordNumberfromTrainID_Node0 N_SetRecordNumberfromTrainID_Node0 -- No --> E_SetRecordNumberfromTrainID
assigned"}:::decision N_SetRecordNumberfromTrainID_Node0_action["The record number is set to the
customer train ID from the train
list"]:::main N_SetRecordNumberfromTrainID_Node0 -- Yes --> N_SetRecordNumberfromTrainID_Node0_action N_SetRecordNumberfromTrainID_Node0_action --> E_SetRecordNumberfromTrainID S_SetRecordNumberfromTrainID --> N_SetRecordNumberfromTrainID_Node0 N_SetRecordNumberfromTrainID_Node0 -- No --> E_SetRecordNumberfromTrainID
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is being created and customer train ID is available
WHEN:
The record number needs to be assigned
THEN:
The record number is set to the customer train ID from the train list
β Consolidated Acceptance Criteria
- The segment needs to be stored for EDI transmission → the M10 segment is inserted into the EDI database with proper sequence numbering
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertM10SegmentintoEDIDatabase(["Start Step"])
E_InsertM10SegmentintoEDIDatabase(["End Step"])
N_InsertM10SegmentintoEDIDatabase_Node0{"The segment needs to be stored for
EDI transmission"}:::decision N_InsertM10SegmentintoEDIDatabase_Node0_action["The M10 segment is inserted into
the EDI database with proper
sequence numbering"]:::main N_InsertM10SegmentintoEDIDatabase_Node0 -- Yes --> N_InsertM10SegmentintoEDIDatabase_Node0_action N_InsertM10SegmentintoEDIDatabase_Node0_action --> E_InsertM10SegmentintoEDIDatabase S_InsertM10SegmentintoEDIDatabase --> N_InsertM10SegmentintoEDIDatabase_Node0 N_InsertM10SegmentintoEDIDatabase_Node0 -- No --> E_InsertM10SegmentintoEDIDatabase
EDI transmission"}:::decision N_InsertM10SegmentintoEDIDatabase_Node0_action["The M10 segment is inserted into
the EDI database with proper
sequence numbering"]:::main N_InsertM10SegmentintoEDIDatabase_Node0 -- Yes --> N_InsertM10SegmentintoEDIDatabase_Node0_action N_InsertM10SegmentintoEDIDatabase_Node0_action --> E_InsertM10SegmentintoEDIDatabase S_InsertM10SegmentintoEDIDatabase --> N_InsertM10SegmentintoEDIDatabase_Node0 N_InsertM10SegmentintoEDIDatabase_Node0 -- No --> E_InsertM10SegmentintoEDIDatabase
File: GCCE358.cbl
GIVEN:
An M10 manifest segment is fully populated with all required data
WHEN:
The segment needs to be stored for EDI transmission
THEN:
The M10 segment is inserted into the EDI database with proper sequence numbering
β Consolidated Acceptance Criteria
- The bill of lading counting process begins → the bill of lading quantity counter is set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeBillofLadingCounttoZero(["Start Step"])
E_InitializeBillofLadingCounttoZero(["End Step"])
N_InitializeBillofLadingCounttoZero_Node0{"The bill of lading counting process
begins"}:::decision N_InitializeBillofLadingCounttoZero_Node0_action["The bill of lading quantity counter
is set to zero"]:::main N_InitializeBillofLadingCounttoZero_Node0 -- Yes --> N_InitializeBillofLadingCounttoZero_Node0_action N_InitializeBillofLadingCounttoZero_Node0_action --> E_InitializeBillofLadingCounttoZero S_InitializeBillofLadingCounttoZero --> N_InitializeBillofLadingCounttoZero_Node0 N_InitializeBillofLadingCounttoZero_Node0 -- No --> E_InitializeBillofLadingCounttoZero
begins"}:::decision N_InitializeBillofLadingCounttoZero_Node0_action["The bill of lading quantity counter
is set to zero"]:::main N_InitializeBillofLadingCounttoZero_Node0 -- Yes --> N_InitializeBillofLadingCounttoZero_Node0_action N_InitializeBillofLadingCounttoZero_Node0_action --> E_InitializeBillofLadingCounttoZero S_InitializeBillofLadingCounttoZero --> N_InitializeBillofLadingCounttoZero_Node0 N_InitializeBillofLadingCounttoZero_Node0 -- No --> E_InitializeBillofLadingCounttoZero
File: GCCE358.cbl
GIVEN:
The system is ready to process equipment records for quantity calculation
WHEN:
The bill of lading counting process begins
THEN:
The bill of lading quantity counter is set to zero
β Consolidated Acceptance Criteria
- The system processes equipment for bill of lading counting → the system loops through each equipment record from position 1 to the total equipment quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartEquipmentLoop(["Start Step"])
E_StartEquipmentLoop(["End Step"])
N_StartEquipmentLoop_Node0{"The system processes equipment for
bill of lading counting"}:::decision N_StartEquipmentLoop_Node0_action["The system loops through each
equipment record from position 1 to
the total equipment quantity"]:::main N_StartEquipmentLoop_Node0 -- Yes --> N_StartEquipmentLoop_Node0_action N_StartEquipmentLoop_Node0_action --> E_StartEquipmentLoop S_StartEquipmentLoop --> N_StartEquipmentLoop_Node0 N_StartEquipmentLoop_Node0 -- No --> E_StartEquipmentLoop
bill of lading counting"}:::decision N_StartEquipmentLoop_Node0_action["The system loops through each
equipment record from position 1 to
the total equipment quantity"]:::main N_StartEquipmentLoop_Node0 -- Yes --> N_StartEquipmentLoop_Node0_action N_StartEquipmentLoop_Node0_action --> E_StartEquipmentLoop S_StartEquipmentLoop --> N_StartEquipmentLoop_Node0 N_StartEquipmentLoop_Node0 -- No --> E_StartEquipmentLoop
File: GCCE358.cbl
GIVEN:
A train list contains multiple equipment records
WHEN:
The system processes equipment for bill of lading counting
THEN:
The system loops through each equipment record from position 1 to the total equipment quantity
β Consolidated Acceptance Criteria
- The current equipment index is compared against the total equipment quantity → if the index is less than or equal to the total quantity, continue processing, otherwise stop the loop
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmentRecords(["Start Step"])
E_MoreEquipmentRecords(["End Step"])
N_MoreEquipmentRecords_Node0{"The current equipment index is
compared against the total equipment
quantity"}:::decision N_MoreEquipmentRecords_Node0_action["If the index is less than or equal
to the total quantity, continue
processing, otherwise stop the loop"]:::main N_MoreEquipmentRecords_Node0 -- Yes --> N_MoreEquipmentRecords_Node0_action N_MoreEquipmentRecords_Node0_action --> E_MoreEquipmentRecords S_MoreEquipmentRecords --> N_MoreEquipmentRecords_Node0 N_MoreEquipmentRecords_Node0 -- No --> E_MoreEquipmentRecords
compared against the total equipment
quantity"}:::decision N_MoreEquipmentRecords_Node0_action["If the index is less than or equal
to the total quantity, continue
processing, otherwise stop the loop"]:::main N_MoreEquipmentRecords_Node0 -- Yes --> N_MoreEquipmentRecords_Node0_action N_MoreEquipmentRecords_Node0_action --> E_MoreEquipmentRecords S_MoreEquipmentRecords --> N_MoreEquipmentRecords_Node0 N_MoreEquipmentRecords_Node0 -- No --> E_MoreEquipmentRecords
File: GCCE358.cbl
GIVEN:
The system is processing equipment records in a loop
WHEN:
The current equipment index is compared against the total equipment quantity
THEN:
If the index is less than or equal to the total quantity, continue processing, otherwise stop the loop
β Consolidated Acceptance Criteria
- The system processes this equipment for counting → the bill of lading quantity counter is increased 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_IncrementBillofLadingCountby1(["Start Step"])
E_IncrementBillofLadingCountby1(["End Step"])
N_IncrementBillofLadingCountby1_Node0{"The system processes this equipment
for counting"}:::decision N_IncrementBillofLadingCountby1_Node0_action["The bill of lading quantity counter
is increased by 1"]:::main N_IncrementBillofLadingCountby1_Node0 -- Yes --> N_IncrementBillofLadingCountby1_Node0_action N_IncrementBillofLadingCountby1_Node0_action --> E_IncrementBillofLadingCountby1 S_IncrementBillofLadingCountby1 --> N_IncrementBillofLadingCountby1_Node0 N_IncrementBillofLadingCountby1_Node0 -- No --> E_IncrementBillofLadingCountby1
for counting"}:::decision N_IncrementBillofLadingCountby1_Node0_action["The bill of lading quantity counter
is increased by 1"]:::main N_IncrementBillofLadingCountby1_Node0 -- Yes --> N_IncrementBillofLadingCountby1_Node0_action N_IncrementBillofLadingCountby1_Node0_action --> E_IncrementBillofLadingCountby1 S_IncrementBillofLadingCountby1 --> N_IncrementBillofLadingCountby1_Node0 N_IncrementBillofLadingCountby1_Node0 -- No --> E_IncrementBillofLadingCountby1
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An equipment record has a valid US CCN key that is not spaces
WHEN:
The system processes this equipment for counting
THEN:
The bill of lading quantity counter is increased by 1
β Consolidated Acceptance Criteria
- The system creates the M10 manifest record → the M10 quantity field is set to the calculated bill of lading count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCounttoM10ManifestQuantity(["Start Step"])
E_ApplyCounttoM10ManifestQuantity(["End Step"])
N_ApplyCounttoM10ManifestQuantity_Node0{"The system creates the M10 manifest
record"}:::decision N_ApplyCounttoM10ManifestQuantity_Node0_action["The M10 quantity field is set to
the calculated bill of lading count"]:::main N_ApplyCounttoM10ManifestQuantity_Node0 -- Yes --> N_ApplyCounttoM10ManifestQuantity_Node0_action N_ApplyCounttoM10ManifestQuantity_Node0_action --> E_ApplyCounttoM10ManifestQuantity S_ApplyCounttoM10ManifestQuantity --> N_ApplyCounttoM10ManifestQuantity_Node0 N_ApplyCounttoM10ManifestQuantity_Node0 -- No --> E_ApplyCounttoM10ManifestQuantity
record"}:::decision N_ApplyCounttoM10ManifestQuantity_Node0_action["The M10 quantity field is set to
the calculated bill of lading count"]:::main N_ApplyCounttoM10ManifestQuantity_Node0 -- Yes --> N_ApplyCounttoM10ManifestQuantity_Node0_action N_ApplyCounttoM10ManifestQuantity_Node0_action --> E_ApplyCounttoM10ManifestQuantity S_ApplyCounttoM10ManifestQuantity --> N_ApplyCounttoM10ManifestQuantity_Node0 N_ApplyCounttoM10ManifestQuantity_Node0 -- No --> E_ApplyCounttoM10ManifestQuantity
File: GCCE358.cbl
GIVEN:
The bill of lading count has been calculated from all equipment records
WHEN:
The system creates the M10 manifest record
THEN:
The M10 quantity field is set to the calculated bill of lading count
β Consolidated Acceptance Criteria
- The system creates the P4 port record → the P4 quantity field is set to the calculated bill of lading count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCounttoP4PortQuantity(["Start Step"])
E_ApplyCounttoP4PortQuantity(["End Step"])
N_ApplyCounttoP4PortQuantity_Node0{"The system creates the P4 port
record"}:::decision N_ApplyCounttoP4PortQuantity_Node0_action["The P4 quantity field is set to the
calculated bill of lading count"]:::main N_ApplyCounttoP4PortQuantity_Node0 -- Yes --> N_ApplyCounttoP4PortQuantity_Node0_action N_ApplyCounttoP4PortQuantity_Node0_action --> E_ApplyCounttoP4PortQuantity S_ApplyCounttoP4PortQuantity --> N_ApplyCounttoP4PortQuantity_Node0 N_ApplyCounttoP4PortQuantity_Node0 -- No --> E_ApplyCounttoP4PortQuantity
record"}:::decision N_ApplyCounttoP4PortQuantity_Node0_action["The P4 quantity field is set to the
calculated bill of lading count"]:::main N_ApplyCounttoP4PortQuantity_Node0 -- Yes --> N_ApplyCounttoP4PortQuantity_Node0_action N_ApplyCounttoP4PortQuantity_Node0_action --> E_ApplyCounttoP4PortQuantity S_ApplyCounttoP4PortQuantity --> N_ApplyCounttoP4PortQuantity_Node0 N_ApplyCounttoP4PortQuantity_Node0 -- No --> E_ApplyCounttoP4PortQuantity
File: GCCE358.cbl
GIVEN:
The bill of lading count has been calculated from all equipment records
WHEN:
The system creates the P4 port record
THEN:
The P4 quantity field is set to the calculated bill of lading count
β Consolidated Acceptance Criteria
- P4 segment processing begins → the P4 segment structure is initialized and the identifier is set to 'P4'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeP4SegmentStructure(["Start Step"])
E_InitializeP4SegmentStructure(["End Step"])
N_InitializeP4SegmentStructure_Node0{"P4 segment processing begins"}:::decision
N_InitializeP4SegmentStructure_Node0_action["The P4 segment structure is
initialized and the identifier is
set to P4"]:::main N_InitializeP4SegmentStructure_Node0 -- Yes --> N_InitializeP4SegmentStructure_Node0_action N_InitializeP4SegmentStructure_Node0_action --> E_InitializeP4SegmentStructure S_InitializeP4SegmentStructure --> N_InitializeP4SegmentStructure_Node0 N_InitializeP4SegmentStructure_Node0 -- No --> E_InitializeP4SegmentStructure
initialized and the identifier is
set to P4"]:::main N_InitializeP4SegmentStructure_Node0 -- Yes --> N_InitializeP4SegmentStructure_Node0_action N_InitializeP4SegmentStructure_Node0_action --> E_InitializeP4SegmentStructure S_InitializeP4SegmentStructure --> N_InitializeP4SegmentStructure_Node0 N_InitializeP4SegmentStructure_Node0 -- No --> E_InitializeP4SegmentStructure
File: GCCE358.cbl
GIVEN:
The system is processing port information for EDI transmission
WHEN:
P4 segment processing begins
THEN:
- The p4 segment structure is initialized
- The identifier is set to 'p4'
β Consolidated Acceptance Criteria
- P4 segment is being populated with location details → the departure location ID is set from the train's origin service center
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDepartureLocationIDfromTrainData(["Start Step"])
E_SetDepartureLocationIDfromTrainData(["End Step"])
N_SetDepartureLocationIDfromTrainData_Node0{"P4 segment is being populated with
location details"}:::decision N_SetDepartureLocationIDfromTrainData_Node0_action["The departure location ID is set
from the train s origin service
center"]:::main N_SetDepartureLocationIDfromTrainData_Node0 -- Yes --> N_SetDepartureLocationIDfromTrainData_Node0_action N_SetDepartureLocationIDfromTrainData_Node0_action --> E_SetDepartureLocationIDfromTrainData S_SetDepartureLocationIDfromTrainData --> N_SetDepartureLocationIDfromTrainData_Node0 N_SetDepartureLocationIDfromTrainData_Node0 -- No --> E_SetDepartureLocationIDfromTrainData
location details"}:::decision N_SetDepartureLocationIDfromTrainData_Node0_action["The departure location ID is set
from the train s origin service
center"]:::main N_SetDepartureLocationIDfromTrainData_Node0 -- Yes --> N_SetDepartureLocationIDfromTrainData_Node0_action N_SetDepartureLocationIDfromTrainData_Node0_action --> E_SetDepartureLocationIDfromTrainData S_SetDepartureLocationIDfromTrainData --> N_SetDepartureLocationIDfromTrainData_Node0 N_SetDepartureLocationIDfromTrainData_Node0 -- No --> E_SetDepartureLocationIDfromTrainData
File: GCCE358.cbl
GIVEN:
Train data contains origin service center information
WHEN:
P4 segment is being populated with location details
THEN:
The departure location ID is set from the train's origin service center
β Consolidated Acceptance Criteria
- P4 segment requires departure date information → the estimated departure date is extracted and moved to temporary date field 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_ExtractEstimatedDepartureDate(["Start Step"])
E_ExtractEstimatedDepartureDate(["End Step"])
N_ExtractEstimatedDepartureDate_Node0{"P4 segment requires departure date
information"}:::decision N_ExtractEstimatedDepartureDate_Node0_action["The estimated departure date is
extracted and moved to temporary
date field for processing"]:::main N_ExtractEstimatedDepartureDate_Node0 -- Yes --> N_ExtractEstimatedDepartureDate_Node0_action N_ExtractEstimatedDepartureDate_Node0_action --> E_ExtractEstimatedDepartureDate S_ExtractEstimatedDepartureDate --> N_ExtractEstimatedDepartureDate_Node0 N_ExtractEstimatedDepartureDate_Node0 -- No --> E_ExtractEstimatedDepartureDate
information"}:::decision N_ExtractEstimatedDepartureDate_Node0_action["The estimated departure date is
extracted and moved to temporary
date field for processing"]:::main N_ExtractEstimatedDepartureDate_Node0 -- Yes --> N_ExtractEstimatedDepartureDate_Node0_action N_ExtractEstimatedDepartureDate_Node0_action --> E_ExtractEstimatedDepartureDate S_ExtractEstimatedDepartureDate --> N_ExtractEstimatedDepartureDate_Node0 N_ExtractEstimatedDepartureDate_Node0 -- No --> E_ExtractEstimatedDepartureDate
File: GCCE358.cbl
GIVEN:
Train data contains estimated departure date information
WHEN:
P4 segment requires departure date information
THEN:
- The estimated departure date is extracted
- Moved to temporary date field for processing
β Consolidated Acceptance Criteria
- Century calculation is required for the departure date → if the year is less than 70, century is set to 20 (2000s), otherwise century is set to 19 (1900s)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCenturyLogicforDate(["Start Step"])
E_ApplyCenturyLogicforDate(["End Step"])
N_ApplyCenturyLogicforDate_Node0{"Century calculation is required for
the departure date"}:::decision N_ApplyCenturyLogicforDate_Node0_action["If the year is less than 70,
century is set to 20 2000s,
otherwise century is set to 19 1900s"]:::main N_ApplyCenturyLogicforDate_Node0 -- Yes --> N_ApplyCenturyLogicforDate_Node0_action N_ApplyCenturyLogicforDate_Node0_action --> E_ApplyCenturyLogicforDate S_ApplyCenturyLogicforDate --> N_ApplyCenturyLogicforDate_Node0 N_ApplyCenturyLogicforDate_Node0 -- No --> E_ApplyCenturyLogicforDate
the departure date"}:::decision N_ApplyCenturyLogicforDate_Node0_action["If the year is less than 70,
century is set to 20 2000s,
otherwise century is set to 19 1900s"]:::main N_ApplyCenturyLogicforDate_Node0 -- Yes --> N_ApplyCenturyLogicforDate_Node0_action N_ApplyCenturyLogicforDate_Node0_action --> E_ApplyCenturyLogicforDate S_ApplyCenturyLogicforDate --> N_ApplyCenturyLogicforDate_Node0 N_ApplyCenturyLogicforDate_Node0 -- No --> E_ApplyCenturyLogicforDate
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
The departure date is valid and not empty or zero
WHEN:
Century calculation is required for the departure date
THEN:
If the year is less than 70, century is set to 20 (2000s), otherwise century is set to 19 (1900s)
β Consolidated Acceptance Criteria
- Date validation is performed → the century component is set to 0 to indicate invalid date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCenturyto0forInvalidDate(["Start Step"])
E_SetCenturyto0forInvalidDate(["End Step"])
N_SetCenturyto0forInvalidDate_Node0{"Date validation is performed"}:::decision
N_SetCenturyto0forInvalidDate_Node0_action["The century component is set to 0
to indicate invalid date"]:::main N_SetCenturyto0forInvalidDate_Node0 -- Yes --> N_SetCenturyto0forInvalidDate_Node0_action N_SetCenturyto0forInvalidDate_Node0_action --> E_SetCenturyto0forInvalidDate S_SetCenturyto0forInvalidDate --> N_SetCenturyto0forInvalidDate_Node0 N_SetCenturyto0forInvalidDate_Node0 -- No --> E_SetCenturyto0forInvalidDate
to indicate invalid date"]:::main N_SetCenturyto0forInvalidDate_Node0 -- Yes --> N_SetCenturyto0forInvalidDate_Node0_action N_SetCenturyto0forInvalidDate_Node0_action --> E_SetCenturyto0forInvalidDate S_SetCenturyto0forInvalidDate --> N_SetCenturyto0forInvalidDate_Node0 N_SetCenturyto0forInvalidDate_Node0 -- No --> E_SetCenturyto0forInvalidDate
File: GCCE358.cbl
GIVEN:
The departure date is empty, spaces, or zero
WHEN:
Date validation is performed
THEN:
The century component is set to 0 to indicate invalid date
β Consolidated Acceptance Criteria
- P4 segment time field needs to be populated → the time field is 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_SetEstimatedTimeofArrival(["Start Step"])
E_SetEstimatedTimeofArrival(["End Step"])
N_SetEstimatedTimeofArrival_Node0{"P4 segment time field needs to be
populated"}:::decision N_SetEstimatedTimeofArrival_Node0_action["The time field is set from the
train s estimated time of arrival"]:::main N_SetEstimatedTimeofArrival_Node0 -- Yes --> N_SetEstimatedTimeofArrival_Node0_action N_SetEstimatedTimeofArrival_Node0_action --> E_SetEstimatedTimeofArrival S_SetEstimatedTimeofArrival --> N_SetEstimatedTimeofArrival_Node0 N_SetEstimatedTimeofArrival_Node0 -- No --> E_SetEstimatedTimeofArrival
populated"}:::decision N_SetEstimatedTimeofArrival_Node0_action["The time field is set from the
train s estimated time of arrival"]:::main N_SetEstimatedTimeofArrival_Node0 -- Yes --> N_SetEstimatedTimeofArrival_Node0_action N_SetEstimatedTimeofArrival_Node0_action --> E_SetEstimatedTimeofArrival S_SetEstimatedTimeofArrival --> N_SetEstimatedTimeofArrival_Node0 N_SetEstimatedTimeofArrival_Node0 -- No --> E_SetEstimatedTimeofArrival
File: GCCE358.cbl
GIVEN:
Train data contains estimated time of arrival information
WHEN:
P4 segment time field needs to be populated
THEN:
The time field is set from the train's estimated time of arrival
β Consolidated Acceptance Criteria
- P4 segment ID code field needs to be populated → the ID code field is set from the train's FIRMS 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_SetFIRMSCodefromTrainData(["Start Step"])
E_SetFIRMSCodefromTrainData(["End Step"])
N_SetFIRMSCodefromTrainData_Node0{"P4 segment ID code field needs to
be populated"}:::decision N_SetFIRMSCodefromTrainData_Node0_action["The ID code field is set from the
train s FIRMS code"]:::main N_SetFIRMSCodefromTrainData_Node0 -- Yes --> N_SetFIRMSCodefromTrainData_Node0_action N_SetFIRMSCodefromTrainData_Node0_action --> E_SetFIRMSCodefromTrainData S_SetFIRMSCodefromTrainData --> N_SetFIRMSCodefromTrainData_Node0 N_SetFIRMSCodefromTrainData_Node0 -- No --> E_SetFIRMSCodefromTrainData
be populated"}:::decision N_SetFIRMSCodefromTrainData_Node0_action["The ID code field is set from the
train s FIRMS code"]:::main N_SetFIRMSCodefromTrainData_Node0 -- Yes --> N_SetFIRMSCodefromTrainData_Node0_action N_SetFIRMSCodefromTrainData_Node0_action --> E_SetFIRMSCodefromTrainData S_SetFIRMSCodefromTrainData --> N_SetFIRMSCodefromTrainData_Node0 N_SetFIRMSCodefromTrainData_Node0 -- No --> E_SetFIRMSCodefromTrainData
File: GCCE358.cbl
GIVEN:
Train data contains FIRMS code information
WHEN:
P4 segment ID code field needs to be populated
THEN:
The ID code field is set from the train's FIRMS code
β Consolidated Acceptance Criteria
- P4 segment is ready for EDI transmission → the P4 segment is inserted into the EDI transmission database with proper sequence numbering
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertP4SegmentintoEDIDatabase(["Start Step"])
E_InsertP4SegmentintoEDIDatabase(["End Step"])
N_InsertP4SegmentintoEDIDatabase_Node0{"P4 segment is ready for EDI
transmission"}:::decision N_InsertP4SegmentintoEDIDatabase_Node0_action["The P4 segment is inserted into the
EDI transmission database with
proper sequence numbering"]:::main N_InsertP4SegmentintoEDIDatabase_Node0 -- Yes --> N_InsertP4SegmentintoEDIDatabase_Node0_action N_InsertP4SegmentintoEDIDatabase_Node0_action --> E_InsertP4SegmentintoEDIDatabase S_InsertP4SegmentintoEDIDatabase --> N_InsertP4SegmentintoEDIDatabase_Node0 N_InsertP4SegmentintoEDIDatabase_Node0 -- No --> E_InsertP4SegmentintoEDIDatabase
transmission"}:::decision N_InsertP4SegmentintoEDIDatabase_Node0_action["The P4 segment is inserted into the
EDI transmission database with
proper sequence numbering"]:::main N_InsertP4SegmentintoEDIDatabase_Node0 -- Yes --> N_InsertP4SegmentintoEDIDatabase_Node0_action N_InsertP4SegmentintoEDIDatabase_Node0_action --> E_InsertP4SegmentintoEDIDatabase S_InsertP4SegmentintoEDIDatabase --> N_InsertP4SegmentintoEDIDatabase_Node0 N_InsertP4SegmentintoEDIDatabase_Node0 -- No --> E_InsertP4SegmentintoEDIDatabase
File: GCCE358.cbl
GIVEN:
P4 segment has been fully populated with all required port information
WHEN:
P4 segment is ready for EDI transmission
THEN:
The P4 segment is inserted into the EDI transmission database with proper sequence numbering
β Consolidated Acceptance Criteria
- The EDA date is either spaces or zeroes → set the century component to 0 to indicate invalid date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDateEmptyorZero(["Start Step"])
E_IsDateEmptyorZero(["End Step"])
N_IsDateEmptyorZero_Node0{"The EDA date is either spaces or
zeroes"}:::decision N_IsDateEmptyorZero_Node0_action["Set the century component to 0 to
indicate invalid date"]:::main N_IsDateEmptyorZero_Node0 -- Yes --> N_IsDateEmptyorZero_Node0_action N_IsDateEmptyorZero_Node0_action --> E_IsDateEmptyorZero S_IsDateEmptyorZero --> N_IsDateEmptyorZero_Node0 N_IsDateEmptyorZero_Node0 -- No --> E_IsDateEmptyorZero
zeroes"}:::decision N_IsDateEmptyorZero_Node0_action["Set the century component to 0 to
indicate invalid date"]:::main N_IsDateEmptyorZero_Node0 -- Yes --> N_IsDateEmptyorZero_Node0_action N_IsDateEmptyorZero_Node0_action --> E_IsDateEmptyorZero S_IsDateEmptyorZero --> N_IsDateEmptyorZero_Node0 N_IsDateEmptyorZero_Node0 -- No --> E_IsDateEmptyorZero
File: GCCE358.cbl
GIVEN:
An Estimated Departure Date (EDA) from the train list data
WHEN:
The EDA date is either spaces or zeroes
THEN:
Set the century component to 0 to indicate invalid date
β Consolidated Acceptance Criteria
- The 2-digit year is less than 70 → set the century to 20 to create years in the range 2000-2069
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsYear70(["Start Step"])
E_IsYear70(["End Step"])
N_IsYear70_Node0{"The 2-digit year is less than 70"}:::decision
N_IsYear70_Node0_action["Set the century to 20 to create
years in the range 2000-2069"]:::main N_IsYear70_Node0 -- Yes --> N_IsYear70_Node0_action N_IsYear70_Node0_action --> E_IsYear70 S_IsYear70 --> N_IsYear70_Node0 N_IsYear70_Node0 -- No --> E_IsYear70
years in the range 2000-2069"]:::main N_IsYear70_Node0 -- Yes --> N_IsYear70_Node0_action N_IsYear70_Node0_action --> E_IsYear70 S_IsYear70 --> N_IsYear70_Node0 N_IsYear70_Node0 -- No --> E_IsYear70
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A valid 2-digit year from the EDA date that is not empty or zero
WHEN:
The 2-digit year is less than 70
THEN:
Set the century to 20 to create years in the range 2000-2069
β Consolidated Acceptance Criteria
- The 2-digit year is 70 or greater → set the century to 19 to create years in the range 1970-1999
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCenturyto19(["Start Step"])
E_SetCenturyto19(["End Step"])
N_SetCenturyto19_Node0{"The 2-digit year is 70 or greater"}:::decision
N_SetCenturyto19_Node0_action["Set the century to 19 to create
years in the range 1970-1999"]:::main N_SetCenturyto19_Node0 -- Yes --> N_SetCenturyto19_Node0_action N_SetCenturyto19_Node0_action --> E_SetCenturyto19 S_SetCenturyto19 --> N_SetCenturyto19_Node0 N_SetCenturyto19_Node0 -- No --> E_SetCenturyto19
years in the range 1970-1999"]:::main N_SetCenturyto19_Node0 -- Yes --> N_SetCenturyto19_Node0_action N_SetCenturyto19_Node0_action --> E_SetCenturyto19 S_SetCenturyto19 --> N_SetCenturyto19_Node0 N_SetCenturyto19_Node0 -- No --> E_SetCenturyto19
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A valid 2-digit year from the EDA date that is not empty or zero
WHEN:
The 2-digit year is 70 or greater
THEN:
Set the century to 19 to create years in the range 1970-1999
β Consolidated Acceptance Criteria
- The equipment processing begins → the system should initialize the equipment index to 1 and process each equipment item sequentially until all equipment in the train list has been processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartEquipmentProcessingLoop(["Start Step"])
E_StartEquipmentProcessingLoop(["End Step"])
N_StartEquipmentProcessingLoop_Node0{"The equipment processing begins"}:::decision
N_StartEquipmentProcessingLoop_Node0_action["The system should initialize the
equipment index to 1 and process
each equipment item sequentially
until all equipment in the train
list has been processed"]:::main N_StartEquipmentProcessingLoop_Node0 -- Yes --> N_StartEquipmentProcessingLoop_Node0_action N_StartEquipmentProcessingLoop_Node0_action --> E_StartEquipmentProcessingLoop S_StartEquipmentProcessingLoop --> N_StartEquipmentProcessingLoop_Node0 N_StartEquipmentProcessingLoop_Node0 -- No --> E_StartEquipmentProcessingLoop
equipment index to 1 and process
each equipment item sequentially
until all equipment in the train
list has been processed"]:::main N_StartEquipmentProcessingLoop_Node0 -- Yes --> N_StartEquipmentProcessingLoop_Node0_action N_StartEquipmentProcessingLoop_Node0_action --> E_StartEquipmentProcessingLoop S_StartEquipmentProcessingLoop --> N_StartEquipmentProcessingLoop_Node0 N_StartEquipmentProcessingLoop_Node0 -- No --> E_StartEquipmentProcessingLoop
File: GCCE358.cbl
GIVEN:
A train list contains multiple equipment items with a total equipment quantity
WHEN:
The equipment processing begins
THEN:
- The system should initialize the equipment index to 1
- Process each equipment item sequentially until all equipment in the train list has been processed
β Consolidated Acceptance Criteria
- The system compares the current equipment ID with the last processed equipment ID → if the equipment IDs are different, the system should proceed to create a new VID segment, otherwise skip VID creation for this equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDDifferentfromLastProcessed(["Start Step"])
E_EquipmentIDDifferentfromLastProcessed(["End Step"])
N_EquipmentIDDifferentfromLastProcessed_Node0{"The system compares the current
equipment ID with the last processed
equipment ID"}:::decision N_EquipmentIDDifferentfromLastProcessed_Node0_action["If the equipment IDs are different,
the system should proceed to create
a new VID segment, otherwise skip
VID creation for this equipment"]:::main N_EquipmentIDDifferentfromLastProcessed_Node0 -- Yes --> N_EquipmentIDDifferentfromLastProcessed_Node0_action N_EquipmentIDDifferentfromLastProcessed_Node0_action --> E_EquipmentIDDifferentfromLastProcessed S_EquipmentIDDifferentfromLastProcessed --> N_EquipmentIDDifferentfromLastProcessed_Node0 N_EquipmentIDDifferentfromLastProcessed_Node0 -- No --> E_EquipmentIDDifferentfromLastProcessed
equipment ID with the last processed
equipment ID"}:::decision N_EquipmentIDDifferentfromLastProcessed_Node0_action["If the equipment IDs are different,
the system should proceed to create
a new VID segment, otherwise skip
VID creation for this equipment"]:::main N_EquipmentIDDifferentfromLastProcessed_Node0 -- Yes --> N_EquipmentIDDifferentfromLastProcessed_Node0_action N_EquipmentIDDifferentfromLastProcessed_Node0_action --> E_EquipmentIDDifferentfromLastProcessed S_EquipmentIDDifferentfromLastProcessed --> N_EquipmentIDDifferentfromLastProcessed_Node0 N_EquipmentIDDifferentfromLastProcessed_Node0 -- No --> E_EquipmentIDDifferentfromLastProcessed
File: GCCE358.cbl
GIVEN:
An equipment item is being processed and there is a record of the last processed equipment ID
WHEN:
The system compares the current equipment ID with the last processed equipment ID
THEN:
If the equipment IDs are different, the system should proceed to create a new VID segment, otherwise skip VID creation for this equipment
β Consolidated Acceptance Criteria
- The system begins processing this equipment → the current equipment ID should be stored as the last processed equipment ID for future duplicate detection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCurrentEquipmentIDasLastProcessed(["Start Step"])
E_StoreCurrentEquipmentIDasLastProcessed(["End Step"])
N_StoreCurrentEquipmentIDasLastProcessed_Node0{"The system begins processing this
equipment"}:::decision N_StoreCurrentEquipmentIDasLastProcessed_Node0_action["The current equipment ID should be
stored as the last processed
equipment ID for future duplicate
detection"]:::main N_StoreCurrentEquipmentIDasLastProcessed_Node0 -- Yes --> N_StoreCurrentEquipmentIDasLastProcessed_Node0_action N_StoreCurrentEquipmentIDasLastProcessed_Node0_action --> E_StoreCurrentEquipmentIDasLastProcessed S_StoreCurrentEquipmentIDasLastProcessed --> N_StoreCurrentEquipmentIDasLastProcessed_Node0 N_StoreCurrentEquipmentIDasLastProcessed_Node0 -- No --> E_StoreCurrentEquipmentIDasLastProcessed
equipment"}:::decision N_StoreCurrentEquipmentIDasLastProcessed_Node0_action["The current equipment ID should be
stored as the last processed
equipment ID for future duplicate
detection"]:::main N_StoreCurrentEquipmentIDasLastProcessed_Node0 -- Yes --> N_StoreCurrentEquipmentIDasLastProcessed_Node0_action N_StoreCurrentEquipmentIDasLastProcessed_Node0_action --> E_StoreCurrentEquipmentIDasLastProcessed S_StoreCurrentEquipmentIDasLastProcessed --> N_StoreCurrentEquipmentIDasLastProcessed_Node0 N_StoreCurrentEquipmentIDasLastProcessed_Node0 -- No --> E_StoreCurrentEquipmentIDasLastProcessed
File: GCCE358.cbl
GIVEN:
A new unique equipment ID has been identified for VID processing
WHEN:
The system begins processing this equipment
THEN:
The current equipment ID should be stored as the last processed equipment ID for future duplicate detection
β Consolidated Acceptance Criteria
- The equipment description code needs to be populated → the system should copy the equipment type from the train list equipment data to the VID equipment description code field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentDescriptionCode(["Start Step"])
E_SetEquipmentDescriptionCode(["End Step"])
N_SetEquipmentDescriptionCode_Node0{"The equipment description code
needs to be populated"}:::decision N_SetEquipmentDescriptionCode_Node0_action["The system should copy the
equipment type from the train list
equipment data to the VID equipment
description code field"]:::main N_SetEquipmentDescriptionCode_Node0 -- Yes --> N_SetEquipmentDescriptionCode_Node0_action N_SetEquipmentDescriptionCode_Node0_action --> E_SetEquipmentDescriptionCode S_SetEquipmentDescriptionCode --> N_SetEquipmentDescriptionCode_Node0 N_SetEquipmentDescriptionCode_Node0 -- No --> E_SetEquipmentDescriptionCode
needs to be populated"}:::decision N_SetEquipmentDescriptionCode_Node0_action["The system should copy the
equipment type from the train list
equipment data to the VID equipment
description code field"]:::main N_SetEquipmentDescriptionCode_Node0 -- Yes --> N_SetEquipmentDescriptionCode_Node0_action N_SetEquipmentDescriptionCode_Node0_action --> E_SetEquipmentDescriptionCode S_SetEquipmentDescriptionCode --> N_SetEquipmentDescriptionCode_Node0 N_SetEquipmentDescriptionCode_Node0 -- No --> E_SetEquipmentDescriptionCode
File: GCCE358.cbl
GIVEN:
A VID segment is being created for an equipment item
WHEN:
The equipment description code needs to be populated
THEN:
The system should copy the equipment type from the train list equipment data to the VID equipment description code field
β Consolidated Acceptance Criteria
- The equipment initial needs to be populated → the system should copy the equipment initial from the train list equipment data to the VID equipment 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_SetEquipmentInitial(["Start Step"])
E_SetEquipmentInitial(["End Step"])
N_SetEquipmentInitial_Node0{"The equipment initial needs to be
populated"}:::decision N_SetEquipmentInitial_Node0_action["The system should copy the
equipment initial from the train
list equipment data to the VID
equipment initial field"]:::main N_SetEquipmentInitial_Node0 -- Yes --> N_SetEquipmentInitial_Node0_action N_SetEquipmentInitial_Node0_action --> E_SetEquipmentInitial S_SetEquipmentInitial --> N_SetEquipmentInitial_Node0 N_SetEquipmentInitial_Node0 -- No --> E_SetEquipmentInitial
populated"}:::decision N_SetEquipmentInitial_Node0_action["The system should copy the
equipment initial from the train
list equipment data to the VID
equipment initial field"]:::main N_SetEquipmentInitial_Node0 -- Yes --> N_SetEquipmentInitial_Node0_action N_SetEquipmentInitial_Node0_action --> E_SetEquipmentInitial S_SetEquipmentInitial --> N_SetEquipmentInitial_Node0 N_SetEquipmentInitial_Node0 -- No --> E_SetEquipmentInitial
File: GCCE358.cbl
GIVEN:
A VID segment is being created for an equipment item
WHEN:
The equipment initial needs to be populated
THEN:
The system should copy the equipment initial from the train list equipment data to the VID equipment initial field
β Consolidated Acceptance Criteria
- The system needs to determine the equipment number for the VID segment → if the US-CCN-KEY starts with 'CPRS' OR the cargo car number is spaces, then use the train list equipment number, otherwise use the cargo database car 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_IsEquipmentCPorHasNoCarNumber(["Start Step"])
E_IsEquipmentCPorHasNoCarNumber(["End Step"])
N_IsEquipmentCPorHasNoCarNumber_Node0{"The system needs to determine the
equipment number for the VID segment"}:::decision N_IsEquipmentCPorHasNoCarNumber_Node0_action["If the US-CCN-KEY starts with CPRS
OR the cargo car number is spaces,
then use the train list equipment
number, otherwise use the cargo
database car number"]:::main N_IsEquipmentCPorHasNoCarNumber_Node0 -- Yes --> N_IsEquipmentCPorHasNoCarNumber_Node0_action N_IsEquipmentCPorHasNoCarNumber_Node0_action --> E_IsEquipmentCPorHasNoCarNumber S_IsEquipmentCPorHasNoCarNumber --> N_IsEquipmentCPorHasNoCarNumber_Node0 N_IsEquipmentCPorHasNoCarNumber_Node0 -- No --> E_IsEquipmentCPorHasNoCarNumber
equipment number for the VID segment"}:::decision N_IsEquipmentCPorHasNoCarNumber_Node0_action["If the US-CCN-KEY starts with CPRS
OR the cargo car number is spaces,
then use the train list equipment
number, otherwise use the cargo
database car number"]:::main N_IsEquipmentCPorHasNoCarNumber_Node0 -- Yes --> N_IsEquipmentCPorHasNoCarNumber_Node0_action N_IsEquipmentCPorHasNoCarNumber_Node0_action --> E_IsEquipmentCPorHasNoCarNumber S_IsEquipmentCPorHasNoCarNumber --> N_IsEquipmentCPorHasNoCarNumber_Node0 N_IsEquipmentCPorHasNoCarNumber_Node0 -- No --> E_IsEquipmentCPorHasNoCarNumber
File: GCCE358.cbl
GIVEN:
An equipment item has a US-CCN-KEY and cargo data has been retrieved
WHEN:
The system needs to determine the equipment number for the VID segment
THEN:
If the US-CCN-KEY starts with 'CPRS' OR the cargo car number is spaces, then use the train list equipment number, otherwise use the cargo database car number
β Consolidated Acceptance Criteria
- The VID equipment number field needs to be populated → the system should use the equipment number from the train list 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_UseTrainListEquipmentNumber(["Start Step"])
E_UseTrainListEquipmentNumber(["End Step"])
N_UseTrainListEquipmentNumber_Node0{"The VID equipment number field
needs to be populated"}:::decision N_UseTrainListEquipmentNumber_Node0_action["The system should use the equipment
number from the train list data"]:::main N_UseTrainListEquipmentNumber_Node0 -- Yes --> N_UseTrainListEquipmentNumber_Node0_action N_UseTrainListEquipmentNumber_Node0_action --> E_UseTrainListEquipmentNumber S_UseTrainListEquipmentNumber --> N_UseTrainListEquipmentNumber_Node0 N_UseTrainListEquipmentNumber_Node0 -- No --> E_UseTrainListEquipmentNumber
needs to be populated"}:::decision N_UseTrainListEquipmentNumber_Node0_action["The system should use the equipment
number from the train list data"]:::main N_UseTrainListEquipmentNumber_Node0 -- Yes --> N_UseTrainListEquipmentNumber_Node0_action N_UseTrainListEquipmentNumber_Node0_action --> E_UseTrainListEquipmentNumber S_UseTrainListEquipmentNumber --> N_UseTrainListEquipmentNumber_Node0 N_UseTrainListEquipmentNumber_Node0 -- No --> E_UseTrainListEquipmentNumber
File: GCCE358.cbl
GIVEN:
The equipment belongs to CP Rail (CPRS) or no car number exists in cargo data
WHEN:
The VID equipment number field needs to be populated
THEN:
The system should use the equipment number from the train list data
β Consolidated Acceptance Criteria
- The VID equipment number field needs to be populated → the system should use the car number from the cargo database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseCargoDatabaseCarNumber(["Start Step"])
E_UseCargoDatabaseCarNumber(["End Step"])
N_UseCargoDatabaseCarNumber_Node0{"The VID equipment number field
needs to be populated"}:::decision N_UseCargoDatabaseCarNumber_Node0_action["The system should use the car
number from the cargo database"]:::main N_UseCargoDatabaseCarNumber_Node0 -- Yes --> N_UseCargoDatabaseCarNumber_Node0_action N_UseCargoDatabaseCarNumber_Node0_action --> E_UseCargoDatabaseCarNumber S_UseCargoDatabaseCarNumber --> N_UseCargoDatabaseCarNumber_Node0 N_UseCargoDatabaseCarNumber_Node0 -- No --> E_UseCargoDatabaseCarNumber
needs to be populated"}:::decision N_UseCargoDatabaseCarNumber_Node0_action["The system should use the car
number from the cargo database"]:::main N_UseCargoDatabaseCarNumber_Node0 -- Yes --> N_UseCargoDatabaseCarNumber_Node0_action N_UseCargoDatabaseCarNumber_Node0_action --> E_UseCargoDatabaseCarNumber S_UseCargoDatabaseCarNumber --> N_UseCargoDatabaseCarNumber_Node0 N_UseCargoDatabaseCarNumber_Node0 -- No --> E_UseCargoDatabaseCarNumber
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
The equipment does not belong to CP Rail and a car number exists in the cargo database
WHEN:
The VID equipment number field needs to be populated
THEN:
The system should use the car number from the cargo database
β Consolidated Acceptance Criteria
- The VID load/empty status needs to be determined → if status is 'H' then set to 'E', else if status is 'E' and CCN key exists and cargo weight > 1 then set to 'L', else if status is 'E' and CCN key exists and BOL type is 23 then keep as 'E', otherwise keep original 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_ApplyLoadEmptyStatusLogic(["Start Step"])
E_ApplyLoadEmptyStatusLogic(["End Step"])
N_ApplyLoadEmptyStatusLogic_Node0{"The VID loadempty status needs to
be determined"}:::decision N_ApplyLoadEmptyStatusLogic_Node0_action["If status is H then set to E , else
if status is E and CCN key exists
and cargo weight 1 then set to L ,
else if status is E and CCN key
exists and BOL type is 23 then keep
as E , otherwise keep original
status"]:::main N_ApplyLoadEmptyStatusLogic_Node0 -- Yes --> N_ApplyLoadEmptyStatusLogic_Node0_action N_ApplyLoadEmptyStatusLogic_Node0_action --> E_ApplyLoadEmptyStatusLogic S_ApplyLoadEmptyStatusLogic --> N_ApplyLoadEmptyStatusLogic_Node0 N_ApplyLoadEmptyStatusLogic_Node0 -- No --> E_ApplyLoadEmptyStatusLogic
be determined"}:::decision N_ApplyLoadEmptyStatusLogic_Node0_action["If status is H then set to E , else
if status is E and CCN key exists
and cargo weight 1 then set to L ,
else if status is E and CCN key
exists and BOL type is 23 then keep
as E , otherwise keep original
status"]:::main N_ApplyLoadEmptyStatusLogic_Node0 -- Yes --> N_ApplyLoadEmptyStatusLogic_Node0_action N_ApplyLoadEmptyStatusLogic_Node0_action --> E_ApplyLoadEmptyStatusLogic S_ApplyLoadEmptyStatusLogic --> N_ApplyLoadEmptyStatusLogic_Node0 N_ApplyLoadEmptyStatusLogic_Node0 -- No --> E_ApplyLoadEmptyStatusLogic
File: GCCE358.cbl
GIVEN:
An equipment item has a load/empty status from the train list
WHEN:
The VID load/empty status needs to be determined
THEN:
- If status is 'h' then set to 'e', else if status is 'e' and ccn key exists
- Cargo weight > 1 then set to 'l', else if status is 'e' and ccn key exists
- Bol type is 23 then keep as 'e', otherwise keep original status
β Consolidated Acceptance Criteria
- The segment needs to be added to the EDI transmission → the system should insert the VID segment into the transmission data with an incremented sequence number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertVIDSegmenttoEDIData(["Start Step"])
E_InsertVIDSegmenttoEDIData(["End Step"])
N_InsertVIDSegmenttoEDIData_Node0{"The segment needs to be added to
the EDI transmission"}:::decision N_InsertVIDSegmenttoEDIData_Node0_action["The system should insert the VID
segment into the transmission data
with an incremented sequence number"]:::main N_InsertVIDSegmenttoEDIData_Node0 -- Yes --> N_InsertVIDSegmenttoEDIData_Node0_action N_InsertVIDSegmenttoEDIData_Node0_action --> E_InsertVIDSegmenttoEDIData S_InsertVIDSegmenttoEDIData --> N_InsertVIDSegmenttoEDIData_Node0 N_InsertVIDSegmenttoEDIData_Node0 -- No --> E_InsertVIDSegmenttoEDIData
the EDI transmission"}:::decision N_InsertVIDSegmenttoEDIData_Node0_action["The system should insert the VID
segment into the transmission data
with an incremented sequence number"]:::main N_InsertVIDSegmenttoEDIData_Node0 -- Yes --> N_InsertVIDSegmenttoEDIData_Node0_action N_InsertVIDSegmenttoEDIData_Node0_action --> E_InsertVIDSegmenttoEDIData S_InsertVIDSegmenttoEDIData --> N_InsertVIDSegmenttoEDIData_Node0 N_InsertVIDSegmenttoEDIData_Node0 -- No --> E_InsertVIDSegmenttoEDIData
File: GCCE358.cbl
GIVEN:
A VID segment has been fully populated with equipment data
WHEN:
The segment needs to be added to the EDI transmission
THEN:
The system should insert the VID segment into the transmission data with an incremented sequence number
β Consolidated Acceptance Criteria
- The system checks for more equipment to process → if the equipment index is less than or equal to the total equipment quantity, continue processing the next equipment item, otherwise end the equipment processing loop
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmentinTrainList(["Start Step"])
E_MoreEquipmentinTrainList(["End Step"])
N_MoreEquipmentinTrainList_Node0{"The system checks for more
equipment to process"}:::decision N_MoreEquipmentinTrainList_Node0_action["If the equipment index is less than
or equal to the total equipment
quantity, continue processing the
next equipment item, otherwise end
the equipment processing loop"]:::main N_MoreEquipmentinTrainList_Node0 -- Yes --> N_MoreEquipmentinTrainList_Node0_action N_MoreEquipmentinTrainList_Node0_action --> E_MoreEquipmentinTrainList S_MoreEquipmentinTrainList --> N_MoreEquipmentinTrainList_Node0 N_MoreEquipmentinTrainList_Node0 -- No --> E_MoreEquipmentinTrainList
equipment to process"}:::decision N_MoreEquipmentinTrainList_Node0_action["If the equipment index is less than
or equal to the total equipment
quantity, continue processing the
next equipment item, otherwise end
the equipment processing loop"]:::main N_MoreEquipmentinTrainList_Node0 -- Yes --> N_MoreEquipmentinTrainList_Node0_action N_MoreEquipmentinTrainList_Node0_action --> E_MoreEquipmentinTrainList S_MoreEquipmentinTrainList --> N_MoreEquipmentinTrainList_Node0 N_MoreEquipmentinTrainList_Node0 -- No --> E_MoreEquipmentinTrainList
File: GCCE358.cbl
GIVEN:
The current equipment item has been processed
WHEN:
The system checks for more equipment to process
THEN:
If the equipment index is less than or equal to the total equipment quantity, continue processing the next equipment item, otherwise end the equipment processing loop
β Consolidated Acceptance Criteria
- The equipment load/empty status is 'H' (Hold) → the system sets the equipment status to 'E' (Empty)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatustoEEmpty(["Start Step"])
E_SetStatustoEEmpty(["End Step"])
N_SetStatustoEEmpty_Node0{"The equipment loadempty status is H
Hold"}:::decision N_SetStatustoEEmpty_Node0_action["The system sets the equipment
status to E Empty"]:::main N_SetStatustoEEmpty_Node0 -- Yes --> N_SetStatustoEEmpty_Node0_action N_SetStatustoEEmpty_Node0_action --> E_SetStatustoEEmpty S_SetStatustoEEmpty --> N_SetStatustoEEmpty_Node0 N_SetStatustoEEmpty_Node0 -- No --> E_SetStatustoEEmpty
Hold"}:::decision N_SetStatustoEEmpty_Node0_action["The system sets the equipment
status to E Empty"]:::main N_SetStatustoEEmpty_Node0 -- Yes --> N_SetStatustoEEmpty_Node0_action N_SetStatustoEEmpty_Node0_action --> E_SetStatustoEEmpty S_SetStatustoEEmpty --> N_SetStatustoEEmpty_Node0 N_SetStatustoEEmpty_Node0 -- No --> E_SetStatustoEEmpty
File: GCCE358.cbl
GIVEN:
An equipment item exists in the train list
WHEN:
The equipment load/empty status is 'H' (Hold)
THEN:
The system sets the equipment status to 'E' (Empty)
β Consolidated Acceptance Criteria
- The cargo weight is greater than 1 → the system sets the equipment status to 'L' (Loaded)
- The cargo weight from the database is greater than 1 → the equipment status should be overridden to 'L' (Loaded)
- The cargo weight from the database is 1 or less → the equipment status should remain 'E' (Empty)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoWeight1(["Start Step"])
E_CargoWeight1(["End Step"])
N_CargoWeight1_Node0{"The cargo weight is greater than 1"}:::decision
N_CargoWeight1_Node0_action["The system sets the equipment
status to L Loaded"]:::main N_CargoWeight1_Node0 -- Yes --> N_CargoWeight1_Node0_action N_CargoWeight1_Node0_action --> E_CargoWeight1 S_CargoWeight1 --> N_CargoWeight1_Node0 N_CargoWeight1_Node1{"The cargo weight from the database
is greater than 1"}:::decision N_CargoWeight1_Node1_action["The equipment status should be
overridden to L Loaded"]:::main N_CargoWeight1_Node1 -- Yes --> N_CargoWeight1_Node1_action N_CargoWeight1_Node1_action --> E_CargoWeight1 N_CargoWeight1_Node0 -- No --> N_CargoWeight1_Node1 N_CargoWeight1_Node2{"The cargo weight from the database
is 1 or less"}:::decision N_CargoWeight1_Node2_action["The equipment status should remain
E Empty"]:::main N_CargoWeight1_Node2 -- Yes --> N_CargoWeight1_Node2_action N_CargoWeight1_Node2_action --> E_CargoWeight1 N_CargoWeight1_Node1 -- No --> N_CargoWeight1_Node2 N_CargoWeight1_Node2 -- No --> E_CargoWeight1
status to L Loaded"]:::main N_CargoWeight1_Node0 -- Yes --> N_CargoWeight1_Node0_action N_CargoWeight1_Node0_action --> E_CargoWeight1 S_CargoWeight1 --> N_CargoWeight1_Node0 N_CargoWeight1_Node1{"The cargo weight from the database
is greater than 1"}:::decision N_CargoWeight1_Node1_action["The equipment status should be
overridden to L Loaded"]:::main N_CargoWeight1_Node1 -- Yes --> N_CargoWeight1_Node1_action N_CargoWeight1_Node1_action --> E_CargoWeight1 N_CargoWeight1_Node0 -- No --> N_CargoWeight1_Node1 N_CargoWeight1_Node2{"The cargo weight from the database
is 1 or less"}:::decision N_CargoWeight1_Node2_action["The equipment status should remain
E Empty"]:::main N_CargoWeight1_Node2 -- Yes --> N_CargoWeight1_Node2_action N_CargoWeight1_Node2_action --> E_CargoWeight1 N_CargoWeight1_Node1 -- No --> N_CargoWeight1_Node2 N_CargoWeight1_Node2 -- No --> E_CargoWeight1
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item has status 'E' (Empty) and has a bill number (US-CCN-KEY is not spaces)
WHEN:
The cargo weight is greater than 1
THEN:
The system sets the equipment status to 'L' (Loaded)
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item with status 'E' (Empty) and an associated bill of lading (US-CCN-KEY is not spaces)
WHEN:
The cargo weight from the database is greater than 1
THEN:
The equipment status should be overridden to 'L' (Loaded)
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item with status 'E' (Empty) and an associated bill of lading (US-CCN-KEY is not spaces)
WHEN:
The cargo weight from the database is 1 or less
THEN:
The equipment status should remain 'E' (Empty)
β Consolidated Acceptance Criteria
- The cargo weight is 1 or less → the system keeps the original equipment status 'E' (Empty)
- The equipment does not have a bill number (US-CCN-KEY is spaces) → the system keeps the original equipment load/empty status unchanged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeepOriginalStatus(["Start Step"])
E_KeepOriginalStatus(["End Step"])
N_KeepOriginalStatus_Node0{"The cargo weight is 1 or less"}:::decision
N_KeepOriginalStatus_Node0_action["The system keeps the original
equipment status E Empty"]:::main N_KeepOriginalStatus_Node0 -- Yes --> N_KeepOriginalStatus_Node0_action N_KeepOriginalStatus_Node0_action --> E_KeepOriginalStatus S_KeepOriginalStatus --> N_KeepOriginalStatus_Node0 N_KeepOriginalStatus_Node1{"The equipment does not have a bill
number US-CCN-KEY is spaces"}:::decision N_KeepOriginalStatus_Node1_action["The system keeps the original
equipment loadempty status unchanged"]:::main N_KeepOriginalStatus_Node1 -- Yes --> N_KeepOriginalStatus_Node1_action N_KeepOriginalStatus_Node1_action --> E_KeepOriginalStatus N_KeepOriginalStatus_Node0 -- No --> N_KeepOriginalStatus_Node1 N_KeepOriginalStatus_Node1 -- No --> E_KeepOriginalStatus
equipment status E Empty"]:::main N_KeepOriginalStatus_Node0 -- Yes --> N_KeepOriginalStatus_Node0_action N_KeepOriginalStatus_Node0_action --> E_KeepOriginalStatus S_KeepOriginalStatus --> N_KeepOriginalStatus_Node0 N_KeepOriginalStatus_Node1{"The equipment does not have a bill
number US-CCN-KEY is spaces"}:::decision N_KeepOriginalStatus_Node1_action["The system keeps the original
equipment loadempty status unchanged"]:::main N_KeepOriginalStatus_Node1 -- Yes --> N_KeepOriginalStatus_Node1_action N_KeepOriginalStatus_Node1_action --> E_KeepOriginalStatus N_KeepOriginalStatus_Node0 -- No --> N_KeepOriginalStatus_Node1 N_KeepOriginalStatus_Node1 -- No --> E_KeepOriginalStatus
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item has status 'E' (Empty) and has a bill number (US-CCN-KEY is not spaces)
WHEN:
The cargo weight is 1 or less
THEN:
The system keeps the original equipment status 'E' (Empty)
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item has any status other than 'H' (Hold)
WHEN:
The equipment does not have a bill number (US-CCN-KEY is spaces)
THEN:
The system keeps the original equipment load/empty status unchanged
β Consolidated Acceptance Criteria
- The equipment load/empty status code is 'H' (Hold) → the status code should be converted to 'E' (Empty) for the EDI transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusCodeH(["Start Step"])
E_StatusCodeH(["End Step"])
N_StatusCodeH_Node0{"The equipment loadempty status code
is H Hold"}:::decision N_StatusCodeH_Node0_action["The status code should be converted
to E Empty for the EDI transmission"]:::main N_StatusCodeH_Node0 -- Yes --> N_StatusCodeH_Node0_action N_StatusCodeH_Node0_action --> E_StatusCodeH S_StatusCodeH --> N_StatusCodeH_Node0 N_StatusCodeH_Node0 -- No --> E_StatusCodeH
is H Hold"}:::decision N_StatusCodeH_Node0_action["The status code should be converted
to E Empty for the EDI transmission"]:::main N_StatusCodeH_Node0 -- Yes --> N_StatusCodeH_Node0_action N_StatusCodeH_Node0_action --> E_StatusCodeH S_StatusCodeH --> N_StatusCodeH_Node0 N_StatusCodeH_Node0 -- No --> E_StatusCodeH
File: GCCE358.cbl
GIVEN:
An equipment item with load/empty status code from the train list
WHEN:
The equipment load/empty status code is 'H' (Hold)
THEN:
The status code should be converted to 'E' (Empty) for the EDI transmission
β Consolidated Acceptance Criteria
- The equipment load/empty status code is neither 'H' (Hold) nor 'E' (Empty) → the original status code should be preserved without modification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeepOriginalStatusCode(["Start Step"])
E_KeepOriginalStatusCode(["End Step"])
N_KeepOriginalStatusCode_Node0{"The equipment loadempty status code
is neither H Hold nor E Empty"}:::decision N_KeepOriginalStatusCode_Node0_action["The original status code should be
preserved without modification"]:::main N_KeepOriginalStatusCode_Node0 -- Yes --> N_KeepOriginalStatusCode_Node0_action N_KeepOriginalStatusCode_Node0_action --> E_KeepOriginalStatusCode S_KeepOriginalStatusCode --> N_KeepOriginalStatusCode_Node0 N_KeepOriginalStatusCode_Node0 -- No --> E_KeepOriginalStatusCode
is neither H Hold nor E Empty"}:::decision N_KeepOriginalStatusCode_Node0_action["The original status code should be
preserved without modification"]:::main N_KeepOriginalStatusCode_Node0 -- Yes --> N_KeepOriginalStatusCode_Node0_action N_KeepOriginalStatusCode_Node0_action --> E_KeepOriginalStatusCode S_KeepOriginalStatusCode --> N_KeepOriginalStatusCode_Node0 N_KeepOriginalStatusCode_Node0 -- No --> E_KeepOriginalStatusCode
File: GCCE358.cbl
GIVEN:
An equipment item with load/empty status code from the train list
WHEN:
The equipment load/empty status code is neither 'H' (Hold) nor 'E' (Empty)
THEN:
The original status code should be preserved without modification
β Consolidated Acceptance Criteria
- The US-CCN-KEY starts with 'CPRS' indicating CP ownership → use the original equipment number from the train list without performing cargo lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentCPOwned(["Start Step"])
E_IsEquipmentCPOwned(["End Step"])
N_IsEquipmentCPOwned_Node0{"The US-CCN-KEY starts with CPRS
indicating CP ownership"}:::decision N_IsEquipmentCPOwned_Node0_action["Use the original equipment number
from the train list without
performing cargo lookup"]:::main N_IsEquipmentCPOwned_Node0 -- Yes --> N_IsEquipmentCPOwned_Node0_action N_IsEquipmentCPOwned_Node0_action --> E_IsEquipmentCPOwned S_IsEquipmentCPOwned --> N_IsEquipmentCPOwned_Node0 N_IsEquipmentCPOwned_Node0 -- No --> E_IsEquipmentCPOwned
indicating CP ownership"}:::decision N_IsEquipmentCPOwned_Node0_action["Use the original equipment number
from the train list without
performing cargo lookup"]:::main N_IsEquipmentCPOwned_Node0 -- Yes --> N_IsEquipmentCPOwned_Node0_action N_IsEquipmentCPOwned_Node0_action --> E_IsEquipmentCPOwned S_IsEquipmentCPOwned --> N_IsEquipmentCPOwned_Node0 N_IsEquipmentCPOwned_Node0 -- No --> E_IsEquipmentCPOwned
File: GCCE358.cbl
GIVEN:
An equipment record is being processed with a US-CCN-KEY
WHEN:
The US-CCN-KEY starts with 'CPRS' indicating CP ownership
THEN:
Use the original equipment number from the train list without performing cargo lookup
β Consolidated Acceptance Criteria
- Equipment number needs to be determined for VID record → assign the equipment number from the train list to the VID equipment 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_UseOriginalEquipmentNumberfromTrainList(["Start Step"])
E_UseOriginalEquipmentNumberfromTrainList(["End Step"])
N_UseOriginalEquipmentNumberfromTrainList_Node0{"Equipment number needs to be
determined for VID record"}:::decision N_UseOriginalEquipmentNumberfromTrainList_Node0_action["Assign the equipment number from
the train list to the VID equipment
number field"]:::main N_UseOriginalEquipmentNumberfromTrainList_Node0 -- Yes --> N_UseOriginalEquipmentNumberfromTrainList_Node0_action N_UseOriginalEquipmentNumberfromTrainList_Node0_action --> E_UseOriginalEquipmentNumberfromTrainList S_UseOriginalEquipmentNumberfromTrainList --> N_UseOriginalEquipmentNumberfromTrainList_Node0 N_UseOriginalEquipmentNumberfromTrainList_Node0 -- No --> E_UseOriginalEquipmentNumberfromTrainList
determined for VID record"}:::decision N_UseOriginalEquipmentNumberfromTrainList_Node0_action["Assign the equipment number from
the train list to the VID equipment
number field"]:::main N_UseOriginalEquipmentNumberfromTrainList_Node0 -- Yes --> N_UseOriginalEquipmentNumberfromTrainList_Node0_action N_UseOriginalEquipmentNumberfromTrainList_Node0_action --> E_UseOriginalEquipmentNumberfromTrainList S_UseOriginalEquipmentNumberfromTrainList --> N_UseOriginalEquipmentNumberfromTrainList_Node0 N_UseOriginalEquipmentNumberfromTrainList_Node0 -- No --> E_UseOriginalEquipmentNumberfromTrainList
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is identified as CP-owned OR cargo record lookup fails OR foreign carrier number is not available
WHEN:
Equipment number needs to be determined for VID record
THEN:
Assign the equipment number from the train list to the VID equipment number field
β Consolidated Acceptance Criteria
- Equipment number determination is required → perform cargo database lookup using the US-CCN-KEY to retrieve foreign carrier information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupCargoInformationinDatabase(["Start Step"])
E_LookupCargoInformationinDatabase(["End Step"])
N_LookupCargoInformationinDatabase_Node0{"Equipment number determination is
required"}:::decision N_LookupCargoInformationinDatabase_Node0_action["Perform cargo database lookup using
the US-CCN-KEY to retrieve foreign
carrier information"]:::main N_LookupCargoInformationinDatabase_Node0 -- Yes --> N_LookupCargoInformationinDatabase_Node0_action N_LookupCargoInformationinDatabase_Node0_action --> E_LookupCargoInformationinDatabase S_LookupCargoInformationinDatabase --> N_LookupCargoInformationinDatabase_Node0 N_LookupCargoInformationinDatabase_Node0 -- No --> E_LookupCargoInformationinDatabase
required"}:::decision N_LookupCargoInformationinDatabase_Node0_action["Perform cargo database lookup using
the US-CCN-KEY to retrieve foreign
carrier information"]:::main N_LookupCargoInformationinDatabase_Node0 -- Yes --> N_LookupCargoInformationinDatabase_Node0_action N_LookupCargoInformationinDatabase_Node0_action --> E_LookupCargoInformationinDatabase S_LookupCargoInformationinDatabase --> N_LookupCargoInformationinDatabase_Node0 N_LookupCargoInformationinDatabase_Node0 -- No --> E_LookupCargoInformationinDatabase
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is not CP-owned (US-CCN-KEY does not start with 'CPRS')
WHEN:
Equipment number determination is required
THEN:
Perform cargo database lookup using the US-CCN-KEY to retrieve foreign carrier information
β Consolidated Acceptance Criteria
- Determining which equipment number to use → check if the foreign carrier equipment number field contains valid data (not 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_ForeignCarrierNumberAvailable(["Start Step"])
E_ForeignCarrierNumberAvailable(["End Step"])
N_ForeignCarrierNumberAvailable_Node0{"Determining which equipment number
to use"}:::decision N_ForeignCarrierNumberAvailable_Node0_action["Check if the foreign carrier
equipment number field contains
valid data not spaces"]:::main N_ForeignCarrierNumberAvailable_Node0 -- Yes --> N_ForeignCarrierNumberAvailable_Node0_action N_ForeignCarrierNumberAvailable_Node0_action --> E_ForeignCarrierNumberAvailable S_ForeignCarrierNumberAvailable --> N_ForeignCarrierNumberAvailable_Node0 N_ForeignCarrierNumberAvailable_Node0 -- No --> E_ForeignCarrierNumberAvailable
to use"}:::decision N_ForeignCarrierNumberAvailable_Node0_action["Check if the foreign carrier
equipment number field contains
valid data not spaces"]:::main N_ForeignCarrierNumberAvailable_Node0 -- Yes --> N_ForeignCarrierNumberAvailable_Node0_action N_ForeignCarrierNumberAvailable_Node0_action --> E_ForeignCarrierNumberAvailable S_ForeignCarrierNumberAvailable --> N_ForeignCarrierNumberAvailable_Node0 N_ForeignCarrierNumberAvailable_Node0 -- No --> E_ForeignCarrierNumberAvailable
File: GCCE358.cbl
GIVEN:
Cargo record has been successfully retrieved from database
WHEN:
Determining which equipment number to use
THEN:
Check if the foreign carrier equipment number field contains valid data (not spaces)
β Consolidated Acceptance Criteria
- Equipment number needs to be assigned to VID record → use the foreign carrier equipment number from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseForeignCarrierEquipmentNumber(["Start Step"])
E_UseForeignCarrierEquipmentNumber(["End Step"])
N_UseForeignCarrierEquipmentNumber_Node0{"Equipment number needs to be
assigned to VID record"}:::decision N_UseForeignCarrierEquipmentNumber_Node0_action["Use the foreign carrier equipment
number from the cargo record"]:::main N_UseForeignCarrierEquipmentNumber_Node0 -- Yes --> N_UseForeignCarrierEquipmentNumber_Node0_action N_UseForeignCarrierEquipmentNumber_Node0_action --> E_UseForeignCarrierEquipmentNumber S_UseForeignCarrierEquipmentNumber --> N_UseForeignCarrierEquipmentNumber_Node0 N_UseForeignCarrierEquipmentNumber_Node0 -- No --> E_UseForeignCarrierEquipmentNumber
assigned to VID record"}:::decision N_UseForeignCarrierEquipmentNumber_Node0_action["Use the foreign carrier equipment
number from the cargo record"]:::main N_UseForeignCarrierEquipmentNumber_Node0 -- Yes --> N_UseForeignCarrierEquipmentNumber_Node0_action N_UseForeignCarrierEquipmentNumber_Node0_action --> E_UseForeignCarrierEquipmentNumber S_UseForeignCarrierEquipmentNumber --> N_UseForeignCarrierEquipmentNumber_Node0 N_UseForeignCarrierEquipmentNumber_Node0 -- No --> E_UseForeignCarrierEquipmentNumber
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record exists AND foreign carrier equipment number is not spaces
WHEN:
Equipment number needs to be assigned to VID record
THEN:
Use the foreign carrier equipment number from the cargo record
β Consolidated Acceptance Criteria
- Equipment number assignment is required → use the original equipment number from the train list as fallback
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseOriginalEquipmentNumberasFallback(["Start Step"])
E_UseOriginalEquipmentNumberasFallback(["End Step"])
N_UseOriginalEquipmentNumberasFallback_Node0{"Equipment number assignment is
required"}:::decision N_UseOriginalEquipmentNumberasFallback_Node0_action["Use the original equipment number
from the train list as fallback"]:::main N_UseOriginalEquipmentNumberasFallback_Node0 -- Yes --> N_UseOriginalEquipmentNumberasFallback_Node0_action N_UseOriginalEquipmentNumberasFallback_Node0_action --> E_UseOriginalEquipmentNumberasFallback S_UseOriginalEquipmentNumberasFallback --> N_UseOriginalEquipmentNumberasFallback_Node0 N_UseOriginalEquipmentNumberasFallback_Node0 -- No --> E_UseOriginalEquipmentNumberasFallback
required"}:::decision N_UseOriginalEquipmentNumberasFallback_Node0_action["Use the original equipment number
from the train list as fallback"]:::main N_UseOriginalEquipmentNumberasFallback_Node0 -- Yes --> N_UseOriginalEquipmentNumberasFallback_Node0_action N_UseOriginalEquipmentNumberasFallback_Node0_action --> E_UseOriginalEquipmentNumberasFallback S_UseOriginalEquipmentNumberasFallback --> N_UseOriginalEquipmentNumberasFallback_Node0 N_UseOriginalEquipmentNumberasFallback_Node0 -- No --> E_UseOriginalEquipmentNumberasFallback
File: GCCE358.cbl
GIVEN:
Cargo record exists BUT foreign carrier equipment number is spaces or empty
WHEN:
Equipment number assignment is required
THEN:
Use the original equipment number from the train list as fallback
β Consolidated Acceptance Criteria
- The system searches the cargo database using the CCN key → the system returns cargo found status if record exists or cargo not found status if record does not exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails(["Start Step"])
E_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails(["End Step"])
N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0{"The system searches the cargo
database using the CCN key"}:::decision N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0_action["The system returns cargo found
status if record exists or cargo not
found status if record does not
exist"]:::main N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0 -- Yes --> N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0_action N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0_action --> E_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails S_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails --> N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0 N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0 -- No --> E_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails
database using the CCN key"}:::decision N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0_action["The system returns cargo found
status if record exists or cargo not
found status if record does not
exist"]:::main N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0 -- Yes --> N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0_action N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0_action --> E_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails S_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails --> N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0 N_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails_Node0 -- No --> E_LookupCargoInformationinDatabaseRetrieveandvalidateforeigncarrierequipmentdetails
File: GCCE358.cbl
GIVEN:
A cargo lookup request with US CCN key from equipment data
WHEN:
The system searches the cargo database using the CCN key
THEN:
The system returns cargo found status if record exists or cargo not found status if record does not exist
β Consolidated Acceptance Criteria
- The system prepares to access the cargo database → the system sets segment type to GCSUSRT, function type to GU (Get Unique), and index usage to not 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_SetDatabaseAccessParameters(["Start Step"])
E_SetDatabaseAccessParameters(["End Step"])
N_SetDatabaseAccessParameters_Node0{"The system prepares to access the
cargo database"}:::decision N_SetDatabaseAccessParameters_Node0_action["The system sets segment type to
GCSUSRT, function type to GU Get
Unique, and index usage to not used"]:::main N_SetDatabaseAccessParameters_Node0 -- Yes --> N_SetDatabaseAccessParameters_Node0_action N_SetDatabaseAccessParameters_Node0_action --> E_SetDatabaseAccessParameters S_SetDatabaseAccessParameters --> N_SetDatabaseAccessParameters_Node0 N_SetDatabaseAccessParameters_Node0 -- No --> E_SetDatabaseAccessParameters
cargo database"}:::decision N_SetDatabaseAccessParameters_Node0_action["The system sets segment type to
GCSUSRT, function type to GU Get
Unique, and index usage to not used"]:::main N_SetDatabaseAccessParameters_Node0 -- Yes --> N_SetDatabaseAccessParameters_Node0_action N_SetDatabaseAccessParameters_Node0_action --> E_SetDatabaseAccessParameters S_SetDatabaseAccessParameters --> N_SetDatabaseAccessParameters_Node0 N_SetDatabaseAccessParameters_Node0 -- No --> E_SetDatabaseAccessParameters
File: GCCE358.cbl
GIVEN:
A cargo lookup operation is initiated
WHEN:
The system prepares to access the cargo database
THEN:
The system sets segment type to GCSUSRT, function type to GU (Get Unique), and index usage to not used
β Consolidated Acceptance Criteria
- If the database operation status code → if status code is spaces then cargo is found, otherwise cargo 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 evaluates the database
operation status code"}:::decision N_CargoRecordFound_Node0_action["If status code is spaces then cargo
is found, otherwise cargo 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 status code is spaces then cargo
is found, otherwise cargo 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: GCCE358.cbl
GIVEN:
A database lookup operation has been completed
WHEN:
The system evaluates the database operation status code
THEN:
If status code is spaces then cargo is found, otherwise cargo is not found
β Consolidated Acceptance Criteria
- The system processes the successful lookup result → the system sets cargo found 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_SetCargoFoundStatus(["Start Step"])
E_SetCargoFoundStatus(["End Step"])
N_SetCargoFoundStatus_Node0{"The system processes the successful
lookup result"}:::decision N_SetCargoFoundStatus_Node0_action["The system sets cargo found status
to true"]:::main N_SetCargoFoundStatus_Node0 -- Yes --> N_SetCargoFoundStatus_Node0_action N_SetCargoFoundStatus_Node0_action --> E_SetCargoFoundStatus S_SetCargoFoundStatus --> N_SetCargoFoundStatus_Node0 N_SetCargoFoundStatus_Node0 -- No --> E_SetCargoFoundStatus
lookup result"}:::decision N_SetCargoFoundStatus_Node0_action["The system sets cargo found status
to true"]:::main N_SetCargoFoundStatus_Node0 -- Yes --> N_SetCargoFoundStatus_Node0_action N_SetCargoFoundStatus_Node0_action --> E_SetCargoFoundStatus S_SetCargoFoundStatus --> N_SetCargoFoundStatus_Node0 N_SetCargoFoundStatus_Node0 -- No --> E_SetCargoFoundStatus
File: GCCE358.cbl
GIVEN:
Database operation completed with successful status
WHEN:
The system processes the successful lookup result
THEN:
The system sets cargo found status to true
β Consolidated Acceptance Criteria
- The system processes the unsuccessful lookup result → the system sets cargo not found 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_SetCargoNotFoundStatus(["Start Step"])
E_SetCargoNotFoundStatus(["End Step"])
N_SetCargoNotFoundStatus_Node0{"The system processes the
unsuccessful lookup result"}:::decision N_SetCargoNotFoundStatus_Node0_action["The system sets cargo not found
status to true"]:::main N_SetCargoNotFoundStatus_Node0 -- Yes --> N_SetCargoNotFoundStatus_Node0_action N_SetCargoNotFoundStatus_Node0_action --> E_SetCargoNotFoundStatus S_SetCargoNotFoundStatus --> N_SetCargoNotFoundStatus_Node0 N_SetCargoNotFoundStatus_Node0 -- No --> E_SetCargoNotFoundStatus
unsuccessful lookup result"}:::decision N_SetCargoNotFoundStatus_Node0_action["The system sets cargo not found
status to true"]:::main N_SetCargoNotFoundStatus_Node0 -- Yes --> N_SetCargoNotFoundStatus_Node0_action N_SetCargoNotFoundStatus_Node0_action --> E_SetCargoNotFoundStatus S_SetCargoNotFoundStatus --> N_SetCargoNotFoundStatus_Node0 N_SetCargoNotFoundStatus_Node0 -- No --> E_SetCargoNotFoundStatus
File: GCCE358.cbl
GIVEN:
Database operation completed with unsuccessful status
WHEN:
The system processes the unsuccessful lookup result
THEN:
The system sets cargo not found status to true
β Consolidated Acceptance Criteria
- The system starts processing equipment data → the VID segment structure is initialized and the identifier is set to 'VID'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeVIDSegmentStructure(["Start Step"])
E_InitializeVIDSegmentStructure(["End Step"])
N_InitializeVIDSegmentStructure_Node0{"The system starts processing
equipment data"}:::decision N_InitializeVIDSegmentStructure_Node0_action["The VID segment structure is
initialized and the identifier is
set to VID"]:::main N_InitializeVIDSegmentStructure_Node0 -- Yes --> N_InitializeVIDSegmentStructure_Node0_action N_InitializeVIDSegmentStructure_Node0_action --> E_InitializeVIDSegmentStructure S_InitializeVIDSegmentStructure --> N_InitializeVIDSegmentStructure_Node0 N_InitializeVIDSegmentStructure_Node0 -- No --> E_InitializeVIDSegmentStructure
equipment data"}:::decision N_InitializeVIDSegmentStructure_Node0_action["The VID segment structure is
initialized and the identifier is
set to VID"]:::main N_InitializeVIDSegmentStructure_Node0 -- Yes --> N_InitializeVIDSegmentStructure_Node0_action N_InitializeVIDSegmentStructure_Node0_action --> E_InitializeVIDSegmentStructure S_InitializeVIDSegmentStructure --> N_InitializeVIDSegmentStructure_Node0 N_InitializeVIDSegmentStructure_Node0 -- No --> E_InitializeVIDSegmentStructure
File: GCCE358.cbl
GIVEN:
A VID equipment segment needs to be created
WHEN:
The system starts processing equipment data
THEN:
- The vid segment structure is initialized
- The identifier is set to 'vid'
β Consolidated Acceptance Criteria
- The system processes VID segment creation → the equipment description code is set from the train list VID01 equipment type field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentDescriptionCodefromTrainList(["Start Step"])
E_SetEquipmentDescriptionCodefromTrainList(["End Step"])
N_SetEquipmentDescriptionCodefromTrainList_Node0{"The system processes VID segment
creation"}:::decision N_SetEquipmentDescriptionCodefromTrainList_Node0_action["The equipment description code is
set from the train list VID01
equipment type field"]:::main N_SetEquipmentDescriptionCodefromTrainList_Node0 -- Yes --> N_SetEquipmentDescriptionCodefromTrainList_Node0_action N_SetEquipmentDescriptionCodefromTrainList_Node0_action --> E_SetEquipmentDescriptionCodefromTrainList S_SetEquipmentDescriptionCodefromTrainList --> N_SetEquipmentDescriptionCodefromTrainList_Node0 N_SetEquipmentDescriptionCodefromTrainList_Node0 -- No --> E_SetEquipmentDescriptionCodefromTrainList
creation"}:::decision N_SetEquipmentDescriptionCodefromTrainList_Node0_action["The equipment description code is
set from the train list VID01
equipment type field"]:::main N_SetEquipmentDescriptionCodefromTrainList_Node0 -- Yes --> N_SetEquipmentDescriptionCodefromTrainList_Node0_action N_SetEquipmentDescriptionCodefromTrainList_Node0_action --> E_SetEquipmentDescriptionCodefromTrainList S_SetEquipmentDescriptionCodefromTrainList --> N_SetEquipmentDescriptionCodefromTrainList_Node0 N_SetEquipmentDescriptionCodefromTrainList_Node0 -- No --> E_SetEquipmentDescriptionCodefromTrainList
File: GCCE358.cbl
GIVEN:
Equipment data exists in the train list for the current equipment index
WHEN:
The system processes VID segment creation
THEN:
The equipment description code is set from the train list VID01 equipment type field
β Consolidated Acceptance Criteria
- The system processes VID segment creation → the equipment initial is set from the train list VID02 equipment 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_SetEquipmentInitialfromTrainList(["Start Step"])
E_SetEquipmentInitialfromTrainList(["End Step"])
N_SetEquipmentInitialfromTrainList_Node0{"The system processes VID segment
creation"}:::decision N_SetEquipmentInitialfromTrainList_Node0_action["The equipment initial is set from
the train list VID02 equipment
initial field"]:::main N_SetEquipmentInitialfromTrainList_Node0 -- Yes --> N_SetEquipmentInitialfromTrainList_Node0_action N_SetEquipmentInitialfromTrainList_Node0_action --> E_SetEquipmentInitialfromTrainList S_SetEquipmentInitialfromTrainList --> N_SetEquipmentInitialfromTrainList_Node0 N_SetEquipmentInitialfromTrainList_Node0 -- No --> E_SetEquipmentInitialfromTrainList
creation"}:::decision N_SetEquipmentInitialfromTrainList_Node0_action["The equipment initial is set from
the train list VID02 equipment
initial field"]:::main N_SetEquipmentInitialfromTrainList_Node0 -- Yes --> N_SetEquipmentInitialfromTrainList_Node0_action N_SetEquipmentInitialfromTrainList_Node0_action --> E_SetEquipmentInitialfromTrainList S_SetEquipmentInitialfromTrainList --> N_SetEquipmentInitialfromTrainList_Node0 N_SetEquipmentInitialfromTrainList_Node0 -- No --> E_SetEquipmentInitialfromTrainList
File: GCCE358.cbl
GIVEN:
Equipment data exists in the train list for the current equipment index
WHEN:
The system processes VID segment creation
THEN:
The equipment initial is set from the train list VID02 equipment initial field
β Consolidated Acceptance Criteria
- The system needs to determine the equipment number source → if the US-CCN-KEY starts with 'CPRS' OR the 350-CAR-NUMBER is spaces, use equipment number from train list, otherwise use the foreign car number from cargo database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentCPownedorNoForeignCarNumber(["Start Step"])
E_IsEquipmentCPownedorNoForeignCarNumber(["End Step"])
N_IsEquipmentCPownedorNoForeignCarNumber_Node0{"The system needs to determine the
equipment number source"}:::decision N_IsEquipmentCPownedorNoForeignCarNumber_Node0_action["If the US-CCN-KEY starts with CPRS
OR the 350-CAR-NUMBER is spaces, use
equipment number from train list,
otherwise use the foreign car number
from cargo database"]:::main N_IsEquipmentCPownedorNoForeignCarNumber_Node0 -- Yes --> N_IsEquipmentCPownedorNoForeignCarNumber_Node0_action N_IsEquipmentCPownedorNoForeignCarNumber_Node0_action --> E_IsEquipmentCPownedorNoForeignCarNumber S_IsEquipmentCPownedorNoForeignCarNumber --> N_IsEquipmentCPownedorNoForeignCarNumber_Node0 N_IsEquipmentCPownedorNoForeignCarNumber_Node0 -- No --> E_IsEquipmentCPownedorNoForeignCarNumber
equipment number source"}:::decision N_IsEquipmentCPownedorNoForeignCarNumber_Node0_action["If the US-CCN-KEY starts with CPRS
OR the 350-CAR-NUMBER is spaces, use
equipment number from train list,
otherwise use the foreign car number
from cargo database"]:::main N_IsEquipmentCPownedorNoForeignCarNumber_Node0 -- Yes --> N_IsEquipmentCPownedorNoForeignCarNumber_Node0_action N_IsEquipmentCPownedorNoForeignCarNumber_Node0_action --> E_IsEquipmentCPownedorNoForeignCarNumber S_IsEquipmentCPownedorNoForeignCarNumber --> N_IsEquipmentCPownedorNoForeignCarNumber_Node0 N_IsEquipmentCPownedorNoForeignCarNumber_Node0 -- No --> E_IsEquipmentCPownedorNoForeignCarNumber
File: GCCE358.cbl
GIVEN:
Equipment data is being processed for VID segment creation
WHEN:
The system needs to determine the equipment number source
THEN:
If the US-CCN-KEY starts with 'CPRS' OR the 350-CAR-NUMBER is spaces, use equipment number from train list, otherwise use the foreign car number from cargo database
β Consolidated Acceptance Criteria
- The system sets the equipment number in VID segment → the equipment number is set from the train list VID03 equipment 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_UseEquipmentNumberfromTrainList(["Start Step"])
E_UseEquipmentNumberfromTrainList(["End Step"])
N_UseEquipmentNumberfromTrainList_Node0{"The system sets the equipment
number in VID segment"}:::decision N_UseEquipmentNumberfromTrainList_Node0_action["The equipment number is set from
the train list VID03 equipment
number field"]:::main N_UseEquipmentNumberfromTrainList_Node0 -- Yes --> N_UseEquipmentNumberfromTrainList_Node0_action N_UseEquipmentNumberfromTrainList_Node0_action --> E_UseEquipmentNumberfromTrainList S_UseEquipmentNumberfromTrainList --> N_UseEquipmentNumberfromTrainList_Node0 N_UseEquipmentNumberfromTrainList_Node0 -- No --> E_UseEquipmentNumberfromTrainList
number in VID segment"}:::decision N_UseEquipmentNumberfromTrainList_Node0_action["The equipment number is set from
the train list VID03 equipment
number field"]:::main N_UseEquipmentNumberfromTrainList_Node0 -- Yes --> N_UseEquipmentNumberfromTrainList_Node0_action N_UseEquipmentNumberfromTrainList_Node0_action --> E_UseEquipmentNumberfromTrainList S_UseEquipmentNumberfromTrainList --> N_UseEquipmentNumberfromTrainList_Node0 N_UseEquipmentNumberfromTrainList_Node0 -- No --> E_UseEquipmentNumberfromTrainList
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is CP-owned (US-CCN-KEY starts with 'CPRS') OR foreign car number is not available (350-CAR-NUMBER is spaces)
WHEN:
The system sets the equipment number in VID segment
THEN:
The equipment number is set from the train list VID03 equipment number field
β Consolidated Acceptance Criteria
- The system sets the equipment number in VID segment → the equipment number is set from the cargo database 350-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_UseForeignCarNumberfromCargoDatabase(["Start Step"])
E_UseForeignCarNumberfromCargoDatabase(["End Step"])
N_UseForeignCarNumberfromCargoDatabase_Node0{"The system sets the equipment
number in VID segment"}:::decision N_UseForeignCarNumberfromCargoDatabase_Node0_action["The equipment number is set from
the cargo database 350-CAR-NUMBER
field"]:::main N_UseForeignCarNumberfromCargoDatabase_Node0 -- Yes --> N_UseForeignCarNumberfromCargoDatabase_Node0_action N_UseForeignCarNumberfromCargoDatabase_Node0_action --> E_UseForeignCarNumberfromCargoDatabase S_UseForeignCarNumberfromCargoDatabase --> N_UseForeignCarNumberfromCargoDatabase_Node0 N_UseForeignCarNumberfromCargoDatabase_Node0 -- No --> E_UseForeignCarNumberfromCargoDatabase
number in VID segment"}:::decision N_UseForeignCarNumberfromCargoDatabase_Node0_action["The equipment number is set from
the cargo database 350-CAR-NUMBER
field"]:::main N_UseForeignCarNumberfromCargoDatabase_Node0 -- Yes --> N_UseForeignCarNumberfromCargoDatabase_Node0_action N_UseForeignCarNumberfromCargoDatabase_Node0_action --> E_UseForeignCarNumberfromCargoDatabase S_UseForeignCarNumberfromCargoDatabase --> N_UseForeignCarNumberfromCargoDatabase_Node0 N_UseForeignCarNumberfromCargoDatabase_Node0 -- No --> E_UseForeignCarNumberfromCargoDatabase
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is not CP-owned (US-CCN-KEY does not start with 'CPRS') AND foreign car number is available (350-CAR-NUMBER is not spaces)
WHEN:
The system sets the equipment number in VID segment
THEN:
The equipment number is set from the cargo database 350-CAR-NUMBER field
β Consolidated Acceptance Criteria
- The system completes VID segment creation → the VID segment is moved to transmission data and inserted into the EDI data structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertVIDSegmentintoEDIData(["Start Step"])
E_InsertVIDSegmentintoEDIData(["End Step"])
N_InsertVIDSegmentintoEDIData_Node0{"The system completes VID segment
creation"}:::decision N_InsertVIDSegmentintoEDIData_Node0_action["The VID segment is moved to
transmission data and inserted into
the EDI data structure"]:::main N_InsertVIDSegmentintoEDIData_Node0 -- Yes --> N_InsertVIDSegmentintoEDIData_Node0_action N_InsertVIDSegmentintoEDIData_Node0_action --> E_InsertVIDSegmentintoEDIData S_InsertVIDSegmentintoEDIData --> N_InsertVIDSegmentintoEDIData_Node0 N_InsertVIDSegmentintoEDIData_Node0 -- No --> E_InsertVIDSegmentintoEDIData
creation"}:::decision N_InsertVIDSegmentintoEDIData_Node0_action["The VID segment is moved to
transmission data and inserted into
the EDI data structure"]:::main N_InsertVIDSegmentintoEDIData_Node0 -- Yes --> N_InsertVIDSegmentintoEDIData_Node0_action N_InsertVIDSegmentintoEDIData_Node0_action --> E_InsertVIDSegmentintoEDIData S_InsertVIDSegmentintoEDIData --> N_InsertVIDSegmentintoEDIData_Node0 N_InsertVIDSegmentintoEDIData_Node0 -- No --> E_InsertVIDSegmentintoEDIData
File: GCCE358.cbl
GIVEN:
VID segment has been populated with equipment data
WHEN:
The system completes VID segment creation
THEN:
- The vid segment is moved to transmission data
- Inserted into the edi data structure
β Consolidated Acceptance Criteria
- The system begins MBL processing for the equipment → a new MBL segment structure is initialized and the MBL identifier is set to 'MBL'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMBLSegment(["Start Step"])
E_InitializeMBLSegment(["End Step"])
N_InitializeMBLSegment_Node0{"The system begins MBL processing
for the equipment"}:::decision N_InitializeMBLSegment_Node0_action["A new MBL segment structure is
initialized and the MBL identifier
is set to MBL"]:::main N_InitializeMBLSegment_Node0 -- Yes --> N_InitializeMBLSegment_Node0_action N_InitializeMBLSegment_Node0_action --> E_InitializeMBLSegment S_InitializeMBLSegment --> N_InitializeMBLSegment_Node0 N_InitializeMBLSegment_Node0 -- No --> E_InitializeMBLSegment
for the equipment"}:::decision N_InitializeMBLSegment_Node0_action["A new MBL segment structure is
initialized and the MBL identifier
is set to MBL"]:::main N_InitializeMBLSegment_Node0 -- Yes --> N_InitializeMBLSegment_Node0_action N_InitializeMBLSegment_Node0_action --> E_InitializeMBLSegment S_InitializeMBLSegment --> N_InitializeMBLSegment_Node0 N_InitializeMBLSegment_Node0 -- No --> E_InitializeMBLSegment
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Equipment has an associated bill of lading (US-CCN-KEY is not spaces)
WHEN:
The system begins MBL processing for the equipment
THEN:
- A new mbl segment structure is initialized
- The mbl identifier is set to 'mbl'
β Consolidated Acceptance Criteria
- Processing MBL segment creation → the carrier SCAC code is extracted from the equipment's MBL01-M1309-US-CCN-SCAC field and assigned to MBL-01-SCAC
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarrierSCACCodefromEquipment(["Start Step"])
E_ExtractCarrierSCACCodefromEquipment(["End Step"])
N_ExtractCarrierSCACCodefromEquipment_Node0{"Processing MBL segment creation"}:::decision
N_ExtractCarrierSCACCodefromEquipment_Node0_action["The carrier SCAC code is extracted
from the equipment s
MBL01-M1309-US-CCN-SCAC field and
assigned to MBL-01-SCAC"]:::main N_ExtractCarrierSCACCodefromEquipment_Node0 -- Yes --> N_ExtractCarrierSCACCodefromEquipment_Node0_action N_ExtractCarrierSCACCodefromEquipment_Node0_action --> E_ExtractCarrierSCACCodefromEquipment S_ExtractCarrierSCACCodefromEquipment --> N_ExtractCarrierSCACCodefromEquipment_Node0 N_ExtractCarrierSCACCodefromEquipment_Node0 -- No --> E_ExtractCarrierSCACCodefromEquipment
from the equipment s
MBL01-M1309-US-CCN-SCAC field and
assigned to MBL-01-SCAC"]:::main N_ExtractCarrierSCACCodefromEquipment_Node0 -- Yes --> N_ExtractCarrierSCACCodefromEquipment_Node0_action N_ExtractCarrierSCACCodefromEquipment_Node0_action --> E_ExtractCarrierSCACCodefromEquipment S_ExtractCarrierSCACCodefromEquipment --> N_ExtractCarrierSCACCodefromEquipment_Node0 N_ExtractCarrierSCACCodefromEquipment_Node0 -- No --> E_ExtractCarrierSCACCodefromEquipment
File: GCCE358.cbl
GIVEN:
Equipment has bill of lading information
WHEN:
Processing MBL segment creation
THEN:
- The carrier scac code is extracted from the equipment's mbl01-m1309-us-ccn-scac field
- Assigned to mbl-01-scac
β Consolidated Acceptance Criteria
- Processing MBL segment creation → the bill of lading number is extracted from the equipment's MBL02-M1304-US-CCN-ID field and assigned to MBL-02-BOL-WAYBILL
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBillofLadingNumberfromEquipment(["Start Step"])
E_ExtractBillofLadingNumberfromEquipment(["End Step"])
N_ExtractBillofLadingNumberfromEquipment_Node0{"Processing MBL segment creation"}:::decision
N_ExtractBillofLadingNumberfromEquipment_Node0_action["The bill of lading number is
extracted from the equipment s
MBL02-M1304-US-CCN-ID field and
assigned to MBL-02-BOL-WAYBILL"]:::main N_ExtractBillofLadingNumberfromEquipment_Node0 -- Yes --> N_ExtractBillofLadingNumberfromEquipment_Node0_action N_ExtractBillofLadingNumberfromEquipment_Node0_action --> E_ExtractBillofLadingNumberfromEquipment S_ExtractBillofLadingNumberfromEquipment --> N_ExtractBillofLadingNumberfromEquipment_Node0 N_ExtractBillofLadingNumberfromEquipment_Node0 -- No --> E_ExtractBillofLadingNumberfromEquipment
extracted from the equipment s
MBL02-M1304-US-CCN-ID field and
assigned to MBL-02-BOL-WAYBILL"]:::main N_ExtractBillofLadingNumberfromEquipment_Node0 -- Yes --> N_ExtractBillofLadingNumberfromEquipment_Node0_action N_ExtractBillofLadingNumberfromEquipment_Node0_action --> E_ExtractBillofLadingNumberfromEquipment S_ExtractBillofLadingNumberfromEquipment --> N_ExtractBillofLadingNumberfromEquipment_Node0 N_ExtractBillofLadingNumberfromEquipment_Node0 -- No --> E_ExtractBillofLadingNumberfromEquipment
File: GCCE358.cbl
GIVEN:
Equipment has bill of lading information
WHEN:
Processing MBL segment creation
THEN:
- The bill of lading number is extracted from the equipment's mbl02-m1304-us-ccn-id field
- Assigned to mbl-02-bol-waybill
β Consolidated Acceptance Criteria
- The carrier SCAC code equals 'CPRS' → the automated response code (MBL-04-YES-NO-RESP-CODE) is set to 'Y' indicating automated processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAutomatedResponsetoY(["Start Step"])
E_SetAutomatedResponsetoY(["End Step"])
N_SetAutomatedResponsetoY_Node0{"The carrier SCAC code equals CPRS"}:::decision
N_SetAutomatedResponsetoY_Node0_action["The automated response code
MBL-04-YES-NO-RESP-CODE is set to Y
indicating automated processing"]:::main N_SetAutomatedResponsetoY_Node0 -- Yes --> N_SetAutomatedResponsetoY_Node0_action N_SetAutomatedResponsetoY_Node0_action --> E_SetAutomatedResponsetoY S_SetAutomatedResponsetoY --> N_SetAutomatedResponsetoY_Node0 N_SetAutomatedResponsetoY_Node0 -- No --> E_SetAutomatedResponsetoY
MBL-04-YES-NO-RESP-CODE is set to Y
indicating automated processing"]:::main N_SetAutomatedResponsetoY_Node0 -- Yes --> N_SetAutomatedResponsetoY_Node0_action N_SetAutomatedResponsetoY_Node0_action --> E_SetAutomatedResponsetoY S_SetAutomatedResponsetoY --> N_SetAutomatedResponsetoY_Node0 N_SetAutomatedResponsetoY_Node0 -- No --> E_SetAutomatedResponsetoY
File: GCCE358.cbl
GIVEN:
A bill of lading with carrier information
WHEN:
The carrier SCAC code equals 'CPRS'
THEN:
The automated response code (MBL-04-YES-NO-RESP-CODE) is set to 'Y' indicating automated processing
β Consolidated Acceptance Criteria
- The carrier SCAC code is not 'CPRS' → the system queries the SS table using the carrier SCAC code and origin port to determine automation capabilities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupCarrierinSSTablebySCACandPort(["Start Step"])
E_LookupCarrierinSSTablebySCACandPort(["End Step"])
N_LookupCarrierinSSTablebySCACandPort_Node0{"The carrier SCAC code is not CPRS"}:::decision
N_LookupCarrierinSSTablebySCACandPort_Node0_action["The system queries the SS table
using the carrier SCAC code and
origin port to determine automation
capabilities"]:::main N_LookupCarrierinSSTablebySCACandPort_Node0 -- Yes --> N_LookupCarrierinSSTablebySCACandPort_Node0_action N_LookupCarrierinSSTablebySCACandPort_Node0_action --> E_LookupCarrierinSSTablebySCACandPort S_LookupCarrierinSSTablebySCACandPort --> N_LookupCarrierinSSTablebySCACandPort_Node0 N_LookupCarrierinSSTablebySCACandPort_Node0 -- No --> E_LookupCarrierinSSTablebySCACandPort
using the carrier SCAC code and
origin port to determine automation
capabilities"]:::main N_LookupCarrierinSSTablebySCACandPort_Node0 -- Yes --> N_LookupCarrierinSSTablebySCACandPort_Node0_action N_LookupCarrierinSSTablebySCACandPort_Node0_action --> E_LookupCarrierinSSTablebySCACandPort S_LookupCarrierinSSTablebySCACandPort --> N_LookupCarrierinSSTablebySCACandPort_Node0 N_LookupCarrierinSSTablebySCACandPort_Node0 -- No --> E_LookupCarrierinSSTablebySCACandPort
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A bill of lading with a non-CPRS carrier
WHEN:
The carrier SCAC code is not 'CPRS'
THEN:
- The system queries the ss table using the carrier scac code
- Origin port to determine automation capabilities
β Consolidated Acceptance Criteria
- The lookup is successful and the carrier's automated flag equals 'Y' → the automated response code is set to 'Y', otherwise it is set to 'N'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAutomatedResponsetoYorN(["Start Step"])
E_SetAutomatedResponsetoYorN(["End Step"])
N_SetAutomatedResponsetoYorN_Node0{"The lookup is successful and the
carrier s automated flag equals Y"}:::decision N_SetAutomatedResponsetoYorN_Node0_action["The automated response code is set
to Y , otherwise it is set to N"]:::main N_SetAutomatedResponsetoYorN_Node0 -- Yes --> N_SetAutomatedResponsetoYorN_Node0_action N_SetAutomatedResponsetoYorN_Node0_action --> E_SetAutomatedResponsetoYorN S_SetAutomatedResponsetoYorN --> N_SetAutomatedResponsetoYorN_Node0 N_SetAutomatedResponsetoYorN_Node0 -- No --> E_SetAutomatedResponsetoYorN
carrier s automated flag equals Y"}:::decision N_SetAutomatedResponsetoYorN_Node0_action["The automated response code is set
to Y , otherwise it is set to N"]:::main N_SetAutomatedResponsetoYorN_Node0 -- Yes --> N_SetAutomatedResponsetoYorN_Node0_action N_SetAutomatedResponsetoYorN_Node0_action --> E_SetAutomatedResponsetoYorN S_SetAutomatedResponsetoYorN --> N_SetAutomatedResponsetoYorN_Node0 N_SetAutomatedResponsetoYorN_Node0 -- No --> E_SetAutomatedResponsetoYorN
File: GCCE358.cbl
GIVEN:
A carrier table lookup has been performed for a non-CPRS carrier
WHEN:
- The lookup is successful
- The carrier's automated flag equals 'y'
THEN:
The automated response code is set to 'Y', otherwise it is set to 'N'
β Consolidated Acceptance Criteria
- The equipment load status is 'E' (Empty) AND the US-CCN-KEY is not spaces AND the bill of lading type code equals 23 → the automated response code is overridden to 'Y' regardless of previous carrier lookup results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OverrideResponsetoYforElectronicReporting(["Start Step"])
E_OverrideResponsetoYforElectronicReporting(["End Step"])
N_OverrideResponsetoYforElectronicReporting_Node0{"The equipment load status is E
Empty AND the US-CCN-KEY is not
spaces AND the bill of lading type
code equals 23"}:::decision N_OverrideResponsetoYforElectronicReporting_Node0_action["The automated response code is
overridden to Y regardless of
previous carrier lookup results"]:::main N_OverrideResponsetoYforElectronicReporting_Node0 -- Yes --> N_OverrideResponsetoYforElectronicReporting_Node0_action N_OverrideResponsetoYforElectronicReporting_Node0_action --> E_OverrideResponsetoYforElectronicReporting S_OverrideResponsetoYforElectronicReporting --> N_OverrideResponsetoYforElectronicReporting_Node0 N_OverrideResponsetoYforElectronicReporting_Node0 -- No --> E_OverrideResponsetoYforElectronicReporting
Empty AND the US-CCN-KEY is not
spaces AND the bill of lading type
code equals 23"}:::decision N_OverrideResponsetoYforElectronicReporting_Node0_action["The automated response code is
overridden to Y regardless of
previous carrier lookup results"]:::main N_OverrideResponsetoYforElectronicReporting_Node0 -- Yes --> N_OverrideResponsetoYforElectronicReporting_Node0_action N_OverrideResponsetoYforElectronicReporting_Node0_action --> E_OverrideResponsetoYforElectronicReporting S_OverrideResponsetoYforElectronicReporting --> N_OverrideResponsetoYforElectronicReporting_Node0 N_OverrideResponsetoYforElectronicReporting_Node0 -- No --> E_OverrideResponsetoYforElectronicReporting
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
Equipment with a bill of lading
WHEN:
- The equipment load status is 'e' (empty) and the us-ccn-key is not spaces
- The bill of lading type code equals 23
THEN:
The automated response code is overridden to 'Y' regardless of previous carrier lookup results
β Consolidated Acceptance Criteria
- All MBL processing is complete → the MBL segment is moved to the transmission data structure and inserted into the EDI data stream
- The segment is ready for transmission → the MBL segment is inserted into the EDI transmission data structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertMBLSegmentintoEDIData(["Start Step"])
E_InsertMBLSegmentintoEDIData(["End Step"])
N_InsertMBLSegmentintoEDIData_Node0{"All MBL processing is complete"}:::decision
N_InsertMBLSegmentintoEDIData_Node0_action["The MBL segment is moved to the
transmission data structure and
inserted into the EDI data stream"]:::main N_InsertMBLSegmentintoEDIData_Node0 -- Yes --> N_InsertMBLSegmentintoEDIData_Node0_action N_InsertMBLSegmentintoEDIData_Node0_action --> E_InsertMBLSegmentintoEDIData S_InsertMBLSegmentintoEDIData --> N_InsertMBLSegmentintoEDIData_Node0 N_InsertMBLSegmentintoEDIData_Node1{"The segment is ready for
transmission"}:::decision N_InsertMBLSegmentintoEDIData_Node1_action["The MBL segment is inserted into
the EDI transmission data structure"]:::main N_InsertMBLSegmentintoEDIData_Node1 -- Yes --> N_InsertMBLSegmentintoEDIData_Node1_action N_InsertMBLSegmentintoEDIData_Node1_action --> E_InsertMBLSegmentintoEDIData N_InsertMBLSegmentintoEDIData_Node0 -- No --> N_InsertMBLSegmentintoEDIData_Node1 N_InsertMBLSegmentintoEDIData_Node1 -- No --> E_InsertMBLSegmentintoEDIData
transmission data structure and
inserted into the EDI data stream"]:::main N_InsertMBLSegmentintoEDIData_Node0 -- Yes --> N_InsertMBLSegmentintoEDIData_Node0_action N_InsertMBLSegmentintoEDIData_Node0_action --> E_InsertMBLSegmentintoEDIData S_InsertMBLSegmentintoEDIData --> N_InsertMBLSegmentintoEDIData_Node0 N_InsertMBLSegmentintoEDIData_Node1{"The segment is ready for
transmission"}:::decision N_InsertMBLSegmentintoEDIData_Node1_action["The MBL segment is inserted into
the EDI transmission data structure"]:::main N_InsertMBLSegmentintoEDIData_Node1 -- Yes --> N_InsertMBLSegmentintoEDIData_Node1_action N_InsertMBLSegmentintoEDIData_Node1_action --> E_InsertMBLSegmentintoEDIData N_InsertMBLSegmentintoEDIData_Node0 -- No --> N_InsertMBLSegmentintoEDIData_Node1 N_InsertMBLSegmentintoEDIData_Node1 -- No --> E_InsertMBLSegmentintoEDIData
File: GCCE358.cbl
GIVEN:
A fully populated MBL segment with carrier and bill information
WHEN:
All MBL processing is complete
THEN:
- The mbl segment is moved to the transmission data structure
- Inserted into the edi data stream
File: GCCE358.cbl
GIVEN:
An MBL segment has been fully populated with all required data
WHEN:
The segment is ready for transmission
THEN:
The MBL segment is inserted into the EDI transmission data structure
β Consolidated Acceptance Criteria
- The carrier SCAC code equals 'CPRS' → set the automated response code to 'Y' indicating yes for automated processing
- The carrier SCAC code equals 'CPRS' → set the automated response code to 'Y' indicating automated processing is available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCarrierCPRS(["Start Step"])
E_IsCarrierCPRS(["End Step"])
N_IsCarrierCPRS_Node0{"The carrier SCAC code equals CPRS"}:::decision
N_IsCarrierCPRS_Node0_action["Set the automated response code to
Y indicating yes for automated
processing"]:::main N_IsCarrierCPRS_Node0 -- Yes --> N_IsCarrierCPRS_Node0_action N_IsCarrierCPRS_Node0_action --> E_IsCarrierCPRS S_IsCarrierCPRS --> N_IsCarrierCPRS_Node0 N_IsCarrierCPRS_Node1{"The carrier SCAC code equals CPRS"}:::decision N_IsCarrierCPRS_Node1_action["Set the automated response code to
Y indicating automated processing is
available"]:::main N_IsCarrierCPRS_Node1 -- Yes --> N_IsCarrierCPRS_Node1_action N_IsCarrierCPRS_Node1_action --> E_IsCarrierCPRS N_IsCarrierCPRS_Node0 -- No --> N_IsCarrierCPRS_Node1 N_IsCarrierCPRS_Node1 -- No --> E_IsCarrierCPRS
Y indicating yes for automated
processing"]:::main N_IsCarrierCPRS_Node0 -- Yes --> N_IsCarrierCPRS_Node0_action N_IsCarrierCPRS_Node0_action --> E_IsCarrierCPRS S_IsCarrierCPRS --> N_IsCarrierCPRS_Node0 N_IsCarrierCPRS_Node1{"The carrier SCAC code equals CPRS"}:::decision N_IsCarrierCPRS_Node1_action["Set the automated response code to
Y indicating automated processing is
available"]:::main N_IsCarrierCPRS_Node1 -- Yes --> N_IsCarrierCPRS_Node1_action N_IsCarrierCPRS_Node1_action --> E_IsCarrierCPRS N_IsCarrierCPRS_Node0 -- No --> N_IsCarrierCPRS_Node1 N_IsCarrierCPRS_Node1 -- No --> E_IsCarrierCPRS
File: GCCE358.cbl
GIVEN:
A bill of lading record is being processed with carrier SCAC code
WHEN:
The carrier SCAC code equals 'CPRS'
THEN:
Set the automated response code to 'Y' indicating yes for automated processing
File: GCCE358.cbl
GIVEN:
A bill of lading record is being processed with carrier SCAC code
WHEN:
The carrier SCAC code equals 'CPRS'
THEN:
Set the automated response code to 'Y' indicating automated processing is available
β Consolidated Acceptance Criteria
- The carrier SCAC code is not 'CPRS' → initialize the SS table lookup key structure with table ID 'SS', the carrier SCAC code, and departure port location
- The carrier SCAC code is not 'CPRS' → initialize the table lookup key structure and set table ID to 'SS' for SCAC automation 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_InitializeSSTableKey(["Start Step"])
E_InitializeSSTableKey(["End Step"])
N_InitializeSSTableKey_Node0{"The carrier SCAC code is not CPRS"}:::decision
N_InitializeSSTableKey_Node0_action["Initialize the SS table lookup key
structure with table ID SS , the
carrier SCAC code, and departure
port location"]:::main N_InitializeSSTableKey_Node0 -- Yes --> N_InitializeSSTableKey_Node0_action N_InitializeSSTableKey_Node0_action --> E_InitializeSSTableKey S_InitializeSSTableKey --> N_InitializeSSTableKey_Node0 N_InitializeSSTableKey_Node1{"The carrier SCAC code is not CPRS"}:::decision N_InitializeSSTableKey_Node1_action["Initialize the table lookup key
structure and set table ID to SS for
SCAC automation lookup"]:::main N_InitializeSSTableKey_Node1 -- Yes --> N_InitializeSSTableKey_Node1_action N_InitializeSSTableKey_Node1_action --> E_InitializeSSTableKey N_InitializeSSTableKey_Node0 -- No --> N_InitializeSSTableKey_Node1 N_InitializeSSTableKey_Node1 -- No --> E_InitializeSSTableKey
structure with table ID SS , the
carrier SCAC code, and departure
port location"]:::main N_InitializeSSTableKey_Node0 -- Yes --> N_InitializeSSTableKey_Node0_action N_InitializeSSTableKey_Node0_action --> E_InitializeSSTableKey S_InitializeSSTableKey --> N_InitializeSSTableKey_Node0 N_InitializeSSTableKey_Node1{"The carrier SCAC code is not CPRS"}:::decision N_InitializeSSTableKey_Node1_action["Initialize the table lookup key
structure and set table ID to SS for
SCAC automation lookup"]:::main N_InitializeSSTableKey_Node1 -- Yes --> N_InitializeSSTableKey_Node1_action N_InitializeSSTableKey_Node1_action --> E_InitializeSSTableKey N_InitializeSSTableKey_Node0 -- No --> N_InitializeSSTableKey_Node1 N_InitializeSSTableKey_Node1 -- No --> E_InitializeSSTableKey
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A bill of lading record with a non-CPRS carrier SCAC code needs automated status determination
WHEN:
The carrier SCAC code is not 'CPRS'
THEN:
Initialize the SS table lookup key structure with table ID 'SS', the carrier SCAC code, and departure port location
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A bill of lading record is being processed for a non-CPRS carrier
WHEN:
The carrier SCAC code is not 'CPRS'
THEN:
- Initialize the table lookup key structure
- Set table id to 'ss' for scac automation lookup
β Consolidated Acceptance Criteria
- The table lookup function is called → query the SS table and return the carrier automation configuration 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_CallSSTableLookupFunction(["Start Step"])
E_CallSSTableLookupFunction(["End Step"])
N_CallSSTableLookupFunction_Node0{"The table lookup function is called"}:::decision
N_CallSSTableLookupFunction_Node0_action["Query the SS table and return the
carrier automation configuration
data"]:::main N_CallSSTableLookupFunction_Node0 -- Yes --> N_CallSSTableLookupFunction_Node0_action N_CallSSTableLookupFunction_Node0_action --> E_CallSSTableLookupFunction S_CallSSTableLookupFunction --> N_CallSSTableLookupFunction_Node0 N_CallSSTableLookupFunction_Node0 -- No --> E_CallSSTableLookupFunction
carrier automation configuration
data"]:::main N_CallSSTableLookupFunction_Node0 -- Yes --> N_CallSSTableLookupFunction_Node0_action N_CallSSTableLookupFunction_Node0_action --> E_CallSSTableLookupFunction S_CallSSTableLookupFunction --> N_CallSSTableLookupFunction_Node0 N_CallSSTableLookupFunction_Node0 -- No --> E_CallSSTableLookupFunction
File: GCCE358.cbl
GIVEN:
SS table lookup parameters are properly initialized with table ID, SCAC code, and port location
WHEN:
The table lookup function is called
THEN:
- Query the ss table
- Return the carrier automation configuration data
β Consolidated Acceptance Criteria
- The automated carrier flag in the table data equals 'Y' → set the response code to 'Y' for automated processing, otherwise set to 'N' for manual processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCarrierAutomatedinTable(["Start Step"])
E_IsCarrierAutomatedinTable(["End Step"])
N_IsCarrierAutomatedinTable_Node0{"The automated carrier flag in the
table data equals Y"}:::decision N_IsCarrierAutomatedinTable_Node0_action["Set the response code to Y for
automated processing, otherwise set
to N for manual processing"]:::main N_IsCarrierAutomatedinTable_Node0 -- Yes --> N_IsCarrierAutomatedinTable_Node0_action N_IsCarrierAutomatedinTable_Node0_action --> E_IsCarrierAutomatedinTable S_IsCarrierAutomatedinTable --> N_IsCarrierAutomatedinTable_Node0 N_IsCarrierAutomatedinTable_Node0 -- No --> E_IsCarrierAutomatedinTable
table data equals Y"}:::decision N_IsCarrierAutomatedinTable_Node0_action["Set the response code to Y for
automated processing, otherwise set
to N for manual processing"]:::main N_IsCarrierAutomatedinTable_Node0 -- Yes --> N_IsCarrierAutomatedinTable_Node0_action N_IsCarrierAutomatedinTable_Node0_action --> E_IsCarrierAutomatedinTable S_IsCarrierAutomatedinTable --> N_IsCarrierAutomatedinTable_Node0 N_IsCarrierAutomatedinTable_Node0 -- No --> E_IsCarrierAutomatedinTable
File: GCCE358.cbl
GIVEN:
SS table lookup was successful and returned carrier configuration data
WHEN:
The automated carrier flag in the table data equals 'Y'
THEN:
Set the response code to 'Y' for automated processing, otherwise set to 'N' for manual processing
β Consolidated Acceptance Criteria
- The table lookup fails or the carrier automated flag is not 'Y' → set the response code to 'N' indicating manual processing is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAutomatedStatustoN(["Start Step"])
E_SetAutomatedStatustoN(["End Step"])
N_SetAutomatedStatustoN_Node0{"The table lookup fails or the
carrier automated flag is not Y"}:::decision N_SetAutomatedStatustoN_Node0_action["Set the response code to N
indicating manual processing is
required"]:::main N_SetAutomatedStatustoN_Node0 -- Yes --> N_SetAutomatedStatustoN_Node0_action N_SetAutomatedStatustoN_Node0_action --> E_SetAutomatedStatustoN S_SetAutomatedStatustoN --> N_SetAutomatedStatustoN_Node0 N_SetAutomatedStatustoN_Node0 -- No --> E_SetAutomatedStatustoN
carrier automated flag is not Y"}:::decision N_SetAutomatedStatustoN_Node0_action["Set the response code to N
indicating manual processing is
required"]:::main N_SetAutomatedStatustoN_Node0 -- Yes --> N_SetAutomatedStatustoN_Node0_action N_SetAutomatedStatustoN_Node0_action --> E_SetAutomatedStatustoN S_SetAutomatedStatustoN --> N_SetAutomatedStatustoN_Node0 N_SetAutomatedStatustoN_Node0 -- No --> E_SetAutomatedStatustoN
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
SS table lookup was attempted for a non-CPRS carrier
WHEN:
The table lookup fails or the carrier automated flag is not 'Y'
THEN:
Set the response code to 'N' indicating manual processing is required
β Consolidated Acceptance Criteria
- The carrier SCAC code equals 'CPRS' → set the response code to 'Y' indicating automated carrier processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCarrierSCACCPRS(["Start Step"])
E_IsCarrierSCACCPRS(["End Step"])
N_IsCarrierSCACCPRS_Node0{"The carrier SCAC code equals CPRS"}:::decision
N_IsCarrierSCACCPRS_Node0_action["Set the response code to Y
indicating automated carrier
processing"]:::main N_IsCarrierSCACCPRS_Node0 -- Yes --> N_IsCarrierSCACCPRS_Node0_action N_IsCarrierSCACCPRS_Node0_action --> E_IsCarrierSCACCPRS S_IsCarrierSCACCPRS --> N_IsCarrierSCACCPRS_Node0 N_IsCarrierSCACCPRS_Node0 -- No --> E_IsCarrierSCACCPRS
indicating automated carrier
processing"]:::main N_IsCarrierSCACCPRS_Node0 -- Yes --> N_IsCarrierSCACCPRS_Node0_action N_IsCarrierSCACCPRS_Node0_action --> E_IsCarrierSCACCPRS S_IsCarrierSCACCPRS --> N_IsCarrierSCACCPRS_Node0 N_IsCarrierSCACCPRS_Node0 -- No --> E_IsCarrierSCACCPRS
File: GCCE358.cbl
GIVEN:
A bill of lading record is being processed with carrier SCAC code
WHEN:
The carrier SCAC code equals 'CPRS'
THEN:
Set the response code to 'Y' indicating automated carrier processing
β Consolidated Acceptance Criteria
- The carrier automation status needs to be determined → initialize the SS table lookup with table ID 'SS', the carrier SCAC code, and the origin port
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildSSTableLookupKey(["Start Step"])
E_BuildSSTableLookupKey(["End Step"])
N_BuildSSTableLookupKey_Node0{"The carrier automation status needs
to be determined"}:::decision N_BuildSSTableLookupKey_Node0_action["Initialize the SS table lookup with
table ID SS , the carrier SCAC code,
and the origin port"]:::main N_BuildSSTableLookupKey_Node0 -- Yes --> N_BuildSSTableLookupKey_Node0_action N_BuildSSTableLookupKey_Node0_action --> E_BuildSSTableLookupKey S_BuildSSTableLookupKey --> N_BuildSSTableLookupKey_Node0 N_BuildSSTableLookupKey_Node0 -- No --> E_BuildSSTableLookupKey
to be determined"}:::decision N_BuildSSTableLookupKey_Node0_action["Initialize the SS table lookup with
table ID SS , the carrier SCAC code,
and the origin port"]:::main N_BuildSSTableLookupKey_Node0 -- Yes --> N_BuildSSTableLookupKey_Node0_action N_BuildSSTableLookupKey_Node0_action --> E_BuildSSTableLookupKey S_BuildSSTableLookupKey --> N_BuildSSTableLookupKey_Node0 N_BuildSSTableLookupKey_Node0 -- No --> E_BuildSSTableLookupKey
File: GCCE358.cbl
GIVEN:
A bill of lading record with a non-CPRS carrier SCAC code
WHEN:
The carrier automation status needs to be determined
THEN:
Initialize the SS table lookup with table ID 'SS', the carrier SCAC code, and the origin port
β Consolidated Acceptance Criteria
- Carrier automation status lookup is performed → search the SS table using the prepared key to retrieve carrier automation 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_SearchSSTablewithSCACCodeandPort(["Start Step"])
E_SearchSSTablewithSCACCodeandPort(["End Step"])
N_SearchSSTablewithSCACCodeandPort_Node0{"Carrier automation status lookup is
performed"}:::decision N_SearchSSTablewithSCACCodeandPort_Node0_action["Search the SS table using the
prepared key to retrieve carrier
automation information"]:::main N_SearchSSTablewithSCACCodeandPort_Node0 -- Yes --> N_SearchSSTablewithSCACCodeandPort_Node0_action N_SearchSSTablewithSCACCodeandPort_Node0_action --> E_SearchSSTablewithSCACCodeandPort S_SearchSSTablewithSCACCodeandPort --> N_SearchSSTablewithSCACCodeandPort_Node0 N_SearchSSTablewithSCACCodeandPort_Node0 -- No --> E_SearchSSTablewithSCACCodeandPort
performed"}:::decision N_SearchSSTablewithSCACCodeandPort_Node0_action["Search the SS table using the
prepared key to retrieve carrier
automation information"]:::main N_SearchSSTablewithSCACCodeandPort_Node0 -- Yes --> N_SearchSSTablewithSCACCodeandPort_Node0_action N_SearchSSTablewithSCACCodeandPort_Node0_action --> E_SearchSSTablewithSCACCodeandPort S_SearchSSTablewithSCACCodeandPort --> N_SearchSSTablewithSCACCodeandPort_Node0 N_SearchSSTablewithSCACCodeandPort_Node0 -- No --> E_SearchSSTablewithSCACCodeandPort
File: GCCE358.cbl
GIVEN:
SS table lookup key is prepared with SCAC code and port
WHEN:
Carrier automation status lookup is performed
THEN:
Search the SS table using the prepared key to retrieve carrier automation information
β Consolidated Acceptance Criteria
- The automated carrier flag is evaluated → if the automated carrier flag equals 'Y', set response code to 'Y', otherwise set response code to 'N'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCarrierMarkedasAutomatedinSSTable(["Start Step"])
E_IsCarrierMarkedasAutomatedinSSTable(["End Step"])
N_IsCarrierMarkedasAutomatedinSSTable_Node0{"The automated carrier flag is
evaluated"}:::decision N_IsCarrierMarkedasAutomatedinSSTable_Node0_action["If the automated carrier flag
equals Y , set response code to Y ,
otherwise set response code to N"]:::main N_IsCarrierMarkedasAutomatedinSSTable_Node0 -- Yes --> N_IsCarrierMarkedasAutomatedinSSTable_Node0_action N_IsCarrierMarkedasAutomatedinSSTable_Node0_action --> E_IsCarrierMarkedasAutomatedinSSTable S_IsCarrierMarkedasAutomatedinSSTable --> N_IsCarrierMarkedasAutomatedinSSTable_Node0 N_IsCarrierMarkedasAutomatedinSSTable_Node0 -- No --> E_IsCarrierMarkedasAutomatedinSSTable
evaluated"}:::decision N_IsCarrierMarkedasAutomatedinSSTable_Node0_action["If the automated carrier flag
equals Y , set response code to Y ,
otherwise set response code to N"]:::main N_IsCarrierMarkedasAutomatedinSSTable_Node0 -- Yes --> N_IsCarrierMarkedasAutomatedinSSTable_Node0_action N_IsCarrierMarkedasAutomatedinSSTable_Node0_action --> E_IsCarrierMarkedasAutomatedinSSTable S_IsCarrierMarkedasAutomatedinSSTable --> N_IsCarrierMarkedasAutomatedinSSTable_Node0 N_IsCarrierMarkedasAutomatedinSSTable_Node0 -- No --> E_IsCarrierMarkedasAutomatedinSSTable
File: GCCE358.cbl
GIVEN:
SS table lookup was successful and carrier record is found
WHEN:
The automated carrier flag is evaluated
THEN:
If the automated carrier flag equals 'Y', set response code to 'Y', otherwise set response code to 'N'
β Consolidated Acceptance Criteria
- The SS table lookup fails to find a matching carrier record → set the response code to 'N' indicating non-automated carrier processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResponseCodetoNCarrierNotAutomated(["Start Step"])
E_SetResponseCodetoNCarrierNotAutomated(["End Step"])
N_SetResponseCodetoNCarrierNotAutomated_Node0{"The SS table lookup fails to find a
matching carrier record"}:::decision N_SetResponseCodetoNCarrierNotAutomated_Node0_action["Set the response code to N
indicating non-automated carrier
processing"]:::main N_SetResponseCodetoNCarrierNotAutomated_Node0 -- Yes --> N_SetResponseCodetoNCarrierNotAutomated_Node0_action N_SetResponseCodetoNCarrierNotAutomated_Node0_action --> E_SetResponseCodetoNCarrierNotAutomated S_SetResponseCodetoNCarrierNotAutomated --> N_SetResponseCodetoNCarrierNotAutomated_Node0 N_SetResponseCodetoNCarrierNotAutomated_Node0 -- No --> E_SetResponseCodetoNCarrierNotAutomated
matching carrier record"}:::decision N_SetResponseCodetoNCarrierNotAutomated_Node0_action["Set the response code to N
indicating non-automated carrier
processing"]:::main N_SetResponseCodetoNCarrierNotAutomated_Node0 -- Yes --> N_SetResponseCodetoNCarrierNotAutomated_Node0_action N_SetResponseCodetoNCarrierNotAutomated_Node0_action --> E_SetResponseCodetoNCarrierNotAutomated S_SetResponseCodetoNCarrierNotAutomated --> N_SetResponseCodetoNCarrierNotAutomated_Node0 N_SetResponseCodetoNCarrierNotAutomated_Node0 -- No --> E_SetResponseCodetoNCarrierNotAutomated
File: GCCE358.cbl
GIVEN:
A carrier SCAC code and port combination
WHEN:
The SS table lookup fails to find a matching carrier record
THEN:
Set the response code to 'N' indicating non-automated carrier processing
β Consolidated Acceptance Criteria
- The system initializes the table search parameters → the return flag should be cleared to prepare for the lookup operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTableSearchParameters(["Start Step"])
E_InitializeTableSearchParameters(["End Step"])
N_InitializeTableSearchParameters_Node0{"The system initializes the table
search parameters"}:::decision N_InitializeTableSearchParameters_Node0_action["The return flag should be cleared
to prepare for the lookup operation"]:::main N_InitializeTableSearchParameters_Node0 -- Yes --> N_InitializeTableSearchParameters_Node0_action N_InitializeTableSearchParameters_Node0_action --> E_InitializeTableSearchParameters S_InitializeTableSearchParameters --> N_InitializeTableSearchParameters_Node0 N_InitializeTableSearchParameters_Node0 -- No --> E_InitializeTableSearchParameters
search parameters"}:::decision N_InitializeTableSearchParameters_Node0_action["The return flag should be cleared
to prepare for the lookup operation"]:::main N_InitializeTableSearchParameters_Node0 -- Yes --> N_InitializeTableSearchParameters_Node0_action N_InitializeTableSearchParameters_Node0_action --> E_InitializeTableSearchParameters S_InitializeTableSearchParameters --> N_InitializeTableSearchParameters_Node0 N_InitializeTableSearchParameters_Node0 -- No --> E_InitializeTableSearchParameters
File: GCCE358.cbl
GIVEN:
A request to lookup carrier automation status
WHEN:
The system initializes the table search parameters
THEN:
The return flag should be cleared to prepare for the lookup operation
β Consolidated Acceptance Criteria
- The system sets the table identifier → the table ID should be set to 'SS' to target the SCAC Service 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_SetTableIDtoSS(["Start Step"])
E_SetTableIDtoSS(["End Step"])
N_SetTableIDtoSS_Node0{"The system sets the table
identifier"}:::decision N_SetTableIDtoSS_Node0_action["The table ID should be set to SS to
target the SCAC Service table"]:::main N_SetTableIDtoSS_Node0 -- Yes --> N_SetTableIDtoSS_Node0_action N_SetTableIDtoSS_Node0_action --> E_SetTableIDtoSS S_SetTableIDtoSS --> N_SetTableIDtoSS_Node0 N_SetTableIDtoSS_Node0 -- No --> E_SetTableIDtoSS
identifier"}:::decision N_SetTableIDtoSS_Node0_action["The table ID should be set to SS to
target the SCAC Service table"]:::main N_SetTableIDtoSS_Node0 -- Yes --> N_SetTableIDtoSS_Node0_action N_SetTableIDtoSS_Node0_action --> E_SetTableIDtoSS S_SetTableIDtoSS --> N_SetTableIDtoSS_Node0 N_SetTableIDtoSS_Node0 -- No --> E_SetTableIDtoSS
File: GCCE358.cbl
GIVEN:
A table lookup operation is being prepared
WHEN:
The system sets the table identifier
THEN:
The table ID should be set to 'SS' to target the SCAC Service table
β Consolidated Acceptance Criteria
- The system prepares the table lookup key → the SCAC code should be extracted from the equipment record and set as 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_SetSCACCodefromEquipmentRecord(["Start Step"])
E_SetSCACCodefromEquipmentRecord(["End Step"])
N_SetSCACCodefromEquipmentRecord_Node0{"The system prepares the table
lookup key"}:::decision N_SetSCACCodefromEquipmentRecord_Node0_action["The SCAC code should be extracted
from the equipment record and set as
the lookup key"]:::main N_SetSCACCodefromEquipmentRecord_Node0 -- Yes --> N_SetSCACCodefromEquipmentRecord_Node0_action N_SetSCACCodefromEquipmentRecord_Node0_action --> E_SetSCACCodefromEquipmentRecord S_SetSCACCodefromEquipmentRecord --> N_SetSCACCodefromEquipmentRecord_Node0 N_SetSCACCodefromEquipmentRecord_Node0 -- No --> E_SetSCACCodefromEquipmentRecord
lookup key"}:::decision N_SetSCACCodefromEquipmentRecord_Node0_action["The SCAC code should be extracted
from the equipment record and set as
the lookup key"]:::main N_SetSCACCodefromEquipmentRecord_Node0 -- Yes --> N_SetSCACCodefromEquipmentRecord_Node0_action N_SetSCACCodefromEquipmentRecord_Node0_action --> E_SetSCACCodefromEquipmentRecord S_SetSCACCodefromEquipmentRecord --> N_SetSCACCodefromEquipmentRecord_Node0 N_SetSCACCodefromEquipmentRecord_Node0 -- No --> E_SetSCACCodefromEquipmentRecord
File: GCCE358.cbl
GIVEN:
An equipment record with SCAC information is being processed
WHEN:
The system prepares the table lookup key
THEN:
- The scac code should be extracted from the equipment record
- Set as the lookup key
β Consolidated Acceptance Criteria
- The system prepares the port parameter for table lookup → the departure service center should be used as the port identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPortfromDepartureLocation(["Start Step"])
E_SetPortfromDepartureLocation(["End Step"])
N_SetPortfromDepartureLocation_Node0{"The system prepares the port
parameter for table lookup"}:::decision N_SetPortfromDepartureLocation_Node0_action["The departure service center should
be used as the port identifier"]:::main N_SetPortfromDepartureLocation_Node0 -- Yes --> N_SetPortfromDepartureLocation_Node0_action N_SetPortfromDepartureLocation_Node0_action --> E_SetPortfromDepartureLocation S_SetPortfromDepartureLocation --> N_SetPortfromDepartureLocation_Node0 N_SetPortfromDepartureLocation_Node0 -- No --> E_SetPortfromDepartureLocation
parameter for table lookup"}:::decision N_SetPortfromDepartureLocation_Node0_action["The departure service center should
be used as the port identifier"]:::main N_SetPortfromDepartureLocation_Node0 -- Yes --> N_SetPortfromDepartureLocation_Node0_action N_SetPortfromDepartureLocation_Node0_action --> E_SetPortfromDepartureLocation S_SetPortfromDepartureLocation --> N_SetPortfromDepartureLocation_Node0 N_SetPortfromDepartureLocation_Node0 -- No --> E_SetPortfromDepartureLocation
File: GCCE358.cbl
GIVEN:
A train departure location is available
WHEN:
The system prepares the port parameter for table lookup
THEN:
The departure service center should be used as the port identifier
β Consolidated Acceptance Criteria
- The system calls the GCCTBIO table lookup function → the function should be invoked with the prepared parameters to search the SS 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_CallTableLookupFunctionGCCTBIO(["Start Step"])
E_CallTableLookupFunctionGCCTBIO(["End Step"])
N_CallTableLookupFunctionGCCTBIO_Node0{"The system calls the GCCTBIO table
lookup function"}:::decision N_CallTableLookupFunctionGCCTBIO_Node0_action["The function should be invoked with
the prepared parameters to search
the SS table"]:::main N_CallTableLookupFunctionGCCTBIO_Node0 -- Yes --> N_CallTableLookupFunctionGCCTBIO_Node0_action N_CallTableLookupFunctionGCCTBIO_Node0_action --> E_CallTableLookupFunctionGCCTBIO S_CallTableLookupFunctionGCCTBIO --> N_CallTableLookupFunctionGCCTBIO_Node0 N_CallTableLookupFunctionGCCTBIO_Node0 -- No --> E_CallTableLookupFunctionGCCTBIO
lookup function"}:::decision N_CallTableLookupFunctionGCCTBIO_Node0_action["The function should be invoked with
the prepared parameters to search
the SS table"]:::main N_CallTableLookupFunctionGCCTBIO_Node0 -- Yes --> N_CallTableLookupFunctionGCCTBIO_Node0_action N_CallTableLookupFunctionGCCTBIO_Node0_action --> E_CallTableLookupFunctionGCCTBIO S_CallTableLookupFunctionGCCTBIO --> N_CallTableLookupFunctionGCCTBIO_Node0 N_CallTableLookupFunctionGCCTBIO_Node0 -- No --> E_CallTableLookupFunctionGCCTBIO
File: GCCE358.cbl
GIVEN:
Table lookup parameters are prepared with SCAC code and port
WHEN:
The system calls the GCCTBIO table lookup function
THEN:
The function should be invoked with the prepared parameters to search the SS table
β Consolidated Acceptance Criteria
- If the lookup result → if the return flag indicates success, the record was found; otherwise, no matching record exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TableRecordFound(["Start Step"])
E_TableRecordFound(["End Step"])
N_TableRecordFound_Node0{"The system evaluates the lookup
result"}:::decision N_TableRecordFound_Node0_action["If the return flag indicates
success, the record was found
otherwise, no matching record exists"]:::main N_TableRecordFound_Node0 -- Yes --> N_TableRecordFound_Node0_action N_TableRecordFound_Node0_action --> E_TableRecordFound S_TableRecordFound --> N_TableRecordFound_Node0 N_TableRecordFound_Node0 -- No --> E_TableRecordFound
result"}:::decision N_TableRecordFound_Node0_action["If the return flag indicates
success, the record was found
otherwise, no matching record exists"]:::main N_TableRecordFound_Node0 -- Yes --> N_TableRecordFound_Node0_action N_TableRecordFound_Node0_action --> E_TableRecordFound S_TableRecordFound --> N_TableRecordFound_Node0 N_TableRecordFound_Node0 -- No --> E_TableRecordFound
File: GCCE358.cbl
GIVEN:
A table lookup operation has been completed
WHEN:
The system evaluates the lookup result
THEN:
If the return flag indicates success, the record was found; otherwise, no matching record exists
β Consolidated Acceptance Criteria
- The system processes the lookup result → the SS segment data should be moved from the table buffer to the working storage 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_RetrieveSSSegmentData(["Start Step"])
E_RetrieveSSSegmentData(["End Step"])
N_RetrieveSSSegmentData_Node0{"The system processes the lookup
result"}:::decision N_RetrieveSSSegmentData_Node0_action["The SS segment data should be moved
from the table buffer to the working
storage area"]:::main N_RetrieveSSSegmentData_Node0 -- Yes --> N_RetrieveSSSegmentData_Node0_action N_RetrieveSSSegmentData_Node0_action --> E_RetrieveSSSegmentData S_RetrieveSSSegmentData --> N_RetrieveSSSegmentData_Node0 N_RetrieveSSSegmentData_Node0 -- No --> E_RetrieveSSSegmentData
result"}:::decision N_RetrieveSSSegmentData_Node0_action["The SS segment data should be moved
from the table buffer to the working
storage area"]:::main N_RetrieveSSSegmentData_Node0 -- Yes --> N_RetrieveSSSegmentData_Node0_action N_RetrieveSSSegmentData_Node0_action --> E_RetrieveSSSegmentData S_RetrieveSSSegmentData --> N_RetrieveSSSegmentData_Node0 N_RetrieveSSSegmentData_Node0 -- No --> E_RetrieveSSSegmentData
File: GCCE358.cbl
GIVEN:
A successful SS table lookup has been completed
WHEN:
The system processes the lookup result
THEN:
The SS segment data should be moved from the table buffer to the working storage area
β Consolidated Acceptance Criteria
- The system checks the automated carrier flag → if the automated carrier flag equals 'Y', the carrier supports automation; otherwise, it does not
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AutomatedCarrierFlagY(["Start Step"])
E_AutomatedCarrierFlagY(["End Step"])
N_AutomatedCarrierFlagY_Node0{"The system checks the automated
carrier flag"}:::decision N_AutomatedCarrierFlagY_Node0_action["If the automated carrier flag
equals Y , the carrier supports
automation otherwise, it does not"]:::main N_AutomatedCarrierFlagY_Node0 -- Yes --> N_AutomatedCarrierFlagY_Node0_action N_AutomatedCarrierFlagY_Node0_action --> E_AutomatedCarrierFlagY S_AutomatedCarrierFlagY --> N_AutomatedCarrierFlagY_Node0 N_AutomatedCarrierFlagY_Node0 -- No --> E_AutomatedCarrierFlagY
carrier flag"}:::decision N_AutomatedCarrierFlagY_Node0_action["If the automated carrier flag
equals Y , the carrier supports
automation otherwise, it does not"]:::main N_AutomatedCarrierFlagY_Node0 -- Yes --> N_AutomatedCarrierFlagY_Node0_action N_AutomatedCarrierFlagY_Node0_action --> E_AutomatedCarrierFlagY S_AutomatedCarrierFlagY --> N_AutomatedCarrierFlagY_Node0 N_AutomatedCarrierFlagY_Node0 -- No --> E_AutomatedCarrierFlagY
File: GCCE358.cbl
GIVEN:
SS segment data has been retrieved from the table
WHEN:
The system checks the automated carrier flag
THEN:
If the automated carrier flag equals 'Y', the carrier supports automation; otherwise, it does not
β Consolidated Acceptance Criteria
- The system processes the automation status → the carrier should be classified as supporting automated processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarrierasAutomated(["Start Step"])
E_SetCarrierasAutomated(["End Step"])
N_SetCarrierasAutomated_Node0{"The system processes the automation
status"}:::decision N_SetCarrierasAutomated_Node0_action["The carrier should be classified as
supporting automated processing"]:::main N_SetCarrierasAutomated_Node0 -- Yes --> N_SetCarrierasAutomated_Node0_action N_SetCarrierasAutomated_Node0_action --> E_SetCarrierasAutomated S_SetCarrierasAutomated --> N_SetCarrierasAutomated_Node0 N_SetCarrierasAutomated_Node0 -- No --> E_SetCarrierasAutomated
status"}:::decision N_SetCarrierasAutomated_Node0_action["The carrier should be classified as
supporting automated processing"]:::main N_SetCarrierasAutomated_Node0 -- Yes --> N_SetCarrierasAutomated_Node0_action N_SetCarrierasAutomated_Node0_action --> E_SetCarrierasAutomated S_SetCarrierasAutomated --> N_SetCarrierasAutomated_Node0 N_SetCarrierasAutomated_Node0 -- No --> E_SetCarrierasAutomated
File: GCCE358.cbl
GIVEN:
The SS table record shows automated carrier flag as 'Y'
WHEN:
The system processes the automation status
THEN:
The carrier should be classified as supporting automated processing
β Consolidated Acceptance Criteria
- The system processes the automation status → the carrier should be classified as not supporting automated processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarrierasNotAutomated(["Start Step"])
E_SetCarrierasNotAutomated(["End Step"])
N_SetCarrierasNotAutomated_Node0{"The system processes the automation
status"}:::decision N_SetCarrierasNotAutomated_Node0_action["The carrier should be classified as
not supporting automated processing"]:::main N_SetCarrierasNotAutomated_Node0 -- Yes --> N_SetCarrierasNotAutomated_Node0_action N_SetCarrierasNotAutomated_Node0_action --> E_SetCarrierasNotAutomated S_SetCarrierasNotAutomated --> N_SetCarrierasNotAutomated_Node0 N_SetCarrierasNotAutomated_Node0 -- No --> E_SetCarrierasNotAutomated
status"}:::decision N_SetCarrierasNotAutomated_Node0_action["The carrier should be classified as
not supporting automated processing"]:::main N_SetCarrierasNotAutomated_Node0 -- Yes --> N_SetCarrierasNotAutomated_Node0_action N_SetCarrierasNotAutomated_Node0_action --> E_SetCarrierasNotAutomated S_SetCarrierasNotAutomated --> N_SetCarrierasNotAutomated_Node0 N_SetCarrierasNotAutomated_Node0 -- No --> E_SetCarrierasNotAutomated
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
The SS table record shows automated carrier flag is not 'Y'
WHEN:
The system processes the automation status
THEN:
The carrier should be classified as not supporting automated processing
β Consolidated Acceptance Criteria
- The system handles the lookup failure → the SS segment data area should be cleared to spaces to indicate no data available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearSSSegmentData(["Start Step"])
E_ClearSSSegmentData(["End Step"])
N_ClearSSSegmentData_Node0{"The system handles the lookup
failure"}:::decision N_ClearSSSegmentData_Node0_action["The SS segment data area should be
cleared to spaces to indicate no
data available"]:::main N_ClearSSSegmentData_Node0 -- Yes --> N_ClearSSSegmentData_Node0_action N_ClearSSSegmentData_Node0_action --> E_ClearSSSegmentData S_ClearSSSegmentData --> N_ClearSSSegmentData_Node0 N_ClearSSSegmentData_Node0 -- No --> E_ClearSSSegmentData
failure"}:::decision N_ClearSSSegmentData_Node0_action["The SS segment data area should be
cleared to spaces to indicate no
data available"]:::main N_ClearSSSegmentData_Node0 -- Yes --> N_ClearSSSegmentData_Node0_action N_ClearSSSegmentData_Node0_action --> E_ClearSSSegmentData S_ClearSSSegmentData --> N_ClearSSSegmentData_Node0 N_ClearSSSegmentData_Node0 -- No --> E_ClearSSSegmentData
File: GCCE358.cbl
GIVEN:
The SS table lookup operation failed to find a matching record
WHEN:
The system handles the lookup failure
THEN:
The SS segment data area should be cleared to spaces to indicate no data available
β Consolidated Acceptance Criteria
- The equipment status is 'E' (Empty) AND the equipment has a US CCN key (not spaces) AND the bill of lading type code is 23 → the MBL response code is set to 'Y' for electronic reporting regardless of other response code logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting(["Start Step"])
E_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting(["End Step"])
N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0{"The equipment status is E Empty AND
the equipment has a US CCN key not
spaces AND the bill of lading type
code is 23"}:::decision N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0_action["The MBL response code is set to Y
for electronic reporting regardless
of other response code logic"]:::main N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0 -- Yes --> N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0_action N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0_action --> E_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting S_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting --> N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0 N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0 -- No --> E_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting
the equipment has a US CCN key not
spaces AND the bill of lading type
code is 23"}:::decision N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0_action["The MBL response code is set to Y
for electronic reporting regardless
of other response code logic"]:::main N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0 -- Yes --> N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0_action N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0_action --> E_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting S_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting --> N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0 N_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting_Node0 -- No --> E_ApplySpecialERProcessingRulesForemptycarswithbilltype23overrideresponsecodetoYforelectronicreporting
File: GCCE358.cbl
GIVEN:
An equipment item is being processed for MBL record creation
WHEN:
The equipment status is 'E' (Empty) AND the equipment has a US CCN key (not spaces) AND the bill of lading type code is 23
THEN:
The MBL response code is set to 'Y' for electronic reporting regardless of other response code logic
β Consolidated Acceptance Criteria
- The system begins MBL segment creation → the MBL segment structure is initialized to clear any previous 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_InitializeMBLSegmentStructure(["Start Step"])
E_InitializeMBLSegmentStructure(["End Step"])
N_InitializeMBLSegmentStructure_Node0{"The system begins MBL segment
creation"}:::decision N_InitializeMBLSegmentStructure_Node0_action["The MBL segment structure is
initialized to clear any previous
data"]:::main N_InitializeMBLSegmentStructure_Node0 -- Yes --> N_InitializeMBLSegmentStructure_Node0_action N_InitializeMBLSegmentStructure_Node0_action --> E_InitializeMBLSegmentStructure S_InitializeMBLSegmentStructure --> N_InitializeMBLSegmentStructure_Node0 N_InitializeMBLSegmentStructure_Node0 -- No --> E_InitializeMBLSegmentStructure
creation"}:::decision N_InitializeMBLSegmentStructure_Node0_action["The MBL segment structure is
initialized to clear any previous
data"]:::main N_InitializeMBLSegmentStructure_Node0 -- Yes --> N_InitializeMBLSegmentStructure_Node0_action N_InitializeMBLSegmentStructure_Node0_action --> E_InitializeMBLSegmentStructure S_InitializeMBLSegmentStructure --> N_InitializeMBLSegmentStructure_Node0 N_InitializeMBLSegmentStructure_Node0 -- No --> E_InitializeMBLSegmentStructure
File: GCCE358.cbl
GIVEN:
A bill of lading processing request is initiated
WHEN:
The system begins MBL segment creation
THEN:
The MBL segment structure is initialized to clear any previous data
β Consolidated Acceptance Criteria
- The segment identifier needs to be set → the identifier is set to 'MBL' to indicate this is a Master Bill of Lading 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_SetMBLIdentifiertoMBL(["Start Step"])
E_SetMBLIdentifiertoMBL(["End Step"])
N_SetMBLIdentifiertoMBL_Node0{"The segment identifier needs to be
set"}:::decision N_SetMBLIdentifiertoMBL_Node0_action["The identifier is set to MBL to
indicate this is a Master Bill of
Lading segment"]:::main N_SetMBLIdentifiertoMBL_Node0 -- Yes --> N_SetMBLIdentifiertoMBL_Node0_action N_SetMBLIdentifiertoMBL_Node0_action --> E_SetMBLIdentifiertoMBL S_SetMBLIdentifiertoMBL --> N_SetMBLIdentifiertoMBL_Node0 N_SetMBLIdentifiertoMBL_Node0 -- No --> E_SetMBLIdentifiertoMBL
set"}:::decision N_SetMBLIdentifiertoMBL_Node0_action["The identifier is set to MBL to
indicate this is a Master Bill of
Lading segment"]:::main N_SetMBLIdentifiertoMBL_Node0 -- Yes --> N_SetMBLIdentifiertoMBL_Node0_action N_SetMBLIdentifiertoMBL_Node0_action --> E_SetMBLIdentifiertoMBL S_SetMBLIdentifiertoMBL --> N_SetMBLIdentifiertoMBL_Node0 N_SetMBLIdentifiertoMBL_Node0 -- No --> E_SetMBLIdentifiertoMBL
File: GCCE358.cbl
GIVEN:
An MBL segment is being created
WHEN:
The segment identifier needs to be set
THEN:
The identifier is set to 'MBL' to indicate this is a Master Bill of Lading segment
β Consolidated Acceptance Criteria
- The SCAC code is needed for the MBL segment → the SCAC code is extracted from the equipment record's CCN 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_ExtractSCACCodefromEquipmentRecord(["Start Step"])
E_ExtractSCACCodefromEquipmentRecord(["End Step"])
N_ExtractSCACCodefromEquipmentRecord_Node0{"The SCAC code is needed for the MBL
segment"}:::decision N_ExtractSCACCodefromEquipmentRecord_Node0_action["The SCAC code is extracted from the
equipment record s CCN SCAC field"]:::main N_ExtractSCACCodefromEquipmentRecord_Node0 -- Yes --> N_ExtractSCACCodefromEquipmentRecord_Node0_action N_ExtractSCACCodefromEquipmentRecord_Node0_action --> E_ExtractSCACCodefromEquipmentRecord S_ExtractSCACCodefromEquipmentRecord --> N_ExtractSCACCodefromEquipmentRecord_Node0 N_ExtractSCACCodefromEquipmentRecord_Node0 -- No --> E_ExtractSCACCodefromEquipmentRecord
segment"}:::decision N_ExtractSCACCodefromEquipmentRecord_Node0_action["The SCAC code is extracted from the
equipment record s CCN SCAC field"]:::main N_ExtractSCACCodefromEquipmentRecord_Node0 -- Yes --> N_ExtractSCACCodefromEquipmentRecord_Node0_action N_ExtractSCACCodefromEquipmentRecord_Node0_action --> E_ExtractSCACCodefromEquipmentRecord S_ExtractSCACCodefromEquipmentRecord --> N_ExtractSCACCodefromEquipmentRecord_Node0 N_ExtractSCACCodefromEquipmentRecord_Node0 -- No --> E_ExtractSCACCodefromEquipmentRecord
File: GCCE358.cbl
GIVEN:
An equipment item is being processed for MBL creation
WHEN:
The SCAC code is needed for the MBL segment
THEN:
The SCAC code is extracted from the equipment record's CCN SCAC field
β Consolidated Acceptance Criteria
- The bill of lading number is needed for the MBL segment → the bill of lading number is extracted from the equipment record's CCN ID 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_ExtractBillofLadingNumberfromEquipmentRecord(["Start Step"])
E_ExtractBillofLadingNumberfromEquipmentRecord(["End Step"])
N_ExtractBillofLadingNumberfromEquipmentRecord_Node0{"The bill of lading number is needed
for the MBL segment"}:::decision N_ExtractBillofLadingNumberfromEquipmentRecord_Node0_action["The bill of lading number is
extracted from the equipment record
s CCN ID field"]:::main N_ExtractBillofLadingNumberfromEquipmentRecord_Node0 -- Yes --> N_ExtractBillofLadingNumberfromEquipmentRecord_Node0_action N_ExtractBillofLadingNumberfromEquipmentRecord_Node0_action --> E_ExtractBillofLadingNumberfromEquipmentRecord S_ExtractBillofLadingNumberfromEquipmentRecord --> N_ExtractBillofLadingNumberfromEquipmentRecord_Node0 N_ExtractBillofLadingNumberfromEquipmentRecord_Node0 -- No --> E_ExtractBillofLadingNumberfromEquipmentRecord
for the MBL segment"}:::decision N_ExtractBillofLadingNumberfromEquipmentRecord_Node0_action["The bill of lading number is
extracted from the equipment record
s CCN ID field"]:::main N_ExtractBillofLadingNumberfromEquipmentRecord_Node0 -- Yes --> N_ExtractBillofLadingNumberfromEquipmentRecord_Node0_action N_ExtractBillofLadingNumberfromEquipmentRecord_Node0_action --> E_ExtractBillofLadingNumberfromEquipmentRecord S_ExtractBillofLadingNumberfromEquipmentRecord --> N_ExtractBillofLadingNumberfromEquipmentRecord_Node0 N_ExtractBillofLadingNumberfromEquipmentRecord_Node0 -- No --> E_ExtractBillofLadingNumberfromEquipmentRecord
File: GCCE358.cbl
GIVEN:
An equipment item is being processed for MBL creation
WHEN:
The bill of lading number is needed for the MBL segment
THEN:
The bill of lading number is extracted from the equipment record's CCN ID field
β Consolidated Acceptance Criteria
- The SCAC code equals 'CPRS' → the response code is set to 'Y' indicating automated processing for CP Rail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSCACCodeCPRS(["Start Step"])
E_IsSCACCodeCPRS(["End Step"])
N_IsSCACCodeCPRS_Node0{"The SCAC code equals CPRS"}:::decision
N_IsSCACCodeCPRS_Node0_action["The response code is set to Y
indicating automated processing for
CP Rail"]:::main N_IsSCACCodeCPRS_Node0 -- Yes --> N_IsSCACCodeCPRS_Node0_action N_IsSCACCodeCPRS_Node0_action --> E_IsSCACCodeCPRS S_IsSCACCodeCPRS --> N_IsSCACCodeCPRS_Node0 N_IsSCACCodeCPRS_Node0 -- No --> E_IsSCACCodeCPRS
indicating automated processing for
CP Rail"]:::main N_IsSCACCodeCPRS_Node0 -- Yes --> N_IsSCACCodeCPRS_Node0_action N_IsSCACCodeCPRS_Node0_action --> E_IsSCACCodeCPRS S_IsSCACCodeCPRS --> N_IsSCACCodeCPRS_Node0 N_IsSCACCodeCPRS_Node0 -- No --> E_IsSCACCodeCPRS
File: GCCE358.cbl
GIVEN:
An MBL segment is being created with a SCAC code
WHEN:
The SCAC code equals 'CPRS'
THEN:
The response code is set to 'Y' indicating automated processing for CP Rail
β Consolidated Acceptance Criteria
- The SCAC code is not 'CPRS' → the system performs a table lookup using table ID 'SS', the SCAC code, and the origin port to determine carrier automation 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_LookupSCACinSSTableforPort(["Start Step"])
E_LookupSCACinSSTableforPort(["End Step"])
N_LookupSCACinSSTableforPort_Node0{"The SCAC code is not CPRS"}:::decision
N_LookupSCACinSSTableforPort_Node0_action["The system performs a table lookup
using table ID SS , the SCAC code,
and the origin port to determine
carrier automation status"]:::main N_LookupSCACinSSTableforPort_Node0 -- Yes --> N_LookupSCACinSSTableforPort_Node0_action N_LookupSCACinSSTableforPort_Node0_action --> E_LookupSCACinSSTableforPort S_LookupSCACinSSTableforPort --> N_LookupSCACinSSTableforPort_Node0 N_LookupSCACinSSTableforPort_Node0 -- No --> E_LookupSCACinSSTableforPort
using table ID SS , the SCAC code,
and the origin port to determine
carrier automation status"]:::main N_LookupSCACinSSTableforPort_Node0 -- Yes --> N_LookupSCACinSSTableforPort_Node0_action N_LookupSCACinSSTableforPort_Node0_action --> E_LookupSCACinSSTableforPort S_LookupSCACinSSTableforPort --> N_LookupSCACinSSTableforPort_Node0 N_LookupSCACinSSTableforPort_Node0 -- No --> E_LookupSCACinSSTableforPort
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An MBL segment is being created with a non-CPRS SCAC code
WHEN:
The SCAC code is not 'CPRS'
THEN:
The system performs a table lookup using table ID 'SS', the SCAC code, and the origin port to determine carrier automation status
β Consolidated Acceptance Criteria
- The lookup is successful AND the carrier's automated flag is 'Y' → the response code is set to 'Y' indicating automated processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SCACFoundandAutomated(["Start Step"])
E_SCACFoundandAutomated(["End Step"])
N_SCACFoundandAutomated_Node0{"The lookup is successful AND the
carrier s automated flag is Y"}:::decision N_SCACFoundandAutomated_Node0_action["The response code is set to Y
indicating automated processing"]:::main N_SCACFoundandAutomated_Node0 -- Yes --> N_SCACFoundandAutomated_Node0_action N_SCACFoundandAutomated_Node0_action --> E_SCACFoundandAutomated S_SCACFoundandAutomated --> N_SCACFoundandAutomated_Node0 N_SCACFoundandAutomated_Node0 -- No --> E_SCACFoundandAutomated
carrier s automated flag is Y"}:::decision N_SCACFoundandAutomated_Node0_action["The response code is set to Y
indicating automated processing"]:::main N_SCACFoundandAutomated_Node0 -- Yes --> N_SCACFoundandAutomated_Node0_action N_SCACFoundandAutomated_Node0_action --> E_SCACFoundandAutomated S_SCACFoundandAutomated --> N_SCACFoundandAutomated_Node0 N_SCACFoundandAutomated_Node0 -- No --> E_SCACFoundandAutomated
File: GCCE358.cbl
GIVEN:
A SCAC table lookup has been performed for an external carrier
WHEN:
- The lookup is successful
- The carrier's automated flag is 'y'
THEN:
The response code is set to 'Y' indicating automated processing
β Consolidated Acceptance Criteria
- The lookup fails OR the carrier's automated flag is not 'Y' → the response code is set to 'N' indicating manual processing required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResponseCodetoNManual(["Start Step"])
E_SetResponseCodetoNManual(["End Step"])
N_SetResponseCodetoNManual_Node0{"The lookup fails OR the carrier s
automated flag is not Y"}:::decision N_SetResponseCodetoNManual_Node0_action["The response code is set to N
indicating manual processing
required"]:::main N_SetResponseCodetoNManual_Node0 -- Yes --> N_SetResponseCodetoNManual_Node0_action N_SetResponseCodetoNManual_Node0_action --> E_SetResponseCodetoNManual S_SetResponseCodetoNManual --> N_SetResponseCodetoNManual_Node0 N_SetResponseCodetoNManual_Node0 -- No --> E_SetResponseCodetoNManual
automated flag is not Y"}:::decision N_SetResponseCodetoNManual_Node0_action["The response code is set to N
indicating manual processing
required"]:::main N_SetResponseCodetoNManual_Node0 -- Yes --> N_SetResponseCodetoNManual_Node0_action N_SetResponseCodetoNManual_Node0_action --> E_SetResponseCodetoNManual S_SetResponseCodetoNManual --> N_SetResponseCodetoNManual_Node0 N_SetResponseCodetoNManual_Node0 -- No --> E_SetResponseCodetoNManual
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A SCAC table lookup has been performed for an external carrier
WHEN:
The lookup fails OR the carrier's automated flag is not 'Y'
THEN:
The response code is set to 'N' indicating manual processing required
β Consolidated Acceptance Criteria
- The equipment load/empty status is 'E' AND the CCN key is not spaces AND the bill type code is 23 → the response code is overridden to 'Y' for special ER processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentEmptywithBillType23(["Start Step"])
E_IsEquipmentEmptywithBillType23(["End Step"])
N_IsEquipmentEmptywithBillType23_Node0{"The equipment loadempty status is E
AND the CCN key is not spaces AND
the bill type code is 23"}:::decision N_IsEquipmentEmptywithBillType23_Node0_action["The response code is overridden to
Y for special ER processing
requirements"]:::main N_IsEquipmentEmptywithBillType23_Node0 -- Yes --> N_IsEquipmentEmptywithBillType23_Node0_action N_IsEquipmentEmptywithBillType23_Node0_action --> E_IsEquipmentEmptywithBillType23 S_IsEquipmentEmptywithBillType23 --> N_IsEquipmentEmptywithBillType23_Node0 N_IsEquipmentEmptywithBillType23_Node0 -- No --> E_IsEquipmentEmptywithBillType23
AND the CCN key is not spaces AND
the bill type code is 23"}:::decision N_IsEquipmentEmptywithBillType23_Node0_action["The response code is overridden to
Y for special ER processing
requirements"]:::main N_IsEquipmentEmptywithBillType23_Node0 -- Yes --> N_IsEquipmentEmptywithBillType23_Node0_action N_IsEquipmentEmptywithBillType23_Node0_action --> E_IsEquipmentEmptywithBillType23 S_IsEquipmentEmptywithBillType23 --> N_IsEquipmentEmptywithBillType23_Node0 N_IsEquipmentEmptywithBillType23_Node0 -- No --> E_IsEquipmentEmptywithBillType23
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
An MBL segment response code has been determined
WHEN:
- The equipment load/empty status is 'e' and the ccn key is not spaces
- The bill type code is 23
THEN:
The response code is overridden to 'Y' for special ER processing requirements
β Consolidated Acceptance Criteria
- The SCAC table lookup is performed → retrieve the automation status for the carrier at the specified port
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupSCACinSSTable(["Start Step"])
E_LookupSCACinSSTable(["End Step"])
N_LookupSCACinSSTable_Node0{"The SCAC table lookup is performed"}:::decision
N_LookupSCACinSSTable_Node0_action["Retrieve the automation status for
the carrier at the specified port"]:::main N_LookupSCACinSSTable_Node0 -- Yes --> N_LookupSCACinSSTable_Node0_action N_LookupSCACinSSTable_Node0_action --> E_LookupSCACinSSTable S_LookupSCACinSSTable --> N_LookupSCACinSSTable_Node0 N_LookupSCACinSSTable_Node0 -- No --> E_LookupSCACinSSTable
the carrier at the specified port"]:::main N_LookupSCACinSSTable_Node0 -- Yes --> N_LookupSCACinSSTable_Node0_action N_LookupSCACinSSTable_Node0_action --> E_LookupSCACinSSTable S_LookupSCACinSSTable --> N_LookupSCACinSSTable_Node0 N_LookupSCACinSSTable_Node0 -- No --> E_LookupSCACinSSTable
File: GCCE358.cbl
GIVEN:
Table lookup parameters are initialized with SCAC code and departure port
WHEN:
The SCAC table lookup is performed
THEN:
Retrieve the automation status for the carrier at the specified port
β Consolidated Acceptance Criteria
- The carrier's automated flag equals 'Y' in the table → set the response code to 'Y' indicating automated processing is available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCarrierAutomated(["Start Step"])
E_IsCarrierAutomated(["End Step"])
N_IsCarrierAutomated_Node0{"The carrier s automated flag equals
Y in the table"}:::decision N_IsCarrierAutomated_Node0_action["Set the response code to Y
indicating automated processing is
available"]:::main N_IsCarrierAutomated_Node0 -- Yes --> N_IsCarrierAutomated_Node0_action N_IsCarrierAutomated_Node0_action --> E_IsCarrierAutomated S_IsCarrierAutomated --> N_IsCarrierAutomated_Node0 N_IsCarrierAutomated_Node0 -- No --> E_IsCarrierAutomated
Y in the table"}:::decision N_IsCarrierAutomated_Node0_action["Set the response code to Y
indicating automated processing is
available"]:::main N_IsCarrierAutomated_Node0 -- Yes --> N_IsCarrierAutomated_Node0_action N_IsCarrierAutomated_Node0_action --> E_IsCarrierAutomated S_IsCarrierAutomated --> N_IsCarrierAutomated_Node0 N_IsCarrierAutomated_Node0 -- No --> E_IsCarrierAutomated
File: GCCE358.cbl
GIVEN:
SCAC table lookup has been successfully completed
WHEN:
The carrier's automated flag equals 'Y' in the table
THEN:
Set the response code to 'Y' indicating automated processing is available
β Consolidated Acceptance Criteria
- The carrier is not found in the table OR the carrier's automated flag is not 'Y' → set the response code to 'N' indicating manual processing is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResponseCodetoN(["Start Step"])
E_SetResponseCodetoN(["End Step"])
N_SetResponseCodetoN_Node0{"The carrier is not found in the
table OR the carrier s automated
flag is not Y"}:::decision N_SetResponseCodetoN_Node0_action["Set the response code to N
indicating manual processing is
required"]:::main N_SetResponseCodetoN_Node0 -- Yes --> N_SetResponseCodetoN_Node0_action N_SetResponseCodetoN_Node0_action --> E_SetResponseCodetoN S_SetResponseCodetoN --> N_SetResponseCodetoN_Node0 N_SetResponseCodetoN_Node0 -- No --> E_SetResponseCodetoN
table OR the carrier s automated
flag is not Y"}:::decision N_SetResponseCodetoN_Node0_action["Set the response code to N
indicating manual processing is
required"]:::main N_SetResponseCodetoN_Node0 -- Yes --> N_SetResponseCodetoN_Node0_action N_SetResponseCodetoN_Node0_action --> E_SetResponseCodetoN S_SetResponseCodetoN --> N_SetResponseCodetoN_Node0 N_SetResponseCodetoN_Node0 -- No --> E_SetResponseCodetoN
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
SCAC table lookup has been performed
WHEN:
The carrier is not found in the table OR the carrier's automated flag is not 'Y'
THEN:
Set the response code to 'N' indicating manual processing is required
β Consolidated Acceptance Criteria
- The equipment load status is 'E' (Empty) AND the CCN key is not spaces AND the BOL type code equals 23 → set the response code to 'Y' overriding any previous automation 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_SetResponseCodetoY(["Start Step"])
E_SetResponseCodetoY(["End Step"])
N_SetResponseCodetoY_Node0{"The equipment load status is E
Empty AND the CCN key is not spaces
AND the BOL type code equals 23"}:::decision N_SetResponseCodetoY_Node0_action["Set the response code to Y
overriding any previous automation
determination"]:::main N_SetResponseCodetoY_Node0 -- Yes --> N_SetResponseCodetoY_Node0_action N_SetResponseCodetoY_Node0_action --> E_SetResponseCodetoY S_SetResponseCodetoY --> N_SetResponseCodetoY_Node0 N_SetResponseCodetoY_Node0 -- No --> E_SetResponseCodetoY
Empty AND the CCN key is not spaces
AND the BOL type code equals 23"}:::decision N_SetResponseCodetoY_Node0_action["Set the response code to Y
overriding any previous automation
determination"]:::main N_SetResponseCodetoY_Node0 -- Yes --> N_SetResponseCodetoY_Node0_action N_SetResponseCodetoY_Node0_action --> E_SetResponseCodetoY S_SetResponseCodetoY --> N_SetResponseCodetoY_Node0 N_SetResponseCodetoY_Node0 -- No --> E_SetResponseCodetoY
File: GCCE358.cbl
Exclusion / Alternative Path
GIVEN:
A bill of lading record is being processed with equipment and cargo information
WHEN:
- The equipment load status is 'e' (empty) and the ccn key is not spaces
- The bol type code equals 23
THEN:
Set the response code to 'Y' overriding any previous automation determination
β Consolidated Acceptance Criteria
- The EDI send process is started → the system sets the EDI send function name flag to true to identify the correct processing 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_SetEDISendFunctionName(["Start Step"])
E_SetEDISendFunctionName(["End Step"])
N_SetEDISendFunctionName_Node0{"The EDI send process is started"}:::decision
N_SetEDISendFunctionName_Node0_action["The system sets the EDI send
function name flag to true to
identify the correct processing
function"]:::main N_SetEDISendFunctionName_Node0 -- Yes --> N_SetEDISendFunctionName_Node0_action N_SetEDISendFunctionName_Node0_action --> E_SetEDISendFunctionName S_SetEDISendFunctionName --> N_SetEDISendFunctionName_Node0 N_SetEDISendFunctionName_Node0 -- No --> E_SetEDISendFunctionName
function name flag to true to
identify the correct processing
function"]:::main N_SetEDISendFunctionName_Node0 -- Yes --> N_SetEDISendFunctionName_Node0_action N_SetEDISendFunctionName_Node0_action --> E_SetEDISendFunctionName S_SetEDISendFunctionName --> N_SetEDISendFunctionName_Node0 N_SetEDISendFunctionName_Node0 -- No --> E_SetEDISendFunctionName
File: GCCE358.cbl
GIVEN:
The system needs to initiate EDI message transmission
WHEN:
The EDI send process is started
THEN:
The system sets the EDI send function name flag to true to identify the correct processing function
β Consolidated Acceptance Criteria
- Security authorization is being configured → the system sets the security byte to high-values to enforce maximum security protection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSecurityAuthorization(["Start Step"])
E_SetSecurityAuthorization(["End Step"])
N_SetSecurityAuthorization_Node0{"Security authorization is being
configured"}:::decision N_SetSecurityAuthorization_Node0_action["The system sets the security byte
to high-values to enforce maximum
security protection"]:::main N_SetSecurityAuthorization_Node0 -- Yes --> N_SetSecurityAuthorization_Node0_action N_SetSecurityAuthorization_Node0_action --> E_SetSecurityAuthorization S_SetSecurityAuthorization --> N_SetSecurityAuthorization_Node0 N_SetSecurityAuthorization_Node0 -- No --> E_SetSecurityAuthorization
configured"}:::decision N_SetSecurityAuthorization_Node0_action["The system sets the security byte
to high-values to enforce maximum
security protection"]:::main N_SetSecurityAuthorization_Node0 -- Yes --> N_SetSecurityAuthorization_Node0_action N_SetSecurityAuthorization_Node0_action --> E_SetSecurityAuthorization S_SetSecurityAuthorization --> N_SetSecurityAuthorization_Node0 N_SetSecurityAuthorization_Node0 -- No --> E_SetSecurityAuthorization
File: GCCE358.cbl
GIVEN:
An EDI message is being prepared for transmission
WHEN:
Security authorization is being configured
THEN:
The system sets the security byte to high-values to enforce maximum security protection
β Consolidated Acceptance Criteria
- The EDI message is being prepared → the system adds the transmission number to the message structure for 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_AddTransmissionNumbertoMessage(["Start Step"])
E_AddTransmissionNumbertoMessage(["End Step"])
N_AddTransmissionNumbertoMessage_Node0{"The EDI message is being prepared"}:::decision
N_AddTransmissionNumbertoMessage_Node0_action["The system adds the transmission
number to the message structure for
identification"]:::main N_AddTransmissionNumbertoMessage_Node0 -- Yes --> N_AddTransmissionNumbertoMessage_Node0_action N_AddTransmissionNumbertoMessage_Node0_action --> E_AddTransmissionNumbertoMessage S_AddTransmissionNumbertoMessage --> N_AddTransmissionNumbertoMessage_Node0 N_AddTransmissionNumbertoMessage_Node0 -- No --> E_AddTransmissionNumbertoMessage
number to the message structure for
identification"]:::main N_AddTransmissionNumbertoMessage_Node0 -- Yes --> N_AddTransmissionNumbertoMessage_Node0_action N_AddTransmissionNumbertoMessage_Node0_action --> E_AddTransmissionNumbertoMessage S_AddTransmissionNumbertoMessage --> N_AddTransmissionNumbertoMessage_Node0 N_AddTransmissionNumbertoMessage_Node0 -- No --> E_AddTransmissionNumbertoMessage
File: GCCE358.cbl
GIVEN:
A transmission number has been generated for the current EDI process
WHEN:
The EDI message is being prepared
THEN:
The system adds the transmission number to the message structure for identification
β Consolidated Acceptance Criteria
- The message preparation process is executed → the system moves the complete input structure to the message output text for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareEDIMessageforTransmission(["Start Step"])
E_PrepareEDIMessageforTransmission(["End Step"])
N_PrepareEDIMessageforTransmission_Node0{"The message preparation process is
executed"}:::decision N_PrepareEDIMessageforTransmission_Node0_action["The system moves the complete input
structure to the message output text
for transmission"]:::main N_PrepareEDIMessageforTransmission_Node0 -- Yes --> N_PrepareEDIMessageforTransmission_Node0_action N_PrepareEDIMessageforTransmission_Node0_action --> E_PrepareEDIMessageforTransmission S_PrepareEDIMessageforTransmission --> N_PrepareEDIMessageforTransmission_Node0 N_PrepareEDIMessageforTransmission_Node0 -- No --> E_PrepareEDIMessageforTransmission
executed"}:::decision N_PrepareEDIMessageforTransmission_Node0_action["The system moves the complete input
structure to the message output text
for transmission"]:::main N_PrepareEDIMessageforTransmission_Node0 -- Yes --> N_PrepareEDIMessageforTransmission_Node0_action N_PrepareEDIMessageforTransmission_Node0_action --> E_PrepareEDIMessageforTransmission S_PrepareEDIMessageforTransmission --> N_PrepareEDIMessageforTransmission_Node0 N_PrepareEDIMessageforTransmission_Node0 -- No --> E_PrepareEDIMessageforTransmission
File: GCCE358.cbl
GIVEN:
All EDI message components including security, transmission number, and function name are configured
WHEN:
The message preparation process is executed
THEN:
The system moves the complete input structure to the message output text for transmission
β Consolidated Acceptance Criteria
- The message is being sent to the EDI queue → the system sets the EDI send function length flag to ensure proper message sizing
- The message insertion process is initiated → the system performs the insert purge message operation to queue the message for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoEDIQueue(["Start Step"])
E_SendMessagetoEDIQueue(["End Step"])
N_SendMessagetoEDIQueue_Node0{"The message is being sent to the
EDI queue"}:::decision N_SendMessagetoEDIQueue_Node0_action["The system sets the EDI send
function length flag to ensure
proper message sizing"]:::main N_SendMessagetoEDIQueue_Node0 -- Yes --> N_SendMessagetoEDIQueue_Node0_action N_SendMessagetoEDIQueue_Node0_action --> E_SendMessagetoEDIQueue S_SendMessagetoEDIQueue --> N_SendMessagetoEDIQueue_Node0 N_SendMessagetoEDIQueue_Node1{"The message insertion process is
initiated"}:::decision N_SendMessagetoEDIQueue_Node1_action["The system performs the insert
purge message operation to queue the
message for transmission"]:::main N_SendMessagetoEDIQueue_Node1 -- Yes --> N_SendMessagetoEDIQueue_Node1_action N_SendMessagetoEDIQueue_Node1_action --> E_SendMessagetoEDIQueue N_SendMessagetoEDIQueue_Node0 -- No --> N_SendMessagetoEDIQueue_Node1 N_SendMessagetoEDIQueue_Node1 -- No --> E_SendMessagetoEDIQueue
EDI queue"}:::decision N_SendMessagetoEDIQueue_Node0_action["The system sets the EDI send
function length flag to ensure
proper message sizing"]:::main N_SendMessagetoEDIQueue_Node0 -- Yes --> N_SendMessagetoEDIQueue_Node0_action N_SendMessagetoEDIQueue_Node0_action --> E_SendMessagetoEDIQueue S_SendMessagetoEDIQueue --> N_SendMessagetoEDIQueue_Node0 N_SendMessagetoEDIQueue_Node1{"The message insertion process is
initiated"}:::decision N_SendMessagetoEDIQueue_Node1_action["The system performs the insert
purge message operation to queue the
message for transmission"]:::main N_SendMessagetoEDIQueue_Node1 -- Yes --> N_SendMessagetoEDIQueue_Node1_action N_SendMessagetoEDIQueue_Node1_action --> E_SendMessagetoEDIQueue N_SendMessagetoEDIQueue_Node0 -- No --> N_SendMessagetoEDIQueue_Node1 N_SendMessagetoEDIQueue_Node1 -- No --> E_SendMessagetoEDIQueue
File: GCCE358.cbl
GIVEN:
An EDI message is ready for transmission
WHEN:
The message is being sent to the EDI queue
THEN:
The system sets the EDI send function length flag to ensure proper message sizing
File: GCCE358.cbl
GIVEN:
An EDI message is formatted and ready with proper length specification
WHEN:
The message insertion process is initiated
THEN:
The system performs the insert purge message operation to queue the message for transmission
β Consolidated Acceptance Criteria
- The log update process is initiated → the system sets the function name to LOG-UPDT-FUNC-NAME to identify the logging service
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLogUpdateFunctionName(["Start Step"])
E_SetLogUpdateFunctionName(["End Step"])
N_SetLogUpdateFunctionName_Node0{"The log update process is initiated"}:::decision
N_SetLogUpdateFunctionName_Node0_action["The system sets the function name
to LOG-UPDT-FUNC-NAME to identify
the logging service"]:::main N_SetLogUpdateFunctionName_Node0 -- Yes --> N_SetLogUpdateFunctionName_Node0_action N_SetLogUpdateFunctionName_Node0_action --> E_SetLogUpdateFunctionName S_SetLogUpdateFunctionName --> N_SetLogUpdateFunctionName_Node0 N_SetLogUpdateFunctionName_Node0 -- No --> E_SetLogUpdateFunctionName
to LOG-UPDT-FUNC-NAME to identify
the logging service"]:::main N_SetLogUpdateFunctionName_Node0 -- Yes --> N_SetLogUpdateFunctionName_Node0_action N_SetLogUpdateFunctionName_Node0_action --> E_SetLogUpdateFunctionName S_SetLogUpdateFunctionName --> N_SetLogUpdateFunctionName_Node0 N_SetLogUpdateFunctionName_Node0 -- No --> E_SetLogUpdateFunctionName
File: GCCE358.cbl
GIVEN:
The system needs to log an EDI transmission activity
WHEN:
The log update process is initiated
THEN:
The system sets the function name to LOG-UPDT-FUNC-NAME to identify the logging service
β Consolidated Acceptance Criteria
- Security parameters are being configured → the system sets the security byte to HIGH-VALUES for secure 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_InitializeSecurityParameters(["Start Step"])
E_InitializeSecurityParameters(["End Step"])
N_InitializeSecurityParameters_Node0{"Security parameters are being
configured"}:::decision N_InitializeSecurityParameters_Node0_action["The system sets the security byte
to HIGH-VALUES for secure
transmission"]:::main N_InitializeSecurityParameters_Node0 -- Yes --> N_InitializeSecurityParameters_Node0_action N_InitializeSecurityParameters_Node0_action --> E_InitializeSecurityParameters S_InitializeSecurityParameters --> N_InitializeSecurityParameters_Node0 N_InitializeSecurityParameters_Node0 -- No --> E_InitializeSecurityParameters
configured"}:::decision N_InitializeSecurityParameters_Node0_action["The system sets the security byte
to HIGH-VALUES for secure
transmission"]:::main N_InitializeSecurityParameters_Node0 -- Yes --> N_InitializeSecurityParameters_Node0_action N_InitializeSecurityParameters_Node0_action --> E_InitializeSecurityParameters S_InitializeSecurityParameters --> N_InitializeSecurityParameters_Node0 N_InitializeSecurityParameters_Node0 -- No --> E_InitializeSecurityParameters
File: GCCE358.cbl
GIVEN:
A log entry needs to be created for EDI transmission
WHEN:
Security parameters are being configured
THEN:
The system sets the security byte to HIGH-VALUES for secure transmission
β Consolidated Acceptance Criteria
- Train identification is required for the log → the system sets the train identifier using the US customer train ID from the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainIDfromTrainList(["Start Step"])
E_SetTrainIDfromTrainList(["End Step"])
N_SetTrainIDfromTrainList_Node0{"Train identification is required
for the log"}:::decision N_SetTrainIDfromTrainList_Node0_action["The system sets the train
identifier using the US customer
train ID from the train list"]:::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
for the log"}:::decision N_SetTrainIDfromTrainList_Node0_action["The system sets the train
identifier using the US customer
train ID from the train list"]:::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: GCCE358.cbl
GIVEN:
An EDI transmission log entry is being created
WHEN:
Train identification is required for the log
THEN:
The system sets the train identifier using the US customer train ID from the train list
β Consolidated Acceptance Criteria
- The train type needs to be specified → the system marks the record 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 train type needs to be
specified"}:::decision N_MarkasUSTrainType_Node0_action["The system marks the record 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
specified"}:::decision N_MarkasUSTrainType_Node0_action["The system marks the record 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: GCCE358.cbl
GIVEN:
A train-related log entry is being created
WHEN:
The train type needs to be specified
THEN:
The system marks the record as US-TRAIN type
β Consolidated Acceptance Criteria
- The processing mode is background → the system uses the background action 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_ProcessingMode(["Start Step"])
E_ProcessingMode(["End Step"])
N_ProcessingMode_Node0{"The processing mode is background"}:::decision
N_ProcessingMode_Node0_action["The system uses the background
action code"]:::main N_ProcessingMode_Node0 -- Yes --> N_ProcessingMode_Node0_action N_ProcessingMode_Node0_action --> E_ProcessingMode S_ProcessingMode --> N_ProcessingMode_Node0 N_ProcessingMode_Node0 -- No --> E_ProcessingMode
action code"]:::main N_ProcessingMode_Node0 -- Yes --> N_ProcessingMode_Node0_action N_ProcessingMode_Node0_action --> E_ProcessingMode S_ProcessingMode --> N_ProcessingMode_Node0 N_ProcessingMode_Node0 -- No --> E_ProcessingMode
File: GCCE358.cbl
GIVEN:
An EDI transmission log entry requires an action code
WHEN:
The processing mode is background
THEN:
The system uses the background action code
β Consolidated Acceptance Criteria
- The processing mode is background → the system uses the background transaction 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_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName(["Start Step"])
E_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName(["End Step"])
N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0{"The processing mode is background"}:::decision
N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0_action["The system uses the background
transaction name"]:::main N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0 -- Yes --> N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0_action N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0_action --> E_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName S_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName --> N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0 N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0 -- No --> E_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName
transaction name"]:::main N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0 -- Yes --> N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0_action N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0_action --> E_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName S_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName --> N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0 N_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName_Node0 -- No --> E_SetForegroundActionCodeandTransactionNameSetBackgroundActionCodeandTransactionName
File: GCCE358.cbl
GIVEN:
An EDI transmission log entry requires a transaction name
WHEN:
The processing mode is background
THEN:
The system uses the background transaction name
β Consolidated Acceptance Criteria
- User identification is required for audit purposes → the system captures and records the ACF2 user ID 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_SetUserIDfromSystem(["Start Step"])
E_SetUserIDfromSystem(["End Step"])
N_SetUserIDfromSystem_Node0{"User identification is required for
audit purposes"}:::decision N_SetUserIDfromSystem_Node0_action["The system captures and records the
ACF2 user ID from the system"]:::main N_SetUserIDfromSystem_Node0 -- Yes --> N_SetUserIDfromSystem_Node0_action N_SetUserIDfromSystem_Node0_action --> E_SetUserIDfromSystem S_SetUserIDfromSystem --> N_SetUserIDfromSystem_Node0 N_SetUserIDfromSystem_Node0 -- No --> E_SetUserIDfromSystem
audit purposes"}:::decision N_SetUserIDfromSystem_Node0_action["The system captures and records the
ACF2 user ID from the system"]:::main N_SetUserIDfromSystem_Node0 -- Yes --> N_SetUserIDfromSystem_Node0_action N_SetUserIDfromSystem_Node0_action --> E_SetUserIDfromSystem S_SetUserIDfromSystem --> N_SetUserIDfromSystem_Node0 N_SetUserIDfromSystem_Node0 -- No --> E_SetUserIDfromSystem
File: GCCE358.cbl
GIVEN:
An EDI transmission log entry is being created
WHEN:
User identification is required for audit purposes
THEN:
- The system captures
- Records the acf2 user id from the system
β Consolidated Acceptance Criteria
- The current date needs to be recorded → the system concatenates the machine century and machine date to create a complete date stamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCurrentDatefromSystem(["Start Step"])
E_SetCurrentDatefromSystem(["End Step"])
N_SetCurrentDatefromSystem_Node0{"The current date needs to be
recorded"}:::decision N_SetCurrentDatefromSystem_Node0_action["The system concatenates the machine
century and machine date to create a
complete date stamp"]:::main N_SetCurrentDatefromSystem_Node0 -- Yes --> N_SetCurrentDatefromSystem_Node0_action N_SetCurrentDatefromSystem_Node0_action --> E_SetCurrentDatefromSystem S_SetCurrentDatefromSystem --> N_SetCurrentDatefromSystem_Node0 N_SetCurrentDatefromSystem_Node0 -- No --> E_SetCurrentDatefromSystem
recorded"}:::decision N_SetCurrentDatefromSystem_Node0_action["The system concatenates the machine
century and machine date to create a
complete date stamp"]:::main N_SetCurrentDatefromSystem_Node0 -- Yes --> N_SetCurrentDatefromSystem_Node0_action N_SetCurrentDatefromSystem_Node0_action --> E_SetCurrentDatefromSystem S_SetCurrentDatefromSystem --> N_SetCurrentDatefromSystem_Node0 N_SetCurrentDatefromSystem_Node0 -- No --> E_SetCurrentDatefromSystem
File: GCCE358.cbl
GIVEN:
An EDI transmission log entry requires a date stamp
WHEN:
The current date needs to be recorded
THEN:
- The system concatenates the machine century
- Machine date to create a complete date stamp
β Consolidated Acceptance Criteria
- The current time needs to be recorded → the system records the machine time 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_SetCurrentTimefromSystem(["Start Step"])
E_SetCurrentTimefromSystem(["End Step"])
N_SetCurrentTimefromSystem_Node0{"The current time needs to be
recorded"}:::decision N_SetCurrentTimefromSystem_Node0_action["The system records the machine time
from the system"]:::main N_SetCurrentTimefromSystem_Node0 -- Yes --> N_SetCurrentTimefromSystem_Node0_action N_SetCurrentTimefromSystem_Node0_action --> E_SetCurrentTimefromSystem S_SetCurrentTimefromSystem --> N_SetCurrentTimefromSystem_Node0 N_SetCurrentTimefromSystem_Node0 -- No --> E_SetCurrentTimefromSystem
recorded"}:::decision N_SetCurrentTimefromSystem_Node0_action["The system records the machine time
from the system"]:::main N_SetCurrentTimefromSystem_Node0 -- Yes --> N_SetCurrentTimefromSystem_Node0_action N_SetCurrentTimefromSystem_Node0_action --> E_SetCurrentTimefromSystem S_SetCurrentTimefromSystem --> N_SetCurrentTimefromSystem_Node0 N_SetCurrentTimefromSystem_Node0 -- No --> E_SetCurrentTimefromSystem
File: GCCE358.cbl
GIVEN:
An EDI transmission log entry requires a time stamp
WHEN:
The current time needs to be recorded
THEN:
The system records the machine time from the system
β Consolidated Acceptance Criteria
- No specific message content is required → the system initializes the message field 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_InitializeMessageasEmpty(["Start Step"])
E_InitializeMessageasEmpty(["End Step"])
N_InitializeMessageasEmpty_Node0{"No specific message content is
required"}:::decision N_InitializeMessageasEmpty_Node0_action["The system initializes the message
field to spaces"]:::main N_InitializeMessageasEmpty_Node0 -- Yes --> N_InitializeMessageasEmpty_Node0_action N_InitializeMessageasEmpty_Node0_action --> E_InitializeMessageasEmpty S_InitializeMessageasEmpty --> N_InitializeMessageasEmpty_Node0 N_InitializeMessageasEmpty_Node0 -- No --> E_InitializeMessageasEmpty
required"}:::decision N_InitializeMessageasEmpty_Node0_action["The system initializes the message
field to spaces"]:::main N_InitializeMessageasEmpty_Node0 -- Yes --> N_InitializeMessageasEmpty_Node0_action N_InitializeMessageasEmpty_Node0_action --> E_InitializeMessageasEmpty S_InitializeMessageasEmpty --> N_InitializeMessageasEmpty_Node0 N_InitializeMessageasEmpty_Node0 -- No --> E_InitializeMessageasEmpty
File: GCCE358.cbl
GIVEN:
A log entry message field needs to be set
WHEN:
No specific message content is required
THEN:
The system initializes the message field to spaces
β Consolidated Acceptance Criteria
- The log entry needs to be submitted for processing → the system calls the GCT1051E logging function with the prepared log entry 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_SubmitLogEntrytoGCT1051E(["Start Step"])
E_SubmitLogEntrytoGCT1051E(["End Step"])
N_SubmitLogEntrytoGCT1051E_Node0{"The log entry needs to be submitted
for processing"}:::decision N_SubmitLogEntrytoGCT1051E_Node0_action["The system calls the GCT1051E
logging function with the prepared
log entry data"]:::main N_SubmitLogEntrytoGCT1051E_Node0 -- Yes --> N_SubmitLogEntrytoGCT1051E_Node0_action N_SubmitLogEntrytoGCT1051E_Node0_action --> E_SubmitLogEntrytoGCT1051E S_SubmitLogEntrytoGCT1051E --> N_SubmitLogEntrytoGCT1051E_Node0 N_SubmitLogEntrytoGCT1051E_Node0 -- No --> E_SubmitLogEntrytoGCT1051E
for processing"}:::decision N_SubmitLogEntrytoGCT1051E_Node0_action["The system calls the GCT1051E
logging function with the prepared
log entry data"]:::main N_SubmitLogEntrytoGCT1051E_Node0 -- Yes --> N_SubmitLogEntrytoGCT1051E_Node0_action N_SubmitLogEntrytoGCT1051E_Node0_action --> E_SubmitLogEntrytoGCT1051E S_SubmitLogEntrytoGCT1051E --> N_SubmitLogEntrytoGCT1051E_Node0 N_SubmitLogEntrytoGCT1051E_Node0 -- No --> E_SubmitLogEntrytoGCT1051E
File: GCCE358.cbl
GIVEN:
A complete log entry has been prepared with all required fields
WHEN:
The log entry needs to be submitted for processing
THEN:
The system calls the GCT1051E logging function with the prepared log entry data