CRM Core

CRM Core is a comprehensive contact relationship management system for Drupal providing contact management (individuals and organizations), activity tracking, duplicate detection, and user account synchronization.

crm_core
245 sites
40
drupal.org

Overview

CRM Core is a powerful and flexible CRM (Customer Relationship Management) system built natively for Drupal. It provides a complete framework for managing contacts, tracking activities, and maintaining relationships within your Drupal website.

The module supports two primary contact types: Individuals (people) and Organizations (companies, groups). Each contact type can have multiple subtypes (bundles) with custom fields. Contacts support revisions, ownership tracking, and publishing status.

CRM Core includes an activity tracking system that allows you to record interactions with contacts such as calls, meetings, emails, and notes. Activities can be linked to multiple participants and support custom activity types through a plugin system.

The module also provides a sophisticated duplicate detection framework with configurable matching engines. The default matching engine uses field-by-field comparison with weighted scores to identify potential duplicate contacts.

User synchronization functionality allows you to link Drupal user accounts with CRM contact records, enabling automatic contact creation when users register and displaying contact information on user profiles.

Features

  • Contact Management: Create and manage Individual and Organization contacts with customizable types, revisions, and custom fields
  • Activity Tracking: Record and track activities (calls, meetings, emails, notes) linked to one or more contacts
  • Duplicate Detection: Identify potential duplicate contacts using configurable matching engines with field-by-field comparison and weighted scoring
  • User Synchronization: Link Drupal user accounts to CRM contacts with automatic contact creation and profile display options
  • Contact Merging: Merge multiple contacts of the same type, preserving selected field values and migrating related activities
  • Primary Fields: Designate primary email, phone, and address fields for each contact type
  • Revision Support: Track changes to contacts over time with full revision history
  • Views Integration: Pre-configured Views for managing individuals, organizations, and activities
  • Extensible Plugin Architecture: Add custom activity types and matching engines through Drupal's plugin system
  • Granular Permissions: Per-bundle (type) permissions for create, view, edit, and delete operations

Use Cases

Customer Database Management

Use CRM Core to maintain a database of customers. Create an 'Individual' type called 'Customer' with custom fields for customer information. Track customer interactions using Activities. Use matching engines to prevent duplicate customer records.

Organization Contact Directory

Build a directory of partner organizations, vendors, or clients. Create Organization types for different categories. Add contact individuals associated with each organization using reference fields.

User Profile Extension

Enable CRM Core User Sync to automatically create contact records for registered users. Users can then edit their extended contact information through their profile. Useful for membership sites or customer portals.

Activity Logging for Support

Track support interactions with customers using Activities. Create activity types for 'Support Call', 'Email', 'Meeting'. Link activities to customer contacts to maintain a complete interaction history.

Lead Deduplication

Import leads from multiple sources and use CRM Core Match to identify duplicates. Configure matching rules based on email, name, and phone fields. Use the merge action to consolidate duplicate records while preserving important data.

Membership Management

Manage member contacts with custom individual types (e.g., 'Member', 'Prospect'). Use user sync to link member accounts with contact records. Track membership activities and communications.

Tips

  • Use the 'primary_fields' setting on contact types to designate which email, phone, and address fields should be treated as the primary contact method.
  • When merging contacts, carefully select which field values to keep - the merge action allows choosing values from any of the contacts being merged.
  • Configure matching engine thresholds carefully - too low may create false positives, too high may miss actual duplicates.
  • For large sites, consider disabling 'Load contact related to the current user' in User Sync settings if contacts have many fields to avoid performance issues.
  • Create different Individual types for different purposes (Customer, Employee, Vendor) to keep permissions and workflows separate.
  • Use Views Bulk Operations with the merge contacts action to efficiently clean up duplicate records.
  • Activity types can have custom plugins for specialized behavior - extend ActivityTypePluginBase to create custom implementations.

Technical Details

Admin Pages 13
CRM Core /admin/structure/crm-core

Main administrative hub for CRM Core structure configuration. Provides access to contact type management, activity type configuration, and related settings.

CRM Core Configuration /admin/config/crm-core

Configuration overview page for all CRM Core settings including global settings, matching engines, and user synchronization.

CRM Core Settings /admin/config/crm-core/settings

Configure global CRM Core settings including the optional custom theme for CRM pages.

Individual Types /admin/structure/crm-core/individual-types

Manage individual (person) contact types. Create, edit, and delete bundles for categorizing individual contacts (e.g., Customer, Employee, Vendor).

Organization Types /admin/structure/crm-core/organization-types

Manage organization contact types. Create, edit, and delete bundles for categorizing organization contacts (e.g., Company, Supplier, Partner).

Activity Types /admin/structure/crm-core/activity-types

Manage activity types for recording interactions with contacts. Each type can have custom fields and a specific activity type plugin.

Matching Engines /admin/config/crm-core/match

Configure matching engines for duplicate contact detection. Create matchers with field-by-field rules and weighted scores to identify potential duplicates.

Add Matcher /admin/config/crm-core/match/add

Create a new matcher for duplicate detection with configurable threshold, return order, and field matching rules.

User Synchronization /admin/config/crm-core/user-sync

Configure how Drupal user accounts are synchronized with CRM contact records. Set up rules for automatic contact creation and display options.

CRM Core Dashboard /crm-core

Main CRM Core interface showing overview and quick access to contacts and activities.

Individuals /crm-core/individual

List and manage all individual contacts. Uses a Views-based interface with bulk operations including merge contacts.

Organizations /crm-core/organization

List and manage all organization contacts. Uses a Views-based interface with bulk operations.

Activities /crm-core/activity

List and manage all activities. View interactions recorded across all contacts.

Permissions 25
Administer Individuals

Allows users to perform any action on Individuals.

Create Individuals of any type

Allows creating individual contacts of any bundle type.

Edit own Individuals of any type

Allows editing individual contacts created by the user.

Edit any Individual of any type

Allows editing any individual contact regardless of owner.

View own Individuals of any type

Allows viewing individual contacts created by the user.

View any Individual of any type

Allows viewing any individual contact.

Administer Organizations

Allows users to perform any action on Organizations.

Create Organizations of any type

Allows creating organization contacts of any bundle type.

Edit own Organizations of any type

Allows editing organization contacts created by the user.

Edit any Organization of any type

Allows editing any organization contact regardless of owner.

View own Organizations of any type

Allows viewing organization contacts created by the user.

View any Organization of any type

Allows viewing any organization contact.

Administer individual types

Allows the user to edit the types of individuals such as Customer.

Administer organization types

Allows the user to edit the types of organization such as Supplier, etc.

View all Individual revisions

Allows viewing revision history for all individuals.

Revert all Individual revisions

Allows reverting to previous revisions for all individuals.

View all Organization revisions

Allows viewing revision history for all organizations.

Revert organization revisions

Allows the user to revert organizations to previous revisions.

Administer activity types

Allows users to configure activity types and their fields.

View CRM dashboard

Allows access to the CRM dashboard.

Administer matchers

Allows creating and configuring matching engines for duplicate detection.

View matching engine rules settings

Allows viewing matcher configuration without editing.

View match information

Allows viewing duplicate match information for contacts.

Administer User Synchronization

Access to configuration pages for User Synchronization.

Edit own contact information

Allows user to edit his/her own contact record from the user profile form.

Hooks 3
hook_crm_core_individual_delete

Responds when an individual contact is deleted.

hook_theme

Defines theme hooks for CRM Core entities.

hook_entity_predelete

Responds before entity deletion to handle related data.

Security Notes 4
  • Most administrative permissions have 'restrict access' flag requiring careful assignment.
  • Per-bundle permissions allow granular access control - users can be restricted to specific contact types.
  • The 'edit own contact information' permission should be granted carefully as it allows users to modify their linked contact record.
  • Matching engine configuration should be restricted to prevent unauthorized access to duplicate detection rules.