Three date fields that existed on every row, and had never once been written

The sales process keeps a plan of the steps to a first commitment, with a target date, a baseline and a slippage figure on each row. A question about the slippage field turned out to have an awkward answer: nothing computes it, nothing writes it, and every row in the table was empty. An always […]

In this series · Part 23 of 27

1Dynamics 365 CRM: API integration + change-control repo2Dynamics 365 CRM: Last Contact Engagement tracking on Accounts3Turning a sales-intelligence export into a clean CRM data model4Dynamics 365 CRM: contacts inherit their company’s website, and emails timestamp by send time5Your SEO health now lives as a dashboard inside the CRM6Contact form duplicate detection now reads the request, not just the address7Marketing list members now show engagement and account fit8Campaign responses now create leads behind a confirmation step9Three CRM automations passed their tests without running the code that had just changed10A signature defect that three mailboxes agreed was not there11Why a corrected email signature kept sending the old one12A read-only CRM endpoint for scoring outside the desktop13Choosing what runs the AI layer in the CRM sales process14Asking whether a partner is involved, instead of inferring it15An email step in the sales process can now be excused, not only sent16The rehearsal that guards every process change had been failing silently17A one to one email from a lead left the engagement record blank18Two local dependencies, and only one was obvious19Filing a generated document to the record automatically20One meeting that served two process steps, recorded as two21A setting that stored correctly, read back correctly, and was never in force22Generating a product catalogue from one canonical file23Three date fields that existed on every row, and had never once been written24Unused, unreferenced, and still not safe to delete25A measure that could not record early26A sales automation that runs as itself, not as an administrator27A stage change that was refused, and reported as a success

On this page

Free Revenue Lifecycle Assessment

Connect with Marissa Wright to receive a free Revenue Lifecycle Assessment Report on your own business.

Book a consult →

The sales process keeps a plan of the steps to a first commitment, with a target date, a baseline and a slippage figure on each row. A question about the slippage field turned out to have an awkward answer: nothing computes it, nothing writes it, and every row in the table was empty.

  • An always empty field reads exactly like a clean answer. Asked how much a plan had slipped, the honest response was that nothing had ever recorded it, which is not the same as nothing having slipped. This was the second instance of the same shape in two days, after an event log was found holding forty nine rows of a single type, with four of its five types never once written.
  • Only one part of the fix had a deadline, and separating that out is most of the value. Slippage is measured from a baseline, and a baseline can only be captured at the moment a customer accepts the plan. The rest of the measurement can be built next month and still be correct. An acceptance that passes uncaptured cannot be reconstructed afterwards.
  • The automation that stamps it re-enters every time any watched field changes on an accepted plan, so a stamp without a guard would keep overwriting the baseline with whatever the dates say now. A plan renegotiated twice would then report as perfectly on time. The guard is a filter excluding any row that already carries a baseline, which makes the original survive every later edit.
  • A test proving only that the stamp works would pass just as well against the version that overwrites, which is the version that destroys the history. So the fixture plants a row with an old baseline deliberately and fails if it moves, plants a row with no target date and fails if it is written to, then re-enters the trigger and checks both again.