CFB Automation: getting a manufacturing ERP to send its own paperwork
Built the system that emails a plant's invoices, POs, and remittances out automatically and files them to SharePoint — and I'm now building its modern successor.
Aptean Ross · Crystal Reports · EMF · SharePoint · email delivery

Built during my time at Aptean. Described plainly, because it's a plain problem that costs real money.
The problem
Every business that runs on an ERP has a quiet daily tax nobody puts on a slide: getting documents out the door. Invoices to customers. Purchase orders to vendors. Credit notes, sales order confirmations, ACH remittance advices. Each one has to reach the right person, at the right company, with the right details, ideally the same day it's generated.
In a lot of Ross shops, that was a manual job. Someone would run a report, export it, find the customer's email, attach the PDF, send it, and do that again, and again, until the stack ran out. It's the kind of work that's easy to describe and miserable to do — repetitive, deadline-bound, and unforgiving of small mistakes. Send the wrong invoice to the wrong account and you've created a collections problem and possibly a confidentiality one. Forget to send a batch and you've quietly delayed getting paid.
Ross has a tool for producing these documents: the Crystal Forms Bundle, or CFB — a set of Crystal Reports-based forms for the standard business paperwork. It could make the documents. What it didn't do gracefully was deliver them, automatically, to the right contact on file, without a person standing in the loop. And CFB itself had a reputation, fairly earned, as something of a black box — powerful once it worked, opaque and finicky while you were getting it there.
So the problem I was handed was narrow and real: make the ERP send its own paperwork.
The approach
The design goal was that the documents should just go — reliably, to the correct recipient, without anyone babysitting the process.
The anchor for "correct recipient" was the record itself. Every customer, vendor, and payee in Ross already carries the contact information for where their documents are supposed to go. Rather than maintain a separate list to fall out of date, the automation drove delivery off the record on file — the invoice went to the contact on the customer record, the PO to the contact on the vendor record, the remittance to the payee. The system of record stayed the single source of truth for who gets what, which is exactly where that truth should live.
The second decision was to treat delivery as more than email. Sending a PDF is only half of what a business needs; the other half is being able to prove, later, what was sent and when. So alongside emailing each document to its contact, the automation uploaded a copy to SharePoint automatically — a durable, searchable archive of everything that went out, organized rather than scattered across someone's Sent folder. That archive turns out to matter every time there's a dispute, an audit, or a "we never got that invoice" phone call.
The third decision was to work with CFB rather than fight it. CFB could generate the forms; the automation wrapped the delivery, scheduling, and filing around it so the black box did the one thing it was genuinely good at and a cleaner layer handled everything else. That's not a glamorous architectural choice, but it's the pragmatic one when you're inside a shipping product with real customers depending on the existing behavior.
The solution
CFB Automation took the documents Ross could produce and handled the entire delivery lifecycle: it generated the Crystal forms, matched each one to the correct contact on the customer, vendor, or payee record, emailed it out as a PDF, and filed a copy to SharePoint — automatically, on a schedule, across document types.
The document set it covered was the full spread of everyday business paperwork: invoices, sales orders, credit notes, purchase orders, and ACH remittance advices. Each type flowed to the party that was supposed to receive it, using the details already maintained in Ross. What had been a person's recurring chore became something the system did on its own, the same way every time.
The plain benefits stacked up in the way plain automation tends to. Documents went out consistently instead of whenever someone got to them. They went to the right recipient because the recipient came from the record, not from memory. The wrong-invoice-to-the-wrong-customer class of mistake got much harder to make. The SharePoint archive meant there was always an answer to "what did we send them, and when." And the people who used to spend part of every day attaching PDFs got that part of their day back.
The other, quieter wins
A few things about this kind of automation don't show up until you've lived with it.
It's fair to the finance team. AP and AR staff are often the ones doing the manual sending, and it's genuinely the least valuable use of their time. Handing that to the system isn't a headcount play — it's letting people who understand the money spend their hours on the money.
It's an audit trail by default. Because every outbound document is filed as it's sent, the archive builds itself. Nobody has to remember to keep a copy.
And it's consistent in a way humans aren't at 4:45 on a Friday. The system doesn't skip a batch because it's tired, doesn't fat-finger an address, and doesn't send Tuesday's invoices on Thursday.
What's next: a modern CFB, without the black box
I'm now building a modern successor to CFB Automation, and this is the part I'm actually excited about.
The old approach was constrained by its era: tied to EMF and Crystal, with templates that were painful to change and an interface that assumed you already knew its secrets. The new package keeps the good idea — the ERP delivers and archives its own documents automatically — and rebuilds the rest with modern tooling: no EMF, cleaner and easier-to-edit templates, and a genuinely intuitive interface instead of one you have to be trained to survive. It's designed to be SaaS-friendly, and it can bypass the old CFB black box entirely when a shop wants a clean break rather than another layer on top.
The pitch is simple, and I'll keep it modest: document delivery is a solved problem in most modern software and an unsolved daily annoyance in a lot of ERP shops. I've built the solution once already, inside the constraints of the old stack. The second version is the one that shouldn't require a black box at all.
Tech stack
Aptean Ross, Crystal Reports (the CFB forms), EMF, automated email delivery, and SharePoint for archival. The modern successor drops EMF and Crystal-era tooling in favor of a modern template engine and UI, built to run as a service.
Still emailing your ERP's paperwork out by hand — or fighting CFB to do it? I've solved this before, and I'm building a better version. Let's talk →
Next case study: Crypto trading & analytics platform →
got a system like this? — one email starts it