Evercode labs
CRM Solutions

Creation and implementation of automation systems to automate business processes. Implementation of CRM, automation of business processes, CRM integration with external and internal services of the company. Custom sales methodologies, managing contacts, control of payments, email marketing.

choose your path
choose your path
case 11

Automation system for generating reports on promotion RedReport

Implementation of an automation system for generating progress reports for Kelnik Studios
3 months
6 months
Symfony, Doctrine (MySQL), phpdocx

About project

RedReport is a system for generation reports on promotion, developed for Kelnik Studios


The RedReport project task was simple – to simplify and optimize the work of the promotion department for generating reports to clients as much as possible.

Kelnik Studios is one of the leading promotion companies in St. Petersburg. The number of its customers is vast and can’t be even measured by dozens. Every month for almost a whole week, nearly all of the department's human resources were occupied by only one task. The task was to prepare a report on each month’s work for each client. Everything (graphs, tables, descriptions, and conclusions) should be done in the corporate style and in particular Word document.

We divided this main task into components written below:

  • customer project management, the ability to fill in the information
  • project data collection from LiveInternet and Google Analytics
  • web versions generation of reports with tables, graphs, text data and the ability to edit all this easily
  • production of a Microsoft Word document in the corporate style of Kelnik Studios for sending to customers


From the begging, we agreed to work iteratively. There wasn’t a full statement of work, so we have been meeting with Lena Mikhailova (the head of the department), discussing and writing down every thought. After every gathering, we had a task list based on our discussion, which was followed by agreements. With that task list, we checked everything afterward. Step by step, we started to review ready functionality of the test version. And a few months later, when we launched the test version, the needs revealed during direct use were discussed.

Each iteration took about a month. The development of the basic test version took nearly 3 months, and approximately the same amount of time we worked on improvement. For a while, there was a short period of maintenance (fixing some bugs, a functional completion). In the end, we gave the project to the company that prudently hired a dedicated programmer for project support.

All work with the customer was organized in basecamp, which was accessed by several Kelnik employees and our entire team. For every stage, we fixed tasks in the form of a ToDo list. And as soon as the task was ready, we informed about it by leaving comments. Feedback, new ideas, requests, and bug reports also formed special lists of tasks. At any time, everyone could clarify any details, share information, and be kept informed for current progress.


The project was developed on Symfony, ver.2.3. We chose Doctrine to work with the base. Here is the list of used Symfony bundles:

  • friendsofsymfony/user-bundle – for user work organization, the division of access rights to employees and administrators
  • friendsofsymfony/jsrouting-bundle — for organizing dynamic actions in the report designer
  • knplabs/knp-paginator-bundle — pagination of project lists and reports
  • knplabs/knp-menu-bundle — system menu operation
  • doctrine/doctrine-fixtures-bundle — for test data organization
  • doctrine/doctrine-migrations-bundle — correct management of base structure changes, used by default in all our projects on Symfony2
  • avalanche123/imagine-bundle — image manipulations
  • sensio/buzz-bundle — connector for Buzz library used to collect data from external systems
  • fabpot/goutte — smart and easy data parsing
  • widop/google-analytics-bundle — work with Google Analytics API
  • oldsound/rabbitmq-bundle — queue operations for data collection
  • evercodelab/hipchat-monolog-bundle — Our bundle to send project bugs to work chat
  • exercise/htmlpurifier-bundle — data cleansing

For graphs generation, JpGraph library was used. We needed a custom solution that allowed us to generate images on the server side because after they should be exported in docx version of the report.

Of course, particular attention was paid to report creation in Microsoft Word format. We tried every single option that could be found. As a result, we chose a paid phpdocx library. But it wasn’t easy to deal with. During the work, we had to get into the source code of the library itself in some places to change certain styles. Perhaps, someday we will tell you about this experience separately. From now on, the project’s delivery, the library has been actively developing, releasing a new major version this year.

To accelerate development, we decided not to bother with the design. All of it was made on Twitter Bootstrap.


It wasn’t always easy, but due to our relentless effort, we managed to reach the goal. Moreover, we managed to give partial access to the system even before its final release. Since now, the work on creating a report was narrowed down to report generation by only one click.

We achieved the main goal and made easy to use and customized automation system for reports on promotion. From now on, there was no need to collect graphs screenshots, to copy-paste table data from a vast amount of sites and sources. You can check the credibility of the data by clicking on quick links right next to the graph or table.

Below are screenshots of some system screens.


A big thanks to Roman and Evercode Lab development team for professionalism and responsible attitude to the quality of their projects. Given that there wasn’t a full statement of work for development, a lot of unwritten ideas and a lot of things to discuss, the Evercode Lab specialists managed to take into account all the required amount of information, to suggest the most appropriate and modern technology and to implement all our ideas into a full-fledged working product with minimal effort on our part. This is particularly relevant considering the limited amount of time allocated.

I would like to emphasize the quality of our communication with the company. Sometimes the team captured even unspecified details, efficiency in solving urgent tasks, the possibility of regular meetings that helped to cover the whole range of valuable information. Special thanks to Roman for attentively treating us as clients.

Also, I want to note that we’ve always found the best solution without slowing down the process. That was very important for us considering the project complexity.

It seems that if Evercode Lab experts take up the project, they will do their best and make it as professional, high-quality, accurate, and soulful as possible.

Thank you! We wish you big and exciting projects in the present and the future.

Have some inquires?
Write to us and we answer you as sonn as it possible
Contact us
Other Cases
CRM for Cadfem CIS company
Evercode Lab team designed, developed and deployed CRM tailored individually for requirements and needs of Cadfem CIS company, number one distributor of ANSYS company engineering software.
CRM for Cadfem CIS company. Version 2.0
Improved user interface and enhanced system functionality. CRM was implemented in all company branches.