FS 291096 Interface with CALIDUS ePOD: Difference between revisions

From Calidus HUB
(Updated references)
(v0.3 - draft with latest modifications)
Line 3: Line 3:
{{#vardefine:ClientName|OBS Logistics}}
{{#vardefine:ClientName|OBS Logistics}}
{{#vardefine:System|''CALIDUS'' ePOD/eSERV}}
{{#vardefine:System|''CALIDUS'' ePOD/eSERV}}
{{#vardefine:Doc_Title|Interfacing with ''CALIDUS'' ePOD/eSERV}}
{{#vardefine:Doc_Title|Interfacing with {{#var:System}}}}
{{#vardefine:Version|0.2}}
{{#vardefine:Version|0.3}}
{{#vardefine:Date|24th September 2013}}
{{#vardefine:Date|5th February 2015}}
{{#vardefine:Reference|291096}}
{{#vardefine:Reference|291096}}
{{#vardefine:Year|2013}}
{{#vardefine:Year|2015}}
</div>
</div>
{{Doc_Title
{{Doc_Title
Line 71: Line 71:
The Web Services are hosted as part of the main {{#var:System}} server and run as SOAP or HTML Web Services. Data is formatted in a strongly-typed XML file, validated by a full XSD. Data can be passed either as a string or as an XML object.
The Web Services are hosted as part of the main {{#var:System}} server and run as SOAP or HTML Web Services. Data is formatted in a strongly-typed XML file, validated by a full XSD. Data can be passed either as a string or as an XML object.


The data defined in this XSD can be modified by development for customers who require additional data sent to and from the ''CALIDUS'' ePOD system.
The data defined in this XSD can be modified by development for customers who require additional data sent to and from the {{#var:System}} system.


The Bespoke automatic and manual file uploads are written on demand for customers who require it.  
The Bespoke automatic and manual file uploads are written on demand for customers who require it.  
Line 95: Line 95:
* Palletforce Extract
* Palletforce Extract


Web Services are supplied for external systems to request information on Loads and Jobs, by ID or Date Since. The Web Services are hosted as part of the main ''CALIDUS'' ePOD server and run as SOAP or HTML Web Services. Response Data is formatted in a strongly-typed XML file, validated by a full XSD.  
Web Services are supplied for external systems to request information on Loads and Jobs, by ID or Date Since. The Web Services are hosted as part of the main {{#var:System}} server and run as SOAP or HTML Web Services. Response Data is formatted in a strongly-typed XML file, validated by a full XSD.  


Standard requested data to export supports:
Standard requested data to export supports:
Line 121: Line 121:


== Import Message Content ==
== Import Message Content ==
A basic list if all the fields in the interface for Load (Manifest) and Job follows. A full spreadsheet of all the import flows and fields containing all the limitations on length and defaulted values is provided separately.
A basic list of fields that may be used in the interface for the Load (Manifest) and the Job follows. A full spreadsheet of all the import flows and fields containing all the limitations on length and defaulted values is provided separately.
 
{{Note}} The content of the imported data varies and expands as the {{#var:System}} product expands. As new items are added to the application, the spreadsheet will be modified and issued to you, to aid in any mapping of data into the application. The Import Spreadsheet is referenced in [[#Appendix A: Document References|Appendix A]].
 


'''EPOD_LOAD'''
'''EPOD_LOAD'''
Line 146: Line 149:
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided, this will be generated by EPOD</td><td>&nbsp;</td><td>Omitted - generated by EPOD</td></tr>
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided, this will be generated by EPOD</td><td>&nbsp;</td><td>Omitted - generated by EPOD</td></tr>
<tr><td>EPL_JOB_CODE</td><td>External reference for the Job. This element can be used to link a collection and delivery together under the same reference. So, if an order is being collected at A and delivered at B, there are 2 jobs, each with a unique Job ID, but with the same Job Code. Optionally, EPOD will keep the Delivery leg of a linked job updated with the information captured from the collection.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_CODE</td><td>External reference for the Job. This element can be used to link a collection and delivery together under the same reference. So, if an order is being collected at A and delivered at B, there are 2 jobs, each with a unique Job ID, but with the same Job Code. Optionally, EPOD will keep the Delivery leg of a linked job updated with the information captured from the collection.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_TYPE</td><td>D=Delivery, C=Collection, S=Service</td><td>"C" or "D"</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_TYPE</td><td>D=Delivery, C=Collection, S=Service</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_GROUP</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_GROUP</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CUST_REF</td><td>Customer's Order Reference</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CUST_REF</td><td>Customer's Order Reference</td><td>&nbsp;</td><td>&nbsp;</td></tr>
Line 183: Line 186:
<td bgcolor="silver" width="15%">Name</td><td bgcolor="silver" width="35%">Description</td><td bgcolor="silver" width="15%">External Field</td><td bgcolor="silver" width="35%">Notes</td></tr>
<td bgcolor="silver" width="15%">Name</td><td bgcolor="silver" width="35%">Description</td><td bgcolor="silver" width="15%">External Field</td><td bgcolor="silver" width="35%">Notes</td></tr>
<tr><td>EPL_SITE_ID</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SITE_ID</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_ID</td><td>&nbsp;</td><td>&nbsp;</td><td>From Job record</td></tr>
<tr><td>EPL_JOB_ID</td><td>&nbsp;</td><td>&nbsp;</td><td>Empty tag will assume the Job ID of the enclosing job.</td></tr>
<tr><td>EPL_CONTAINER_ID</td><td>EPL_CONTAINER_ID: The unique identifier for a container.</td><td>&nbsp;</td><td>&nbsp;.</td></tr>
<tr><td>EPL_CONTAINER_ID</td><td>EPL_CONTAINER_ID: The unique identifier for a container.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SEQUENCE</td><td>The sequence in which the containers should be unloaded.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SEQUENCE</td><td>The sequence in which the containers should be unloaded.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CONTAINER_PACKAGE_CODE</td><td>Container Type Code</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CONTAINER_PACKAGE_CODE</td><td>Container Type Code</td><td>&nbsp;</td><td>&nbsp;</td></tr>
Line 724: Line 727:
</EPOD_IMPORT>
</EPOD_IMPORT>
</pre>
</pre>
{{Note}} The content of the imported data varies and expands as the the {{#var:System}} product expands. As new items are added to the application, the Import XSD will be modified and issued to you, for informational purposes. The Import XML Schema is referenced in [[#Appendix A: Document References|Appendix A]].


== Mechanism for Sending Import Files to Web Services ==
== Mechanism for Sending Import Files to Web Services ==
Line 730: Line 736:
* Passing the data as a string, through Web Service EPOD_dataservice.asmx
* Passing the data as a string, through Web Service EPOD_dataservice.asmx
* Passing the data as an XML object, through EPOD_dataservice2.asmx
* Passing the data as an XML object, through EPOD_dataservice2.asmx
The IP or web address of the {{#var:System}} server is not mapped into the Partnerlink network at this time, so the exact URL is unknown. This will be confirmed at a later date, for testing purposes.
 


For each data service, data can be sent via multiple methods, as shown below:
For each data service, data can be sent via multiple methods, as shown below:
Line 931: Line 937:
<EPOD_IMPORT_RESPONSE RESULT="NAK">
<EPOD_IMPORT_RESPONSE RESULT="NAK">
     <ERRORS>
     <ERRORS>
         <ERROR error="The element 'EPOD_LOAD' has invalid child element 'EPL_SITE_IDX'. List of possible elements expected: 'EPL_SITE_ID'." exception="System.Xml.Schema.XmlSchemaValidationException: The element 'EPOD_LOAD' has invalid child element 'EPL_SITE_IDX'. List of possible elements expected: 'EPL_SITE_ID'."/>
         <ERROR error="The element 'EPOD_LOAD' has invalid child element 'EPL_SITE_IDX'.  
                      List of possible elements expected: 'EPL_SITE_ID'."  
            exception="System.Xml.Schema.XmlSchemaValidationException:  
                      The element 'EPOD_LOAD' has invalid child element 'EPL_SITE_IDX'.  
                      List of possible elements expected: 'EPL_SITE_ID'."/>
     </ERRORS>
     </ERRORS>
</EPOD_IMPORT_RESPONSE>
</EPOD_IMPORT_RESPONSE>
Line 986: Line 996:
</pre>
</pre>


== Export Process ==
== Export Process ==
A process runs on a timed schedule within the {{#var:System}} application, to pick up any jobs that have been completed and export them to external systems.
A process runs on a timed schedule within the {{#var:System}} application, to pick up any jobs that have been completed and export them to external systems.


== Export Message Content ==
== Export Message Content ==
A basic list if all the fields in the interface for Job follows. A full spreadsheet of all the export flows and fields containing all the limitations on length and defaulted values is provided separately.
A basic list if all the fields in the interface for Job follows. A full spreadsheet of all the export flows and fields containing all the limitations on length and defaulted values is provided separately.
{{Note}} The content of the exported data varies and expands as the {{#var:System}} product expands. As new items are added to the application, the spreadsheet will be modified and issued to you, to aid in any mapping of data into your application. The Export Spreadsheet is referenced in [[#Appendix A: Document References|Appendix A]].


'''EPOD_JOB'''
'''EPOD_JOB'''
Line 998: Line 1,011:
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided on Import, this will be generated by EPOD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided on Import, this will be generated by EPOD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_LOAD_ID</td><td>Unique Reference for the Load that the Job belongs to. If not provided, defaulted from the enclosing EPOD_LOAD</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_LOAD_ID</td><td>Unique Reference for the Load that the Job belongs to. If not provided, defaulted from the enclosing EPOD_LOAD</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_TYPE</td><td>D=Delivery, C=Collection, S=Service</td><td>"D" or "C"</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_TYPE</td><td>D=Delivery, C=Collection, S=Service</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_GROUP</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_GROUP</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_INSTRUCTION</td><td>Instructions for the Driver</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_INSTRUCTION</td><td>Instructions for the Driver</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_SIGNATURE</td><td>The signature taken from the customer when the job was completed. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_JOB_SIGNATURE</td><td>The signature taken from the customer when the job was completed. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_REASON_CODE</td><td>If a job has been cancelled, the reason code entered by the user is held here.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_REASON_CODE</td><td>If a job has been cancelled, the reason code entered by the user is held here.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_LINKED_REASON</td><td>If the job is a delivery, and a collection of the same load with the same EPL_JOB_CODE is cancelled, this delivery will be cancelled, and this field will be set to "Y"</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_LINKED_REASON</td><td>If the job is a delivery, and a collection of the same load with the same EPL_JOB_CODE is cancelled, this delivery will be cancelled, and this field will be set to "Y"</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_STATUS</td><td>C- complete, X cancelled</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_STATUS</td><td>C- complete, X cancelled</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CUSTOMER_CODE</td><td>Customer Code from external system. If not provided, one will be generated from EPL_CUSTOMER_NAME</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CUSTOMER_CODE</td><td>Customer Code from external system. If not provided, one will be generated from EPL_CUSTOMER_NAME</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PHOTO_ID</td><td>If cancelled, a photo may have been taken by the user. If so, this field is populated with a unique ID.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PHOTO_ID</td><td>If cancelled, a photo may have been taken by the user. If so, this field is populated with a unique ID.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PHOTO</td><td>The photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PHOTO</td><td>The photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_ENG_SIGNATURE</td><td>The signature taken from the driver/engineer when the job was completed, if required. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_ENG_SIGNATURE</td><td>The signature taken from the driver/engineer when the job was completed, if required. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SEQUENCE</td><td>The sequence of the job. This could be the sequence sent on Import, a pre-defined sequence (if one was not provided) or a user-changed value (if enabled)</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SEQUENCE</td><td>The sequence of the job. This could be the sequence sent on Import, a pre-defined sequence (if one was not provided) or a user-changed value (if enabled)</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_START_PLANNED_DATE</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_START_PLANNED_DATE</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
Line 1,014: Line 1,027:
<tr><td>EPL_END_PLANNED_DATE</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_END_PLANNED_DATE</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_END_PLANNED_TIME</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_END_PLANNED_TIME</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_START_ACTUAL_DATE</td><td>The date the user actually chose to start the job. Format: YYYYMMDD</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_START_ACTUAL_DATE</td><td>The date the user actually chose to start the job. Format: YYYYMMDD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_START_ACTUAL_TIME</td><td>The time the user actually chose to start the job. Format HHMMSSNN</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_START_ACTUAL_TIME</td><td>The time the user actually chose to start the job. Format HHMMSSNN</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_ARRIVED_DATE</td><td>The date the user indicated they arrived at the destination. Format: YYYYMMDD</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_ARRIVED_DATE</td><td>The date the user indicated they arrived at the destination. Format: YYYYMMDD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_ARRIVED_TIME</td><td>The time the user indicated they arrived at the destination. Format HHMMSSNN</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_ARRIVED_TIME</td><td>The time the user indicated they arrived at the destination. Format HHMMSSNN</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_END_ACTUAL_DATE</td><td>The date the user completed or cancelled the job. Format: YYYYMMDD</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_END_ACTUAL_DATE</td><td>The date the user completed or cancelled the job. Format: YYYYMMDD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_END_ACTUAL_TIME</td><td>The time the user completed or cancelled the job. Format HHMMSSNN</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_END_ACTUAL_TIME</td><td>The time the user completed or cancelled the job. Format HHMMSSNN</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_DISTANCE_PLANNED</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DISTANCE_PLANNED</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DISTANCE_ACTUAL</td><td>&nbsp;</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_DISTANCE_ACTUAL</td><td>&nbsp;</td><td>&nbsp;</td><td>N/A</td></tr>
Line 1,035: Line 1,048:
<tr><td>EPL_EMAIL</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_EMAIL</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_INVOICED</td><td>&nbsp;</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_INVOICED</td><td>&nbsp;</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_CUST_SIGNATORY</td><td>The name of the customer signatory on the job.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_CUST_SIGNATORY</td><td>The name of the customer signatory on the job.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_CODE</td><td>External reference for the Job. This element can be used to link a collection and delivery together under the same reference. So, if an order is being collected at A and delivered at B, there are 2 jobs, each with a unique Job ID, but with the same Job Code. Optionally, EPOD will keep the Delivery leg of a linked job updated with the information captured from the collection.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_CODE</td><td>External reference for the Job. This element can be used to link a collection and delivery together under the same reference. So, if an order is being collected at A and delivered at B, there are 2 jobs, each with a unique Job ID, but with the same Job Code. Optionally, EPOD will keep the Delivery leg of a linked job updated with the information captured from the collection.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CUST_REF</td><td>Customer's Order Reference</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CUST_REF</td><td>Customer's Order Reference</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_OFFICE_INSTRUCTION</td><td>Instructions for Admin staff</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_OFFICE_INSTRUCTION</td><td>Instructions for Admin staff</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SIGNED_UNCHECKED</td><td>An indication whether the customer signed for the goods without checking them first. Note that this field can be used for any check-box entry, as this is configurable.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_SIGNED_UNCHECKED</td><td>An indication whether the customer signed for the goods without checking them first. Note that this field can be used for any check-box entry, as this is configurable.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SO_NUMBER</td><td>Sales Order Reference.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SO_NUMBER</td><td>Sales Order Reference.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_TNCS</td><td>An XML fragment, displaying the Terms and Conditions agreed to by the customer when signing for the goods. This can also include up to 3 configurable check-boxes that the user may check.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_TNCS</td><td>An XML fragment, displaying the Terms and Conditions agreed to by the customer when signing for the goods. This can also include up to 3 configurable check-boxes that the user may check.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_ORDER_DATE</td><td>Date Order created - defaulted to the date the order was received if not provided</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_ORDER_DATE</td><td>Date Order created - defaulted to the date the order was received if not provided</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SALES_CONTACT</td><td>The operative who took the order. Can be used as a display field for documentation</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SALES_CONTACT</td><td>The operative who took the order. Can be used as a display field for documentation</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_USER_NOTES</td><td>Optional Notes entered by the driver while completing the job.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_USER_NOTES</td><td>Optional Notes entered by the driver while completing the job.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_OWNER_NAME</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_OWNER_NAME</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SERVICE_LEVEL</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SERVICE_LEVEL</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
Line 1,058: Line 1,071:
<tr><td>EPL_SITE_ID</td><td>Unique Reference for the Site that the Job belongs to</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SITE_ID</td><td>Unique Reference for the Site that the Job belongs to</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided on Import, this will be generated by EPOD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided on Import, this will be generated by EPOD</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CONTAINER_ID</td><td>EPL_CONTAINER_ID: The unique identifier for a cotainer.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CONTAINER_ID</td><td>EPL_CONTAINER_ID: The unique identifier for a container.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_SEQUENCE</td><td>A sequence for the containers to be shown on the user's device.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SEQUENCE</td><td>A sequence for the containers to be shown on the user's device.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CONTAINER_PACKAGE_CODE</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CONTAINER_PACKAGE_CODE</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CONTAINER_PACKAGE_DESC</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CONTAINER_PACKAGE_DESC</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_REASON_CODE</td><td>If a container has been cancelled, the reason code entered by the user is held here.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_REASON_CODE</td><td>If a container has been cancelled, the reason code entered by the user is held here.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_LINKED_REASON</td><td>If the job is a delivery, and a collection of this container on the same load with the same EPL_JOB_CODE is cancelled, this container will be cancelled, and this field will be set to "Y"</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_LINKED_REASON</td><td>If the job is a delivery, and a collection of this container on the same load with the same EPL_JOB_CODE is cancelled, this container will be cancelled, and this field will be set to "Y"</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_STATUS</td><td>EPL_STATUS: Status of the current Container. C-Completed, X-Cancelled.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_STATUS</td><td>EPL_STATUS: Status of the current Container. C-Completed, X-Cancelled.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PHOTO_ID</td><td>If cancelled, or received with a clause, a photo may have been taken by the user. If so, this field is populated with a unique ID.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PHOTO_ID</td><td>If cancelled, or received with a clause, a photo may have been taken by the user. If so, this field is populated with a unique ID.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PHOTO</td><td>The photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PHOTO</td><td>The photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CUST_COMMENTS</td><td>Optional entry by the user, indicating whether the customer has identified an issue with the received item (a claused receipt). If present, the customer may have requested an image, which would be contained in EPL_PHOTO.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_CUST_COMMENTS</td><td>Optional entry by the user, indicating whether the customer has identified an issue with the received item (a claused receipt). If present, the customer may have requested an image, which would be contained in EPL_PHOTO.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_DESCRIPTION_LONG</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DESCRIPTION_LONG</td><td>&nbsp;</td><td>&nbsp;</td><td>As Sent</td></tr>
Line 1,074: Line 1,087:
<tr><td>EPL_LAST_CHANGED_DATE</td><td>The date the record was last updated. Auditing use only.</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_LAST_CHANGED_DATE</td><td>The date the record was last updated. Auditing use only.</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_LAST_CHANGED_TIME</td><td>The time the record was last updated. Auditing use only.</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_LAST_CHANGED_TIME</td><td>The time the record was last updated. Auditing use only.</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPOD_PRODUCTS</td><td>Contains a series of EPOD_PRODUCTS objects, detailing the products within the container, or loose products</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPOD_PRODUCTS</td><td>Contains a series of EPOD_PRODUCTS objects, detailing the products within the container, or loose products</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</table>
</table>


Line 1,082: Line 1,095:
<tr><td>EPL_SITE_ID</td><td>Unique Reference for the Site that the Job belongs to</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SITE_ID</td><td>Unique Reference for the Site that the Job belongs to</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided on Import, this will be generated by EPOD</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_JOB_ID</td><td>Unique reference for the job. If not provided on Import, this will be generated by EPOD</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CONTAINER_ID</td><td>EPL_CONTAINER_ID: The unique identifier for a cotainer.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CONTAINER_ID</td><td>EPL_CONTAINER_ID: The unique identifier for a container.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_CODE</td><td>The unique identifier for the product delivered/collected</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_CODE</td><td>The unique identifier for the product delivered/collected</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_SEQUENCE</td><td>A unique sequence for the product.</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_SEQUENCE</td><td>A unique sequence for the product.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DESCRIPTION</td><td>A 40-character description of the product</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DESCRIPTION</td><td>A 40-character description of the product</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DESCRIPTION_LONG</td><td>A 255 character long description. Can be used to extend the description above.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_DESCRIPTION_LONG</td><td>A 255 character long description. Can be used to extend the description above.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_QTY_PLANNED</td><td>The quantity of the product to be delivered/collected</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_QTY_PLANNED</td><td>The quantity of the product to be delivered/collected</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_QTY_ACTUAL</td><td>The actual quantity delivered/collected.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PRODUCT_QTY_ACTUAL</td><td>The actual quantity delivered/collected.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PRODUCT_QTY_CASE</td><td>Not in use</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_PRODUCT_QTY_CASE</td><td>Not in use</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_PRODUCT_QTY_ORDERED</td><td>The quantity of the product ordered.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_QTY_ORDERED</td><td>The quantity of the product ordered.</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_REASON_CODE</td><td>If a product has been cancelled or the quantity has been chanegd, the reason code entered by the user is held here.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_REASON_CODE</td><td>If a product has been cancelled or the quantity has been changed, the reason code entered by the user is held here.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_LINKED_REASON</td><td>If the job is a delivery, and a collection of this product on the same load with the same EPL_JOB_CODE and EPL_CONTAINER_ID is cancelled, this product will be cancelled, and this field will be set to "Y"</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_LINKED_REASON</td><td>If the job is a delivery, and a collection of this product on the same load with the same EPL_JOB_CODE and EPL_CONTAINER_ID is cancelled, this product will be cancelled, and this field will be set to "Y"</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_STATUS</td><td>EPL_STATUS: Status of the current Product. C-Completed, X-Cancelled.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_STATUS</td><td>EPL_STATUS: Status of the current Product. C-Completed, X-Cancelled.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PHOTO_ID</td><td>If cancelled, or received with a clause, a photo may have been taken by the user. If so, this field is populated with a unique ID.</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PHOTO_ID</td><td>If cancelled, or received with a clause, a photo may have been taken by the user. If so, this field is populated with a unique ID.</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PHOTO</td><td>The photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>x</td></tr>
<tr><td>EPL_PHOTO</td><td>The photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>EPL_PRODUCT_WEIGHT</td><td>The item weight of this product</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_PRODUCT_WEIGHT</td><td>The item weight of this product</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CUST_REF</td><td>Customer's Order Reference</td><td>&nbsp;</td><td>As Sent</td></tr>
<tr><td>EPL_CUST_REF</td><td>Customer's Order Reference</td><td>&nbsp;</td><td>As Sent</td></tr>
Line 1,103: Line 1,116:
<tr><td>EPL_LAST_CHANGED_TIME</td><td>The time the record was last updated. Auditing use only.</td><td>&nbsp;</td><td>N/A</td></tr>
<tr><td>EPL_LAST_CHANGED_TIME</td><td>The time the record was last updated. Auditing use only.</td><td>&nbsp;</td><td>N/A</td></tr>
</table>
</table>


{{Note}} Regarding Signature and Photo data formats in this message:
{{Note}} Regarding Signature and Photo data formats in this message:
Line 1,191: Line 1,205:
</pre>
</pre>
{{Note}} The signature has been shortened for the purposes of this document.
{{Note}} The signature has been shortened for the purposes of this document.
{{Note}} The content of the exported data varies and expands as the {{#var:System}} product expands. As new items are added to the application, a full XSD will be modified and issued to you, to aid in validating data passed into your application. The Import XSD is referenced in [[#Appendix A: Document References|Appendix A]].
=== Vehicle Checks Format ===
Vehicle Defect Checks are configurable within {{#var:System}}. The resulting checks are stored naturally within the database as XML fragments, which may be validated with its own XSD. The vehicle checks may only be requested through the EPOD_EXPORT_VEHICLE_CHECKS webservice request, and the response XSD is referenced in [[#Appendix A: Document References|Appendix A]].
Vehicle Checks XML exports as a series of questions and answers from the device and may be of several different types:
* Numeric - the user will be prompted to enter a number only as the response , for example, What is the current Mileage?
* Text - The user will be prompted to enter a text response.
* Boolean - The user is prompted to enter a yes or no response, for example, Does the Windscreen have any cracks. The options allowed can be cycled through by pressing on the button.
* Option - The user will be prompted with a number of boxes that must be checked. The options allowed can be cycled through by pressing on the button.
* Multi-state Check boxes - the user can cycle through all available values on the check-box, for example, unchecked (blank), Failed (N), Not Applicable (Y), Passed (Y), etc.
An example export is shown below:
<EPOD_EXPORT_VEHICLECHECKS_RESPONSE RESULT="ACK">
    <EPOD_VEHICLE_CHECKS>
        <EPOD_VEHICLE_CHECK>
            <EPL_SITE_ID>DEMO</EPL_SITE_ID>
            <EPL_VEHICLE_ID>VAN</EPL_VEHICLE_ID>
            <EPL_VEHICLE_CHECK_DATE>20141217</EPL_VEHICLE_CHECK_DATE>
            <EPL_VEHICLE_CHECK_TIME>0</EPL_VEHICLE_CHECK_TIME>
            <EPL_USER_ID>MATT</EPL_USER_ID>
            <VEHICLE_CHECK_DATA>
                <QUESTION ID="0001">
                    <TEXT>Please check the following items.</TEXT>
                    <FORMAT>X</FORMAT>
                    <SKIPABLE>N</SKIPABLE>
                    <ITEMS>
                        <ITEM ANSWER="Y">Oil Level</ITEM>
                        <ITEM ANSWER="Y">Tyres</ITEM>
                        <ITEM ANSWER="Y">Brakes</ITEM>
                        <ITEM ANSWER="Y">Water</ITEM>
                        <ITEM ANSWER="Y">Lights</ITEM>
                    </ITEMS>
                </QUESTION>
                <QUESTION ID="0002">
                    <TEXT>Please enter any comments.</TEXT>
                    <FORMAT>T</FORMAT>
                    <SKIPABLE>Y</SKIPABLE>
                    <ANSWER>na</ANSWER>
                </QUESTION>
                <QUESTION ID="0003">
                    <TEXT>What is the current Mileage?</TEXT>
                    <FORMAT>N</FORMAT>
                    <SKIPABLE>N</SKIPABLE>
                    <ANSWER>1000</ANSWER>
                </QUESTION>
            </VEHICLE_CHECK_DATA>
        </EPOD_VEHICLE_CHECK>
    </EPOD_VEHICLE_CHECKS>
</EPOD_EXPORT_VEHICLECHECKS_RESPONSE>
=== UDF Format ===
The {{#var:System}} product can be configured to accept data entry of any non-critical field at several major points in processing jobs, for example:
* Load Start/End Metrics
* General Job Details
* Service:
** Prework/Postwork checks
** Diagnosis/Report fields
The mechanism of User-defined Fields (UDF) allows this configuration.
Similarly to Vehicle Checks, UDF responses are held natively within the database as XML fragments, which may be validated with its own XSD. The vehicle checks may only be requested through the EPOD_EXPORT_VEHICLE_CHECKS webservice request, and the response XSD is referenced in [[#Appendix A: Document References|Appendix A]].
The allowed field types are extended from Vehicle Checks, allowing also:
* Numeric
* Text
* Text Area
* Checks
* Options
* Tri-state Checks
* Tri-state Options
* Drop-down lists
The format differs slightly - a sample is shown below:
<FORM NAME="Job Details" REQUIRED="Y">
  <FIELD ID="WEIGHBRIDGE_WEIGHT">
      <TEXT>Weight</TEXT>
      <FORMAT>N</FORMAT>
      <REQUIRED>^0*[1-9][0-9]{2,4}$</REQUIRED>
      <VALUE>123.45</VALUE>
  </FIELD>
  <FIELD ID="WEIGHBRIDGE_TICKET">
      <TEXT>Weighbridge Number</TEXT>
      <FORMAT>T</FORMAT>
      <REQUIRED>Y</REQUIRED>
      <VALUE>162553</VALUE>
  </FIELD>
</FORM>
{{Note}} The UDF data may be HTML-safe encoded.
=== Terms & Conditions ===
Terms and Conditions displayed to customers are configurable within {{#var:System}}. The are represented by mixed HTML format, as follows:
<TERMS_CONDITIONS>
    <TEXT>I certify that the information in A, B and C is correct, and that the carrier is registered.&lt;br /&gt;
          I confirm that I have fulfilled my duty to apply the waste hierarchy as required by Regulation 12 of the
          Waste (England and Wales) Regulations 2011.</TEXT>
    <CHECKS>
        <INPUT type="checkbox">CHECK1</INPUT>
        <INPUT type="checkbox">CHECK2</INPUT>
        <INPUT type="checkbox">CHECK3</INPUT>
    </CHECKS>
</TERMS_CONDITIONS>
{{Note}} The Terms and Conditions data may be HTML-safe encoded.


== Export Mechanisms ==
== Export Mechanisms ==
Line 1,199: Line 1,323:


When the file is received and processed by the web service, the system expects the web service to respond in the format, as shown in previous sections. The exact same format and structure should be used as described here. The content may be as detailed as required by the TMS system.
When the file is received and processed by the web service, the system expects the web service to respond in the format, as shown in previous sections. The exact same format and structure should be used as described here. The content may be as detailed as required by the TMS system.


=== Web Services (Pull) ===
=== Web Services (Pull) ===
Web Services are supplied for external systems to request information on Loads and Jobs, by ID or Date Since. The Web Services are hosted as part of the main ''CALIDUS'' ePOD server and run as SOAP or HTML Web Services. Response Data is formatted in a strongly-typed XML file, validated by a full XSD.  
Web Services are supplied for external systems to request information on Loads and Jobs, by ID or Date Since. The Web Services are hosted as part of the main {{#var:System}} server and run as SOAP or HTML Web Services. Response Data is formatted in a strongly-typed XML file, validated by a full XSD.  


Standard requested data to export supports the following, through the indicated web services request:
Standard requested data to export supports the following, through the indicated web services request:
* Loads (including all Jobs underneath) by ID or Date
* Loads (including all Jobs underneath) by ID or Date
** EPOD_XML_EXPORT_LOAD
** EPOD_EXPORT_LOAD
** EPOD_XML_EXPORT_LOAD_DATE
** EPOD_EXPORT_LOAD_DATE
** EPOD_XML_EXPORT_LOAD_DATE_RANGE
** EPOD_EXPORT_LOAD_DATE_RANGE
* Jobs by ID or Date
* Jobs by ID or Date
** EPOD_XML_EXPORT_JOB
** EPOD_EXPORT_JOB
** EPOD_XML_EXPORT_JOB_DATE
** EPOD_EXPORT_JOB_DATE
** EPOD_XML_EXPORT_JOB_DATE_RANGE
** EPOD_EXPORT_JOB_DATE_RANGE
* Current Vehicle information
* Vehicle information
** EPOD_XML_EXPORT_VEHICLE_REQUEST
** EPOD_EXPORT_VEHICLE_REQUEST
** EPOD_EXPORT_VEHICLE_CHECKS
 


=== Flat-file Processing ===
=== Flat-file Processing ===
Line 1,228: Line 1,355:
|Estimate=N
|Estimate=N
|Glossary=EPOD
|Glossary=EPOD
|Ref1=EPOD Import Mapping v0.7.xlsx
|Ref1=EPOD Import Mapping v0.10.xlsx
|RefV1=0.5
|RefV1=0.5
|RefDate1=24/09/2013
|RefDate1=05/02/2015
|Ref2=EPOD Export Mapping v0.7.xlsx
|Ref2=EPOD Export Mapping v0.10.xlsx
|RefV2=0.7
|RefV2=0.10
|RefDate2=24/09/2013
|RefDate2=05/02/2015
|Ref3=XSD.zip
|Ref3=XSD.zip
|RefV3=N/A
|RefV3=N/A
|RefDate3=23/09/2013
|RefDate3=05/02/2015
|REQ=0
|REQ=0
|EST=0
|EST=0

Revision as of 12:39, 5 February 2015





Aptean Logo.png







OBS Logistics

Interfacing with CALIDUS ePOD/eSERV


CALIDUS ePOD/eSERV

5th February 2015 - 0.3
Reference: FS 291096












































Functional Overview

CALIDUS ePOD/eSERV provides an electronic proof of delivery execution layer to existing TMS systems or a stand-alone execution and basic Admin layer for stand-alone customers.

For those customers who require an interface into and out of CALIDUS ePOD/eSERV, a standard interface format is defined here.

The layout of the CALIDUS ePOD/eSERV system is as follows:

EPOD-ERD-1.PNG

Most of the tables in the structure can be configured through the interface with the exception of:

  • Job Group
  • User Access Group
  • Service Vehicle Product

As can be seen, the basic structure is:

  • Load - a collection of jobs of any type to be completed by the PDA user.
  • Job - a specific task for a customer (i.e. collect order A from point X at this time, deliver order A to point Y at this time).
  • Container - any unique item to be delivered, for example, bar-coded pallets, cartons, packages, trolleys, A-frames, etc.
  • Product - any product to be delivered, plus a quantity. Can be contained within the containers, or can be Loose products.

Notes:

  • Each Load or Work List will be assigned to a user for completion. Many can be created and assigned to users - only the earliest will be active.
  • Each job will be listed in sequence, or planned start time. It is configurable whether the user is forced to complete tasks in sequence.
  • Each container and product must be actioned by the user (i.e. enter/scan each container for delivery, or say why each container was not delivered).
  • If a container has products, each of these must be actioned by the user. It is configurable whether products are required to be entered.
  • If products are defined without a container (i.e. Loose Products), they must be entered. CALIDUS ePOD/eSERV assumes a Loose Product container of '000000000000', so that the table data structure is preserved.

Scope

Note Note: All web service requests and XML formats are fully documented in the supporting documentation. XML files have associated XSDs, for appropriate validation.

Note Note: There are interfaces into CALIDUS ePOD/eSERV for Standing Data. This document does not yet show these interfaces, as this can be maintained separately and manually within CALIDUS ePOD/eSERV. Those flows are:

  • Vehicles
  • Reason Codes (used when cancelling jobs or pallets)
  • Users (Drivers/Engineers)
  • Customers

Interfaces do exist for this standing data upload through the Web Services, used in exactly the same way as described for the Load and Job interfaces below. The interface formats are described in detail in the supporting documentation, referenced in the appendices.

The system can be configured to automatically create the Vehicles and Users with very basic information based off the received values in the Load and Job messages. Customers will be created as part of the information received through the Job messages.

Note Note: The document does not at this time define the interface required for Service-type jobs, as this is currently in significant development within the product. A basic interface does exist and is described in detail in the supporting documentation, referenced in the appendices.


Functional Description

Import of data into the system can be through several mechanisms:

  • Web Services standard interface
  • Bespoke manual file upload, through CSV or Microsoft Excel file
  • Bespoke automatic file upload, through CSV, XML or Microsoft Excel file

The Web Services are hosted as part of the main CALIDUS ePOD/eSERV server and run as SOAP or HTML Web Services. Data is formatted in a strongly-typed XML file, validated by a full XSD. Data can be passed either as a string or as an XML object.

The data defined in this XSD can be modified by development for customers who require additional data sent to and from the CALIDUS ePOD/eSERV system.

The Bespoke automatic and manual file uploads are written on demand for customers who require it.

The standard Web Services import interface supports:

  • Loads
  • Jobs (stand-alone or within a Load)
    • Collections
    • Deliveries
      • Containers (Pallets, boxes, etc)
      • Products (both within containers and loose products)
    • Services
  • Standing Data
    • Users
    • Vehicles
    • Service Products
    • Customers
    • Reason Codes

Export of data from the system can be through several mechanisms:

  • Request of data from a Web Service
  • Auto-export of data
  • Palletforce Extract

Web Services are supplied for external systems to request information on Loads and Jobs, by ID or Date Since. The Web Services are hosted as part of the main CALIDUS ePOD/eSERV server and run as SOAP or HTML Web Services. Response Data is formatted in a strongly-typed XML file, validated by a full XSD.

Standard requested data to export supports:

  • Loads (including all Jobs underneath) by ID or Date
  • Jobs by ID or Date
  • Current Vehicle information

Auto-export of data can be configured to push the XML data automatically to the client system, via several mechanisms:

  • Web Service
  • Email
  • Flat-file copy, local, remote or FTP

If configured as a Web Service, the Auto-Export process will connect to the defined web service and push the data to it in the XML format defined above. If configured as an Email address, the XML file will be emailed to the defined address.

This process can also (if configured) automatically produce and email Completion Documents (defined POD, POC or Service reports) to customers, on successful completion of a job.

The Auto-export process supports:

  • Automatic emailing of Completion reports to customers (if configured)
  • Load (header or with all Job information)
  • Jobs (Completed or Cancelled) with all details
  • Palletforce
  • OEM bespoke interfaces
  • Other OBS Logistics products

The Auto-Export process is run as a scheduled task on the main CALIDUS ePOD/eSERV server.

Import Message Content

A basic list of fields that may be used in the interface for the Load (Manifest) and the Job follows. A full spreadsheet of all the import flows and fields containing all the limitations on length and defaulted values is provided separately.

Note Note: The content of the imported data varies and expands as the CALIDUS ePOD/eSERV product expands. As new items are added to the application, the spreadsheet will be modified and issued to you, to aid in any mapping of data into the application. The Import Spreadsheet is referenced in Appendix A.


EPOD_LOAD

NameDescriptionExternal FieldNotes
EPL_SITE_IDEPL_SITE_ID: Unique reference of the site that the Load belongs to.  
EPL_LOAD_IDEPL_LOAD_ID: Unique reference of the Load.  
EPL_LOAD_START_PLANNED_DATEThe planned start date and time. This is used to sequence the load, and decide which load is provided to the user. These times will be defaulted by the EPOD system to the earliest and latest dates and times against the jobs provided, unless this information can be provided by the TMS
EPL_LOAD_START_PLANNED_TIME   
EPL_LOAD_END_PLANNED_DATEThe planned end date and time  
EPL_LOAD_END_PLANNED_TIME   
EPL_LOAD_DISTANCE_PLANNEDThe distance planned by the route planner N/A
EPL_USER_IDTo be used if a user is predefined as assigned to complete this Load.  
EPL_VEHICLE_IDTo be used if a vehicle is predefined as assigned to complete this Load.  
EPOD_JOBSEPOD_JOBS contains a series of EPOD_JOB objects.  


EPOD_JOB

NameDescriptionExternal FieldNotes
EPL_SITE_IDUnique Reference for the Site that the Job belongs to  
EPL_LOAD_IDUnique Reference for the Load that the Job belongs to. If not provided, defaulted from the enclosing EPOD_LOAD  
EPL_JOB_IDUnique reference for the job. If not provided, this will be generated by EPOD Omitted - generated by EPOD
EPL_JOB_CODEExternal reference for the Job. This element can be used to link a collection and delivery together under the same reference. So, if an order is being collected at A and delivered at B, there are 2 jobs, each with a unique Job ID, but with the same Job Code. Optionally, EPOD will keep the Delivery leg of a linked job updated with the information captured from the collection.  
EPL_JOB_TYPED=Delivery, C=Collection, S=Service  
EPL_JOB_GROUP   
EPL_CUST_REFCustomer's Order Reference  
EPL_JOB_INSTRUCTIONInstructions for the Driver  
EPL_OFFICE_INSTRUCTIONInstructions for Admin staff  
EPL_START_PLANNED_DATE   
EPL_START_PLANNED_TIME   
EPL_END_PLANNED_DATE   
EPL_END_PLANNED_TIME   
EPL_DISTANCE_PLANNED   
EPOD_CUSTOMERThis tag may be used to specify a Customer separately. If this is used, and the address and contact information on the job below is different, the EPOD system will create a Job Address specifically for this job, whilst maintaining the Customer information separately, as an Invoice address.
Note that this will happen if the Customer has been created previously either through another Job, another Customer Tag in a Job or a Customer Tag alone.
  
EPL_CUSTOMER_CODECustomer Code from external system. If not provided, one will be generated from EPL_CUSTOMER_NAME  
EPL_CUSTOMER_NAMEThe Name of the customer  
EPL_ADDRESS_1   
EPL_ADDRESS_2   
EPL_ADDRESS_3   
EPL_ADDRESS_4   
EPL_ADDRESS_5   
EPL_POSTCODE   
EPL_CONTACTContact on site for the job. Can be changed at Job completion.  
EPL_TELEPHONEThe Customer's Contact Telephone number  
EPL_EMAILContact Email address. Can be used to automatically send Job Completion documents to the customer.  
EPL_OWNER_NAMECan be used as a display field for documentation  
EPL_SO_NUMBERSales Order Reference.  
EPL_ORDER_DATEDate Order created - defaulted to Now()  
EPL_SALES_CONTACTThe operative who took the order. Can be used as a display field for documentation  
EPL_SERVICE_LEVEL   
EPL_SEQUENCEThe sequence in which the jobs are to be completed. If this is not provided, the system will allocate the jobs in the sequence in which they were provided in this interface i.e. first is "0001", second is "0002", etc.  
EPOD_CONTAINERSContains a series of EPOD_CONTAINER objects  
EPOD_PRODUCTSContains a series of EPOD_PRODUCT objects  
EPOD_SERVICE   

EPOD_CONTAINER

NameDescriptionExternal FieldNotes
EPL_SITE_ID   
EPL_JOB_ID  Empty tag will assume the Job ID of the enclosing job.
EPL_CONTAINER_IDEPL_CONTAINER_ID: The unique identifier for a container.  
EPL_SEQUENCEThe sequence in which the containers should be unloaded.  
EPL_CONTAINER_PACKAGE_CODEContainer Type Code  
EPL_CONTAINER_PACKAGE_DESCContainer Type Description  
EPL_GROSS_WEIGHTGross weight of the container  
EPL_DESCRIPTION_LONGLong description of the container  
EPL_CODE_1Additional code field used for any purpose  
EPL_CODE_2Additional code field used for any purpose  
EPL_CODE_3Additional code field used for any purpose  
EPOD_PRODUCTSEPOD_PRODUCTS contains a series of EPOD_PRODUCT objects associated to the container.  

EPOD_PRODUCT

NameDescriptionExternal FieldNotes
EPL_SITE_IDUnique Reference for the Site that the Job belongs to  
EPL_JOB_IDUnique reference for the job. If not provided on Import, this will be generated by EPOD  
EPL_CONTAINER_IDEPL_CONTAINER_ID: The unique identifier for a container.  
EPL_PRODUCT_CODEThe unique identifier for the product delivered/collected  
EPL_SEQUENCEA unique sequence for the product.  
EPL_CUST_REFCustomer's Order Reference  
EPL_DESCRIPTIONA 40-character description of the product  
EPL_PRODUCT_QTY_PLANNEDThe quantity of the product to be delivered/collected  
EPL_PRODUCT_QTY_ORDEREDThe quantity of the product ordered.  
EPL_ITEM_TYPEA group defining the Product Type.  
EPL_UNIT_TYPEThe Product UOM.  
EPL_DESCRIPTION_LONGA 255 character long description. Can be used to extend the description above.  
EPL_PRODUCT_WEIGHTThe item weight of this product  

Notes:

  • The jobs should be sent through in the order in which they should be completed. The Sequence field should be sent with a numeric padded value as described in the description.
  • Loads and the contained jobs will be sent as one message. Multiple loads can be built into one XML message structure.
  • XSDs for validating the XML structure will be provided.

A sample of a single load with multiple jobs of many types are shown below - a brief description of the job type is shown in the office instructions:

<EPOD_IMPORT EPL_SITE_ID="TEST" EPL_USER_ID="ADM" EPL_USER_PASSWORD="TEST">
  <EPOD_LOADS>
    <EPOD_LOAD>
      <EPL_SITE_ID>TEST</EPL_SITE_ID>
      <EPL_LOAD_ID>TEST001</EPL_LOAD_ID>
      <EPL_LOAD_START_PLANNED_DATE>20120320</EPL_LOAD_START_PLANNED_DATE>
      <EPL_LOAD_START_PLANNED_TIME>16450000</EPL_LOAD_START_PLANNED_TIME>
      <EPL_LOAD_END_PLANNED_DATE>20120320</EPL_LOAD_END_PLANNED_DATE>
      <EPL_LOAD_END_PLANNED_TIME>16590000</EPL_LOAD_END_PLANNED_TIME>
      <EPL_LOAD_DISTANCE_PLANNED>212</EPL_LOAD_DISTANCE_PLANNED>
      <EPL_USER_ID></EPL_USER_ID>
      <EPOD_JOBS>
        <EPOD_JOB>
          <EPL_SITE_ID>TEST</EPL_SITE_ID>
          <EPL_LOAD_ID>TEST001</EPL_LOAD_ID>
          <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
          <EPL_JOB_CODE>TEST001001</EPL_JOB_CODE>
          <EPL_JOB_TYPE>C</EPL_JOB_TYPE>
          <EPL_JOB_GROUP>JG01</EPL_JOB_GROUP>
          <EPL_CUST_REF>CR-TEST001001</EPL_CUST_REF>
          <EPL_JOB_INSTRUCTION>Free Text Instructions</EPL_JOB_INSTRUCTION>
          <EPL_OFFICE_INSTRUCTION>Multiple container collection with multiple products.</EPL_OFFICE_INSTRUCTION>
          <EPL_START_PLANNED_DATE>20120320</EPL_START_PLANNED_DATE>
          <EPL_START_PLANNED_TIME>00000000</EPL_START_PLANNED_TIME>
          <EPL_END_PLANNED_DATE>20120320</EPL_END_PLANNED_DATE>
          <EPL_END_PLANNED_TIME>00000000</EPL_END_PLANNED_TIME>
          <EPL_DISTANCE_PLANNED>212</EPL_DISTANCE_PLANNED>
          <EPOD_CUSTOMER>
            <EPL_CUSTOMER_CODE>Cust001</EPL_CUSTOMER_CODE>
            <EPL_CUSTOMER_NAME>Customer Jones</EPL_CUSTOMER_NAME>
            <EPL_ADDRESS_1>15 TEST ROAD</EPL_ADDRESS_1>
            <EPL_ADDRESS_2>TESTINGTON</EPL_ADDRESS_2>
            <EPL_ADDRESS_3>TEST</EPL_ADDRESS_3>
            <EPL_ADDRESS_4>TESTside</EPL_ADDRESS_4>
            <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
            <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
            <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
            <EPL_EMAIL>[email protected]</EPL_EMAIL>
          </EPOD_CUSTOMER>
           <EPL_CUSTOMER_CODE>Cust001</EPL_CUSTOMER_CODE>
           <EPL_CUSTOMER_NAME>Customer Jones</EPL_CUSTOMER_NAME>
          <EPL_ADDRESS_1>16 Speke Boulevard</EPL_ADDRESS_1>
          <EPL_ADDRESS_2>Speke</EPL_ADDRESS_2>
          <EPL_ADDRESS_3>Liverpool</EPL_ADDRESS_3>
          <EPL_ADDRESS_4>United Kingdom</EPL_ADDRESS_4>
          <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
          <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
          <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
          <EPL_EMAIL>[email protected]</EPL_EMAIL>
          <EPL_SO_NUMBER>SO-LOAD 46</EPL_SO_NUMBER>
          <EPL_ORDER_DATE>20120319</EPL_ORDER_DATE>
          <EPL_SALES_CONTACT>Jenny</EPL_SALES_CONTACT>
          <EPOD_CONTAINERS>
            <EPOD_CONTAINER>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
              <EPL_CONTAINER_ID>TEST001001-01</EPL_CONTAINER_ID>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_CONTAINER_PACKAGE_CODE>XX00</EPL_CONTAINER_PACKAGE_CODE>
              <EPL_CONTAINER_PACKAGE_DESC>Test Container</EPL_CONTAINER_PACKAGE_DESC>
              <EPL_GROSS_WEIGHT>100.14</EPL_GROSS_WEIGHT>
              <EPL_DESCRIPTION_LONG>1 PLT 800</EPL_DESCRIPTION_LONG>
              <EPOD_PRODUCTS>
                <EPOD_PRODUCT>
                  <EPL_SITE_ID>TEST</EPL_SITE_ID>
                  <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
                  <EPL_CONTAINER_ID>TEST001001-01</EPL_CONTAINER_ID>
                  <EPL_PRODUCT_CODE>TESTPROD1</EPL_PRODUCT_CODE>
                  <EPL_SEQUENCE>0001</EPL_SEQUENCE>
                  <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
                  <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
                  <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
                  <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
                  <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
                  <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
                  <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
                </EPOD_PRODUCT>
                <EPOD_PRODUCT>
                  <EPL_SITE_ID>TEST</EPL_SITE_ID>
                  <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
                  <EPL_CONTAINER_ID>TEST001001-01</EPL_CONTAINER_ID>
                  <EPL_PRODUCT_CODE>TESTPROD2</EPL_PRODUCT_CODE>
                  <EPL_SEQUENCE>0001</EPL_SEQUENCE>
                  <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
                  <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
                  <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
                  <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
                  <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
                  <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
                  <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
                </EPOD_PRODUCT>
              </EPOD_PRODUCTS>
            </EPOD_CONTAINER>
            <EPOD_CONTAINER>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
              <EPL_CONTAINER_ID>TEST001001-02</EPL_CONTAINER_ID>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_CONTAINER_PACKAGE_CODE>XX00</EPL_CONTAINER_PACKAGE_CODE>
              <EPL_CONTAINER_PACKAGE_DESC>Test Container</EPL_CONTAINER_PACKAGE_DESC>
              <EPL_GROSS_WEIGHT>100.14</EPL_GROSS_WEIGHT>
              <EPL_DESCRIPTION_LONG>1 PLT 800</EPL_DESCRIPTION_LONG>
              <EPOD_PRODUCTS>
                <EPOD_PRODUCT>
                  <EPL_SITE_ID>TEST</EPL_SITE_ID>
                  <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
                  <EPL_CONTAINER_ID>TEST001001-02</EPL_CONTAINER_ID>
                  <EPL_PRODUCT_CODE>TESTPROD1</EPL_PRODUCT_CODE>
                  <EPL_SEQUENCE>0001</EPL_SEQUENCE>
                  <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
                  <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
                  <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
                  <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
                  <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
                  <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
                  <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
                </EPOD_PRODUCT>
                <EPOD_PRODUCT>
                  <EPL_SITE_ID>TEST</EPL_SITE_ID>
                  <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
                  <EPL_CONTAINER_ID>TEST001001-02</EPL_CONTAINER_ID>
                  <EPL_PRODUCT_CODE>TESTPROD2</EPL_PRODUCT_CODE>
                  <EPL_SEQUENCE>0001</EPL_SEQUENCE>
                  <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
                  <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
                  <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
                  <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
                  <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
                  <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
                  <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
                </EPOD_PRODUCT>
              </EPOD_PRODUCTS>
            </EPOD_CONTAINER>
            <EPOD_CONTAINER>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
              <EPL_CONTAINER_ID>TEST001001-03</EPL_CONTAINER_ID>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_CONTAINER_PACKAGE_CODE>XX00</EPL_CONTAINER_PACKAGE_CODE>
              <EPL_CONTAINER_PACKAGE_DESC>Test Container</EPL_CONTAINER_PACKAGE_DESC>
              <EPL_GROSS_WEIGHT>100.14</EPL_GROSS_WEIGHT>
              <EPL_DESCRIPTION_LONG>1 PLT 800</EPL_DESCRIPTION_LONG>
              <EPOD_PRODUCTS>
                <EPOD_PRODUCT>
                  <EPL_SITE_ID>TEST</EPL_SITE_ID>
                  <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
                  <EPL_CONTAINER_ID>TEST001001-03</EPL_CONTAINER_ID>
                  <EPL_PRODUCT_CODE>TESTPROD1</EPL_PRODUCT_CODE>
                  <EPL_SEQUENCE>0001</EPL_SEQUENCE>
                  <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
                  <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
                  <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
                  <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
                  <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
                  <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
                  <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
                </EPOD_PRODUCT>
                <EPOD_PRODUCT>
                  <EPL_SITE_ID>TEST</EPL_SITE_ID>
                  <EPL_JOB_ID>TEST001001</EPL_JOB_ID>
                  <EPL_CONTAINER_ID>TEST001001-03</EPL_CONTAINER_ID>
                  <EPL_PRODUCT_CODE>TESTPROD2</EPL_PRODUCT_CODE>
                  <EPL_SEQUENCE>0001</EPL_SEQUENCE>
                  <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
                  <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
                  <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
                  <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
                  <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
                  <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
                  <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
                </EPOD_PRODUCT>
              </EPOD_PRODUCTS>
            </EPOD_CONTAINER>
          </EPOD_CONTAINERS>
        </EPOD_JOB>
        <EPOD_JOB>
          <EPL_SITE_ID>TEST</EPL_SITE_ID>
          <EPL_LOAD_ID>TEST001</EPL_LOAD_ID>
          <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
          <EPL_JOB_CODE>LINK-47</EPL_JOB_CODE>
          <EPL_JOB_TYPE>D</EPL_JOB_TYPE>
          <EPL_JOB_GROUP>JG01</EPL_JOB_GROUP>
          <EPL_CUST_REF>CR-LOAD 46</EPL_CUST_REF>
          <EPL_JOB_INSTRUCTION>Free Text Instructions</EPL_JOB_INSTRUCTION>
          <EPL_OFFICE_INSTRUCTION>Containers and loose products. Linked to collection through Job Code</EPL_OFFICE_INSTRUCTION>
          <EPL_START_PLANNED_DATE>20120320</EPL_START_PLANNED_DATE>
          <EPL_START_PLANNED_TIME>00000000</EPL_START_PLANNED_TIME>
          <EPL_END_PLANNED_DATE>20120320</EPL_END_PLANNED_DATE>
          <EPL_END_PLANNED_TIME>00000000</EPL_END_PLANNED_TIME>
          <EPL_DISTANCE_PLANNED>0</EPL_DISTANCE_PLANNED>
          <EPOD_CUSTOMER>
            <EPL_CUSTOMER_CODE>Cust001</EPL_CUSTOMER_CODE>
            <EPL_CUSTOMER_NAME>Customer Jones</EPL_CUSTOMER_NAME>
            <EPL_ADDRESS_1>15 TEST ROAD</EPL_ADDRESS_1>
            <EPL_ADDRESS_2>TESTINGTON</EPL_ADDRESS_2>
            <EPL_ADDRESS_3>TEST</EPL_ADDRESS_3>
            <EPL_ADDRESS_4>TESTside</EPL_ADDRESS_4>
            <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
            <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
            <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
            <EPL_EMAIL>[email protected]</EPL_EMAIL>
          </EPOD_CUSTOMER>
           <EPL_CUSTOMER_CODE>Cust001</EPL_CUSTOMER_CODE>
           <EPL_CUSTOMER_NAME>Customer Jones</EPL_CUSTOMER_NAME>
          <EPL_ADDRESS_1>16 Speke Boulevard</EPL_ADDRESS_1>
          <EPL_ADDRESS_2>Speke</EPL_ADDRESS_2>
          <EPL_ADDRESS_3>Liverpool</EPL_ADDRESS_3>
          <EPL_ADDRESS_4>United Kingdom</EPL_ADDRESS_4>
          <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
          <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
          <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
          <EPL_EMAIL>[email protected]</EPL_EMAIL>
          <EPL_SO_NUMBER>SO-LOAD 46</EPL_SO_NUMBER>
          <EPL_ORDER_DATE>20120319</EPL_ORDER_DATE>
          <EPL_SALES_CONTACT>Jenny</EPL_SALES_CONTACT>
          <EPOD_CONTAINERS>
            <EPOD_CONTAINER>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_CONTAINER_ID>TEST001002-01</EPL_CONTAINER_ID>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_CONTAINER_PACKAGE_CODE>XX00</EPL_CONTAINER_PACKAGE_CODE>
              <EPL_CONTAINER_PACKAGE_DESC>Test Container</EPL_CONTAINER_PACKAGE_DESC>
              <EPL_GROSS_WEIGHT>100.14</EPL_GROSS_WEIGHT>
              <EPL_DESCRIPTION_LONG>1 PLT 800</EPL_DESCRIPTION_LONG>
            </EPOD_CONTAINER>
            <EPOD_CONTAINER>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_CONTAINER_ID>TEST001002-02</EPL_CONTAINER_ID>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_CONTAINER_PACKAGE_CODE>XX00</EPL_CONTAINER_PACKAGE_CODE>
              <EPL_CONTAINER_PACKAGE_DESC>Test Container</EPL_CONTAINER_PACKAGE_DESC>
              <EPL_GROSS_WEIGHT>100.14</EPL_GROSS_WEIGHT>
              <EPL_DESCRIPTION_LONG>1 PLT 800</EPL_DESCRIPTION_LONG>
            </EPOD_CONTAINER>
            <EPOD_CONTAINER>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_CONTAINER_ID>TEST001002-03</EPL_CONTAINER_ID>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_CONTAINER_PACKAGE_CODE>XX00</EPL_CONTAINER_PACKAGE_CODE>
              <EPL_CONTAINER_PACKAGE_DESC>Test Container</EPL_CONTAINER_PACKAGE_DESC>
              <EPL_GROSS_WEIGHT>100.14</EPL_GROSS_WEIGHT>
              <EPL_DESCRIPTION_LONG>1 PLT 800</EPL_DESCRIPTION_LONG>
            </EPOD_CONTAINER>
          </EPOD_CONTAINERS>
          <EPOD_PRODUCTS>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD1</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD2</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD3</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD4</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD5</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001002</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD6</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
          </EPOD_PRODUCTS>
        </EPOD_JOB>
        <EPOD_JOB>
          <EPL_SITE_ID>TEST</EPL_SITE_ID>
          <EPL_LOAD_ID>TEST001</EPL_LOAD_ID>
          <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
          <EPL_JOB_CODE>LINK-47</EPL_JOB_CODE>
          <EPL_JOB_TYPE>C</EPL_JOB_TYPE>
          <EPL_JOB_GROUP>JG01</EPL_JOB_GROUP>
          <EPL_CUST_REF>CR-LOAD 46</EPL_CUST_REF>
          <EPL_JOB_INSTRUCTION>Free Text Instructions</EPL_JOB_INSTRUCTION>
          <EPL_OFFICE_INSTRUCTION>Containers and loose products. Linked to collection through Job Code</EPL_OFFICE_INSTRUCTION>
          <EPL_START_PLANNED_DATE>20120320</EPL_START_PLANNED_DATE>
          <EPL_START_PLANNED_TIME>00000000</EPL_START_PLANNED_TIME>
          <EPL_END_PLANNED_DATE>20120320</EPL_END_PLANNED_DATE>
          <EPL_END_PLANNED_TIME>00000000</EPL_END_PLANNED_TIME>
          <EPL_DISTANCE_PLANNED>212</EPL_DISTANCE_PLANNED>
          <EPOD_CUSTOMER>
            <EPL_CUSTOMER_CODE>WAREHOUSE1</EPL_CUSTOMER_CODE>
            <EPL_CUSTOMER_NAME>TEST Jones</EPL_CUSTOMER_NAME>
            <EPL_ADDRESS_1>15 TEST ROAD</EPL_ADDRESS_1>
            <EPL_ADDRESS_2>TESTINGTON</EPL_ADDRESS_2>
            <EPL_ADDRESS_3>TEST</EPL_ADDRESS_3>
            <EPL_ADDRESS_4>TESTside</EPL_ADDRESS_4>
            <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
            <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
            <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
            <EPL_EMAIL>[email protected]</EPL_EMAIL>
          </EPOD_CUSTOMER>
          <EPL_CUSTOMER_CODE>WAREHOUSE1</EPL_CUSTOMER_CODE>
          <EPL_CUSTOMER_NAME>TEST Jones</EPL_CUSTOMER_NAME>
          <EPL_ADDRESS_1>15 TEST ROAD</EPL_ADDRESS_1>
          <EPL_ADDRESS_2>TESTINGTON</EPL_ADDRESS_2>
          <EPL_ADDRESS_3>TEST</EPL_ADDRESS_3>
          <EPL_ADDRESS_4>TESTside</EPL_ADDRESS_4>
          <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
          <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
          <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
          <EPL_EMAIL>[email protected]</EPL_EMAIL>
          <EPL_SO_NUMBER>SO-LOAD 46</EPL_SO_NUMBER>
          <EPL_ORDER_DATE>20120319</EPL_ORDER_DATE>
          <EPL_SALES_CONTACT>Jenny</EPL_SALES_CONTACT>
          <EPOD_PRODUCTS>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD1</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD2</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD3</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD4</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD5</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>1</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>X</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>12.3</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
            <EPOD_PRODUCT>
              <EPL_SITE_ID>TEST</EPL_SITE_ID>
              <EPL_JOB_ID>TEST001003</EPL_JOB_ID>
              <EPL_PRODUCT_CODE>TESTPROD6</EPL_PRODUCT_CODE>
              <EPL_SEQUENCE>0001</EPL_SEQUENCE>
              <EPL_DESCRIPTION>TEST ITEM</EPL_DESCRIPTION>
              <EPL_PRODUCT_QTY_PLANNED>12</EPL_PRODUCT_QTY_PLANNED>
              <EPL_PRODUCT_QTY_ORDERED>1</EPL_PRODUCT_QTY_ORDERED>
              <EPL_ITEM_TYPE>X</EPL_ITEM_TYPE>
              <EPL_UNIT_TYPE>Y</EPL_UNIT_TYPE>
              <EPL_DESCRIPTION_LONG>Long Description 2</EPL_DESCRIPTION_LONG>
              <EPL_PRODUCT_WEIGHT>4.56</EPL_PRODUCT_WEIGHT>
            </EPOD_PRODUCT>
          </EPOD_PRODUCTS>
        </EPOD_JOB>
        <EPOD_JOB>
          <EPL_SITE_ID>TEST</EPL_SITE_ID>
          <EPL_LOAD_ID>TEST001</EPL_LOAD_ID>
          <EPL_JOB_ID>TEST001004</EPL_JOB_ID>
          <EPL_JOB_CODE>SERVICE</EPL_JOB_CODE>
          <EPL_JOB_TYPE>S</EPL_JOB_TYPE>
          <EPL_JOB_GROUP>JG01</EPL_JOB_GROUP>
          <EPL_CUST_REF>CR-LOAD 46</EPL_CUST_REF>
          <EPL_JOB_INSTRUCTION>Free Text Instructions</EPL_JOB_INSTRUCTION>
          <EPL_OFFICE_INSTRUCTION>Service job</EPL_OFFICE_INSTRUCTION>
          <EPL_START_PLANNED_DATE>20120320</EPL_START_PLANNED_DATE>
          <EPL_START_PLANNED_TIME>00000000</EPL_START_PLANNED_TIME>
          <EPL_END_PLANNED_DATE>20120320</EPL_END_PLANNED_DATE>
          <EPL_END_PLANNED_TIME>00000000</EPL_END_PLANNED_TIME>
          <EPL_DISTANCE_PLANNED>0</EPL_DISTANCE_PLANNED>
          <EPOD_CUSTOMER>
            <EPL_CUSTOMER_CODE>Cust001</EPL_CUSTOMER_CODE>
            <EPL_CUSTOMER_NAME>Customer Jones</EPL_CUSTOMER_NAME>
            <EPL_ADDRESS_1>15 TEST ROAD</EPL_ADDRESS_1>
            <EPL_ADDRESS_2>TESTINGTON</EPL_ADDRESS_2>
            <EPL_ADDRESS_3>TEST</EPL_ADDRESS_3>
            <EPL_ADDRESS_4>TESTside</EPL_ADDRESS_4>
            <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
            <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
            <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
            <EPL_EMAIL>[email protected]</EPL_EMAIL>
          </EPOD_CUSTOMER>
           <EPL_CUSTOMER_CODE>Cust001</EPL_CUSTOMER_CODE>
           <EPL_CUSTOMER_NAME>Customer Jones</EPL_CUSTOMER_NAME>
          <EPL_ADDRESS_1>16 Speke Boulevard</EPL_ADDRESS_1>
          <EPL_ADDRESS_2>Speke</EPL_ADDRESS_2>
          <EPL_ADDRESS_3>Liverpool</EPL_ADDRESS_3>
          <EPL_ADDRESS_4>United Kingdom</EPL_ADDRESS_4>
          <EPL_POSTCODE>CH62 9GR</EPL_POSTCODE>
          <EPL_CONTACT>TESTER Jones</EPL_CONTACT>
          <EPL_TELEPHONE>08458795846</EPL_TELEPHONE>
          <EPL_EMAIL>[email protected]</EPL_EMAIL>
          <EPL_SO_NUMBER>SO-LOAD 46</EPL_SO_NUMBER>
          <EPL_ORDER_DATE>20120319</EPL_ORDER_DATE>
          <EPL_SALES_CONTACT>Jenny</EPL_SALES_CONTACT>
          <EPOD_SERVICE>
            <EPL_SITE_ID>TEST</EPL_SITE_ID>
            <EPL_JOB_ID>TEST001004</EPL_JOB_ID>
            <EPL_SERVICE_ID>SID-TEST001004</EPL_SERVICE_ID>
            <EPL_SERVICE_TYPE>I</EPL_SERVICE_TYPE>
            <EPL_REG_NUMBER>X502ACB</EPL_REG_NUMBER>
            <EPL_VIN_NUMBER>X502ACB</EPL_VIN_NUMBER>
            <EPL_SIM_NUMBER>X502ACB</EPL_SIM_NUMBER>
          </EPOD_SERVICE>
        </EPOD_JOB>
      </EPOD_JOBS>
    </EPOD_LOAD>
  </EPOD_LOADS>
</EPOD_IMPORT>

Note Note: The content of the imported data varies and expands as the the CALIDUS ePOD/eSERV product expands. As new items are added to the application, the Import XSD will be modified and issued to you, for informational purposes. The Import XML Schema is referenced in Appendix A.


Mechanism for Sending Import Files to Web Services

The system provides web services for importing data. There are two mechanisms:

  • Passing the data as a string, through Web Service EPOD_dataservice.asmx
  • Passing the data as an XML object, through EPOD_dataservice2.asmx


For each data service, data can be sent via multiple methods, as shown below:

  • EPOD_dataservice.asmx

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The place-holders shown need to be replaced with actual values.

POST /webservices/dataservice/EPOD_dataservice.asmx HTTP/1.1
Host: www.calidus-web.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "ePOD_DataService/EPOD_XML_IMPORT"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <EPOD_XML_IMPORT xmlns="ePOD_DataService">
      <IMPORT>string</IMPORT>
    </EPOD_XML_IMPORT>
  </soap:Body>
</soap:Envelope>

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <EPOD_XML_IMPORTResponse xmlns="ePOD_DataService">
      <EPOD_XML_IMPORTResult>string</EPOD_XML_IMPORTResult>
    </EPOD_XML_IMPORTResponse>
  </soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /webservices/dataservice/EPOD_dataservice.asmx HTTP/1.1
Host: www.calidus-web.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <EPOD_XML_IMPORT xmlns="ePOD_DataService">
      <IMPORT>string</IMPORT>
    </EPOD_XML_IMPORT>
  </soap12:Body>
</soap12:Envelope>

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <EPOD_XML_IMPORTResponse xmlns="ePOD_DataService">
      <EPOD_XML_IMPORTResult>string</EPOD_XML_IMPORTResult>
    </EPOD_XML_IMPORTResponse>
  </soap12:Body>
</soap12:Envelope>

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /webservices/dataservice/EPOD_dataservice.asmx/EPOD_XML_IMPORT?IMPORT=string HTTP/1.1
Host: www.calidus-web.com

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="ePOD_DataService">string</string>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /webservices/dataservice/EPOD_dataservice.asmx/EPOD_XML_IMPORT HTTP/1.1
Host: www.calidus-web.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

IMPORT=string

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="ePOD_DataService">string</string>
  • EPOD_dataservice2.asmx

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /webservices/dataservice/EPOD_dataservice2.asmx HTTP/1.1
Host: www.calidus-web.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "ePOD_DataService/EPOD_XML_IMPORT"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <EPOD_XML_IMPORT xmlns="ePOD_DataService">
      <IMPORT>xml</IMPORT>
    </EPOD_XML_IMPORT>
  </soap:Body>
</soap:Envelope>

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <EPOD_XML_IMPORTResponse xmlns="ePOD_DataService">
      <EPOD_XML_IMPORTResult>xml</EPOD_XML_IMPORTResult>
    </EPOD_XML_IMPORTResponse>
  </soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /webservices/dataservice/EPOD_dataservice2.asmx HTTP/1.1
Host: www.calidus-web.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <EPOD_XML_IMPORT xmlns="ePOD_DataService">
      <IMPORT>xml</IMPORT>
    </EPOD_XML_IMPORT>
  </soap12:Body>
</soap12:Envelope>

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <EPOD_XML_IMPORTResponse xmlns="ePOD_DataService">
      <EPOD_XML_IMPORTResult>xml</EPOD_XML_IMPORTResult>
    </EPOD_XML_IMPORTResponse>
  </soap12:Body>
</soap12:Envelope>

Processing Responses through Web Services

The response data is an XML file (either string data or an XML object), as shown in the calling methods above. The result is governed by a schema, in the same way that the import files are. All XSD schemas will be provided to you.

The import processor will validate the entire file to the import schema. If this fails, the file will be rejected - all errors found will be exported in the response file.

If the pre-process is successful, each record will then be attempted to be loaded. If any of these fail for any reason, the discovered error will be reported in the response file.

If the loading of all records proceeds without an issue, the acknowledged response will be sent.

Note Note: It is not recommended to attempt to resend files unless the errors have been investigated and resolved. This is the responsibility of the sending system or the users of that system to do this.

Note Note: It is recommended that this XML Response fragment is stored for later auditing of potential issues.

Note Note: The Result and Error tags will not be checked for content, only structure. Therefore these tags can contain any informative data that the producing system deems adequate for identifying issues.

An example of an Success and Failure response to an import into CALIDUS ePOD/eSERV are shown below:

<EPOD_IMPORT_RESPONSE RESULT="NAK">
    <ERRORS>
        <ERROR error="The element 'EPOD_LOAD' has invalid child element 'EPL_SITE_IDX'. 
                      List of possible elements expected: 'EPL_SITE_ID'." 
            exception="System.Xml.Schema.XmlSchemaValidationException: 
                       The element 'EPOD_LOAD' has invalid child element 'EPL_SITE_IDX'. 
                       List of possible elements expected: 'EPL_SITE_ID'."/>
    </ERRORS>
</EPOD_IMPORT_RESPONSE>
<EPOD_IMPORT_RESPONSE RESULT="ACK">
    <RESULTS>
        <RESULT>
            <ID>Load: LOAD001</ID>
            <STATUS>Status: Load updated and at status C</STATUS>
        </RESULT>
        <RESULT>
            <ID>Job: JOB001</ID>
            <STATUS>Status: Job updated and at status P</STATUS>
        </RESULT>
        <RESULT>
            <ID>EPOD_CUSTOMER: Cust001</ID>
            <STATUS>Status: EPOD_CUSTOMER Updated</STATUS>
        </RESULT>
        <RESULT>
            <ID>Container: JOB001-01</ID>
            <STATUS>Status: Container created on Job: JOB001</STATUS>
        </RESULT>
        <RESULT>
            <ID>Container: JOB001-02</ID>
            <STATUS>Status: Container created on Job: JOB001</STATUS>
        </RESULT>
        <RESULT>
            <ID>Container: JOB001-03</ID>
            <STATUS>Status: Container created on Job: JOB001</STATUS>
        </RESULT>
        <RESULT>
            <ID>Job: JOB002</ID>
            <STATUS>Status: Job updated and at status X</STATUS>
        </RESULT>
        <RESULT>
            <ID>EPOD_CUSTOMER: Cust001</ID>
            <STATUS>Status: EPOD_CUSTOMER Updated</STATUS>
        </RESULT>
        <RESULT>
            <ID>Container: JOB002-01</ID>
            <STATUS>Status: Container created on Job: JOB002</STATUS>
        </RESULT>
        <RESULT>
            <ID>Container: JOB002-02</ID>
            <STATUS>Status: Container created on Job: JOB002</STATUS>
        </RESULT>
        <RESULT>
            <ID>Container: JOB002-03</ID>
            <STATUS>Status: Container created on Job: JOB002</STATUS>
        </RESULT>
    </RESULTS>
</EPOD_IMPORT_RESPONSE>

Export Process

A process runs on a timed schedule within the CALIDUS ePOD/eSERV application, to pick up any jobs that have been completed and export them to external systems.

Export Message Content

A basic list if all the fields in the interface for Job follows. A full spreadsheet of all the export flows and fields containing all the limitations on length and defaulted values is provided separately.

Note Note: The content of the exported data varies and expands as the CALIDUS ePOD/eSERV product expands. As new items are added to the application, the spreadsheet will be modified and issued to you, to aid in any mapping of data into your application. The Export Spreadsheet is referenced in Appendix A.


EPOD_JOB

NameDescriptionExternal FieldNotes
EPL_SITE_IDUnique Reference for the Site that the Job belongs to  
EPL_JOB_IDUnique reference for the job. If not provided on Import, this will be generated by EPOD  
EPL_LOAD_IDUnique Reference for the Load that the Job belongs to. If not provided, defaulted from the enclosing EPOD_LOAD As Sent
EPL_JOB_TYPED=Delivery, C=Collection, S=Service As Sent
EPL_JOB_GROUP  As Sent
EPL_JOB_INSTRUCTIONInstructions for the Driver As Sent
EPL_JOB_SIGNATUREThe signature taken from the customer when the job was completed. This is in the form of a Base64-encrypted Jpeg file  
EPL_REASON_CODEIf a job has been cancelled, the reason code entered by the user is held here.  
EPL_LINKED_REASONIf the job is a delivery, and a collection of the same load with the same EPL_JOB_CODE is cancelled, this delivery will be cancelled, and this field will be set to "Y"  
EPL_STATUSC- complete, X cancelled  
EPL_CUSTOMER_CODECustomer Code from external system. If not provided, one will be generated from EPL_CUSTOMER_NAME  
EPL_PHOTO_IDIf cancelled, a photo may have been taken by the user. If so, this field is populated with a unique ID.  
EPL_PHOTOThe photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file  
EPL_ENG_SIGNATUREThe signature taken from the driver/engineer when the job was completed, if required. This is in the form of a Base64-encrypted Jpeg file  
EPL_SEQUENCEThe sequence of the job. This could be the sequence sent on Import, a pre-defined sequence (if one was not provided) or a user-changed value (if enabled)  
EPL_START_PLANNED_DATE  As Sent
EPL_START_PLANNED_TIME  As Sent
EPL_END_PLANNED_DATE  As Sent
EPL_END_PLANNED_TIME  As Sent
EPL_START_ACTUAL_DATEThe date the user actually chose to start the job. Format: YYYYMMDD  
EPL_START_ACTUAL_TIMEThe time the user actually chose to start the job. Format HHMMSSNN  
EPL_ARRIVED_DATEThe date the user indicated they arrived at the destination. Format: YYYYMMDD  
EPL_ARRIVED_TIMEThe time the user indicated they arrived at the destination. Format HHMMSSNN  
EPL_END_ACTUAL_DATEThe date the user completed or cancelled the job. Format: YYYYMMDD  
EPL_END_ACTUAL_TIMEThe time the user completed or cancelled the job. Format HHMMSSNN  
EPL_DISTANCE_PLANNED  As Sent
EPL_DISTANCE_ACTUAL  N/A
EPL_DRIVING_TIME  N/A
EPL_CUSTOMER_NAMEThe Name of the customer As Sent
EPL_JOB_ADDRESSA flag indicating whether this is a default Customer Address or a specific address for this job alone. N/A
EPL_ADDRESS_1  As Sent
EPL_ADDRESS_2  As Sent
EPL_ADDRESS_3  As Sent
EPL_ADDRESS_4  As Sent
EPL_ADDRESS_5  N/A
EPL_POSTCODE  As Sent
EPL_CONTACT  As Sent
EPL_TELEPHONE  As Sent
EPL_EMAIL  As Sent
EPL_INVOICED  N/A
EPL_CUST_SIGNATORYThe name of the customer signatory on the job.  
EPL_JOB_CODEExternal reference for the Job. This element can be used to link a collection and delivery together under the same reference. So, if an order is being collected at A and delivered at B, there are 2 jobs, each with a unique Job ID, but with the same Job Code. Optionally, EPOD will keep the Delivery leg of a linked job updated with the information captured from the collection. As Sent
EPL_CUST_REFCustomer's Order Reference As Sent
EPL_OFFICE_INSTRUCTIONInstructions for Admin staff As Sent
EPL_SIGNED_UNCHECKEDAn indication whether the customer signed for the goods without checking them first. Note that this field can be used for any check-box entry, as this is configurable.  
EPL_SO_NUMBERSales Order Reference. As Sent
EPL_TNCSAn XML fragment, displaying the Terms and Conditions agreed to by the customer when signing for the goods. This can also include up to 3 configurable check-boxes that the user may check.  
EPL_ORDER_DATEDate Order created - defaulted to the date the order was received if not provided As Sent
EPL_SALES_CONTACTThe operative who took the order. Can be used as a display field for documentation As Sent
EPL_USER_NOTESOptional Notes entered by the driver while completing the job.  
EPL_OWNER_NAME  As Sent
EPL_SERVICE_LEVEL  As Sent
EPL_LAST_CHANGED_DATEThe date the record was last updated. Auditing use only. N/A
EPL_LAST_CHANGED_TIMEThe time the record was last updated. Auditing use only. N/A
EPOD_CONTAINERSContains a series of EPOD_CONTAINER objects, detailing all the deliverable items on this load. If there are loose products, there will also be a container with ID '000000000' holding these products. A collection of pallets that were part of the job, plus the status.
EPOD_SERVICEIf the job is a Service, this object holds all the service-related information. In that case, no containers or products will be specified against the job. Applicable only to CALIDUS eSERV

EPOD_CONTAINER

NameDescriptionExternal FieldNotes
EPL_SITE_IDUnique Reference for the Site that the Job belongs to  
EPL_JOB_IDUnique reference for the job. If not provided on Import, this will be generated by EPOD  
EPL_CONTAINER_IDEPL_CONTAINER_ID: The unique identifier for a container.  
EPL_SEQUENCEA sequence for the containers to be shown on the user's device. As Sent
EPL_CONTAINER_PACKAGE_CODE  As Sent
EPL_CONTAINER_PACKAGE_DESC  As Sent
EPL_REASON_CODEIf a container has been cancelled, the reason code entered by the user is held here.  
EPL_LINKED_REASONIf the job is a delivery, and a collection of this container on the same load with the same EPL_JOB_CODE is cancelled, this container will be cancelled, and this field will be set to "Y"  
EPL_STATUSEPL_STATUS: Status of the current Container. C-Completed, X-Cancelled.  
EPL_PHOTO_IDIf cancelled, or received with a clause, a photo may have been taken by the user. If so, this field is populated with a unique ID.  
EPL_PHOTOThe photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file  
EPL_CUST_COMMENTSOptional entry by the user, indicating whether the customer has identified an issue with the received item (a claused receipt). If present, the customer may have requested an image, which would be contained in EPL_PHOTO.  
EPL_DESCRIPTION_LONG  As Sent
EPL_CODE_1Multi-purpose field As Sent
EPL_CODE_2Multi-purpose field As Sent
EPL_CODE_3Multi-purpose field As Sent
EPL_LAST_CHANGED_DATEThe date the record was last updated. Auditing use only. N/A
EPL_LAST_CHANGED_TIMEThe time the record was last updated. Auditing use only. N/A
EPOD_PRODUCTSContains a series of EPOD_PRODUCTS objects, detailing the products within the container, or loose products  

EPOD_PRODUCT

NameDescriptionExternal FieldNotes
EPL_SITE_IDUnique Reference for the Site that the Job belongs to As Sent
EPL_JOB_IDUnique reference for the job. If not provided on Import, this will be generated by EPOD As Sent
EPL_CONTAINER_IDEPL_CONTAINER_ID: The unique identifier for a container. As Sent
EPL_PRODUCT_CODEThe unique identifier for the product delivered/collected As Sent
EPL_SEQUENCEA unique sequence for the product. As Sent
EPL_DESCRIPTIONA 40-character description of the product As Sent
EPL_DESCRIPTION_LONGA 255 character long description. Can be used to extend the description above. As Sent
EPL_PRODUCT_QTY_PLANNEDThe quantity of the product to be delivered/collected As Sent
EPL_PRODUCT_QTY_ACTUALThe actual quantity delivered/collected.  
EPL_PRODUCT_QTY_CASENot in use N/A
EPL_PRODUCT_QTY_ORDEREDThe quantity of the product ordered. As Sent
EPL_REASON_CODEIf a product has been cancelled or the quantity has been changed, the reason code entered by the user is held here.  
EPL_LINKED_REASONIf the job is a delivery, and a collection of this product on the same load with the same EPL_JOB_CODE and EPL_CONTAINER_ID is cancelled, this product will be cancelled, and this field will be set to "Y"  
EPL_STATUSEPL_STATUS: Status of the current Product. C-Completed, X-Cancelled.  
EPL_PHOTO_IDIf cancelled, or received with a clause, a photo may have been taken by the user. If so, this field is populated with a unique ID.  
EPL_PHOTOThe photo taken for the exception. This is in the form of a Base64-encrypted Jpeg file  
EPL_PRODUCT_WEIGHTThe item weight of this product As Sent
EPL_CUST_REFCustomer's Order Reference As Sent
EPL_ITEM_TYPEA group defining the Product Type. As Sent
EPL_UNIT_TYPEThe Product UOM. As Sent
EPL_LAST_CHANGED_DATEThe date the record was last updated. Auditing use only. N/A
EPL_LAST_CHANGED_TIMEThe time the record was last updated. Auditing use only. N/A


Note Note: Regarding Signature and Photo data formats in this message: This data is stored and transmitted as a text string, Base64-encrypted. This data can be decoded and saved as binary data once received if required.

A sample of a single job with a single pallet is shown below:

<EPOD_EXPORT_JOB>
  <EPOD_JOBS>
    <EPOD_JOB>
      <EPL_SITE_ID>L03</EPL_SITE_ID>
      <EPL_JOB_ID>0000000001</EPL_JOB_ID>
      <EPL_LOAD_ID>000000000002</EPL_LOAD_ID>
      <EPL_JOB_TYPE>D</EPL_JOB_TYPE>
      <EPL_JOB_GROUP>L03</EPL_JOB_GROUP>
      <EPL_JOB_INSTRUCTION>Very Fragile Parcel..Please handle with Care</EPL_JOB_INSTRUCTION>
      <EPL_JOB_SIGNATURE>R0lGODlh4AB4APcA...NKdJTY4EBAA7</EPL_JOB_SIGNATURE>
      <EPL_REASON_CODE></EPL_REASON_CODE>
      <EPL_LINKED_REASON>N</EPL_LINKED_REASON>
      <EPL_STATUS>C</EPL_STATUS>
      <EPL_CUSTOMER_CODE>OBS</EPL_CUSTOMER_CODE>
      <EPL_PHOTO_ID></EPL_PHOTO_ID>
      <EPL_ENG_SIGNATURE></EPL_ENG_SIGNATURE>
      <EPL_SEQUENCE>1</EPL_SEQUENCE>
      <EPL_START_PLANNED_DATE>20111108</EPL_START_PLANNED_DATE>
      <EPL_START_PLANNED_TIME>12000000</EPL_START_PLANNED_TIME>
      <EPL_END_PLANNED_DATE>0</EPL_END_PLANNED_DATE>
      <EPL_END_PLANNED_TIME>0</EPL_END_PLANNED_TIME>
      <EPL_START_ACTUAL_DATE>20111108</EPL_START_ACTUAL_DATE>
      <EPL_START_ACTUAL_TIME>10490000</EPL_START_ACTUAL_TIME>
      <EPL_END_ACTUAL_DATE>20111108</EPL_END_ACTUAL_DATE>
      <EPL_END_ACTUAL_TIME>10520000</EPL_END_ACTUAL_TIME>
      <EPL_DISTANCE_PLANNED>0</EPL_DISTANCE_PLANNED>
      <EPL_DISTANCE_ACTUAL>0</EPL_DISTANCE_ACTUAL>
      <EPL_DRIVING_TIME>0</EPL_DRIVING_TIME>
      <EPL_CUSTOMER_NAME>OBS Logistics</EPL_CUSTOMER_NAME>
      <EPL_JOB_ADDRESS>N</EPL_JOB_ADDRESS>
      <EPL_ADDRESS_1>Southern Gateway</EPL_ADDRESS_1>
      <EPL_ADDRESS_2>Speke Boulevard</EPL_ADDRESS_2>
      <EPL_ADDRESS_3>Liverpool</EPL_ADDRESS_3>
      <EPL_ADDRESS_4>Merseyside</EPL_ADDRESS_4>
      <EPL_ADDRESS_5></EPL_ADDRESS_5>
      <EPL_POSTCODE>L24 9HZ</EPL_POSTCODE>
      <EPL_CONTACT>Xavier Wai</EPL_CONTACT>
      <EPL_TELEPHONE>01514480331</EPL_TELEPHONE>
      <EPL_EMAIL>[email protected]</EPL_EMAIL>
      <EPL_INVOICED></EPL_INVOICED>
      <EPL_CUST_SIGNATORY></EPL_CUST_SIGNATORY>
      <EPL_JOB_CODE>L03</EPL_JOB_CODE>
      <EPL_CUST_REF></EPL_CUST_REF>
      <EPL_OFFICE_INSTRUCTION></EPL_OFFICE_INSTRUCTION>
      <EPL_SIGNED_UNCHECKED></EPL_SIGNED_UNCHECKED>
      <EPL_SO_NUMBER></EPL_SO_NUMBER>
      <EPL_TNCS></EPL_TNCS>
      <EPL_ORDER_DATE>0</EPL_ORDER_DATE>
      <EPL_SALES_CONTACT></EPL_SALES_CONTACT>
      <EPL_USER_NOTES></EPL_USER_NOTES>
      <EPL_OWNER_NAME></EPL_OWNER_NAME>
      <EPL_SERVICE_LEVEL></EPL_SERVICE_LEVEL>
      <EPL_LAST_CHANGED_DATE>20120314</EPL_LAST_CHANGED_DATE>
      <EPL_LAST_CHANGED_TIME>9420098</EPL_LAST_CHANGED_TIME>
      <EPOD_CONTAINERS>
        <EPOD_CONTAINER>
          <EPL_SITE_ID>L03</EPL_SITE_ID>
          <EPL_JOB_ID>0000000001</EPL_JOB_ID>
          <EPL_CONTAINER_ID>000000000000001</EPL_CONTAINER_ID>
          <EPL_SEQUENCE>0</EPL_SEQUENCE>
          <EPL_CONTAINER_PACKAGE_CODE>XX</EPL_CONTAINER_PACKAGE_CODE>
          <EPL_CONTAINER_PACKAGE_DESC>Pallet</EPL_CONTAINER_PACKAGE_DESC>
          <EPL_REASON_CODE></EPL_REASON_CODE>
          <EPL_LINKED_REASON></EPL_LINKED_REASON>
          <EPL_STATUS>C</EPL_STATUS>
          <EPL_PHOTO_ID></EPL_PHOTO_ID>
          <EPL_CUST_COMMENTS></EPL_CUST_COMMENTS>
          <EPL_GROSS_WEIGHT>120</EPL_GROSS_WEIGHT>
          <EPL_DESCRIPTION_LONG></EPL_DESCRIPTION_LONG>
          <EPL_CODE_1>1</EPL_CODE_1>
          <EPL_CODE_2></EPL_CODE_2>
          <EPL_CODE_3></EPL_CODE_3>
          <EPL_LAST_CHANGED_DATE>20120614</EPL_LAST_CHANGED_DATE>
          <EPL_LAST_CHANGED_TIME>16362322</EPL_LAST_CHANGED_TIME>
        </EPOD_CONTAINER>
      </EPOD_CONTAINERS>
      <EPOD_SERVICES></EPOD_SERVICES>
    </EPOD_JOB>
  </EPOD_JOBS>
</EPOD_EXPORT_JOB>

Note Note: The signature has been shortened for the purposes of this document.

Note Note: The content of the exported data varies and expands as the CALIDUS ePOD/eSERV product expands. As new items are added to the application, a full XSD will be modified and issued to you, to aid in validating data passed into your application. The Import XSD is referenced in Appendix A.


Vehicle Checks Format

Vehicle Defect Checks are configurable within CALIDUS ePOD/eSERV. The resulting checks are stored naturally within the database as XML fragments, which may be validated with its own XSD. The vehicle checks may only be requested through the EPOD_EXPORT_VEHICLE_CHECKS webservice request, and the response XSD is referenced in Appendix A.

Vehicle Checks XML exports as a series of questions and answers from the device and may be of several different types:

  • Numeric - the user will be prompted to enter a number only as the response , for example, What is the current Mileage?
  • Text - The user will be prompted to enter a text response.
  • Boolean - The user is prompted to enter a yes or no response, for example, Does the Windscreen have any cracks. The options allowed can be cycled through by pressing on the button.
  • Option - The user will be prompted with a number of boxes that must be checked. The options allowed can be cycled through by pressing on the button.
  • Multi-state Check boxes - the user can cycle through all available values on the check-box, for example, unchecked (blank), Failed (N), Not Applicable (Y), Passed (Y), etc.

An example export is shown below:

<EPOD_EXPORT_VEHICLECHECKS_RESPONSE RESULT="ACK">
    <EPOD_VEHICLE_CHECKS>
       <EPOD_VEHICLE_CHECK>
           <EPL_SITE_ID>DEMO</EPL_SITE_ID>
           <EPL_VEHICLE_ID>VAN</EPL_VEHICLE_ID>
           <EPL_VEHICLE_CHECK_DATE>20141217</EPL_VEHICLE_CHECK_DATE>
           <EPL_VEHICLE_CHECK_TIME>0</EPL_VEHICLE_CHECK_TIME>
           <EPL_USER_ID>MATT</EPL_USER_ID>
           <VEHICLE_CHECK_DATA>
               <QUESTION ID="0001">
                   <TEXT>Please check the following items.</TEXT>
                   <FORMAT>X</FORMAT>
                   <SKIPABLE>N</SKIPABLE>
                   <ITEMS>
                       <ITEM ANSWER="Y">Oil Level</ITEM>
                       <ITEM ANSWER="Y">Tyres</ITEM>
                       <ITEM ANSWER="Y">Brakes</ITEM>
                       <ITEM ANSWER="Y">Water</ITEM>
                       <ITEM ANSWER="Y">Lights</ITEM>
                   </ITEMS>
               </QUESTION>
               <QUESTION ID="0002">
                   <TEXT>Please enter any comments.</TEXT>
                   <FORMAT>T</FORMAT>
                   <SKIPABLE>Y</SKIPABLE>
                   <ANSWER>na</ANSWER>
               </QUESTION>
               <QUESTION ID="0003">
                   <TEXT>What is the current Mileage?</TEXT>
                   <FORMAT>N</FORMAT>
                   <SKIPABLE>N</SKIPABLE>
                   <ANSWER>1000</ANSWER>
               </QUESTION>
           </VEHICLE_CHECK_DATA>
       </EPOD_VEHICLE_CHECK>
   </EPOD_VEHICLE_CHECKS>
</EPOD_EXPORT_VEHICLECHECKS_RESPONSE>


UDF Format

The CALIDUS ePOD/eSERV product can be configured to accept data entry of any non-critical field at several major points in processing jobs, for example:

  • Load Start/End Metrics
  • General Job Details
  • Service:
    • Prework/Postwork checks
    • Diagnosis/Report fields

The mechanism of User-defined Fields (UDF) allows this configuration.

Similarly to Vehicle Checks, UDF responses are held natively within the database as XML fragments, which may be validated with its own XSD. The vehicle checks may only be requested through the EPOD_EXPORT_VEHICLE_CHECKS webservice request, and the response XSD is referenced in Appendix A.

The allowed field types are extended from Vehicle Checks, allowing also:

  • Numeric
  • Text
  • Text Area
  • Checks
  • Options
  • Tri-state Checks
  • Tri-state Options
  • Drop-down lists

The format differs slightly - a sample is shown below:

<FORM NAME="Job Details" REQUIRED="Y">
  <FIELD ID="WEIGHBRIDGE_WEIGHT">
      <TEXT>Weight</TEXT>
      <FORMAT>N</FORMAT>
      <REQUIRED>^0*[1-9][0-9]{2,4}$</REQUIRED>
      <VALUE>123.45</VALUE>
  </FIELD>
  <FIELD ID="WEIGHBRIDGE_TICKET">
      <TEXT>Weighbridge Number</TEXT>
      <FORMAT>T</FORMAT>
      <REQUIRED>Y</REQUIRED>
      <VALUE>162553</VALUE>
  </FIELD>
</FORM>

Note Note: The UDF data may be HTML-safe encoded.


Terms & Conditions

Terms and Conditions displayed to customers are configurable within CALIDUS ePOD/eSERV. The are represented by mixed HTML format, as follows:

<TERMS_CONDITIONS>
   <TEXT>I certify that the information in A, B and C is correct, and that the carrier is registered.<br />
         I confirm that I have fulfilled my duty to apply the waste hierarchy as required by Regulation 12 of the 
         Waste (England and Wales) Regulations 2011.</TEXT>
   <CHECKS>
       <INPUT type="checkbox">CHECK1</INPUT>
       <INPUT type="checkbox">CHECK2</INPUT>
       <INPUT type="checkbox">CHECK3</INPUT>
   </CHECKS>
</TERMS_CONDITIONS>

Note Note: The Terms and Conditions data may be HTML-safe encoded.


Export Mechanisms

Web Services (Push)

The identity of the web service will be defined by the TMS team, requiring a string (rather than an XML object) input.

Each job will be sent independently, resulting in a single call to the external web service to add this job.

When the file is received and processed by the web service, the system expects the web service to respond in the format, as shown in previous sections. The exact same format and structure should be used as described here. The content may be as detailed as required by the TMS system.


Web Services (Pull)

Web Services are supplied for external systems to request information on Loads and Jobs, by ID or Date Since. The Web Services are hosted as part of the main CALIDUS ePOD/eSERV server and run as SOAP or HTML Web Services. Response Data is formatted in a strongly-typed XML file, validated by a full XSD.

Standard requested data to export supports the following, through the indicated web services request:

  • Loads (including all Jobs underneath) by ID or Date
    • EPOD_EXPORT_LOAD
    • EPOD_EXPORT_LOAD_DATE
    • EPOD_EXPORT_LOAD_DATE_RANGE
  • Jobs by ID or Date
    • EPOD_EXPORT_JOB
    • EPOD_EXPORT_JOB_DATE
    • EPOD_EXPORT_JOB_DATE_RANGE
  • Vehicle information
    • EPOD_EXPORT_VEHICLE_REQUEST
    • EPOD_EXPORT_VEHICLE_CHECKS


Flat-file Processing

The FTP server or File-system can be identified by the TMS team, or supplied by OBS Logistics.

Each job will be sent independently, resulting in a single XML file created in the destination folder. The naming of the file is configurable.

No confirmation of processing is required - this is expected to be handled by the host system. Files processed can be deleted or moved to an archive folder, as required by the host system.


Appendix A: Document References

A.1 References

Ref NoDocument Title & IDVersionDate
1EPOD Import Mapping v0.10.xlsx0.505/02/2015
2EPOD Export Mapping v0.10.xlsx0.1005/02/2015
3XSD.zipN/A05/02/2015


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 Product Manager
_____________________________