289428

From CTMS

Aptean Logo.png







DHL C-TMS

Develop EFX Solution


FUNCTIONAL SPECIFICATION - 10.6

- 1.0


Reference: FS 288788 DK-8H2HQC













































Client Requirement

Change Request Summary:

To enable OBS to develop the EFX solution in C-TMS as described in the meeting on Thursday 19th May.


Change Request Details:

OBS will need to set up the EFX flows by order and not by TRIP as they use currently.


Benefits identified as a result of the change:

This will enable the site to pay carriers through the EFX / ORACLE systems as per current process.


Solution

The C-TMS / EFX integration will be developed to satisfy the business requirement to automate carrier payments for transport services provided by third parties.

As background, C-TMS already integrates with EFX and this deployment is utilised within other DHL divisions however the scope of this integration was developed with an emphasis on trip tendering and posting trips to the EFX notice board. The Openfield requirement represents a wider scope covering specific handling of cost payments at order level.

The integration solution will be based on four distinct data flows over three different formats. The data-files will be created in XML format and confirm directly to The EFX XSD. In other words, C-TMS will write the files it creates to the format the EFX system expects to read in. C-TMS will read in the file format that EFX creates. This means that DHL Link, the integration hub will not need to transform any of the files, but will validate and provide the transport of message functionality.

The four flows will integrate with the Transport process as follows;

Once orders are planned to trips, a carrier assigned and a cost captured the import to EFX message will be created by C-TMS and uploading via DHL link into EFX. This first message serves to pre-advise EFX of the transport service arranged to be provided by the carrier. It is understood that this data will not be posted to the EFX notice board. A message file will be created for each order on a trip.

EFX will immediately respond with a confirmation status and issue back to C-TMS a unique EFX number using the EFX export message. The EFX status and unique reference will be uploaded into C-TMS and made visible against the order for user query.

Once debrief on C-TMS is completed; this will normally be based on a scan in the TOK-Open scanning solution of the driver manifest and the data concerning actual arrive and depart and weight of product on delivery then being uploaded into C-TMS; C-TMS will send another EFX import message of the same format as the initial pre-advise. This updates into EFX serves to provide the final debrief information from C-TMS, in particular the carrier and cost of the transport service post execution.

Finally, after a pre-defined delay of minutes, C-TMS will send a final debrief message for each order on the trip. This message serves to update the status in EFX to debrief and finalise the order details in readiness to be authorised for payment and payment made.

Scope

This change will be applied to system version 10.6.0 on INDTST and once approved INDPRD.

General Comments

All data flows in this solution will be developed to confirm to the XSD definitions provided by EFX. These XSD definitions are included later in this specification for reference.

Menu Structure

‘Unchanged’

Data

Additional data elements for the EFX status and EFX number at order level must be maintained. These will be held in C-TMS with the new order references section and reference control number will be defined for each value.

Functional Description

Import into EFX (at brief)

Once orders have been planned, carrier appointed and the work briefed to carrier in C-TMS, a pre-advise message will be created by C-TMS to post into EFX. Importantly, at this stage a provisional cost will be available from C-TMS based on agreement with the carrier. This provisional cost is derived from rate agreement on a cost per tonne basis with the appointed carrier (either from lane or contract) or from an agreed spot cost rate, again on a cost per tonne basis negotiated with the appointed carrier. Important to note that this pre-advise transaction needs to be issued to the EFX system at an order level not at a trip level for the Openfield deployment. A system parameter will be included in C-TMS to control whether the interface with EFX runs at order or at trip so this development can be re-used as a standard solution.

Even though the transactions of this message will be generated by C-TMS for each order, the message will be referred to as trip import. The trigger condition for the message to be generated will be

  • The trip status (for the order or orders) changes to ACCEPTED
  • A carrier has been assigned to the trip (means the carrier code is not the value ‘EFX’ and the carrier is determined to be third party and not own fleet).
  • A cost value is assigned to the trip

(Note that to maintain the functionality to tender to EFX, in C-TMS the carrier code will be assigned to the value EFX for the trip temporarily and as the trip status changes to TENDERED, the import trip message will be generated. This process is assumed to be out of scope for Openfield).


The trip import message will be generated by C-TMS to the exact XML format expected by EFX and according to the EFX schema XSD included below

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="importType">

 <xs:sequence>
   <xs:element name="SOURCE" type="sourceType"/>
   <xs:element name="TRIP" type="tripType" minOccurs="1" maxOccurs="unbounded"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="sourceType">

 <xs:sequence>
   <xs:element name="SYSTEM" type="completedString"/>
   <xs:element name="SITE" type="siteNumber"/>
   <xs:element name="REFERENCE" type="completedString"/>
   <xs:element name="CREATION_DATE" type="xs:dateTime"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="tripType">

 <xs:sequence>
   <xs:element name="REFERENCES" type="referencesType"/>
   <xs:element name="RESERVATIONS" type="reservationType" minOccurs="0" maxOccurs="1"/>
   <xs:element name="DEADLINE" type="xs:dateTime"/>
   <xs:element name="LOAD" type="loadType"/>
   <xs:element name="DELIVERY" type="deliveryType"/>
   <xs:element name="PRODUCT" type="productType"/>
   <xs:element name="TRANSPORT" type="transportType"/>
   <xs:element name="FINANCE" type="financeType"/>
   <xs:element name="CONTACT_DETAIL" type="contact_detailType"/>
   <xs:element name="COMMENTS" type="commentsType"/>
   <xs:element name="SUBCONTRACTOR" type="subcontractType" minOccurs="0" maxOccurs="1"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="referencesType">

 <xs:sequence>
   <xs:element name="EFX" type="efxReference"/>
   <xs:element name="CUSTOMER" type="completedString"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="reservationType">

 <xs:sequence>
   <xs:element name="SITE" type="xs:string"/>
   <xs:element name="DONOTEXPIRE" type="YesNo"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="loadType">

 <xs:sequence>
   <xs:element name="LOCATION" type="locationType"/>
   <xs:element name="START" type="xs:dateTime"/>
   <xs:element name="FINISH" type="xs:dateTime"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="locationType">

 <xs:sequence>
   <xs:element name="NAME" type="completedString"/>
   <xs:element name="POSTCODE" type="completedString"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="deliveryType">

 <xs:sequence>
   <xs:element name="PRIMARY" type="primaryType"/>
   <xs:element name="SUBSEQUENT" type="subsequentType" minOccurs="0" maxOccurs="8"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="primaryType">

 <xs:sequence>
   <xs:element name="LOCATION" type="locationType"/>
   <xs:element name="START" type="xs:dateTime"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="subsequentType">

 <xs:sequence>
   <xs:element name="NAME" type="completedString"/>
   <xs:element name="START" type="xs:dateTime"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="productType">

 <xs:sequence>
   <xs:element name="PRODUCT_INFO" type="completedString"/>
   <xs:element name="PALLET_LIFTS" type="xs:integer"/>
   <xs:element name="WEIGHT" type="xs:decimal"/>
   <xs:element name="UOM" type="uomType"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="transportType">

 <xs:sequence>
   <xs:element name="PALLET_TYPE" type="xs:string"/>
   <xs:element name="VEHICLE_TYPE" type="xs:string"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="financeType">

 <xs:sequence>
   <xs:element name="NET_PRICE" type="xs:decimal"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="contact_detailType">

 <xs:sequence>
   <xs:element name="NAME" type="xs:string"/>
   <xs:element name="PHONE" type="xs:string"/>
   <xs:element name="FAX" type="xs:string"/>
   <xs:element name="EMAIL" type="xs:string"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="commentsType">

 <xs:sequence>
   <xs:element name="SITE" type="xs:string"/>
   <xs:element name="OTHER" type="xs:string"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="subcontractType">

 <xs:sequence>
   <xs:element name="EFX_VENDOR">
      <xs:simpleType>
       <xs:restriction base="xs:string">
         <xs:pattern value="[\d]{0,8}"/>
       </xs:restriction>
     </xs:simpleType>
   </xs:element>
   <xs:element name="ORACLE_VENDOR_NUMBER">
     <xs:simpleType>
       <xs:restriction base="xs:string">
         <xs:pattern value="[\d]{0,30}"/>
       </xs:restriction>
     </xs:simpleType>
   </xs:element>	
   <xs:element name="ORACLE_VENDOR_SITE" type="xs:string"/>
   <xs:element name="TRIP_RATE" type="xs:decimal"/>
   <xs:element name="KEY_LATER" type="YesNo"/>
 </xs:sequence>

</xs:complexType>

<xs:simpleType name="siteNumber">

 <xs:restriction base="xs:integer">
    <xs:minInclusive value="1000"/>
    <xs:maxInclusive value="9999"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="uomType">

 <xs:restriction base="xs:string">
   <xs:enumeration value="TNE"/>
   <xs:enumeration value="KGS"/> 
 </xs:restriction>    

</xs:simpleType>

<xs:simpleType name="YesNo">

 <xs:restriction base="xs:string">
   <xs:enumeration value="Y"/>
   <xs:enumeration value="N"/>
 </xs:restriction>    

</xs:simpleType>

<xs:simpleType name="efxReference">

 <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]{0,10}"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="completedString">

 <xs:restriction base="xs:string">
   <xs:pattern value="[\s]*[\S][\s\S]*"/>
 </xs:restriction>

</xs:simpleType>

<xs:element name="IMPORT" type="importType"/>

</xs:schema>

An example of the output is shown below

- <IMPORT>

-

  <SYSTEM>Swift</SYSTEM> 
  <SITE>1734</SITE> 
  <REFERENCE>SWI0506.00412317.500</REFERENCE> 
  <CREATION_DATE>2011-05-06T12:20:42.500</CREATION_DATE>

- <TRIP> - <REFERENCES>

 <EFX /> 
 <CUSTOMER>GRF99110128289</CUSTOMER> 
 </REFERENCES>
 <DEADLINE>2011-05-09T00:00:00</DEADLINE> 

- <LOAD> - <LOCATION>

 <NAME>B B Stephens & Son</NAME> 
 <POSTCODE>ME13 9LG</POSTCODE> 
 </LOCATION>
 <START>2011-05-09T07:30:00</START> 
 <FINISH>2011-05-09T07:45:00</FINISH> 
 </LOAD>

- <DELIVERY> - <PRIMARY> - <LOCATION>

 <NAME>Allied Mills Ltd</NAME> 
 <POSTCODE>RM18 7JR</POSTCODE> 
 </LOCATION>
 <START>2011-05-09T08:00:00</START> 
 </PRIMARY>
 </DELIVERY>

- <PRODUCT>

 <PRODUCT_INFO>Low Grade Milling Wheat (Group 1&2)\Low Grade Milling Wheat (Group 1&2)\XI19</PRODUCT_INFO> 
 <PALLET_LIFTS>1</PALLET_LIFTS> 
 <WEIGHT>29.00000</WEIGHT> 
 <UOM>TNE</UOM> 
 </PRODUCT>

- <TRANSPORT>

 <PALLET_TYPE>Grain</PALLET_TYPE> 
 <VEHICLE_TYPE>Tipper</VEHICLE_TYPE> 
 </TRANSPORT>

- <FINANCE>

 <NET_PRICE>195.75</NET_PRICE> 
 </FINANCE>

- <CONTACT_DETAIL>

 <NAME /> 
 <PHONE /> 
 <FAX>01634 811876</FAX> 
 <EMAIL>[email protected]</EMAIL> 
 </CONTACT_DETAIL>

- <COMMENTS>

 <SITE>01476 862 730</SITE> 
 <OTHER>110509-713:GRF99110128289</OTHER> 
 </COMMENTS>

- <SUBCONTRACTOR>

 <EFX_VENDOR>4151</EFX_VENDOR> 
 <ORACLE_VENDOR_NUMBER /> 
 <ORACLE_VENDOR_SITE /> 
 <TRIP_RATE>195.75</TRIP_RATE> 
 <KEY_LATER>N</KEY_LATER> 
 </SUBCONTRACTOR>
 </TRIP>
 </IMPORT>

Notes –


EFX decodes will be setup in C-TMS to support the implementation. This means codes in C-TMS are substituted with EFX codes as the message is created.

A single decodes for owning depot to translate OPENFIELD in C-TMS to site 1734 in EFX

A decode for each carrier code in C-TMS to translate into EFX_VENDOR, for example ‘CLIVEPRICETR’ in C-TMS becomes 4151 in EFX

A decode for each trailer type, for example ‘OPEN TIPPER’ in C-TMS becomes ‘tipper’ in EFX

A trip import message will be created for each order and only one order will be sent in each message.

C-TMS will ftp push the files to the ESI (Link) ftp server.

Data content specification


Data Tab Example Comment
SOURCE
SYSTEM Swift C-TMS system parameter to control the value of the source system. Assumed that he value will remain as Swift to avoid disruption in EFX during transition.
SITE 1734 EFX site reference for Openfield. Will be set as a decode for the owning depot of each trip that an order is assigned to.
REFERENCE EFX-CTMS-TRIP201106071220.6798 Concatenation of the filename used to send the order data to EFX and the unique OMS reference in format EFX-CTMS-TRIP-YYYYMMDDHH24MI+OMS_ref
CREATION_DATE 2011-05-06T12:20:42 Date the order file was created in C-TMS
TRIP
REFERENCE.CUSTOMER GRF99110128289 External OPENFIELD reference for order
DEADLINE 2011-05-09T00:00:00 Start of the day of the delivery – see load start and finish times below.
LOAD.LOCATION
NAME B B Stephens & Son Name at collection location
POSTCODE ME13 9LG Postcode of collection location
START 2011-05-09T07:30:00 Planned earliest collection date and time of the order (from order).
FINISH 2011-05-09T07:45:00 Planned earliest delivery date and time of the order (from order)
DELIVERY
PRIMARY.LOCATION
NAME Allied Mills Ltd Name of the delivery location of the order
POSTCODE RM18 7JR Postcode of the delivery location of the order
START 2011-05-09T08:00:00 Planned latest delivery date and time of the order (from order)
PRODUCT
PRODUCT.INFO Low Grade Milling Wheat (Group 1&2)\Low Grade Milling Wheat (Group 1&2)\XI19 Concatenation of the Sales Grade\Commodity code\ Variety Code. To be further clarified by DHL.
PALLET_LIFTS 1 Always 1
WEIGHT 29.00000 Weight of order provided in the weight measure below
UOM TNE C-TMS system parameter to control the measure of weight. Will be configured to TNE
TRANSPORT
PALLET_TYPE GRAIN Product type of order
VEHICLE_TYPE Tipper Trailer type of trip
FINANCE
NET_PRICE 195.75 Cost of order on trip excluding VAT
CONTACT_DETAIL
NAME Name of contact at carrier
PHONE Phone number of carrier
FAX 01634 811876 Fax number of carrier
EMAIL [email protected] Email of carrier
COMMENTS
SITE 01476 862 730 Number of OPENFIELD derived from location of cost centre.
OTHER 110509-713:GRF99110128289 Concatenation of schedule-trip(excluding leading MAN- and zeros):external reference from order
SUBCONTRACTOR
EFX_VENDOR 4151 Decode carrier to EFX vendor number
TRIP_RATE 195.75 Cost of order on trip excluding VAT
KEY_LATER N Hard code to N


Export from EFX

Once EFX processes the trip (order in this case for Openfield), EFX creates a response message containing the unique EFX number.

C-TMS will be developed to read in the XML export message exactly as created by EFX and the assumption is that ESI Link will push the files to the C-TMS server. The EFX schema XSD is included below.

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="exportType">

 <xs:sequence>
   <xs:element name="SOURCE" type="sourceType"/>
   <xs:element name="TRIP" type="tripType" minOccurs="0" maxOccurs="unbounded"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="sourceType">

 <xs:sequence>
   <xs:element name="SYSTEM" type="completedString"/>
   <xs:element name="SITE" type="siteNumber"/>
   <xs:element name="REFERENCE" type="completedString"/>
   <xs:element name="CREATION_DATE" type="xs:dateTime"/>
   <xs:element name="STATUS" type="statusType"/>
   <xs:element name="ERROR" type="xs:string" minOccurs="0" maxOccurs="1"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="tripType">

 <xs:sequence>
   <xs:element name="REFERENCES" type="referencesType"/>
   <xs:element name="STATUS" type="statusType"/>
   <xs:element name="ERROR" type="xs:string" minOccurs="0" maxOccurs="1"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="referencesType">

 <xs:sequence>
   <xs:element name="EFX" type="efxReference"/>
   <xs:element name="CUSTOMER" type="completedString"/>
 </xs:sequence>

</xs:complexType>

<xs:simpleType name="siteNumber">

 <xs:restriction base="xs:integer">
    <xs:minInclusive value="1000"/>
    <xs:maxInclusive value="9999"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="statusType">

 <xs:restriction base="xs:string">
   <xs:enumeration value="ACCEPTED"/>
   <xs:enumeration value="REJECTED"/> 
 </xs:restriction>    

</xs:simpleType>

<xs:simpleType name="efxReference">

 <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]{0,10}"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="completedString">

 <xs:restriction base="xs:string">
   <xs:pattern value="[\s]*[\S][\s\S]*"/>
 </xs:restriction>

</xs:simpleType>

<xs:element name="EXPORT" type="exportType"/>

</xs:schema>

An example of the XML file is shown below

 <?xml version="1.0" ?> 

- <EXPORT>

-

  <SYSTEM>Swift</SYSTEM> 
  <SITE>1734</SITE> 
  <REFERENCE>SWI0506.00412317.500</REFERENCE> 
  <CREATION_DATE>2011-05-06T12:22:09</CREATION_DATE> 
  <STATUS>ACCEPTED</STATUS>

- <TRIP> - <REFERENCES>

 <EFX>1462197</EFX> 
 <CUSTOMER>GRF99110128289</CUSTOMER> 
 </REFERENCES>
 <STATUS>ACCEPTED</STATUS> 
 </TRIP>
 </EXPORT>

Note that the response message contains the status ACCEPTED and an EFX number. If for whatever reason EFX rejects the trip import message, the export message back to C-TMS will contain the value REJECTED. The interface errors form in C-TMS will allow any REJECTED messages to be identified.

Once processed by C-TMS, the export message will be used to save the EFX number on the order. The EFX status and EFX number will be saved within the new References table and will be visible from the order screen accordingly.

A supporting reference key value will be agreed with DHL – for example 75 and 76 to store the EFX status and reference against each order.

Data content specification

Data Tab Example Comment
SOURCE
SYSTEM Swift EFX responds with same SYSTEM value
SITE 1734 EFX responds with same SITE value
REFERENCE EFX-CTMS-TRIP201106071220.6798 EFX responds with same REFERENCE
CREATION_DATE 2011-05-06T12:20:42 Create date of response export message from EFX
STATUS ACCEPTED Status of import message provided by EFX
TRIP.REFERENCES
EFX 1462197 Unique EFX number
CUSTOMER GRF99110128289 External reference of order as provided originally by C-TMS
STATUS ACCEPTED Status of order on trip in EFX


Import into EFX (at de-brief)

Once the carrier trip is debriefed, and the trip status changed to COMPLETED, this will trigger another trip import message from C-TMS to EFX for the order or orders on the trip.

The format of the message will be the same as in point 2.1 above and will be created in XML format as expected by EFX.

At this stage of the transport process after debrief, the actual weight and actual cost will have been captured on the orders.

Where trip cost has been capped, the actual cost according to the cap and the actual weight of the product will be included into the trip import message.

Note that the import into EFX at debrief has to contain the EFX number generated and received into C-TMS from the message exchange described in point 1 and point 2 above.


An example of the XML shown below.

- <IMPORT>

-

  <SYSTEM>Swift</SYSTEM> 
  <SITE>1734</SITE> 
  <REFERENCE>SWI0506.00401154.920</REFERENCE> 
  <CREATION_DATE>2011-03-28T12:17:53.850</CREATION_DATE>

- <TRIP> - <REFERENCES>

 <EFX>1418087</EFX> 
 <CUSTOMER>GRF23110114720</CUSTOMER> 
 </REFERENCES>
 <DEADLINE>2011-03-31T00:00:00</DEADLINE> 

- <LOAD> - <LOCATION>

 <NAME>R D & J S Bywater</NAME> 
 <POSTCODE>SY7 9BQ</POSTCODE> 
 </LOCATION>
 <START>2011-03-31T07:30:00</START> 
 <FINISH>2011-03-31T07:45:00</FINISH> 
 </LOAD>

- <DELIVERY> - <PRIMARY> - <LOCATION>

 <NAME>H J Lea Oakes Ltd</NAME> 
 <POSTCODE>CW5 8DH</POSTCODE> 
 </LOCATION>
 <START>2011-03-31T08:00:00</START> 
 </PRIMARY>
 </DELIVERY>

- <PRODUCT>

 <PRODUCT_INFO>Assured Feed Barley\Assured Feed Barley</PRODUCT_INFO> 
 <PALLET_LIFTS>1</PALLET_LIFTS> 
 <WEIGHT>30.20000</WEIGHT> 
 <UOM>TNE</UOM> 
 </PRODUCT>

- <TRANSPORT>

 <PALLET_TYPE>Grain</PALLET_TYPE> 
 <VEHICLE_TYPE>Tipper</VEHICLE_TYPE> 
 </TRANSPORT>

- <FINANCE>

 <NET_PRICE>241.60</NET_PRICE> 
 </FINANCE>

- <CONTACT_DETAIL>

 <NAME>John Greves</NAME> 
 <PHONE /> 
 <FAX>01746 718187</FAX> 
 <EMAIL>[email protected]</EMAIL> 
 </CONTACT_DETAIL>

- <COMMENTS>

 <SITE>01476 862 730</SITE> 
 <OTHER>110331-302:GRF23110114720</OTHER> 
 </COMMENTS>

- <SUBCONTRACTOR>

 <EFX_VENDOR>3944</EFX_VENDOR> 
 <ORACLE_VENDOR_NUMBER /> 
 <ORACLE_VENDOR_SITE /> 
 <TRIP_RATE>241.60</TRIP_RATE> 
 <KEY_LATER>N</KEY_LATER> 
 </SUBCONTRACTOR>
 </TRIP>
 </IMPORT>

A trip import message will be created for each order at trip COMPLETED status and only one order will be sent in each message.

C-TMS will ftp push the files to the ESI (Link) ftp server.


This means that once the first pre-advise for the order is sent as described in section 2.1 and the status and EFX number received described in section 2.2, all following messages from C-TMS to EFX will contain the unique EFX number.


Import into EFX (at de-brief)

The final stage of the process for C-TMS is to create a final status change message for EFX that will set the order to debrief status in EFX.

This debrief message will be created by C-TMS to the exact XML format expected by EFX.

This message will be triggered automatically by C-TMS on a timer that will be set into C-TMS system parameters. The business require a 25 minute time lag between the creation of the import into EFX of the debrief message, point 3 above and the final status change message discussed here. The timer lag will be parameterised so the expected 25 minute lag can be reconfigured without software changes.


The EFX debrief schema XSD is included below

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="importType">

 <xs:sequence>
   <xs:element name="SOURCE" type="sourceType"/>
   <xs:element name="TRIP" type="tripType" minOccurs="1" maxOccurs="unbounded"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="sourceType">

 <xs:sequence>
   <xs:element name="SYSTEM" type="completedString"/>
   <xs:element name="SITE" type="siteNumber"/>
   <xs:element name="REFERENCE" type="completedString"/>
   <xs:element name="CREATION_DATE" type="xs:dateTime"/>
   <xs:element name="MESSAGE_TYPE" type="xs:string"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="tripType">

 <xs:sequence>
   <xs:element name="REFERENCES" type="referencesType"/>
   <xs:element name="COMMENTS" type="xs:string"/>
   <xs:element name="SERVICE_LEVEL" type="serviceLevel"/>
   <xs:element name="DEBRIEF_DATE" type="xs:dateTime"/>
 </xs:sequence>

</xs:complexType>

<xs:complexType name="referencesType">

 <xs:sequence>
   <xs:element name="EFX" type="efxReference"/>
   <xs:element name="CUSTOMER" type="completedString"/>
 </xs:sequence>

</xs:complexType>

<xs:simpleType name="siteNumber">

 <xs:restriction base="xs:integer">
    <xs:minInclusive value="1000"/>
    <xs:maxInclusive value="9999"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="serviceLevel">

 <xs:restriction base="xs:integer">
    <xs:minInclusive value="1"/>
    <xs:maxInclusive value="5"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="efxReference">

 <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]{0,10}"/>
 </xs:restriction>

</xs:simpleType>

<xs:simpleType name="completedString">

 <xs:restriction base="xs:string">
   <xs:pattern value="[\s]*[\S][\s\S]*"/>
 </xs:restriction>

</xs:simpleType>

<xs:element name="IMPORT" type="importType"/>

</xs:schema>

An example of the XML is shown below

- <IMPORT>

-

  <SYSTEM>Swift</SYSTEM> 
  <SITE>1734</SITE> 
  <REFERENCE>SWI0506D00401154.467</REFERENCE> 
  <CREATION_DATE>2011-05-05T23:01:15.967</CREATION_DATE> 
  <MESSAGE_TYPE>Debrief</MESSAGE_TYPE>

- <TRIP> - <REFERENCES>

 <EFX>1418087</EFX> 
 <CUSTOMER>GRF23110114720</CUSTOMER> 
 </REFERENCES>
 <COMMENTS /> 
 <SERVICE_LEVEL>3</SERVICE_LEVEL> 
 <DEBRIEF_DATE>2011-05-05T23:01:15.967</DEBRIEF_DATE> 
 </TRIP>
 </IMPORT>

Note that the EFX number is included in this message, the status is set to ‘Debrief’ and the service level fixed as value ‘3’.

A debrief message will be created for each order and only one order will be sent in each message.

C-TMS will ftp push the files to the ESI (Link) ftp server.

Data content specification

Data Tab Example Comment
SOURCE
SYSTEM Swift EFX responds with same SYSTEM value
SITE 1734 EFX responds with same SITE value
REFERENCE EFX-CTMS-TRIP201106071220.6798 EFX responds with same REFERENCE
CREATION_DATE 2011-05-06T12:20:42 Create date of response export message from EFX
MESSAGE_TYPE Debrief Hard coded value to define the Debrief status update in EFX
TRIP.REFERENCES
EFX 1462197 Unique EFX number
CUSTOMER GRF99110128289 External reference of order as provided originally by C-TMS
SERVICE_LEVEL 3 Always set to 3
DEBRIEF_DATE 2011-05-05T23:01:15 Date and time the debrief message was created in C-TMS


Other Comments

Although out of scope of this RIO, it will be possible with additional development to send status updates other than debriefed to EFX using the message described in point 4 above, for example cancelled. This is likely to be more relevant to tendering and posting to EFX notice-board.

The filename formats will be:

Format Flow
EFX-CTMS-TRIP-YYYYMMDDHH24MI.XML For orders from C-TMS to EFX
EFX-CTMS-TRIP-YYYYMMDDHH24MI.XML For EFX number returned from EFX to C-TMS
EFX-CTMS-DEBRIEF-YYYYMMDDHH24MI.XML For debriefs from C-TMS to EFX


Database triggers, jobs and procedures will need to be changed or introduced to process the EFX messages by trip or by order.

It is assumed that the XML format messaging to be developed to satisfy this requirement will become the standard solution. Other C-TMS users could consider this as an upgrade path although any additional scope not covered by the above would need to be considered as and when necessary.


References

Ref No
Document Title & ID
Version
Date
1
EST-288788 DK-8H2HQC Develop EFX Solution v1.0.doc
1.0
25/05/2011


Glossary

Term or Acronym
Meaning
C-TMS Calidus TMS


Document History

Version
Date
Status
Reason
Initials
1.0
27/05/2011
Issue
Initial version
DJM


AUTHORISED BY

Matt Crisford Development Manager
Peter Greer TMSCC MTS Product Manager