Were having a bit of a snow day here in Ontario and while I was gazing out the window in my office I started to think about the State of CRM, and more specifically what is CRM.
You see my day job focuses on building on top of CRM. Adding new features, integrating into from Disparate sources and hooking in new ways to get to the data such as Mobile.
Because so much of what I see is in extending the CRM package I have formulated what a CRM system really is, and that is a Base Application Framework. It a nut shell it is a tool to build upon processes and functionality that is distinct from company to company.
Now there is much to be said for the OTB processes that are provided by the vendors, as they either provide the glue or a jump start to a more relevant feature set that works for company ABC. So where does this lead me to you ask …
Given that IMHO CRM is an application framework and the goo on top plays second fiddle, it seems that there are more opportunities for introducing the “CRM’ into Organizations. If some of the features are pealed back into optional libraries and the CORE is provided businesses application development can be quickly jump started where the cost of the licenses of the CRM are justified by the reduction of labour and the consolidation of the QA to a single organization.
Now to really deliver on this a ‘CRM’ application framework needs to deliver;
Any CRM system should allow access to functionality if connected or not connected to the central repository.
Simplified GUI development
We have come a long way in the development of rich UIs. CRM applications should embrace this allowing the WSWYG development of forms, controls and other UI elements.
Modern Language Support
Support development using either .net languages or Java. My personal preference would be .net.
Windows and Web
Capability to target either windows or web clients and handle the rich functionality each provides. There should be some centralized configuration that can be shared between the platform, but in the end each platform should have extensions that can allow for a more powerful end user experience.
WPF anyone, Silverlight, AJAX …
True mobile integration should be provided through all layers including customization, deployment, data synchronization. Generally mobility is a second class citizen strapped on to the system. OTB support would ensure a tight coupling and the reuse of infrastructure.
Full Security (record, field, UI Elements)
Security should not be missed. Record and Field level security is a must. Extend that with a custom security provider where a organization can determine the role, user makeup and the row level rules and life is good. UI should also have security capabilities where fields are locked down. The capability to also detemine the functionality of fields that should not be shown to the end user. An example would be either hiding the field or displaying a nice watermark on a field that cleanly states ‘N/A’ instead.
Capability to centrally define rules on entities is key to having the distributed environment. However I do believe that the rules can be also moved up the some of the richer client levels. Specifically where you have off-line windows clients or mobile clients it is good to pre-validate the data entered and inform the user at time of entry.
Workflow and a workflow engine will allow not only the developers on the system but also the business users to define processes to help the day to day usage scenarios of the system. Any workflow designer needs to meet the needs of the target audience and should not provide too much noise around getting the job done.
Team Development support
We are now at a point in our development history where there is a rich choice of Source code systems available. Integration into these systems providing the base project items as files moves everything out of the CRM database and into the shared SCC repository. What this does is finally separate the business data from the customizations. I have developed solutions that store plug-ins and customizations in the database before but would think anything I do in the future will be file store and SCC based.
Finally, the CRM system is a framework but will never be a development environment. VS and Eclipse provide rich developer tools and have a greater focus on developer productivity. Add to that the rich ecosystem of add-ins and it just makes sense to piggy back of one of these environments. Though the CRM application should provide all of the base customization services these external tools will provide greater possibilities of extension.
- Expose a public Extensibility API
- Provide standard methods if introducing code into the application
- Provide deployed output in several modes (release and debug)
- Provide replaceable base classes for any code generation
- Provide replaceable control classes for any code generation
Now package the base framework, development and Deployment services and a new customer base can be established. Not based on the Premise of delivering CRM but on getting the business needs up and running faster on-top of a dependable framework.
Disclaimer – I work on SalesLogix CRM by Sage and the platform does provide a lot of what I have discussed. What would be great if there was a way to ‘Library’ function sets and not include them in a distribution.