← selected work

Case 03 · enterprise lifecycle / file-driven integration

The Bill That Couldn’t Go Missing

A billing communication is not just an email. It is the visible end of a chain of source data, file processing, identifiers, imports, journey logic, monitoring and exception handling. When one record disappeared, the useful question was not “can we resend it?” It was “how do we make the failure observable and prevent the same class of miss again?”

ANONYMIZED INVESTIGATION · Based on real cross-system delivery work. Client identifiers and implementation details are simplified. The case distinguishes investigated behavior from recommended controls; it does not claim a measured post-change delivery rate.

SystemERP / source → file → Marketing Cloud → billing journey
RiskA valid billing record can fail before communication
My roleInvestigation, cross-team handoffs, controls, next step design
FocusObservability + operational adoption
EXCEPTION PATHA reliable journey includes a visible way back when one row fails.
Billing / ERP
→
File
→
Transfer
→
ImportFAILED ROW
→
Journey
→
Customer

Decision snapshot.

Decision snapshot.
Objective Make customer-critical billing communication failures visible and recoverable.
Finding A valid source record could fail downstream, while parsing exceptions were not automatically communicated upstream.
My ownership Cross-system investigation, customer impact, technical handoffs, decision tracking and recovery ownership.
Recommendation Strengthen the file contract, exception feedback, logs and a documented resend procedure.
Trade-off Keep a clear manual recovery path while validating a more durable automated feedback mechanism.
Status Findings and operating recommendations are established here. Alert implementation and end-to-end recovery still require evidence.

The email was the last step, not the system.

The customer-facing requirement sounded simple: when a billing event becomes true upstream, the right customer should receive the right communication. In practice, that outcome depended on multiple systems and teams agreeing on data structure, timing, identifiers and error behaviour.

Artifact 01Communication chain
Billing / ERP→Outbound file→Transfer / vendor→Marketing Cloud import
Imported record→Eligibility logic→Journey / send→Monitoring

That distinction matters. If the message does not arrive, the failure may have occurred long before the marketing platform had a chance to send anything.

One missing bill exposed a larger control gap.

A billing record expected to trigger communication could be confirmed upstream, yet the downstream process did not produce the expected customer outcome. The immediate operational need was to understand the specific record. The more important delivery question was whether the system could reliably tell us when similar records failed.

We also encountered batch processing behaviour where a resent file needed a unique cycle identifier to avoid colliding with prior processing. That made idempotency and operational naming part of the communication design, not merely a file transfer detail.

If a record can disappear between systems without creating an alert, the problem is bigger than the record that disappeared.

A unique transport batch identifier can allow a resend to be processed. It does not, by itself, prevent duplicate customer messages. Recovery also needs a stable business key, record reconciliation and a tested duplicate policy.

I split the investigation into five proof points.

01

Source truth

Was the billing record actually produced upstream, and what fields made it eligible?

02

Transfer

Did the expected file arrive, under the correct batch / cycle identity, at the expected time?

03

Import

Did the row parse successfully, or did structure / text qualification cause it to fail?

04

Journey

Once imported, did the record enter the intended logic and communication path?

05

Exception

If any step failed, who was told, with enough information to act?

The investigation surfaced an observability problem.

One failure pattern involved column mismatches caused by unexpected delimiters or characters in name fields. A record could fail import and therefore never become visible to the downstream journey. More importantly, failed rows were not automatically communicated back to the upstream teams.

Artifact 02Failure modes
The investigation surfaced an observability problem.
Failure Symptom Why it matters
Batch / cycle collision Resent file may not process as intended Recovery depends on operational identifiers being unique
Column mismatch Row fails import before journey entry Marketing never sees a record that upstream considers valid
Unqualified delimiter Text content changes the perceived column structure Ordinary customer data can become a parsing failure
No automated back feed Failed rows require manual discovery Stakeholders may not know a customer communication was missed

The failure crossed ownership boundaries, so the handoffs became part of the solution.

The source team, integration / engineering team, Marketing Cloud specialists, QA and business owners each controlled a different part of the chain. My role was to keep one customer impact story intact as the investigation moved across those groups.

Artifact 03Team + handoffs
Business / billing owner→Delivery lead→Source / integration engineering
Source / integration engineering→Marketing Cloud→QA / UAT→Operations / support

What I handed to technical teams

  • Specific customer impact example and expected outcome
  • Batch / cycle identifiers and timing context
  • Known source evidence and downstream gaps
  • Questions that isolated file, import and journey boundaries
  • Acceptance criteria for recovery and future failures

What I brought back to stakeholders

  • Where the record failed
  • Which team owned the fix
  • Recovery procedure and residual risk
  • Monitoring / notification gaps
  • Decisions needed for a durable control

The fix needed both data hygiene and operating controls.

The items below are recommendations or explored follow-ups, rather than a verified list of completed production changes.

Make the file contract resilient

We discussed using text-qualified columns so values containing commas or other delimiters would not accidentally change the file structure. The point was not one problematic name. It was making the interface tolerant of valid customer data.

Make exceptions observable

The team explored a back feed or bad record notification so import failures could be surfaced to the relevant upstream stakeholders instead of relying on someone to manually export and email failures after the fact.

Improve logging around the handoff

Enhancements to logging were part of the follow-up so the next investigation would begin with evidence rather than reconstruction.

Treat recovery paths as product behaviour

A resend procedure, unique batch identifier, monitoring owner and failed record path are part of a production design. They should not be invented during the incident.

Readiness includes the operating response.

A durable rollout would document failure and resend steps, name the response owner, brief support teams and test whether an alert leads to action. Early monitoring would then confirm the recovery process works beyond synthetic records.

These are readiness requirements for the recommended controls; the case does not establish that automated alerts were deployed.

What I contributed.

I owned / coordinated

  • Framing the customer impact problem across systems
  • Client and technical team coordination
  • Investigation follow-up and decision tracking
  • Questions around file handling and exception visibility
  • Operational next steps, handoffs and stakeholder communication
  • Connecting incident findings back to process improvements and broader rollout

Technical specialists owned

  • Platform-level import investigation
  • Code and configuration changes
  • Source system export implementation
  • Logging implementation details
  • Final technical design of automated failure handling

The lesson was about interfaces, not billing.

This case is useful because it shows why enterprise lifecycle delivery cannot stop at the marketing platform boundary. The customer experiences one communication. The organization experiences a distributed process.

The stronger design is the one that can answer three questions quickly: Did the source produce the right record? Did every handoff accept it? If not, who knows and what do they do next?

What I would establish earlier next time

I would make the failure contract explicit before launch: valid file format, uniqueness rules, rejected row behavior, alert recipient, recovery owner, resend procedure and the evidence required to close an incident. Monitoring and recovery are architecture requirements, not post-launch housekeeping.

A reliable customer journey is not only a happy path. It is also a visible, owned and operable failure path.

Next useful view: how I reason about identity, data authority, latency and integration choices before launch.