Transact GmbH, a company specialised in big data analytical software for the medical sector, approached us to build them a custom CRM tailored to their needs and specific use cases. A customer requirement was that it utilise the yii2 framework with which we conveniently have significant experience with. After a long period of getting to know their existing CRM and work-flow and analysing their new requirements we were confident that the framework could fill the role.
After the initial analysis we started to design the db schema that would support the application, mySQL was another customer requirement, and we ended up with approximately 120 tables for the core functions. Next up was the programmers and our software architect sitting down and fleshing out the application structure, what components were needed, what existing libraries and modules could be re-used and how they would all fit and work together.
Once we were confident that we had a good overview and structure in place, development started in earnest and continued at a brisk pace. Problems were of course encountered, either with the initial specifications and design or with implementation but in any case we aimed to find the most flexible and robust solution so that maintenance down the road wouldn't be a nightmare. From the very start we emphasised good communication with the client and tried to involve him in every aspect of design. Problem solving was no exception and in every case we found a solution that pleased both of us and even improved on the initial specifications.
Although development is still ongoing, the new crm named 'KUNO', already supports many novel and advanced features:
- A Customer in KUNO is regarded as a "company" or "organisation". Customers are organised hierarchically, there can be "parent" companies with "child" companies or departments, to an unlimited depth, each considered in KUNO as a separate customer and each with separate or common contacts and employees. Each customer can be assigned multiple customer types i.e. "customer", "partner", "carrier", "interested party" and each type is optionally assigned a time period; this customer was a "partner" from 2010 to 2015.
- The traditional serialised project/task/issue workflow has been abandoned in favour of a new project/ticket/ticket action approach. A client has projects assigned to him and tickets are a unit of work, a task. A Ticket Action is an action behind that task. A Ticket for example might be "Customer needs a new interface" and a Ticket Action might be "conference call with customer", "received email" etc. All this is infinitely nested in a hierarchy tree and documents and files can be attached to any "node" in the tree. Additionally if a ticket action was a form of communication, the actual communication is referenced in it, so when viewing a ticket action you can see the actual outgoing/incoming email or fax.
- "Documents" in KUNO are modelled to represent real-life physical documents and have a "formal" role in KUNO. There are multiple types of Documents, for example "Proposal", "Order", "Support Request" and each edit of a document is tracked and versioned. Transitions between document types is also tracked, for example if an order is created from a proposal, that link is stored and can be referenced.
- For creating and editing documents in KUNO, a new editor was built using Angular 2 that allows for drag-drop and sorting of items, and automatic update of sums and totals inside it. The user has a list available of pre-defined elements, free-text areas, predefined text blocks, products, tables for creating invoices and proposals etc. that can be dropped and manipulated inside the editor allowing for a flexible but structured "visual" creation of documents. These documents can then be exported to PDF, printed, emailed directly or even saved as HTML files that use Bootstrap for layout.
- Since Transact is a software company, it had very specific needs for tracking the licences that they sell for their products. We built for them a framework that allows tracking of licence keys, licence periods along with the associated support periods (each is a separate product), licence upgrades and site-wide enterprise licences.
"Standard" features such as in-app IM using xmpp, widgets, reporting, git integration and issue tracking are of course present in the current version or are being developed and we have a ton of ideas going forward.