Over the past six months I’ve been working on a system to automate invoicing using EDI. The system is built on CruiseControl.NET and a collection of custom written source control providers and CCNET tasks. Back in December, I blogged about this project which integrates with a custom ERP system built from scratch by Falafel that processes half a billion dollars worth of transactions a year so it’s nice to finally see my small part come online.
There are several Open Source projects used in the implementation including:
- CruiseControl.NET – the heart of the system
- FileHelpers – for CSV file processing
- edtFTP – for an FTP source control provider and CCNET Tasks
- ScrewTurn wiki – for documentation
- SubSonic – for mapping SQL Server data to XML
Here’s a diagram of the system with CCNET at the heart:
One of the many benefits of using CruiseControl.NET is the visibility the system can provide to the people in Accounts Receivable. Not only can they see what’s going on via the CCNET web dashboard but they can even install $g(CCTray) and monitor from their desktop as invoices are processed throughout the day. On the web dashboard clicking through to a specific “build” log for a given EDI 810 “build” provides invoice details including invoice number, customer name, date and dollar amount.
As you can see I still need to customize the dashboard to fit into the web-based ERP system’s look and feel.
CCNET’s plug-in architecture made it perfect for this situation as it has numerous features that can be leveraged to create this, perhaps unusual, usage of a Continuous Integration server. I suppose CI could just as easily stand for Continuous Invoicing. 🙂
EDI 850 Up Next
My next task will be to re-work on an existing, read old, EDI 850 Purchase Order set of processes and integrate them into CCNET. Anyway, this has been a fun project to work on and I’ve learned a lot along the way and I’d like to give a tip ‘O the hat to John Waters, Falafel’s CTO, for all his help. If you’re looking for an ERP guru, I think you’d be hard pressed to top John plus he’s got a great sense of humor. One afternoon while driving back through the farm land of Watsonville from our client’s site, one of the largest organic food companies in the world, he quipped:
Here we go driving through our business objects…
Something only another geek could really appreciate!
Lastly, I have to admit after 15 years of doing product development feels very satisfying to design and implement a system that solves a real world business problem. There’s just no substitute for hands on experience!
- Using CruiseControl.NET to manage EDI Invoice processing
- Processing fixed length or delimited files quickly and easily in .NET
- More Continuous Integration posts
[UPDATED: March 4, 2008] Forgot SubSonic which I use for data mapping/xml creation!