How-toInfor SyteLine (CloudSuite Industrial)Customer Orders / Shipping

SyteLine customer on-time shipments: which dates to compare and how to report OTD

Question
syteline customer on time shipments

Also searched as

  • syteline on time delivery report
  • how to measure on time delivery in syteline
  • syteline OTD sql query

Short answer

On-time shipment in SyteLine is the actual ship date on the shipment record compared with a target date on the order line, either the customer due date or your promise date. Decide which target you are measured against, then count lines shipped on or before it. A SQL query against the shipment and order line tables gives you OTD percent by customer, product or month.

Applies to: Infor SyteLine 8.x / CloudSuite Industrial, on-prem SQL Server. Table and column names should be confirmed in your version.

Measure on-time shipments in SyteLine

  1. 1Agree the definition first: on or before customer due date, on or before promise date, or within a window (for example 0 days early to 0 days late).
  2. 2Confirm that ship confirmation is posted through Customer Order Shipping, so a ship date is written for every shipment.
  3. 3Identify the order line fields for the due date and promise date (coitem), and the shipment records (co_ship) for the actual ship date and quantity.
  4. 4Decide the unit: order lines, order releases, or quantity. Many customers score by line.
  5. 5Run the SQL query below in a read-only copy or reporting database, filtered by Site and date range.
  6. 6Group by customer (cust_num), item, or month to find the drivers of late shipments.
  7. 7Compare the result against the customer's own scorecard, which may use a different date or tolerance.
  8. 8Save the query as a SQL view or a report in your reporting tool so the number is repeatable.

Which dates exist and which one counts

Each customer order line in SyteLine carries a due date (what the customer asked for) and often a promise date (what you committed to). The shipment record carries the date the goods were actually shipped. On-time delivery against due date measures how well you met the customer's request; against promise date it measures how well you kept your own commitment. Report both if you can, because a gap between them shows how much slack your promising process adds.

A third date, the date the customer received the goods, is not in the ERP unless you capture proof of delivery. If a customer scores on receipt date, ship date plus a standard transit time is only an estimate. Say so in the report instead of presenting it as fact.

Partial shipments are the usual source of disagreement. Decide whether a line is on time when the first piece ships, when the full quantity has shipped, or by quantity-weighted share. Write the rule down and apply it consistently.

A starting SQL query for OTD percent

The query below scores each shipment row against the line due date and rolls up by customer and month. It assumes the standard shipment table co_ship joined to coitem and co. Column names can differ by release and by customisation, so check them with a quick SELECT TOP 10 before relying on the output. Run it against a reporting copy, not production during peak hours.

To score against the promise date, replace due_date with promise_date and handle NULL promise dates explicitly, for example with ISNULL(promise_date, due_date). To score full-line completion rather than each shipment, aggregate to the last ship date per line first.

SELECT c.cust_num,
       FORMAT(s.ship_date, 'yyyy-MM') AS ship_month,
       COUNT(*) AS shipments,
       SUM(CASE WHEN CAST(s.ship_date AS date) <= CAST(i.due_date AS date) THEN 1 ELSE 0 END) AS on_time,
       100.0 * SUM(CASE WHEN CAST(s.ship_date AS date) <= CAST(i.due_date AS date) THEN 1 ELSE 0 END) / COUNT(*) AS otd_pct
FROM co_ship s
JOIN coitem i ON i.co_num = s.co_num AND i.co_line = s.co_line AND i.co_release = s.co_release
JOIN co c ON c.co_num = s.co_num
WHERE s.ship_date >= '2026-01-01'
GROUP BY c.cust_num, FORMAT(s.ship_date, 'yyyy-MM')
ORDER BY ship_month, otd_pct;

Standard reports and where they fall short

SyteLine ships with order and shipping reports (for example back order and shipping status style reports) that show open lines past due. Those are useful for managing today's late orders, but they look at open demand, not at the history of what shipped on time. For a historical OTD metric you normally need the SQL approach above, a reporting tool such as SQL Server Reporting Services or Power BI, or an Infor reporting product your site already licenses.

Check the data before trusting any trend. Due dates edited after the fact, orders re-promised many times, and lines closed without shipment (cancelled or short closed) will all distort the number. Exclude cancelled lines, and decide how to treat customer-requested pushouts.

Try it here, free

On-Time Delivery Calculator

Open full tool

Enter shipped lines, on-time lines and in-full lines to get OTD, OTIF, late and early rates and the gap to your target.

Common pitfalls

  • !Comparing ship date with order entry date or a planned date instead of the customer due or promise date.
  • !Editing due dates after the order is late, which makes OTD look better than the customer experienced.
  • !Counting a line as on time on the first partial shipment when the customer scores on full quantity.
  • !Ignoring multi-site data: filter or group by site_ref so one plant's numbers are not mixed with another's.
  • !Mixing time zones or datetime values with date-only values, which flips same-day shipments to late.
  • !Using customised column names from memory without checking your own schema.

How an ERP-grounded AI assistant handles this

An AI assistant grounded in SyteLine can take the plain question 'what was our on-time shipment rate by customer last quarter, against promise date' and generate the read-only query, show it to you, and run it with your existing role permissions. That removes the dependency on someone remembering the table joins. Netray's ERPray and SyteRay work this way on SyteLine, including on-prem deployments where the model runs on your own hardware and no order data leaves your network.

Frequently asked questions

What is a good on-time delivery percentage in manufacturing?

It depends on the industry and the customer contract. Many manufacturers target the mid 90s percent against promise date, but aerospace and automotive customers often set their own thresholds and tolerances. Use your customer scorecard definition first, then your own internal target, rather than a generic benchmark.

Should I use due date or promise date in SyteLine?

Report both. Due date shows how well you meet what the customer asked for. Promise date shows whether you keep your commitments. The difference between them shows how much lead time you add when you promise a date.

Where is the ship date stored?

Shipment history is held on shipment records written when you confirm shipping, with the line-level ship date also reflected on the order line. Confirm the exact table and column names in your release by browsing the schema.

Can I do this without writing SQL?

You can run the delivered open-order and shipping reports for current lateness, but a history-based OTD metric usually needs a query, a custom report, or a reporting tool connected to the database.

Related

How-to

SyteLine Customer Order to Invoice: Step by Step

A SyteLine customer order flows from Order Entry through pick, pack, and Customer Shipment, then to invoicing, either through the Auto Invoice batch utility or manual Invoice Entry, posting revenue and relieving inventory once the shipment is confirmed.

How-to

Infor VISUAL report builder: build a custom work order report

VISUAL reports are commonly built in Crystal Reports connected to the VISUAL SQL Server database, and then added to the application so users can run them. A work order report joins WORK_ORDER, OPERATION and optionally REQUIREMENT and PART, filters by work order, and formats it for the shop floor.

How-to

Infor VISUAL query tool and shop resource maintenance

To query VISUAL data, use a read-only SQL login in SQL Server Management Studio or a reporting tool against the VISUAL database, or the in-application query and reporting options your build provides. Shop resources, the machines and work centers that operations are scheduled on, are maintained in the Shop Resource area and drive scheduling, load and costing.

Error fix

Fixing SyteLine's 'Object reference not set to an instance of an object' error

This is a generic .NET NullReferenceException surfacing through the SyteLine IDO Runtime, not a SyteLine-specific error code. It almost always means a form, script or IDO method referenced a field, row or object that came back null, usually after a customization, a missing related record, or a view/IDO method call before the form finished loading. Turn on detailed client logging and check the most recent customization or form event first.

Error fix

Diagnosing and fixing SyteLine session timeout errors

SyteLine session timeouts come from one of three independent layers: the IDO Data Service session timeout on the app server, the IIS/application pool idle timeout for the web (Mongoose Web) client, or a load balancer/proxy idle timeout in front of a CloudSuite hosted environment. Fixing the wrong layer is the most common mistake - you need to identify which layer is actually expiring the session before changing anything.

Error fix

Resolving SyteLine multi-site replication conflict errors

A replication conflict in SyteLine's multi-site architecture means the same record (commonly an item, customer, or BOM) was changed independently at two sites between replication cycles, and the replication engine could not automatically merge the two versions. Check the replication conflict log first to see which record and which fields collided, then decide which site's version should win before resuming the queue.

AI for ERP

AI for Infor SyteLine and CloudSuite Industrial

Add grounded AI to Infor SyteLine or CloudSuite Industrial: natural-language answers, agents over IDOs and ION, on-prem or CloudSuite deployment.

AI for ERP

An Air-Gapped Private LLM for SyteLine, Built for Defense Suppliers

Deploy a private LLM on an air-gapped network alongside Infor SyteLine for defense suppliers: no internet egress, ITAR and CMMC-aware architecture.

Stuck on Infor SyteLine (CloudSuite Industrial)?

Talk to engineers who work inside Infor SyteLine (CloudSuite Industrial) every week, and who build private AI that answers these questions from your own ERP data.

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

Guides

AI on your ERP

Integrations

Comparisons