logtrade-logo

Integration between Ongoing WMS and Logtrade

Logtrade is an adaptive, cloud-based multi carrier shipping platform for delivery and shipping management. Integrating Logtrade to Ongoing WMS helps you to automate the label printing process and access a large library of carriers directly from the WMS.

Features

Make transport bookings directly from Ongoing WMS

You can create a shipment in Logtrade based on an order in Ongoing WMS. All information about the shipment (address and number of packages) can be entered into Ongoing WMS, and then transferred to Logtrade at the click of a button.

Fetch information from Logtrade's Delivery Checkout

The system can retrieve information from Logtrade's Delivery Checkout to determine the chosen transporter and pickup point for a specific order. This enables the usage of a delivery checkout from Logtrade but a delivery management software from another supplier. The information can also be used in the warehouse. For instance, the carriers selected by the customers can be used for prioritization of orders, based on the pickup time for each carrier.

The delivery checkout process takes place in the webshop when the consumer selects between different delivery options. No shipment is created in the checkout. Once the order is created in Ongoing WMS, the pre-selected shipping details in Logtrade are fetched to the WMS. Subsequently, complementing information, such as how the order has been packed, is reported back to your delivery management system, e.g. Logtrade, to finalize the shipment process.

Make shipment information visible in Ongoing WMS

When the shipment in Logtrade has been booked, Ongoing WMS will receive a response from Logtrade. The response contains tracking information and shipping documents.

Printing

Printing of shipping labels and other documents can be carried out either by Ongoing WMS or Logtrade depending on your preference. To print documents from Ongoing WMS the function "Create PDF files" must be activated in Logtrade. Note that Logtrade may charge an additional cost for this function.

Transporters and services

It is possible to see all available transporters and services in Ongoing WMS. It is also possible to install them on demand without any need to find out corresponding codes.

Generate customs declaration

With an integration between Logtrade and Ongoing WMS electronic customs declarations can be generated.

Default setup

The order is sent to Logtrade when the Send button is pressed in Ongoing WMS.

If the shipment validates, tracking information and shipping documents will be returned to Ongoing WMS immediately.

Get Started

The following data is required to set up an integration with Logtrade:

  1. License number
  2. User id
  3. Password

After you have gathered this information, please see this guide on how to set up an integration between Ongoing WMS and Logtrade. For more information about the benefits, go to Logtrades landing page for Ongoing WMS.

Mapping

Logtrade Shipment - Ongoing WMS Order

Show field mapping

Logtrade Ongoing WMS
AgentOfficeIdOrderInfo⇒TransporterServicePointId?⇒ToString()
ConsignmentId$"{OrderInfo⇒OrderId}-{Guid⇒NewGuid()⇒ToString()⇒Substring(0,5)}" + (if isReturn then "-R", else "")
DeclaredCurrencyCode if isReturn then null,
else if string⇒IsNullOrWhiteSpace(OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode) then PickedOrderLines⇒FirstOrDefault()?⇒CurrencyCode,
else OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode
DeclaredValue if isReturn then 0,
else PickedOrderLines⇒Where(PickedNumberOfItems > 0)⇒Select(new ArticleItem)⇒ToArray()⇒Select(UnitValue * NumberOfItems)⇒Sum()
CountryOfOriginPickedOrderLines⇒Article⇒CountryOfOriginCode
DescriptionGoodsItems⇒FirstOrDefault()?⇒GoodsCategory
GrossWeightPickedOrderLine⇒Article⇒Weight if not null, else 0
NetWeight PickedOrderLine⇒Article⇒NetWeight, if not null,
else PickedOrderLine⇒Article⇒Weight if not null, else 0
NumberOfItems(int)PickedOrderLine⇒PickedNumberOfItems
OtherQuantity1
TaricNumbernew string(PickedOrderLine⇒Article⇒StatisticsNumber⇒Where(char⇒IsLetterOrDigit)⇒ToArray())
UnitValueMath.Round(TACustomsHelper⇒GetPickedOrderLineUnitValue(PickedOrderLine), 2)
GoodsItemsGoodsItems⇒Select(new Generated⇒Logtrade⇒GoodsItem⇒ToArray())
GoodsDescriptionInterface⇒GoodsItem⇒GoodsCategory
GrossWeightInterface⇒GoodsItem⇒Weight
LoadingMetersInterface⇒GoodsItem⇒LoadMeters
NumberOfPackagesInterface⇒GoodsItem⇒NumberOfPackages
TypeOfPackageCodeInterface⇒GoodsItem⇒PackageTypeCode
TypeOfPackagesInterface⇒GoodsItem⇒PackageTypeName
VolumeInterface⇒GoodsItem⇒Volume
Invoicesif isReturn then null, else Generated⇒Logtrade⇒Invoice
ArticleItemsPickedOrderLines⇒Where(PickedNumberOfItems > 0)⇒Select(new ArticleItem)⇒ToArray()
CountryOfOriginPickedOrderLines⇒Article⇒CountryOfOriginCode
DescriptionGoodsItems⇒FirstOrDefault()?⇒GoodsCategory
GrossWeightPickedOrderLine⇒Article⇒Weight if not null, else 0
NetWeight PickedOrderLine⇒Article⇒NetWeight, if not null,
else PickedOrderLine⇒Article⇒Weight if not null, else 0
NumberOfItems(int)PickedOrderLine⇒PickedNumberOfItems
OtherQuantity1
TaricNumbernew string(PickedOrderLine⇒Article⇒StatisticsNumber⇒Where(char⇒IsLetterOrDigit)⇒ToArray())
UnitValueMath.Round(TACustomsHelper⇒GetPickedOrderLineUnitValue(PickedOrderLine), 2)
CurrencyCode if string⇒IsNullOrWhiteSpace(OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode)
then PickedOrderLines⇒FirstOrDefault()?⇒CurrencyCode,
else OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode
ExportTypeExportType⇒Permanent
InvoiceDateDateTime.Now
InvoiceNumber if not string.IsNullOrWhiteSpace(OrderInfo⇒InvoiceNumber) then OrderInfo⇒InvoiceNumber,
else OrderInfo⇒OrderId⇒ToString()
InvoiceTypeInvoiceType.AnyInvoiceType
TermsOfPaymentNone*
NumberOfEurPalletsGoodsItems⇒Sum(NumberOfPackages if PackageTypeCode == "EP", else 0)
PaymentIndicator PaymentType⇒Recipient if Financial⇒TransportPaymentType equals TransportPaymentType⇒Collect,
PaymentType⇒Prepaid if Financial⇒TransportPaymentType equals TransportPaymentType⇒Sender,
PaymentType⇒ThirdParty if Financial⇒TransportPaymentType equals TransportPaymentType⇒ThirdParty,
PaymentType⇒Unknown if Financial⇒TransportPaymentType equals TransportPaymentType⇒UnknownParty
ProductCodeif isReturn then ReturnTransporter⇒ServiceCode, else Transporter⇒ServiceCode
RecipientAddressIdif isReturn then ReturnTransporter⇒TransporterContractEdiCode, else None*
RecipientReferenceif OrderInfo⇒SalesCode⇒Length <= 35, then OrderInfo⇒SalesCode, else OrderInfo⇒SalesCode⇒Remove(35)
SenderAddressIdif isReturn then None*, else OrderInfo⇒GoodsOwnerEdiCode
SenderReference senderReference if senderReference.Length <= 35, else senderReference⇒Remove(35),
where senderReference = $"{preamble}-{OrderInfo⇒OrderId⇒ToString() if string.IsNullOrEmpty(OrderInfo⇒GoodsOwnerOrderNumber,
else OrderInfo⇒GoodsOwnerOrderNumber)}" + "-R" if isReturn,
where preamble = GoodsOwnerInfo⇒GoodsOwnerReference if GoodsOwnerInfo⇒GoodsOwnerReference != "", else GoodsOwnerInfo⇒Name
ShipmentAddressesGenerated⇒Logtrade⇒ShipmentAddress
Address1if Consignee⇒Address⇒Length <= 35 then Consignee⇒Address, else Consignee⇒Address⇒Remove(35)
Address2if Consignee⇒Address2⇒Length <= 35 then Consignee⇒Address2, else Consignee⇒Address2⇒Remove(35)
Address3if Consignee⇒Address3⇒Length <= 35 then Consignee⇒Address3, else Consignee⇒Address3⇒Remove(35)
AddressTypeaddressType
Cityif Consignee⇒City⇒Length <= 30 then Consignee⇒City, else Consignee⇒City⇒Remove(30)
ContactPerson if Consignee⇒Name⇒Length <= 35 then Consignee⇒Name, else Consignee⇒Name⇒Remove(35)
CountryCodeConsignee⇒CountryCode
EmailOrderInfo⇒EmailNotification?⇒Value
EurPalletRegistrationNumber Consignee⇒CustomerNumberPallets
ForwarderCustomerCodeif Financial⇒TransportPaymentType equals TransportPaymentType⇒Collect then TransportPayer⇒CustomerCode, else None*
GateCodeConsignee⇒DoorCode
Nameif Consignee⇒Name⇒Length <= 35 then Consignee⇒Name, else Consignee⇒Name⇒Remove(35)
PhoneNumberOrderInfo⇒TelephoneNotification?⇒Value
Provinceif string⇒IsNullOrEmpty(Consignee⇒CountryStateCode) then None*, else Consignee⇒CountryStateCode
SmsNumberOrderInfo⇒SMSNotification?⇒Value
ZipCode if zipCode⇒Length <= 9 then zipCode, else zipCode⇒Remove(9),
where zipCode = Consignee⇒PostCode⇒Replace("-", "")
ShipmentInstructionsnew ShipmentInstruction() if (not isReturn and not string.IsNullOrEmpty(OrderInfo⇒DeliveryInstruction)), else None*
InstructionOrderInfo⇒DeliveryInstruction
InstructionTypenew List<ShipmentServiceBase>().ToArray()
ShipmentDateDateTime.Today
ShipmentTemplateif isReturn then ReturnTransporter.WaybillTemplate, else Financial⇒WaybillTemplate
TermsOfDeliveryCodeif isReturn then None*, else OrderInfo⇒TermsOfDelivery
TestFlagLogtradeMapperOptions⇒isTest
UseReturnLabelfalse

None* = those fields are not in the default set up, but it is easy to set them to any field in Ongoing WMS.