EPOD-TTM Interface
This document is intended to show every message sent from CALIDUS ePOD to CALIDUS Portal for the Track and Trace module (TTM) to function as expected. The details of all messages, their contents and how they are populated and produced from CALIDUS ePOD is shown in this document.
Scope
This document and all message formats conform to the CALIDUS Portal LOTS-tripOrder XSD version 1.17, as seen in the references of this document. If this is changed, or if CALIDUS Portal functionality changes based on tags that already exist, both this document and the CALIDUS ePOD export processes will require modification.
All functionality described here is gathered from version 3.0.1.4 of the CALIDUS ePOD Server module, the current latest version, including the changes to this interface specified under 328407, referenced in Appendix A.
Details
General Message Format
Each message type sent is encapsulated in standard envelope, as described below:
<OBS_XML> <EVENT> <EVENT_HEADER> <EVENT_PROCESSED>N</EVENT_PROCESSED> <EVENT_SOURCE_TYPE>EPOD</EVENT_SOURCE_TYPE> <EVENT_SOURCE_NAME></EVENT_SOURCE_NAME> <EVENT_DATE></EVENT_DATE> <EVENT_TYPE></EVENT_TYPE> <EVENT_ACTION></EVENT_ACTION> <EVENT_TIMEZONE></EVENT_TIMEZONE> </EVENT_HEADER> <EVENT_DETAIL> ... </EVENT_DETAIL> </EVENT> </OBS_XML>
Variable data:
Tag | Notes |
---|---|
EVENT_SOURCE_NAME | EPL_SITE_ID |
EVENT_DATE | Dependent on message type - see notes below |
EVENT_TIME | Dependent on message type - see notes below |
EVENT_ACTION | Dependent on type. For ORD and TRP, "R", for other types "C" |
EVENT_DETAIL | The defined message content per message type, detailed in the specific Message Type sections in this document. |
EVENT_TIMEZONE | The local Timezone Olsen ID for TRP messages, omitted for others. If omitted or blank, CALIDUS Portal assumes GMT. |
Notes:
Type | EVENT_DATE | EVENT_TIME |
---|---|---|
DEL | EPL_END_ACTUAL_DATE | EPL_END_ACTUAL_TIME |
CAN | EPL_END_ACTUAL_DATE | EPL_END_ACTUAL_TIME |
COL | EPL_END_ACTUAL_DATE | EPL_END_ACTUAL_TIME |
ARR | EPL_ARRIVAL_DATE if populated else EPL_START_ACTUAL_DATE | EPL_ARRIVAL_TIME if populated else EPL_START_ACTUAL_TIME |
OIT | Date when sending message | Time when sending message |
ORD | Date when sending message | Time when sending message |
TRP | EPL_LOAD_START_ACTUAL_DATE if populated, else Date when sending message | EPL_LOAD_START_ACTUAL_TIME if populated, else Time when sending message |
GPS | Date when sending message | Time when sending message |
ORD messages
An ORD message informs CALIDUS Portal that an order is created. It contains all the details of the order, but no Trip information.
An ORD message is sent when an order is created. It is also sent when an order is updated through the Flat-file Auto-Import process. It is also sent when an order is updated through the Job and Load Import Webservices
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
ORDER_HEADER | EPOD_JOB |
ORDER_HEADER_ADDRESSES | EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_DETAILS | EPOD_CONTAINER, EPOD_PRODUCT |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>O</TRIP_IDENTIFIER> </TRIP_HEADER> <STOPS> <STOP> <STOP_HEADER> <STOP_IDENTIFIER>O</STOP_IDENTIFIER> <STOP_SEQ>0</STOP_SEQ> </STOP_HEADER> <ORDERS> <ORDER> <ORDER_HEADER> <ORDER_TRANSACTION_DATE>2012-12-20T00:00:00</ORDER_TRANSACTION_DATE> <WMS_WAREHOUSE>EPL_SITE_REF</WMS_WAREHOUSE> <WMS_OWNER>EPL_JOB_GROUP_REF</WMS_OWNER> <SO_REF>EPL_CUST_REF</SO_REF> <TMS_REF>EPL_JOB_CODE</TMS_REF> <PO_REF>EPL_SO_REF</PO_REF> <BOOK_REF>EPL_EXT_REF</BOOK_REF> <BOOK_DATE>2012-12-24T10:00:00</BOOK_DATE> <ORDER_HEADER_ADDRESSES> <ORDER_HEADER_ADDRESS> <ADDRESS_TYPE>DEP</ADDRESS_TYPE> <ADDRESS_ID>EPL_CUSTOMER_CODE</ADDRESS_ID> <ADDRESS_NAME>EPL_NAME</ADDRESS_NAME> <ADDRESS_LINE1>EPL_ADDR_LINE_1</ADDRESS_LINE1> <ADDRESS_LINE2>EPL_ADDR_LINE_2</ADDRESS_LINE2> <ADDRESS_TOWN>EPL_ADDR_LINE_3</ADDRESS_TOWN> <ADDRESS_POSTCODE>EPL_POSTCODE</ADDRESS_POSTCODE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </ORDER_HEADER_ADDRESS> <ORDER_HEADER_ADDRESS> <ADDRESS_TYPE>DEL</ADDRESS_TYPE> <ADDRESS_ID>EPL_CUSTOMER_CODE</ADDRESS_ID> <ADDRESS_NAME>EPL_NAME</ADDRESS_NAME> <ADDRESS_LINE1>EPL_ADDR_LINE_1</ADDRESS_LINE1> <ADDRESS_LINE2>EPL_ADDR_LINE_2</ADDRESS_LINE2> <ADDRESS_TOWN>EPL_ADDR_LINE_3</ADDRESS_TOWN> <ADDRESS_POSTCODE>EPL_POSTCODE</ADDRESS_POSTCODE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </ORDER_HEADER_ADDRESS> </ORDER_HEADER_ADDRESSES> <ORDER_TYPE></ORDER_TYPE> <TRACK_TO></TRACK_TO> <CUSTOMER_ID>EPL_ACCOUNT</CUSTOMER_ID> <ORDER_REF_1>EPL_SITE_ID</ORDER_REF_1> </ORDER_HEADER> <ORDER_DETAILS> <ORDER_DETAIL> <DETAIL_TYPE>D</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_CONTAINER_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>1</ORDERED> <TO_DELIVER>1</TO_DELIVER> </ORDER_DETAIL> <ORDER_DETAIL> <DETAIL_TYPE>S</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_PRODUCT_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>EPL_PRODUCT_QTY_ORDERED</ORDERED> <TO_DELIVER>EPL_PRODUCT_QTY_PLANNED</TO_DELIVER> </ORDER_DETAIL> </ORDER_DETAILS> </ORDER> </ORDERS> </STOP> </STOPS>
Variable data for ORDER_HEADER:
Tag | Notes |
---|---|
ORDER_TRANSACTION_DATE | EPL_LAST_CHANGED_DATE/EPL_LAST_CHANGED_TIME in XSD format |
WMS_WAREHOUSE | EPODSITE.EPL_TTM_XREF |
WMS_OWNER | EPL_OWNER_NAME if present, else EPODSITE.EPL_TTM_XREF |
SO_REF | EPL_CUST_REF |
TMS_REF | EPL_JOB_CODE |
PO_REF | EPL_SO_REF |
BOOK_REF | EPL_EXT_REF |
BOOK_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XSD format |
ORDER_TYPE | "C" if there is not a "DEL" address for the order (see below) else "O" |
TRACK_TO | "COL" if there is not a "DEL" address for the order (see below) else "DEL" |
CUSTOMER_ID | EPL_ACCOUNT if populated |
ORDER_REF_1 | EPL_SITE_ID |
Two order header addresses should be built, one for DEP (the original collection location) and one for DEL (the ultimate delivery location).
For DEP addresses, the addresses against the jobs are used in this sequence:
- Use the Origin Job Address (type O) if this exists for any job for this Site, Job Code and Cust Ref .
- Use the Job Address of the first Collection Job for this Site, Job Code and Cust Ref if this exists.
- Use the Customer Address of the customer of the first Collection Job for this Site, Job Code and Cust Ref if this exists.
- If there is no collection job or no origin address, do not write this address.
For DEL addresses:
- Use the Final Destination Job Address (type F) if this exists on any job for this Site, Job Code and Cust Ref .
- Use the Job Address of the last Delivery Job if this exists for this Site, Job Code and Cust Ref .
- Use the Customer Address of the customer of the last Delivery Job if this exists for this Site, Job Code and Cust Ref .
- If there is no delivery job or no destination address, do not write this address.
Variable data for ORDER_ADDRESS:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
ADDRESS_TYPE | DEP if EPL_JOB_TYPE = "O" or DEL if EPL_JOB_TYPE = "F" | DEP if this is from the first Collection, DEL if this is from the last Delivery. |
ADDRESS_ID | EPL_ADDRESS_ID | EPL_CUSTOMER_CODE |
ADDRESS_NAME | EPL_NAME | EPL_CUSTOMER_NAME |
ADDRESS_LINE_1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
ADDRESS_LINE_2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
ADDRESS_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
ADDRESS_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
LOC_TIMEZONE | EPOD_JOB.EPL_TIMEZONE | EPOD_JOB.EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Variable data for ORDER_DETAIL:
Tag | EPOD_CONTAINER | EPOD_PRODUCT |
---|---|---|
DETAIL_TYPE | "D" | "S" |
ITEM_IDENTIFIER | EPL_CONTAINER_ID | EPL_PRODUCT_CODE |
ITEM_DESCRIPTION | EPL_DESCRIPTION | EPL_DESCRIPTION |
ORDERED | 1 | EPL_PRODUCT_QTY_ORDERED |
TO_DELIVER | 1 | EPL_PRODUCT_QTY_PLANNED |
TRP messages
A TRP message informs CALIDUS Portal that a Trip is created, showing all the stops on the trip and the basic information on the orders on the stops.
A TRP message is sent when an order is created. It is also sent when an order is updated through the Flat-file Auto-Import process. It is also sent when an order is updated through the Job and Load Import Webservices
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
TRIP_HEADER | EPOD_LOAD |
TRIP_DETAIL | EPOD_LOAD, EPOD_VEHICLE, EPOD_USER |
STOP_HEADER | EPOD_JOB |
STOP_DETAIL | EPOD_JOB, EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_HEADER | EPOD_JOB |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>T</TRIP_IDENTIFIER> <TRIP_TRANSACTION_DATE>2012-12-20T00:00:00</TRIP_TRANSACTION_DATE> <TRIP_ID>EPL_LOAD_ID<TRIP_ID> </TRIP_HEADER> <TRIP_DETAIL> <HAULIER>EPODSITE.EPL_TTM_XREF</HAULIER> <TRACKING>N</TRACKING> <DRIVER>EPL_USER_ID</DRIVER> <DRIVER_NAME>EPODUSER.EPL_USER_NAME</DRIVER_NAME> <TRACTOR>EPODVEHICLE.EPL_VEHICLE_REG</TRACTOR> <COST_CENTRE>EPL_SITE_ID<COST_CENTRE> <TRIP_STATUS>PLANNED<TRIP_STATUS> <TRIP_REF></TRIP_REF> <TRIP_TRAILER_ID>EPL_VEHICLE_ID</TRIP_TRAILER_ID> <TRIP_TRAILER_TYPE></TRIP_TRAILER_TYPE> <TRIP_DISTANCE>EPL_LOAD_DISTANCE_PLANNED</TRIP_DISTANCE> </TRIP_DETAIL> <STOPS> <STOP> <STOP_HEADER> <STOP_IDENTIFIER>S</STOP_IDENTIFIER> <STOP_SEQ>EPL_SEQUENCE</STOP_SEQ> </STOP_HEADER> <STOP_DETAIL> <STOP_REF>EPL_JOB_TYPE</STOP_REF> <STOP_TYPE>PK/DL</STOP_TYPE> <STOP_LOCATION_TYPE>2</STOP_LOCATION_TYPE> <STOP_LOCATION_ID></STOP_LOCATION_ID> <STOP_LOCATION_NAME></STOP_LOCATION_NAME> <STOP_ADDR_LINE1></STOP_ADDR_LINE1> <STOP_ADDR_LINE2><STOP_ADDR_LINE2> <STOP_TOWN><STOP_TOWN> <STOP_POSTCODE><STOP_POSTCODE> <STOP_CONTACT_NAME><STOP_CONTACT_NAME> <STOP_CONTACT_PHONE><STOP_CONTACT_PHONE> <STOP_PLANNED_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_PLANNED_ARRIVAL_DATE> <STOP_PLANNED_DEPARTURE_DATE>2012-12-20T00:00:00<STOP_PLANNED_DEPARTURE_DATE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </STOP_DETAIL> <ORDERS> <ORDER> <ORDER_HEADER> <ORDER_TRANSACTION_DATE>2012-12-20T00:00:00</ORDER_TRANSACTION_DATE> <WMS_WAREHOUSE>EPL_SITE_REF</WMS_WAREHOUSE> <WMS_OWNER>EPL_JOB_GROUP_REF</WMS_OWNER> <SO_REF>EPL_CUST_REF</SO_REF> <TMS_REF>EPL_JOB_CODE</TMS_REF> <PO_REF>EPL_SO_REF</PO_REF> <BOOK_REF>EPL_EXT_REF</BOOK_REF> <BOOK_DATE>2012-12-24T10:00:00</BOOK_DATE> </ORDER_HEADER> </ORDER> <ORDERS> <STOP> <STOPS>
Variable data for TRIP_HEADER:
Tag | Notes |
---|---|
TRIP_TRANSACTION_DATE | EPL_LOAD_START_ACTUAL_DATE if populated, else Date when sending message |
TRIP_ID | EPL_LOAD_ID |
Variable data for TRIP_DETAIL:
Tag | Notes |
---|---|
HAULIER | EPODSITE.EPL_TTM_XREF |
DRIVER | EPL_USER_ID |
DRIVER_NAME | EPODUSER.EPL_USER_NAME |
TRACTOR | EPODVEHICLE.EPL_VEHICLE_REG |
COST_CENTRE | EPL_SITE_ID |
TRIP_TRAILER_ID | EPL_VEHICLE_ID |
TRIP_DISTANCE | EPL_LOAD_DISTANCE_PLANNED |
Variable data for STOP_HEADER:
Tag | Notes |
---|---|
STOP_SEQUENCE | EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip. |
Variable data for STOP_DETAIL:
Tag | Notes |
---|---|
STOP_REF | EPL_JOB_TYPE |
STOP_TYPE | "PK" if STOP_TYPE = "C" else "DL" |
STOP_PLANNED_ARRIVAL_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XML date format |
STOP_PLANNED_DEPARTURE_DATE | EPL_END_PLANNED_DATE/EPL_END_PLANNED_TIME in XML date format. Only populated if there is an End Planned Date for the job |
LOC_TIMEZONE | EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Stop Location and Address fields in the STOP_DETAIL section are populated based on Job Address or Customer Address, depending on which exist, as follows:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
STOP_LOCATION_ID | EPL_ADDRESS_ID if populated, else EPOD_JOB.EPL_CUSTOMER_CODE | EPL_ADDRESS_ID_PREFIXED if populated, else EPOD_JOB.EPL_CUSTOMER_CODE |
STOP_LOCATION_NAME | EPL_NAME if populated, else EPOD_CUSTOMER.EPL_CUSTOMER_NAME | EPL_CUSTOMER_NAME |
STOP_ADDR_LINE1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
STOP_ADDR_LINE2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
STOP_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
STOP_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
STOP_CONTACT_NAME | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT |
STOP_CONTACT_PHONE | EPL_TELEPHONE | EPL_TELEPHONE |
Variable data for ORDER_HEADER:
Tag | Notes |
---|---|
ORDER_TRANSACTION_DATE | EPL_LAST_CHANGED_DATE/EPL_LAST_CHANGED_TIME in XSD format |
WMS_WAREHOUSE | EPODSITE.EPL_TTM_XREF |
WMS_OWNER | EPL_OWNER_NAME if present, else EPODSITE.EPL_TTM_XREF |
SO_REF | EPL_CUST_REF |
TMS_REF | EPL_JOB_CODE |
PO_REF | EPL_SO_REF |
BOOK_REF | EPL_EXT_REF |
BOOK_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XSD format |
OIT messages
OIT messages signify that an order is in transit i.e. has been started on the mobile device. These messages are sent only when the user starts a job on the device.
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
TRIP_HEADER | EPOD_JOB, EPOD_AUDIT |
TRIP_DETAIL | EPOD_AUDIT |
STOP_HEADER | EPOD_JOB |
STOP_DETAIL | EPOD_JOB, EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_HEADER | EPOD_JOB |
ORDER_HEADER_ADDRESSES | EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_DETAILS | EPOD_CONTAINER, EPOD_PRODUCT |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>T</TRIP_IDENTIFIER> <TRIP_TRANSACTION_DATE>2012-12-24T10:00:00</TRIP_TRANSACTION_DATE> <TRIP_ID>EPL_LOAD_ID</TRIP_ID> </TRIP_HEADER> <TRIP_DETAIL> <TRACTOR_LAT></TRACTOR_LAT> <TRACTOR_LON></TRACTOR_LON> </TRIP_DETAIL> <STOPS> <STOP> <STOP_HEADER> <STOP_HEADER> <STOP_IDENTIFIER>S</STOP_IDENTIFIER> <STOP_SEQ>EPL_SEQUENCE</STOP_SEQ> </STOP_HEADER> <STOP_DETAIL> <STOP_REF>EPL_JOB_TYPE</STOP_REF> <STOP_TYPE>PK/DL</STOP_TYPE> <STOP_LOCATION_TYPE>2</STOP_LOCATION_TYPE> <STOP_LOCATION_ID></STOP_LOCATION_ID> <STOP_LOCATION_NAME></STOP_LOCATION_NAME> <STOP_ADDR_LINE1></STOP_ADDR_LINE1> <STOP_ADDR_LINE2><STOP_ADDR_LINE2> <STOP_TOWN><STOP_TOWN> <STOP_POSTCODE><STOP_POSTCODE> <STOP_CONTACT_NAME><STOP_CONTACT_NAME> <STOP_CONTACT_PHONE><STOP_CONTACT_PHONE> <STOP_PLANNED_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_PLANNED_ARRIVAL_DATE> <STOP_PLANNED_DEPARTURE_DATE>2012-12-20T00:00:00<STOP_PLANNED_DEPARTURE_DATE> <STOP_ACTUAL_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_ACTUAL_ARRIVAL_DATE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </STOP_DETAIL> <ORDERS> <ORDER> <ORDER_HEADER> <ORDER_TRANSACTION_DATE>2012-12-20T00:00:00</ORDER_TRANSACTION_DATE> <WMS_WAREHOUSE>EPL_SITE_REF</WMS_WAREHOUSE> <WMS_OWNER>EPL_JOB_GROUP_REF</WMS_OWNER> <SO_REF>EPL_CUST_REF</SO_REF> <TMS_REF>EPL_JOB_CODE</TMS_REF> <PO_REF>EPL_SO_REF</PO_REF> <BOOK_REF>EPL_EXT_REF</BOOK_REF> <BOOK_DATE>2012-12-24T10:00:00</BOOK_DATE> ORDER_TRANSACTION_DATE", Audit Date and Time), <ORDER_HEADER> <ORDER_DETAILS> <ORDER_DETAIL> <DETAIL_TYPE>D</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_CONTAINER_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>1</ORDERED> <TO_DELIVER>1</TO_DELIVER> </ORDER_DETAIL> <ORDER_DETAIL> <DETAIL_TYPE>S</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_PRODUCT_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>EPL_PRODUCT_QTY_ORDERED</ORDERED> <TO_DELIVER>EPL_PRODUCT_QTY_PLANNED</TO_DELIVER> </ORDER_DETAIL> </ORDER_DETAILS> </ORDER> </ORDERS> </STOP> </STOPS>
Variable data for TRIP_HEADER:
Tag | Notes |
---|---|
TRIP_TRANSACTION_DATE | The date/time the Job Start was actioned, from EPOD_AUDIT.EPL_AUDIT_DATE/EPL_AUDIT_TIME |
TRIP_ID | EPL_LOAD_ID |
Variable data for TRIP_DETAIL:
Tag | Notes |
---|---|
TRACTOR_LAT | The latitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD. |
TRACTOR_LON | The longitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD. |
Variable data for STOP_HEADER:
Tag | Notes |
---|---|
STOP_SEQUENCE | EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip. |
Variable data for STOP_DETAIL:
Tag | Notes |
---|---|
STOP_REF | EPL_JOB_TYPE |
STOP_TYPE | "PK" if STOP_TYPE = "C" else "DL" |
STOP_PLANNED_ARRIVAL_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XML date format |
STOP_PLANNED_DEPARTURE_DATE | EPL_END_PLANNED_DATE/EPL_END_PLANNED_TIME in XML date format. Only populated if there is an End Planned Date for the job |
STOP_ACTUAL_ARRIVAL_DATE | EPL_ARRIVAL_DATE/EPL_ARRIVAL_TIME if populated, else EPL_START_ACTUAL_DATE/EPL_START_ACTUAL_TIME, in XML date format |
LOC_TIMEZONE | EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Stop Location and Address fields in the STOP_DETAIL section are populated based on Job Address or Customer Address, depending on which exist, as follows:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
STOP_LOCATION_ID | EPL_ADDRESS_ID if populated, else EPOD_JOB.EPL_CUSTOMER_CODE | EPL_ADDRESS_ID_PREFIXED if populated, else EPOD_JOB.EPL_CUSTOMER_CODE |
STOP_LOCATION_NAME | EPL_NAME if populated, else EPOD_CUSTOMER.EPL_CUSTOMER_NAME | EPL_CUSTOMER_NAME |
STOP_ADDR_LINE1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
STOP_ADDR_LINE2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
STOP_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
STOP_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
STOP_CONTACT_NAME | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT |
STOP_CONTACT_PHONE | EPL_TELEPHONE | EPL_TELEPHONE |
Variable data for ORDER_HEADER:
Tag | Notes |
---|---|
ORDER_TRANSACTION_DATE | EPOD_AUDIT.EPL_AUDIT_DATE/EPL_AUDIT_TIME in XSD date format |
WMS_WAREHOUSE | EPODSITE.EPL_TTM_XREF |
WMS_OWNER | EPL_OWNER_NAME if present, else EPODSITE.EPL_TTM_XREF |
SO_REF | EPL_CUST_REF |
TMS_REF | EPL_JOB_CODE |
PO_REF | EPL_SO_REF |
BOOK_REF | EPL_EXT_REF |
BOOK_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XSD format |
Variable data for ORDER_DETAIL:
Tag | EPOD_CONTAINER | EPOD_PRODUCT |
---|---|---|
DETAIL_TYPE | "D" | "S" |
ITEM_IDENTIFIER | EPL_CONTAINER_ID | EPL_PRODUCT_CODE |
ITEM_DESCRIPTION | EPL_DESCRIPTION | EPL_DESCRIPTION |
ORDERED | 1 | EPL_PRODUCT_QTY_ORDERED |
TO_DELIVER | 1 | EPL_PRODUCT_QTY_PLANNED |
ARR messages
ARR messages signify that the driver has arrived at the destination and is starting processing the job i.e. has been marked arrived on the mobile device. These messages are sent only when the user arrives a job on the device. For configurations where no Arrival functionality is specified, the OIT message serves to start the job.
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
TRIP_HEADER | EPOD_JOB, EPOD_AUDIT |
TRIP_DETAIL | EPOD_AUDIT |
STOP_HEADER | EPOD_JOB |
STOP_DETAIL | EPOD_JOB, EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_HEADER | EPOD_JOB |
ORDER_HEADER_ADDRESSES | EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_DETAILS | EPOD_CONTAINER, EPOD_PRODUCT |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>T</TRIP_IDENTIFIER> <TRIP_TRANSACTION_DATE>2012-12-24T10:00:00</TRIP_TRANSACTION_DATE> <TRIP_ID>EPL_LOAD_ID</TRIP_ID> </TRIP_HEADER> <STOPS> <STOP> <STOP_HEADER> <STOP_HEADER> <STOP_IDENTIFIER>S</STOP_IDENTIFIER> <STOP_SEQ>EPL_SEQUENCE</STOP_SEQ> </STOP_HEADER> <STOP_DETAIL> <STOP_REF>EPL_JOB_TYPE</STOP_REF> <STOP_TYPE>PK/DL</STOP_TYPE> <STOP_LOCATION_TYPE>2</STOP_LOCATION_TYPE> <STOP_LOCATION_ID></STOP_LOCATION_ID> <STOP_LOCATION_NAME></STOP_LOCATION_NAME> <STOP_ADDR_LINE1></STOP_ADDR_LINE1> <STOP_ADDR_LINE2><STOP_ADDR_LINE2> <STOP_TOWN><STOP_TOWN> <STOP_POSTCODE><STOP_POSTCODE> <STOP_CONTACT_NAME><STOP_CONTACT_NAME> <STOP_CONTACT_PHONE><STOP_CONTACT_PHONE> <STOP_PLANNED_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_PLANNED_ARRIVAL_DATE> <STOP_PLANNED_DEPARTURE_DATE>2012-12-20T00:00:00<STOP_PLANNED_DEPARTURE_DATE> <STOP_ACTUAL_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_ACTUAL_ARRIVAL_DATE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </STOP_DETAIL> </STOP> </STOPS>
Variable data for TRIP_HEADER:
Tag | Notes |
---|---|
TRIP_TRANSACTION_DATE | The date/time the Job Arrive was actioned, from EPOD_JOB.EPL_ARRIVAL_DATE/EPOD_JOB.EPL_ARRIVAL_TIME |
TRIP_ID | EPL_LOAD_ID |
Variable data for STOP_HEADER:
Tag | Notes |
---|---|
STOP_SEQUENCE | EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip. |
Variable data for STOP_DETAIL:
Tag | Notes |
---|---|
STOP_REF | EPL_JOB_TYPE |
STOP_TYPE | "PK" if STOP_TYPE = "C" else "DL" |
STOP_PLANNED_ARRIVAL_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XML date format |
STOP_PLANNED_DEPARTURE_DATE | EPL_END_PLANNED_DATE/EPL_END_PLANNED_TIME in XML date format. Only populated if there is an End Planned Date for the job |
STOP_ACTUAL_ARRIVAL_DATE | EPL_ARRIVAL_DATE/EPL_ARRIVAL_TIME if populated, else EPL_START_ACTUAL_DATE/EPL_START_ACTUAL_TIME, in XML date format |
LOC_TIMEZONE | EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Stop Location and Address fields in the STOP_DETAIL section are populated based on Job Address or Customer Address, depending on which exist, as follows:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
STOP_LOCATION_ID | EPL_ADDRESS_ID if populated, else EPOD_JOB.EPL_CUSTOMER_CODE | EPL_ADDRESS_ID_PREFIXED if populated, else EPOD_JOB.EPL_CUSTOMER_CODE |
STOP_LOCATION_NAME | EPL_NAME if populated, else EPOD_CUSTOMER.EPL_CUSTOMER_NAME | EPL_CUSTOMER_NAME |
STOP_ADDR_LINE1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
STOP_ADDR_LINE2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
STOP_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
STOP_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
STOP_CONTACT_NAME | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT |
STOP_CONTACT_PHONE | EPL_TELEPHONE | EPL_TELEPHONE |
COL messages
COL messages signify that an collection order has been completed. These messages are sent only when the job is marked as completed, normally through the Mobile Device completing the job.
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
TRIP_HEADER | EPOD_JOB |
TRIP_DETAIL | EPOD_AUDIT |
STOP_HEADER | EPOD_JOB |
STOP_DETAIL | EPOD_JOB, EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_HEADER | EPOD_JOB |
ORDER_HEADER_ADDRESSES | EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_DETAILS | EPOD_CONTAINER, EPOD_PRODUCT |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>T</TRIP_IDENTIFIER> <TRIP_TRANSACTION_DATE>2012-12-24T10:00:00</TRIP_TRANSACTION_DATE> <TRIP_ID>EPL_LOAD_ID</TRIP_ID> </TRIP_HEADER> <TRIP_DETAIL> <TRACTOR_LAT></TRACTOR_LAT> <TRACTOR_LON></TRACTOR_LON> </TRIP_DETAIL> <STOPS> <STOP> <STOP_HEADER> <STOP_HEADER> <STOP_IDENTIFIER>S</STOP_IDENTIFIER> <STOP_SEQ>EPL_SEQUENCE</STOP_SEQ> </STOP_HEADER> <STOP_DETAIL> <STOP_REF>EPL_JOB_TYPE</STOP_REF> <STOP_TYPE>PK/DL</STOP_TYPE> <STOP_LOCATION_TYPE>2</STOP_LOCATION_TYPE> <STOP_LOCATION_ID></STOP_LOCATION_ID> <STOP_LOCATION_NAME></STOP_LOCATION_NAME> <STOP_ADDR_LINE1></STOP_ADDR_LINE1> <STOP_ADDR_LINE2><STOP_ADDR_LINE2> <STOP_TOWN><STOP_TOWN> <STOP_POSTCODE><STOP_POSTCODE> <STOP_CONTACT_NAME><STOP_CONTACT_NAME> <STOP_CONTACT_PHONE><STOP_CONTACT_PHONE> <STOP_PLANNED_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_PLANNED_ARRIVAL_DATE> <STOP_PLANNED_DEPARTURE_DATE>2012-12-20T00:00:00<STOP_PLANNED_DEPARTURE_DATE> <STOP_ACTUAL_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_ACTUAL_ARRIVAL_DATE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </STOP_DETAIL> <STOP_SIGNATURE> <SIGNATURE>EPL_JOB_SIGNATURE</SIGNATURE> <SIGNATORY>EPL_CUST_SIGNATORY</SIGNATORY> </STOP_SIGNATURE> <ORDERS> <ORDER> <ORDER_HEADER> <ORDER_TRANSACTION_DATE>2012-12-20T00:00:00</ORDER_TRANSACTION_DATE> <WMS_WAREHOUSE>EPL_SITE_REF</WMS_WAREHOUSE> <WMS_OWNER>EPL_JOB_GROUP_REF</WMS_OWNER> <SO_REF>EPL_CUST_REF</SO_REF> <TMS_REF>EPL_JOB_CODE</TMS_REF> <PO_REF>EPL_SO_REF</PO_REF> <BOOK_REF>EPL_EXT_REF</BOOK_REF> <BOOK_DATE>2012-12-24T10:00:00</BOOK_DATE> ORDER_TRANSACTION_DATE", Audit Date and Time), <ORDER_HEADER> <ORDER_DETAILS> <ORDER_DETAIL> <DETAIL_TYPE>D</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_CONTAINER_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>1</ORDERED> <TO_DELIVER>1</TO_DELIVER> <DELIVERED></DELIVERED> <REASON_CODES> <REASON_CODE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> <RC_COMMENT>EPL_CUST_COMMENTS</RC_COMMENT> <RC_TYPE>DEL</RC_TYPE> </REASON_CODE> </REASON_CODES> </ORDER_DETAIL> <ORDER_DETAIL> <DETAIL_TYPE>S</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_PRODUCT_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>EPL_PRODUCT_QTY_ORDERED</ORDERED> <TO_DELIVER>EPL_PRODUCT_QTY_PLANNED</TO_DELIVER> <DELIVERED>EPL_PRODUCT_QTY_ACTUAL</DELIVERED> <REASON_CODES> <REASON_CODE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> <RC_TYPE>DEL</RC_TYPE> </REASON_CODE> </REASON_CODES> </ORDER_DETAIL> </ORDER_DETAILS> </ORDER> </ORDERS> </STOP> </STOPS>
Variable data for TRIP_HEADER:
Tag | Notes |
---|---|
TRIP_TRANSACTION_DATE | The date/time the Job was completed, from EPOD_JOB.EPL_ACTUAL_END_DATE/EPL_ACTUAL_END_TIME, if populated, else the time the message is sent, in XSD Date format. |
TRIP_ID | EPL_LOAD_ID |
Variable data for TRIP_DETAIL:
Tag | Notes |
---|---|
TRACTOR_LAT | The latitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD, if populated, else 0. |
TRACTOR_LON | The longitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD, if populated, else 0. |
Variable data for STOP_HEADER:
Tag | Notes |
---|---|
STOP_SEQUENCE | EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip. |
Variable data for STOP_DETAIL:
Tag | Notes |
---|---|
STOP_REF | EPL_JOB_TYPE |
STOP_TYPE | "PK" if STOP_TYPE = "C" else "DL" |
STOP_PLANNED_ARRIVAL_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XML date format |
STOP_PLANNED_DEPARTURE_DATE | EPL_END_PLANNED_DATE/EPL_END_PLANNED_TIME in XML date format. Only populated if there is an End Planned Date for the job |
STOP_ACTUAL_ARRIVAL_DATE | EPL_ARRIVAL_DATE/EPL_ARRIVAL_TIME if populated, else EPL_START_ACTUAL_DATE/EPL_START_ACTUAL_TIME, in XML date format |
LOC_TIMEZONE | EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Stop Location and Address fields in the STOP_DETAIL section are populated based on Job Address or Customer Address, depending on which exist, as follows:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
STOP_LOCATION_ID | EPL_ADDRESS_ID if populated, else EPOD_JOB.EPL_CUSTOMER_CODE | EPL_ADDRESS_ID_PREFIXED if populated, else EPOD_JOB.EPL_CUSTOMER_CODE |
STOP_LOCATION_NAME | EPL_NAME if populated, else EPOD_CUSTOMER.EPL_CUSTOMER_NAME | EPL_CUSTOMER_NAME |
STOP_ADDR_LINE1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
STOP_ADDR_LINE2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
STOP_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
STOP_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
STOP_CONTACT_NAME | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT |
STOP_CONTACT_PHONE | EPL_TELEPHONE | EPL_TELEPHONE |
Variable data for ORDER_HEADER:
Tag | Notes |
---|---|
ORDER_TRANSACTION_DATE | EPL_ACTUAL_END_DATE/EPL_ACTUAL_END_TIME, if populated, else the time the message is sent, in XSD Date format. |
WMS_WAREHOUSE | EPODSITE.EPL_TTM_XREF |
WMS_OWNER | EPL_OWNER_NAME if present, else EPODSITE.EPL_TTM_XREF |
SO_REF | EPL_CUST_REF |
TMS_REF | EPL_JOB_CODE |
PO_REF | EPL_SO_REF |
BOOK_REF | EPL_EXT_REF |
BOOK_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XSD format |
Variable data for ORDER_DETAIL:
Tag | EPOD_CONTAINER | EPOD_PRODUCT |
---|---|---|
DETAIL_TYPE | "D" | "S" |
ITEM_IDENTIFIER | EPL_CONTAINER_ID | EPL_PRODUCT_CODE |
ITEM_DESCRIPTION | EPL_DESCRIPTION | EPL_DESCRIPTION |
ORDERED | 1 | EPL_PRODUCT_QTY_ORDERED |
TO_DELIVER | 1 | EPL_PRODUCT_QTY_PLANNED |
DELIVERED | 1 if delivered (EPL_STATUS = "C") or 0 if not delivered (EPL_STATUS = "X") | EPL_PRODUCT_QTY_ACTUAL |
A REASON_CODES section will only be created if the detail line in question (EPOD_CONTAINER or EPOD_PRODUCT) has a reason code or clause comment against it.
Variable data for REASON_CODE:
Tag | Reason Code | Clause Comment (For Containers only) |
---|---|---|
RC_CODE | EPL_REASON_CODE | "_CLAUSED_" |
RC_DESCRIPTION | EPOD_REASON.EPL_DESCRIPTION | "Claused Delivery" |
RC_COMMMENT | Tag not produced | EPOD_CONTAINER.EPL_CUST_COMMENT |
CAN messages
CAN messages signify that a job has been cancelled. These messages are sent only when the job is marked as cancelled, through the Mobile Device completing the job or through the Admin console.
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
TRIP_HEADER | EPOD_JOB |
STOP_HEADER | EPOD_JOB |
STOP_DETAIL | EPOD_JOB, EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_HEADER | EPOD_JOB |
ORDER_HEADER_ADDRESSES | EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_DETAILS | EPOD_CONTAINER, EPOD_PRODUCT |
ORDER_REASON_CODES | EPOD_JOB, EPOD_REASON_CODE |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>T</TRIP_IDENTIFIER> <TRIP_TRANSACTION_DATE>2012-12-24T10:00:00</TRIP_TRANSACTION_DATE> <TRIP_ID>EPL_LOAD_ID</TRIP_ID> </TRIP_HEADER> <STOPS> <STOP> <STOP_HEADER> <STOP_HEADER> <STOP_IDENTIFIER>O</STOP_IDENTIFIER> <STOP_SEQ>EPL_SEQUENCE</STOP_SEQ> </STOP_HEADER> <STOP_DETAIL> <STOP_REF>EPL_JOB_TYPE</STOP_REF> <STOP_TYPE>PK/DL</STOP_TYPE> <STOP_LOCATION_TYPE>2</STOP_LOCATION_TYPE> <STOP_LOCATION_ID></STOP_LOCATION_ID> <STOP_LOCATION_NAME></STOP_LOCATION_NAME> <STOP_ADDR_LINE1></STOP_ADDR_LINE1> <STOP_ADDR_LINE2><STOP_ADDR_LINE2> <STOP_TOWN><STOP_TOWN> <STOP_POSTCODE><STOP_POSTCODE> <STOP_CONTACT_NAME><STOP_CONTACT_NAME> <STOP_CONTACT_PHONE><STOP_CONTACT_PHONE> <STOP_PLANNED_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_PLANNED_ARRIVAL_DATE> <STOP_PLANNED_DEPARTURE_DATE>2012-12-20T00:00:00<STOP_PLANNED_DEPARTURE_DATE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </STOP_DETAIL> <ORDERS> <ORDER> <ORDER_HEADER> <ORDER_TRANSACTION_DATE>2012-12-20T00:00:00</ORDER_TRANSACTION_DATE> <WMS_WAREHOUSE>EPL_SITE_REF</WMS_WAREHOUSE> <WMS_OWNER>EPL_JOB_GROUP_REF</WMS_OWNER> <SO_REF>EPL_CUST_REF</SO_REF> <TMS_REF>EPL_JOB_CODE</TMS_REF> <PO_REF>EPL_SO_REF</PO_REF> <BOOK_REF>EPL_EXT_REF</BOOK_REF> <BOOK_DATE>2012-12-24T10:00:00</BOOK_DATE> ORDER_TRANSACTION_DATE", Audit Date and Time), <ORDER_HEADER> <ORDER_DETAILS> <ORDER_DETAIL> <DETAIL_TYPE>D</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_CONTAINER_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>1</ORDERED> <TO_DELIVER>1</TO_DELIVER> <DELIVERED></DELIVERED> <REASON_CODES> <REASON_CODE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> <RC_COMMENT>EPL_CUST_COMMENTS</RC_COMMENT> <RC_TYPE>DEL</RC_TYPE> </REASON_CODE> </REASON_CODES> </ORDER_DETAIL> <ORDER_DETAIL> <DETAIL_TYPE>S</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_PRODUCT_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>EPL_PRODUCT_QTY_ORDERED</ORDERED> <TO_DELIVER>EPL_PRODUCT_QTY_PLANNED</TO_DELIVER> <DELIVERED>EPL_PRODUCT_QTY_ACTUAL</DELIVERED> <REASON_CODES> <REASON_CODE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> <RC_TYPE>DEL</RC_TYPE> </REASON_CODE> </REASON_CODES> </ORDER_DETAIL> </ORDER_DETAILS> <ORDER_REASON_CODES> <ORDER_REASON_CODE> <RC_TYPE>DEL</RC_TYPE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> </ORDER_REASON_CODE> </ORDER_REASON_CODES> </ORDER> </ORDERS> </STOP> </STOPS>
Variable data for TRIP_HEADER:
Tag | Notes |
---|---|
TRIP_TRANSACTION_DATE | The date/time the Job was cancelled, from EPOD_JOB.EPL_ACTUAL_END_DATE/EPL_ACTUAL_END_TIME, if populated, else the time the message is sent, in XSD Date format. |
TRIP_ID | EPL_LOAD_ID |
Variable data for STOP_HEADER:
Tag | Notes |
---|---|
STOP_SEQUENCE | EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip. |
Variable data for STOP_DETAIL:
Tag | Notes |
---|---|
STOP_REF | EPL_JOB_TYPE |
STOP_TYPE | "PK" if STOP_TYPE = "C" else "DL" |
STOP_PLANNED_ARRIVAL_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XML date format |
STOP_PLANNED_DEPARTURE_DATE | EPL_END_PLANNED_DATE/EPL_END_PLANNED_TIME in XML date format. Only populated if there is an End Planned Date for the job |
STOP_ACTUAL_ARRIVAL_DATE | EPL_ARRIVAL_DATE/EPL_ARRIVAL_TIME if populated, else EPL_START_ACTUAL_DATE/EPL_START_ACTUAL_TIME, in XML date format |
LOC_TIMEZONE | EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Stop Location and Address fields in the STOP_DETAIL section are populated based on Job Address or Customer Address, depending on which exist, as follows:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
STOP_LOCATION_ID | EPL_ADDRESS_ID if populated, else EPOD_JOB.EPL_CUSTOMER_CODE | EPL_ADDRESS_ID_PREFIXED if populated, else EPOD_JOB.EPL_CUSTOMER_CODE |
STOP_LOCATION_NAME | EPL_NAME if populated, else EPOD_CUSTOMER.EPL_CUSTOMER_NAME | EPL_CUSTOMER_NAME |
STOP_ADDR_LINE1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
STOP_ADDR_LINE2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
STOP_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
STOP_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
STOP_CONTACT_NAME | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT |
STOP_CONTACT_PHONE | EPL_TELEPHONE | EPL_TELEPHONE |
Variable data for ORDER_HEADER:
Tag | Notes |
---|---|
ORDER_TRANSACTION_DATE | EPL_ACTUAL_END_DATE/EPL_ACTUAL_END_TIME, if populated, else the time the message is sent, in XSD Date format. |
WMS_WAREHOUSE | EPODSITE.EPL_TTM_XREF |
WMS_OWNER | EPL_OWNER_NAME if present, else EPODSITE.EPL_TTM_XREF |
SO_REF | EPL_CUST_REF |
TMS_REF | EPL_JOB_CODE |
PO_REF | EPL_SO_REF |
BOOK_REF | EPL_EXT_REF |
BOOK_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XSD format |
Variable data for ORDER_DETAIL:
Tag | EPOD_CONTAINER | EPOD_PRODUCT |
---|---|---|
DETAIL_TYPE | "D" | "S" |
ITEM_IDENTIFIER | EPL_CONTAINER_ID | EPL_PRODUCT_CODE |
ITEM_DESCRIPTION | EPL_DESCRIPTION | EPL_DESCRIPTION |
ORDERED | 1 | EPL_PRODUCT_QTY_ORDERED |
TO_DELIVER | 1 | EPL_PRODUCT_QTY_PLANNED |
DELIVERED | 1 if delivered (EPL_STATUS = "C") or 0 if not delivered (EPL_STATUS = "X") | EPL_PRODUCT_QTY_ACTUAL |
A REASON_CODES section will only be created if the detail line in question (EPOD_CONTAINER or EPOD_PRODUCT) has a reason code or clause comment against it.
Variable data for REASON_CODE:
Tag | Reason Code | Clause Comment (For Containers only) |
---|---|---|
RC_CODE | EPL_REASON_CODE | "_CLAUSED_" |
RC_DESCRIPTION | EPOD_REASON.EPL_DESCRIPTION | "Claused Delivery" |
RC_COMMMENT | Tag not produced | EPOD_CONTAINER.EPL_CUST_COMMENT |
Variable data for ORDER_REASON_CODE:
Tag | Reason Code |
---|---|
RC_CODE | EPL_REASON_CODE |
RC_DESCRIPTION | EPOD_REASON_CODE.EPL_DESCRIPTION |
DEL messages
DEL messages signify that a delivery order has been completed. These messages are sent only when the job is marked as completed, normally through the Mobile Device completing the job.
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
TRIP_HEADER | EPOD_JOB |
TRIP_DETAIL | EPOD_AUDIT |
STOP_HEADER | EPOD_JOB |
STOP_DETAIL | EPOD_JOB, EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_HEADER | EPOD_JOB |
ORDER_HEADER_ADDRESSES | EPOD_JOB_ADDRESS, EPOD_CUSTOMER |
ORDER_DETAILS | EPOD_CONTAINER, EPOD_PRODUCT, EPOD_REASON_CODE |
The basic XML Layout is as follows:
<TRIP_HEADER> <TRIP_IDENTIFIER>T</TRIP_IDENTIFIER> <TRIP_TRANSACTION_DATE>2012-12-24T10:00:00</TRIP_TRANSACTION_DATE> <TRIP_ID>EPL_LOAD_ID</TRIP_ID> </TRIP_HEADER> <TRIP_DETAIL> <TRACTOR_LAT></TRACTOR_LAT> <TRACTOR_LON></TRACTOR_LON> </TRIP_DETAIL> <STOPS> <STOP> <STOP_HEADER> <STOP_HEADER> <STOP_IDENTIFIER>S</STOP_IDENTIFIER> <STOP_SEQ>EPL_SEQUENCE</STOP_SEQ> </STOP_HEADER> <STOP_DETAIL> <STOP_REF>EPL_JOB_TYPE</STOP_REF> <STOP_TYPE>PK/DL</STOP_TYPE> <STOP_LOCATION_TYPE>2</STOP_LOCATION_TYPE> <STOP_LOCATION_ID></STOP_LOCATION_ID> <STOP_LOCATION_NAME></STOP_LOCATION_NAME> <STOP_ADDR_LINE1></STOP_ADDR_LINE1> <STOP_ADDR_LINE2><STOP_ADDR_LINE2> <STOP_TOWN><STOP_TOWN> <STOP_POSTCODE><STOP_POSTCODE> <STOP_CONTACT_NAME><STOP_CONTACT_NAME> <STOP_CONTACT_PHONE><STOP_CONTACT_PHONE> <STOP_PLANNED_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_PLANNED_ARRIVAL_DATE> <STOP_PLANNED_DEPARTURE_DATE>2012-12-20T00:00:00<STOP_PLANNED_DEPARTURE_DATE> <STOP_ACTUAL_ARRIVAL_DATE>2012-12-20T00:00:00<STOP_ACTUAL_ARRIVAL_DATE> <LOC_TIMEZONE>EPL_TIMEZONE</LOC_TIMEZONE> </STOP_DETAIL> <STOP_SIGNATURE> <SIGNATURE>EPL_JOB_SIGNATURE</SIGNATURE> <SIGNATORY>EPL_CUST_SIGNATORY</SIGNATORY> </STOP_SIGNATURE> <ORDERS> <ORDER> <ORDER_HEADER> <ORDER_TRANSACTION_DATE>2012-12-20T00:00:00</ORDER_TRANSACTION_DATE> <WMS_WAREHOUSE>EPL_SITE_REF</WMS_WAREHOUSE> <WMS_OWNER>EPL_JOB_GROUP_REF</WMS_OWNER> <SO_REF>EPL_CUST_REF</SO_REF> <TMS_REF>EPL_JOB_CODE</TMS_REF> <PO_REF>EPL_SO_REF</PO_REF> <BOOK_REF>EPL_EXT_REF</BOOK_REF> <BOOK_DATE>2012-12-24T10:00:00</BOOK_DATE> ORDER_TRANSACTION_DATE", Audit Date and Time), <ORDER_HEADER> <ORDER_DETAILS> <ORDER_DETAIL> <DETAIL_TYPE>D</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_CONTAINER_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>1</ORDERED> <TO_DELIVER>1</TO_DELIVER> <DELIVERED></DELIVERED> <REASON_CODES> <REASON_CODE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> <RC_COMMMENT>EPL_CUST_COMMENT</RC_COMMMENT> <RC_TYPE>DEL</RC_TYPE> </REASON_CODE> </REASON_CODES> </ORDER_DETAIL> <ORDER_DETAIL> <DETAIL_TYPE>S</DETAIL_TYPE> <ITEM_IDENTIFIER>EPL_PRODUCT_ID</ITEM_IDENTIFIER> <ITEM_DESCRIPTION>EPL_DESCRIPTION</ITEM_DESCRIPTION> <ORDERED>EPL_PRODUCT_QTY_ORDERED</ORDERED> <TO_DELIVER>EPL_PRODUCT_QTY_PLANNED</TO_DELIVER> <DELIVERED>EPL_PRODUCT_QTY_ACTUAL</DELIVERED> <REASON_CODES> <REASON_CODE> <RC_CODE>EPL_REASON_CODE</RC_CODE> <RC_DESCRIPTION>EPOD_REASON_CODE.EPL_DESCRIPTION</RC_DESCRIPTION> <RC_TYPE>DEL</RC_TYPE> </REASON_CODE> </REASON_CODES> </ORDER_DETAIL> </ORDER_DETAILS> </ORDER> </ORDERS> </STOP> </STOPS>
Variable data for TRIP_HEADER:
Tag | Notes |
---|---|
TRIP_TRANSACTION_DATE | The date/time the Job was completed, from EPOD_JOB.EPL_ACTUAL_END_DATE/EPL_ACTUAL_END_TIME, if populated, else the time the message is sent, in XSD Date format. |
TRIP_ID | EPL_LOAD_ID |
Variable data for TRIP_DETAIL:
Tag | Notes |
---|---|
TRACTOR_LAT | The latitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD, if populated, else 0. |
TRACTOR_LON | The longitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD, if populated, else 0. |
Variable data for STOP_HEADER:
Tag | Notes |
---|---|
STOP_SEQUENCE | EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip. |
Variable data for STOP_DETAIL:
Tag | Notes |
---|---|
STOP_REF | EPL_JOB_TYPE |
STOP_TYPE | "PK" if STOP_TYPE = "C" else "DL" |
STOP_PLANNED_ARRIVAL_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XML date format |
STOP_PLANNED_DEPARTURE_DATE | EPL_END_PLANNED_DATE/EPL_END_PLANNED_TIME in XML date format. Only populated if there is an End Planned Date for the job |
STOP_ACTUAL_ARRIVAL_DATE | EPL_ARRIVAL_DATE/EPL_ARRIVAL_TIME if populated, else EPL_START_ACTUAL_DATE/EPL_START_ACTUAL_TIME, in XML date format |
LOC_TIMEZONE | EPL_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Stop Location and Address fields in the STOP_DETAIL section are populated based on Job Address or Customer Address, depending on which exist, as follows:
Tag | EPOD_JOB_ADDRESS | EPOD_CUSTOMER |
---|---|---|
STOP_LOCATION_ID | EPL_ADDRESS_ID if populated, else EPOD_JOB.EPL_CUSTOMER_CODE | EPL_ADDRESS_ID_PREFIXED if populated, else EPOD_JOB.EPL_CUSTOMER_CODE |
STOP_LOCATION_NAME | EPL_NAME if populated, else EPOD_CUSTOMER.EPL_CUSTOMER_NAME | EPL_CUSTOMER_NAME |
STOP_ADDR_LINE1 | EPL_ADDRESS_1 | EPL_ADDRESS_1 |
STOP_ADDR_LINE2 | EPL_ADDRESS_2 | EPL_ADDRESS_2 |
STOP_TOWN | EPL_ADDRESS_3 | EPL_ADDRESS_3 |
STOP_POSTCODE | EPL_POSTCODE | EPL_POSTCODE |
STOP_CONTACT_NAME | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT | EPOD_JOB.EPL_CUST_SIGNATORY if populated else EPL_CONTACT |
STOP_CONTACT_PHONE | EPL_TELEPHONE | EPL_TELEPHONE |
Variable data for ORDER_HEADER:
Tag | Notes |
---|---|
ORDER_TRANSACTION_DATE | EPL_ACTUAL_END_DATE/EPL_ACTUAL_END_TIME, if populated, else the time the message is sent, in XSD Date format. |
WMS_WAREHOUSE | EPODSITE.EPL_TTM_XREF |
WMS_OWNER | EPL_OWNER_NAME if present, else EPODSITE.EPL_TTM_XREF |
SO_REF | EPL_CUST_REF |
TMS_REF | EPL_JOB_CODE |
PO_REF | EPL_SO_REF |
BOOK_REF | EPL_EXT_REF |
BOOK_DATE | EPL_START_PLANNED_DATE/EPL_START_PLANNED_TIME in XSD format |
Variable data for ORDER_DETAIL:
Tag | EPOD_CONTAINER | EPOD_PRODUCT |
---|---|---|
DETAIL_TYPE | "D" | "S" |
ITEM_IDENTIFIER | EPL_CONTAINER_ID | EPL_PRODUCT_CODE |
ITEM_DESCRIPTION | EPL_DESCRIPTION | EPL_DESCRIPTION |
ORDERED | 1 | EPL_PRODUCT_QTY_ORDERED |
TO_DELIVER | 1 | EPL_PRODUCT_QTY_PLANNED |
DELIVERED | 1 if delivered (EPL_STATUS = "C") or 0 if not delivered (EPL_STATUS = "X") | EPL_PRODUCT_QTY_ACTUAL |
A REASON_CODES section will only be created if the detail line in question (EPOD_CONTAINER or EPOD_PRODUCT) has a reason code or clause comment against it.
Variable data for REASON_CODE:
Tag | Reason Code | Clause Comment (For Containers only) |
---|---|---|
RC_CODE | EPL_REASON_CODE | "_CLAUSED_" |
RC_DESCRIPTION | EPOD_REASON.EPL_DESCRIPTION | "Claused Delivery" |
RC_COMMMENT | Tag not produced | EPOD_CONTAINER.EPL_CUST_COMMENT |
GPS messages
GPS messages inform CALIDUS Portal of Lat/Long information gathered from mobile devices during operation, for last known location tracking and ETA purposes. These messages are sent every time the Mobil Device sends a GPS Tracking message to the server.
The data in the message sections is predominantly based on the following tables:
Tag | Notes |
---|---|
GPS_TRACKS | EPOD_AUDIT |
GPS_POINTS | EPOD_AUDIT |
The basic XML Layout is as follows:
<GPS_TRACKS> <GPS_TRACK> <HAULIER>EPL_SITE_ID</HAULIER> <HAULIER_NAME>EPOD_SITE.EPL_DESCRIPTION</HAULIER_NAME> <DRIVER>EPL_USER_ID</DRIVER> <DRIVER_NAME>EPOD_USER.EPL_USER_NAME</DRIVER_NAME> <TRACTOR>EPL_VEHICLE_ID</TRACTOR> <GPS_POINTS> <GPS_POINT> <GPS_POINT_DATE>2012-12-20T00:00:00</GPS_POINT_DATE> <TRACTOR_LAT></TRACTOR_LAT> <TRACTOR_LON></TRACTOR_LON> <TRIP_ID>EPL_LOAD_ID</TRIP_ID> <LOC_TIMEZONE>EPL_DEVICE_TIMEZONE</LOC_TIMEZONE> </GPS_POINT> </GPS_POINTS> </GPS_TRACK> </GPS_TRACKS>
Variable data for GPS_TRACK:
Tag | Reason Code |
---|---|
HAULIER | EPL_SITE_ID |
HAULIER_NAME | EPOD_SITE.EPL_DESCRIPTION |
DRIVER | EPL_USER_ID |
DRIVER_NAME | EPOD_USER.EPL_USER_NAME |
TRACTOR | EPL_VEHICLE_ID |
Variable data for GPS_POINT:
Tag | Reason Code |
---|---|
GPS_POINT_DATE | EPL_DEVICE_DATE/EPL_DEVICE_TIME in XSD date format. |
TRACTOR_LAT | The latitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD. |
TRACTOR_LON | The longitude of where the job was started, extracted from EPOD_AUDIT.EPL_GPS_COORD |
TRIP_ID | EPL_LOAD_ID |
LOC_TIMEZONE | EPL_DEVICE_TIMEZONE |
Note: If Timezone is omitted or blank, CALIDUS Portal assumes GMT.
Sending Messages to CALIDUS Portal
The Auto-Export process that generates and sends these files is a stand-alone application, that must be initiated through a system scheduler. The expected interval for this process is 3-5 minutes.
All messages generated by these processes are exported through flat-file transfer, either through a local file folder or through FTP.
The default file naming convention is:
EPOD_LOTS_<EPL_SITE_ID>_FTP_<currentDate>_<currentTime>_1.XML
although this can be overridden through the export configuration parameters in EPOD_XF_CONFIG.
In all cases, the file is created in a separate area as a temporary file, or created as a temporary file in the destination folder, then renamed, to prevent misreads by CALIDUS Portal of incomplete data.