Article Type: Concept
Audience: Solution Architects, Application Designers, Developers, Partners
Module: Logistics / Materials Management
Applies to Versions: Fuuz Platform 2024.1+
The Integrated Carrier Package Ecosystem is a modular solution for multi-carrier shipping automation within the Fuuz Industrial Operations Platform. This package suite provides a unified abstraction layer enabling organizations to integrate with multiple shipping carriers such as FedEx and UPS while maintaining consistent data structures, workflows, and user interfaces across all carrier implementations.
The ecosystem consists of six interconnected packages that together deliver a comprehensive shipping management solution:
| Package | Version | Purpose |
|---|---|---|
integrated-carrier-core-schema |
0.0.1 | Core data models for carrier integration (9 models) |
integrated-carrier-core-flows |
0.0.1 | Orchestration flows for routing and label printing |
integrated-carrier-core-screens |
0.0.1 | Administrative UI screens (20 screens with routes) |
integrated-carrier-fedex |
0.0.2 | FedEx carrier implementation with services and flows |
integrated-carrier-ups |
0.0.2 | UPS carrier implementation with services and flows |
integrated-carrier-addon-plex |
0.0.1 | Plex ERP system integration addon |
The Integrated Carrier ecosystem follows a layered architecture pattern:
┌─────────────────────────────────────────────────────────────────────┐
│ ADDON LAYER │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ integrated-carrier-addon-plex │ │
│ │ • Plex ERP Integration • Load Plex Integrated Shipper Flow │ │
│ └──────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────┤
│ CARRIER IMPLEMENTATION LAYER │
│ ┌────────────────────────┐ ┌────────────────────────┐ │
│ │ integrated-carrier- │ │ integrated-carrier- │ │
│ │ fedex │ │ ups │ │
│ │ • FedEx Services │ │ • UPS Services │ │
│ │ • FedEx Billing Types │ │ • UPS Billing Types │ │
│ │ • Create/Void Flows │ │ • Create/Void Flows │ │
│ └────────────────────────┘ └────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────┤
│ CORE LAYER │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ core-schema │ │ core-flows │ │ core-screens │ │
│ │ • 9 Data Models │ │ • Router Flow │ │ • 20 Admin Screens │ │
│ │ • Request Types │ │ • Print Labels │ │ • Table & Form UIs │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
The core schema package defines nine reference data models in the logistics/materialsManagement module:
| Data Model | Label Field | Key Fields | Relationships |
|---|---|---|---|
| IntegratedCarrier | name | id, name, description | services, accounts, billingTypes, requestFlows, connectionConfigurations, shipments |
| IntegratedCarrierService | name | id, name, code, description | integratedCarrier, shipments |
| IntegratedCarrierAccount | name | id, name, accountNumber, meterNumber, address, phoneNumber | integratedCarrier, integratedCarrierBillingType, shipments |
| IntegratedCarrierBillingType | name | id, name, code, description | integratedCarrier, accounts |
| IntegratedCarrierConnectionConfiguration | name | id, name, productionConnectionId, sandboxConnectionId, shipperIntegratedCarrierAccountId | integratedCarrier, productionConnection, sandboxConnection, shipperIntegratedCarrierAccount |
| IntegratedCarrierRequestType | label | id, label, description | flows, requests |
| IntegratedCarrierRequestFlow | — | id, integratedCarrierRequestTypeId, dataFlowId | integratedCarrierRequestType, integratedCarrier, dataFlow |
| IntegratedCarrierShipment | number | id, number, shipTo, shipToAddress, shipFrom, shipFromAddress, packageDefinitions, trackingNumber, packageLabels, totalCharges | integratedCarrier, integratedCarrierService, integratedCarrierBillToAccount, integratedCarrierConnectionConfiguration |
| IntegratedCarrierRequest | — | id, sandbox, error, request, rawRequest, response, errors, rawResponse | connection, integratedCarrierRequestType, integratedCarrierShipment |
The core schema package pre-populates five standard request types:
| Request Type ID | Label | Description |
|---|---|---|
createShipment |
Create Shipment | Sends a shipment to a carrier and retrieves tracking number and labels |
voidShipment |
Void Shipment | Cancels an existing shipment with the carrier |
rateShipment |
Rate Shipment | Retrieves shipping rates for a proposed shipment |
validateAddress |
Validate Address | Validates the ship-to address with the carrier |
printLabels |
Print Labels | Prints labels returned by a carrier to configured devices |
The core-flows package provides two orchestration flows:
1. Integrated Carrier Router (integratedCarrierRouter) - 20 nodes
The central orchestration flow that routes carrier requests to the appropriate carrier-specific implementation based on request type. It performs validation, executes the mapped carrier flow via $executeFlow(), creates IntegratedCarrierRequest audit records, and updates shipment tracking/label data on success.
2. Integrated Carrier Print Labels Standard (integratedCarrierPrintLabelsStandard) - 12 nodes
Handles label printing by detecting label format (ZPL/ZPLII vs PDF) and routing to the appropriate print device. Uses devicePrintRaw for ZPL thermal labels and devicePrintDocument for PDF labels.
Configure multiple carriers (FedEx, UPS, or custom implementations) with production and sandbox environments. The unified abstraction layer allows your application to work with any carrier using consistent data structures and API patterns, reducing development effort and enabling carrier switching without code changes.
Query multiple carriers simultaneously for shipping rates before shipment creation. Compare costs across FedEx Ground, UPS Ground, and premium services to select the optimal carrier/service combination based on cost, delivery time, or other business rules.
Create shipments with carriers, receive tracking numbers and labels, then print labels to thermal (ZPL) or standard (PDF) printers. The Print Labels Standard flow automatically detects label format and routes to the appropriate device gateway for seamless integration with existing print infrastructure.
Validate ship-to addresses with carriers before shipment creation to prevent delivery failures and additional charges. Integrate address validation into order entry workflows to catch errors early in the process.
Store tracking numbers, package labels, and charges on shipment records. The IntegratedCarrierRequest model provides a complete audit trail of all carrier API interactions, including raw request/response data for troubleshooting and compliance.
Expose carrier operations as MCP (Model Context Protocol) tools for AI agents and LLMs on the Fuuz platform. Enable natural language shipping automation where users can say "Ship this order via FedEx Ground" and have the system execute the complete workflow automatically.
Connect Plex manufacturing system to carrier services using the addon-plex package. The "Load Plex Integrated Shipper" flow queries Plex data and creates corresponding IntegratedCarrierShipment records, enabling seamless shipping automation for Plex-managed orders.
The core-screens package provides 20 administrative screens organized as table/form pairs for each data model:
/materialsManagement/logistics/integratedCarriers
| Route Path | Screen Type | Purpose |
|---|---|---|
/materialsManagement/logistics/integratedCarriers |
Table | List all configured carriers |
/materialsManagement/logistics/integratedCarriers/:id |
Form | View/edit carrier details |
/materialsManagement/logistics/integratedCarrierServices |
Table | List carrier services |
/materialsManagement/logistics/integratedCarrierAccounts |
Table | List carrier accounts |
/materialsManagement/logistics/integratedCarrierBillingTypes |
Table | List billing types per carrier |
/materialsManagement/logistics/integratedCarrierConnectionConfigurations |
Table | Manage API connections |
/materialsManagement/logistics/integratedCarrierRequestTypes |
Table | View request types |
/materialsManagement/logistics/integratedCarrierRequestFlows |
Table | Manage request-to-flow mappings |
/materialsManagement/logistics/integratedCarrierShipments |
Table | List shipments |
/materialsManagement/logistics/integratedCarrierRequests |
Table | View API request audit log |
FedEx Package (integrated-carrier-fedex v0.0.2)
| Component | Details |
|---|---|
| Carrier ID | fedex |
| Services | FedEx Ground (FEDEX_GROUND), Standard Overnight (STANDARD_OVERNIGHT), Second Day (FEDEX_2_DAY) |
| Billing Types | Shipper (SENDER), Third Party (THIRD_PARTY), Receiver (RECIPIENT) |
| Data Flows | fedExCreateShipment, fedExVoidShipment |
UPS Package (integrated-carrier-ups v0.0.2)
| Component | Details |
|---|---|
| Carrier ID | ups |
| Services | Next Day Air (01), Second Day Air (02), Ground (03) |
| Billing Types | Shipper (BillShipper), Receiver (BillReceiver), Third Party (BillThirdParty) |
| Data Flows | upsCreateShipment, upsVoidShipment |
Query Carriers with Services:
query {
integratedCarriers {
id
name
description
services {
id
name
code
}
billingTypes {
id
name
code
}
}
}Create a Shipment Record:
mutation($payload: [IntegratedCarrierShipmentCreatePayloadInput!]!) {
createIntegratedCarrierShipment(payload: $payload) {
id
number
trackingNumber
}
}The Integrated Carrier Router is invoked with a request payload containing the shipment and request type:
{
"integratedCarrierRequestTypeId": "createShipment",
"shipment": {
"id": "shipment-id-here",
"integratedCarrierId": "fedex",
"integratedCarrierServiceId": "fedex-ground-service-id",
"integratedCarrierBillToAccountId": "fedex-shipper-account-id",
"integratedCarrierConnectionConfigurationId": "fedex-config-id",
"shipTo": { ... },
"shipFrom": { ... },
"packageDefinitions": [ ... ]
}
}Organizations implementing this package ecosystem can expect:
| Issue | Cause | Resolution |
|---|---|---|
| "No request flow found for carrier" | IntegratedCarrierRequestFlow not configured for the carrier/request type combination | Verify carrier package is installed and request flow record exists linking the carrier, request type, and data flow |
| "No ship to information provided" | Shipment missing required shipTo address data | Populate shipTo or shipToAddress field on the IntegratedCarrierShipment record |
| "No bill to account found" | Shipment missing billing account reference | Set integratedCarrierBillToAccountId on the shipment |
| Labels not printing | Device gateway not configured or device IDs incorrect | Verify device gateway configuration and ensure correct device IDs are set in the Print Labels Standard flow |
| Carrier API authentication failure | Connection credentials expired or incorrect | Update credentials in the Connection record referenced by IntegratedCarrierConnectionConfiguration |
| Sandbox vs Production confusion | Using wrong connection configuration | Check IntegratedCarrierRequest.sandbox flag; ensure sandboxConnectionId is set for testing |
| Version | Date | Editor | Description |
|---|---|---|---|
| 1.0 | 2025-01-24 | Fuuz Documentation Team | Initial release documenting Integrated Carrier Package Ecosystem v0.0.1/v0.0.2 |