Understanding CTP completion date - due way after ship by date

Hi all, we’ve been facing significant challenges with understanding CTP results, and I have another example from today, which I will use as an example to explain the issue, and it’ll be great if someone can help us understand why CTP gives the wrong date. Thanks in advance for your help!

My analysis is that CTP should have given us a date close to the ship by date because we have enough stock to meet the demand, it should not have pushed the completion date to January 2027.

CTP Case Study

Scenario

On 1st October 2026, Sales raised a complaint that CTP told them that we cannot have enough of RT3834 even though we have enough stock on hand to cover the new demand.

RT3834 is confirmed as a manufactured item and has a leadtime of 98 days.

When running CTP calculation, the following metrics were used:

  1. Ship by: 6th November 2026
  2. Need by: 9th November 2026
  3. Proposed start date: 2nd October 2026
  4. Ship Line Complete.

CTP gave the completion date as 5th January 2027, with the source as “Planned Stock”

Figure 1: CTP Calculation shows 05.01.27 as Planned Stock

Figure 2: TimePhase for the part that we calculated CTP on

Figure 3: Material availability dashboard shows enough stock on hand and the demand is less than stock on hand

Figure 4: TimePhase shows enough stock for Mtl 30, but constrained because SOH < SS

Figure 5: TimePhase shows enough mtl 10 available, but constrained because SOH < SS

Figure 6: TimePhase shows enough stock to cover demand and SS

Root Cause Analysis

Pre-requisites

There are a few pre-requisites that are currently driving CTP calculation which need to be made aware:

  1. All resources are infinitely planned, so if there were a constraint of capacity, CTP would say you can do it sooner. This is ruled out here as an issue because CTP is giving a later date than expected.
  2. CTP will only look at 1 level down ie if you are making the part RT3834, CTP will look at:
    1. The stock availability of the part itself as per time phase
    2. Materials availability of the part as per time phase
  3. However, what CTP will NOT do is that it will not look at any levels below that. So, for example, if the part 12-1500-12-RB is itself a manufactured part, CTP will not look at the materials for that in time phase and determine when they will be available, it will simply use the lead time calculated by the mfg lead time calculation.
  4. The trigger for setting a material as constrained is
    1. Stock On Hand >= Safety Stock + Total Demand within leadtime
    2. That’s why mtl 10 and 30 are constrained materials, because even though the SOH meets the demand, it does not meet the safety stock. Therefore, the constrained material flag is set, and any CTP calculation is going to look at time phase for these parts or default to lead time if not enough available stock.
  5. When CTP calculation runs, the calendar that it operates on is a 5 working day calendar. So, lead times will also use the same calendar. We swap it to a 7 day calendar only for the purposes of mfg lead time calculation, otherwise, we always work with a 5 day calendar because we operate 5 days a week, excluding overtime.

Figure 7: BoM Tree Analysis shows constrained material for 94-day lead time

Findings

  1. As per the BoM tree analysis, it would seem that 12-1500-12-RB might be the constrained material causing the delay, but you can see in time phase that the lead time of 94 days should not matter because we have incoming stock of 45 which also brings us above our safety on 9/11/2026. The constrained should be set to 9/11/2026.
  2. The other constrained mtl 30, SNAP-LATCH-LF, has a leadtime of 21 days, and should not be the reason why CTP suggests the date for January.

Conclusion

It seems as though the system has used the leadtime of the manufactured part to determine that planned stock is incoming and it should be able to deliver it sooner compared to the lead time, because the leadtime is pushing the due date out to later in Feb 2027. If CTP would work as expected, the CTP date returned should have been 9/11/2026. However, given the recent testing we did on CTP, we saw that CTP would commit safety stock on hand ie allow you to go below safety stock as well when trying to commit to a customer order, therefore, given this, CTP should have given us a date equivalent to “this level” manufacturing lead time of the part ie 2 days since we have enough stock to meet the new demand, also note that the ship by and need by dates are also in November.

Figure 8: Mfg lead times for the part

Figure 9: Working day calculation for 98-day lead time

In your first Time Phase screenshot for the top-level part, you have a Reduce Job suggestion to take the current job of 10 you have due to finish in October and reduce it to 2 since that is your current demand level (the open Sales Order). Because this Reduce suggestion is in the system, CTP does not see any available quantity within your lead time: the 1 piece from J119329 is immediately being shipped on the first Sales Order, the 2 pieces from the second job are then being shipped immediately and the remaining 8 are being suggested to not be made.

I think that because at the end of October 14th you have no parts planned to be on hand (taking into account the Job, the Order, and the Suggestion), CTP is forced to use the lead time to give you the finish date.

I would be curious to see what happens if you delete the Reduce suggestion in Planning Workbench and then run CTP for this order. Or, if you mark Quantity Locked on the job, re-run MRP, and then run CTP. In both of those cases, CTP should see extra parts it can use for this new order available starting Oct. 14th.

Update 02nd October 2026

So it is percieved that the existing job and suggestions might be creating the problem. I deleted J102598 (WOW-38RU-800D) and J113161 (RT3834).

Figure 10: Deleted J102598 (WOW-38RU-800D) and J113161 (RT3834)

After running, MRP creates the unfirm jobs again and it all lines up (no constrained material pushing dates out). Note: The reqby date for the new WOW-38RU-800D job has been pushed out to Feb instead of Jan, this needs to be investigated further.

Figure 11: New MRP result

I added an extra release on line 4 for the sales order for qty 1 and ran CTP.

When I ran CTP only for line 4 rel 2 with ship by date of tomorrow ie I want it at highest priority, it seems that the stock was gazumped, since there was already incoming stock on the 5/11/26. The question over here then becomes that if the stock was to be gazumped, why did CTP not pinch stock from J119239 instead and give me back a date of 13/10/26? Why did it choose to say 5/11/26 and then say “Planned Stock”?

Figure 12: Alleged Gazumping by new order release

When I ran CTP again for both releases, then CTP job gets created and surprisingly, the calculation tells me that the stock can be obtained on a similar date through a job. To me, that indicates that MRP knew that while we were Gazumping stock from another order, that order would be satisfied because a CTP job still gives the due date for that job, and therefore, if MRP were to run, it would create a job with a ship by date of 5/11/26 which is sooner than the ship by date of 6/11/26.

Figure 13: CTP runs for an order line 1 that was already entered in the system and CTP already ran on it.

Now, I will try to move the ship by date for order line 4 and release 1 back a bit, say, 29/10/26 so that it falls short of the CTP date.

Figure 14: CTP still gave the date of 5/11/26

The main question that arises at this point is that why is CTP assuming the 5/11/26 as “Planned Stock” when suggesting a date? Why not 13/10/26, if the order was needed urgently?