Going from AS/400 to Dynamics AX 2012: Taking the Good Stuff With You
This is the story of how a custom application made the transition from an AS/400 to Dynamics AX 2012. I had the honor of working for 12 years at a place I will call the Happy Spaniel Company. (The owner’s dogs liked me…) The company was running Infor/BPCS 8.2 on the IBM AS/400. I was on an IT team with some really sharp developers, former employees of the (now defunct) company that wrote the package. As time went on, we developed some very effective custom applications, both native green-screen and interactive .net code. All the applications in question used the DB2 database. Here's the story on how you can take the good stuff with you.
Happy Spaniel is basically in the “goop” business. Filled materials, or dielectric insulators, if you want to be picky. When cured and applied, these materials keep electricity in place while moving heat. It’s great for making integrated circuits. The goop is web-coated onto a flexible substrate, and sold by rolls, sheets, and custom-stamped parts to cool components on circuit boards. Oh, and sometimes the goop (dispersion) is just squirted onto the board during assembly. The dispersion itself is mixed in discrete batches, each with its own identifier. Each batch is tested, with different tests based upon the formulation. While the web-coating is going on, the operators take samples at prescribed footages and or time intervals to make sure the coating run is going well. Each batch of dispersion, substrate, and liner that is fed into the run is tracked by when it is started and finished.
The application that takes the interval measurements and records new barrels of goop started life as a MS-Access database written by an engineer. The database had a fixed vocabulary of tests that could be recorded for each unique coating machine. When new tests were needed, the results were simply added to the comments. Company legend cited an engineering tech who could actually get meaningful reports from the database. They say he took the job seeking a challenge - finding Jimmy Hoffa was too easy. At last report his doctor is very optimistic of a full recovery in time.
Metamorphosis provided by the Visual Studio and .Net saw the database become a C# butterfly with a SQL-based interface to DB2. We added tables to BPCS to join a measurement to an operation on a router. As Production orders were created, the type and frequencies of samples were called out by the tests attached to the router step. This created the test plan for each order. Results were captured in another set of relational tables while issues to the order and receipts from the order were automatically entered into BPCS from the application, known as IP (In Process) Capture. Sample data was then available for customer reporting.
When Happy Spaniel began to implement Dynamics AX 2012 R2, we decided to bring the Coater IP along. There were a number of changes to make:
- Communication to and from the ERP system changed from RPG with embedded SQL to Query Services using the AIF:
- Logic to detect Batch orders that had a coating operation and create/maintain the test plan for that order.
- Logic to update journal entries for inventory transactions.
- The IP Capture database was moved from DB2 to SQL server. This contains the test plans per coating operation per product, as well as historical results.
- Changes to the IP Capture interface to accommodate the differences between BPCS and Dynamics AX.
The process was a good deal more detailed, of course, and messier than the nice neat diagrams above. The most interesting point to me was the way a well-designed C# application could be reused between ERP systems, even ones as different as Dynamics AX and BPCS. The first enabling factor was a good object-oriented design in the original IP Capture. The second was the power and flexibility built into the AIF.
Credits and kudos: Thanks for the memories and discoveries to the “Happy Spaniel” folks, especially to John M. and Chad A., who built the code, and to Adam S., the long suffering SME from Engineering.