SELECTED EXPERIENCE / Operational SaaS

Keeping payroll and billing workflows independent

Correcting a shared lifecycle rule so completing payroll did not incorrectly block a separate billing workflow.

Workflow architectureFinancial data boundariesEngineering diagnosisRegression verification
MY ROLE: Technical diagnosis, application architecture, and implementation

An implementation example from operational SaaS work. Company and customer details are omitted.

The situation

One set of approved time records supported two different business activities: payroll and customer billing. Completing payroll changed the records’ status. The billing workflow interpreted that change as a reason the records were no longer ready, even when their approvals and billable activity were otherwise valid.

The visible symptom was a blocked billing action. The underlying issue was a business rule: the system had allowed the completion state of one process to stand in for the eligibility of another.

The decision

I traced the workflow through export behavior, readiness checks, exception settings, and the review interface. The correction needed to preserve two responsibilities at the same time: payroll-exported records could still be eligible for billing, while the payroll path still needed to prevent an unintended second export.

The solution also needed to explain genuine blockers. A record without billable activity should not look like a record blocked only because another workflow had completed.

The work

The billing eligibility rules were updated to account for the payroll-exported state. The review interface made that status explicit and displayed specific blocking reasons with counts.

Exception handling was connected to the configuration that determines whether an exception blocks billing. That kept the business setting authoritative instead of treating severity alone as the decision.

Focused backend and interface checks covered the corrected billing path, records with no billable activity, and configured nonblocking exceptions. Payroll’s protection against another export remained a separate rule.

The implemented behavior

Completing payroll no longer made an otherwise eligible record fail billing readiness solely because of its payroll status. Records with a real billing blocker remained blocked, with a more specific explanation in the review interface.

This is the kind of architecture decision that can hide inside an apparently small bug: two departments use the same data, but they do not share one lifecycle. Fixing the screen alone would have left that distinction unresolved.

If your team is repeatedly working around unclear status, ownership, or approval rules, Technical Advisory can help connect the business process to the implementation that needs to support it.

All experience
A DIRECT CONVERSATION

Have a technology decision
you need to get right?

Tell me what’s happening. I’ll let you know whether I can help
and how I’d approach the next step.

Talk to Jonathan No sales team. You’ll talk directly with me.