Test: Difference between revisions

From Calidus HUB
No edit summary
No edit summary
Line 2: Line 2:
{{#vardefine:Client|PROD}}
{{#vardefine:Client|PROD}}
{{#vardefine:ClientName|OBS Logistics Ltd}}
{{#vardefine:ClientName|OBS Logistics Ltd}}
{{#vardefine:System|''CALIDUS'' ePOD}}
{{#vardefine:System|''CALIDUS'' VEhub}}
{{#vardefine:Doc_Title|EPOD-TTM Interface Details}}
{{#vardefine:Doc_Title|App User Guide}}
{{#vardefine:Version|0.1}}
{{#vardefine:Version|0.1}}
{{#vardefine:Date|12th August 2015}}
{{#vardefine:Date|13th October 2015}}
{{#vardefine:Reference|328407}}
{{#vardefine:Reference|123456}}
{{#vardefine:Year|2015}}
{{#vardefine:Year|2015}}
</div>
</div>
Line 20: Line 20:
<!-- TOC -->  
<!-- TOC -->  
<div class="noprint">
<div class="noprint">
= Introduction =
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.16, 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: Document References|Appendix A]].
== Fixes Required ==
{{Warning}} The following bugs are also outstanding:
* It is also sent when an order is updated through the Job and Load Import Webservices - needs checking for ORD and TRP. It doesn't - needs adding to spec. Also for the manual upload process.
* EPOD_PRODUCT - EPL_PRODUCT_QTY_PLANNED not EPL_PRODUCT_QTY_ACTUAL
* ORD: CUSTOMER_ID - Set from Account, but may not always be set - should we send this at all times or only if we have it?
* TRP: Trailer ID - User Trailer ID if present otherwise use the vehicle ID
* TIMEZONE (all types) - Should only be populated if we have it, otherwise leave blank? Populate with server timezone? Currently it will be empty.
* TIMEZONE (all types) - Currently is left blank on Load, then, if left blank on job, job retrieves load and sets it from that value, if present. massively inefficient. Instead, set to server timezone if not provided.
* Clausing by Reason code may need extra work against Containers. It only stores the comment for a clause reason code, not the reason code itself. Should do this.
<!-- NEW PAGE -->
=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:
{| border="1"
|- bgcolor="silver"
!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
|}
Notes:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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.
{{Warning}} 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:
{| border="1"
|- bgcolor="silver"
!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>
                        <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:
{| border="1"
|- bgcolor="silver"
!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
|-
|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:
{| border="1"
|- bgcolor="silver"
!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   
|}
Variable data for ORDER_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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.
{{Warning}} 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Notes
|-
|STOP_SEQUENCE  ||EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip.
|}
Variable data for STOP_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Notes
|-
|STOP_SEQUENCE  ||EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip.
|}
Variable data for STOP_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Notes
|-
|STOP_SEQUENCE  ||EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip.
|}
Variable data for STOP_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
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:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Notes
|-
|STOP_SEQUENCE  ||EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip.
|}
Variable data for STOP_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Notes
|-
|STOP_SEQUENCE  ||EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip.
|}
Variable data for STOP_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Reason Code
|-
|RC_CODE    ||EPL_REASON_CODE
|-
|RC_DESCRIPTION ||EPOD_REASON_CODE.EPL_DESCRIPTION
|}
<!-- NEW PAGE -->
== 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!Tag !!Notes
|-
|STOP_SEQUENCE  ||EPL_SEQUENCE if populated, otherwise a counter incremented for each job on the trip.
|}
Variable data for STOP_DETAIL:
{| border="1"
|- bgcolor="silver"
!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
|}
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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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:
{| border="1"
|- bgcolor="silver"
!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
|}
<!-- NEW PAGE -->
== 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
although this can be overridden through the export configuration parameters in EPOD_XF_CONFIG.


{{:CALIDUS_VEhub_App}}


<!-- NEW PAGE -->  
<!-- NEW PAGE -->  
Line 1,603: Line 28:
|Estimate=N
|Estimate=N
|Glossary=EPOD
|Glossary=EPOD
|Ref1=LOTS-tripOrder v1.16.xsd
|Ref1=&nbsp;
|RefV1=1.16
|RefV1=&nbsp;
|RefDate1=04/06/2015
|RefDate1=&nbsp;
|Ref2=[[FS 328407 EPOD-TTM Interface Changes]]
|RefV2=0.2
|RefDate2=11/08/2015
|REQ=0
|EST=0
|FS=0.5
|TS=0.5
|DEV=1.5
|ST=0.25
|IMP=0.25
|PM=0.25
|FOC=N
|Client={{#var:Client}}
|Client={{#var:Client}}
|Year={{#var:Year}}
|Year={{#var:Year}}

Revision as of 18:09, 13 October 2015





Aptean Logo.png







OBS Logistics Ltd

App User Guide


CALIDUS VEhub

13th October 2015 - 0.1
Reference: FS 123456












































CALIDUS VEhub App

Login

VEhubApp Login.PNG
VEhub Login

Enter a valid Customer ID, User Name and Password.

Click Sign In to go to the Main Screen, or Setup to configure the application.


Setup

This screen allows configuration of the communications for the application.

VEhubApp Setup.PNG
App Configuration


Main Screen

VEhubApp Main.PNG
CALIDUS VEhub Main Screen

From here, the following 3 options may be selected:


Vehicle Checks

Page 1: Basic Details

VEhubApp VehicleCheck1.PNG
Vehicle Checks Page 1

Buttons:

  • Home - return to the Main Screen.
  • Notes - show the last submitted vehicle check
  • Trash - reset all entered vehicle check information to this point, and start again. The device will prompt for confirmation first.
  • Confirm - move to the next stage

Fields:

  • Driver's Name
  • Date
  • Vehicle - enter through drop-down list of vehicles set up for this company
  • Trailer - enter through drop-down list of trailers set up for this company
  • Odometer - numeric-only


Page 2/3: Basic Checks

VEhubApp VehicleCheck2.PNG
Vehicle Checks Page 2

VEhubApp VehicleCheck3.PNG
Vehicle Checks Page 3

Check boxes for all the configured basic checks.

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage

Each item may be checked as Passed (a tick) or Failed (a cross).

If failed, an image may be taken, through a popup button for images.


Page 4: Defects

VEhubApp VehicleCheck4.PNG
Vehicle Checks Page 4

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage
  • Additional Info - enter any custom fields set up against the vehicle checks

Fields:

  • Defects


Page 5: Signature

VEhubApp VehicleCheck5.PNG
Vehicle Checks Page 5

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Clear Signature - clear the entered signature
  • Submit Vehicle Check - save the vehicle checks


Once completed, the checks will be sent back and stored in the system.

The last submitted vehicle checks are visible from the Notes button on the first page:

VEhubApp VehicleCheck1LastChecks.PNG
Viewing the Last Submitted Vehicle Checks


Accident Report

Page 1: Basic Details

VEhubApp AccidentReport1.PNG
Accident Report Basic Details

Buttons:

  • Home - return to the Main Screen.
  • Trash - reset all entered vehicle check information to this point, and start again. The device will prompt for confirmation first.
  • Confirm - move to the next stage

Fields:

  • Location - In addition to GPS data
  • Weather/Conditions
  • Details


Page 2: Damage Descriptions (1)

VEhubApp AccidentReport2.PNG
Damage Descriptions

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage

Fields:

  • Vehicle - enter through drop-down list of vehicles set up for this company
  • Trailer - enter through drop-down list of trailers set up for this company
  • Your Vehicle Damage
  • Other Vehicle Damage


Page 3: Damage Descriptions (2)

VEhubApp AccidentReport3.PNG
Damage Descriptions

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage

Fields:

  • Your Towing Company
  • Your Towing Company Tel
  • Other Towing Company
  • Other Towing Company Tel


Page 4: Other Driver / Vehicle Info (1)

VEhubApp AccidentReport4.PNG
Other Driver / Vehicle Info

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage

Fields:

  • Other Owner Name
  • Other Owner Address
  • Other Vehicle Model
  • Other Vehicle Reg
  • Other Owner Phone
  • Other Vehicle Make
  • Other Vehicle Colour


Page 5: Other Driver / Vehicle Info (2)

VEhubApp AccidentReport5.PNG
Other Driver Insurance Details

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage

Fields:

  • Other Vehicle Insurance
  • Other Driver Name
  • Other Driver Address
  • Other Vehicle Agent Tel
  • Other Driver Phone


Page 6: Passengers/Injuries

VEhubApp AccidentReport6.PNG
Passengers/Injuries

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage

Fields:

  • Your Vehicle Passengers
  • Your Vehicle Injuries
  • Other Vehicle Passengers
  • Other Vehicle Injuries


Page 7: Police & Witness Information (1)

VEhubApp AccidentReport7.PNG
Police & Witness Information

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Confirm - move to the next stage
  • Additional Info - enter any custom fields set up against the Rccident Report, through a popup window.

Fields:

  • Police Name
  • Police Dept
  • Police Badge
  • Police Phone
  • Police Other Info
  • Witness 1 Name
  • Witness 1 Home Phone
  • Witness 1 Work Phone

VEhubApp AccidentReport7.PNG
Additional Info


Page 8: Police & Witness Information (2)

VEhubApp AccidentReport8.PNG
Police & Witness Information

Buttons:

  • Home - return to the Main Screen.
  • Back - return to the previous screen.
  • Take Photos - Take and store photos
  • Submit Report - Save the Accident Report

Fields:

  • Witness 1 Address
  • Witness 2 Name
  • Witness 2 Home Phone
  • Witness 2 Address
  • Witness 2 Work Phone


The screen will validate that all information is entered correctly before submitting the report.

Once completed, the report will be sent back and stored in the system.


Trailer Scan

VEhubApp TrailerScan1.PNG
Trailer Scan Screen

Fields:

  • Type - select from
    • Vehicle Check
    • Location Check
    • Trailer Swap
  • Load Ref

Buttons:

  • Cancel - return to the main screen
  • Scan - Scan a QR barcode
  • Submit Scan - submit the scan and save it on the system


Appendix A: Document References

A.1 References

Ref NoDocument Title & IDVersionDate
1   


A.2 Glossary

Term Definition
EPOD Electronic Proof of Delivery. The OBS EPOD system is CALIDUS ePOD.
CALIDUS eSERV The OBS mobile system to complete Service functionality in the field. This is part of the CALIDUS ePOD system.
PDA The mobile device on which the C-ePOD system will run in the field. This can be a Phone, EDA or industrial PDA, running Android.
DAL Data Access Layer. A mechanism for accessing data by the system that is removed from the application, allowing for simplified access and providing protection to the data, as only approved DAL methods can be used to modify it.
GPS Global Positioning System. A mechanism of retrieving accurate positioning information in the form of Latitude and Longitude (Lat-Long) co-ordinates from a device.
GPRS, 3G, HSDPA, Data Service All terms referring to mobile device network connectivity, and the speed at which the device connects to the internet.


A.3 Authorised By


Murray Middleton

OBS Logistics Development Manager
_____________________________