James and James (ControlPort) adapter - process maps
How every flow in the LataSys 3PL Connector runs when the James and
James (ControlPort) adapter is installed. Transport: REST/JSON Client
API v2 over HTTPS. Auth: Authorization: Bearer <encoded token> (API
key generated in ControlPort Settings, encoded per their recipe).
Warehouses, products, carriers, batches, orders and ASNs are keyed by
ControlPort's integer ids.
Shared behaviour for every flow below:
- Triggers - the scheduler (per-instance cadences on the
Synchronisation tab), the Run-an-Operation wizard, per-record
buttons, or the inbound webhook.
- Logging - every run writes a Sync Log entry: full request and
response (URL, headers with credentials redacted, body), every Odoo
action taken, and every record touched. Errors are retryable from
the log entry.
- Watermarks - each flow stamps its last-run time on the instance;
the scheduler only fires when the cadence has elapsed.
- License - flows pause if the licensing service reports the
installation suspended for non-payment.
1. Connection test
|
|
| Trigger |
Test Connection button (instance form) |
| Calls |
Warehouse List (also surfaces the warehouse ids to map) |
| Outcome |
Draft instance moves to Connected; failure logged with the full HTTP exchange |
2. Order push

|
|
| Trigger |
Cron (order cadence), wizard, auto-send on confirmation |
| Direction |
Odoo -> ControlPort |
| Data sent |
Recipient and billing contacts (name, phone, address, country name, postcode); ControlPort product ids with quantities and prices; postage speed / preferred carrier from the mappings; tracked / signed-for flags; hold flag; callback URL when enabled |
| Odoo records |
3PL Order binding (pending -> sent) |
| Failure |
Retryable Sync Log error; nothing partially written |
3. Status poll and despatch write-back

4. Order amendment, hold and cancellation
|
|
| Amend |
Order Update (PATCH) rebuilt from the current Odoo state - items/billing/warehouse editable until picking, address/speed/flags until labelled; later attempts are rejected by ControlPort and logged |
| Hold / Release |
Order Update with the hold boolean (editable until picking) |
| Cancel |
Order Cancel - pending orders are deleted, processing orders return to stock, labelled orders can no longer be cancelled |
5. Inventory sync

6. Product match and push
|
|
| Match |
Fetch the ControlPort product master (id, SKU, name, barcode); match Odoo products by SKU, then barcode; create bindings |
| Push |
Product Create with the required customs trio: harmonised code (8-10 digits from the HS Code, placeholder when unset), customs description (product name, 40 chars) and alpha-3 country of origin |
| Update |
Product Update (PATCH by ControlPort product id) when the SKU already exists |
7. Suppliers
|
|
| Push |
Supplier Create (name + full contact); updates PATCH the bound supplier in place |
| Why |
ControlPort expects a supplier on ASNs - push vendors before announcing their deliveries |
8. ASNs / GRNs

9. Returns

Tracked return labels are a separate ControlPort feature (per-account,
enabled by their customer service) and are not produced by this flow.
10. Carrier and status setup
|
|
| Fetch Warehouses |
Warehouse List -> numeric ids for the warehouse mappings |
| Fetch Carriers |
Services List per warehouse -> carrier ids (preferred_carrier_id) with nested services |
| Requested methods |
Postage speeds 0-3 plus carriers, for the requested-method mapping |
| Status defaults |
Load Missing Defaults seeds ControlPort's status vocabulary with canonical meanings |
11. Callbacks (inbound)
|
|
| Endpoint |
Per-instance URL with a cryptographically random secret token |
| Registration |
None at ControlPort - paste the URL into their portal settings (account-wide) and/or enable Send Callback URLs (per order/ASN) |
| On event |
Payload logged; a targeted status / GRN check runs for the referenced record - polling remains the safety net |
James and James, James and James Fulfilment and ControlPort are
trademarks of their respective owner; the names are used solely to
identify the service this module interoperates with.
Related Articles
James and James (ControlPort) adapter - setup and reference
Everything you need to connect the LataSys 3PL Connector to James and James Fulfilment via the ControlPort Client API v2: prerequisites, connection setup, mappings, capabilities and provider-specific behaviour. What this adapter provides Flow ...
ShipHero adapter - process maps
How every flow in the LataSys 3PL Connector runs when the ShipHero adapter is installed. Transport: GraphQL over HTTPS. Auth: Bearer JWT with refresh - enter the developer-user email/password (the adapter obtains and refreshes tokens itself) or paste ...
MintSoft adapter - process maps
How every flow in the LataSys 3PL Connector runs when the MintSoft adapter is installed. Transport: REST v1 over HTTPS. Auth: the MintSoft username/password are exchanged for a 24-hour API key (POST /api/Auth), cached ~23h and sent as the ms-apikey ...
ShipBob adapter - process maps
How every flow in the LataSys 3PL Connector runs when the ShipBob adapter is installed. Transport: ShipBob Developer API 2026-07 (REST/JSON) over HTTPS - api.shipbob.com, or sandbox-api.shipbob.com on sandbox instances. Auth: Personal Access Token as ...
Huboo adapter - process maps
How every flow in the LataSys 3PL Connector runs when the Huboo adapter is installed. Transport: Huboo public REST API v2 over HTTPS (https://api.huboo.uk/v2; a sandbox base URL, if issued during Huboo onboarding, goes in the instance's Base URL ...