Custom Development / Part Synergy Custom Integration / Part Synergy LKQ Canada Custom Integration

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
Is this article helpful?
0 0 0