Turn your real-world experience into part of the show.
M365 FM Podcast
M365 FM Podcast
The M365 FM Podcast is your daily destination for everything happening across the Microsoft cloud. We cover the full spectrum of Microsoft 365, including Teams, SharePoint, Exchange, OneDrive, and the tools driving the modern workplace. Each episode delivers practical insights, expert interviews, and hands-on strategies for IT admins, cloud architects, developers, power users, and decision-makers in the Microsoft ecosystem. We explore the latest M365 updates, dive into Power Platform topics like Power Apps, Power Automate, Power BI, Power Pages, and share real-world guidance on automation, digital transformation, and low-code development. You’ll also get deep insights into Azure, including cloud infrastructure, Azure AD / Entra ID, identity, hybrid cloud, and Azure security. The show features focused discussions on Microsoft 365 Security, Defender, compliance, DLP, Zero Trust, and the best practices needed to protect and optimize your environment. We also highlight how AI and Copilot for Microsoft 365 are transforming productivity, collaboration, and automation across the cloud. Whether you want to improve Teams collaboration, strengthen security, enhance cloud architecture, or stay ahead of the latest Microsoft 365, Azure, Power Platform, and AI announcements, The M365 Podcast is your essential guide. M365 FM Podcast is Part of the M365.Show Network.
Sept. 15, 2026

Constraint-Based Scheduling: The Architecture That Makes Production Plans Real

Constraint-Based Scheduling: The Architecture That Makes Production Plans Real
Constraint-Based Scheduling: The Architecture That Makes Production Plans Real
M365 FM Podcast
Constraint-Based Scheduling: The Architecture That Makes Production Plans Real

Key Takeaways

  • A production plan states business intent and reserves broad capacity, whereas a finite production schedule reflects the actual physical constraints and capabilities of the factory floor.
  • Infinite capacity planning can place unrealistic workloads onto a work center by assuming demand can be absorbed without operational limits, often leading to missed deadlines and expediting.
  • Constraint-based scheduling evaluates hard constraints—such as machine availability, operator certification, material quality holds, and tooling—to ensure a schedule is physically feasible before optimization.
  • Feasibility must always come before optimization in production scheduling to ensure that the generated plan respects hard limits and does not simply pass operational problems to the next shift.
  • Operational sequences depend heavily on interconnected steps, meaning a delay in a bottleneck process like five-axis milling can cascade through heat treatment, inspection, and final assembly.

Your ERP says the customer order ships on Friday. The work order is released. The routing looks correct. Capacity appears available. Everything looks fine in the planning report. Then Monday morning arrives. A critical five-axis machining center goes down. One order is already in production. Another is waiting for material. A third could theoretically move to another machine — but only if the shared fixture is available, the correct program is approved, and a qualified operator is working that shift. The ERP plan still says Friday. But a date in ERP does not automatically mean the factory can physically deliver it. In this episode, we explore constraint-based production scheduling and the difference between a production plan that describes what the business wants and a finite production schedule that reflects what the factory can actually execute. Using a hypothetical precision-machining plant, we follow production demand from ERP through routings, machines, tooling, fixtures, labor, material, quality, MES, maintenance, and shop-floor events — and examine how a scheduling engine can combine these constraints into an achievable production schedule.

WHEN THE PRODUCTION PLAN MEETS THE PHYSICAL FACTORY
Production planning often begins with demand. Customers need products. Orders have quantities. Orders have due dates. ERP translates that demand into work orders, material requirements, routings, and broad capacity requirements. That is essential. But it is not the same as answering the question production needs answered every day: What can we actually run next? A production plan may reserve eight hours in a machining work center. The physical factory needs to know which machine will provide those eight hours. Is that machine available? Can it produce this exact part revision? Does it have the correct tooling? Is the fixture available? Has the material been released? Is the required operator qualification available during the planned setup? Will the order finish early enough to reach the next production step? Constraint-based scheduling takes the demand the business wants fulfilled and tests it against the conditions that actually exist in production.

PRODUCTION PLAN VS. PRODUCTION SCHEDULE
Production planning and production scheduling are closely related, but they answer different questions. A production plan focuses on demand, dates, quantities, materials, and broad capacity requirements. A production schedule goes deeper. It assigns an operation to a real resource, at a real time, in a real sequence. This distinction becomes especially important when planning systems use infinite capacity. An infinite-capacity plan can place more work into a time period than the physical factory can execute. Two urgent orders can both appear to require the same machine at the same time. On paper, both remain urgent. On the factory floor, one spindle can still run only one operation at a time. Finite capacity scheduling forces the conflict into the open. It accounts for resource calendars, maintenance, setup time, fixtures, tooling and other limitations rather than assuming the work center can absorb whatever demand is assigned to it.

FINITE CAPACITY DOESN’T CREATE CAPACITY
This is an important distinction. Finite capacity scheduling does not magically create another machine. It does not make material arrive earlier. It does not qualify another operator. It does not repair equipment. Instead, it exposes conflicts before production discovers them through delays, expediting, overtime, and customer escalations. Suppose two customer orders require the same five-axis machine. Both are urgent. Both have tight delivery dates. An infinite plan can put both into the same capacity bucket. A finite schedule must make a decision. One goes first. The other follows. Or one moves to an approved alternative. Or one becomes late. That can make the production schedule look worse than the ERP plan. But the schedule did not create the problem. The physical constraint already existed. The schedule simply made it visible.

WHAT IS A PRODUCTION CONSTRAINT?
A constraint is a condition that must be respected when production work is placed into time. Some constraints are hard. They cannot simply be ignored because an order is urgent. A machine cannot perform an operation if it lacks the required capability. A fixture cannot be attached to two machines simultaneously. Material on quality hold cannot be consumed. An operator without the required certification cannot perform a controlled setup. A maintenance window removes usable machine capacity. An operation cannot start before the required previous operation has produced the necessary output. Other constraints are soft. They represent preferences or business objectives. You may prefer fewer setups. You may want to minimize overtime. You may want to reduce Work in Progress. You may prioritize contractual customer dates. You may want to keep a bottleneck continuously productive. A useful scheduling principle is therefore: Feasibility first. Optimization second. First determine what production can physically and operationally execute. Then determine which feasible option best supports the business objectives.

DUE DATE IS NOT THE SAME AS PRIORITY
Production scheduling becomes especially interesting when several orders compete for the same resources. A due date tells you when something should finish. It does not automatically tell you the best sequence. An urgent order might require a long setup. Another order might already have material staged and use the machine's current setup. A third order might need to finish immediately because it must reach a batch process before a cutoff. Simply sorting the production queue by due date ignores these relationships. Constraint-based scheduling evaluates the complete production context. That makes priorities explicit instead of leaving them to whoever calls the planner first.

ROUTINGS AND OPERATION DEPENDENCIES
A production order is not a single block of work. It moves through operations. In the example explored in this episode, a machined housing needs five-axis milling, followed by heat treatment, inspection, and assembly. Those operations depend on each other. If milling finishes late, the problem does not necessarily remain in machining. The order may miss the next heat-treatment batch. That delay can move inspection. Inspection can move assembly. Assembly can move the final delivery date. This is why constraint-based scheduling needs to understand operation dependencies, not just individual machine utilization. The schedule needs to model the flow of production.

MATERIAL AVAILABILITY IS MORE THAN INVENTORY
A planning system might show that material exists. But can production actually consume it? Those are different questions. Material might physically be inside the factory while still waiting for incoming inspection. It may be allocated to another production order. It may be quarantined. It may require a customer-specific certificate. It may belong to the correct material grade but the wrong approved lot. A useful scheduling question is therefore not simply: “Do we have material?” It is: “Can this operation consume this approved material at this planned time?” If the answer is no, the operation is not ready — even if the machine is available. The episode shows how material and quality gates become time-based production constraints rather than simple inventory attributes.

MACHINE CAPABILITY VS. MACHINE AVAILABILITY
Another machine may have open capacity. That does not automatically make it an alternative. The resource must be capable of performing the operation. It may need the correct working envelope. Tolerance capability may matter. A specific controller or approved program may be required. Customer approval may restrict the operation to particular machines. Different machines that belong to the same ERP work center may therefore provide completely different executable capacity. Spare time does not create capability. This becomes critical after a machine breakdown. The scheduler cannot simply search for another empty slot. It needs to search for another valid production path.

MACHINE STATE AND TRUSTWORTHY AVAILABILITY
Machine data creates another challenge. Modern manufacturing equipment can produce enormous numbers of signals. Running. Idle. Stopped. Setup. Fault. Temperature changes. Vibration changes. Cycle completion. Door states. Warnings. But the production scheduler does not need every PLC signal. It needs an operational interpretation of those signals. A brief stop may require no planning response. A confirmed outage that removes several hours from a bottleneck resource probably does. The scheduling architecture therefore needs to transform raw shop-floor events into trusted capacity decisions. Real-time manufacturing does not mean every sensor event should instantly rebuild the production schedule. It means the right event reaches the scheduling decision loop before the decision window closes.

Become a supporter of this podcast: https://www.spreaker.com/podcast/m365-fm-a-microsoft-mvp-podcast-by-mirko-peters--6704921/support.

🚀 Want to be part of m365.fm?

Then stop just listening… and start showing up.

👉 Connect with me on LinkedIn and let’s make something happen:

  • 🎙️ Be a podcast guest and share your story
  • 🎧 Host your own episode (yes, seriously)
  • 💡 Pitch topics the community actually wants to hear
  • 🌍 Build your personal brand in the Microsoft 365 space

This isn’t just a podcast — it’s a platform for people who take action.

🔥 Most people wait. The best ones don’t.

👉 Connect with me on LinkedIn and send me a message:
"I want in"

Let’s build something awesome 👊

Frequently Asked Questions

What is the difference between a production plan and a production schedule?

A production plan focuses on overall demand, quantities, due dates, and broad capacity requirements to meet business intent. A production schedule assigns specific operations to real resources at exact times, accounting for physical constraints and actual factory conditions.

Why is finite capacity scheduling important in manufacturing?

Finite capacity scheduling forces resource conflicts into the open by accounting for machine calendars, maintenance windows, tooling, and labor limitations rather than assuming a work center can absorb unlimited demand.

What is a hard production constraint?

A hard constraint is an absolute condition that must be respected during scheduling, such as machine capability, required operator certifications, material quality holds, or active maintenance windows.

How do soft constraints impact production schedules?

Soft constraints represent business preferences and goals, such as minimizing setup times, avoiding overtime, or reducing work-in-progress inventory, which are used to choose the best feasible schedule option.

1
00:00:00,000 --> 00:00:02,800
So your ERP plan says the customer order ships on Friday.

2
00:00:02,800 --> 00:00:03,920
The work order is released,

3
00:00:03,920 --> 00:00:05,840
the routing points to the machining area,

4
00:00:05,840 --> 00:00:08,840
and the demand signal looks clean enough in a planning report.

5
00:00:08,840 --> 00:00:10,200
Then Monday morning hits,

6
00:00:10,200 --> 00:00:11,840
and a machining center drops out.

7
00:00:11,840 --> 00:00:13,360
The order's already sitting the queue,

8
00:00:13,360 --> 00:00:14,920
but material for one hasn't arrived,

9
00:00:14,920 --> 00:00:16,760
another needs a fixture clamped to a part

10
00:00:16,760 --> 00:00:18,240
on the machine that just stopped,

11
00:00:18,240 --> 00:00:20,080
and a third could move to an alternate machine

12
00:00:20,080 --> 00:00:21,920
only if the right operator is on shift

13
00:00:21,920 --> 00:00:23,560
with an approved program.

14
00:00:23,560 --> 00:00:26,400
The plan still says Friday, but here's the thing.

15
00:00:26,400 --> 00:00:29,160
A date in ERP isn't a promise the factory can keep.

16
00:00:29,160 --> 00:00:32,160
It states intent, telling production what the business expects,

17
00:00:32,160 --> 00:00:34,880
and reserving broad capacity against a work center,

18
00:00:34,880 --> 00:00:37,560
but it doesn't answer the question that controls the day.

19
00:00:37,560 --> 00:00:38,920
What can physically run,

20
00:00:38,920 --> 00:00:40,880
on which resource in what sequence,

21
00:00:40,880 --> 00:00:43,480
with which people tools material and approvals?

22
00:00:43,480 --> 00:00:45,920
That's where constraint-based scheduling fills the gap.

23
00:00:45,920 --> 00:00:47,520
It takes the work the business once done

24
00:00:47,520 --> 00:00:48,960
and tests it against the conditions

25
00:00:48,960 --> 00:00:51,400
that actually exist in the factory right now,

26
00:00:51,400 --> 00:00:53,480
not the conditions we wish existed.

27
00:00:53,480 --> 00:00:56,400
Including a machine fault, a missing fixture,

28
00:00:56,400 --> 00:01:00,120
a material hold, or a shift with no qualified set up person.

29
00:01:00,120 --> 00:01:02,880
In this episode, I want to walk through

30
00:01:02,880 --> 00:01:05,400
one hypothetical plant doing exactly that.

31
00:01:05,400 --> 00:01:07,520
We'll start with the demand coming from ERP,

32
00:01:07,520 --> 00:01:10,400
then follow the data through routing, resource capability,

33
00:01:10,400 --> 00:01:13,120
machine state, tooling, labor, and material release.

34
00:01:13,120 --> 00:01:15,080
From there, we'll see how a scheduling engine turns

35
00:01:15,080 --> 00:01:17,200
those facts into a schedule people can actually run,

36
00:01:17,200 --> 00:01:19,640
and how that schedule adapts when the factory changes,

37
00:01:19,640 --> 00:01:22,400
because production doesn't fail when a plan looks untidy.

38
00:01:22,400 --> 00:01:25,120
Production fails when the plan asks two urgent orders

39
00:01:25,120 --> 00:01:27,280
to occupy the same spindle at the same time,

40
00:01:27,280 --> 00:01:30,240
so let's start with the first physical limit.

41
00:01:30,240 --> 00:01:32,320
The factory scenario and the failed assumption,

42
00:01:32,320 --> 00:01:34,800
picture a precision machining plant running three shifts,

43
00:01:34,800 --> 00:01:37,000
producing a mix of customer orders,

44
00:01:37,000 --> 00:01:38,720
some repeat work with known demand,

45
00:01:38,720 --> 00:01:41,240
some lower volume parts that arrive with shortly times

46
00:01:41,240 --> 00:01:43,520
and a lot more commercial pressure.

47
00:01:43,520 --> 00:01:45,440
One part family moves through milling,

48
00:01:45,440 --> 00:01:47,320
then heat treatment, inspection,

49
00:01:47,320 --> 00:01:48,960
and finally, small assembly.

50
00:01:48,960 --> 00:01:51,440
None of those steps sounds unusual on its own,

51
00:01:51,440 --> 00:01:53,800
but the problem comes from how tightly they depend

52
00:01:53,800 --> 00:01:54,640
on each other.

53
00:01:54,640 --> 00:01:56,960
A delay in one step doesn't stay there.

54
00:01:56,960 --> 00:01:59,920
For this scenario, let's focus on a set of machined housings.

55
00:01:59,920 --> 00:02:02,200
Each needs a complex five-axis milling operation

56
00:02:02,200 --> 00:02:03,800
before moving to heat treatment,

57
00:02:03,800 --> 00:02:06,440
which runs in plant batches, and then inspection

58
00:02:06,440 --> 00:02:09,320
must release the part before assembly can start.

59
00:02:09,320 --> 00:02:11,960
If milling slips, the part may miss a heat treatment batch,

60
00:02:11,960 --> 00:02:15,040
turning a short delay into a much longer delivery risk.

61
00:02:15,040 --> 00:02:17,160
The five-axis machine is the bottleneck here.

62
00:02:17,160 --> 00:02:18,640
Other machines handle simpler work,

63
00:02:18,640 --> 00:02:21,040
but only this one has the travel range, accuracy,

64
00:02:21,040 --> 00:02:22,640
and approved program for the housing.

65
00:02:22,640 --> 00:02:24,600
There is an alternate machine, which is useful,

66
00:02:24,600 --> 00:02:26,200
but it isn't a free extra slot.

67
00:02:26,200 --> 00:02:28,520
It can run the part only with a shared fixture,

68
00:02:28,520 --> 00:02:30,160
one that supports more than one variant,

69
00:02:30,160 --> 00:02:32,000
but can sit in only one place at a time.

70
00:02:32,000 --> 00:02:34,080
The job also needs a certified operator for setup

71
00:02:34,080 --> 00:02:35,640
and first-off approval.

72
00:02:35,640 --> 00:02:37,760
Loading parts isn't the same as being approved

73
00:02:37,760 --> 00:02:40,440
to establish a new setup on a high-value component.

74
00:02:40,440 --> 00:02:41,800
Factories don't create those rules

75
00:02:41,800 --> 00:02:43,080
to make planning difficult.

76
00:02:43,080 --> 00:02:45,320
They do it because quality, safety, and traceability

77
00:02:45,320 --> 00:02:46,800
have real consequences.

78
00:02:46,800 --> 00:02:48,600
Now imagine the planner builds a schedule

79
00:02:48,600 --> 00:02:51,160
using due dates and standard routing times.

80
00:02:51,160 --> 00:02:52,960
The housing order due Friday goes first

81
00:02:52,960 --> 00:02:54,800
and order due early next week follows,

82
00:02:54,800 --> 00:02:56,960
and a rush order gets inserted into the queue

83
00:02:56,960 --> 00:02:58,840
because its customer escalated.

84
00:02:58,840 --> 00:03:00,320
On paper, the plan looks reasonable.

85
00:03:00,320 --> 00:03:03,040
The planner sees enough total machine hours across the week.

86
00:03:03,040 --> 00:03:05,560
The routing says each operation takes a known time.

87
00:03:05,560 --> 00:03:06,800
The orders have dates.

88
00:03:06,800 --> 00:03:08,800
The work center has capacity.

89
00:03:08,800 --> 00:03:10,960
It all looks manageable, right up until the factory

90
00:03:10,960 --> 00:03:13,120
starts asking more specific questions.

91
00:03:13,120 --> 00:03:15,880
Questions like, which machine runs each operation?

92
00:03:15,880 --> 00:03:17,200
When is the fixture free?

93
00:03:17,200 --> 00:03:19,400
Who is certified on the shift for the setup?

94
00:03:19,400 --> 00:03:21,480
Does the material have quality release?

95
00:03:21,480 --> 00:03:23,280
Can the order reach heat treatment

96
00:03:23,280 --> 00:03:25,200
before the daily batch closes?

97
00:03:25,200 --> 00:03:26,440
A board work center plan usually

98
00:03:26,440 --> 00:03:27,600
doesn't answer those questions

99
00:03:27,600 --> 00:03:29,840
because it assumes capacity behaves like a single pool,

100
00:03:29,840 --> 00:03:31,640
but a work center may contain machines

101
00:03:31,640 --> 00:03:34,720
with different capabilities, calendars, and current conditions.

102
00:03:34,720 --> 00:03:36,760
Treating them as one smooth block of capacity

103
00:03:36,760 --> 00:03:40,320
works until one physical detail breaks the assumption.

104
00:03:40,320 --> 00:03:42,520
Monday morning brings two such details.

105
00:03:42,520 --> 00:03:44,480
The five axis machine sends a condition signal

106
00:03:44,480 --> 00:03:45,800
needing attention.

107
00:03:45,800 --> 00:03:47,840
Maintenance hasn't declared a full failure,

108
00:03:47,840 --> 00:03:49,960
but the machine can't be treated as freely available

109
00:03:49,960 --> 00:03:51,720
for the rest of the shift.

110
00:03:51,720 --> 00:03:53,920
At almost the same time, purchasing updates

111
00:03:53,920 --> 00:03:57,200
the expected arrival for a material batch, the rush order needs.

112
00:03:57,200 --> 00:03:58,800
It's not canceled, but it won't arrive

113
00:03:58,800 --> 00:04:00,120
when the plan assumed it would.

114
00:04:00,120 --> 00:04:02,680
This is the point where many teams start calling people.

115
00:04:02,680 --> 00:04:04,000
The planner opens a spreadsheet.

116
00:04:04,000 --> 00:04:05,680
The supervisor checks the machine.

117
00:04:05,680 --> 00:04:07,920
Someone calls the tool room about the fixture,

118
00:04:07,920 --> 00:04:10,400
purchasing calls the supplier, quality checks,

119
00:04:10,400 --> 00:04:12,800
whether another lot could be used.

120
00:04:12,800 --> 00:04:14,480
Those actions aren't wrong.

121
00:04:14,480 --> 00:04:16,400
They're often the only way a plant can respond

122
00:04:16,400 --> 00:04:19,240
when the rules and relationships live in people's heads.

123
00:04:19,240 --> 00:04:22,160
But the failed assumption sits underneath all of it.

124
00:04:22,160 --> 00:04:23,480
The original plan treated demand

125
00:04:23,480 --> 00:04:26,080
an average capacity has enough information to commit the work.

126
00:04:26,080 --> 00:04:28,760
The plant needs a schedule built from actual constraints,

127
00:04:28,760 --> 00:04:31,160
current status, and approved alternatives.

128
00:04:31,160 --> 00:04:32,880
Until those are part of the decision,

129
00:04:32,880 --> 00:04:36,280
the plan describes a hope, not an executable sequence.

130
00:04:36,280 --> 00:04:39,080
So before we talk about solvers, scheduling engines,

131
00:04:39,080 --> 00:04:42,080
or Microsoft architecture, keep one distinction in mind.

132
00:04:42,080 --> 00:04:44,480
A production plan tells you what you want to achieve.

133
00:04:44,480 --> 00:04:46,680
A real schedule must survive the factory that exists

134
00:04:46,680 --> 00:04:49,200
on Monday morning, a plan versus schedule.

135
00:04:49,200 --> 00:04:50,720
Here's the thing about production plans

136
00:04:50,720 --> 00:04:51,880
and production schedules.

137
00:04:51,880 --> 00:04:53,760
They sound almost the same, but they answer

138
00:04:53,760 --> 00:04:55,360
completely different questions.

139
00:04:55,360 --> 00:04:56,920
A production plan starts with demand.

140
00:04:56,920 --> 00:04:59,000
It looks at what customers need when they expect it,

141
00:04:59,000 --> 00:05:01,560
what material you should buy, and how much capacity

142
00:05:01,560 --> 00:05:03,800
each area might need over a week or a month.

143
00:05:03,800 --> 00:05:05,520
It groups work at the work center level,

144
00:05:05,520 --> 00:05:07,600
machining, welding, assembly.

145
00:05:07,600 --> 00:05:10,080
That makes it useful for sales commitments, purchasing,

146
00:05:10,080 --> 00:05:12,280
and high-level capacity decisions.

147
00:05:12,280 --> 00:05:14,320
But it won't tell an operator what to run a 10, 20

148
00:05:14,320 --> 00:05:15,000
on Tuesday.

149
00:05:15,000 --> 00:05:16,840
A finite schedule does exactly that.

150
00:05:16,840 --> 00:05:18,800
It breaks work down to the operation level,

151
00:05:18,800 --> 00:05:21,080
then assigns that operation to a real resource

152
00:05:21,080 --> 00:05:23,800
in a real sequence with a start time and finish time

153
00:05:23,800 --> 00:05:25,400
that fit the resource calendar.

154
00:05:25,400 --> 00:05:26,640
It takes the intent from the plan

155
00:05:26,640 --> 00:05:29,040
and turns it into a series of physical commitments.

156
00:05:29,040 --> 00:05:30,760
Take the housing order in our plant.

157
00:05:30,760 --> 00:05:33,080
The plan may reserve eight hours in the machining work

158
00:05:33,080 --> 00:05:34,000
center this week.

159
00:05:34,000 --> 00:05:36,960
Good, that tells us machining needs capacity for that order.

160
00:05:36,960 --> 00:05:40,120
But the plan still ignores which machine can do the work,

161
00:05:40,120 --> 00:05:42,040
whether that machine has a maintenance window,

162
00:05:42,040 --> 00:05:44,600
whether the setup already sits on another machine,

163
00:05:44,600 --> 00:05:47,160
and whether the right person works that shift.

164
00:05:47,160 --> 00:05:49,960
Those details decide whether those eight hours actually

165
00:05:49,960 --> 00:05:51,360
exist when you need them.

166
00:05:51,360 --> 00:05:52,840
Now, a lot of planning systems use

167
00:05:52,840 --> 00:05:54,800
what people call infinite capacity.

168
00:05:54,800 --> 00:05:56,560
That phrase sounds more dramatic than it is.

169
00:05:56,560 --> 00:05:58,160
It just means the planning logic can

170
00:05:58,160 --> 00:06:01,000
place as much demand into a time-bucket as it wants,

171
00:06:01,000 --> 00:06:03,280
even when the factory can't physically complete all

172
00:06:03,280 --> 00:06:05,200
that work in the same period.

173
00:06:05,200 --> 00:06:06,680
For rough planning, that makes sense.

174
00:06:06,680 --> 00:06:08,600
You need a way to see demand building up

175
00:06:08,600 --> 00:06:11,200
before every routing calendar and shop floor event

176
00:06:11,200 --> 00:06:12,280
has been confirmed.

177
00:06:12,280 --> 00:06:14,800
Sales and operations planning would get painfully slow if every

178
00:06:14,800 --> 00:06:17,480
forecast needed a minute by minute machine schedule.

179
00:06:17,480 --> 00:06:20,320
Infinite capacity planning gives you a first view of the load.

180
00:06:20,320 --> 00:06:22,880
It tells you that machining demand next month looks higher

181
00:06:22,880 --> 00:06:24,640
than normal, or that material needs

182
00:06:24,640 --> 00:06:26,000
to arrive before a certain week.

183
00:06:26,000 --> 00:06:28,120
The problem starts when that rough planning output

184
00:06:28,120 --> 00:06:30,120
becomes a shop floor promise.

185
00:06:30,120 --> 00:06:32,680
A system might load 40 hours of work into a machine group

186
00:06:32,680 --> 00:06:35,280
for a single day because the orders carry urgent due dates.

187
00:06:35,280 --> 00:06:36,640
The report won't show an error.

188
00:06:36,640 --> 00:06:39,520
It simply assumes the work center can absorb the demand.

189
00:06:39,520 --> 00:06:41,440
People see the planned date, release the work,

190
00:06:41,440 --> 00:06:43,560
and discover later that one spindle, one fixture,

191
00:06:43,560 --> 00:06:46,120
or one qualified operator has become the actual limit.

192
00:06:46,120 --> 00:06:48,920
finite capacity scheduling removes that assumption.

193
00:06:48,920 --> 00:06:51,520
Every resource has a calendar, and each available minute

194
00:06:51,520 --> 00:06:53,760
can only support one activity at a time.

195
00:06:53,760 --> 00:06:55,520
If a machine is planned for maintenance,

196
00:06:55,520 --> 00:06:57,520
that time disappears from the schedule.

197
00:06:57,520 --> 00:06:59,640
If a job needs setup, setup consumes time

198
00:06:59,640 --> 00:07:01,200
before production starts.

199
00:07:01,200 --> 00:07:03,840
If an operation takes a fixture for its full duration,

200
00:07:03,840 --> 00:07:06,400
the fixture can't appear in another job at the same moment

201
00:07:06,400 --> 00:07:08,800
just because a report needs both orders to ship.

202
00:07:08,800 --> 00:07:11,040
The schedule has to make room for reality.

203
00:07:11,040 --> 00:07:12,960
Now this doesn't mean finite scheduling

204
00:07:12,960 --> 00:07:14,520
creates more capacity.

205
00:07:14,520 --> 00:07:17,160
It does something less glamorous and much more useful.

206
00:07:17,160 --> 00:07:19,800
It exposes where demand exceeds available capacity

207
00:07:19,800 --> 00:07:22,040
before the plant discovers it through expediting

208
00:07:22,040 --> 00:07:23,520
and late delivery calls.

209
00:07:23,520 --> 00:07:25,400
Take two urgent housing orders, both need

210
00:07:25,400 --> 00:07:27,200
the same five-axis operation.

211
00:07:27,200 --> 00:07:29,880
Both carry due dates that suggest they should run first.

212
00:07:29,880 --> 00:07:31,680
An infinite plan can place both at the front

213
00:07:31,680 --> 00:07:33,840
of the machining load and call them urgent.

214
00:07:33,840 --> 00:07:35,520
A finite schedule has to choose.

215
00:07:35,520 --> 00:07:37,600
One order can occupy the spindle first.

216
00:07:37,600 --> 00:07:40,400
The second order follows moves to an approved alternative

217
00:07:40,400 --> 00:07:41,440
or becomes late.

218
00:07:41,440 --> 00:07:43,680
There isn't a fourth option where one spindle

219
00:07:43,680 --> 00:07:45,280
runs two programs at once.

220
00:07:45,280 --> 00:07:46,560
That choice can feel uncomfortable

221
00:07:46,560 --> 00:07:48,360
because the schedule now shows a late order

222
00:07:48,360 --> 00:07:49,680
that the plan kept hidden.

223
00:07:49,680 --> 00:07:52,080
But the late order didn't appear because of the schedule.

224
00:07:52,080 --> 00:07:53,960
The conflict already existed in the factory.

225
00:07:53,960 --> 00:07:56,440
The schedule just puts a clear time and resource

226
00:07:56,440 --> 00:07:58,800
against it, which gives the plan a something concrete

227
00:07:58,800 --> 00:08:02,280
to discuss with production, sales, and the customer team.

228
00:08:02,280 --> 00:08:04,760
And there's another distinction worth keeping in mind.

229
00:08:04,760 --> 00:08:07,200
A schedule isn't just a list sorted by due date.

230
00:08:07,200 --> 00:08:08,960
Due date tells you when an order should finish.

231
00:08:08,960 --> 00:08:11,000
It doesn't automatically tell you which sequence

232
00:08:11,000 --> 00:08:14,120
creates the best outcome when set up time, material readiness,

233
00:08:14,120 --> 00:08:16,680
shift coverage, and downstream steps all pull

234
00:08:16,680 --> 00:08:17,840
in different directions.

235
00:08:17,840 --> 00:08:19,040
So the scheduler needs rules.

236
00:08:19,040 --> 00:08:20,080
Some rules can't be broken.

237
00:08:20,080 --> 00:08:21,440
Some express a preference.

238
00:08:21,440 --> 00:08:23,560
Some tell the system which pain the business would rather

239
00:08:23,560 --> 00:08:25,960
accept when every order can't finish exactly

240
00:08:25,960 --> 00:08:27,320
when someone hoped it would.

241
00:08:27,320 --> 00:08:28,880
Those rules are constraints.

242
00:08:28,880 --> 00:08:30,920
And they turn a production plan from a statement

243
00:08:30,920 --> 00:08:33,680
of intent into work that can actually run.

244
00:08:33,680 --> 00:08:35,400
What a constraint actually means.

245
00:08:35,400 --> 00:08:37,640
A constraint is a condition the schedule must respect

246
00:08:37,640 --> 00:08:39,240
while it places work in time.

247
00:08:39,240 --> 00:08:41,480
That sounds simple, but factories often treat constraints

248
00:08:41,480 --> 00:08:44,120
as warnings after someone has already built the plan.

249
00:08:44,120 --> 00:08:45,480
A dashboard turns red.

250
00:08:45,480 --> 00:08:46,760
A planner sees an overload.

251
00:08:46,760 --> 00:08:48,760
A supervisor says a job can't run yet.

252
00:08:48,760 --> 00:08:50,920
By then, the schedule has already promised work

253
00:08:50,920 --> 00:08:52,720
that the factory can't support.

254
00:08:52,720 --> 00:08:54,040
In a constraint-based schedule,

255
00:08:54,040 --> 00:08:56,280
the rule sits inside the decision itself.

256
00:08:56,280 --> 00:08:58,960
Picture the scheduler trying to place one machining operation

257
00:08:58,960 --> 00:09:00,200
at two in the afternoon.

258
00:09:00,200 --> 00:09:02,720
It doesn't just ask whether the machine appears free.

259
00:09:02,720 --> 00:09:04,920
It checks whether the machine can run that part,

260
00:09:04,920 --> 00:09:07,200
whether the work from the prior operation has finished,

261
00:09:07,200 --> 00:09:08,560
whether the fixture is free,

262
00:09:08,560 --> 00:09:10,400
whether material has passed release,

263
00:09:10,400 --> 00:09:13,040
and whether a qualified person covers the shift.

264
00:09:13,040 --> 00:09:16,520
If any hard rule fails, that time slot isn't an option.

265
00:09:16,520 --> 00:09:18,120
Hard constraints describe conditions

266
00:09:18,120 --> 00:09:20,480
that production can't safely or validly ignore.

267
00:09:20,480 --> 00:09:21,840
Safety rules belong here.

268
00:09:21,840 --> 00:09:24,640
So does material that hasn't passed quality inspection,

269
00:09:24,640 --> 00:09:26,840
a fixture that another job already reserves,

270
00:09:26,840 --> 00:09:28,640
or a machine program that engineering

271
00:09:28,640 --> 00:09:30,840
hasn't approved for an alternate resource?

272
00:09:30,840 --> 00:09:33,520
Operator qualification can also become a hard constraint.

273
00:09:33,520 --> 00:09:36,480
If a setup on the five-axis machine needs a certified person,

274
00:09:36,480 --> 00:09:38,400
then a shift with general machine coverage,

275
00:09:38,400 --> 00:09:39,960
but no certified setup person

276
00:09:39,960 --> 00:09:42,000
doesn't create usable setup capacity.

277
00:09:42,000 --> 00:09:43,680
The person can't may look fine,

278
00:09:43,680 --> 00:09:45,080
the skill coverage doesn't.

279
00:09:45,080 --> 00:09:47,160
That distinction catches a lot of planning errors.

280
00:09:47,160 --> 00:09:50,120
A hard constraint doesn't mean the condition can never change.

281
00:09:50,120 --> 00:09:51,880
Maintenance may repair a machine,

282
00:09:51,880 --> 00:09:53,720
quality may release a material lot,

283
00:09:53,720 --> 00:09:55,680
a supervisor may arrange approved over time,

284
00:09:55,680 --> 00:09:57,880
engineering may approve an alternate routing.

285
00:09:57,880 --> 00:10:00,560
But until someone records that change through the right process,

286
00:10:00,560 --> 00:10:03,040
the schedule should treat the rule as fixed.

287
00:10:03,040 --> 00:10:04,600
Otherwise, the system isn't planning.

288
00:10:04,600 --> 00:10:07,040
It's guessing which rules people might choose to bend later.

289
00:10:07,040 --> 00:10:08,800
Soft constraints work differently.

290
00:10:08,800 --> 00:10:11,600
They express a preference, a cost, or a business goal.

291
00:10:11,600 --> 00:10:14,760
You might prefer to run parts from the same material family together

292
00:10:14,760 --> 00:10:16,880
because it reduces cleaning and setup time.

293
00:10:16,880 --> 00:10:19,400
You might want to meet a target date, avoid overtime,

294
00:10:19,400 --> 00:10:23,000
or keep work in progress from building between machining and heat treatment.

295
00:10:23,000 --> 00:10:25,600
Those are real concerns, but they don't all carry the same weight

296
00:10:25,600 --> 00:10:27,720
as a safety lockout or unavailable material.

297
00:10:27,720 --> 00:10:31,160
Suppose the scheduler finds two ways to complete a housing order.

298
00:10:31,160 --> 00:10:33,720
The first keeps the same fixture set up in place,

299
00:10:33,720 --> 00:10:36,240
but delivers the order later than the commercial target.

300
00:10:36,240 --> 00:10:40,400
The second changes the setup creates extra work for the tool room and finishes sooner.

301
00:10:40,400 --> 00:10:42,120
Both may meet every hard constraint,

302
00:10:42,120 --> 00:10:44,840
the system then uses soft constraints to compare them.

303
00:10:44,840 --> 00:10:46,480
It can assign a penalty to lateness,

304
00:10:46,480 --> 00:10:49,440
another penalty to set up changes, and another to overtime.

305
00:10:49,440 --> 00:10:51,040
The result isn't a universal answer.

306
00:10:51,040 --> 00:10:53,600
It reflects the policy that the business has chosen.

307
00:10:53,600 --> 00:10:54,960
That policy should be visible.

308
00:10:54,960 --> 00:10:57,320
If an urgent customer order always jumps the queue,

309
00:10:57,320 --> 00:11:00,600
someone needs to state that rule and accept its effect on other customers.

310
00:11:00,600 --> 00:11:04,120
If change over reduction matters more than due date performance in a given area,

311
00:11:04,120 --> 00:11:06,320
the planner should be able to see that too.

312
00:11:06,320 --> 00:11:10,520
Hidden weights inside a scheduling model turn business choices into technical surprises.

313
00:11:10,520 --> 00:11:15,040
A useful way to think about this is feasibility first, preference second.

314
00:11:15,040 --> 00:11:17,880
First, find schedules that respect the hard limits.

315
00:11:17,880 --> 00:11:19,360
No resource conflicts.

316
00:11:19,360 --> 00:11:23,080
No operation starts before its predecessor provides the needed quantity.

317
00:11:23,080 --> 00:11:24,480
No unapproved material.

318
00:11:24,480 --> 00:11:26,840
No work assigned to a person who can't perform it.

319
00:11:26,840 --> 00:11:29,960
Only then ask which feasible schedule the plant prefers.

320
00:11:29,960 --> 00:11:34,640
That sequence matters because an attractive schedule that breaks a hard rule isn't a plan.

321
00:11:34,640 --> 00:11:36,640
It's a problem handed to the next shift.

322
00:11:36,640 --> 00:11:39,240
The scheduler tests candidate moves constantly.

323
00:11:39,240 --> 00:11:42,760
Move this job forward and it may take the fixture away from another order.

324
00:11:42,760 --> 00:11:46,800
Assign it to the alternate machine and the approved operator may no longer be present.

325
00:11:46,800 --> 00:11:49,840
Hold it for the next shift and it may miss a downstream window.

326
00:11:49,840 --> 00:11:53,040
Each change carries effects beyond the one operation that moved.

327
00:11:53,040 --> 00:11:56,600
That's why simple drag and drop planning often becomes difficult in a busy plant.

328
00:11:56,600 --> 00:12:01,080
Moving one block of work can alter a chain of commitments that isn't visible in a basic queue.

329
00:12:01,080 --> 00:12:03,080
Constraints give that chain a formal shape.

330
00:12:03,080 --> 00:12:04,640
They also make trade-offs honest.

331
00:12:04,640 --> 00:12:07,280
If the plant can't meet every due date after a disruption,

332
00:12:07,280 --> 00:12:10,200
a good schedule doesn't hide that result with optimistic dates.

333
00:12:10,200 --> 00:12:11,800
It presents feasible choices.

334
00:12:11,800 --> 00:12:16,320
Protect one customer commitment, reduce setup loss, hold work for approved material,

335
00:12:16,320 --> 00:12:18,960
or pay for extra capacity where policy allows it.

336
00:12:18,960 --> 00:12:20,320
People still make the commitment.

337
00:12:20,320 --> 00:12:23,880
The system gives them options that obey the rules they agreed to use.

338
00:12:23,880 --> 00:12:28,480
For that to work, the scheduler needs a clear view of the demand it is trying to satisfy.

339
00:12:28,480 --> 00:12:31,640
Orders tell it what needs to be produced when the business expects it

340
00:12:31,640 --> 00:12:35,080
and which commitments now compete for the same physical capacity.

341
00:12:35,080 --> 00:12:36,920
Demand and order inputs.

342
00:12:36,920 --> 00:12:41,160
The scheduling problem starts with an order not because ERP has every fact the scheduler needs,

343
00:12:41,160 --> 00:12:44,920
but because ERP usually carries the commercial commitment that production has to meet.

344
00:12:44,920 --> 00:12:48,760
For each order, the scheduler needs a few basics, a stable identity,

345
00:12:48,760 --> 00:12:51,880
the product or part revision, the quantity, the due date,

346
00:12:51,880 --> 00:12:53,880
and the priority the business assigned.

347
00:12:53,880 --> 00:12:56,200
It also needs to know whether that date is a customer promise

348
00:12:56,200 --> 00:13:00,120
an internal target or just a requested date nobody has confirmed against capacity yet.

349
00:13:00,120 --> 00:13:01,560
Those dates mean different things.

350
00:13:01,560 --> 00:13:03,240
Take the housing order due on Friday.

351
00:13:03,240 --> 00:13:05,480
Sales might have promised Friday to the customer.

352
00:13:05,480 --> 00:13:08,520
Production might want the milling operation finished a day earlier,

353
00:13:08,520 --> 00:13:11,560
so heat treatment and inspection still have room to work.

354
00:13:11,560 --> 00:13:13,400
The scheduling model needs both dates.

355
00:13:13,400 --> 00:13:16,280
A missed internal target gives the planner time to react.

356
00:13:16,280 --> 00:13:19,640
A missed customer promise has a different consequence altogether.

357
00:13:19,640 --> 00:13:21,240
Priority needs the same care.

358
00:13:21,240 --> 00:13:22,840
Calling something urgent isn't enough.

359
00:13:22,840 --> 00:13:25,400
A rush order might carry a contractual delivery risk.

360
00:13:25,400 --> 00:13:28,040
Another order might protect a customer line that can't stop.

361
00:13:28,040 --> 00:13:29,640
A third might be commercially important,

362
00:13:29,640 --> 00:13:33,800
but still have more time than the person requesting it admits during the Monday morning call.

363
00:13:33,800 --> 00:13:35,960
The scheduler can't settle that argument by itself,

364
00:13:35,960 --> 00:13:38,520
but it can use a priority rule the business has agreed to.

365
00:13:38,520 --> 00:13:40,920
That only works when priority comes from a controlled source.

366
00:13:40,920 --> 00:13:42,760
If every planner can mark every order,

367
00:13:42,760 --> 00:13:45,080
urgent urgency stops meaning anything.

368
00:13:45,080 --> 00:13:46,440
You don't have a priority model.

369
00:13:46,440 --> 00:13:49,160
You have a queue where the loudest request wins.

370
00:13:49,160 --> 00:13:52,200
And that's a perfectly reliable way to create more loud requests.

371
00:13:52,200 --> 00:13:54,280
The work order adds the execution state.

372
00:13:54,280 --> 00:13:56,840
It tells the scheduling layer whether the work has been released,

373
00:13:56,840 --> 00:13:59,800
started, paused, completed, scrapped or moved into rework.

374
00:13:59,800 --> 00:14:02,440
Those states change what the scheduler can still move.

375
00:14:02,440 --> 00:14:04,600
A released order might be ready for dispatch.

376
00:14:04,600 --> 00:14:06,200
Subject to conditions will cover later.

377
00:14:06,200 --> 00:14:07,800
A started order needs more detail.

378
00:14:07,800 --> 00:14:10,520
How much quantity has already passed through the current operation?

379
00:14:10,520 --> 00:14:12,200
Is the part still on the machine?

380
00:14:12,200 --> 00:14:13,480
Has the setup been removed?

381
00:14:13,480 --> 00:14:16,360
Did the operation stop because of a fault, a quality hold,

382
00:14:16,360 --> 00:14:17,480
or a planned pause?

383
00:14:17,480 --> 00:14:20,600
Without that status, the schedule can create nonsense.

384
00:14:20,600 --> 00:14:22,520
Imagine a work order for 50 housings.

385
00:14:22,520 --> 00:14:25,160
20 units have already completed the milling operation.

386
00:14:25,160 --> 00:14:27,640
10 remain clamped on the machine when the fault occurs,

387
00:14:27,640 --> 00:14:29,560
and 20 have not started.

388
00:14:29,560 --> 00:14:32,840
Treating all 50 units as if they were waiting at the same point

389
00:14:32,840 --> 00:14:35,560
in the routing would distort the plan immediately.

390
00:14:35,560 --> 00:14:37,400
The scheduler needs to know what has finished,

391
00:14:37,400 --> 00:14:40,360
what remains and what state the work is in right now.

392
00:14:40,360 --> 00:14:42,360
Scrap and rework matter for the same reason.

393
00:14:42,360 --> 00:14:45,000
A completed count doesn't always mean usable output.

394
00:14:45,000 --> 00:14:48,280
If quality rejects several parts, the remaining demand may increase.

395
00:14:48,280 --> 00:14:51,320
If rework sends a batch back for another machining step,

396
00:14:51,320 --> 00:14:54,840
it consumes capacity that the original order plan never expected.

397
00:14:54,840 --> 00:14:55,800
The order has changed.

398
00:14:55,800 --> 00:14:57,320
The schedule has to change with it.

399
00:14:57,320 --> 00:14:59,400
Demand also changes in less dramatic ways.

400
00:14:59,400 --> 00:15:01,240
A customer might ask for a partial shipment.

401
00:15:01,240 --> 00:15:03,640
Production might split one work order into smaller batches

402
00:15:03,640 --> 00:15:05,560
because the first quantity needs to ship sooner.

403
00:15:05,560 --> 00:15:08,200
Sales might reduce the quantity, cancel an order,

404
00:15:08,200 --> 00:15:10,840
or add a rush requirement against the same product family.

405
00:15:10,840 --> 00:15:13,640
Each change needs a clear event, a time and an owner.

406
00:15:13,640 --> 00:15:16,680
Otherwise, one system schedules the original quantity,

407
00:15:16,680 --> 00:15:18,680
another reports the revised quantity,

408
00:15:18,680 --> 00:15:21,080
and the planner ends up comparing two views

409
00:15:21,080 --> 00:15:22,520
that both look plausible.

410
00:15:22,520 --> 00:15:24,440
That isn't a scheduling problem first.

411
00:15:24,440 --> 00:15:26,200
It's a problem with shared facts.

412
00:15:26,200 --> 00:15:27,960
Planning fences help manage this.

413
00:15:27,960 --> 00:15:30,360
A planning fence defines how much of the near-term schedule

414
00:15:30,360 --> 00:15:33,640
should stay stable unless a serious event forces change.

415
00:15:33,640 --> 00:15:35,800
Inside that fence, a released and prepared job

416
00:15:35,800 --> 00:15:38,120
shouldn't move every time another request arrives.

417
00:15:38,120 --> 00:15:40,360
Outside it, the scheduler can consider more options

418
00:15:40,360 --> 00:15:42,200
because the work hasn't yet reached the point

419
00:15:42,200 --> 00:15:45,400
where people, tools and material have committed to it.

420
00:15:45,400 --> 00:15:46,920
The right fence depends on the plant.

421
00:15:46,920 --> 00:15:49,400
It might reflect setup lead time, material lead time,

422
00:15:49,400 --> 00:15:51,240
customer promise rules, or simply the point

423
00:15:51,240 --> 00:15:54,440
where constant-resequencing starts damaging execution.

424
00:15:54,440 --> 00:15:57,480
One detail often gets ignored until integration begins.

425
00:15:57,480 --> 00:15:58,920
Identifiers.

426
00:15:58,920 --> 00:16:00,840
The sales order number, work order number,

427
00:16:00,840 --> 00:16:02,760
operation number, batch number, and material

428
00:16:02,760 --> 00:16:04,840
lot reference need to connect across ERP,

429
00:16:04,840 --> 00:16:07,560
MES, quality maintenance, and the scheduling layer.

430
00:16:07,560 --> 00:16:09,800
They don't all need to use the same native number.

431
00:16:09,800 --> 00:16:12,200
But the relationships must be clear and stable.

432
00:16:12,200 --> 00:16:15,080
If the MES records an operation against one identifier,

433
00:16:15,080 --> 00:16:16,840
while the scheduler expects another,

434
00:16:16,840 --> 00:16:19,400
real-time visibility turns into a debate about which row

435
00:16:19,400 --> 00:16:21,000
belongs to which job.

436
00:16:21,000 --> 00:16:23,800
No optimizer can repair an identity problem after the fact.

437
00:16:23,800 --> 00:16:26,040
Or does define the demand and the commitment?

438
00:16:26,040 --> 00:16:27,880
They still don't explain the work itself.

439
00:16:27,880 --> 00:16:29,880
For that, the scheduler needs the routing.

440
00:16:29,880 --> 00:16:31,320
The steps the part must follow,

441
00:16:31,320 --> 00:16:33,160
the dependencies between those steps,

442
00:16:33,160 --> 00:16:35,080
and the approved ways the factory can produce it.

443
00:16:35,080 --> 00:16:38,840
Routing's, bills of material, and operation dependencies.

444
00:16:38,840 --> 00:16:41,800
A routing tells the scheduler how the order moves through the factory.

445
00:16:41,800 --> 00:16:44,440
It turns a product demand into a chain of operations,

446
00:16:44,440 --> 00:16:45,880
each with its own duration,

447
00:16:45,880 --> 00:16:48,440
required output, and place in the production flow.

448
00:16:48,440 --> 00:16:50,600
For our machine housing, milling comes first.

449
00:16:50,600 --> 00:16:51,880
Heat treatment follows.

450
00:16:51,880 --> 00:16:53,640
Inspection follows heat treatment.

451
00:16:53,640 --> 00:16:56,440
Assembly can only begin after inspection releases the part.

452
00:16:56,440 --> 00:16:59,640
That sounds obvious, but the routing needs to state those links in a form.

453
00:16:59,640 --> 00:17:02,440
A scheduling engine can test every time it moves work.

454
00:17:02,440 --> 00:17:03,480
Sequence matters.

455
00:17:03,480 --> 00:17:06,120
If the milling operation finishes late,

456
00:17:06,120 --> 00:17:09,400
heat treatment can't simply remain where it's set in the original plan.

457
00:17:09,400 --> 00:17:13,080
The schedule must test whether the completed quantity can still enter the next batch window,

458
00:17:13,080 --> 00:17:14,280
whether the batch has room,

459
00:17:14,280 --> 00:17:17,160
and whether inspection capacity will still be available after that.

460
00:17:17,160 --> 00:17:18,840
One operation doesn't live alone.

461
00:17:18,840 --> 00:17:21,160
It creates a condition for the next operation.

462
00:17:21,160 --> 00:17:23,080
This is usually called a president's rule.

463
00:17:23,080 --> 00:17:26,360
An operation must finish or reach a stated level of completion

464
00:17:26,360 --> 00:17:27,960
before its successor can start.

465
00:17:27,960 --> 00:17:30,360
In the simplest case, the whole batch moves together,

466
00:17:30,360 --> 00:17:31,800
all housings finish milling,

467
00:17:31,800 --> 00:17:33,800
then the batch moves to heat treatment.

468
00:17:33,800 --> 00:17:36,440
Real factories often use more practical rules.

469
00:17:36,440 --> 00:17:39,000
A larger batch may transfer in smaller quantities.

470
00:17:39,000 --> 00:17:41,880
If a milling cell completes the first group of parts early,

471
00:17:41,880 --> 00:17:45,080
heat treatment may accept that group while milling continues with the rest.

472
00:17:45,080 --> 00:17:47,560
That can reduce waiting time and protect the due date.

473
00:17:47,560 --> 00:17:49,320
Still, the rule needs limits.

474
00:17:49,320 --> 00:17:51,720
Heat treatment may require a minimum batch size.

475
00:17:51,720 --> 00:17:55,160
Quality may require all parts from a certain lot to stay together.

476
00:17:55,160 --> 00:17:58,120
Assembly may only accept work after a full inspection release.

477
00:17:58,120 --> 00:17:59,800
Partial transfer isn't a vague idea.

478
00:17:59,800 --> 00:18:01,320
It needs clear conditions.

479
00:18:01,320 --> 00:18:03,640
The routing also connects to the bill of material.

480
00:18:03,640 --> 00:18:05,080
Usually called the bomb.

481
00:18:05,080 --> 00:18:06,680
The routing explains what work happens.

482
00:18:06,680 --> 00:18:10,040
The bomb explains what inputs that work consumes or requires.

483
00:18:10,040 --> 00:18:13,240
For the housing, that may include raw stock, cutting inserts,

484
00:18:13,240 --> 00:18:15,560
bought-out components used later in assembly,

485
00:18:15,560 --> 00:18:17,000
and processed consumables.

486
00:18:17,000 --> 00:18:19,080
A plan can show the work order as released

487
00:18:19,080 --> 00:18:21,320
while the actual work still can't start.

488
00:18:21,320 --> 00:18:22,680
Perhaps the raw stock has arrived,

489
00:18:22,680 --> 00:18:25,160
but the specified insert grade isn't available.

490
00:18:25,160 --> 00:18:27,160
Maybe a bought-out seal needed in final assembly

491
00:18:27,160 --> 00:18:28,920
sits on a late supplier delivery.

492
00:18:28,920 --> 00:18:30,520
Or the material exists in inventory

493
00:18:30,520 --> 00:18:32,440
but belongs to another allocated order.

494
00:18:32,440 --> 00:18:34,760
And moving it would create a shortage somewhere else.

495
00:18:34,760 --> 00:18:37,560
The scheduler doesn't need to invent an inventory system.

496
00:18:37,560 --> 00:18:41,480
ERP and warehouse processes still own stock records and allocation rules.

497
00:18:41,480 --> 00:18:44,280
But the scheduler needs a reliable answer to a simple question.

498
00:18:44,280 --> 00:18:48,040
Can this operation consume the material it requires at the time it's planned to start?

499
00:18:48,040 --> 00:18:49,720
That answer can change by operation.

500
00:18:49,720 --> 00:18:51,960
Raw stock may control the start of milling.

501
00:18:51,960 --> 00:18:54,280
A special coating chemical may matter later.

502
00:18:54,280 --> 00:18:56,920
A purchased component may not affect machining at all,

503
00:18:56,920 --> 00:18:59,080
but it can block final assembly and delivery.

504
00:18:59,080 --> 00:19:01,080
If the scheduler ignores those differences,

505
00:19:01,080 --> 00:19:03,400
it can create an attractive machining plan

506
00:19:03,400 --> 00:19:05,880
that only builds work in progress with nowhere to go.

507
00:19:05,880 --> 00:19:08,360
Now consider alternate routes.

508
00:19:08,360 --> 00:19:11,240
People often say we can run that somewhere else.

509
00:19:11,240 --> 00:19:14,280
As if flexibility exists by default in practice

510
00:19:14,280 --> 00:19:16,040
an alternate route needs approval.

511
00:19:16,040 --> 00:19:17,720
It may use a different machine group,

512
00:19:17,720 --> 00:19:18,920
a different program,

513
00:19:18,920 --> 00:19:20,280
another inspection method,

514
00:19:20,280 --> 00:19:21,480
or a different process time.

515
00:19:21,480 --> 00:19:23,720
The route must name those approved choices.

516
00:19:23,720 --> 00:19:27,400
For our housing, the main route may use the five axis machine

517
00:19:27,400 --> 00:19:29,800
while an alternate route allows the second machine

518
00:19:29,800 --> 00:19:31,560
under a specific program revision

519
00:19:31,560 --> 00:19:33,400
and a limited range of part variance

520
00:19:33,400 --> 00:19:35,000
that is useful flexibility.

521
00:19:35,000 --> 00:19:37,000
A generic rule that assigns the job to any machine

522
00:19:37,000 --> 00:19:39,080
with spare hours isn't flexibility.

523
00:19:39,080 --> 00:19:39,960
It's fiction.

524
00:19:39,960 --> 00:19:42,360
The scheduler should only consider resources and parts

525
00:19:42,360 --> 00:19:44,760
that engineering, quality and production have accepted.

526
00:19:44,760 --> 00:19:47,240
It can compare those options when disruption hits,

527
00:19:47,240 --> 00:19:48,600
but it shouldn't create a route

528
00:19:48,600 --> 00:19:50,760
because an open slot looks convenient.

529
00:19:50,760 --> 00:19:52,760
Re-work adds another layer.

530
00:19:52,760 --> 00:19:54,920
Inspection may find a condition that allows correction

531
00:19:54,920 --> 00:19:56,680
through a defined rework operation.

532
00:19:56,680 --> 00:19:58,200
The part could return to machining,

533
00:19:58,200 --> 00:20:00,760
then go back through inspection before it reaches assembly.

534
00:20:00,760 --> 00:20:03,640
That loop adds capacity demand, changes the due date risk,

535
00:20:03,640 --> 00:20:06,200
and may need a separate approval depending on the defect.

536
00:20:06,200 --> 00:20:08,520
A routing that only describes the happy path

537
00:20:08,520 --> 00:20:10,360
leaves rework outside the plan.

538
00:20:10,360 --> 00:20:11,880
That doesn't mean you need to model

539
00:20:11,880 --> 00:20:13,720
every rare exception on day one.

540
00:20:13,720 --> 00:20:16,200
It means the factory should identify recurring rework parts

541
00:20:16,200 --> 00:20:17,960
that consume real capacity

542
00:20:17,960 --> 00:20:19,560
and follow control rules.

543
00:20:19,560 --> 00:20:22,520
Otherwise, the schedule repeatedly treats rework as a surprise

544
00:20:22,520 --> 00:20:24,920
even when everyone on the shop floor knows it happens.

545
00:20:24,920 --> 00:20:26,280
There's also a version question.

546
00:20:26,280 --> 00:20:28,680
A routing can change when engineering changes the part,

547
00:20:28,680 --> 00:20:30,680
the process or an approved machine program.

548
00:20:30,680 --> 00:20:32,600
The scheduler needs to know which routing version

549
00:20:32,600 --> 00:20:33,880
applies to each order.

550
00:20:33,880 --> 00:20:36,360
Mixing an old process time with a new inspection step

551
00:20:36,360 --> 00:20:38,200
can create a schedule that looks feasible

552
00:20:38,200 --> 00:20:40,680
while relying on instructions nobody should follow.

553
00:20:40,680 --> 00:20:43,000
The routing is the production logic for the order.

554
00:20:43,000 --> 00:20:44,920
The boorm supplies the physical inputs.

555
00:20:44,920 --> 00:20:46,600
Their dependencies tell the scheduler

556
00:20:46,600 --> 00:20:47,960
what must happen first,

557
00:20:47,960 --> 00:20:49,000
what can overlap,

558
00:20:49,000 --> 00:20:50,920
and which alternatives remain valid.

559
00:20:50,920 --> 00:20:53,640
But a routing still describes capability in broad terms.

560
00:20:53,640 --> 00:20:55,800
Each operation now needs a real place to run

561
00:20:55,800 --> 00:20:58,280
with actual capacity at the time the schedule needs it.

562
00:20:58,280 --> 00:21:00,680
Resource modeling beyond a machine name.

563
00:21:00,680 --> 00:21:02,840
A routing might point to a work center called

564
00:21:02,840 --> 00:21:04,120
five axis machining,

565
00:21:04,120 --> 00:21:07,240
but that still isn't enough detail for a schedule to work with.

566
00:21:07,240 --> 00:21:09,640
A work center is a useful planning label, sure.

567
00:21:09,640 --> 00:21:11,400
But the scheduler has to drill down

568
00:21:11,400 --> 00:21:12,680
through the factory structure

569
00:21:12,680 --> 00:21:14,760
until it finds the actual resource

570
00:21:14,760 --> 00:21:16,120
that will run the operation.

571
00:21:16,120 --> 00:21:17,240
So think of it like this.

572
00:21:17,240 --> 00:21:18,760
First a plant, then an area,

573
00:21:18,760 --> 00:21:20,920
then a work center, then a specific machine,

574
00:21:20,920 --> 00:21:22,920
and sometimes even a specific spindle,

575
00:21:22,920 --> 00:21:25,720
station, or pallet position inside that machine.

576
00:21:25,720 --> 00:21:28,120
That level of detail changes the answer.

577
00:21:28,120 --> 00:21:30,920
Our housing order doesn't run on something called machining.

578
00:21:30,920 --> 00:21:33,480
It runs on a machine with a defined working envelope,

579
00:21:33,480 --> 00:21:35,160
a specific accuracy range,

580
00:21:35,160 --> 00:21:36,360
an approved program,

581
00:21:36,360 --> 00:21:39,080
and a calendar that may or may not have usable time.

582
00:21:39,080 --> 00:21:42,040
If the machine has two spindles that can run independently,

583
00:21:42,040 --> 00:21:43,400
the model needs to know that.

584
00:21:43,400 --> 00:21:45,480
If it has one spindle and two pallet positions,

585
00:21:45,480 --> 00:21:47,160
those are different forms of capacity.

586
00:21:47,160 --> 00:21:48,760
A planner might see one machine,

587
00:21:48,760 --> 00:21:50,520
but the scheduling model needs to see

588
00:21:50,520 --> 00:21:52,680
how work actually flows through that machine.

589
00:21:52,680 --> 00:21:54,600
Capability also lives in the resource model,

590
00:21:54,600 --> 00:21:55,800
not just in the routing.

591
00:21:55,800 --> 00:21:57,400
A machine might look nearly identical

592
00:21:57,400 --> 00:21:58,920
to another machine in the same area

593
00:21:58,920 --> 00:22:01,560
and still fail to qualify for a specific operation.

594
00:22:01,560 --> 00:22:03,480
Maybe it lacks the travel range for the housing

595
00:22:03,480 --> 00:22:05,800
or its tolerance doesn't meet the drawing requirement.

596
00:22:05,800 --> 00:22:07,640
It could run a different controller version,

597
00:22:07,640 --> 00:22:09,160
use a different clamping method,

598
00:22:09,160 --> 00:22:11,800
or lack approval for a specific material grade.

599
00:22:11,800 --> 00:22:13,800
Spare time doesn't create capability.

600
00:22:13,800 --> 00:22:15,800
This is why resource groups need care.

601
00:22:15,800 --> 00:22:18,360
You can group machines when they truly share the ability

602
00:22:18,360 --> 00:22:21,560
to perform an operation under the same approved conditions,

603
00:22:21,560 --> 00:22:24,200
but the group should never hide the differences

604
00:22:24,200 --> 00:22:25,720
that actually matter to the product.

605
00:22:25,720 --> 00:22:29,160
For some work, two machines may act as real alternatives,

606
00:22:29,160 --> 00:22:30,440
but for another part family,

607
00:22:30,440 --> 00:22:32,520
one of those same machines might not qualify at all,

608
00:22:32,520 --> 00:22:34,360
the scheduler needs that truth in the model,

609
00:22:34,360 --> 00:22:35,560
plain and simple.

610
00:22:35,560 --> 00:22:37,560
Time matters just as much as capability.

611
00:22:37,560 --> 00:22:40,840
A resource calendar should reflect planned shifts,

612
00:22:40,840 --> 00:22:43,560
break periods, maintenance windows, shutdowns,

613
00:22:43,560 --> 00:22:45,320
and the rules around overtime.

614
00:22:45,320 --> 00:22:47,880
A machine might technically be capable of running around the clock,

615
00:22:47,880 --> 00:22:49,480
but the people support functions

616
00:22:49,480 --> 00:22:50,920
or operating rules around it,

617
00:22:50,920 --> 00:22:53,160
reduce the hours production can actually use,

618
00:22:53,160 --> 00:22:55,320
daily capacity is too coarse for this.

619
00:22:55,320 --> 00:22:58,040
Say the alternate machine has 16 scheduled hours

620
00:22:58,040 --> 00:22:59,240
across two shifts.

621
00:22:59,240 --> 00:23:01,480
That might look like enough time for the housing operation.

622
00:23:01,480 --> 00:23:04,840
But the first shift might have a planned maintenance task

623
00:23:04,840 --> 00:23:06,760
and the second shift might start after the point

624
00:23:06,760 --> 00:23:08,680
when the order needs to leave for heat treatment.

625
00:23:08,680 --> 00:23:10,440
That machine has capacity that day,

626
00:23:10,440 --> 00:23:12,440
but not necessarily at the right moment.

627
00:23:12,440 --> 00:23:14,600
That is the difference between capacity on paper

628
00:23:14,600 --> 00:23:16,040
and capacity in a schedule.

629
00:23:16,040 --> 00:23:17,800
Guration needs similar discipline.

630
00:23:17,800 --> 00:23:20,040
Arouting may include a standard cycle time,

631
00:23:20,040 --> 00:23:21,960
but the scheduled duration often includes

632
00:23:21,960 --> 00:23:23,640
more than just machining.

633
00:23:23,640 --> 00:23:25,240
Setup can consume a block of time

634
00:23:25,240 --> 00:23:27,080
before the first good part comes off

635
00:23:27,080 --> 00:23:29,480
and program loading, tool checks, fixture cleaning,

636
00:23:29,480 --> 00:23:31,240
part inspection, and planned weights

637
00:23:31,240 --> 00:23:32,680
between operations can all affect

638
00:23:32,680 --> 00:23:34,040
when the next step can start.

639
00:23:34,040 --> 00:23:35,960
That doesn't mean we should invent false precision

640
00:23:35,960 --> 00:23:36,760
with these details.

641
00:23:36,760 --> 00:23:40,360
A plant doesn't need every job timed to the second.

642
00:23:40,360 --> 00:23:43,720
It needs assumptions that match how decisions are actually made.

643
00:23:43,720 --> 00:23:46,120
If setup time changes based on the previous job,

644
00:23:46,120 --> 00:23:48,440
the model should capture that where it affects sequencing.

645
00:23:48,440 --> 00:23:50,680
If a standard runtime consistency differs

646
00:23:50,680 --> 00:23:52,280
by machine or part variant,

647
00:23:52,280 --> 00:23:54,600
using one generic number will push errors

648
00:23:54,600 --> 00:23:56,360
into every downstream commitment.

649
00:23:56,360 --> 00:23:58,440
The schedule can only be as honest

650
00:23:58,440 --> 00:24:00,040
as its duration assumptions.

651
00:24:00,040 --> 00:24:02,200
Parallel machines create another common trap.

652
00:24:02,200 --> 00:24:03,720
A plant may have several machines

653
00:24:03,720 --> 00:24:05,000
that can perform similar work,

654
00:24:05,000 --> 00:24:06,840
and planners naturally want the scheduler

655
00:24:06,840 --> 00:24:08,520
to spread load between them.

656
00:24:08,520 --> 00:24:10,760
That can help, but equal looking machines

657
00:24:10,760 --> 00:24:12,600
rarely behave in exactly the same way.

658
00:24:12,600 --> 00:24:15,160
One machine may process the part faster,

659
00:24:15,160 --> 00:24:16,600
another may need a longer setup,

660
00:24:16,600 --> 00:24:19,160
a third may only work for a subset of the part family

661
00:24:19,160 --> 00:24:21,160
and a fourth might be technically capable

662
00:24:21,160 --> 00:24:23,960
but reserved for a customer-approved process.

663
00:24:23,960 --> 00:24:26,360
The model needs to describe those differences

664
00:24:26,360 --> 00:24:29,080
rather than treating every open hour as interchangeable.

665
00:24:29,080 --> 00:24:31,000
Otherwise, the schedule appears balanced

666
00:24:31,000 --> 00:24:32,760
while the factory spends the day explaining

667
00:24:32,760 --> 00:24:34,440
why the assignments cannot happen.

668
00:24:34,440 --> 00:24:37,320
The resource model also needs a current operational status,

669
00:24:37,320 --> 00:24:39,320
and not every status means the same thing.

670
00:24:39,320 --> 00:24:42,200
A machine running a job has occupied capacity.

671
00:24:42,200 --> 00:24:43,720
A machine blocked by an upstream issue

672
00:24:43,720 --> 00:24:46,120
may be physically ready but unable to receive work.

673
00:24:46,120 --> 00:24:48,360
A faulted machine should not take new assignments,

674
00:24:48,360 --> 00:24:50,120
and a machine in planned maintenance

675
00:24:50,120 --> 00:24:51,720
needs its time removed or limited

676
00:24:51,720 --> 00:24:53,080
according to the maintenance decision.

677
00:24:53,080 --> 00:24:56,520
Those statuses usually come from operational technology,

678
00:24:56,520 --> 00:24:59,160
or OT sources close to the equipment.

679
00:24:59,160 --> 00:25:00,920
The schedule doesn't need raw signal noise

680
00:25:00,920 --> 00:25:02,200
from every machine tag.

681
00:25:02,200 --> 00:25:03,560
It needs a business-ready view

682
00:25:03,560 --> 00:25:05,960
of what the status means for capacity and dispatch.

683
00:25:05,960 --> 00:25:07,160
That boundary matters.

684
00:25:07,160 --> 00:25:09,400
A stopped signal could mean the operator opened a door,

685
00:25:09,400 --> 00:25:10,840
the machine completed a cycle,

686
00:25:10,840 --> 00:25:12,280
a tool change is underway,

687
00:25:12,280 --> 00:25:15,000
or a real fault has taken the asset out of use.

688
00:25:15,000 --> 00:25:17,320
Sending every state change straight into the schedule

689
00:25:17,320 --> 00:25:18,840
would create constant churn,

690
00:25:18,840 --> 00:25:21,320
so the model needs rules that turn shop-flow events

691
00:25:21,320 --> 00:25:23,480
into an availability decision people can trust.

692
00:25:23,480 --> 00:25:27,320
Resource modeling connects the broad route to the physical factory.

693
00:25:27,320 --> 00:25:29,720
It tells the scheduler where an operation can run,

694
00:25:29,720 --> 00:25:30,600
how long it may take,

695
00:25:30,600 --> 00:25:32,120
and when the resource can support it.

696
00:25:32,120 --> 00:25:34,680
But a machine may meet every capability rule

697
00:25:34,680 --> 00:25:36,920
and still not be ready to take the work.

698
00:25:36,920 --> 00:25:38,680
Machine state, OEE,

699
00:25:38,680 --> 00:25:40,360
and trust were the availability.

700
00:25:40,360 --> 00:25:42,520
Machine capability tells the scheduler

701
00:25:42,520 --> 00:25:43,560
where work could run,

702
00:25:43,560 --> 00:25:46,600
and machine state tells it whether that capacity is usable right now,

703
00:25:46,600 --> 00:25:48,520
and whether it's likely to stay usable long enough

704
00:25:48,520 --> 00:25:49,960
to trust the next commitment.

705
00:25:49,960 --> 00:25:52,120
Those are related, but they aren't the same thing.

706
00:25:52,120 --> 00:25:53,960
A machine can report that it's idle

707
00:25:53,960 --> 00:25:55,800
while an operator waits for a tool check,

708
00:25:55,800 --> 00:25:59,240
or it can report a stopped state during a normal program pause.

709
00:25:59,240 --> 00:26:01,240
It can run a cycle while producing parts

710
00:26:01,240 --> 00:26:02,920
that quality is placed on hold.

711
00:26:02,920 --> 00:26:05,000
Raw machine states describe equipment behavior,

712
00:26:05,000 --> 00:26:07,560
but a schedule needs an operational interpretation.

713
00:26:07,560 --> 00:26:10,040
For scheduling, the usual states need clear meaning.

714
00:26:10,040 --> 00:26:13,000
Running means the resource already has an active commitment,

715
00:26:13,000 --> 00:26:14,360
setup means it's occupied

716
00:26:14,360 --> 00:26:16,520
even if it isn't producing good parts yet.

717
00:26:16,520 --> 00:26:18,280
Idl may mean it can receive work,

718
00:26:18,280 --> 00:26:21,480
but only after confirming material, tools, and labor.

719
00:26:21,480 --> 00:26:23,560
Faltered means no new work goes there

720
00:26:23,560 --> 00:26:25,400
until maintenance changes the status.

721
00:26:25,400 --> 00:26:27,960
And plant maintenance means the calendar needs protected time

722
00:26:27,960 --> 00:26:29,800
before the work hits the floor.

723
00:26:29,800 --> 00:26:31,880
Manual override needs its own treatment too.

724
00:26:31,880 --> 00:26:34,200
A supervisor may take a machine out of normal dispatch

725
00:26:34,200 --> 00:26:36,600
because an operator is proving out a new program

726
00:26:36,600 --> 00:26:38,120
investigating a quality issue

727
00:26:38,120 --> 00:26:39,880
or dealing with a condition the machine interface

728
00:26:39,880 --> 00:26:40,760
doesn't describe,

729
00:26:40,760 --> 00:26:43,160
that's legit a mid-shop floor control.

730
00:26:43,160 --> 00:26:45,400
The scheduling layer needs to receive the outcome,

731
00:26:45,400 --> 00:26:48,280
not pretend every decision comes from an automated signal.

732
00:26:48,280 --> 00:26:51,400
This is where people sometimes pull in overall equipment effectiveness,

733
00:26:51,400 --> 00:26:54,840
OEE, and expect it to solve the availability question.

734
00:26:54,840 --> 00:26:57,400
OEE can help you understand how a machine has performed

735
00:26:57,400 --> 00:26:59,720
over time by combining availability, performance,

736
00:26:59,720 --> 00:27:01,240
and quality into one measure.

737
00:27:01,240 --> 00:27:04,280
If a 5-axis machine loses a lot of time to unplanned stops,

738
00:27:04,280 --> 00:27:06,040
slow cycles, or rejected parts,

739
00:27:06,040 --> 00:27:07,480
that gives maintenance, engineering,

740
00:27:07,480 --> 00:27:09,240
and production a reason to investigate.

741
00:27:09,240 --> 00:27:10,920
But OEE doesn't tell the scheduler

742
00:27:10,920 --> 00:27:13,480
whether the machine can take the next job at 2 this afternoon.

743
00:27:13,480 --> 00:27:17,160
A historical OEE value may help with longer-term capacity assumptions

744
00:27:17,160 --> 00:27:18,840
or support a realistic buffer,

745
00:27:18,840 --> 00:27:20,520
and it might expose standard durations

746
00:27:20,520 --> 00:27:22,600
that no longer match actual performance.

747
00:27:22,600 --> 00:27:25,160
Still, a scheduling rule needs direct information.

748
00:27:25,160 --> 00:27:26,520
Is the machine available?

749
00:27:26,520 --> 00:27:27,720
When will it be available?

750
00:27:27,720 --> 00:27:29,880
And what restrictions apply while it is?

751
00:27:29,880 --> 00:27:32,920
That takes us back to the 5-axis machine in our scenario.

752
00:27:32,920 --> 00:27:34,920
On Monday morning, the first condition signal

753
00:27:34,920 --> 00:27:37,080
doesn't automatically mean the machine has failed.

754
00:27:37,080 --> 00:27:39,400
It might come from vibration, temperature,

755
00:27:39,400 --> 00:27:42,120
drive behavior, or another monitored condition.

756
00:27:42,120 --> 00:27:43,720
Maintenance needs to assess it,

757
00:27:43,720 --> 00:27:46,840
and until then, the status should change from available to uncertain.

758
00:27:46,840 --> 00:27:48,440
Uncertain is not a cosmetic label.

759
00:27:48,440 --> 00:27:50,760
The scheduler can treat uncertain capacity

760
00:27:50,760 --> 00:27:52,840
in different ways based on site policy.

761
00:27:52,840 --> 00:27:55,800
It might prevent new long-running jobs from starting there,

762
00:27:55,800 --> 00:27:58,120
or it might allow the active operation to finish,

763
00:27:58,120 --> 00:28:00,040
but refuse additional dispatch.

764
00:28:00,040 --> 00:28:01,880
It might reserve a short diagnostic window

765
00:28:01,880 --> 00:28:03,480
and leave later capacity uncommitted

766
00:28:03,480 --> 00:28:05,320
until maintenance confirms the situation.

767
00:28:05,320 --> 00:28:07,960
The choice depends on the risk and how the plant runs,

768
00:28:07,960 --> 00:28:09,960
but what matters is that the calendar changes

769
00:28:09,960 --> 00:28:11,880
when the operating decision changes.

770
00:28:11,880 --> 00:28:14,280
Later that morning maintenance takes the machine offline.

771
00:28:14,280 --> 00:28:17,160
At that point, capacity is no longer merely at risk.

772
00:28:17,160 --> 00:28:19,160
The machine calendar loses the affected time

773
00:28:19,160 --> 00:28:21,320
and any operations assigned after the outage start

774
00:28:21,320 --> 00:28:24,280
need to move, wait, or become visibly late.

775
00:28:24,280 --> 00:28:26,360
That update should come from a trusted event path

776
00:28:26,360 --> 00:28:28,760
with a clear owner, a maintenance work order,

777
00:28:28,760 --> 00:28:30,760
an approved asset status change,

778
00:28:30,760 --> 00:28:33,400
or a defined production decision can trigger it.

779
00:28:33,400 --> 00:28:36,360
A single noisy signal should not reshuffle a week of work,

780
00:28:36,360 --> 00:28:39,000
otherwise the schedule becomes reactive noise.

781
00:28:39,000 --> 00:28:40,520
Factories need a sensible threshold

782
00:28:40,520 --> 00:28:43,480
between real-time visibility and constant re-planning.

783
00:28:43,480 --> 00:28:45,320
Machine data might arrive every second,

784
00:28:45,320 --> 00:28:48,120
but the schedule should change at the cadence of decisions.

785
00:28:48,120 --> 00:28:50,920
If a short stop clears within a normal recovery window,

786
00:28:50,920 --> 00:28:53,000
production can keep the sequence intact.

787
00:28:53,000 --> 00:28:55,000
If the stoppass is that window or maintenance

788
00:28:55,000 --> 00:28:56,600
declares the machine unavailable,

789
00:28:56,600 --> 00:28:59,080
then the scheduling problem has genuinely changed.

790
00:28:59,080 --> 00:29:01,080
This also applies to planned maintenance.

791
00:29:01,080 --> 00:29:03,960
A maintenance slot is not empty machine-time planners can borrow

792
00:29:03,960 --> 00:29:05,720
because an urgent order appears.

793
00:29:05,720 --> 00:29:07,720
If someone chooses to defer maintenance,

794
00:29:07,720 --> 00:29:10,680
that needs an explicit decision with an owner and a record of the risk.

795
00:29:10,680 --> 00:29:13,080
The scheduler should not silently trade equipment health

796
00:29:13,080 --> 00:29:14,040
for a due date.

797
00:29:14,040 --> 00:29:16,120
Condition-based maintenance can improve this picture

798
00:29:16,120 --> 00:29:19,160
when the plant trusts the signals and has a defined response.

799
00:29:19,160 --> 00:29:21,000
A rising failure risk may lead maintenance

800
00:29:21,000 --> 00:29:23,000
to inspect the machine during a planned gap

801
00:29:23,000 --> 00:29:24,600
or it may reduce the amount of work

802
00:29:24,600 --> 00:29:26,840
committed to that resource over the next shift.

803
00:29:26,840 --> 00:29:29,320
Prediction changes the calendar before a breakdown,

804
00:29:29,320 --> 00:29:30,360
forces the issue.

805
00:29:30,360 --> 00:29:32,120
It doesn't remove the need for judgment.

806
00:29:32,120 --> 00:29:33,080
For our housing orders,

807
00:29:33,080 --> 00:29:36,440
the five-axis outage removes the most obvious source of capacity.

808
00:29:36,440 --> 00:29:38,520
Yet the next question is less obvious.

809
00:29:38,520 --> 00:29:40,520
Even if another machine can run the work,

810
00:29:40,520 --> 00:29:43,320
can the plant move the setup and use the shared fixture

811
00:29:43,320 --> 00:29:44,920
at the time it needs it?

812
00:29:44,920 --> 00:29:47,160
Tooling, fixtures, and setup constraints.

813
00:29:47,160 --> 00:29:49,080
The alternate machine may have open time,

814
00:29:49,080 --> 00:29:51,720
but that still doesn't mean the housing order can move.

815
00:29:51,720 --> 00:29:52,680
In our scenario,

816
00:29:52,680 --> 00:29:55,000
the housing needs a shared fixture that holds the part

817
00:29:55,000 --> 00:29:56,360
in a repeatable position

818
00:29:56,360 --> 00:29:58,440
while the machine cuts complex surfaces.

819
00:29:58,440 --> 00:30:00,840
That fixture may also carry its own inspection,

820
00:30:00,840 --> 00:30:02,440
service, and approval record,

821
00:30:02,440 --> 00:30:05,160
treating it like a line item in a tool cabinet misses the point.

822
00:30:05,160 --> 00:30:07,320
For scheduling, the fixture is a scarce resource

823
00:30:07,320 --> 00:30:08,680
with its own availability.

824
00:30:08,680 --> 00:30:10,760
It has a location, a condition,

825
00:30:10,760 --> 00:30:13,560
and it may need calibration or certification before use.

826
00:30:13,560 --> 00:30:15,720
If it's clamped to a partially completed order

827
00:30:15,720 --> 00:30:17,720
on the failed five-axis machine,

828
00:30:17,720 --> 00:30:20,520
it isn't free just because another machine has capacity.

829
00:30:20,520 --> 00:30:22,200
The schedule needs to reserve the fixture

830
00:30:22,200 --> 00:30:24,040
for the period when the operation uses it.

831
00:30:24,040 --> 00:30:25,960
No overlap, no double booking.

832
00:30:25,960 --> 00:30:27,080
Sounds obvious, right?

833
00:30:27,080 --> 00:30:29,800
But when a planner sees two orders that both look ready

834
00:30:29,800 --> 00:30:31,640
and both need the same fixture,

835
00:30:31,640 --> 00:30:34,440
a basic plan often treats it as a yes or no attribute,

836
00:30:34,440 --> 00:30:36,360
fixture available or not.

837
00:30:36,360 --> 00:30:37,720
A real schedule needs time.

838
00:30:37,720 --> 00:30:40,440
It needs to know when the fixture leaves the first setup,

839
00:30:40,440 --> 00:30:42,360
how long cleaning and inspection take,

840
00:30:42,360 --> 00:30:44,440
whether it needs to move across the plant,

841
00:30:44,440 --> 00:30:47,240
and when it can support the next approved operation.

842
00:30:47,240 --> 00:30:49,560
A fixture can support several part variants,

843
00:30:49,560 --> 00:30:51,960
but not every variant under every condition.

844
00:30:51,960 --> 00:30:54,520
Maybe the same fixture works for two housing versions

845
00:30:54,520 --> 00:30:56,520
while a third needs an adapter plate.

846
00:30:56,520 --> 00:30:59,640
Maybe one customer requires a particular fixture certification

847
00:30:59,640 --> 00:31:01,160
because of traceability rules.

848
00:31:01,160 --> 00:31:03,160
The resource model should state those limits.

849
00:31:03,160 --> 00:31:05,160
Otherwise, the scheduler sees flexibility

850
00:31:05,160 --> 00:31:06,680
that production doesn't have.

851
00:31:06,680 --> 00:31:09,240
Tooling creates a related problem, though it's different.

852
00:31:09,240 --> 00:31:11,720
A machine may carry the basic tool set for the housing,

853
00:31:11,720 --> 00:31:14,120
but the operation might need a specific cutter,

854
00:31:14,120 --> 00:31:16,920
insert grade, probe or preset tool assembly.

855
00:31:16,920 --> 00:31:18,200
Tool life matters too.

856
00:31:18,200 --> 00:31:20,280
If a cutting tool has limited life remaining,

857
00:31:20,280 --> 00:31:22,760
the schedule can't assume it will complete a long run

858
00:31:22,760 --> 00:31:25,960
and then start another order without replacement or inspection.

859
00:31:25,960 --> 00:31:28,200
Tool availability isn't just a stock question.

860
00:31:28,200 --> 00:31:30,360
A tool can physically exist while it's being measured,

861
00:31:30,360 --> 00:31:33,080
repaired, prepped for another job or waiting for a preset.

862
00:31:33,080 --> 00:31:34,200
Some tools move quickly.

863
00:31:34,200 --> 00:31:35,800
Others need controlled preparation

864
00:31:35,800 --> 00:31:38,280
and are qualified check before they reach the machine.

865
00:31:38,280 --> 00:31:40,360
Those activities consume time

866
00:31:40,360 --> 00:31:42,360
and they become the real start constraint

867
00:31:42,360 --> 00:31:44,040
when the machine looks idle.

868
00:31:44,040 --> 00:31:46,360
Think about the failed five-axis machine again.

869
00:31:46,360 --> 00:31:48,600
The housing order sits partway through its operation

870
00:31:48,600 --> 00:31:50,280
and the fixture remains clamped.

871
00:31:50,280 --> 00:31:52,760
The alternate machine could take the remaining quantity,

872
00:31:52,760 --> 00:31:54,920
but only after the fixture comes free,

873
00:31:54,920 --> 00:31:56,200
moves to the other machine

874
00:31:56,200 --> 00:31:58,520
and receives the checks required for that transfer.

875
00:31:58,520 --> 00:32:00,280
That isn't a simple resource swap,

876
00:32:00,280 --> 00:32:01,720
the program may need loading,

877
00:32:01,720 --> 00:32:03,480
the tool package may need a new preset,

878
00:32:03,480 --> 00:32:04,840
the fixture may need cleaning,

879
00:32:04,840 --> 00:32:08,200
because the material or coolant rules differ between the current job

880
00:32:08,200 --> 00:32:09,080
and the next one.

881
00:32:09,080 --> 00:32:12,280
Each step adds time and in some plans and approval gate.

882
00:32:12,280 --> 00:32:13,720
If the schedule ignores that work,

883
00:32:13,720 --> 00:32:16,120
it tells people the alternate machine can start at a time

884
00:32:16,120 --> 00:32:17,080
nobody can meet.

885
00:32:17,080 --> 00:32:18,280
Setup adds another layer,

886
00:32:18,280 --> 00:32:20,920
because how long it takes depends on what came before.

887
00:32:20,920 --> 00:32:23,000
Say the alternate machine currently runs apart

888
00:32:23,000 --> 00:32:24,600
from the same material family

889
00:32:24,600 --> 00:32:26,200
using a similar clamp arrangement

890
00:32:26,200 --> 00:32:27,480
and a related tool package.

891
00:32:28,280 --> 00:32:30,360
Moving the housing order behind that job

892
00:32:30,360 --> 00:32:31,880
might take less change over time

893
00:32:31,880 --> 00:32:33,640
than placing it after an unrelated part

894
00:32:33,640 --> 00:32:34,840
with a different material,

895
00:32:34,840 --> 00:32:37,160
coolant, condition, fixture and program.

896
00:32:37,160 --> 00:32:39,560
The order of jobs changes the total load.

897
00:32:39,560 --> 00:32:41,640
Sequence dependent setup means the scheduler

898
00:32:41,640 --> 00:32:44,440
doesn't apply one fixed duration to every order.

899
00:32:44,440 --> 00:32:46,840
Instead, it tests the transition from the job currently

900
00:32:46,840 --> 00:32:49,160
on the machine to the job it wants to place next.

901
00:32:49,160 --> 00:32:50,920
A material change may need cleaning,

902
00:32:50,920 --> 00:32:52,520
a clamp change may need fixture work,

903
00:32:52,520 --> 00:32:54,520
a program change may need a proof-out check,

904
00:32:54,520 --> 00:32:57,240
those rules turn a queue into a real sequence,

905
00:32:57,240 --> 00:33:00,440
so you don't need to model every tiny action on day one.

906
00:33:00,440 --> 00:33:03,400
That buries the project in detail nobody keeps up with.

907
00:33:03,400 --> 00:33:04,600
Start with the setup changes

908
00:33:04,600 --> 00:33:06,680
that regularly alter production decisions.

909
00:33:06,680 --> 00:33:08,600
If switching between part families costs enough time

910
00:33:08,600 --> 00:33:10,120
to push work past heat treatment,

911
00:33:10,120 --> 00:33:10,840
model that.

912
00:33:10,840 --> 00:33:12,440
If a fixture must remain with a batch

913
00:33:12,440 --> 00:33:13,800
across several operations,

914
00:33:13,800 --> 00:33:14,440
model that.

915
00:33:14,440 --> 00:33:16,040
The aim is a schedule that people recognize,

916
00:33:16,040 --> 00:33:17,880
not a digital version of every handwritten note

917
00:33:17,880 --> 00:33:18,840
in the tool room.

918
00:33:18,840 --> 00:33:19,720
Back at the plant,

919
00:33:19,720 --> 00:33:22,520
the first response to the five axis outage might be

920
00:33:22,520 --> 00:33:24,200
move the housing to the alternate machine.

921
00:33:24,200 --> 00:33:26,760
Then the fixture check changes the answer.

922
00:33:27,000 --> 00:33:29,240
The fixture is occupied until the damaged machine

923
00:33:29,240 --> 00:33:30,840
can safely release the part,

924
00:33:30,840 --> 00:33:33,560
even after release transfer and setup consume time.

925
00:33:33,560 --> 00:33:36,680
Another order may already reserve that fixture later in the shift,

926
00:33:36,680 --> 00:33:38,440
so using it for the housing could delay

927
00:33:38,440 --> 00:33:40,040
a different customer commitment.

928
00:33:40,040 --> 00:33:42,280
Now the scheduler has real options to show,

929
00:33:42,280 --> 00:33:45,000
keep the work on hold until the original machine returns,

930
00:33:45,000 --> 00:33:47,560
transfer the setup and accept the time cost.

931
00:33:47,560 --> 00:33:50,520
Re-sequence another job to create a better setup path.

932
00:33:50,520 --> 00:33:53,000
Each option respects the fixture as a real limit

933
00:33:53,000 --> 00:33:54,600
rather than an afterthought,

934
00:33:54,600 --> 00:33:57,400
but fixtures and tools don't run machines on their own.

935
00:33:57,400 --> 00:33:59,960
The next constraint sits with the people who can prepare,

936
00:33:59,960 --> 00:34:01,400
operate and approve the work.

937
00:34:01,400 --> 00:34:04,680
Labor, skills and shift coverage.

938
00:34:04,680 --> 00:34:05,800
A fixture can be ready,

939
00:34:05,800 --> 00:34:07,160
the machine can be capable,

940
00:34:07,160 --> 00:34:10,200
and the order can still wait because nobody on that shift can set it up.

941
00:34:10,200 --> 00:34:11,720
That sounds like a staffing issue,

942
00:34:11,720 --> 00:34:14,040
but for scheduling we need a more exact view.

943
00:34:14,040 --> 00:34:15,960
Headcount tells you how many people are present

944
00:34:15,960 --> 00:34:17,960
that it doesn't tell you who can run a high value

945
00:34:17,960 --> 00:34:20,600
five axis setup who can release a first off part,

946
00:34:20,600 --> 00:34:22,440
or who is allowed to enter the machine area

947
00:34:22,440 --> 00:34:23,720
during a maintenance intervention.

948
00:34:23,720 --> 00:34:24,920
People are resources too,

949
00:34:24,920 --> 00:34:26,760
but they're not interchangeable.

950
00:34:26,760 --> 00:34:27,720
For the housing operation,

951
00:34:27,720 --> 00:34:30,360
the plant may need one operator approved to set up the machine

952
00:34:30,360 --> 00:34:31,640
and establish the fixture.

953
00:34:31,640 --> 00:34:34,840
After that, another trained operator may be able to keep the job running

954
00:34:34,840 --> 00:34:36,280
at the first off stage.

955
00:34:36,280 --> 00:34:37,960
Quality may need to inspect and release

956
00:34:37,960 --> 00:34:40,360
the first completed part before the batch continues.

957
00:34:40,360 --> 00:34:41,320
Those are separate skills,

958
00:34:41,320 --> 00:34:44,280
and the schedule must respect all of them at the time they are needed.

959
00:34:44,280 --> 00:34:47,320
A skill matrix gives the scheduler a practical way to model this.

960
00:34:47,320 --> 00:34:49,240
It links a person to a defined capability

961
00:34:49,240 --> 00:34:50,440
such as operating a machine,

962
00:34:50,440 --> 00:34:51,640
setting up a part family,

963
00:34:51,640 --> 00:34:53,320
approving an inspection result,

964
00:34:53,320 --> 00:34:54,920
or performing maintenance access.

965
00:34:54,920 --> 00:34:56,760
It can also hold expiry dates

966
00:34:56,760 --> 00:34:58,840
because a certification that expired last month

967
00:34:58,840 --> 00:35:01,160
doesn't become valid because a job is urgent.

968
00:35:01,160 --> 00:35:02,360
That may sound strict,

969
00:35:02,360 --> 00:35:03,400
and it should be.

970
00:35:03,400 --> 00:35:05,480
If your plant runs regulated work,

971
00:35:05,480 --> 00:35:07,160
customer-approved processes,

972
00:35:07,160 --> 00:35:08,920
or parts with tight tolerance,

973
00:35:08,920 --> 00:35:11,560
skill rules protect more than the plan.

974
00:35:11,560 --> 00:35:13,240
They protect product quality,

975
00:35:13,240 --> 00:35:14,280
traceability,

976
00:35:14,280 --> 00:35:15,800
and the people doing the work.

977
00:35:15,800 --> 00:35:17,880
A finite schedule should treat a missing qualification

978
00:35:17,880 --> 00:35:18,680
as a real limit,

979
00:35:18,680 --> 00:35:20,920
not a note for someone to solve a shift handover.

980
00:35:20,920 --> 00:35:22,920
Now shift coverage adds the time dimension.

981
00:35:22,920 --> 00:35:25,800
The alternate machine may have open capacity overnight,

982
00:35:25,800 --> 00:35:29,000
but the certified setup operator only works the day shift,

983
00:35:29,000 --> 00:35:32,600
while the quality person who can release the first of result works a different pattern.

984
00:35:32,600 --> 00:35:36,200
On a daily capacity report, labor may look available.

985
00:35:36,200 --> 00:35:37,480
At the operation level,

986
00:35:37,480 --> 00:35:39,080
the required mix of skills

987
00:35:39,080 --> 00:35:41,080
may only exist for a narrow window.

988
00:35:41,080 --> 00:35:43,240
That's the capacity the schedule needs to account for.

989
00:35:43,240 --> 00:35:44,760
Absence changes that quickly.

990
00:35:44,760 --> 00:35:45,800
So do training days,

991
00:35:45,800 --> 00:35:46,840
plant vacations,

992
00:35:46,840 --> 00:35:48,280
temporary reassignments,

993
00:35:48,280 --> 00:35:50,120
and rules that limit over time.

994
00:35:50,120 --> 00:35:52,840
A planner can't assume that a person who finished a long day shift

995
00:35:52,840 --> 00:35:54,200
can return overnight,

996
00:35:54,200 --> 00:35:56,200
just because a bottleneck machine needs help.

997
00:35:56,200 --> 00:35:58,440
Local labor rules, fatigue concerns,

998
00:35:58,440 --> 00:36:00,520
and the basic need for a safe handover

999
00:36:00,520 --> 00:36:03,640
all place limits on what a responsible schedule can ask of people.

1000
00:36:03,640 --> 00:36:05,480
The model doesn't need to turn every worker

1001
00:36:05,480 --> 00:36:07,160
into a minute-by-minute tracking problem.

1002
00:36:07,160 --> 00:36:09,160
That would be a poor use of a scheduling system

1003
00:36:09,160 --> 00:36:10,760
and a poor way to run a plant.

1004
00:36:10,760 --> 00:36:12,360
Instead, model the skill coverage

1005
00:36:12,360 --> 00:36:14,360
that actually drives dispatch decisions.

1006
00:36:14,360 --> 00:36:15,320
For a complex resource,

1007
00:36:15,320 --> 00:36:17,640
that might mean naming the eligible setup people

1008
00:36:17,640 --> 00:36:19,000
and their shift calendars.

1009
00:36:19,000 --> 00:36:20,360
For a broader operation,

1010
00:36:20,360 --> 00:36:23,160
it may mean confirming that enough trained operators

1011
00:36:23,160 --> 00:36:25,400
cover the shift without assigning each task

1012
00:36:25,400 --> 00:36:27,640
to a specific person until dispatch time.

1013
00:36:27,640 --> 00:36:29,720
The level of detail should match the decision.

1014
00:36:29,720 --> 00:36:31,640
Some operations also need pairing rules.

1015
00:36:31,640 --> 00:36:33,640
A machine may need an operator present,

1016
00:36:33,640 --> 00:36:35,880
while a first-off inspection needs a quality person

1017
00:36:35,880 --> 00:36:37,480
before production can continue.

1018
00:36:37,480 --> 00:36:39,320
A maintenance action may require a technician

1019
00:36:39,320 --> 00:36:41,880
and an operator to coordinate a controlled restart.

1020
00:36:41,880 --> 00:36:43,800
The schedule needs to reserve the right people

1021
00:36:43,800 --> 00:36:45,480
across the relevant time window,

1022
00:36:45,480 --> 00:36:47,240
rather than assuming each role will appear

1023
00:36:47,240 --> 00:36:48,680
when the job reaches that point.

1024
00:36:48,680 --> 00:36:50,040
In the housing scenario,

1025
00:36:50,040 --> 00:36:51,720
the alternate machine looks tempting

1026
00:36:51,720 --> 00:36:53,400
after the five-axis outage.

1027
00:36:53,400 --> 00:36:54,680
It has a gap overnight

1028
00:36:54,680 --> 00:36:57,240
and the fixture might become available late in the day.

1029
00:36:57,240 --> 00:36:58,920
But the certified setup operator leaves

1030
00:36:58,920 --> 00:37:00,360
before that window opens.

1031
00:37:00,360 --> 00:37:02,360
The overnight crew can run an established job,

1032
00:37:02,360 --> 00:37:04,280
but they cannot create the new setup

1033
00:37:04,280 --> 00:37:06,280
under the plant's approved process.

1034
00:37:06,280 --> 00:37:09,080
So that open machine time can't be used for the transfer.

1035
00:37:09,080 --> 00:37:10,920
The scheduler might find other choices.

1036
00:37:10,920 --> 00:37:12,680
It could wait until the next day shift.

1037
00:37:12,680 --> 00:37:14,520
If that still protects the downstream flow,

1038
00:37:14,520 --> 00:37:17,720
it could move a qualified person through approved overtime.

1039
00:37:17,720 --> 00:37:20,120
It could keep the current setup on the alternate machine

1040
00:37:20,120 --> 00:37:22,120
and use the overnight gap for work

1041
00:37:22,120 --> 00:37:24,520
that needs only normal operator coverage.

1042
00:37:24,520 --> 00:37:27,240
Each option brings a different cost and a different risk.

1043
00:37:27,240 --> 00:37:30,280
This is where labor rules expose a gap between the schedule

1044
00:37:30,280 --> 00:37:31,800
and how the plant actually works.

1045
00:37:31,800 --> 00:37:33,560
People may know that only two individuals

1046
00:37:33,560 --> 00:37:35,160
can perform a certain setup.

1047
00:37:35,160 --> 00:37:37,720
But if that knowledge lives in a supervisor's memory,

1048
00:37:37,720 --> 00:37:39,480
every schedule depends on that person

1049
00:37:39,480 --> 00:37:41,000
being available to correct it.

1050
00:37:41,000 --> 00:37:42,120
Put the rule in the model.

1051
00:37:42,120 --> 00:37:44,280
Keep ownership with the people who manage skills

1052
00:37:44,280 --> 00:37:45,480
and work standards.

1053
00:37:45,480 --> 00:37:47,560
Then show the planner why a job can't move.

1054
00:37:47,560 --> 00:37:50,280
Instead of leaving them to discover it after the shift starts,

1055
00:37:50,280 --> 00:37:52,520
before the scheduler places any operation though,

1056
00:37:52,520 --> 00:37:53,880
it needs one more answer.

1057
00:37:53,880 --> 00:37:56,440
Can the work legally and physically start at all?

1058
00:37:56,440 --> 00:37:59,000
Material, quality and release constraints.

1059
00:37:59,000 --> 00:38:01,400
Here's the scenario you've probably run into.

1060
00:38:01,400 --> 00:38:03,480
A job has the machine, the fixture,

1061
00:38:03,480 --> 00:38:05,720
and a qualified operator all waiting.

1062
00:38:05,720 --> 00:38:07,000
Yet the work still can't start.

1063
00:38:07,000 --> 00:38:09,320
Material status is the reason.

1064
00:38:09,320 --> 00:38:11,720
It decides whether production has permission

1065
00:38:11,720 --> 00:38:13,080
to consume that material

1066
00:38:13,080 --> 00:38:15,720
and a scheduler needs more than a simple inventory number.

1067
00:38:15,720 --> 00:38:18,280
It has to know if that stock is on hand already allocated

1068
00:38:18,280 --> 00:38:19,880
to another order still in transit,

1069
00:38:19,880 --> 00:38:21,480
waiting for incoming inspection,

1070
00:38:21,480 --> 00:38:24,040
accepted for use, quarantined or rejected.

1071
00:38:24,040 --> 00:38:27,160
Each of those states shifts the earliest possible start time.

1072
00:38:27,160 --> 00:38:29,560
Take that rush-housing order we've been talking about.

1073
00:38:29,560 --> 00:38:32,040
Purchasing reports the raw stock will arrive late Monday.

1074
00:38:32,040 --> 00:38:33,320
Sounds manageable at first.

1075
00:38:33,320 --> 00:38:35,800
The truck shows up, material hits the receiving area

1076
00:38:35,800 --> 00:38:37,800
and someone sees it physically on site.

1077
00:38:37,800 --> 00:38:39,400
But receipt is not release.

1078
00:38:39,400 --> 00:38:41,640
If that material needs incoming inspection,

1079
00:38:41,640 --> 00:38:43,960
the job stays blocked until quality signs off.

1080
00:38:43,960 --> 00:38:45,640
Maybe a certificate needs checking,

1081
00:38:45,640 --> 00:38:48,520
or the lot needs dimensional or chemical verification.

1082
00:38:48,520 --> 00:38:50,280
In some plants, the customer's spec demands

1083
00:38:50,280 --> 00:38:52,840
documented approval before the first cut can happen.

1084
00:38:52,840 --> 00:38:54,520
You can't schedule around that.

1085
00:38:54,520 --> 00:38:57,000
The machine can't start until quality says it's okay.

1086
00:38:57,000 --> 00:38:59,480
Now material genealogy comes into play.

1087
00:38:59,480 --> 00:39:01,720
Genealogy means you can trace a finished part

1088
00:39:01,720 --> 00:39:04,200
all the way back to the material lot used to build it.

1089
00:39:04,200 --> 00:39:06,920
For certain products, that trace includes heat numbers,

1090
00:39:06,920 --> 00:39:09,000
supplier certificates, process records,

1091
00:39:09,000 --> 00:39:11,720
inspection results, and the serial number on the finished piece.

1092
00:39:11,720 --> 00:39:13,800
That link has to stay intact.

1093
00:39:13,800 --> 00:39:16,200
Suppose you have two material lots in the warehouse.

1094
00:39:16,200 --> 00:39:18,040
Both look like the same grade of metal,

1095
00:39:18,040 --> 00:39:20,520
but one has the right approval for the housing order

1096
00:39:20,520 --> 00:39:22,760
and the other might meet the general spec

1097
00:39:22,760 --> 00:39:25,000
without the customer's specific record required.

1098
00:39:25,000 --> 00:39:26,840
A planner shouldn't decide they're interchangeable

1099
00:39:26,840 --> 00:39:28,920
just because the first lot arrived late.

1100
00:39:28,920 --> 00:39:32,120
Engineering and quality set the rules for material substitution.

1101
00:39:32,120 --> 00:39:34,440
They can approve an alternate lot, a new supplier,

1102
00:39:34,440 --> 00:39:36,760
or a different grade under specific conditions.

1103
00:39:36,760 --> 00:39:38,040
Until that approval exists,

1104
00:39:38,040 --> 00:39:40,440
the alternate material isn't an option in the schedule.

1105
00:39:40,440 --> 00:39:42,440
This isn't bureaucracy for the sake of it.

1106
00:39:42,440 --> 00:39:44,920
If the schedule assumes unapproved material is ready,

1107
00:39:44,920 --> 00:39:46,520
it creates a false promise

1108
00:39:46,520 --> 00:39:48,600
and then dumps the real decision on the operator

1109
00:39:48,600 --> 00:39:50,200
or quality team at the last minute.

1110
00:39:50,200 --> 00:39:53,240
The same pattern shows up with quality holds during production.

1111
00:39:53,240 --> 00:39:54,600
A part finishes machining,

1112
00:39:54,600 --> 00:39:56,280
but inspection puts the batch on hold

1113
00:39:56,280 --> 00:39:57,480
because a measurement needs review

1114
00:39:57,480 --> 00:39:59,160
or a non-conformance needs a disposition.

1115
00:39:59,160 --> 00:40:01,080
The MES might show the operation is complete

1116
00:40:01,080 --> 00:40:02,440
from a machine-time perspective,

1117
00:40:02,440 --> 00:40:03,880
but from a production flow view,

1118
00:40:03,880 --> 00:40:05,160
the part hasn't cleared the gate.

1119
00:40:05,160 --> 00:40:07,080
Completion and release are not the same thing.

1120
00:40:07,080 --> 00:40:07,880
For the housing order,

1121
00:40:07,880 --> 00:40:10,600
that distinction hits heat treatment and final assembly.

1122
00:40:10,600 --> 00:40:12,280
If milling is done, but first off,

1123
00:40:12,280 --> 00:40:13,800
inspection hasn't released the result,

1124
00:40:13,800 --> 00:40:15,080
downstream can't start.

1125
00:40:15,080 --> 00:40:17,800
If the part goes into heat treatment without the required check,

1126
00:40:17,800 --> 00:40:20,680
you're adding cost to work that might later prove unusable.

1127
00:40:20,680 --> 00:40:22,920
No scheduling system should optimize that mistake.

1128
00:40:22,920 --> 00:40:25,480
Material constraints also depend on allocation.

1129
00:40:25,480 --> 00:40:28,120
Stock on hand doesn't always mean free stock.

1130
00:40:28,120 --> 00:40:30,600
Another released order might already have reserved it,

1131
00:40:30,600 --> 00:40:33,320
or a maintenance spare carries protected status.

1132
00:40:33,320 --> 00:40:35,800
The warehouse may have physically counted the quantity,

1133
00:40:35,800 --> 00:40:38,760
but ERP is still waiting for a transaction to confirm it.

1134
00:40:38,760 --> 00:40:41,800
These are operational facts, not minor data glitches.

1135
00:40:41,800 --> 00:40:44,520
A useful scheduling input answers a very specific question.

1136
00:40:44,520 --> 00:40:46,920
For this operation, at this time,

1137
00:40:46,920 --> 00:40:49,800
can I consume the stated quantity of this approved lot?

1138
00:40:49,800 --> 00:40:51,800
If the answer isn't clear, the schedule should show

1139
00:40:51,800 --> 00:40:54,520
that uncertainty not quietly assume the material is ready.

1140
00:40:54,520 --> 00:40:56,200
That might feel inconvenient in the moment,

1141
00:40:56,200 --> 00:40:58,840
but it prevents a much more expensive surprise later.

1142
00:40:58,840 --> 00:41:00,040
Back to our Monday scenario,

1143
00:41:00,040 --> 00:41:02,200
the delayed batch finally hits the plant.

1144
00:41:02,200 --> 00:41:04,760
The planner sees an opening after the five axis disruption

1145
00:41:04,760 --> 00:41:06,520
and wants to slide the rush order in,

1146
00:41:06,520 --> 00:41:08,680
but incoming inspection hasn't released the lot,

1147
00:41:08,680 --> 00:41:10,200
and quality has its own queue.

1148
00:41:10,200 --> 00:41:12,440
The stock is there. The job still can't start.

1149
00:41:12,440 --> 00:41:15,240
A practical scheduler handles this by holding the rush order

1150
00:41:15,240 --> 00:41:17,080
until the release event triggers,

1151
00:41:17,080 --> 00:41:18,920
then checking whether the machine, fixture,

1152
00:41:18,920 --> 00:41:21,400
labor and downstream capacity still fit,

1153
00:41:21,400 --> 00:41:22,760
or it can fill that available time

1154
00:41:22,760 --> 00:41:25,080
with another order that already has valid material

1155
00:41:25,080 --> 00:41:26,920
and doesn't create a worse conflict later.

1156
00:41:26,920 --> 00:41:30,280
That's a much better decision than starting work on an assumption.

1157
00:41:30,280 --> 00:41:32,600
Quality release isn't just about raw material.

1158
00:41:32,600 --> 00:41:34,600
A program revision might need approval,

1159
00:41:34,600 --> 00:41:36,600
a first off part needs sign off,

1160
00:41:36,600 --> 00:41:39,080
a rework instruction needs a formal disposition.

1161
00:41:39,080 --> 00:41:42,760
Each gate is a condition that decides whether the next operation can proceed.

1162
00:41:42,760 --> 00:41:46,040
The schedule needs to treat those gates as time-based constraints.

1163
00:41:46,040 --> 00:41:48,440
Not every quality check needs that level of detail.

1164
00:41:48,440 --> 00:41:50,200
If its routine and rarely causes delays,

1165
00:41:50,200 --> 00:41:51,960
the routing duration can cover it.

1166
00:41:51,960 --> 00:41:54,040
But if a release regularly blocks work,

1167
00:41:54,040 --> 00:41:55,960
ties up a shared inspection resource,

1168
00:41:55,960 --> 00:41:57,160
or carries customer risk,

1169
00:41:57,160 --> 00:41:58,760
it belongs in the scheduling logic.

1170
00:41:58,760 --> 00:42:00,920
Otherwise, the plan says progress happened

1171
00:42:00,920 --> 00:42:03,240
before the product can legally move.

1172
00:42:03,240 --> 00:42:04,600
So you can see the problem,

1173
00:42:04,600 --> 00:42:07,880
keeping material, quality, labor, tooling and machine status

1174
00:42:07,880 --> 00:42:10,360
in separate systems with separate meanings.

1175
00:42:10,360 --> 00:42:11,960
Each one holds a piece of the answer,

1176
00:42:11,960 --> 00:42:14,200
but the scheduler needs those pieces to connect

1177
00:42:14,200 --> 00:42:15,800
without guessing what an order,

1178
00:42:15,800 --> 00:42:19,160
a lot, a release, or resource status actually means

1179
00:42:19,160 --> 00:42:21,880
that shared meaning is where the architecture starts to matter.

1180
00:42:21,880 --> 00:42:24,200
The data model that connects it and OT,

1181
00:42:24,200 --> 00:42:25,640
all those constraints only help

1182
00:42:25,640 --> 00:42:27,800
if the systems are describing the same factory.

1183
00:42:27,800 --> 00:42:30,760
Right now, ERP knows the sales order and work order.

1184
00:42:30,760 --> 00:42:34,200
MES knows that a milling operation started, paused or finished.

1185
00:42:34,200 --> 00:42:37,240
Maintenance knows the condition of the five-axis machine.

1186
00:42:37,240 --> 00:42:39,880
Quality knows whether a material lot has released,

1187
00:42:39,880 --> 00:42:42,840
the tool room may track the fixture in its own system,

1188
00:42:42,840 --> 00:42:45,640
or sometimes in a process that hasn't made it to a system at all.

1189
00:42:45,640 --> 00:42:47,400
Each source can be correct on its own.

1190
00:42:47,400 --> 00:42:49,640
The problem starts when their records can't connect.

1191
00:42:49,640 --> 00:42:51,880
A scheduler needs to follow one chain

1192
00:42:51,880 --> 00:42:54,200
without losing the identity of anything in it.

1193
00:42:54,200 --> 00:42:56,040
This customer order creates this work order

1194
00:42:56,040 --> 00:42:57,880
that work order contains this operation.

1195
00:42:57,880 --> 00:43:01,160
The operation needs this roting, version, this material,

1196
00:43:01,160 --> 00:43:03,160
lot, this fixture, this machine capability,

1197
00:43:03,160 --> 00:43:04,600
and people with this approval.

1198
00:43:04,600 --> 00:43:05,880
When a machine event arrives,

1199
00:43:05,880 --> 00:43:08,120
the system has to know which resource it affects

1200
00:43:08,120 --> 00:43:09,720
and which plan work depends on it.

1201
00:43:09,720 --> 00:43:10,760
That's the data model.

1202
00:43:10,760 --> 00:43:13,800
Think of it as the factory's shared set of nouns and links.

1203
00:43:13,800 --> 00:43:17,160
Not another dashboard, not a giant database copied from every system.

1204
00:43:17,160 --> 00:43:19,400
It's a model that states what each thing is,

1205
00:43:19,400 --> 00:43:21,080
how it's identified, and how it relates

1206
00:43:21,080 --> 00:43:22,920
to the other things that affect production.

1207
00:43:22,920 --> 00:43:24,840
Stable identities sit at the center.

1208
00:43:24,840 --> 00:43:26,600
The sales order has its own number.

1209
00:43:26,600 --> 00:43:28,520
ERP creates a work order under it.

1210
00:43:28,520 --> 00:43:31,320
MES records operations with a work order and operation number.

1211
00:43:31,320 --> 00:43:33,320
Quality refers to a batch or lot.

1212
00:43:33,320 --> 00:43:35,480
Maintenance knows the machine by an asset ID,

1213
00:43:35,480 --> 00:43:37,720
but MES uses a local equipment name.

1214
00:43:37,720 --> 00:43:40,840
None of that causes trouble if the links are explicit and maintained.

1215
00:43:40,840 --> 00:43:43,240
If they aren't, an outage event becomes hard to use.

1216
00:43:43,240 --> 00:43:46,440
The system can tell you asset MC17 has a problem,

1217
00:43:46,440 --> 00:43:49,160
but it can't reliably tell you which active operations,

1218
00:43:49,160 --> 00:43:51,640
fixtures, and promised orders are now at risk.

1219
00:43:51,640 --> 00:43:55,000
So people rebuild the connection by phone call and spreadsheet.

1220
00:43:55,000 --> 00:43:56,200
Again.

1221
00:43:57,160 --> 00:43:58,920
A practical model often follows

1222
00:43:58,920 --> 00:44:00,920
product, process, and resource relationships.

1223
00:44:00,920 --> 00:44:03,000
Product is what you're building.

1224
00:44:03,000 --> 00:44:05,480
The part, revision, customer conditions,

1225
00:44:05,480 --> 00:44:06,840
and the driving demand.

1226
00:44:06,840 --> 00:44:09,800
Process is how that product moves through approved operations,

1227
00:44:09,800 --> 00:44:11,880
including the routing version and the rules.

1228
00:44:11,880 --> 00:44:13,640
Resource is what performs the work.

1229
00:44:13,640 --> 00:44:16,920
Machine, fixture, tool, person, inspection station,

1230
00:44:16,920 --> 00:44:18,040
or batch furnace.

1231
00:44:18,040 --> 00:44:20,440
The schedule emerges where those three meet.

1232
00:44:20,440 --> 00:44:22,600
A housing order is a product requirement.

1233
00:44:22,600 --> 00:44:24,200
Its routing defines the process.

1234
00:44:24,200 --> 00:44:27,080
The 5-axis machine, fixture, tool package, operator,

1235
00:44:27,080 --> 00:44:28,840
material, lot, and quality release

1236
00:44:28,840 --> 00:44:31,640
are resources or conditions linked to that process.

1237
00:44:31,640 --> 00:44:33,400
When the 5-axis machine goes offline,

1238
00:44:33,400 --> 00:44:35,880
the model lets the scheduler ask a focused question.

1239
00:44:35,880 --> 00:44:38,520
Which active and future operations require this resource

1240
00:44:38,520 --> 00:44:40,520
directly or through an approved alternative?

1241
00:44:40,520 --> 00:44:43,000
But that's way more useful than a flat list of machine names

1242
00:44:43,000 --> 00:44:43,960
and open orders.

1243
00:44:43,960 --> 00:44:46,040
There's another distinction with keeping clear.

1244
00:44:46,040 --> 00:44:48,920
Master data, operational state, and timestamp

1245
00:44:48,920 --> 00:44:51,400
events are not the same type of information.

1246
00:44:51,400 --> 00:44:53,160
Master data changes slowly.

1247
00:44:53,160 --> 00:44:56,360
A machine's capability, a fixture's approved part range,

1248
00:44:56,360 --> 00:44:58,600
a routing version, a person's qualification.

1249
00:44:58,600 --> 00:45:00,280
These define what can normally happen

1250
00:45:00,280 --> 00:45:02,040
in need, control, and version history

1251
00:45:02,040 --> 00:45:04,840
because an unapproved edit can change the schedule's answer.

1252
00:45:04,840 --> 00:45:06,920
Operational state changes more often.

1253
00:45:06,920 --> 00:45:09,480
Is the fixture in the tool room or at a machine?

1254
00:45:09,480 --> 00:45:11,160
Has the material lot been accepted?

1255
00:45:11,160 --> 00:45:14,120
Is the resource available, blocked, or under maintenance review?

1256
00:45:14,120 --> 00:45:16,040
These are the current facts the schedule needs

1257
00:45:16,040 --> 00:45:17,960
when it creates or revises a commitment?

1258
00:45:17,960 --> 00:45:19,720
Then there are events.

1259
00:45:19,720 --> 00:45:21,480
A machine stopped at a given time.

1260
00:45:21,480 --> 00:45:24,600
A material receipt arrived and operator recorded a setup completion

1261
00:45:24,600 --> 00:45:26,200
quality released a first off part.

1262
00:45:26,200 --> 00:45:28,040
Events tell you what changed and when.

1263
00:45:28,040 --> 00:45:30,680
State tells you the current condition after those events.

1264
00:45:30,680 --> 00:45:33,720
Mix those concepts together and troubleshooting gets painful.

1265
00:45:33,720 --> 00:45:36,120
Suppose the scheduling layer thinks the fixture is available

1266
00:45:36,120 --> 00:45:38,680
but MES records and active operations still using it.

1267
00:45:38,680 --> 00:45:41,320
You need to know, did an event fail to arrive?

1268
00:45:41,320 --> 00:45:42,840
Did a state update come late?

1269
00:45:42,840 --> 00:45:45,480
Did someone change the fixture's status manually?

1270
00:45:45,480 --> 00:45:48,280
A model that keeps identities, states, and events clear?

1271
00:45:48,280 --> 00:45:51,880
Let's the team trace the problem instead of arguing about who's system is wrong.

1272
00:45:51,880 --> 00:45:54,040
Ownership matters just as much as structure.

1273
00:45:54,040 --> 00:45:56,440
ERP stays as the source for commercial demand,

1274
00:45:56,440 --> 00:45:59,800
work order release, inventory intent, and purchasing status.

1275
00:45:59,800 --> 00:46:02,840
MES stays close to execution, operation progress,

1276
00:46:02,840 --> 00:46:06,200
production counts, labor capture, shop floor transactions.

1277
00:46:06,200 --> 00:46:08,360
Maintenance owns asset health and decisions,

1278
00:46:08,360 --> 00:46:12,200
quality owns release status, inspection outcomes, and control approvals.

1279
00:46:12,200 --> 00:46:15,400
The scheduling layer doesn't need to take ownership away from those systems.

1280
00:46:15,400 --> 00:46:18,440
It needs their facts in a form it can use to test the schedule.

1281
00:46:18,440 --> 00:46:21,640
That boundary helps connect the dots between IT and OT

1282
00:46:21,640 --> 00:46:25,080
without pretending all factory decisions belong in one platform.

1283
00:46:25,080 --> 00:46:27,800
A data platform can collect and govern the information

1284
00:46:27,800 --> 00:46:30,280
but it can't decide who owns a routing revision

1285
00:46:30,280 --> 00:46:32,280
or whether a material substitute is acceptable.

1286
00:46:32,280 --> 00:46:36,040
Those stay as business and operational responsibilities.

1287
00:46:36,040 --> 00:46:39,080
Before a solver touches any of this, the data needs basic checks.

1288
00:46:39,080 --> 00:46:42,040
Does every released operation point to a valid routing version?

1289
00:46:42,040 --> 00:46:44,840
Does each machine identity resolve to one physical asset?

1290
00:46:44,840 --> 00:46:48,040
Does the fixture record include its current state and approval range?

1291
00:46:48,040 --> 00:46:50,520
Our skill records current does a material lot to connect

1292
00:46:50,520 --> 00:46:53,000
to the correct work order and quality status.

1293
00:46:53,000 --> 00:46:55,000
These checks sound ordinary because they are,

1294
00:46:55,000 --> 00:46:57,480
but a missing routing version or duplicate machine ID

1295
00:46:57,480 --> 00:47:00,200
can produce a very confident schedule for work that can't run.

1296
00:47:00,200 --> 00:47:02,200
Data plumbing moves records between systems.

1297
00:47:02,200 --> 00:47:05,640
The model adds meaning through the relationship's production depends on.

1298
00:47:05,640 --> 00:47:08,120
A row that says machine available isn't enough.

1299
00:47:08,120 --> 00:47:10,840
The schedule needs to know, available for which operation,

1300
00:47:10,840 --> 00:47:12,840
under which program, with which fixture,

1301
00:47:12,840 --> 00:47:15,000
during which shift and subject to whose approval?

1302
00:47:15,000 --> 00:47:19,240
Once those relationships are clear, factory facts become explicit rules

1303
00:47:19,240 --> 00:47:21,240
that a scheduling engine can test,

1304
00:47:21,240 --> 00:47:23,640
turning factory facts into constrained rules.

1305
00:47:23,640 --> 00:47:25,720
A connected data model gives the schedule of the facts

1306
00:47:25,720 --> 00:47:28,520
and constrained rules tell it how to act on those facts.

1307
00:47:28,520 --> 00:47:31,000
That translation needs care because people on the shop floor

1308
00:47:31,000 --> 00:47:34,280
describe rules in plain language that everyone in the area understands.

1309
00:47:34,280 --> 00:47:36,840
But a scheduling system needs a precise condition.

1310
00:47:36,840 --> 00:47:39,400
It can test every time it considers a new assignment.

1311
00:47:40,520 --> 00:47:43,880
Take the phrase, "Only qualified operators can run that job."

1312
00:47:43,880 --> 00:47:46,680
It sounds like one rule, but it often contains several.

1313
00:47:46,680 --> 00:47:49,400
The system needs to know which skill applies to the operation,

1314
00:47:49,400 --> 00:47:51,000
which people hold that skill,

1315
00:47:51,000 --> 00:47:52,760
whether their approval remains current,

1316
00:47:52,760 --> 00:47:54,120
when those people are available,

1317
00:47:54,120 --> 00:47:56,600
and it may also need to separate setup authority

1318
00:47:56,600 --> 00:47:58,360
from normal machine operation.

1319
00:47:58,360 --> 00:48:00,120
A person may run an established program,

1320
00:48:00,120 --> 00:48:01,800
but lack approval to move a fixture,

1321
00:48:01,800 --> 00:48:03,240
load a new program revision,

1322
00:48:03,240 --> 00:48:04,920
or sign off the first part.

1323
00:48:04,920 --> 00:48:08,040
So the rule becomes an eligibility check linked to a calendar.

1324
00:48:08,040 --> 00:48:10,200
Before the schedule places the operation,

1325
00:48:10,200 --> 00:48:12,200
it finds people approved for that work

1326
00:48:12,200 --> 00:48:15,000
and checks whether one of them covers the required time window.

1327
00:48:15,000 --> 00:48:18,600
If the job needs a setup person only at the start,

1328
00:48:18,600 --> 00:48:21,560
the rule can reserve that person for setup and release them afterward,

1329
00:48:21,560 --> 00:48:23,880
but if the operation needs continuous attendance,

1330
00:48:23,880 --> 00:48:26,040
the schedule needs coverage for the whole run.

1331
00:48:26,040 --> 00:48:28,840
That is much better than a note that says, "Check with Steve."

1332
00:48:28,840 --> 00:48:30,440
The same approach applies to the fixture.

1333
00:48:30,440 --> 00:48:32,280
People say that fixture has to stay with the batch,

1334
00:48:32,280 --> 00:48:34,520
meaning it becomes exclusively reserved from the point

1335
00:48:34,520 --> 00:48:36,280
where the batch enters the operation

1336
00:48:36,280 --> 00:48:39,320
until the plant completes the stated release or transfer step.

1337
00:48:39,320 --> 00:48:41,880
The rule needs to include the whole reservation period.

1338
00:48:41,880 --> 00:48:43,480
It may start before machining

1339
00:48:43,480 --> 00:48:45,400
because the fixture needs preparation

1340
00:48:45,400 --> 00:48:47,960
and it may continue after the machine cycle ends

1341
00:48:47,960 --> 00:48:49,720
because the part needs unclamping,

1342
00:48:49,720 --> 00:48:51,720
cleaning, inspection, or transfer.

1343
00:48:51,720 --> 00:48:53,240
If the fixture changes location,

1344
00:48:53,240 --> 00:48:55,400
the schedule needs a defined handoff point

1345
00:48:55,400 --> 00:48:57,160
before another job can reserve it,

1346
00:48:57,160 --> 00:48:59,000
otherwise the model finds a fictional gap

1347
00:48:59,000 --> 00:49:00,600
between two real activities.

1348
00:49:00,600 --> 00:49:02,680
Batch processes need another kind of rule.

1349
00:49:02,680 --> 00:49:05,560
In our scenario, heat treatment runs on a fixed daily cycle

1350
00:49:05,560 --> 00:49:07,640
rather than whenever milling happens to finish.

1351
00:49:07,640 --> 00:49:10,360
The batch furnace may accept work only before a cutoff time

1352
00:49:10,360 --> 00:49:12,040
and hold a limited quantity

1353
00:49:12,040 --> 00:49:14,280
and it may also require a minimum load,

1354
00:49:14,280 --> 00:49:15,800
a compatible material group

1355
00:49:15,800 --> 00:49:18,200
or a customer specific process record.

1356
00:49:18,200 --> 00:49:20,600
Those become time windows and capacity rules,

1357
00:49:20,600 --> 00:49:22,840
a milled batch that clears the prior operation

1358
00:49:22,840 --> 00:49:25,720
before the cutoff can enter that heat treatment cycle

1359
00:49:25,720 --> 00:49:26,840
if space remains,

1360
00:49:26,840 --> 00:49:28,360
but if it clears afterward,

1361
00:49:28,360 --> 00:49:30,840
the scheduler places it in the next approved window.

1362
00:49:30,840 --> 00:49:32,920
That one decision can move inspection,

1363
00:49:32,920 --> 00:49:35,240
assembly, and delivery even though the delay at machining

1364
00:49:35,240 --> 00:49:35,960
looked small.

1365
00:49:35,960 --> 00:49:38,920
The rule gives the delay a real path through the schedule.

1366
00:49:38,920 --> 00:49:40,600
Customer priority works differently,

1367
00:49:40,600 --> 00:49:42,600
a high priority order should not receive permission

1368
00:49:42,600 --> 00:49:44,680
to bypass safety, quality release,

1369
00:49:44,680 --> 00:49:46,520
or an unavailable fixture.

1370
00:49:46,520 --> 00:49:48,520
Priority belongs in the objective rules,

1371
00:49:48,520 --> 00:49:50,040
where it influences how the scheduler

1372
00:49:50,040 --> 00:49:51,480
compares feasible choices.

1373
00:49:51,480 --> 00:49:53,480
For example, the business may decide

1374
00:49:53,480 --> 00:49:55,240
that missing a contractual delivery

1375
00:49:55,240 --> 00:49:56,600
carries a higher penalty

1376
00:49:56,600 --> 00:49:58,680
than adding an approved setup change,

1377
00:49:58,680 --> 00:50:00,840
or that a line stop risk takes precedence

1378
00:50:00,840 --> 00:50:02,520
over a normal customer due date.

1379
00:50:02,520 --> 00:50:04,200
Those choices can guide the schedule

1380
00:50:04,200 --> 00:50:06,040
after it has filtered out options

1381
00:50:06,040 --> 00:50:07,800
that break hard operating limits,

1382
00:50:07,800 --> 00:50:09,800
priority changes preference, not physics.

1383
00:50:09,800 --> 00:50:11,880
That distinction protects the people on the floor.

1384
00:50:11,880 --> 00:50:14,440
When sales asks for an urgent order to move forward,

1385
00:50:14,440 --> 00:50:16,040
the planner can show the approved options

1386
00:50:16,040 --> 00:50:17,480
and the impact of each one,

1387
00:50:17,480 --> 00:50:19,720
and the discussion moves from just fitted in

1388
00:50:19,720 --> 00:50:21,400
to a more useful question.

1389
00:50:21,400 --> 00:50:23,400
Which other commitment, cost, or risk,

1390
00:50:23,400 --> 00:50:24,600
are we prepared to accept?

1391
00:50:24,600 --> 00:50:26,920
A rule also needs an owner.

1392
00:50:26,920 --> 00:50:28,680
Production should own rules around dispatch

1393
00:50:28,680 --> 00:50:30,120
and local operating practice.

1394
00:50:30,120 --> 00:50:32,120
Engineering should own approved rootings,

1395
00:50:32,120 --> 00:50:34,120
programs, and resource capability.

1396
00:50:34,120 --> 00:50:35,640
Quality should own release gates

1397
00:50:35,640 --> 00:50:37,480
and material substitutions.

1398
00:50:37,480 --> 00:50:39,480
Maintenance should own maintenance windows

1399
00:50:39,480 --> 00:50:40,760
and asset restrictions.

1400
00:50:40,760 --> 00:50:42,680
And planning should own the business logic

1401
00:50:42,680 --> 00:50:44,120
that turns approved priorities

1402
00:50:44,120 --> 00:50:45,560
into scheduling objectives.

1403
00:50:45,560 --> 00:50:47,080
No single person knows all of it.

1404
00:50:47,080 --> 00:50:48,920
That is why rule governance matters.

1405
00:50:48,920 --> 00:50:50,840
If a planner changes the setup constraint

1406
00:50:50,840 --> 00:50:52,280
because the queue looks bad,

1407
00:50:52,280 --> 00:50:53,320
they may remove a condition

1408
00:50:53,320 --> 00:50:55,160
in the tool room or quality team

1409
00:50:55,160 --> 00:50:57,000
considers non-negotiable.

1410
00:50:57,000 --> 00:50:58,440
If maintenance blocks a machine

1411
00:50:58,440 --> 00:50:59,640
without a clear end time,

1412
00:50:59,640 --> 00:51:02,280
the schedule may protect too much capacity for too long.

1413
00:51:02,280 --> 00:51:04,120
Each group needs a way to change its own rules

1414
00:51:04,120 --> 00:51:06,600
while the scheduling model records the source and effect.

1415
00:51:06,600 --> 00:51:08,680
Versioning keeps those changes traceable.

1416
00:51:08,680 --> 00:51:10,360
Arrouting approval changes.

1417
00:51:10,360 --> 00:51:12,760
A fixture receives approval for another variant,

1418
00:51:12,760 --> 00:51:14,600
a skill expires or renews.

1419
00:51:14,600 --> 00:51:16,520
And a maintenance team adds a restriction

1420
00:51:16,520 --> 00:51:18,280
after finding a condition issue.

1421
00:51:18,280 --> 00:51:20,360
The schedule should use the rule version active

1422
00:51:20,360 --> 00:51:21,480
at the time of the decision,

1423
00:51:21,480 --> 00:51:23,000
not silently replace history

1424
00:51:23,000 --> 00:51:25,240
with the latest master data value.

1425
00:51:25,240 --> 00:51:27,800
That matters when people ask why an order moved.

1426
00:51:27,800 --> 00:51:29,320
Exceptions need the same discipline.

1427
00:51:29,320 --> 00:51:31,720
A supervisor may approve a one-time workaround,

1428
00:51:31,720 --> 00:51:33,720
engineering may permit an alternate machine

1429
00:51:33,720 --> 00:51:34,840
for a specific batch

1430
00:51:34,840 --> 00:51:38,040
and quality may release material under a controlled deviation.

1431
00:51:38,040 --> 00:51:39,400
Those decisions can be valid,

1432
00:51:39,400 --> 00:51:41,640
but they should carry an approver, a scope,

1433
00:51:41,640 --> 00:51:43,400
and an expiry point.

1434
00:51:43,400 --> 00:51:45,400
A permanent rule built from a temporary exception

1435
00:51:45,400 --> 00:51:46,520
creates trouble later.

1436
00:51:46,520 --> 00:51:47,880
When rules become explicit,

1437
00:51:47,880 --> 00:51:50,120
the plant does not lose its practical knowledge.

1438
00:51:50,120 --> 00:51:51,480
It gives that knowledge of form,

1439
00:51:51,480 --> 00:51:53,240
the schedule can test consistently,

1440
00:51:53,240 --> 00:51:54,520
explained to users,

1441
00:51:54,520 --> 00:51:56,600
and revised through controlled decisions.

1442
00:51:56,600 --> 00:51:57,640
Then the problem changes,

1443
00:51:57,640 --> 00:52:00,360
the question is no longer whether the system has enough data

1444
00:52:00,360 --> 00:52:03,320
but how it searches through all the allowed combinations of time,

1445
00:52:03,320 --> 00:52:05,400
resources, sequences, and priorities

1446
00:52:05,400 --> 00:52:07,320
to find work the plant can actually commit to.

1447
00:52:07,320 --> 00:52:10,440
What the scheduling engine is solving?

1448
00:52:10,440 --> 00:52:11,560
Once the rules exist,

1449
00:52:11,560 --> 00:52:13,720
the scheduling engine faces a search problem.

1450
00:52:13,720 --> 00:52:16,040
It needs to decide when each operation starts,

1451
00:52:16,040 --> 00:52:16,920
when it finishes,

1452
00:52:16,920 --> 00:52:18,600
which approved resource performs it,

1453
00:52:18,600 --> 00:52:20,600
who covers the work where labor matters

1454
00:52:20,600 --> 00:52:22,760
and what sequence each resource follows.

1455
00:52:22,760 --> 00:52:23,800
Those choices connect,

1456
00:52:23,800 --> 00:52:25,960
change the machine and the duration may change,

1457
00:52:25,960 --> 00:52:28,200
change the start time and the qualified operator

1458
00:52:28,200 --> 00:52:29,240
may no longer cover it.

1459
00:52:29,240 --> 00:52:31,720
The engine is not filling empty calendar slots.

1460
00:52:31,720 --> 00:52:33,960
It is testing a large number of possible schedules

1461
00:52:33,960 --> 00:52:36,120
against the constraints the plant has defined.

1462
00:52:36,120 --> 00:52:36,920
For a small queue,

1463
00:52:36,920 --> 00:52:39,240
a planner can often do much of that work mentally,

1464
00:52:39,240 --> 00:52:41,400
but one several orders compete for machines,

1465
00:52:41,400 --> 00:52:44,760
fixtures, people, material, and downstream windows.

1466
00:52:44,760 --> 00:52:47,320
The number of possible combinations climbs very quickly.

1467
00:52:47,320 --> 00:52:49,080
That is where the engine earns its place.

1468
00:52:49,080 --> 00:52:50,360
Start with feasibility.

1469
00:52:50,360 --> 00:52:52,280
Before it tries to improve due date performance

1470
00:52:52,280 --> 00:52:53,480
or reduce setup time,

1471
00:52:53,480 --> 00:52:54,840
it must find assignments

1472
00:52:54,840 --> 00:52:57,000
that can physically and operationally happen.

1473
00:52:57,000 --> 00:52:59,160
An operation cannot overlap another operation

1474
00:52:59,160 --> 00:53:00,760
on the same exclusive machine.

1475
00:53:00,760 --> 00:53:03,960
It cannot start before the required prior work releases it.

1476
00:53:03,960 --> 00:53:06,840
It cannot consume material that remains on hold.

1477
00:53:06,840 --> 00:53:08,920
And it cannot run in a calendar period

1478
00:53:08,920 --> 00:53:11,560
that the resource, tool, or skilled person

1479
00:53:11,560 --> 00:53:13,240
cannot support.

1480
00:53:13,240 --> 00:53:14,840
These are paths or fail tests.

1481
00:53:14,840 --> 00:53:17,400
Suppose the engine considers moving a housing operation

1482
00:53:17,400 --> 00:53:19,400
to the alternate machine on Tuesday morning.

1483
00:53:19,400 --> 00:53:22,120
It tests whether that machine qualifies for the approved route,

1484
00:53:22,120 --> 00:53:23,880
whether the fixture can arrive in time,

1485
00:53:23,880 --> 00:53:25,800
whether the program and tool package are ready,

1486
00:53:25,800 --> 00:53:28,360
whether a qualified setup person covers the start,

1487
00:53:28,360 --> 00:53:30,360
and whether the batch can still reach heat treatment

1488
00:53:30,360 --> 00:53:32,280
before its next window closes.

1489
00:53:32,280 --> 00:53:34,440
If one hard rule fails, that option drops out,

1490
00:53:34,440 --> 00:53:37,000
that process is often called constraint propagation,

1491
00:53:37,000 --> 00:53:39,320
but the term sounds more complex than it is.

1492
00:53:39,320 --> 00:53:41,560
A change in one place creates effects,

1493
00:53:41,560 --> 00:53:42,680
in connected places,

1494
00:53:42,680 --> 00:53:44,840
and the engine carries those effects forward

1495
00:53:44,840 --> 00:53:47,880
instead of leaving them for a planner to find later.

1496
00:53:47,880 --> 00:53:49,480
A milling operation finishes late,

1497
00:53:49,480 --> 00:53:52,360
heat treatment moves, inspection then loses its planned slot,

1498
00:53:52,360 --> 00:53:53,640
assembly waits for release,

1499
00:53:53,640 --> 00:53:55,480
and the delivery risk changes.

1500
00:53:55,480 --> 00:53:57,000
The schedule follows the chain.

1501
00:53:57,000 --> 00:53:59,320
Constraint propagation also works in reverse.

1502
00:53:59,320 --> 00:54:02,120
If an order must reach final assembly by a certain time,

1503
00:54:02,120 --> 00:54:04,440
the engine can work backward through inspection,

1504
00:54:04,440 --> 00:54:06,520
heat treatment, and milling to calculate

1505
00:54:06,520 --> 00:54:08,600
when each prior operation needs to finish,

1506
00:54:08,600 --> 00:54:11,080
and then test whether the factory can support those times

1507
00:54:11,080 --> 00:54:12,840
under the actual constraints.

1508
00:54:12,840 --> 00:54:14,920
That gives planners a more honest answer

1509
00:54:14,920 --> 00:54:17,000
than a due date entered into ERP.

1510
00:54:17,000 --> 00:54:20,120
Feasibility does not mean the engine has found the preferred schedule.

1511
00:54:20,120 --> 00:54:21,800
A factory can often run many schedules

1512
00:54:21,800 --> 00:54:23,320
that obey every hard rule,

1513
00:54:23,320 --> 00:54:26,200
but those schedules can produce very different business results.

1514
00:54:26,200 --> 00:54:28,200
One may ship the most urgent orders on time

1515
00:54:28,200 --> 00:54:29,320
but create more setups,

1516
00:54:29,320 --> 00:54:32,280
another may reduce setups while pushing more work into cues,

1517
00:54:32,280 --> 00:54:34,280
and a third may protect a bottleneck machine

1518
00:54:34,280 --> 00:54:37,400
while leaving a less constrained area idle for a period.

1519
00:54:37,400 --> 00:54:40,520
Or maybe legal, but they are not equally useful.

1520
00:54:40,520 --> 00:54:42,680
So after the engine identifies feasible options,

1521
00:54:42,680 --> 00:54:45,320
it scores them against the objectives the business has chosen,

1522
00:54:45,320 --> 00:54:48,280
penalizing late customer orders, excessive changeovers,

1523
00:54:48,280 --> 00:54:49,480
avoidable overtime,

1524
00:54:49,480 --> 00:54:51,560
or too much work waiting between operations,

1525
00:54:51,560 --> 00:54:53,320
and rewarding flow through a bottleneck

1526
00:54:53,320 --> 00:54:55,720
or protecting a stated service commitment.

1527
00:54:55,720 --> 00:54:59,000
Those objectives need to stay separate from the hard limits.

1528
00:54:59,000 --> 00:55:00,760
A schedule should never improve its score

1529
00:55:00,760 --> 00:55:02,760
by assigning an unapproved operator

1530
00:55:02,760 --> 00:55:04,600
or ignoring a material hold.

1531
00:55:04,600 --> 00:55:07,000
The engine first asks, "Can this run?"

1532
00:55:07,000 --> 00:55:10,120
And only then asks, "Which valid option causes the least harm

1533
00:55:10,120 --> 00:55:12,040
and best supports the chosen policy?"

1534
00:55:12,040 --> 00:55:13,800
That is a disciplined order of work.

1535
00:55:13,800 --> 00:55:16,520
There is no single perfect schedule waiting inside the data.

1536
00:55:16,520 --> 00:55:18,280
Every plant has competing goals

1537
00:55:18,280 --> 00:55:20,680
and any schedule exposes those choices.

1538
00:55:20,680 --> 00:55:22,280
If you reduce setups aggressively,

1539
00:55:22,280 --> 00:55:24,440
you may delay an order that needs a quick response

1540
00:55:24,440 --> 00:55:26,040
if you load every available hour.

1541
00:55:26,040 --> 00:55:29,160
You may create a queue that makes later disruption harder to absorb.

1542
00:55:29,160 --> 00:55:31,080
The engine can make those trade-offs visible,

1543
00:55:31,080 --> 00:55:33,160
but it cannot decide what the business should value

1544
00:55:33,160 --> 00:55:34,200
without being told.

1545
00:55:34,200 --> 00:55:36,520
Different scheduling methods can support the search.

1546
00:55:36,520 --> 00:55:39,320
Some systems use rules that build a schedule step-by-step.

1547
00:55:39,320 --> 00:55:41,080
Others use mathematical optimization,

1548
00:55:41,080 --> 00:55:42,360
which searches for combinations

1549
00:55:42,360 --> 00:55:45,160
that meet stated conditions and scores them against targets.

1550
00:55:45,160 --> 00:55:47,000
Constraint programming focuses strongly

1551
00:55:47,000 --> 00:55:49,000
on the allowed relationships between decisions

1552
00:55:49,000 --> 00:55:50,280
and heuristic methods.

1553
00:55:50,280 --> 00:55:53,480
Use practical search rules to find a good answer within a useful time.

1554
00:55:53,480 --> 00:55:56,120
The method matters, but clear factory rules matter more.

1555
00:55:56,120 --> 00:55:59,480
Calling the engine AI does not fix missing capability data,

1556
00:55:59,480 --> 00:56:03,080
vague priorities, or a fixture that someone moved without recording it.

1557
00:56:03,080 --> 00:56:06,440
Industrial AI may help estimate a duration of flag failure risk,

1558
00:56:06,440 --> 00:56:09,160
but a finite scheduler still needs explicit constraints

1559
00:56:09,160 --> 00:56:10,840
and an objective it can test.

1560
00:56:10,840 --> 00:56:13,080
Otherwise, it can only optimize assumptions.

1561
00:56:13,080 --> 00:56:15,160
For our plant, the engine now has enough structure

1562
00:56:15,160 --> 00:56:18,040
to build a first schedule that respects the work already underway,

1563
00:56:18,040 --> 00:56:21,800
the available resources, and the time windows that shape the rest of the route,

1564
00:56:21,800 --> 00:56:25,000
and that first result may expose late orders nobody wanted to see.

1565
00:56:25,000 --> 00:56:28,680
Better to see them in the schedule than discover them at shipping,

1566
00:56:28,680 --> 00:56:30,760
building the first achievable schedule.

1567
00:56:30,760 --> 00:56:32,520
With your model and rules in place,

1568
00:56:32,520 --> 00:56:36,200
the first run should aim for an honest answer instead of a beautiful one,

1569
00:56:36,200 --> 00:56:39,960
because a schedule that exposes overload is way more useful

1570
00:56:39,960 --> 00:56:42,600
than a plan that hides it until the shift starts.

1571
00:56:42,600 --> 00:56:45,240
Start by pulling in the released work,

1572
00:56:45,240 --> 00:56:47,560
open orders, active routing versions,

1573
00:56:47,560 --> 00:56:51,000
remaining quantities, and current operation status from the MES,

1574
00:56:51,000 --> 00:56:54,200
then add resource calendars, material release status,

1575
00:56:54,200 --> 00:56:56,360
fixture availability, tool readiness,

1576
00:56:56,360 --> 00:56:59,160
and the skill coverage that applies during the planning horizon.

1577
00:56:59,160 --> 00:57:01,160
That gives the engine its working set.

1578
00:57:01,160 --> 00:57:05,080
Some commitments need to go in before the engine starts comparing new options.

1579
00:57:05,080 --> 00:57:07,640
Work already running on a machine stays put

1580
00:57:07,640 --> 00:57:09,640
unless production decides otherwise,

1581
00:57:09,640 --> 00:57:13,640
because a job with parts clamped in a fixture carries physical momentum.

1582
00:57:13,640 --> 00:57:15,320
You can't treat it like an untouched order

1583
00:57:15,320 --> 00:57:17,720
just because a calendar slot looks better elsewhere.

1584
00:57:17,720 --> 00:57:20,040
Maintenance windows belong in the same category.

1585
00:57:20,040 --> 00:57:22,280
A planned shutdown, approved inspection,

1586
00:57:22,280 --> 00:57:24,920
or locked customer commitment should reserve capacity

1587
00:57:24,920 --> 00:57:27,160
before the engine tries to fill the rest of the week.

1588
00:57:27,160 --> 00:57:30,360
If you load those periods with work hoping someone will sort it out later,

1589
00:57:30,360 --> 00:57:32,040
you haven't scheduled around the constraint.

1590
00:57:32,040 --> 00:57:33,240
You've just buried it.

1591
00:57:33,240 --> 00:57:37,080
In our machining plant, the engine starts with the jobs already underway.

1592
00:57:37,080 --> 00:57:39,480
It knows which housings have completed milling,

1593
00:57:39,480 --> 00:57:41,560
which batch is waiting for heat treatment,

1594
00:57:41,560 --> 00:57:44,680
and which operation still occupies the five axis resource

1595
00:57:44,680 --> 00:57:47,480
before the machine condition decision becomes final.

1596
00:57:47,480 --> 00:57:49,560
Those are fixed or near fixed points in time.

1597
00:57:49,560 --> 00:57:52,120
From there, the engine looks at each remaining operation

1598
00:57:52,120 --> 00:57:54,120
and creates a set of eligible choices.

1599
00:57:54,120 --> 00:57:56,040
For example, the housing milling operation

1600
00:57:56,040 --> 00:57:58,120
may qualify for the five axis machine

1601
00:57:58,120 --> 00:58:00,680
under its normal root and for the alternate machine

1602
00:58:00,680 --> 00:58:02,280
under the approved alternate root,

1603
00:58:02,280 --> 00:58:04,840
but eligibility only starts the test.

1604
00:58:04,840 --> 00:58:06,600
The engine checks the fixture first,

1605
00:58:06,600 --> 00:58:08,760
then the tool package and setup conditions.

1606
00:58:08,760 --> 00:58:12,040
It tests the operator calendar at the proposed start time

1607
00:58:12,040 --> 00:58:14,040
and checks whether material has cleared release

1608
00:58:14,040 --> 00:58:15,800
and whether the downstream heat treatment window

1609
00:58:15,800 --> 00:58:17,400
can still accept the output.

1610
00:58:17,400 --> 00:58:18,920
Only then can it place the operation.

1611
00:58:18,920 --> 00:58:21,720
Here's where a schedule becomes more than a list ordered by due date.

1612
00:58:21,720 --> 00:58:24,680
A due date might put the rush housing order at the front of the queue,

1613
00:58:24,680 --> 00:58:27,960
but the engine may find that the material lot is on hold

1614
00:58:27,960 --> 00:58:29,240
until later in the day.

1615
00:58:29,240 --> 00:58:31,400
It can leave that order visible as urgent,

1616
00:58:31,400 --> 00:58:33,480
while using the earliest slot for a different order

1617
00:58:33,480 --> 00:58:34,840
that is actually ready to run.

1618
00:58:34,840 --> 00:58:36,280
That isn't ignoring priority.

1619
00:58:36,280 --> 00:58:38,680
It's using available time without creating false work.

1620
00:58:38,680 --> 00:58:39,960
Sequencing comes next,

1621
00:58:39,960 --> 00:58:42,120
and the engine places work around hard dates,

1622
00:58:42,120 --> 00:58:44,840
setup families and the timing of later processes.

1623
00:58:44,840 --> 00:58:47,240
If two eligible jobs meet the same machine,

1624
00:58:47,240 --> 00:58:49,400
it can compare the setup change between them.

1625
00:58:49,400 --> 00:58:52,040
If one job must reach the furnace before a daily cutoff,

1626
00:58:52,040 --> 00:58:53,880
it can reserve enough time upstream,

1627
00:58:53,880 --> 00:58:56,280
rather than treating milling as an isolated task.

1628
00:58:56,280 --> 00:58:58,440
The furnace window shapes the machining decision.

1629
00:58:58,440 --> 00:59:00,200
The result can feel counterintuitive

1630
00:59:00,200 --> 00:59:01,960
when you're only looking at the machine queue.

1631
00:59:01,960 --> 00:59:05,240
A job with a later customer date might run first

1632
00:59:05,240 --> 00:59:08,120
because it can complete the current setup with little extra time

1633
00:59:08,120 --> 00:59:10,680
and still reach heat treatment before the cutoff,

1634
00:59:10,680 --> 00:59:13,240
while the more urgent job waits for released material

1635
00:59:13,240 --> 00:59:14,760
or a qualified setup person.

1636
00:59:14,760 --> 00:59:18,360
The schedule should explain that choice in plain language.

1637
00:59:18,360 --> 00:59:21,000
If users only see that their job moved down the sequence,

1638
00:59:21,000 --> 00:59:22,840
they'll assume the system missed something.

1639
00:59:22,840 --> 00:59:25,400
But if they can see that the order lacks material release

1640
00:59:25,400 --> 00:59:26,440
until three o'clock,

1641
00:59:26,440 --> 00:59:28,680
all that moving at first would miss the furnace

1642
00:59:28,680 --> 00:59:30,280
and delay two other orders.

1643
00:59:30,280 --> 00:59:31,880
The discussion changes.

1644
00:59:31,880 --> 00:59:33,800
People may still disagree with the policy,

1645
00:59:33,800 --> 00:59:36,120
but now they can disagree with facts in view.

1646
00:59:36,120 --> 00:59:39,320
A first achievable schedule also needs to show lateness openly.

1647
00:59:39,320 --> 00:59:42,120
When some demand simply won't fit inside available capacity

1648
00:59:42,120 --> 00:59:43,080
and constraints,

1649
00:59:43,080 --> 00:59:45,480
the engine should not solve that by placing overlapping jobs

1650
00:59:45,480 --> 00:59:46,520
on the same machine,

1651
00:59:46,520 --> 00:59:47,560
inventing overtime

1652
00:59:47,560 --> 00:59:49,320
or treating a missing fixture as available.

1653
00:59:49,320 --> 00:59:51,320
It should mark the order at risk

1654
00:59:51,320 --> 00:59:52,920
and show where the conflict begins.

1655
00:59:52,920 --> 00:59:53,880
That is not failure.

1656
00:59:53,880 --> 00:59:55,160
It's the first usable answer.

1657
00:59:55,160 --> 00:59:57,720
The planner can then decide whether to approve overtime,

1658
00:59:57,720 --> 01:00:00,440
change a customer commitment, add capacity,

1659
01:00:00,440 --> 01:00:03,160
use an approved alternate route, or accept the delay.

1660
01:00:03,160 --> 01:00:06,200
Each choice changes the schedule through a controlled decision,

1661
01:00:06,200 --> 01:00:08,680
not through a quiet assumption hidden in the spreadsheet.

1662
01:00:08,680 --> 01:00:09,800
For the housing scenario,

1663
01:00:09,800 --> 01:00:12,280
the first baseline may already reveal a problem.

1664
01:00:12,280 --> 01:00:14,520
The five-axis resource looks fully loaded

1665
01:00:14,520 --> 01:00:17,240
even before the outage removes time from its calendar,

1666
01:00:17,240 --> 01:00:18,760
while the alternate machine has gaps

1667
01:00:18,760 --> 01:00:20,680
that only some part variants can use.

1668
01:00:20,680 --> 01:00:23,800
The original plan showed enough total machining hours,

1669
01:00:23,800 --> 01:00:26,040
but the achievable schedule shows where those hours

1670
01:00:26,040 --> 01:00:27,480
cannot substitute for each other.

1671
01:00:27,480 --> 01:00:30,840
The five-axis failure changes everything.

1672
01:00:30,840 --> 01:00:32,680
The baseline schedule exposes the pressure

1673
01:00:32,680 --> 01:00:34,040
and then on Monday morning,

1674
01:00:34,040 --> 01:00:36,120
the five-axis machine goes offline.

1675
01:00:36,120 --> 01:00:38,520
At that point, this stops being a capacity estimate

1676
01:00:38,520 --> 01:00:40,600
and becomes an active production event

1677
01:00:40,600 --> 01:00:43,240
with a partly completed housing still on the machine,

1678
01:00:43,240 --> 01:00:44,520
a fixture tied up,

1679
01:00:44,520 --> 01:00:46,680
and several later operations depending on

1680
01:00:46,680 --> 01:00:48,200
when that work can move.

1681
01:00:48,200 --> 01:00:50,920
The first question isn't where to put the next order.

1682
01:00:50,920 --> 01:00:53,320
It's what is the actual state of the order already there?

1683
01:00:53,320 --> 01:00:55,960
Suppose the machine stopped halfway through a batch.

1684
01:00:55,960 --> 01:00:57,800
The MES may show a quantity completed,

1685
01:00:57,800 --> 01:00:59,320
a quantity still in process,

1686
01:00:59,320 --> 01:01:01,160
and a remaining quantity that has not started,

1687
01:01:01,160 --> 01:01:03,320
and those are not all the same scheduling problem.

1688
01:01:03,320 --> 01:01:05,560
Completed parts may move to the next approved step,

1689
01:01:05,560 --> 01:01:06,440
parts still clamped,

1690
01:01:06,440 --> 01:01:08,040
may need a controlled recovery decision,

1691
01:01:08,040 --> 01:01:10,520
and the remaining quantity might transfer to another machine,

1692
01:01:10,520 --> 01:01:12,600
but only if the approved route allows it.

1693
01:01:12,600 --> 01:01:15,800
Production also needs to know whether the current setup can move.

1694
01:01:15,800 --> 01:01:18,920
They need answers on whether the part is safe to release from the fixture,

1695
01:01:18,920 --> 01:01:21,480
whether the interruption occurred during a machining cycle

1696
01:01:21,480 --> 01:01:22,760
that needs inspection,

1697
01:01:22,760 --> 01:01:24,680
whether the program state is recoverable,

1698
01:01:24,680 --> 01:01:27,800
and whether the same fixture, tools, and program revision

1699
01:01:27,800 --> 01:01:29,880
can transfer to the alternate machine,

1700
01:01:29,880 --> 01:01:32,680
or if a new setup and first off approval are needed.

1701
01:01:32,680 --> 01:01:35,720
Those details decide the available choices.

1702
01:01:35,720 --> 01:01:39,640
A simple outage notice that says machine unavailable doesn't carry enough information.

1703
01:01:39,640 --> 01:01:42,200
The scheduler needs an event that changes the machine calendar,

1704
01:01:42,200 --> 01:01:45,640
but it also needs execution facts from the work already on the resource.

1705
01:01:45,640 --> 01:01:48,040
Otherwise, it may schedule the remaining work twice,

1706
01:01:48,040 --> 01:01:49,480
release a fixture too early,

1707
01:01:49,480 --> 01:01:51,320
or assume the next operation can begin

1708
01:01:51,320 --> 01:01:54,040
before the physical part has actually cleared the machine.

1709
01:01:54,040 --> 01:01:57,320
The impact reaches further than the active housing order.

1710
01:01:57,320 --> 01:02:00,760
Every future operation assigned to the 5AXIS machine now needs review,

1711
01:02:00,760 --> 01:02:03,160
and so do the orders that depend on those operations.

1712
01:02:03,160 --> 01:02:06,360
Apart due for heat treatment later that day may lose its furnace window.

1713
01:02:06,360 --> 01:02:08,760
A later assembly order may still have all its purchase parts,

1714
01:02:08,760 --> 01:02:11,400
but cannot start because the machine housing will not arrive.

1715
01:02:11,400 --> 01:02:13,560
Another order may have a delivery date that looked safe

1716
01:02:13,560 --> 01:02:15,560
until this outage shifted the queue ahead of it.

1717
01:02:15,560 --> 01:02:18,120
Here's where constrained-based scheduling proves its worth.

1718
01:02:18,120 --> 01:02:21,240
The system can trace affected work through the current schedule,

1719
01:02:21,240 --> 01:02:23,640
find direct assignments on the unavailable machine,

1720
01:02:23,640 --> 01:02:25,400
then follow routing dependencies

1721
01:02:25,400 --> 01:02:28,760
to see which downstream operations lose their planned input.

1722
01:02:28,760 --> 01:02:30,840
It can also see indirect effects,

1723
01:02:30,840 --> 01:02:34,680
a job moved to the alternate machine occupies time that another job expected to use

1724
01:02:34,680 --> 01:02:36,920
and that second job may now become late.

1725
01:02:36,920 --> 01:02:40,440
Nobody needs to search across separate spreadsheets while the machine sits down.

1726
01:02:40,440 --> 01:02:43,240
The next step is not to automatically transfer everything.

1727
01:02:43,240 --> 01:02:45,240
The scheduler tests the alternate machine

1728
01:02:45,240 --> 01:02:48,040
against the actual rules for each affected operation.

1729
01:02:48,040 --> 01:02:49,960
Can it produce that part variant?

1730
01:02:49,960 --> 01:02:51,960
Meet tolerance and program approval?

1731
01:02:51,960 --> 01:02:53,800
Can the fixture reach it in time?

1732
01:02:53,800 --> 01:02:55,320
Are the right tools ready?

1733
01:02:55,320 --> 01:02:57,640
Does a qualified setup person cover the slot?

1734
01:02:57,640 --> 01:03:01,080
And does the transfer leave enough time for the next routing step?

1735
01:03:01,080 --> 01:03:03,640
A machine with empty time may still fail the test.

1736
01:03:03,640 --> 01:03:07,000
For the housing order, the system may find a few feasible paths.

1737
01:03:07,000 --> 01:03:09,080
One option holds the partly completed batch

1738
01:03:09,080 --> 01:03:11,400
until maintenance returns the original machine,

1739
01:03:11,400 --> 01:03:15,320
which avoids transfer risk but may push delivery past the customer date.

1740
01:03:15,320 --> 01:03:17,560
Another option transfers the remaining quantity

1741
01:03:17,560 --> 01:03:20,600
to the alternate machine after a controlled release and new setup,

1742
01:03:20,600 --> 01:03:23,240
which protects some output but consumes setup time

1743
01:03:23,240 --> 01:03:25,720
and changes the queue on the alternate resource.

1744
01:03:25,720 --> 01:03:27,480
A third option may split the work.

1745
01:03:27,480 --> 01:03:30,360
Completed parts can proceed once the required checks pass,

1746
01:03:30,360 --> 01:03:32,760
while the remaining quantity follows the alternate route

1747
01:03:32,760 --> 01:03:35,880
which can protect part of the delivery or support a partial shipment

1748
01:03:35,880 --> 01:03:39,000
if the customer commitment and product rules permitted.

1749
01:03:39,000 --> 01:03:41,880
But splitting the batch may add handling, traceability work,

1750
01:03:41,880 --> 01:03:43,320
and extra inspection effort,

1751
01:03:43,320 --> 01:03:45,160
and the schedule should show those costs

1752
01:03:45,160 --> 01:03:47,720
rather than presenting the split as free flexibility.

1753
01:03:47,720 --> 01:03:49,800
Approved overtime may create another option.

1754
01:03:49,800 --> 01:03:52,120
If a qualified person can support a late setup

1755
01:03:52,120 --> 01:03:54,200
and the site approves the extra hours,

1756
01:03:54,200 --> 01:03:57,000
the alternate machine may recover some lost time.

1757
01:03:57,000 --> 01:03:59,880
Yet overtime changes labour cost, fatigue exposure,

1758
01:03:59,880 --> 01:04:02,440
and the recovery room available for the next disruption.

1759
01:04:02,440 --> 01:04:03,800
It's a management decision,

1760
01:04:03,800 --> 01:04:07,160
not a blank calendar block the solver can quietly fill.

1761
01:04:07,160 --> 01:04:08,760
Every option moves a problem somewhere,

1762
01:04:08,760 --> 01:04:11,400
holding work concentrates delivery risk on the affected order.

1763
01:04:11,400 --> 01:04:15,320
Transferring work puts pressure on the alternate machine and fixture.

1764
01:04:15,320 --> 01:04:17,480
Overtime protects one date while adding cost

1765
01:04:17,480 --> 01:04:19,640
and relying on people to absorb the disruption

1766
01:04:19,640 --> 01:04:21,800
and re-sequencing may keep the furnace busy

1767
01:04:21,800 --> 01:04:25,000
but delay another customer order that had a less visible claim

1768
01:04:25,000 --> 01:04:26,280
on the same capacity.

1769
01:04:26,280 --> 01:04:28,600
The scheduler cannot erase those trade-offs

1770
01:04:28,600 --> 01:04:30,840
but it can put them in front of the planner

1771
01:04:30,840 --> 01:04:32,760
before someone commits the shop floor.

1772
01:04:32,760 --> 01:04:37,080
That matters because the original plan only saw total machining demand.

1773
01:04:37,080 --> 01:04:39,720
But the revised schedule sees the real chain.

1774
01:04:39,720 --> 01:04:41,960
Partial work, fixture release,

1775
01:04:41,960 --> 01:04:44,840
approved alternate capability, setup time,

1776
01:04:44,840 --> 01:04:47,000
labour coverage, and the downstream route.

1777
01:04:47,000 --> 01:04:50,120
A machine failure changes all of them at once

1778
01:04:50,120 --> 01:04:53,000
and just as the plan starts to find room around that outage,

1779
01:04:53,000 --> 01:04:55,800
the delayed material batch reaches the receiving dock

1780
01:04:55,800 --> 01:04:58,200
bringing another constraint into the same schedule

1781
01:04:58,200 --> 01:05:00,360
when multiple constraints collide.

1782
01:05:00,360 --> 01:05:02,760
So the delayed material batch hits receiving

1783
01:05:02,760 --> 01:05:05,080
but that doesn't magically create a replacement job

1784
01:05:05,080 --> 01:05:06,840
for the Lost 5-axis capacity.

1785
01:05:06,840 --> 01:05:08,840
The planner might look at that rush housing order

1786
01:05:08,840 --> 01:05:10,520
and think it's the obvious move.

1787
01:05:10,520 --> 01:05:12,360
Tight due date, customer waiting,

1788
01:05:12,360 --> 01:05:15,320
the alternate machine can run the route once the fixture is free.

1789
01:05:15,320 --> 01:05:16,520
But here's the real problem.

1790
01:05:16,520 --> 01:05:19,160
The material lot is still sitting in incoming inspection

1791
01:05:19,160 --> 01:05:21,960
and that release might not arrive in time for the setup window.

1792
01:05:21,960 --> 01:05:23,560
That leaves the urgent order blocked.

1793
01:05:23,560 --> 01:05:25,160
Now you've got a more interesting decision.

1794
01:05:25,160 --> 01:05:26,520
The alternate machine has free time,

1795
01:05:26,520 --> 01:05:28,120
the housing order can't use yet,

1796
01:05:28,120 --> 01:05:30,120
while other work competes for that same machine,

1797
01:05:30,120 --> 01:05:32,120
the same fixture families, operator coverage,

1798
01:05:32,120 --> 01:05:33,400
and downstream steps.

1799
01:05:33,400 --> 01:05:35,960
A good schedule doesn't just grab the first ready order.

1800
01:05:35,960 --> 01:05:38,600
It asks whether filling that gap creates a worst conflict

1801
01:05:38,600 --> 01:05:39,880
a few hours from now.

1802
01:05:39,880 --> 01:05:41,480
Let's say two orders are ready.

1803
01:05:41,480 --> 01:05:42,760
One uses a different fixture

1804
01:05:42,760 --> 01:05:44,520
and only needs standard operator coverage

1805
01:05:44,520 --> 01:05:46,760
so it can run in the gap and finish before shift end.

1806
01:05:46,760 --> 01:05:49,400
The other uses the same shared fixture the housing job will need

1807
01:05:49,400 --> 01:05:50,760
once the material releases.

1808
01:05:50,760 --> 01:05:53,160
If the scheduler fills the gap with that second order,

1809
01:05:53,160 --> 01:05:56,280
the fixture might still be occupied when the housing becomes ready.

1810
01:05:56,280 --> 01:05:58,920
The machine looks busy, but the recovery plan just failed.

1811
01:05:58,920 --> 01:06:01,720
This is where time-based resource reservation earns its keep.

1812
01:06:01,720 --> 01:06:05,160
The scheduler can see that a short job isn't just short in duration.

1813
01:06:05,160 --> 01:06:07,800
It carries setup time, fixture use, release time,

1814
01:06:07,800 --> 01:06:09,400
and maybe a first off inspection.

1815
01:06:09,400 --> 01:06:11,400
And it might consume the exact window needed

1816
01:06:11,400 --> 01:06:12,920
to transfer the housing order

1817
01:06:12,920 --> 01:06:15,240
and recover part of that customer commitment.

1818
01:06:15,240 --> 01:06:17,400
A local decision can block the whole route.

1819
01:06:17,400 --> 01:06:19,720
Heat treatment adds another constraint to the chain.

1820
01:06:19,720 --> 01:06:22,520
The housing doesn't move from milling directly to shipment.

1821
01:06:22,520 --> 01:06:25,880
It needs to reach the furnace before that process closes

1822
01:06:25,880 --> 01:06:27,560
its accepted batch window.

1823
01:06:27,560 --> 01:06:30,680
And the furnace doesn't care that machining lost time earlier in the day.

1824
01:06:30,680 --> 01:06:32,760
If milling finishes just after the cutoff,

1825
01:06:32,760 --> 01:06:35,800
the part waits for the next approved heat treatment cycle

1826
01:06:35,800 --> 01:06:39,240
that turns a small upstream delay into a much larger delivery impact.

1827
01:06:39,240 --> 01:06:41,880
The material release might move the start by an hour.

1828
01:06:41,880 --> 01:06:43,640
The fixture transfer adds another delay

1829
01:06:43,640 --> 01:06:46,280
and a setup person only becomes available later.

1830
01:06:46,280 --> 01:06:48,440
Each delay seems manageable alone,

1831
01:06:48,440 --> 01:06:51,560
but together they push the operation past the furnace window.

1832
01:06:51,560 --> 01:06:54,360
Then the schedule needs to recalculate the rest of the route.

1833
01:06:54,360 --> 01:06:56,600
Inspection comes next and creates a limit of its own.

1834
01:06:56,600 --> 01:06:57,960
A machine can finish its work,

1835
01:06:57,960 --> 01:07:01,080
but the batch may not move until first off inspection releases it.

1836
01:07:01,080 --> 01:07:03,880
If quality has a queue or the measurement needs review,

1837
01:07:03,880 --> 01:07:06,120
the status isn't ready for assembly.

1838
01:07:06,120 --> 01:07:08,120
It becomes waiting for release.

1839
01:07:08,120 --> 01:07:10,520
That distinction prevents a common planning error.

1840
01:07:10,520 --> 01:07:12,760
Many systems record machine completion quickly

1841
01:07:12,760 --> 01:07:14,200
because the machine can report it.

1842
01:07:14,200 --> 01:07:15,720
The physical machining is done.

1843
01:07:15,720 --> 01:07:17,960
But production can't treat that as flow completion

1844
01:07:17,960 --> 01:07:19,960
when inspection still controls the next step.

1845
01:07:19,960 --> 01:07:23,480
The schedule needs to reserve or at least account for inspection capacity

1846
01:07:23,480 --> 01:07:24,520
and approval timing,

1847
01:07:24,520 --> 01:07:26,360
especially for work with strict traceability

1848
01:07:26,360 --> 01:07:29,000
or a new setup after a machine transfer.

1849
01:07:29,000 --> 01:07:30,040
For this housing order,

1850
01:07:30,040 --> 01:07:32,360
the constraint chain now has a clear shape.

1851
01:07:32,360 --> 01:07:35,000
Material reaches the plant but waits for acceptance.

1852
01:07:35,000 --> 01:07:37,080
The five access outage removes the normal route.

1853
01:07:37,080 --> 01:07:39,960
The shared fixture limits when the alternate route can start

1854
01:07:39,960 --> 01:07:43,160
and certified labour limits which shift can establish that setup.

1855
01:07:43,160 --> 01:07:45,240
Milling must finish in time for heat treatment

1856
01:07:45,240 --> 01:07:48,120
and inspection must release the result before assembly can use it.

1857
01:07:48,120 --> 01:07:49,880
Each condition changes the next one.

1858
01:07:49,880 --> 01:07:53,240
The scheduler can test alternative sequences across that chain.

1859
01:07:53,240 --> 01:07:55,240
It might keep the alternate machine on work

1860
01:07:55,240 --> 01:07:57,240
that doesn't consume the shared fixture

1861
01:07:57,240 --> 01:07:59,400
until the material release arrives.

1862
01:07:59,400 --> 01:08:01,880
It might reserve a later setup slot for the housing

1863
01:08:01,880 --> 01:08:04,200
and show that the furnace window will no longer fit.

1864
01:08:04,200 --> 01:08:06,680
Or it might find that an approved overtime decision

1865
01:08:06,680 --> 01:08:10,440
protects the furnace cycle while another order moves by a day.

1866
01:08:10,440 --> 01:08:12,200
None of those answers is automatic.

1867
01:08:12,200 --> 01:08:15,400
What the model gives the planner is a visible cause and effect path.

1868
01:08:15,400 --> 01:08:16,680
If the housing misses delivery,

1869
01:08:16,680 --> 01:08:18,440
people can see whether the cause began

1870
01:08:18,440 --> 01:08:20,680
with the material delay, the machine outage,

1871
01:08:20,680 --> 01:08:22,600
the fixture conflict, the labour window,

1872
01:08:22,600 --> 01:08:24,120
or the downstream batch rule.

1873
01:08:24,120 --> 01:08:25,960
More often than not, it's the combination.

1874
01:08:25,960 --> 01:08:27,800
That matters when the sales team asks

1875
01:08:27,800 --> 01:08:30,040
why the rush order can't simply move to the front.

1876
01:08:30,040 --> 01:08:32,200
Moving it to the front might break another commitment,

1877
01:08:32,200 --> 01:08:34,280
consume the only fixture at the wrong time

1878
01:08:34,280 --> 01:08:37,160
or create a queue in inspection that stops the part anyway.

1879
01:08:37,160 --> 01:08:40,040
The loudest request isn't always the best production decision.

1880
01:08:40,040 --> 01:08:42,840
So the next question isn't which order has the strongest voice.

1881
01:08:42,840 --> 01:08:45,560
It's which tradeoff the business is prepared to make?

1882
01:08:45,560 --> 01:08:46,360
Openly.

1883
01:08:46,360 --> 01:08:47,560
With the full cost visible.

1884
01:08:47,560 --> 01:08:51,560
Objectives, priorities, and the cost of a good schedule.

1885
01:08:51,560 --> 01:08:53,560
Once several feasible paths exist,

1886
01:08:53,560 --> 01:08:55,240
the plant has to choose between them.

1887
01:08:55,240 --> 01:08:57,240
That choice isn't technical in the narrow sense.

1888
01:08:57,240 --> 01:09:00,280
Its business policy expressed through a production schedule.

1889
01:09:00,280 --> 01:09:02,840
The housing order could receive the first approved setup slot

1890
01:09:02,840 --> 01:09:04,040
on the alternate machine.

1891
01:09:04,040 --> 01:09:07,640
That might protect its due date, but another customer order moves later.

1892
01:09:07,640 --> 01:09:10,040
Or the scheduler may keep the current part family together

1893
01:09:10,040 --> 01:09:11,400
to reduce changeovers,

1894
01:09:11,400 --> 01:09:15,000
accepting that the housing order reaches heat treatment a day later.

1895
01:09:15,000 --> 01:09:18,280
Both schedules can run, but they produce different consequences.

1896
01:09:18,280 --> 01:09:21,720
Due date performance often gets the most attention and for good reason.

1897
01:09:21,720 --> 01:09:24,840
A missed contractual delivery can affect a customer relationship,

1898
01:09:24,840 --> 01:09:27,640
trigger expediting, or force a difficult conversation.

1899
01:09:27,640 --> 01:09:29,640
Yet due dates aren't the only objective

1900
01:09:29,640 --> 01:09:33,800
and treating every date as equally urgent usually creates more churn than flow.

1901
01:09:33,800 --> 01:09:37,240
Some orders support a customer production line, some carry contract terms,

1902
01:09:37,240 --> 01:09:40,120
some are recovery work after an earlier quality issue,

1903
01:09:40,120 --> 01:09:42,440
and others matter because a partial shipment

1904
01:09:42,440 --> 01:09:44,280
can protect a larger commitment.

1905
01:09:44,280 --> 01:09:45,960
Those distinctions need a clear policy,

1906
01:09:45,960 --> 01:09:48,280
not a planner trying to remember them under pressure.

1907
01:09:48,280 --> 01:09:51,480
Priority rules turn that policy into something the scheduler can use.

1908
01:09:51,480 --> 01:09:53,160
The business might assign a higher,

1909
01:09:53,160 --> 01:09:56,280
late delivery penalty to a contract order than to a replenishment order.

1910
01:09:56,280 --> 01:09:59,320
It might give a defined recovery order more weight for a limited period.

1911
01:09:59,320 --> 01:10:03,080
It might also protect fairness, so the same low priority customer

1912
01:10:03,080 --> 01:10:06,680
doesn't absorb every disruption just because their orders are easier to move.

1913
01:10:06,680 --> 01:10:09,160
Priority doesn't mean run this at any cost.

1914
01:10:09,160 --> 01:10:13,320
It means the system can compare the cost of delaying one feasible order against delaying another.

1915
01:10:13,320 --> 01:10:15,240
Setup reduction creates a different pull.

1916
01:10:15,240 --> 01:10:17,240
Fewer changeovers can free machine time,

1917
01:10:17,240 --> 01:10:21,000
lower the chance of setup error and reduce pressure on tooling and setup labor.

1918
01:10:21,000 --> 01:10:23,000
On a heavily loaded machining resource,

1919
01:10:23,000 --> 01:10:24,760
grouping similar work makes sense,

1920
01:10:24,760 --> 01:10:27,960
but grouping work too aggressively can create a long wait for an order

1921
01:10:27,960 --> 01:10:29,080
that is otherwise ready.

1922
01:10:29,080 --> 01:10:31,800
That's why the scheduler needs to balance flow with responsiveness.

1923
01:10:31,800 --> 01:10:35,160
Chasing low setup time alone can produce an efficient looking machine queue

1924
01:10:35,160 --> 01:10:36,920
while finished orders wait for days.

1925
01:10:36,920 --> 01:10:39,480
Chasing every due date alone can keep changing setups

1926
01:10:39,480 --> 01:10:42,280
and lose capacity to the very activity it's trying to optimize.

1927
01:10:42,280 --> 01:10:44,040
Neither extreme helps production.

1928
01:10:44,040 --> 01:10:48,840
Work in progress often called wipe belongs in the same conversation.

1929
01:10:48,840 --> 01:10:52,040
The wipe is partly completed or waiting work moving through the plant.

1930
01:10:52,040 --> 01:10:53,560
Too much of it hides problems,

1931
01:10:53,560 --> 01:10:55,480
fills space, ties up material,

1932
01:10:55,480 --> 01:10:57,720
and makes it harder to see what should happen next.

1933
01:10:57,720 --> 01:11:01,240
A schedule can reduce WIP by releasing and sequencing work closer

1934
01:11:01,240 --> 01:11:03,320
to when downstream capacity can receive it.

1935
01:11:03,320 --> 01:11:06,920
That might mean not starting an order simply because a machine is temporarily free,

1936
01:11:06,920 --> 01:11:09,880
especially when the next operation will block it immediately.

1937
01:11:09,880 --> 01:11:12,280
A busy machine is not always a productive decision.

1938
01:11:12,280 --> 01:11:15,320
Energy windows can matter too, depending on the plant and process.

1939
01:11:15,320 --> 01:11:17,240
Some operations consume a lot of power.

1940
01:11:17,240 --> 01:11:19,720
Some sites face cost differences by time of day,

1941
01:11:19,720 --> 01:11:22,760
while others need to control peak demand or work around site limits.

1942
01:11:22,760 --> 01:11:24,760
If energy is a real operating concern,

1943
01:11:24,760 --> 01:11:27,240
it can become an objective or a planning rule.

1944
01:11:27,240 --> 01:11:28,680
Over time belongs there as well.

1945
01:11:28,680 --> 01:11:31,240
Approved overtime can create recovery capacity,

1946
01:11:31,240 --> 01:11:33,800
but it carries cost and can't become the default answer

1947
01:11:33,800 --> 01:11:36,280
to every gap between demand and capacity.

1948
01:11:36,280 --> 01:11:38,360
If the schedule relies on overtime every week,

1949
01:11:38,360 --> 01:11:41,640
it is exposed a planning or capacity issue, not solved one.

1950
01:11:41,640 --> 01:11:44,600
The five axis outage makes these tensions visible.

1951
01:11:44,600 --> 01:11:46,760
One schedule might move the housing order ahead,

1952
01:11:46,760 --> 01:11:50,280
approve overtime for the setup and reserve the alternate machine through the evening.

1953
01:11:50,280 --> 01:11:52,920
That improves the chance of meeting the rush due date.

1954
01:11:52,920 --> 01:11:55,240
It also delays another order, adds labor cost,

1955
01:11:55,240 --> 01:11:58,360
and puts more pressure on a resource already carrying recovery work.

1956
01:11:58,360 --> 01:12:01,800
A second schedule might keep the alternate machine on the current setup family,

1957
01:12:01,800 --> 01:12:03,560
use its capacity more efficiently,

1958
01:12:03,560 --> 01:12:06,200
and allow the housing order to miss its original date.

1959
01:12:06,200 --> 01:12:08,040
That reduces disruption inside the plant,

1960
01:12:08,040 --> 01:12:10,280
but it moves the commercial consequence outside.

1961
01:12:10,280 --> 01:12:11,720
There is no neutral option.

1962
01:12:11,720 --> 01:12:14,360
Choosing not to decide simply leaves the trade off hidden.

1963
01:12:14,360 --> 01:12:18,440
This is why objective weights shouldn't live as unexplained numbers inside a solver,

1964
01:12:18,440 --> 01:12:21,160
a penalty for lateness, a preference for fewer setups,

1965
01:12:21,160 --> 01:12:22,280
a limit on overtime,

1966
01:12:22,280 --> 01:12:25,800
or a target for lower WIP all represent a management choice.

1967
01:12:25,800 --> 01:12:29,720
Planners and production leaders need to know what the scheduling engine is trying to protect.

1968
01:12:29,720 --> 01:12:33,640
Otherwise, users see a sequence they dislike and assume the system is wrong.

1969
01:12:33,640 --> 01:12:34,520
Sometimes it is.

1970
01:12:34,520 --> 01:12:37,960
Other times it followed a priority policy nobody agreed to openly.

1971
01:12:37,960 --> 01:12:40,600
Protecting the bottleneck often changes the answer again.

1972
01:12:40,600 --> 01:12:45,320
The bottleneck is the resource that limits the flow of the wider system during a given period.

1973
01:12:45,320 --> 01:12:48,760
In our scenario that might be the five axis capacity when it's available,

1974
01:12:48,760 --> 01:12:51,800
or the alternate machine after the outage shifts work onto it.

1975
01:12:51,800 --> 01:12:55,640
Time lost that that resource can damage delivery more than idle time somewhere else.

1976
01:12:55,640 --> 01:12:58,840
That means a good schedule might leave a non-bottle neck machine waiting.

1977
01:12:58,840 --> 01:13:00,840
It might hold work rather than release it too early.

1978
01:13:00,840 --> 01:13:05,880
It might reject a locally efficient sequence because it would waste time on the resource the whole plant depends on.

1979
01:13:05,880 --> 01:13:11,080
Trying to keep every machine at 100% use often creates cues, urgent moves, and more WIP.

1980
01:13:11,080 --> 01:13:13,480
It looks disciplined on a utilization report,

1981
01:13:13,480 --> 01:13:15,560
but it can make delivery less predictable.

1982
01:13:15,560 --> 01:13:18,680
The best schedule isn't the one that keeps every resource busy.

1983
01:13:18,680 --> 01:13:22,040
It's the one that supports the commitments the plant has chosen to protect

1984
01:13:22,040 --> 01:13:26,840
without breaking the rules that keep production safe, approved, and physically possible.

1985
01:13:26,840 --> 01:13:31,080
And even with that policy clear, the final commitment still needs people who understand the work

1986
01:13:31,080 --> 01:13:34,920
well enough to challenge a schedule when the shop floor knows something, the model does not.

1987
01:13:34,920 --> 01:13:39,000
Planners, supervisors, and manual overrides.

1988
01:13:39,000 --> 01:13:41,000
Here's the problem most vendors skip.

1989
01:13:41,000 --> 01:13:43,400
A feasible schedule still needs a human commitment.

1990
01:13:43,400 --> 01:13:47,000
The scheduling engine can test approved rules faster than a person can,

1991
01:13:47,000 --> 01:13:51,800
and trace conflicts across many orders without losing track, but it doesn't stand next to the machine,

1992
01:13:51,800 --> 01:13:54,600
or here an operator say a spindle has sounded wrong for two shifts.

1993
01:13:54,600 --> 01:13:58,120
It also doesn't know that a tool package passed its formal check,

1994
01:13:58,120 --> 01:14:03,240
but is close to the condition where an experienced setup person would rather not risk a difficult run.

1995
01:14:03,240 --> 01:14:05,800
That kind of judgment still belongs on the shop floor.

1996
01:14:05,800 --> 01:14:08,280
Now think about the planner's role in the situation.

1997
01:14:08,280 --> 01:14:13,000
The system proposes a schedule that transfers the remaining housing quantity to the alternate machine,

1998
01:14:13,000 --> 01:14:17,240
reserves the fixture, and uses approved overtime to protect the heat treatment window.

1999
01:14:17,240 --> 01:14:19,960
That option looks feasible according to the stated rules,

2000
01:14:19,960 --> 01:14:23,800
but the planner needs to decide whether it's a commitment the plant should actually make it.

2001
01:14:23,800 --> 01:14:27,720
And that isn't just clicking except the production supervisor knows the alternate machine

2002
01:14:27,720 --> 01:14:29,880
has been unstable after long runs.

2003
01:14:29,880 --> 01:14:32,040
The team lead knows the overnight crew can handle the work,

2004
01:14:32,040 --> 01:14:34,120
but will need a stronger handover than usual.

2005
01:14:34,120 --> 01:14:38,360
Quality knows a first off inspection after the transfer will compete with another release

2006
01:14:38,360 --> 01:14:41,800
due that evening. None of those points automatically reject the proposed schedule,

2007
01:14:41,800 --> 01:14:43,400
but they change the risk behind it.

2008
01:14:43,400 --> 01:14:46,520
So a good scheduling process gives people a way to add that knowledge.

2009
01:14:46,520 --> 01:14:49,000
Now sometimes the right response is a manual override.

2010
01:14:49,000 --> 01:14:52,040
Maybe the supervisor blocks the alternate machine for this housing order,

2011
01:14:52,040 --> 01:14:56,040
despite its approved capability because a local condition makes the transfer unwise.

2012
01:14:56,040 --> 01:14:59,320
Or a planner chooses a less efficient sequence because a customer call

2013
01:14:59,320 --> 01:15:02,520
clarified that a partial shipment solves the immediate problem.

2014
01:15:02,520 --> 01:15:06,440
Or maintenance extends a machine restriction after a technician finds a fault

2015
01:15:06,440 --> 01:15:08,760
the original outage estimate didn't cover.

2016
01:15:08,760 --> 01:15:11,560
Those are valid operational decisions when they are controlled.

2017
01:15:11,720 --> 01:15:14,280
The problem starts when an override becomes invisible.

2018
01:15:14,280 --> 01:15:16,520
If someone changes the sequence in a spreadsheet,

2019
01:15:16,520 --> 01:15:20,120
tells the shift by phone and leaves the scheduling model unchanged,

2020
01:15:20,120 --> 01:15:22,920
the next scheduling run works from a false picture.

2021
01:15:22,920 --> 01:15:26,520
It may reassign the same machine slot, assume the fixture is free,

2022
01:15:26,520 --> 01:15:30,360
or tells sales that an order remains on track when the floor has already moved it.

2023
01:15:30,360 --> 01:15:32,280
And then people stop trusting the system.

2024
01:15:32,280 --> 01:15:34,760
Every manual override should carry a reason code,

2025
01:15:34,760 --> 01:15:36,440
not because people need more admin work,

2026
01:15:36,440 --> 01:15:38,760
but so the system knows what changed,

2027
01:15:38,760 --> 01:15:40,840
who approved it, and how long it applies.

2028
01:15:41,320 --> 01:15:42,840
Something like machine risk,

2029
01:15:42,840 --> 01:15:44,760
customer approved partial shipment,

2030
01:15:44,760 --> 01:15:48,680
quality hold, or temporary alternate route gives the change a usable meaning.

2031
01:15:48,680 --> 01:15:50,920
A free text note alone won't do much.

2032
01:15:50,920 --> 01:15:52,440
The override also needs a scope.

2033
01:15:52,440 --> 01:15:55,160
Does it apply to one operation, one batch, one shift,

2034
01:15:55,160 --> 01:15:57,640
or every future order of that part family?

2035
01:15:57,640 --> 01:15:59,400
Does it expire after the immediate disruption,

2036
01:15:59,400 --> 01:16:03,400
or does it point to a master data rule that engineering or maintenance needs to update?

2037
01:16:03,400 --> 01:16:07,640
Without that boundary, temporary workarounds quietly become permanent factory logic,

2038
01:16:07,640 --> 01:16:09,320
and that is how bad rules survive.

2039
01:16:09,320 --> 01:16:10,600
Speed matters here.

2040
01:16:10,600 --> 01:16:14,360
If it takes two days and five approvals to record a practical shop floor decision,

2041
01:16:14,360 --> 01:16:17,160
people will keep their own shadow schedule using a spreadsheet,

2042
01:16:17,160 --> 01:16:20,360
whiteboard, notebook, or whichever tool can answer the question

2043
01:16:20,360 --> 01:16:22,280
before the next shift begins.

2044
01:16:22,280 --> 01:16:25,560
Apparently Excel remains one of the most successful manufacturing platforms

2045
01:16:25,560 --> 01:16:27,240
Microsoft never intended to build.

2046
01:16:27,240 --> 01:16:29,160
You don't solve that by banning spreadsheets.

2047
01:16:29,160 --> 01:16:31,720
You solve it by giving planners and supervisors a faster way

2048
01:16:31,720 --> 01:16:34,120
to see the assumptions behind a proposed schedule,

2049
01:16:34,120 --> 01:16:38,040
compare options, and record a decision without losing the audit trail.

2050
01:16:38,040 --> 01:16:40,840
When users can see why the system placed an order where it did,

2051
01:16:40,840 --> 01:16:44,200
they can correct a wrong assumption instead of throwing away the whole schedule.

2052
01:16:44,200 --> 01:16:46,440
Execution feedback needs the same discipline.

2053
01:16:46,440 --> 01:16:48,040
Actual start and finish times matter,

2054
01:16:48,040 --> 01:16:51,320
and so do stoppages, scrap events, partial completions, material holds,

2055
01:16:51,320 --> 01:16:53,400
and setups that take longer than planned.

2056
01:16:53,400 --> 01:16:56,680
Those facts should flow back quickly enough to change the next decision cycle,

2057
01:16:56,680 --> 01:16:59,800
but without causing constant schedule churn from every small delay.

2058
01:16:59,800 --> 01:17:01,720
The right cadence depends on the process.

2059
01:17:01,720 --> 01:17:03,800
A high volume line may need frequent updates,

2060
01:17:03,800 --> 01:17:07,800
while a complex machining area may replant at defined points like shift handover.

2061
01:17:07,800 --> 01:17:10,040
A major fault, or a release decision.

2062
01:17:10,040 --> 01:17:14,760
What matters is that the schedule follows execution closely enough to stay credible,

2063
01:17:14,760 --> 01:17:18,120
and operators aren't asked to chase a new sequence every half hour.

2064
01:17:18,120 --> 01:17:19,560
One dry fact remains,

2065
01:17:19,560 --> 01:17:21,800
an optimizer cannot schedule the fixture,

2066
01:17:21,800 --> 01:17:23,480
someone moved without recording it.

2067
01:17:23,480 --> 01:17:25,720
The same applies to a supervisor's workaround,

2068
01:17:25,720 --> 01:17:29,800
a quality decision, or an operator's report that a setup cannot run as planned.

2069
01:17:29,800 --> 01:17:33,160
Constraint-based scheduling works when the model and the people running production

2070
01:17:33,160 --> 01:17:34,200
keep correcting each other.

2071
01:17:34,200 --> 01:17:36,280
The system brings discipline to the options,

2072
01:17:36,280 --> 01:17:38,600
and people bring accountable judgment to the commitment.

2073
01:17:38,600 --> 01:17:42,280
ERP, MES, and the scheduling layer.

2074
01:17:42,280 --> 01:17:44,280
So how does this actually work in a real plant?

2075
01:17:44,280 --> 01:17:47,480
The scheduling layer has to fit between systems people already depend on.

2076
01:17:47,480 --> 01:17:48,920
It can't act like it owns the factory,

2077
01:17:48,920 --> 01:17:51,720
and it can't work from stale copies of what happened yesterday.

2078
01:17:51,720 --> 01:17:53,000
ERP starts the flow.

2079
01:17:53,000 --> 01:17:54,360
It holds customer demand,

2080
01:17:54,360 --> 01:17:56,360
sales orders, work orders, planned dates,

2081
01:17:56,360 --> 01:17:58,280
rooting intent, purchasing status,

2082
01:17:58,280 --> 01:18:00,760
and the inventory picture used for commercial planning.

2083
01:18:00,760 --> 01:18:04,600
That gives the plant a view of what it is expected to deliver and roughly win.

2084
01:18:04,600 --> 01:18:05,880
ERP should keep that role.

2085
01:18:05,880 --> 01:18:10,600
It usually isn't the right place to decide whether a specific operation can start at 10.40

2086
01:18:10,600 --> 01:18:12,840
on a Tuesday, on a certain machine,

2087
01:18:12,840 --> 01:18:15,880
with a certain fixture, and a qualified person on shift.

2088
01:18:15,880 --> 01:18:19,480
ERP can plant capacity at a broader level and release work against demand,

2089
01:18:19,480 --> 01:18:23,400
but minute by minute shop floor choices need details that sit closer to production.

2090
01:18:23,400 --> 01:18:25,000
But that doesn't make ERP wrong.

2091
01:18:25,000 --> 01:18:27,800
It means the plan and the schedule answer different questions.

2092
01:18:27,800 --> 01:18:30,360
The MES, the manufacturing execution system,

2093
01:18:30,360 --> 01:18:32,200
works closer to the work itself.

2094
01:18:32,200 --> 01:18:35,160
It records operation starts and finishes, quantities produced,

2095
01:18:35,160 --> 01:18:38,920
scrap, rework, labor activity, machine events, and dispatch activity.

2096
01:18:38,920 --> 01:18:41,720
When the 5-axis machine stops with the housing still clamped,

2097
01:18:41,720 --> 01:18:45,320
MES data should tell the scheduling process how much work has finished,

2098
01:18:45,320 --> 01:18:48,040
what remains, and where the work currently sits.

2099
01:18:48,040 --> 01:18:50,200
That execution signal changes the schedule.

2100
01:18:50,200 --> 01:18:52,360
A scheduling layer uses both sides.

2101
01:18:52,360 --> 01:18:56,280
It takes demand, work order intent, and commercial commitments from ERP,

2102
01:18:56,280 --> 01:19:00,040
and it takes actual progress and shop floor events from MES.

2103
01:19:00,040 --> 01:19:03,560
Then it applies the rules around capacity, routing, machine eligibility,

2104
01:19:03,560 --> 01:19:07,800
tooling, labor, material release, and priorities to create a sequence that can run.

2105
01:19:07,800 --> 01:19:10,040
Its job is not to replace either system.

2106
01:19:10,040 --> 01:19:11,400
Let's zoom out for a second.

2107
01:19:11,400 --> 01:19:13,400
In practical terms, ERP asks,

2108
01:19:13,400 --> 01:19:16,040
what do we need to produce and what have we promised?

2109
01:19:16,040 --> 01:19:19,400
MES asks, what has actually happened, and what is happening now?

2110
01:19:19,400 --> 01:19:22,920
And the scheduling layer asks, given those facts in these constraints,

2111
01:19:22,920 --> 01:19:24,440
what should happen next?

2112
01:19:24,440 --> 01:19:27,800
Those questions need to stay separate, even though the answers connect.

2113
01:19:27,800 --> 01:19:30,840
For the housing order, ERP may show a due date, a released work order,

2114
01:19:30,840 --> 01:19:32,200
and a preferred production route.

2115
01:19:32,200 --> 01:19:35,480
MES may report that half the batch completed before the 5-axis outage,

2116
01:19:35,480 --> 01:19:37,880
and the rest remains tied to an interrupted operation.

2117
01:19:37,880 --> 01:19:40,840
The scheduling layer combines those facts with current resource limits

2118
01:19:40,840 --> 01:19:44,760
and determines whether to hold, transfer, split, or re-sequence the work.

2119
01:19:44,760 --> 01:19:48,360
Then it publishes an approved result back into the operating flow.

2120
01:19:48,360 --> 01:19:52,280
That published result might appear as a revised dispatch sequence in MES,

2121
01:19:52,280 --> 01:19:54,520
update planned operation dates for the planner,

2122
01:19:54,520 --> 01:19:57,000
or expose delivery risk for customer service.

2123
01:19:57,000 --> 01:19:58,920
The exact handoff depends on the plant,

2124
01:19:58,920 --> 01:20:00,680
but ownership should stay clear.

2125
01:20:00,680 --> 01:20:03,480
The scheduling layer recommends and commits a feasible sequence.

2126
01:20:03,480 --> 01:20:08,520
MES executes and records it, and ERP remains the commercial and order management record.

2127
01:20:08,520 --> 01:20:10,920
Confusion starts when those boundaries blur.

2128
01:20:10,920 --> 01:20:14,040
Some plants ask ERP to perform detailed finite scheduling,

2129
01:20:14,040 --> 01:20:16,840
even though its model doesn't receive reliable tool status,

2130
01:20:16,840 --> 01:20:18,840
current labor coverage, active setup state,

2131
01:20:18,840 --> 01:20:21,480
or real execution events, fast enough.

2132
01:20:21,480 --> 01:20:23,800
The schedule may look clean at the start of the day,

2133
01:20:23,800 --> 01:20:27,240
then fall apart because it can't see what the shop floor already knows.

2134
01:20:27,240 --> 01:20:29,080
That creates a plan people work around.

2135
01:20:29,080 --> 01:20:31,800
Other plants build a planning model outside MES

2136
01:20:31,800 --> 01:20:33,800
and never feedback actual execution.

2137
01:20:33,800 --> 01:20:36,200
It may produce a detailed answer at 8 in the morning,

2138
01:20:36,200 --> 01:20:38,200
but production changes it by 10.

2139
01:20:38,200 --> 01:20:39,880
If the model doesn't know about the stoppage,

2140
01:20:39,880 --> 01:20:42,600
partial completion, quality hold, or changed sequence,

2141
01:20:42,600 --> 01:20:45,320
every later recommendation rests on a false current state.

2142
01:20:45,320 --> 01:20:47,240
That creates a schedule nobody trusts.

2143
01:20:47,240 --> 01:20:49,880
Now a stable design needs a defined feedback rhythm.

2144
01:20:49,880 --> 01:20:51,800
Some events should update the schedule quickly

2145
01:20:51,800 --> 01:20:53,400
because they change feasibility.

2146
01:20:53,880 --> 01:20:57,640
A resource fault, a material release, an operation completion,

2147
01:20:57,640 --> 01:21:01,240
or a quality hold, can alter what work can run next.

2148
01:21:01,240 --> 01:21:04,600
Other updates can wait for a shift review or planned replan cycle,

2149
01:21:04,600 --> 01:21:08,200
especially where constant changes would disrupt operators more than they help.

2150
01:21:08,200 --> 01:21:10,920
The plant needs to decide that cadence deliberately.

2151
01:21:10,920 --> 01:21:15,000
OT and IT convergence is not about pushing every machine signal straight

2152
01:21:15,000 --> 01:21:16,600
into an enterprise planning tool.

2153
01:21:16,600 --> 01:21:19,640
It's about moving the right operational facts into the right decision loop

2154
01:21:19,640 --> 01:21:21,640
with enough context that they mean something.

2155
01:21:21,640 --> 01:21:24,360
A brief idle state may not require a full reschedule

2156
01:21:24,360 --> 01:21:27,400
but a confirmed machine outage with work in process probably does.

2157
01:21:27,400 --> 01:21:29,880
That distinction protects the shop floor from noise.

2158
01:21:29,880 --> 01:21:32,200
Integration also needs clear right back rules.

2159
01:21:32,200 --> 01:21:34,040
The scheduling layer may propose a new sequence

2160
01:21:34,040 --> 01:21:36,440
but it should not silently alter an ERP promise date

2161
01:21:36,440 --> 01:21:37,880
or release an unapproved route.

2162
01:21:37,880 --> 01:21:40,680
A supervisor may accept a dispatch change in MES

2163
01:21:40,680 --> 01:21:43,640
while a planner owns the customer commitment change in ERP.

2164
01:21:43,640 --> 01:21:45,000
When an exception needs approval,

2165
01:21:45,000 --> 01:21:46,920
the schedule should wait for that approval,

2166
01:21:46,920 --> 01:21:49,720
rather than treating a proposed option as confirmed work.

2167
01:21:49,720 --> 01:21:52,360
This is controlled flow, not system turf walls.

2168
01:21:52,360 --> 01:21:56,040
When ERP, MES and the scheduling layer each do the work they are built to do,

2169
01:21:56,040 --> 01:21:58,760
you get a loop that can respond without losing traceability.

2170
01:21:58,760 --> 01:22:02,360
Demand enters from ERP, execution returns from MES,

2171
01:22:02,360 --> 01:22:06,120
and the schedule turns the gap between them into an achievable next action.

2172
01:22:06,120 --> 01:22:08,440
And that leaves a practical architecture question.

2173
01:22:08,440 --> 01:22:11,720
Where do the events, history, rules and decision context live

2174
01:22:11,720 --> 01:22:14,600
so the scheduling layer can keep working from a trusted view of production?

2175
01:22:14,600 --> 01:22:18,360
Microsoft architecture from events to decision context.

2176
01:22:18,360 --> 01:22:21,560
So the scheduling layer needs a current and trusted view of the factory

2177
01:22:21,560 --> 01:22:25,720
but that doesn't mean every system has to jam every record into one giant application.

2178
01:22:25,720 --> 01:22:28,920
Think about the flow as a path from an event to a decision.

2179
01:22:28,920 --> 01:22:31,640
A machine changes state, a material lot clears inspection,

2180
01:22:31,640 --> 01:22:33,560
and operates a record's appartial quantity,

2181
01:22:33,560 --> 01:22:35,640
or a maintenance team confirms an outage.

2182
01:22:35,640 --> 01:22:38,200
Each event can affect what the plant can run next,

2183
01:22:38,200 --> 01:22:41,000
but only some need an immediate scheduling response.

2184
01:22:41,000 --> 01:22:44,200
That filtering needs to happen close to the source where it makes sense.

2185
01:22:44,200 --> 01:22:47,800
On the shop floor, edge systems can collect machine and sensor signals

2186
01:22:47,800 --> 01:22:50,200
using the protocols you already have in place.

2187
01:22:50,200 --> 01:22:53,400
They keep local production running even if the cloud connection drops

2188
01:22:53,400 --> 01:22:56,040
and they turn raw signals into usable events

2189
01:22:56,040 --> 01:22:59,960
like a confirmed fault, a completed cycle, or a maintenance state change.

2190
01:22:59,960 --> 01:23:03,160
A scheduler doesn't need every time you pulse from a sensor.

2191
01:23:03,160 --> 01:23:05,240
What it needs is an operational fact it can trust.

2192
01:23:05,240 --> 01:23:08,440
Azure can give you the ingestion and integration path for those events

2193
01:23:08,440 --> 01:23:13,080
alongside data from your MES, ERP, quality, maintenance, and tooling systems.

2194
01:23:13,080 --> 01:23:15,480
The exact services depend on your site architecture

2195
01:23:15,480 --> 01:23:17,160
and what you already have installed.

2196
01:23:17,160 --> 01:23:21,800
But what really matters is that the flow preserves source, time, identity, and status.

2197
01:23:21,800 --> 01:23:23,320
Say a machine fault comes in.

2198
01:23:23,320 --> 01:23:26,120
The decision layer needs to know when the fault started,

2199
01:23:26,120 --> 01:23:29,000
which physical asset it hit, how sure that status,

2200
01:23:29,000 --> 01:23:31,480
and whether maintenance has given an expected return time.

2201
01:23:31,480 --> 01:23:34,280
Without that context, fast data just gives you fast confusion.

2202
01:23:34,280 --> 01:23:37,960
Microsoft Fabric fits well as a govern data foundation around that flow.

2203
01:23:37,960 --> 01:23:40,200
It holds historical operational data,

2204
01:23:40,200 --> 01:23:41,880
supports shared data products,

2205
01:23:41,880 --> 01:23:44,600
and gives planning, engineering, quality, and production teams

2206
01:23:44,600 --> 01:23:47,480
one place to analyze plan versus actual performance.

2207
01:23:47,480 --> 01:23:49,400
No more each group rebuilding its own extracts.

2208
01:23:49,400 --> 01:23:50,120
That's useful.

2209
01:23:50,120 --> 01:23:51,160
But let's be clear.

2210
01:23:51,160 --> 01:23:53,320
Fabric is not a finite scheduling engine.

2211
01:23:53,320 --> 01:23:56,600
It can help build a reliable history of machine availability,

2212
01:23:56,600 --> 01:24:01,000
setup duration, schedule adherence, material release delay, and bottle neck load.

2213
01:24:01,000 --> 01:24:04,040
Those records let the plant test assumptions in the scheduling model.

2214
01:24:04,040 --> 01:24:06,360
If setup times keep exceeding the rooting standard,

2215
01:24:06,360 --> 01:24:09,480
planners have evidence that the duration rule needs review.

2216
01:24:09,480 --> 01:24:12,040
No more arguing over whose spreadsheet is right.

2217
01:24:12,040 --> 01:24:15,560
Fabric also supports a shared analytical model for schedule health.

2218
01:24:15,560 --> 01:24:18,120
That means the same definitions feed different views,

2219
01:24:18,120 --> 01:24:21,160
so each department isn't inventing its own meaning of late work,

2220
01:24:21,160 --> 01:24:23,560
available capacity, or completed operation.

2221
01:24:23,560 --> 01:24:26,760
Consistency matters more than visual polish.

2222
01:24:26,760 --> 01:24:30,360
Power BI gives people a way to review the schedule as an operating issue.

2223
01:24:30,360 --> 01:24:34,440
A production manager might need to see where the bottle neck load exceeds available capacity,

2224
01:24:34,440 --> 01:24:37,720
a planner might need to find orders at risk from a material hold,

2225
01:24:37,720 --> 01:24:41,720
and maintenance might need to see the delivery impact of an extended resource restriction.

2226
01:24:42,120 --> 01:24:45,880
Different questions sure, but they should all come from the same govern facts.

2227
01:24:45,880 --> 01:24:49,640
Power BI shouldn't become the place where people manually rebuild the schedule.

Related to this Episode

Hard vs Soft Production Constraints in Finite Scheduling: A Manufacturing Guide

Finite capacity scheduling relies on distinguishing between hard and soft constraints to transform a wishful production plan into an executable shop-floor schedule. Understanding how these constraints govern machine allocation, material readiness, a…