The following questions get asked again and again for CRM Core, so here are some answers:
Is CRM Core a CRM system?
CRM Core is a tool that allows people to build CRM systems in Drupal. It creates some very interesting possibilities for how to interact with users and contact information, that can include building a complete CRM system or just adding some contact management features to a Drupal site.
Why build a CRM system in Drupal?
There are a few reasons:
1) Drupal is a content management system. Traditionally, if you wanted to manage contact information collected through your site, your best option has been to integrate with an external CRM system. The costs of integration can be high and the resulting system can be hard to maintain over time. This is an area dying for innovation and CRM Core is a new approach to the problem.
2) There are a lot of modules that collect contact information. There is no central place to store that information. This creates needless data silos. CRM Core addresses that problem by providing module developers a common repository for contact information.
3) Drupal has all these wonderful tools for interacting with users. Wouldn't it be nice to also allow them to interact with people who have not created user accounts? CRM Core enables this kind of interaction through its integration with other major tools and features in Drupal.
4) Because it's a pretty cool thing to do. The developers of CRM Core have been fighting battles with external CRM systems for a long time. They could see the need for this developing at least 8 years ago and wanted to share their ideas with the community.
So what does CRM Core actually do?
It allows Drupal to track contacts, activities and relationships. This means it is concerned with people, what has happened with those people, and which ones of those people know which other people. It also gives you ways to interact with those people using other contributed modules in Drupal and third party services.
But it's a lot more than that, really. You should install it and take it for a test drive. Read the rest of this handbook to find out more.
Is it stable?
The 0.9 release is the first stable version of CRM Core. The developers have put a lot of time into thinking through various use cases and making sure CRM Core is not going to break your Drupal site. There is an issue queue and they are very active in it.
Version 1.0 is under development as well, which will introduce matching engines into the mix. At that point, it will not only be stable, it will be feature complete.
Why not just use profile2? Isn't that what it's built for?
Sure, use profile2 if all you want to do is track contact information associated with user accounts. It's really good at that.
Use CRM Core if you need to do that plus deal with anonymous users, especially ones that are not linked to user accounts. Also, use CRM Core if you want to interface with external systems for tracking information about people.
What's this you say about anonymous users?
So, one of the weaknesses of any content management system is its inability to deal with anonymous users (AUs) as anything more than a single unit. When an AU submits information to a site, there's no continuity between that visit and any subsequent visits.
This leads to a lot of fractured information about user behavior that could actually be pretty valuable if you could look at it all at once. Think about the webform module: it creates its own tables that store information people submit to the site, but are there any other modules that can manipulate that information and feed more into it? It's not common if it does happen.
CRM Core provides a centralized tool for managing information about people. It is designed to act as a central repository for information about people that can be used for all sorts of purposes. It shines as a tool for generating contact forms, handling user registration, storing information about purchases, keeping a list of petition signatures, etc.
What is a matching engine and why is it in CRM Core?
CRM Core includes a tool called a matching engine. At the time of this writing, it is still in the development branch, but will be released as part of CRM Core 1.0. Matching engines will be fully documented in the handbook once they become part of a stable release.
Matching engines are used to identify duplicate contacts in CRM Core or external systems. They have the ability to identify duplicate contacts, inject data into contact records, and register themselves within a common management interface.
Developers were thinking about a lot of authentication and identification schemes during the original build out of CRM Core. One use case that kept coming up is the fact that a good CRM system is going to be something that can identify a person regardless of where that contact data resides. Matching engines provide a uniform structure for finding people in various systems, which can include CRM Core along with other databases you may have. They enhance the contact creation process in some important ways that are not easily handled through the standard Drupal hook structure.
Matching engines are also capable of injecting data into a contact when it is being created or 'matched.' For instance, let's say you have a list of members that lives in an external system. CRM Core can use a matching engine to find the right member record when a new contact record is created, and it can also store data about the source of the record and maybe a member id as part of the contact record. It can also prevent a new record from being created when a duplicate is identified, and create associations with other entities after finding a match.
You would have to build your own matching engine to do all this, CRM Core Match is really just the framework to make it easy to do it. We see some big potential for how they can be used.
Does it work with [ insert module name ] module?
CRM Core is designed to work with Drupal and works well with a variety of other modules. All of the information it tracks is entity-based. As long as your module works well with entities, CRM Core can probably work with it.
Why does CRM Core provide its own tools for configuring a custom theme for the CRM section? Couldn't I just use the context module instead, or a pre-processing function in my theme?
These are 2 related questions that come up often.
First off, the reason CRM Core allows administrators to override the theme is simple. The UI for interacting with contacts does not always fit conveniently into the front end or the back end of the website. Think about it for a minute - if you are working with contacts, do you really want people to be looking at links to your about us page or the configuration section of the administrator?
Secondly, the reason CRM Core does this itself instead of requiring contexts is that the developers did not want to create any other dependencies. The need for a separate UI comes up often enough that it's an important features for site administrators. There's no reason you have to use this instead of contexts, but it's nice to know you don't have to.
Why another CRM system? There is already CiviCRM, Redhen, the Party module, Salesforce integration, Salsa, SugarCRM, etc.
Diversity is a strength of Open Source. Each of the above CRM systems has its own focus and own use cases. CRM Core collaborates with other projects as it makes sense - for instance, you can easily use contact types from RedHen in CRM Core, you can easily synchronize data between CRM Core and Salesforce, you can easily get CRM Core working with the party module.
That said, each of these other modules does a good job at what it does, and there are no clear lines between one and the other. CRM Core does a good job at what it does, which is providing the tools for building a CRM system. There will be some overlap, which will become less significant over time as each system matures.
How can I connect CRM Core with Salesforce (or any other external CRM system)?
CRM Core is built to allow it to interact with other systems the same way anything else in Drupal would.
You can connect CRM Core with Salesforce by using the Salesforce Suite module and for example by exporting the "contact" entity to Salesforce. Simple. With a little hacking, you can get activities and relationships in there as well.
For other CRM systems, understand that CRM Core stores all its contact information as entities. It's pretty easy to make that information accessible to other systems, or to import content from other systems.
How can I import data from CiviCRM?
One good way is to export contact information into CSV files, then use the feeds module to import the data.
Also see: Importing Data with CRM Core.