August 2020: Magestore received the project with some requirements from the client. No hassle as the client had no go-live plan yet.
September 2020: Magestore started working on more projects and the heat increased.
October 2020: The client added more complex requirements and expected to launch the solution for 62 stores on November 11th.
There were around 40 days to go and we had to speed up the process. How did the client and Magestore make it work? Let’s count down to the launch day with us.
The brand
Trulieve is one of the largest cannabis retailers in the world, based in the U.S., which is operating in 11 states and plans to expand nationally. The company manufactures their own products, including therapeutic and herbal medicine products, natural herbal cosmetics, and products for animals.
Trulieve had 62 stores. Each store had up to 10 registers and an additional 2–4 tablets for the delivery team.
The challenges
Trulieve looked for a system that could sync inventory online and offline. They wanted to migrate their current system into Magento and own the source code. Therefore, they needed a customizable and Magento-compatible solution.
As a big retailer, Trulieve paid much attention to the following things when they came to Magestore:
- The confidentiality of customer information
- A point of sale that can scale and be customized to their business requirements
- A POS that can handle a number of large orders, from 60,000–70,000/day without any interruptions
- Simultaneously migrate from the old ERP system to SAP along with setting up the POS system at the stores
Trulieve would use Magento as a platform for eCommerce websites, SAP as their ERP system, and Magestore POS system at their physical stores. Magestore POS would connect directly with Magento and sync data from Magento to the ERP system.
At the beginning of the project in August 2020, Trulieve didn’t set an exact date to launch the solution. After nearly 2 months of working together, Trulieve requested more features to fit their business and set the launch date around mid-November.
However, November is the peak sales season of many retailers and Magestore was also working with other clients to launch their system. But in the end, Magestore and Trulieve made it happen.
How we made it work
Simplicity—the art of maximizing the amount of work not done—is essential
The stakeholders in this project included 3 parties from Trulieve—their internal IT department, an ERP system provider, an external deployment team—and 2 Magestore teams—Delivery and Product.
During project kickoff, Magestore received the following requests from Trulieve:
- Dual screen: A large screen display for customers to view products and increase their experience
- Customer management: Manage prescription information and purchase history of customers
- Reward point and Redemption: Apply reward points to customers
- Call center: Receive customer requests via phone and coordinate orders
- Batch assignment: Manage and update the status of shipments by batches
The requests were updated regularly, even daily while the project timeline was too urgent. Moreover, Trulieve had some problems with their ERP deployment at that time, some related requests could be changed or on hold (as the Magestore POS system would sync data to the ERP).
After many changes, we held a meeting between all parties to finalize the minimum viable product (MVP) version and lock the go-live features.
Customer collaboration over contract negotiation
When working with multiple partners, the biggest challenge was to reach a mutual understanding of the following factors:
- Request
- Solution
- Communication method, communication channel, meeting time
- Method of transferring source code
- Code review
- Development flow
Initially, Magestore’s Delivery team received the project in August 2020. At that time, the team didn’t have the resources for the project and the project’s deadline wasn’t set.
In September, the team reached max capacity with many active projects. We decided to bring in more resources to help Trulieve by cooperating with more partners.
In October, Trulieve shared their go-live plan on November 11th and added new, complex requests.
When the Delivery team designed the solution for Trulieve’s requests, we estimated that it would take at least 2 months to complete.
With the go-live date quickly approaching, Magestore teams and partners proposed a few measures to ensure the right pace:
- Over-time working
- Daily internal acceptance (for all relevant teams to review and agree on the given solutions)
- Daily meeting with customers
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
As Trulieve would implement the POS solution in all their 62 stores, they cared much about the simplicity of devices and the seamless integration between hardware and software. Therefore, they had selected two simple payment providers. And to make all hardware devices and software work well together, Magestore used a semi-integrated model.
When integrating devices, the team also faced some below challenges:
- Limited documentation of payment methods
- The payment parties didn’t share the test cases at the beginning of the project
- No available devices to test
- One payment solution deployment of Trulieve was still in progress.
- No data preparation before go-live (data mapping)
How did Magestore overcome the difficulties?
- We built test cases based on our experiences and all available documents we had which covered essential scenarios to make sure the integration could work. Then when the payment parties sent us their test cases, we completed testing after 1 day.
- We decided to integrate two payment providers but would go live one first and put the other in pending.
All parties had close and usual meetings to update the project progress and timeline. And we turned these challenges into valuable lessons in the end.
Working software is the primary measure of progress
Since Trulieve would mainly use the POS for their daily retail operations, they were greatly concerned about whether the current infrastructure could cope with thousands of transactions daily. What would Trulieve do if their infrastructure failed to handle a large order volume?
This was such a critical and challenging question. After evaluating the situation, Magestore created a temporary cross-functional team to solve the problem of load capacity. This new team included 1 System Admin, 1 Product Specialist, 1 Project Manager, and 1 Developer.
The team’s next steps were:
- Get Trulieve’s specific technical requirements
- Brainstorm together to find a solution
- Define a plan
- Implement the plan
- Review and report to Trulieve
In the first step, the team recorded the system’s workload after go-live. When going live, Trulieve would run 1,980 POS at the same time in 62 stores. Their system had about 600 products.
Because Trulieve used the infrastructure service of a trusted provider, the team decided to only focus on testing the POS performance and see how much it could handle.
Next, the team made a plan to test performance. Replicating the customer’s environment was the most important step to ensure the accuracy of the performance test. After that, the team created mock data on the POS, found API testing tools, and designed test scenarios. Then they ran the tests and created reports and suggestions for Trulieve.
You can see the test results here.
When miscommunication caused a failure
Trulieve failed when they went live for the first time—on November 11th, 2020. The Trulieve team had to review the git flow and deployment flows.
The initial plan was that Magestore would work on the Magestore Develop branch, then merge into the Staging branch.
First, the Magestore team built and tested the solution on the Feature branch to make sure everything was fine, then we merged it into the Magestore Develop branch. After that Trulieve would combine the solution from the Magestore Development brand to the Staging branch.
However, Trulieve split the Feature branch and merged it into the Staging branch.
You can see that there were two different Feature branches here. One was on the Magestore Develop branch and the other was on the Staging branch where Magestore couldn’t have the permission to work. This led to a huge problem.
Magestore still worked on the Feature branch and merged the results to the Develop branch. Some partners modified something on the Staging branch which included another Feature branch split previously. When Trulieve merged the results from the Magestore Develop branch to the Staging, some features which were deleted before now reappeared. That brought about bugs and cost us more time.
In the end, all the parties had to agree on the deployment flow.
The Magestore Develop branch was only for the Magestore team to test. After testing was complete, Trulieve would merge the Feature branch into Staging. And deploying became smoother, significantly reducing the development time.
The result
Trulieve successfully launched their POS solution on November 22nd, 2020. It was a huge milestone for all participants.
The system ran smoothly and met their daily requirements. Now Trulieve can:
- Save hours on synchronizing data between the POS system, Magento, and ERP
- Manage inventory across channels easily
- Process payment quickly
”They're one of the most supportive and professional teams we’ve ever worked with. Their POS solution does help us much in our daily operations. Thanks, Magestore team.
Final words
The successful case of Trulieve has taught us a lot about providing POS solutions for big brands. We would like to thank Trulieve for choosing us as a long-term partner and for your collaboration so far.
If you want to join our list of 10,000+ successful Magento merchants, don’t hesitate to let us know. Our retail experts are more than happy to assist you with your success.