Mainfreight San Fransisco is a global logistics and inventory management provider. They provide quality real-time inventory levels for warehouses across the world. It is their goal to provide commitment to delivering your freight products on time and damage free. They are responsive to the needs of their clients and adapt an “anything is possible” attitude.
- Operating Systems: Linux
- Internet Technologies: XML/SOAP, SSL, AJAX, ZEND, FTP
- Database Development: MySQL
Phase 1: Design Foundation
Defining the Problem:
Mainfreight San Fransisco needed a way to improve documentation, data consistency, and system performance for their custom logistics application. Before meeting with Customer Paradigm, they had established a logistics and inventory tracking system built piece-meal over the course of eight years which, over time, became increasingly difficult to update the code-base and database.
Building A Solution:
James, our project manager and Business Logic Expert (BLE) for Mainfreight San Fransisco, worked to provide a solution for their custom application needs. The client had an existing foundation of a previous custom application, we worked to take as much useful programming and functionality to fulfill their new needs. This is a process to save time and resources on the clients end, rather than starting from the ground up to analyze any existing code and functionality that we can re-use.
Quality Assurance: Coding Foundations
Phase 2: Development
In order to design any custom application, we first define the scope of the project. This requires the project manager to work with the customer to develop and evolve a system requirements document, outlining what is to be accomplished in the development whether it be one phase in a series, or the entire project. The Mainchain Order Management project consists of two phases: the first phase implemented the basic MOM skeleton on the Zend framework and MySQL database, ACL, and several modules required to implement the inventory tracking functionality, while the second phase enhanced the existing framework, ACL requirements, and the remaining modules required to implement the logistics functionality.
No development began until the system requirements documents for both phases were finalized and signed off by the customer. Once finalized, the system requirements documents were used by the developers to implement and, subsequently, by the QA department to test and verify all functionality required by the customer.
After sign-off, it’s time to write detailed specifications in a series of tasks for our in-house developers based on the system requirements. Development at Customer Paradigm is always coupled with strong communication and constant contact. James (Mainchain Order Management’s project manager) gets together with the client on a weekly basis to state what was accomplished last week, where development stands now, and what the goals are for the coming week. More importantly, it’s easy for the client to get James on the phone when issues arise and communication is clear and consistent.
The MOM project uses two servers for implementation and a carefully planned series of code-base release steps to ensure the highest system stability while forging enhancements required by the customer. The development server mirrors the production server and provides developers and testers an environment with which to implement and test bug-fixes, new code enhancements, and new phase code, allowing the customer to retain a healthy production environment. The customer also has the capability of testing important features and enhancements on the development environment before code is pushed into production.
At Customer Paradigm, we use version control software to ensure system stability at all times. If tested code is pushed live and is ridden with unforeseen bugs, it is simple to restore the production server to its previous stable state. Also, version control allows our developers to make enhancements and bug-fixes in a modular fashion preventing any confusion in code releases.
Once development is completed by the programmers, our project manager and QA department does a thorough quality assurance check to ensure that all the system requirements have been met and re-assign the task back to the programmer if functionality is buggy or incomplete. Once code and functionality is completed, the code is pushed from the development environment to a staged production environment for the customer to overview and make sure the functionality they were expecting has been implemented correctly. If any modifications need to be made that are outside of the original system requirements, a new set of system requirements is created and the process starts over again.
The custom application development has been approved by the client and the code is pushed live. During this phase, Customer Paradigm performs a final check of quality assurance to make sure the transition to the live site went smoothly.
After one phase in the cycle is completed, start the process over for the next phases.
Final Product Capabilities
- Ability to track the complete life cycle of manufactured products from where it is made to where it is moved for distribution.
- Tracks comprehensive set of data on a per-record basis for things like arrival origin date, ETAs for shipment and delivery, serial number tracking, special instructions, and more.
- Tracks multiple carrier’s shipments and ensured products are received with a proof of delivery.
- Code and Database was designed to allow for ease of custom system functionality and usability on a per-account basis.
- Access Control Layer (ACL) which applies system restrictions on a user role basis allowing system administrators to ensure data on a need-to-know basis.
- General system and industry standard reporting giving statuses of what products were shipped with different orders, what is on hand, and alerts for inventory issues.
- Custom Reports: enhancements to the reporting suite providing users the ability to view reports that matter to their business.
- Stylization for monitor or smartphones and tablets for ease of use regardless of how the user interfaces with the software.