FS 377534 PART EPOD New Palletforce Interface
Partnerlink
New Palletforce Interface
Functional Specification
13th November 2020 - 0.2
Reference: FS 377534
Contents
FUNCTIONAL OVERVIEW
Client Requirement
As a network, Palletforce put enormous effort into collecting more than 100,000 tracking events each day and every consignment is made up of over 50 individual pieces of data.
To further enhance their tracking capabilities and customer experience, they have improved their ePOD tracking integrations by creating a new ePOD and Tracking API, as well as allowing current processes to receive additional tracking data. Last year, Palletforce invested £2m in a new state of the art ePOD hardware and software.
A number of Palletforce members (including Partnerlink partners) take advantage of the flexibility of using their own technology to integrate with Alliance, however over time the number of compulsory tracking events has diminished in comparison to tracking events that their newly-revamped ePOD solution offers.
With this in mind, from 27th November 2020 the following tracking events will become mandatory for every consignment delivered in Alliance:
- Scanned onto Delivery Vehicle (DELV)
- En Route (DONR)
- Arrived at Delivery Location (ARDL)
- Proof of Delivery (POD) and all equivalent statuses indicating end of consignment.
In addition to the above, the following tracking and data will also become mandatory to provide:
- Proof of Collection (POC) confirmation for collections performed on behalf of other members.
- Delivery order and total number of Palletforce deliveries on the route.
These changes will provide a universal and consistent service for all customers, ensuring that every customer receives the same high-quality tracking data, whilst providing members with the flexibility of using their own ePOD and scanning technology.
This will further enhance Palletforce's current services such as consignment notifications, and provide them with a platform to develop even better consignment tracking that will enhance their customer experience, reduce queries and provide a solid foundation for future development around real-time tracking.
Solution Overview
The C-ePOD Admin screen will not require modification, as the screen already supports the Palletforce (PALLET) interface type, which will now be configured as a SOAP web service.
There are no expected modifications to the data being passed to the partners' TMS solutions for Palletforce jobs, nor to the data being passed to C-ePOD for those jobs. There are no expected modifications to the configuration of the job processes to support this new interface, for example process changes for the driver, or reason code changes for Palletforce jobs. Jobs will be received into the C-ePOD system in the same way that they are now, with no changes to how these are processed by this interface.
The existing Palletforce export will be modified to change from the existing FTP file-based (CSV/PNG) interface to sending the files directly to a web service endpoint provided by Palletforce.
The interface will send all required information to the Palletforce systems at certain events:
- DONR - En Route. The status is used when the job is a delivery and the job has been set to In Progress i.e. the driver has started this job.
- ARDL - Arrived at Delivery Location. The status is used when the job is a delivery and the job has been updated with an arrival date and time.
- Proof of Delivery (POD) and all equivalent statuses indicating end of consignment, including:
- POD - POD Received. The status is used when the job is a delivery, the container (pallet) status is "C" - complete, with no notes or reason code.
- PODE - POD Received with Exception. The status is used when the job is a delivery, container status is "C" - complete by also contains notes and/or a reason code (i.e. claused).
- DMGD - Delivered Damaged. The status is used when the job is a delivery, container status is "X" - cancelled with reason code i.e. pallet has not been delivered.
- POC - POC Received. The status is used when the job is a collection.
- ABRT - Delivery aborted. The status is used when the whole job has been cancelled.
At each trigger point, an event status update will be sent to the Palletforce system, detailing the information required for that status update.
All sites (i.e. partners) within Partnerlink will be assigned a unique Access Key, that uniquely identifies the partner to Palletforce. This replaces the existing mechanism of using Palletforce Depot codes.
Unique tracking codes will be provided for the Palletforce jobs, which will be used to identify the consignments in the new interface.
Latitude and longitude will be provided on the status update message, if the applications knows of it.
Each status update message will include the drop number and total drops on the trip.
For end-of-job statuses as listed above, the signatory and signature will also be included.
Where exceptions are indicated, the system will provide details (i.e. the notes and reason code descriptions) in notes against the consignment.
The system will audit the messages sent and will audit the response from the Palletforce web service, to indicate whether the update was successful or has failed.
Scope
The solution described in this document will be delivered in the latest (4.5) version of C-ePOD.
The Scanned onto Delivery Vehicle event (DELV) will not sent by CALIDUS ePOD, as the partners do not use loading tasks within this application. This status event is required by Palletforce. This will be achieved through the partners' TMS solutions or through the use or Palletforce-provided scanners. This is not part of the development to CALIDUS systems indicated as part of this solution. If the partners want this functionality to be included through CALIDUS ePOD, this will require additional assessment and development. This is not included in this estimate.
The new Palletforce interface requires that the message identify the address type, Commercial or Retail. This information is not provided to CALIDUS ePOD from the partners' TMS systems. As such, the interface below will be identifying each address type as "U" - Unknown, which is currently acceptable to Palletforce. However, in the future, further development may be required, both to the partners' TMS solutions (to pass this data to C-ePOD) and to C-ePOD (to receive and store this data. The time for this is not included in this estimate.
The details of this Palletforce test system have not yet been provided or assessed. Once provided, this may affect this estimate. At this time, it is not expected that this will affect the estimate in a significant way.
The old Palletforce method of interfacing is being decommissioned and will no longer be available after a changeover period.
Additional time has been added to this solution to account for data set-up of the new interface on behalf of the customers, both for the test and production environments. Additional testing time has been added to test this fully with the test Palletforce system. The details of this Palletforce test system have not yet been provided or assessed.
Impact
Any partner that is part of the Palletforce alliance will now send these messages in the new format from the point that the software is released. Each partner must be made aware of the change.
The old mechanism of flat file transfer will not be available after this development is released. Each partner must be made aware of this.
CONFIGURATION SET-UP
Pre-requisites
None.
Menu Structure
N/A.
Data
Modify all existing PF export types to be set up to new web service
Field | Description | Sample |
---|---|---|
EPL_XF_CONFIG_ID | The ID, made up of "PALLET" plus the site ID, for consistency | PALLETL01 |
EPL_DESCRIPTION | A description | Palletforce L01 Test |
EPL_XF_TYPE | The export method | SOAP |
EPL_XF_DESTINATION | The Palletforce web service. Will differ for test and live. | https://ws.palletforce.com/tracking |
EPL_XF_ID | The type. Always "PF" | PF |
EPL_XF_MSG_TYPE | The message types being sent, pipe delimited. Blank means all are sent. | ARDL|POD|ABRT |
EPL_WEB_PASSWORD | The access key to the Palletforce Alliance tracking system, as provided, for that site/partner | ac1234567890 |
EPL_XF_DIRECTION | Export | E |
EPL_EXPORT_JOB_TYPES | The job types to export. C, D or CD (or blank) for all. | CD |
EPL_EMAIL_ERRORS | An email address to email errors to. Optional. |
Connect all existing PALLET job groups to the correct interface created above.
So, for example, L01 Site, job group PALLET must be set to using this PALLETL01 configuration above.
Implementation Advice
The change will affect all Palletforce jobs that are updated from the point that the new changes are implemented. In order to prevent jobs being sent or processed half-way through, down-time for the implementation into the production system is recommended.
The customer must be made aware that there will be some down-time whilst this change is installed to the production system.
Note: All of the data modifications should be completed by the implementation team - the customer should not be required to complete this after implementation to the production system, as timing of the interface changes is critical. If possible, scripts should be created to update the existing data, and tested as part of the implementation to the test system, then re-used when implementing the changes to the production system.
FUNCTIONAL DESCRIPTION
Interface Admin
The C-ePOD Admin screens will not change, as the Interface Configuration screen already supports the Palletforce (PALLET) interface type
An interface configuration will be created for each partner that works with the Palletforce Alliance, and these will now be configured as SOAP web services, identifying all the information required for that new web service.
Each PALLET (Palletforce) job group will be assigned to the correct interface ID for that partner, which identifies the Palletforce Alliance account code for the interface.
All sites (i.e. partners) within Partnerlink will be assigned a unique Access Key, that uniquely identifies the partner to Palletforce. This replaces the existing mechanism of using Palletforce Depot codes.
See the Configuration Set-up section above for more details.
There are no expected modifications to the data being passed to the partners' TMS solutions for Palletforce jobs, nor to the data being passed to C-ePOD for those jobs. There are no expected modifications to the configuration of the job processes to support this new interface, for example process changes for the driver, or reason code changes for Palletforce jobs. Jobs will be received into the C-ePOD system in the same way that they are now, with no changes to how these are processed by this interface.
Interface
In terms of how the interface operates, this will largely not be visible to the user - messages will still be automatically sent to Palletforce Alliance, except now messages will be sent more frequently, at more status changes.
The existing Palletforce export will be modified to change from the existing FTP file-based (CSV/PNG) interface to sending the files directly to a web service endpoint provided by Palletforce.
The interface will send all required information to the Palletforce systems at certain events:
- DONR - En Route. The status is used when the job is a delivery and the job has been set to In Progress i.e. the driver has started this job.
- ARDL - Arrived at Delivery Location. The status is used when the job is a delivery and the job has been updated with an arrival date and time.
- Proof of Delivery (POD) and all equivalent statuses indicating end of consignment, including:
- POD - POD Received. The status is used when the job is a delivery, the container (pallet) status is "C" - complete, with no notes or reason code.
- PODE - POD Received with Exception. The status is used when the job is a delivery, container status is "C" - complete by also contains notes and/or a reason code (i.e. claused).
- DMGD - Delivered Damaged. The status is used when the job is a delivery, container status is "X" - cancelled with reason code i.e. pallet has not been delivered.
- POC - POC Received. The status is used when the job is a collection.
- ABRT - Delivery aborted. The status is used when the whole job has been cancelled.
At each trigger point, an event status update will be sent to the Palletforce system, detailing the information required for that status update.
Unique tracking codes will be provided for the Palletforce jobs, which will be used to identify the consignments in the new interface.
Latitude and longitude will be provided on the status update message, if the applications knows of it.
Each status update message will include the drop number and total drops on the trip.
For end-of-job statuses as listed above, the signatory and signature will also be included.
Where exceptions are indicated, the system will provide details (i.e. the notes and reason code descriptions) in notes against the consignment.
The system will audit the messages sent and will audit the response from the Palletforce web service, to indicate whether the update was successful or has failed.
TECHNICAL NOTES
Modules Changed
Module Name | Module Type | Notes |
---|---|---|
xf_config* | Web form | aspx and aspx.cs |
EPOD_SYS_EXPORT.cs | C# Class | |
TRG_EPOD_JOB_UPDATE.sql | Database procedure | |
{Date}_{Time}-{Version}-{Reference}_NewPalletforceInterface.sql | Database script | Modifications to the database for the trigger and list data. |
Table Updates
Name | Type | Nullable | Default | Storage | Comments |
---|---|---|---|---|---|
Developer Notes
The Palletforce interface will be modified to connect to a new web service end-point.
The process will also send more data at more events in the job lifecycle, at the following statuses:
- Job In Progress
- Job Arrived
- Job Complete or Cancelled
The old interface is to be removed and replaced with this one.
Summary of Development
Admin changes:
- Modify Import/Export Config screen to display Message Type on all config IDs.
Database Triggers changes:
- Modify the creation of XF Control records on the update or creation of Job records.
AutoExport changes:
- New process, processing Palletforce interfaces based off the XF_CONTROL table, to a new web service endpoint.
- Processing and converting the JSON response.
Testing:
- Testing PF jobs work as expected on all of the status changes, through test jobs on a testing instance of the Palletforce Alliance system.
- Testing other exports are unaffected.
Implementation: Data:
- Existing PALLET job groups to be modified with correct Interface Configuration ID.
- Existing Interface Configuration modified with new Web API information, per partner (site).
- Tables showing exclusion/inclusion of interface configurations to be modified (EPOD_LIST_ITEMS)
Note: Additional days have been allocated to this change to help with the customer's data setup as above in test and production, and also to help with their testing.
Admin Screen
The existing admin Imp[ort/Export Configuration screen, id xf_config.aspx, will be modified for this functionality.
The existing sections xfJobType and xfTTMParm will be made visible for ID "PF".
Triggers
- There is a significant modification to the Job trigger to account for this new functionality.
- This change will move the Palletforce interface to be in line with the new method of interfacing
- The existing method of interfacing will be removed as part of this change and will not be available after the change is implemented.
- A configuration per site/job group is required, not just job group (as per the existing interface.
- Therefore Job Group record is to point to different configurations, one per site.
The triggers the system currently uses in this area are:
- TRG_DEBUG_JOB_STATUS - all it does is wrote to EPOD_DEBUG table.
- TRG_EPOD_JOB_COMPLETE - all it does is PRINT "Updating (job) to status (status)" if completing an unloading job in a warehouse depot.
- TRG_EPOD_JOB_DELETE
- if job deleted
- If jobs left on load
- Insert debug message
- Update LOAD EPL_XFER_TTM_FLAG
- Else
- Insert debug message
- Insert EPOD_XF_CONTROL TRP send if enabled
- TRG_EPOD_JOB_UPDATE - This is the one that needs modification
- TRG_EPOD_JOB_UPDATE_LOAD
Changes to Trigger
The intention of the change is to make the "PF" (Palletforce) interface behave more in line with the new XF_CONTROL process for other network interfaces.
So therefore:
- The existing selection of job group "PALLET" will be removed.
- The PF type will be added to the list of new exports (EPOD_LISTS "EXPORTS_CLIENT_TYPE".)
- The new standard of export will be modified to add some additional EXC_ACTION values based on the export type "PF".
So, the existing PALLET job group selection will be moved to be more like new process i.e. linked to from the job group of the job, to EPOD_XF_CONFIG using the CONFIG_ID of the JOB_GROUP.
There can then be different PALLET_L01, PALLET_L03, etc configurations that are linked from each site's JOB_GROUP record.
This new process (based on EPL_XF_ID of "PF") shouldn't select jobs on completed status alone like the others do, but should check whether the status or arrival date/time has been modified, based on what messages the EPOD_XF_CONFIG message is configured to send, for example:
- If EPL_STATUS is changed to I from any other value and EPL_XF_MSG_TYPE contains "DONR" or is blank, select the record and set the EXC_ACTION to "DONR"
- If EPL_STATUS is changed to C from any other value and EPL_XF_MSG_TYPE contains "POD" or is blank, select the record and set the EXC_ACTION to "POD"
- If EPL_STATUS is changed to X from any other value and EPL_XF_MSG_TYPE contains "ABRT" or is blank, select the record and set the EXC_ACTION to "ABRT"
- If EPL_ARRIVAL_DATE or EPL_ARRIVAL_TIME is changed to a non-null or non-zero value and EPL_XF_MSG_TYPE contains "ARDL" or is blank, select the record and set the EXC_ACTION to "ARDL"
It should select Col or Del jobs based on EPL_EXPORT_JOB_TYPES.
This should affect then the second part of the statement (removing "PALLET") and the last part (the generic sending based on job group)
Data Modification Scripts
A data modification script will be required to include the database trigger modifications specified above.
This script will also add "PF" to the EPOD_LIST_ITEMS for EPOD_LISTS id "EXPORTS_CLIENT_TYPE".
A single script will be required, listed in the modules changed. This will be named {Date}_{Time}-{Version}-{Reference}_NewPalletforceInterface.sql, with Date, Time and System version are set from the current date, time and system version respectively.
The script must be added to the EPOD_DatabaseScriptsLibrary project and set to "Copy Always" to output directory.
New Sending Process
Data class EPOD_SYS_EXPORT.cs, procedure ExportXFControl will be modified. The section for type "PF" will be modified.
So EXC_TYPE of the EPOD_XF_CONTROL record will be "PF" and EXC_ACTION will be one of the main statuses, for example:
- DONR
- ARDL
- POD (including POC and all related statuses)
- ABRT
Then when processing the EPOD_XF_CONTROL records, check the EXC_ACTION and send something different based on that.
Each message will be sent with a JSON content, based on the structure below:
{ "accessKey": "string", "addressType": "string", "consigneeName": "string", "dropOrder": 0, "dropOrderTotal": 0, "eventDateTime": "2020-02-10T13:37:49.366Z", "latitude": 0, "longitude": 0, "notes": "string", "pallets": [ { "palletNumber": "string", "eventCode": "string" } ], "signatureImage": "string", "trackingCode": "string", "uniqueTransactionNumber": "string" }
The process will build the content, then (through the configuration of the PF messages being "SOAP"), will send these to the endpoint specified.
The SOAP sending region of this method will be modified to check the type of "PF" and populate the message and send it according to the specification. A new method, a variant of SendExportAsSoap will be created to check the response in JSON format, similar to the following template:
{ "Result": true, "UniqueReference": " 70A0C90A-E81E-472C-8904-CC57BC6097C9", “Message”:”Result of call” }
In this case, the Result property being true defines that that message has been successfully received. If false, the Message property holds the detail of the error.
The new method will convert the JSON response into an appropriate XML response and return that value, so that the calling functions do not need to change. Specifically, this requires that the returned XML contains the text "SUCCESS" if successful.
Each message action will populate the message differently, as shown below.
DONR - En Route message
Name | Type | Required | Notes/Mapping |
---|---|---|---|
Access Key | String | Yes | Unique security key provided by Palletforce to allow access to the API - as per EPOD_XF_CONFIG |
Message | String | No | Details of the error in the result of a failed call - NOT USED |
UniqueTransactionNumber | String | No | 3rd parties own unique transaction number - generated from EPL_PF_DEPOT |
TrackingCode | String | Yes | Consignment tracking code - EPL_PF_TRACKING |
Latitude | Decimal | No | GPS Latitude co-ordinates - EPL_LONG |
Longitude | Decimal | No | GPS Longitude co-ordinates - EPL_LAT |
DropOrder | Integer | No | Order of the delivery or collection within the route (e.g Drop 1 of 3) - EPL_SEQUENCE |
DropOrderTotal | Integer | No | Total number of collections or deliveries in the Route (e.g 3 drops expected in total) - max of EPL_SEQUENCE excluding EPL_LOADING_TYPE "U" |
AddressType | String | Yes | C for commercial address, R for residential address, U for unknown - "U" |
EventDateTime | String | Yes | Date and Time when the tracking event took place. Format dd-MM-yyyyTHHmmssZ - EPL_START_ACTUAL_DATE/TIME |
ConsigneeName | String | NOT INCLUDED IN THIS MESSAGE | |
Notes | String | No | NOT INCLUDED IN THIS MESSAGE |
Pallets | Collection of Pallet objects | ||
> PalletNumber | String | Yes | The number of the pallet within the consignment - EPL_CONTAINER_ID |
> EventCode | String | Yes | "DONR" |
SignatureImage | Byte array | NOT INCLUDED IN THIS MESSAGE |
ARDL - Arrived at Location
Name | Type | Required | Notes/Mapping |
---|---|---|---|
Access Key | String | Yes | Unique security key provided by Palletforce to allow access to the API - as per EPOD_XF_CONFIG |
Message | String | No | Details of the error in the result of a failed call - NOT USED |
UniqueTransactionNumber | String | No | 3rd parties own unique transaction number - generated from EPL_PF_DEPOT |
TrackingCode | String | Yes | Consignment tracking code - EPL_PF_TRACKING |
Latitude | Decimal | No | GPS Latitude co-ordinates - EPL_LONG |
Longitude | Decimal | No | GPS Longitude co-ordinates - EPL_LAT |
DropOrder | Integer | No | Order of the delivery or collection within the route (e.g Drop 1 of 3) - EPL_SEQUENCE |
DropOrderTotal | Integer | No | Total number of collections or deliveries in the Route (e.g 3 drops expected in total) - max of EPL_SEQUENCE excluding EPL_LOADING_TYPE "U" |
AddressType | String | Yes | C for commercial address, R for residential address, U for unknown - "U" |
EventDateTime | String | Yes | Date and Time when the tracking event took place. Format dd-MM-yyyyTHHmmssZ - EPL_ARRIVAL_DATE/TIME |
ConsigneeName | String | NOT INCLUDED IN THIS MESSAGE | |
Notes | String | No | NOT INCLUDED IN THIS MESSAGE |
Pallets | Collection of Pallet objects | ||
> PalletNumber | String | Yes | The number of the pallet within the consignment - EPL_CONTAINER_ID |
> EventCode | String | Yes | "ARDL" |
SignatureImage | Byte array | NOT INCLUDED IN THIS MESSAGE |
POD - confirmed delivered in some way
In general, populated as follows:
Name | Type | Required | Notes/Mapping |
---|---|---|---|
Access Key | String | Yes | Unique security key provided by Palletforce to allow access to the API - as per EPOD_XF_CONFIG |
UniqueTransactionNumber | String | No | 3rd parties own unique transaction number - generated from EPL_PF_DEPOT |
Message | String | No | Details of the error in the result of a failed call - NOT USED |
TrackingCode | String | Yes | Consignment tracking code - EPL_PF_TRACKING |
Latitude | Decimal | No | GPS Latitude co-ordinates - EPL_LONG |
Longitude | Decimal | No | GPS Longitude co-ordinates - EPL_LAT |
DropOrder | Integer | No | Order of the delivery or collection within the route (e.g Drop 1 of 3) - EPL_SEQUENCE |
DropOrderTotal | Integer | No | Total number of collections or deliveries in the Route (e.g 3 drops expected in total) - max of EPL_SEQUENCE excluding EPL_LOADING_TYPE "U" |
AddressType | String | Yes | C for commercial address, R for residential address, U for unknown - "U" |
EventDateTime | String | Yes | Date and Time when the tracking event took place. Format dd-MM-yyyyTHHmmssZ |
ConsigneeName | String | EPL_SIGNATORY | |
Notes | String | No | Dependent on pallet status - see below |
Pallets | Collection of Pallet objects | ||
> PalletNumber | String | Yes | The number of the pallet within the consignment - EPL_CONTAINER_ID |
> EventCode | String | Yes | Dependent on pallet status - see below |
SignatureImage | Byte array | Base64 encoded signature image. |
Event code is one of the following:
Code | Name | Notes/Mapping |
---|---|---|
POD | POD Received | Job is a delivery, container status is "C" - complete with no notes or reason code. |
PODE | POD Received with Exception | Job is a delivery, container status is "C" - complete by also contains notes and/or a reason code (i.e. claused) |
DMGD | Delivered Damaged | Job is a delivery, container status is "X" - cancelled with reason code. |
POC | POC Received | Job is a collection. |
Where the pallet has a reason code or notes, the descriptions and notes must concatenated together and placed in the Notes property.
ABRT - aborted
Name | Type | Required | Notes/Mapping |
---|---|---|---|
Access Key | String | Yes | Unique security key provided by Palletforce to allow access to the API - as per EPOD_XF_CONFIG |
UniqueTransactionNumber | String | No | 3rd parties own unique transaction number - generated from EPL_PF_DEPOT |
Message | String | No | Details of the error in the result of a failed call - NOT USED |
TrackingCode | String | Yes | Consignment tracking code - EPL_PF_TRACKING |
Latitude | Decimal | No | GPS Latitude co-ordinates - EPL_LONG |
Longitude | Decimal | No | GPS Longitude co-ordinates - EPL_LAT |
DropOrder | Integer | No | Order of the delivery or collection within the route (e.g Drop 1 of 3) - EPL_SEQUENCE |
DropOrderTotal | Integer | No | Total number of collections or deliveries in the Route (e.g 3 drops expected in total) - max of EPL_SEQUENCE excluding EPL_LOADING_TYPE "U" |
AddressType | String | Yes | C for commercial address, R for residential address, U for unknown - "U" |
EventDateTime | String | Yes | Date and Time when the tracking event took place. Format dd-MM-yyyyTHHmmssZ - EPL_END_ACTUAL_DATE/TIME |
ConsigneeName | String | NOT INCLUDED IN THIS MESSAGE | |
Notes | String | No | Job reason code description. |
Pallets | Collection of Pallet objects. | ||
> PalletNumber | String | Yes | The number of the pallet within the consignment - EPL_CONTAINER_ID |
> EventCode | String | Yes | "ABRT" |
SignatureImage | Byte array | NOT INCLUDED IN THIS MESSAGE |
TEST PLAN
Test Script / Scenario Reference | New Palletforce Interface | Call Number(s): 377534 |
Test Script / Scenario Description | Testing the new Palletforce Alliance Interface | PASS / ISSUES / FAIL |
Menu Access | N/A | |
Pre-requisites | None | Tested By: |
Test Objective | Testing:
| Date: |
Step | Action | Result | Remarks | P/F |
1 | New Palletforce Interface Tests | |||
Ensure that the XF Config is connected to the Palletforce Alliance test system.
Ensure that the site and job group are configured for this XF Config. Ensure that jobs exist that match a job within the Palletforce Alliance test system. Ensure that these jobs are for the correct job group, assigned to a load and assigned to the vehicle and/or user you are using. Ensure that some of these jobs have multiple pallets. |
||||
1.01 | Start and accept the load. Start the job. | A DONR message is sent, populated correctly. | ||
1.02 | Arrive the job. | An ARDL message is sent, populated correctly. | ||
1.03 | Complete the job with all pallets correctly delivered. | A POD message is sent, populated correctly. | ||
1.04 | Start and arrive another job. Cancel one pallet and deliver the rest. | A DONR and ARDL message is sent as before. A PODE message is sent, populated correctly. | ||
1.05 | Cancel a job, before starting it. | A DMGD message is sent, populated correctly. | ||
1.06 | Start and arrive a job, then cancel it. | A DONR and ARDL message is sent as before. A DMGD message is sent, populated correctly. |
Step | Action | Result | Remarks | P/F |
2 | Regression Tests | |||
Ensure that jobs exist for other pallet network exports and standard exports, specifically:
|
||||
2.01 | For each configured export, complete jobs. | Updates are created and sent correctly. |
APPENDIX A: QUOTE & DOCUMENT HISTORY
Cost Details | ||||
Activity | Estimate No. of Days |
No. of Days | Rate per Day (£) | Cost (£ Exc. VAT) |
Requirements | 0.00 | 0.00 | 850 | £0.00 |
Change Request Evaluation | 2.00 | 2.00 | 850 | £1,700.00 |
Functional Specification | 1.50 | 1.50 | 850 | £1,275.00 |
Technical Specification | 0.00 | 0.00 | 850 | £0.00 |
Development | 6.00 | 6.00 | 850 | £5,100.00 |
Testing and Release | 3.00 | 3.00 | 850 | £2,550.00 |
Implementation | 3.00 | 3.00 | 850 | £2,550.00 |
Project Management | 3.00 | 3.00 | 850 | £2,550.00 |
Discount 10% | ||||
TOTAL | 18.50 | 18.50 | £14,152.50 |
Estimate excludes training, release to live and go live support. |
References
Ref No | Document Title & ID | Version | Date |
1 | EST 377534 PART EPOD New Palletforce Interface | 1.0 | 14/09/2020 |
2 | Alliance API specification v1.1.1.pdf | 1.1.1 | 15/01/2020 |
Glossary
Term or Acronym | Meaning |
---|---|
General Definitions | |
EPOD | Electronic Proof of Delivery. The OBSL EPOD system is CALIDUS ePOD. This also comprises the basis of the Service Completion system CALIDUS eServ. |
Server | The portion of the CALIDUS ePOD/eServ systems that controls all the data and sends information to and receives updates from the mobile device. |
Mobile Device; PDA | The device used by the driver to perform the jobs. Typically an Android mobile device or tablet. |
Site | The site usually defines the depot, business or the transport group (carrier). It can be set to any value required by the customer. All transactions data (for example, loads and jobs) and standing data (for example, vehicles and uses) belong to a site. An EPOD user, on a device or in the Admin screen, can only see data for one site at a time. |
Load | A single journey for the driver with a set of work attached. A load is identified by a unique load ID. This may also be referred to as a worklist or workload. |
Job | Also Consignment. A single task for the driver as a specific location. This could be the collection of goods or the delivery of goods. Jobs may also be Services (for example, servicing, installing or de-installing a boiler). A job is identified by a unique job ID but can also have other references held against the job (e.g. job code, SO number, customer reference and external reference). |
Job Group | Jobs must be tagged with a Job Group. All jobs tagged with a single job group are processed in the same way. The job group has configuration associated to it to control such items as: POD/POC Report settings; Pre-Job actions (such as signing at a gatehouse); Post-Job actions (such as who signs for the item, are photos required); configurable fields required for entry for the jobs; Terms and Conditions displayed and; driver/user process (such as photos required for cancellation, comments/notes allowed). The job group can be used for any or all Sites, and the configuration against the job group can be different in each site. Job Groups can also be restricted from Admin and Remote users, so that certain users only see jobs for certain groups. |
Container | A generic term for any object that contains the items being collected or delivered. Examples of containers are: Pallet; Package; Carton; Item; Cage. A special container "Loose Products" - see Product below. A container is identified by a container ID which is unique to this physical container. |
Product | A product is any goods that are being collected or delivered where the product has a 'Product Code' which identifies what the product is but which does not uniquely identify each individual item. A product will also have a quantity associated with it to indicate how many items of this 'Product Code' are being collected or delivered. Products can either be processed within a 'Container' or as 'Loose Products' without a 'Container'. |
Owner | The owner of the order that created the job. Typically this is the sales team that took the order and will be responsible for dealing with queries from the customer regarding the status. |
Operator; Executor | The Site (depot or carrier) that is executing the load or loads that are involved in the delivery of the items. |
Item Related Definitions | |
Job Code | A reference associated with a job or job(s). This reference is common to connected jobs, for example this would be the same on both the collection of goods and the associated delivery of the same goods. Typically this would be the transport unique reference. |
SO Number | A reference associated with a job which indicates the "Sales Order Number" this job is associated with. |
Customer Reference | A reference associated with a job which has been provided by and will be recognised by the customer. |
External Reference | A reference associated with a job which does not match any of the existing references, usually because it has been provided by an external system. |
Pallet | An alternative for 'Container'. The term pallet is used when the operation only uses portable platforms as the container for goods. |
Package | An alternative for 'Container'. The term package is used when the operation only uses boxes or wrapping as containers for goods. |
Package Code | A code representing the type of 'Container'. |
Package Desc | A description of the type of 'Container'. |
Product Code | A code which identifies what a product is. |
Item | A generic term for any individual item that can be collected or delivered. An item can represent a 'Container' or a 'Product'. This can also be used as an alternative for 'Container' when the operation only treats the goods as individual items, i.e. not as identifiable products. |
Service Item | An item which will be serviced by a service job. See action 'Service'. |
Issue Life | The time after which an item is no longer fit for purpose. |
Pack Size; Case Quantity | A product may consist of a full quantity of items, inside a pack. The Pack Size (or Case Quantity) defines the amount of this product contained in a single pack. For example, if there are 85 items to deliver, with a pack size of 24, the number of full packs is determined to be 3 (24 * 3, or 72), with the remaining (13) being 'loose' quantity. This is displayed as "3/13" on the mobile application. |
UOM; Item Type | Unit of Measure; The major (case) UOM. This can optionally be displayed on the mobile device when changing product quantities. |
Product Type | A classification of the product being delivered. For example, a company may deliver 7 different mortar products and 80 different concrete slab products. The Product Types may be set to "MORTAR" and "SLABS". This may be used to attach additional configuration, changing the data required when collecting or delivering these product types. |
Status Definitions | |
Status | An indicator of how far through the processing a 'Job', 'Container' or 'Product' has progressed. |
Pending | A status indicating that the processing has not yet started, but is required to be completed. |
In Progress | A status indicating that processing has started but not yet finished. |
Complete | A status indicating that the 'Job', 'Container' or 'Product' has been collected or delivered. |
Complete (Amended) | A status indicating that the 'Job', 'Container' or 'Product' has been collected or delivered but that some changes or amendments have been made. This means that not everything that was planned to be collected or delivered was collected or delivered, some items may have been cancelled or some products may only have had some of the planned quantities collected or delivered. |
Complete (Claused) | A status indicating that the processing has been finished but that a 'Clause' condition has been recorded for this item. |
Claused | See 'Complete (Claused)' and action 'Clause'. |
Cancelled | A status indicating that the processing of this item or job is no longer required. |
Cancelled at Collection | A status indicating that the delivery of a container or product is no longer required because the associated collection of this container or product was cancelled. |
Submitted | An optional status that applies only to a 'Job' and which occurs after the 'Job' has been completed. This indicates that any time and expenses information recorded for the 'Job' has been submitted back to the server and can no longer be altered. |
Action Definitions | |
Start | An action associated with a 'Job' meaning the driver is about to start the processing of this job or jobs. This action will mark the job(s) with a status of 'In Progress'. |
Arrive | A conditional action associated with a 'Job' meaning the driver has arrived at the location the goods should be collected from or delivered to. |
Continue | An action associated with a 'Job' meaning the driver has previously performed the 'Start' and/or 'Arrive' action and has exited the processing screen but is now going to continue the processing. |
Collect | An action associated with a specific 'Container' or a 'Product' meaning the driver has collected the 'Container' or 'Product'. This action will mark the 'Container' or 'Product' with a status of 'Complete' or 'Complete (Amended)'. |
Collect Claused | An action associated with a specific 'Container' or a 'Product' meaning the driver has collected the 'Container' or 'Product' but with a condition under which the collection was accepted. This action will accept the clause condition and then mark the 'Container' or 'Product' with a status of 'Complete (Claused)'. |
Deliver | An action associated with a specific 'Container' or a 'Product' meaning the driver has delivered the 'Container' or 'Product'. This action will mark the 'Container' or 'Product' with a status of 'Complete' or 'Complete (Amended)'. |
Deliver Claused | An action associated with a specific 'Container' or a 'Product' meaning the driver has delivered the 'Container' or 'Product' but with a condition under which the delivery was accepted. This action will accept the clause condition and then mark the 'Container' or 'Product' with a status of 'Complete (Claused)'. |
Clause | An action associated with a specific 'Container' or a 'Product' that has already been collected or delivered meaning the collection or delivery has been accepted with a condition. This action will accept the clause condition and then mark the 'Container' or 'Product' with a status of 'Complete (Claused)'. |
Cancel | An action associated with a 'Job', 'Container' or 'Product' meaning the collection or delivery will not be performed for this 'Job', 'Container' or 'Product'. |
Submit | An optional action which can conditionally be carried out after a 'Job' has been collection or delivered meaning that any/all required expense or time recording for this 'Job' has been completed and can be submitted back to the server. |
Service | A service of a service item or items. Typically, Installation, Deinstallation or Service. The process of a service usually encompasses Pre- and Port-work checks, information gathering and diagnosis and resolution notes. Additional references (MC Refs) may also be captured. |
Actioned | A general term describing completing a job. So, 'Actioned' may be used instead of 'Collected', 'Serviced', 'Delivered'. |
Consolidate | The action of taking several jobs and linking them together, so they are actioned at the same time with one start, arrive and signature. |
Deconsolidate | The action of taking a consolidation of jobs and breaking them down into the component jobs again. |
Job Swap | The action of selecting an existing load not assigned to the user, and picking jobs to transfer onto the user's load. |
Signature Capture | Usually the final action of a job, where the customer's name and signature are entered. |
Other Definitions | |
Reason Code | A code which represents the reason that a job was cancelled or an item was cancelled or claused. |
Vehicle | The vehicle used for transporting the goods. |
Vehicle Checks | Also Defect Checks. A series of questions representing the results of checks intended to ensure the vehicle is in an acceptable condition. |
Metrics Entry | A series of questions to capture information either at the start or end of a 'Load'. |
Driver | The person performing the collections or deliveries; the user of the device/application. |
Engineer | The person performing the services; the user of the device/application. |
Customer | The person/company the goods are being collected from or delivered to. |
Signatory | The name of the person providing a signature. |
T&Cs | Terms and Conditions. The T&Cs are shown when signatures are prompted for. The text of the T&Cs are defined in the system itself. |
Transfer Load | A load select from which to swap jobs to the user's load. |
Base | E.g. 'Return to Base'. Typically the depot from which the driver departed. |
Unplanned Ad Hoc Collection | A collection job that is created by the driver, usually after delivering to a customer. |
Ad Hoc Container Entry/Scanning | The process of adding containers (items) to a job that have not been pre-advised on the job. |
Completion Report | POD, POC, Service/Work Report. |
Load Assignment | The action of assigning a vehicle and/or a driver to a load. |
Job Assignment | The action of putting jobs onto a load. |
Collection/Delivery Windows; Access Windows | Periods of time between which it is acceptable to deliver or collect from that customer. This has limited use in the system, mostly for reporting purposes. |
Location/Map Terms | |
Lat-Longs; GPS Co-ordinates, GPS Position | Latitude and Longitude co-ordinates, specified together as a single entity, identifying the exact position of a location. There are multiple formats - CALIDUS ePOD uses decimal notation, for example "53.3490818,-2.8521498" identifies the OBS Logistics office building in Liverpool. |
GPS | Global Positioning System; the satellite system used to obtain a GPS position, for use with navigation and location positioning. |
Geocode; Reverse Geocode | Geocoding is the process of obtaining lat-longs from an address. Reverse Geocoding is the process obtaining an address from lat-longs. |
Geofence; Geofence Break | A Geofence is a perimeter around a location. A Geofence Break occurs when a device passes through this perimeter on entry or exit from the location. |
Authorised By
Murray Middleton | OBS Project Manager | _____________________________ |
John Davidson | Partnerlink Director | _____________________________ |