The Short Answer

A well-crafted Salesforce story describes who, what they're trying to achieve, and what will be true after the action — not which field appears on which screen. The simple test: If acceptance criteria can be written without knowing whether the implementation will be Flow, Validation Rule, or Apex, the story is correctly formulated.

The common pitfall is a story that already contains the solution. The moment it reads "Add a Picklist field to the Opportunity screen," the discussion about the process is over before it began.

A Structure That Works

ComponentRoleQuality Test
ContextWho is the user and when are they hereReal role, not "user"
IntentWhat they are trying to achieveFormulated in business language
Acceptance CriteriaWhat is being testedCan be run as a scenario with test data
Edge CasesWhat intentionally failsAt least one negative
Out of ScopeWhat is explicitly excludedPrevents arguments during acceptance

The last point saves most disputes. An explicit statement that what is not included is indeed not included is worth more than three paragraphs of description.

Breakdown: Vertical Slice, Not Layers

The temptation in a CRM project is to break it down by technical components – data model first, then automations, finally reports. The result is that there's nothing to demonstrate until the end, and no one knows if the process works.

The correct breakdown is vertical: one complete, end-to-end scenario for one user profile. A single opportunity that is opened, progressed, closed, and appears in a report is worth more than ten defined objects without a process. Later, profiles and scenarios are added around that same skeleton.

Prioritizing When Everything is Urgent

Three criteria are sufficient, in this order:

  1. Blocks Go-Live? – Without it, the process is incomplete. There's no room for negotiation.
  2. How many users per day? – Frequency trumps intensity of complaint. An item affecting 80 daily agents precedes a request from one manager.
  3. What is the cost of deferment? – Does the cost of implementation increase if we do it after launch? A data model change yes, a report change no.

Anything that doesn't pass these three goes into the Parking Lot. This separation prevents the backlog from becoming an archive of wishes. In-depth information on managing scope changes can be found in Scope Creep and Change Control.

Requirements Debt: The Silent Failure

Requirements debt arises when a story is closed without deciding what happens in an edge case – it's left as "we'll deal with it later." After launch, these edge cases become the majority of support calls.

The simple discipline: an item is not closed without a documented decision for every open question recorded in it, even if the decision is "intentionally not addressed." Documenting the waiver is better than a lack of documentation.

Connection to Testing

Well-written acceptance criteria are essentially the UAT scripts. When written after development, UAT becomes a demonstration of what was built instead of a test of what was required. The sequence is detailed in the UAT Guide.

Summary

A quality backlog is not long but clear: each item states who it's for, what will be measured as success, and what is explicitly not included. These three questions, asked before building rather than after, determine almost all post-project acceptance quality.