Part Synergy LKQ Canada Custom Integration
Version | Date | Name | Applied changes |
---|---|---|---|
v1.0 | 01.07.2025 | Bogomil Pavlov | First Publish |
In order to incorporate the custom integration for each warehouse we want to build a centralized structure where we gonna add all the authorization and setup details which will connect to the relevant location. In order to achieve this we will need to have a new structure with the following details:
Part Synergy Warehouse Integration (Please note this is should be added in the menu under Custom section only for Part Synergy instance)
Field Name | Type | Require | Default | Comment |
---|---|---|---|---|
Active | checkbox | No | false | |
Name | varchar | Yes | ||
API Type | dropdown | Yes | List with all available custom API integration we have for PartSynergy warehouses | |
API URL | varchar | No | ||
API Username | varchar | No | ||
API Password | varchar | No | ||
API Access Token | varchar | No | ||
API Account | varchar | No | ||
Create Order | checkbox | No | false | |
Get Shipment | checkbox | No | false | |
Get Stock | checkbox | No | false | |
Get Price | checkbox | No | false | |
Location | dropdown | Yes | List with all MCP locations |
Integration Documentation:
LKQ Integration Service for Business Partners - Direct Order Service Implementation Guide V1.0.pdf
Production End Point - https://lkqintegration.ekeyconnect.com/Ordering.svc
https://lkqintegration.ekeyconnect.com/Ordering.svc?wsdl
The API Type for LKQ will be - “LKQ Canada”
Sandbox details:
End Point - https://lkqintegrationqc.ekeyconnect.com/Ordering.svc Verification Code - 72142e3a-c4db-4c8c-9ded-908839fbd990
Username - 194426.billsmith
Password - 4runn3r
Account - 194426
Create Order
When we are creating order via API we will have to take into consideration that we will also pick order item for export to FTP and both should work together. The trigger for order creation should be:
Part Synergy Warehouse Integration > Active
= Yes
Part Synergy Warehouse Integration > Create Order
= Yes
Product in Order > Exported =
No
Product in Order > Custom Filter
= It should match the Part Synergy Warehouse Integration > ****Location
. For example, if the custom filter value is set to 2, and we’ve selected Part Synergy warehouse integration> Location
(which also has an ID of 2), then the order should be picked.
Order > Status
= “Ready for Shipping”
In order to push and order to the warehouse we have to generate an XML request using SOAP API
Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lkq="LKQCorp.LKQIntegrationService" xmlns:lkq1="http://schemas.datacontract.org/2004/07/LKQIntegrationService.Core.Entities" xmlns:lkq2="http://schemas.datacontract.org/2004/07/LKQIntegrationService.Core.Ordering.Entities">
<soapenv:Header/>
<soapenv:Body>
<lkq:CreateOrder>
<lkq:request>
<lkq1:UserRequestInfo>
<lkq1:AccountNumber>194426</lkq1:AccountNumber>
<lkq1:BusinessTypeForAccountNumber>Aftermarket</lkq1:BusinessTypeForAccountNumber>
<lkq1:UserName>194426.billsmith</lkq1:UserName>
<lkq1:UserPassword>4runn3r</lkq1:UserPassword>
<lkq1:VerificationCode>72142e3a-c4db-4c8c-9ded-908839fbd990</lkq1:VerificationCode>
</lkq1:UserRequestInfo>
<lkq2:AMPurchaseOrderNumber/>
<lkq2:ContactName>Caleb</lkq2:ContactName>
<lkq2:CopyMethod>Email</lkq2:CopyMethod>
<lkq2:EmailAddress>test@test.com</lkq2:EmailAddress>
<lkq2:LiftgateRequired>false</lkq2:LiftgateRequired>
<lkq2:LineItems>
<lkq2:OrderLineItem>
<lkq2:PartNumber>GM1043150</lkq2:PartNumber>
<lkq2:Quantity>1</lkq2:Quantity>
<lkq2:UnitOfMeasure>EA</lkq2:UnitOfMeasure>
<lkq2:UsedPart>0</lkq2:UsedPart>
</lkq2:OrderLineItem>
</lkq2:LineItems>
<lkq2:ShipToAddress>
<lkq2:AddressLine1>3485 STEELES AVE E</lkq2:AddressLine1>
<lkq2:AddressLine2/>
<lkq2:AddressLine3/>
<lkq2:City>BRAMPTON</lkq2:City>
<lkq2:Country>CA</lkq2:Country>
<lkq2:PhoneNumber>8888888888</lkq2:PhoneNumber>
<lkq2:PostalCode>L6T</lkq2:PostalCode>
<lkq2:ShipToCode>M</lkq2:ShipToCode>
<lkq2:ShipToCodeType>Manual</lkq2:ShipToCodeType>
<lkq2:ShipToName>Test</lkq2:ShipToName>
<lkq2:StateProvince>ON</lkq2:StateProvince>
</lkq2:ShipToAddress>
</lkq:request>
</lkq:CreateOrder>
</soapenv:Body>
</soapenv:Envelope>
Request Mapping:
Please note if we have a NON required field which is not populated in MCP we want to exclude it from the payload !!!
Field | Hemi Field | Required | Comment | ||||||
---|---|---|---|---|---|---|---|---|---|
Request |
|||||||||
UserRequestInfo |
|||||||||
AccountNumber |
Part Synergy Warehouse Integration > API Account | Yes | |||||||
BusinessTypeForAccountNumber |
“Aftermarket” | Yes | Hardcoded as Aftermarket | ||||||
UserName |
Part Synergy Warehouse Integration > API Username | Yes | |||||||
UserPassword |
Part Synergy Warehouse Integration > API Password | Yes | |||||||
VerificationCode |
Part Synergy Warehouse Integration > API Access Token | Yes | |||||||
AMPurchaseOrderNumber |
Orders > Arcade Order Shipping ID | Yes | |||||||
ContactName |
Orders > Shipping Buyer Name | Yes | |||||||
CopyMethod |
“Email” | Yes | |||||||
EmailAddress |
Orders >Buyer mail | Yes | |||||||
LiftgateRequired |
“false” | Yes | |||||||
LineItemTypes |
|||||||||
LineItems |
|||||||||
OrderLineItem |
|||||||||
CustomerCost |
Product In Order > Item Price | No | |||||||
PartNumber |
Product In Order > SKU | Yes | Please note in MCP we are storing the SKU and MasterLineCode | PartNumber | |||||
1009 | 12562 |
In order to export only the part number we have to trim everything to the pipe (|) and push the rest |
| | | | Quantity
| | | Product In Order > Quantity | Yes | |
| | | | UnitOfMeasure
| | | “EA” | Yes | |
| | | | UsedPart
| | | “0” | Yes | |
| | SaturdayDelivery
| | | | | | | |
| | ShipFromWarehouse
| | | | | | | |
| | ShipToAddress
| | | | | | | |
| | | AddressLine1
| | | | Orders > Shipping Street 1 | Yes | |
| | | AddressLine2
| | | | Orders > Shipping Street 2 | No | |
| | | AddressLine3
| | | | N/A | | |
| | | City
| | | | Orders > Shipping City | Yes | |
| | | Country
| | | | Orders > Shipping Country Name | Yes | |
| | | PhoneNumber
| | | | Orders > Shipping Phone | Yes | |
| | | PostalCode
| | | | Orders > Shipping Postal Code | Yes | |
| | | ShipToCode
| | | | “M” | Yes | |
| | | ShipToCodeType
| | | | “Manual” | Yes | |
| | | ShipToName
| | | | Orders > Shipping Buyer Name | Yes | |
| | | StateProvince
| | | | Orders > Shipping State Province | Yes | |
| | SpecialInstructions
| | | | | Orders > Note | No | |
Response:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<CreateOrderResponse xmlns="LKQCorp.LKQIntegrationService">
<CreateOrderResult xmlns:a="http://schemas.datacontract.org/2004/07/LKQIntegrationService.Core.Entities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:ErrorMessages xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:IsSuccessful>true</a:IsSuccessful>
<a:Value xmlns:b="http://schemas.datacontract.org/2004/07/LKQIntegrationService.Core.Ordering.Entities">
<b:AftermarketOrderNumber>QPS51730</b:AftermarketOrderNumber>
<b:SalvageOrderNumber i:nil="true"/>
</a:Value>
</CreateOrderResult>
</CreateOrderResponse>
</s:Body>
</s:Envelope>
Response Mapping:
LKQ Field | Hemi FIeld |
---|---|
AftermarketOrderNumber |
Product In Order > Connector ID |
Once we successfully export an order item we want to set:
Product In Order > Connector ID
= Yes
Product In Order > Connector Exported
= Yes
Product In Order > Exported
= Yes (Please note we are aware of the issues here since the main trigger for this will be thi flag if we re-export and order item we want to overwrite the Product In Order > Connector ID
)
Get Stock
In order to get the stock levels we need to request CheckDropShipAvailability
The trigger for the get stock should be Part Synergy Warehouse Integration > Active = Yes Part Synergy Warehouse Integration > Get Stock = Yes
When we are getting the stock levels we have to use the Warehouse Line Codes Check - Channel Spyder.xlsx to obtain the master line code. The file is on the FTP and is updated on a daily basis and based on this file we have to map the Location > Name with the Column A and obtain the Master Line Code from column D and concatenate it with the Part Number (175|100073)
Please note if the stock level in the response and in our system are the same we do not update the record.
Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lkq="LKQCorp.LKQIntegrationService" xmlns:lkq1="http://schemas.datacontract.org/2004/07/LKQIntegrationService.Core.Entities" xmlns:lkq2="http://schemas.datacontract.org/2004/07/LKQIntegrationService.Core.Ordering.Entities">
<soapenv:Header/>
<soapenv:Body>
<lkq:CheckDropShipAvailability>
<!--Optional:-->
<lkq:request>
<!--Optional:-->
<lkq1:UserRequestInfo>
<!--Optional:-->
<lkq1:AccountNumber>?</lkq1:AccountNumber>
<!--Optional:-->
<lkq1:BusinessTypeForAccountNumber>?</lkq1:BusinessTypeForAccountNumber>
<!--Optional:-->
<lkq1:UserName>?</lkq1:UserName>
<!--Optional:-->
<lkq1:UserPassword>?</lkq1:UserPassword>
<lkq1:VerificationCode>?</lkq1:VerificationCode>
</lkq1:UserRequestInfo>
<!--Optional:-->
<lkq2:PartsWithQuantity>
<!--Zero or more repetitions:-->
<lkq2:PartWithQuantityRequest>
<!--Optional:-->
<lkq2:PartNumber>?</lkq2:PartNumber>
<!--Optional:-->
<lkq2:Quantity>?</lkq2:Quantity>
</lkq2:PartWithQuantityRequest>
</lkq2:PartsWithQuantity>
</lkq:request>
</lkq:CheckDropShipAvailability>
</soapenv:Body>
</soapenv:Envelope>
Request Mapping:
Field | Hemi Field | Comment | |||
---|---|---|---|---|---|
Request |
|||||
UserRequestInfo |
|||||
AccountNumber |
Part Synergy Warehouse Integration > API Account | ||||
BusinessTypeForAccountNumber |
“Aftermarket” | Hardcoded as Aftermarket | |||
UserName |
Part Synergy Warehouse Integration > API Username | ||||
UserPassword |
Part Synergy Warehouse Integration > API Password | ||||
VerificationCode |
Part Synergy Warehouse Integration > API Access Token | ||||
PartsWithQuantity |
|||||
PartWithQuantityRequest |
|||||
PartNumber |
Products Location Quantity > Product Identifier | ||||
Quantity |
Products Location Quantity > Quantity | ||||