← CBAP: requirements, decisions, and business value
16 / 17 · 70 MIN

Decision tables: coverage, conflicts and unknown inputs

Turn ambiguous rules into explicit conditions and use counterexamples to discuss gaps with business stakeholders.

Define the question, data and units

A fictional team wants to route payment exceptions to hold, review or automatic processing. The first question is not which tool to use: it is which decision the team is authorized to make and with which data. In the lab amount_cents is an integer from 0 to 200000, minutes_to_cutoff is the integer number of minutes remaining until close, from 0 to 120, and reconciliation distinguishes confirmed from unconfirmed. These limits are teaching choices, not institutional limits. Unknown is not equivalent to zero, and “unconfirmed” does not mean “missing field.” Before modeling, establish the unit, observation time, data origin and interpretation owner. If one interface supplies euros while another expects cents, a perfectly consistent table can route transactions incorrectly.

Build a small, inspectable policy

The baseline contains four original rules. R1 holds every unconfirmed transaction. R2 sends confirmed transactions of at least 100000 cents for review. R3 sends confirmed transactions below that amount for review when at most 15 minutes remain. R4 automates confirmed transactions below that amount when at least 16 minutes remain. All intervals are inclusive and minutes are integers. Minute 15 therefore belongs to R3 and minute 16 to R4. Conditions within a row must hold together. A high amount does not activate R2 when reconciliation is unconfirmed, because that condition is also part of the rule. The table helps the analyst expose questions hidden in phrases such as “near close” or “material amount.” Business authority must confirm the boundaries.

Find witnesses of gaps and overlaps

In the exercise, changing only the start of R4 to 17 leaves a confirmed low-value transaction with 16 minutes remaining without an applicable rule. The report returns that combination as a gap witness. Changing the start to 15 creates the opposite problem: at that minute R3 and R4 both apply and propose different outputs. Do not change the resolution policy merely to obtain a green result. Bring the counterexample to the owner: what should happen exactly at this boundary? The answer may correct a condition or establish intentional precedence with a rationale. Testing only 10 and 30 minutes would not expose these faults. Retain the example that found the problem as a regression test and link it to the corrected rule version.

Choose resolution semantics deliberately

DMN documentation distinguishes ways to handle multiple applicable rules. In the lab U requires a single match; A permits multiple matches only when outputs agree; F uses the first applicable row; P uses explicit output priority. These are supporting modeling concepts, not a claim that the CBAP exam requires DMN programming. In the overlapping minute-15 case, reversing rows changes F from REVIEW to AUTO. P retains REVIEW if the HOLD, REVIEW, AUTO priority order remains. Changing that list changes policy even without changing conditions. Two rows with the same output still violate U; they may be acceptable under A. A different explanatory annotation is not a different output. The teaching code implements only this subset, without FEEL or a conformance certification.

Distinguish model coverage from real-work coverage

The baseline divides the two numeric axes into regions where condition results do not change. With two reconciliation states, eight representative combinations cover the table’s condition vectors. The script also compares every integer value on each axis with its region representative. This reduction is valid for the implemented independent intervals; a condition such as “amount greater than minutes times a factor” would need different analysis. Neither the eight cases nor integer enumeration discovers an omitted business need, a stale source or a channel excluded from the contract. Document the covered domain and collect real-work examples to challenge model suitability.

python3 content/labs/cbap-decision-rules/run.py --output /tmp/cbap-rules.json
# Inspect gapWitness, conflictWitness and changedExamples.
IN PRACTICE

Amount 99999, confirmed reconciliation and 16 minutes: AUTO in the baseline; a gap if R4 starts at 17.

Common pitfalls

Confusing remaining minutes with delay; converting unknown to zero; resolving conflicts by row order without agreement; generalizing eight partitions to any engine.

Related topics: Requirements architecture · Validation and acceptance · Rule life cycle

Take this idea with you

A useful table exposes boundaries and conflicts; the business decision still needs meaning and authority.

Create account

Reference: CBAP competencies · CBAP six-knowledge-area blueprint, May 2026 handbook

CBAP® is a registered trademark of International Institute of Business Analysis. bigsavant.com is an independent preparation platform and is not affiliated with, associated with, sponsored, authorised or endorsed by IIBA. Content and questions are original, are not official exam questions, and completing our tests does not award or guarantee any certification. Names are used only to identify the subject. All other trademarks belong to their respective owners.