Digital Item Mapping Hub (DIMH) Integration#
π This is a strategic integration option available for select partners. Contact SRS API Support Team for access.In a nutshell: DIMH eliminates the need to map your product catalog to SRS product IDs manually. Submit orders using your own product names and units of measureβDIMH automatically maps them to the correct SRS items before processing.β
Automatically maps your product names to SRS catalog items
β
Eliminates manual product ID lookups for every order
β
Supports custom units of measure with automatic conversion
β
Reduces line review workload with branch-specific mappings
Before you start: Complete Steps 1-4 to get your access token and validated customer account.
π How DIMH Works#
DIMH is a preprocessing wrapper that sits between your system and the standard Submit Order v2 endpoint. Here's the complete flow in 4 steps:DIMH is a Wrapper: DIMH Submit Order is a preprocessing layer that maps your product names to SRS catalog items, then calls the standard Submit Order v2 endpoint. The response format is identical - you can submit synchronous or asynchronous orders just like the standard endpoint.
π‘ Common Use Cases#
DIMH is ideal for partners with existing product catalogs who want to avoid manual mapping:
ERP System Integration
Your system has its own product catalog with internal SKUs.Without DIMH: Manual lookup of SRS product IDs for every item
With DIMH: Submit orders using your SKUs, automatic mapping
Custom Product Naming
Your field teams use custom product names that differ from SRS catalog.Without DIMH: Translate product names manually before API calls
With DIMH: Use your product names directly, DIMH handles translation
Multi-Branch Operations
Different branches may have different product availability or naming conventions.Without DIMH: Manage separate product catalogs per branch
With DIMH: Branch-specific mappings handled automatically
Understanding DIMH Mapping Process#
π Automatic Mapping Flow#
1
First Request
You submit an order with customerItem and uom (do not include productName)
2
DIMH Lookup
System queries mapping database using:
customerCode (customer-specific mappings)
branchCode (branch-specific mappings)
customerItem (exact name matching - copied from customerItem field)
uom (unit of measure - prioritizes exact matches)
3
Exact UOM Match Priority
If multiple mappings exist for same product, only exact UOM matches are returned
4
Mapping Application
Mapped itemCode, productId, and final UOM are applied to line items
5
No Fallback
If no exact UOM match exists, item proceeds without mapping (not an error)
Critical Mapping Behavior: DIMH only uses mappings with exact UOM match. If your request has uom: "RL" but mapping exists only for uom: "SQ", the mapping will NOT be applied. This prevents incorrect UOM conversions.
β
Required Fields for Mapping#
Mandatory Fields
Must be provided for mapping to work:β
customerCode - Must be provided and valid
β
branchCode - Must be provided and valid
β
customerItem - Your product name (primary matching key)
β
uom - Must exactly match mapping table entry
Not Used in Mapping Lookup
These fields are ignored during mapping:β itemCode - Not used in mapping queries
β productId - Not used in mapping queries
β productOptions - Not used in matching logic
β οΈ productName - Deprecated (use customerItem instead)
Important: If customerCode or branchCode is missing, NO mappings will be retrieved (returns empty list, not an error).
Custom UOM Support: DIMH supports custom unit of measure conversions. Quantities are automatically converted and rounded up to prevent under-ordering.
DIMH Submit Order Endpoint#
Submit orders using your product catalog instead of SRS product IDs.API Call#
Endpoint: POST /orders/dimh/SubmitAuthorization: Bearer {token}
Content-Type: application/json
Request Body#
Click to expand: Full request body example below
π Click to view full request body example
{
"sourceSystem": "SERVICETITAN",
"customerCode": "SMO",
"jobAccountNumber": 78,
"branchCode": "AMDEN",
"accountNumber": "SMO",
"transactionID": "ANY-UNIQUE-STRING",
"transactionDate": "2023-05-11T10:49:34.187",
"notes": "",
"shipTo": {
"addressLine1": "1234 COUNTY LINE ROAD",
"addressLine2": "",
"addressLine3": "",
"city": "ONTARIO",
"state": "NY",
"zipCode": "14519"
},
"poDetails": {
"poNumber": "834325",
"reference": "",
"jobNumber": "",
"orderDate": "2021-04-12",
"expectedDeliveryDate": "2021-04-15",
"expectedDeliveryTime": "Anytime",
"orderType": "WHSE",
"shippingMethod": "Ground Drop"
},
"orderLineItemDetails": [
{
"customerItem": "MY PRODUCT SKU 001",
"productOptions": "2 SQ/RL",
"quantity": 5,
"uom": "RL"
},
{
"customerItem": "MY PRODUCT SKU 002",
"productOptions": "123 LF/BD",
"quantity": 1,
"uom": "BD"
}
],
"customerContactInfo": {
"customerContactName": "John Dough",
"customerContactPhone": "9876543210",
"customerContactEmail": "jdough@example.com",
"customerContactAddress": {
"addressLine1": "123 Main St",
"city": "Salt Lake City",
"state": "Utah",
"zipCode": "84121"
},
"additionalContactEmails": [
"test@example.com"
]
}
}
π Key Line Item Fields:customerItem: β
Use this field - Your internal product identifier (this is the correct field for DIMH integration)
productName: β οΈ Deprecated - Do not include (maintained for legacy compatibility only)
productOptions: Your product options/variants (not used in mapping lookup)
quantity: Quantity to order (will be converted if custom UOM mapping exists)
uom: Your unit of measure (must exactly match mapping table for mapping to work)
Standard Pattern: Always use customerItem for your product names. Do not include productName in your request. The productName field is deprecated and maintained only for legacy compatibility.
Field Processing Rules (Legacy Compatibility):- β
Standard Pattern: Fill only
customerItem, omit productName β System automatically uses customerItem for mapping - β οΈ Legacy Compatibility: If
productName is provided (deprecated pattern) β System applies concatenation rules for backward compatibility - Purpose:
customerItem is the correct field for DIMH integration. productName exists only for legacy support.
Order Processing Flow#
DIMH processes orders through 6 sequential steps:1
Process Order Line Items
Apply customerItem/productName concatenation rules to ensure proper display on order acknowledgments.
2
Resolve Branch (if BranchCode = ANY)
Finds nearest eligible branch using latitude, longitude, maxMiles. Automatically sets branchCode to nearest branch. Returns error if no branch found within radius.
3
Resolve ShipTo Address (if ShipTo = null)
Auto-fetches address using customerCode and shipToSequenceNumber. Returns error if address cannot be found.
4
Apply Digital Item Mapping
Query mapping database with customerCode + branchCode + productName + uom
Filter for exact UOM matches only
Apply mapped itemCode, productId, option, final UOM
Convert quantity if custom UOM conversion exists
5
Transform to Submit Order Request
Convert DIMH request to standard SubmitOrderRequestV2 format and preserve all mapped values.
6
Submit Order
Call standard Submit Order v2 endpoint and return response to caller.
Important: Steps 2 and 3 are optional validations. If they fail, the process returns an error immediately. Step 4 (mapping) never fails - if no mapping exists, the order proceeds with original values.
Successful Response#
{
"message": "Order Submitted",
"transactionID": "ANY-UNIQUE-STRING",
"orderID": "35818786",
"queueID": null
}
Order Processing: DIMH automatically maps your product names to SRS items before submitting the order. Response format matches standard Submit Order v2 endpoint. Mapping failures do NOT prevent order submission - items without mappings proceed with original values.
π§ͺ Additional DIMH Endpoints (Experimental)#
The following endpoints exist but are not actively used in current integrations. They are mentioned here for completeness.DIMH Pricing Endpoint
Endpoint: POST /products/v2/dimh/priceGet real-time pricing using your product names instead of SRS product IDs. Works similarly to DIMH Submit Order but returns pricing information only.Status: β οΈ Available but not widely adopted. Most partners use standard Pricing v2 endpoint with known product IDs.DIMH Items Endpoint
Endpoint: POST /orders/dimh/itemsFetch available items with mapping support.Status: π§ͺ Experimental - not documented or recommended for production use.Fetch Opt-In DIMH Customers Endpoint
Endpoint: GET /orders/dimh/customersRetrieve list of customers who have opted into DIMH service.Status: π Internal analytics endpoint - not intended for partner integrations.Focus on Submit Order: The primary DIMH integration is Submit Order DIMH. The other endpoints are experimental or for internal use. Contact SRS API Support Team if you need information about these additional endpoints.
βοΈ Advanced Features#
π‘οΈ Request Validation & Error Handling#
DIMH applies strict validation rules with specific error messages:Critical Behavior: Mapping failures are warnings, not errors. Orders proceed even if:- No mapping exists for a product
- UOM doesn't match exactly
- CustomerCode or BranchCode missing (no mappings retrieved)
- Custom UOM conversion factor is missing
These scenarios are logged but do NOT stop order submission. π Custom UOM Conversion#
DIMH supports automatic unit of measure conversion with quantity rounding.1
You submit order
uom: "BOX" and quantity: 10
2
Mapping exists
conversion_factor: 2.5 (1 BOX = 2.5 BD)
4
Check rounding
Quantity is whole number β No rounding needed
5
Order submitted
uom: "BD" and quantity: 25
Whole Numbers: No rounding applied (e.g., 10 Γ 2 = 20)
Decimals: Always rounded UP to prevent under-ordering (e.g., 10 Γ 2.3 = 23, not 22)
Quantity Rounding: All fractional quantities are rounded UP to prevent under-ordering. A request for 7 BOXES with 1.5x conversion becomes 11 SQ (not 10).
If conversion data is not configured for a custom UOM, conversion is skipped
Item proceeds with original UOM and quantity (not an error)
Contact SRS API Support Team if you encounter this scenario
Custom UOM Setup: Contact SRS API Support Team to configure custom UOM mappings and conversion factors. Provide your UOM codes and desired conversion ratios (e.g., "1 CARTON = 5 BD").
π How DIMH Handles Multiple Mappings#
When multiple mappings exist for the same product name, DIMH applies strict UOM filtering:1οΈβ£ Exact UOM Match REQUIRED
Only mappings that exactly match your requested UOM (case-insensitive)2οΈβ£ Duplicate Elimination
If multiple exact UOM matches exist, first one is selected3οΈβ£ No Fallback
If no exact UOM match exists, item proceeds without mapping4οΈβ£ Incomplete Mappings Excluded
Mappings with missing conversion data are automatically excludedNo Partial Matching: DIMH does NOT use "close enough" UOM matching. If your request has uom: "ROLL" but the mapping is configured for "RL", NO mapping is applied (exact match required).
π Automatic Branch Resolution#
DIMH supports automatic branch resolution when you don't have a specific branch preference.Request with branchCode: "ANY":{
"branchCode": "ANY",
"latitude": 40.7128,
"longitude": -74.0060,
"maxMiles": 50
}
Finds nearest eligible branch within maxMiles
Automatically sets branchCode to nearest branch
Returns error if no branches found within range
You're Ready with DIMH!#
β
Submit orders with your product catalog
β
Leverage automatic product mapping
β
Use custom UOM conversions
β
Benefit from branch-specific mappings
π― Next Steps#
Setup Webhooks
Learn how to receive real-time order status updates.
Error Handling
Learn how to handle mapping failures and edge cases.
Best Practices
Optimize your DIMH integration for production use.
β Frequently Asked Questions#
π§ Request DIMH Access#
Your client ID and source system identifier
Sample product catalog (10-20 items)
Custom UOM requirements (if any)
Response time: 2-3 business days for access approval and configuration
Ready to simplify your integration? Contact SRS API Support Team to enable DIMH for your account! π