XRM SYSTEM DEVELOPMENT
FOR RETAIL BUSINESS A story of custom development & continued support of a complex CRM system
Project Requirements Unify a large number of eCommerce websites, each with a unique design Integrate data from their CRM into a number of WordPress websites Provide instant status updates to clients via their Members Area on their purchase delivery Enable client-retail vendor, retail vendor-support and client-support communication Track KPIs of retail vendors and Support Agents Provide suggestions on the best vendor for each client Gather all financial data including client transactions and vendor finances Keep the system secure and coherent
Project Team Project Manager Designer 3 Backend PHP Developers 2 Frontend Developers 2 QA Engineers
“It was an exciting and challenging experience of developing a huge system step by step. We never stop and keep improving it even now. We are proud of the product we have delivered. ” Igor Project Manager Mobilunity.com
PROBLEM One of our largest backend projects with continued support, became XRM development for a retail client, who receives orders from thousands of resellers and operates with hundreds of retail vendors. Mobilunity’s experts in PHP Yii framework created an extended CRM system (XRM) with larger, complex modules, that allows businesses to control their processes better, and keep all of their work in one place.
BUSINESS ANALYSIS Our Project Manager analysed the drawbacks of the CRM systems and SAAS solutions the client was using at that moment. The analysis revealed a list of issues that the system should be able to handle: High load on the system - over 50,000 clients, 1,500 retail vendors and a 30-employee Customer Support Team operating 24x7 Dependence on the dedicated server of a specific provider The need of Customer Support team performance optimization through enabling AI algorithms Presence of different sales sources, including: email chats, phone calls, quote and contact forms Accepting transactions on order purchases from different billings including PayPal, Skrill, Bluesnap and 2checkout Presence of over 1000 reseller websites, which should send and receive data from the CRM
1
TECHNOLOGIES USED
SERVICES PROVIDED DEVELOPMENT
Since XRM solutions available on the market didn’t satisfy all needs of the client, the team decided to proceed with custom CRM development. The CRM Project Manager decided to keep the development process in versions, planning releases with new features monthly as there was a large number of users interacting with new updates.
DESIGN
For the initial MVP our team used a ready-made template for CRM systems and slightly customized it to meet the client’s color preferences. Our designers created custom ecommerce icons and basic color schemes in PhotoShop, not changing the structure of the theme. This allowed us to significantly minimize expenses on design and further HTML coding.
2
HOSTING AND INFRASTRUCTURE
The retail client had a large database of resellers, vendors and clients, therefore every minute, in which the system was down, would result in a loss of thousands of dollars. To avoid issues with possible DDOS attacks on the hosting, failures of VPS service providers and similar server issues, our Network Specialist developed a cluster, uniting VPS servers from 3 different providers.
CLUSTER
XX.XX.XXX.XXX Provider 1
XX.XX.XXX.XXX Provider 3
CRM Proxy
CRM Proxy
XX.XX.XXX.XXX Provider 1
XX.XX.XXX.XXX Provider 2
XX.XX.XXX.XXX Provider 3
CRM Web Server
RabbitMQ
CRM Web Server
XX.XX.XXX.XXX Provider 1
XX.XX.XXX.XXX Provider 2
XX.XX.XXX.XXX Provider 3
CRM DB
CRM DB backup
CRM DB
XX.XX.XXX.XXX Provider 1 Sendgrid and ElastiEmail API
XX.XX.XXX.XXX Provider 2 Monitoring
3
FRONTEND DEVELOPMENT
The Frontend of the project covered the PHP development of a simple form builder with all fields and values essential for the client’s business. Once a client placed an order on the reseller’s website, the client received all login details via email, and was able to track their order in the Members Area located on the reseller’s WordPress website.
BACKEND DEVELOPMENT
Our team of Yii developers were tasked with solving a number of issues while developing the CRM including, but not limited to: creation of user profiles; development of the order features and fields in Yii; implementation of Ajax on all forms; integration of payment gateways with instant payment notifications through PayPal API, Skrill API, 2checkout API and Bluesnap API; integration of system logging through logentries service to monitor every action of the user; development of a standalone API for the CRM, which enabled integration of all order fields into the Members Area on the reseller’s websites etc.
TESTING & BUGFIX
Every release of the new CRM version was thoroughly tested by our QA team at the staging environment. The System was tested in the most commonly used browsers by clients (according to Google Analytics data provided by the client): Chrome 49, 50, 51, Internet Explorer 9, 10, 11, Safari 9.0, 9.1, 9.1.1, Firefox 45, 46, 47.
TECHNICAL SUPPORT
Full CRM system development was finalized in August 2015. After that the project was considered as completed and our team worked only on its further support and CRM optimization according to the requests from the client and the data we received from Nagios monitoring and logentries.
4
SOLUTIONS Development of the XRM system in Yii faced common issues particular to large systems with thousands of users. Our team was able to identify and solve such problems:
1. SLOW SYSTEM LOADING
To be able to serve over 50,000 users on one website we decided initially that the solution was to have a dedicated virtual server. With the number of users increasing daily, the system wasn’t able to serve all requests quickly and caused a massive lag (over 3 seconds) in every page load speed. Our database experts optimized the requests by reconstructing the system logic to avoid PostgreSQL and MySQL mix leaving solely MySQL requests and improving database indexing.
2. ELASTICSEARCH RESOURCES OVERUSE
Elasticsearch was used in the system as a logger of all actions, but with the growing number of users, every request on its side caused serious resource overuse. The problem was solved by separating elasticsearch to a separate dedicated server.
3. SERVER DOWNTIME
To get rid of possible dependencies on VPS service providers our network expert suggested an architecture with 2 verticals and a constantly working mirror of the CRM. During our recent monitors we also decreased latency of server synchronization to avoid hitting CPU and RAM resource limits.
4. DOWNTIMES OF THE 3RD PARTY SMTP SERVICE
To avoid dependency on the third-party emailing service our developers plugged the API of a secondary provider so we got SendGrid and ElasticEmail backing each other up - and added a “switch” functionality for Support Agents for the cases when they were notified about an outage in advance. Since these SMTP services are provided by completely different companies, we were able to ensure 100% email services uptime. 5
5. VIRUSES AND MALICIOUS CODES
Since the CRM system works with the files uploaded by both vendors and clients, there is always a risk of malware to be uploaded. To prevent infection our developers specifically limited types of files allowed for upload, disabled execution of codes received outside, and enabled internal malware scanning algorithms.
Note: due to the NDA signed with the client, industry and specifics of the business model were changed in this case study. All technical specifications, problems and solutions presented below are real.
Mobilunity was thrilled to assist and found the best possible solution in PHP application development by building a solid system using Yii framework, that helped the client more effectively manage their business. Let’s develop a custom CRM system for your business and increase its efficiency!
https://mobilunity.com
sales@mobilunity.com 6