Lotus Notes CRM-ERP System
- MS SQL Server
- PGP encryption
- AS2 Server
- FedEx SOAP services
Client set us a task to support and developing existing CRM/ERP system based on Lotus Notes/Domino Server. The main objectives of the system:
- Control products, namely, store information about the products, add new, edit, delete
- Make orders with the ability to pay via Credit Card, Electronic Check.
- Orders queue management and control of their state.
- Receive orders from partners.
- Create tasks for warehouses to form and send orders and monitor these tasks.
- Queue management of warehouse tasks.
- Sending E-mail to customers notifuing about the state of orders.
- Creating reports
- User management
The system was adopted with the following goals and objectives:
- Expansion of the existing system functionality.
- Support and debuging.
- Automation of receiving orders from partners.
- Automation of the system work.
- Smooth transition to a system with a web interface based on PHP.
- Integration of functionalшен with ACCTivate and QuickBooks.
- Server support: Lotus Notes / Domino, Web servers.
Due to the client's desire to make a smooth transition to a system based on PHP (creation of a system starting from the existing functions) we decided to create a new functionality in PHP, on this stage it was necessary to:
- Duplicate of data in a relational database in which we can easily work with PHP (further to make it the main data warehouse) - we chose MySQL (later replaced by Percona Server);
- PHP Framework for fast and easy development - we chose CodeIgniter, later, some of the functions related to automation were put to FuelPHP Framework;
- Feedback on Lotus Notes/Domino - client-server architecture based on SOAP services;
- Migrate users from the address book Lotus Notes/Domino in a relational database
Basic functionality of the system:
The main interface of the employee - Client Lotus Notes.
1) Queue of orders with different statuses (Orders), with the possibility of the creation of new orders via Lotus Notes - "(LN) Create New Order ..." or via a Web browser "(Web) Create New Order ..."
When user creates an order through Lotus Notes most of functionality runs on the PHP. Namely:
- Calculation of the cost, delivery price, tax payment
- Defining of a warehouse for each of the goods (as the customer has a lot of warehouses around the country) based on the data entered in the fields: shipping address.
- Payment by Cybersource
- Payment by Electronic Check
Necessary for calculations HTTP request data are sent by a component MSXML2.ServerXMLHTTP.
After user saves an order, data is sent to a relational database (futher - DB) sredstavmi ADODB.
2) Web Order Form
When user creates an order through the Web Order form all calculations are made on PHP. After creating the order through the Web Order form data is stored in the database and sent to the Lotus Notes / Domino using SOAP.
To work with Lotus Notes \ Domino documents from PHP we created Lotus Notes \ Domino SOAP server written in Java. After submitting the order in Lotus Notes \ Domino and receiving a response with a unique nubmer, the order is passed.
Creating Web Order form task refers to a smooth transition to a system with a Web interface based on PHP.
Above is described the possibility of creating orders on behalf of employees having access to the application in the Lotus Notes Client, and without additional registration of the Web. Clients have access only to Web order formand they must be registered in the system.
The process of creating new users, editing users' personal information, making orders and other functional regarding users were placed in a separate project Accounts.
To work with existing users in Account (their usernames and passwords are stored in the address book Lotus Notes) weraised DIIOP Server.
Every new order can be accepted for processing or canceled. If it is canceled the systems notifies the customer. If the order is accepted for processing - it goes to ACCTivate! (program storage) which checks the products in warehouses. All interaction with ACCTivate! performed through SQL queries, since it is based on MS SQL Server. After submitting the order in ACCTivate! and confirm the goods availability in warehouses - a task is created for warehouse.
4) Warehouse task queues (Warehouse Ticket).
Each warehouse ticket (further - Warehouse Ticket) is processed on the day, which is specified by the client as desired order dispatch day. Then warehouse form an order, print packing slip and sent the parcel to the selected warehouse, then state Warehouse Ticket changes in Lotus Notes Client. Warehouse works with Warehouse Ticket through Lotus Notes Web Server.
Warehouse Tickets, that are sent via FedEx are tracked in automatic mode (one of the automation tasks).
After all Warehouse Tickets are delivered an order is considered as delivered and is closed.
5) Reference Tables
Such tables as Prices, Products, Information about warehouses, company information available for viewing only, because ther editing was put into separate project livingconnect.
6) Receiving orders from partners
The system is integrated with a number of partner online stores. Orders can come from partners using different protocols, received data is processed in PHP and sent to Lotus Notes / Domino via SOAP protocol.
Since the receiving orders protocols may be different and are set by partners the functionality is added according to specifications of used protocols. Currently the following protocols are used: EDI (via SFTP), EDI (via server AS2), XML (through commercehub service, with mandatory encryption of files pgp keys).
Support and development of the project proceeds according to the methodology of Agile. Tasks are set by the client manager. Priorities may change depending on Incoming tasks.
The project team:
- Project manager - communication with the customer, distribution and control of tasks
- PHP/JS programmer - development of functional on PHP;
- Lotus Notes/Domino Specialist - development of Lotus Notes functional, administration of Lotus Notes/Domino;
There are no exact specifications. Tasks come gradually from the project manager. Together with the manager we estimate the tasks and set deadlines.