289428
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 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
EST-288788 DK-8H2HQC Develop EFX Solution v1.0.doc | |||
Glossary
C-TMS | Calidus TMS |
Document History
Initial version | ||||
AUTHORISED BY
Matt Crisford | Development Manager | |
Peter Greer | TMSCC MTS Product Manager |