The system project is asking for rules the business has not decided
A new platform asks the business for its rules and finds history instead, so the project exposes the operating decisions the business never made, and the work it keeps stalling on is to decide the rule before any system can carry it.
The blueprint was signed three months ago. In the workshop, the integrator opens the pricing configuration and asks how the price is set for one recurring account.
The project is real and underway. The business has been mapped, the workflows documented, the master data reviewed. Then the integrator opens the pricing configuration and asks the question the platform needs answered before it can run: how is the price set for this account. The answer is the matrix, plus the overrides the team learned over the years, plus the file the analyst keeps open beside it, plus what the senior rep remembers about the renewal. The integrator asks which of those is the rule. The room does not have a rule. It has a history.
It is not one workshop. The same configuration that needs a pricing rule needs the rest of the commitments written down too, and each one lands in the room the same way.
The customer master needs a field for the account’s billing treatment. The treatment is real and the customer holds the business to it, but it has never been on a record. It lives in the senior CSR’s memory, and the master has no clean field to put it in.
The availability the portal is going to publish has to come from a number. The branch already has a number, and the branch does not trust it. The planner re-checks it on the floor before committing a date, and the portal will publish the screen figure straight to the customer.
The substitution the system is supposed to allow or block has to be a rule. What exists is a rep deciding case by case which spec-correct yes is fine and which one quietly hands margin back. The platform needs that decision as a rule it can enforce, and there is no rule, there is a rep with judgment.
Four records the platform needs, four questions the business cannot cleanly answer, each one the business has been answering by hand for years. The team in the room is not failing to fill in a form. It is being asked, for the first time, to decide things it has been getting by without deciding. The platform asks for the rules, and there is history, not rules.
The project is the event that exposes the condition, not the cause
The reason the room cannot answer is not the part most people reach for first, so it is the part worth slowing down on.
The platform is capable. What it cannot do is decide, on the company’s behalf, a rule the company never decided. When it asks for the price, the date, the substitution, the bill, it is asking the business to state in one place what it has been settling one order at a time for years. The project did not create that condition. It is the first thing in the company’s history that required the condition to be written down, and the writing down is where it stalls.
This is the move the whole piece turns on. The records the platform asks for are precisely the records the business never had to decide while a few experienced people could hold the detail between them. The standard configuration wants a clean pricing rule, a stable availability number, a structured account treatment, a defined substitution authority. The business has a matrix plus overrides, a number the branch re-checks on the floor, a treatment in a CSR’s memory, and a rep’s case-by-case judgment. None of those is a rule. Each is the accumulated record of decisions that were made one order at a time and never written as logic, because at a smaller scale the people who made them could simply carry them. The platform is the first thing that ever asked for all of them at once, in a form a system can run.
So the project stalls, and it is worth being precise about why, because the reflexive answer is the wrong one. The workshops do not stall because the platform is weak or the integrator got it wrong. An integrator can map fields, configure modules, and run a clean workshop. What an integrator cannot do is decide, on the business’s behalf, what the substitution rule is, or which override is a rule and which is leakage. The workshops stall because the decisions were the business’s to make and had not been made. There is nothing coherent to encode, and the project is the first event in the company’s history that required there to be.
That distinction is the one the platform’s request keeps surfacing, account by account. The platform may be where the problem appears. It is not where the problem began. A capable platform on undecided rules inherits them and runs them faster, and the deeper reason the rules could never be handed over cleanly in the first place is its own subject. What the project does here, now, in this room, is simpler and more exact: it is the first instrument that ever forced every undecided rule into one place at one time, so it surfaces the whole of the condition at once.
The platform did not create the question. It is the first thing that ever asked it.
Where the undecided rules actually go
The project still has to ship. So the question is what a project does with rules the business never decided, and the answer is the concrete shape of everything above.
The project has to ship, so the rules go three ways. The ones the business can state go in and run, and that part works. The ones it cannot state but the platform must hold become a custom field, an exception table, a hardcoded entry, and the platform now carries the ambiguity as configuration. The ones that fit nowhere go back outside, to the same spreadsheet beside a newer screen. The cutover did not resolve the undecided rules. It distributed them.
Take the three destinations one at a time, on the records the platform asked for.
The decided rules go in clean. A standard payment term, a published list price, a stocked item with a lead time the branch trusts: the business could state these, so the platform takes them and runs them. This is the project working as it was sold, and where a rule was decided, the platform forces the discipline the business wanted from it. The price comes from the configured rule and holds. That part is genuinely better, and the steering pack shows those modules live on schedule.
The undecided rules the platform must still hold become exceptions. The account whose billing treatment nobody could state becomes a custom field on the customer master. The substitution that is sometimes allowed and sometimes leakage becomes a hardcoded exception for the accounts that had one. The pricing override that protected a renewal becomes a permanent entry in the configuration that no one owns. The platform carries each of them, faithfully, but it carries them as the same unowned exception they always were, now wired into a configured system and harder to change than when they sat in a file, because changing them now means a change request.
And the rules that fit nowhere clean go back outside the platform, to where they came from. The availability number the branch still does not trust, so the planner keeps the stock file open beside the new screen. The account rule that never made it onto the customer master, so the senior CSR’s memory is still the only place it lives. The EDI exception the standard mapping cannot carry, so a line is still mapped by hand against the new integration. The screen is newer. The file beside it is the same file.
None of the three destinations is a decided rule. The project sorted the rules by whether the platform could hold them, not by whether the business had decided them, and the undecided ones survived the cutover in a custom field, an exception table, or a spreadsheet beside the new screen. The system is live. The decisions are still not made.
| What the platform asked for | What the business had to hand over | Where it ended up after go-live |
|---|---|---|
| The pricing rule for a recurring account | a matrix, plus overrides, plus a side file, plus rep memory | a custom field holding the override no one owns |
| The account’s billing treatment | a treatment in the senior CSR’s memory | still in the CSR’s memory, beside the new screen |
| The availability number to publish | a number the branch re-checks on the floor | the branch’s stock file, kept in parallel |
| The substitution authority | a rep deciding case by case | a hardcoded exception for the accounts that had one |
Read the left column down: that is what the platform needed. Read the middle: that is what the business actually had, which in every row is history, not a rule. Read the right: that is where each one ended up, loaded as an exception or pushed back outside. The platform held what it was given a rule for and held the rest as configuration because it was asked to ship, which is exactly what a capable platform does with what it is handed.
This is also where the most common belief about a go-live quietly fails. The belief is that the system will force the discipline: once it is live, people will have to operate the clean way, and the side files and the memory will retire because the platform makes the clean path the only path. A platform forces discipline only where it carries a decided rule. Where the rule was undecided, the platform did not impose one. It held a custom field, an exception table, or pushed the work back outside, so the side file is open beside the new screen on day one. The system enforces the rules it was given and routes around the ones it was not. Going live did not decide the undecided rule. It shipped it as an exception.
The project is blamed for the problem it revealed
What follows the cutover is a particular kind of cost, and it is not a collapse. It is a misreading.
The business case assumed the platform was the constraint, so when the platform shipped and the constraint was still there, the project went into the record as the failure. The timeline slipped on decisions no one could make on the integrator’s schedule. The scope narrowed where a rule had to be decided and was not. The working-capital release the case promised did not arrive, because it never depended on the platform. The project did not fail to fix the condition. It was never able to, and it spent the budget showing that.
Two things happen, and both are visible from the chair.
The project absorbs the blame. The steering committee, the board, the sponsor record the platform as the thing that went over budget and under-delivered. The change-request log is the tell: it grew for three quarters running, and each request was the price of a decision no one could make in the workshop. The cutover date moved twice. The go-live narrowed in scope. So the integrator is changed, or the remaining scope is cut, and the next planning cycle reads the lesson as the platform did not work, which is the wrong lesson, because the platform did exactly what a platform does. A second capable platform on the same accumulated overrides would produce the same outcome faster.
And the business case is judged unmet. The case promised standardization, a release of working capital, and a single operating model, on the assumption that the system was the bottleneck. None of those arrived, because each depended on a decided rule the project could not produce. The gap is widest in a roll-up, where each add-on arrived with its own masters before the platform could standardize the last, so the masters were migrated, not reconciled, and the platform now runs several commercial histories on one screen. From the review chair, this is the project that shows up in the next board pack as a write-down of capitalized cost or a re-baselined plan, named by its nearest initiative rather than by what is actually producing it.
The project did not fail to fix the condition. It was never able to, and the record blames it for what it only revealed.
The platform changed; the question did not
The business does not stop here. So the consequence has a resolution, and it is the reason the close is what it is.
The lesson the business usually takes from a stalled project is that it picked the wrong platform or the wrong integrator, so it scopes a better one. The next project reaches the same workshop and asks for the same pricing rule, the same availability number, the same substitution authority, and the room still has history. A second capable platform on undecided rules produces the same exposure a second time, at a second cost. The thing that did not change between the two projects is the only thing that ever mattered: the business still has not decided the rule.
The next platform asks the same questions because the questions were never the platform’s to answer. The fixes do not compound, because neither project touched the thing underneath. One project, then the next; the same workshop, the same four records, the same history handed across the table. The platform changed. The question did not.
The platform changed. The question did not.
Decide the rule before the system can carry it
The decision the project has been waiting on the whole time is not the one the business keeps reaching for.
The question the project keeps stalling on was never a configuration question. The platform can carry the price once the business decides what the price is for an account whose relationship has moved. It can publish availability once the business decides what number it is willing to promise. It can hold the substitution rule once the business decides which spec-correct yes is a rule and which is leakage. The first question is not whether the system can carry the rule. It is which rule the business is prepared to make true. Decide it, and the platform has something to install. Leave it undecided, and the next platform asks the same question.
This is a different kind of work than the project, and it comes before the project, not after it. It is not picking a better platform, and it is not delaying the cutover until it is ready, because time does not decide the rule, only the business does, and a delayed cutover on undecided rules is a longer project that ships the same exceptions later, at more cost. It is not documenting the requirements harder, either. A requirements document can only record a decision the business has already made. You cannot document the substitution rule before the business decides what the substitution rule is, and writing the four side files and the CSR’s memory into a longer binder just moves the undecided rule into a longer document. The hard part was never writing the rule down. It was deciding it.
And the rule has to live where the next quote uses it, or the next override will erase it. The decision is not made in a slide or a target operating model. It is made in the records the next order actually runs through: the pricing configuration, the customer master, the availability the portal publishes, the substitution the system enforces.
The proof that this work happened is not that the system went live on schedule, and it is not a green cutover dashboard. The proof is that the workarounds retire. The price comes from the decided rule, and the analyst stops rebuilding it beside the matrix. The availability number is one the branch will promise, so the planner stops keeping the file open beside the screen. The substitution authority is a rule the system enforces, so the rep stops carrying it case by case. The account treatment is on the record, so the CSR’s memory is no longer the only copy. When those four go quiet, the platform is finally carrying decided rules, and the project the business funded is doing the thing it was bought to do. Until then, every new platform meets the same undecided rules.
A system can install a rule the business has decided. It cannot decide one. That is the work that comes before the system, and the work the system has been waiting on the whole time.
The platform is not waiting on a better configuration. It is waiting on a decision the business has not made: which rule the price, the date, the substitution, and the bill are supposed to follow. Deciding that rule, and making it hold where the next order runs, is the work the system cannot do for you. That is the work, and how it is proven complete.