Published
Thursday, March 10, 2016 - 15:49
Written by

CiviCRM Entity is a Drupal module which greatly enhances CiviCRM integration with Drupal. This module exposes many CiviCRM entities as true Drupal entities. That means that almost any module can use Drupal entities. As a result, these modules can access and manipulate CiviCRM data directly from within Drupal via Drupal’s Entity API. This includes many commonly used modules such as Views, Rules, Search API, Entityqueue, Entity Reference, and many more.

CiviCRM Entity was originally developed by Eileen McNaughton from Fuzion. Skvare was an early adopter of version 1.0 where we implemented the Rules integration and quickly realized that this was a powerful and essential tool for most CiviCRM implementations that integrate with Drupal. We reached out and collaborated on the development towards the 2.0 branch, with features that were important to Skvare’s clients.

Released last year, the 2.0 branch of CiviCRM Entity has many new features including:

  • almost 20 CiviCRM entities, such as Contact, Membership, Event, Contributions, exposed as Drupal entities

  • Native Drupal create/edit/delete forms for CiviCRM data

  • Native Drupal view pages of CiviCRM data

  • Standard Drupal Manage Fields and Manage Display forms

  • Ability to add Drupal fields to CiviCRM data

  • Display Suite integration

Many of the CiviCRM Entity features are being actively used with large-scale CiviCRM deployments such as the Salvation Army Echelon or the University of Minnesota Crowdfunding Platform.

Future Development

Skvare is now an active developer and maintainer of the project. We are in the process of coordinating feature requests that will be added to the 3.0 branch.

We use, build, and develop solutions with CiviCRM Entity on most of our client websites, and we’ve gotten a lot of feedback. We also keep our ear to the ground for how other people are using it, and this blog article is part of that. The feedback we’ve gotten is, “this is awesome, can I have more, and better!”

What clients now see, love, and want more of, is the ability to create Drupal native themed, responsive view and edit forms. No more figuring out where to edit that one line of custom css code in a CiviCRM-specific template. No secondary system interface for end-users to learn. It’s as simple as building a Drupal webform and concurrently more powerful than the out-of-the-box CiviCRM features. All accessible as a site-building task without the need for any custom code.

A common client request is for volunteers and employees for a CiviCRM form create or edit CiviCRM data without user access to the CiviCRM backend. Oftentimes these volunteers are updating data such as participant attendance statuses at events, with a mobile phone or a tablet. Similar to the built-in profiles, but with consistent theming, out of the box responsive design, broader data access, and much tighter integration of the underlying business logic.

This year, Skvare is excited about adding more features and further improving the integration between CiviCRM and Drupal.  We have many ideas, we have many requests, and as we look into the future, we see this module being one of the most important CiviCRM-related modules for both implementors and end users.

Proposed Features include:

  • Improve Forms with better validation, widgets and formatters for CiviCRM FK reference fields, improved metadata, inline entity forms for FK reference fields, default layouts

  • Better custom field support -- be able to edit multivalued groups, and organize them on edit forms and in Rules in their field groups.

  • Open up more CiviCRM entities, such as Country, CustomValue, and those provided by Extensions, as Drupal entities

  • Improved Views support -- field, filter, sort, relationship handlers for all entities not exposed by CiviCRM Core

  • CiviCRM Profile Integration -- make them entities!

  • Native Drupal Contribution pages

  • Native Drupal Event registration pages

  • Native Drupal CiviCRM configuration pages

  • Deeper Drupal Commerce Integration, allow contributions, memberships, and event registrations to happen with standard Drupal Commerce workflow

We’ve seen the impact and success in real-world implementations. We’re motivated and  want to solicit feedback from the community.

  • Have you used the module before?

  • In what configuration?

  • Do you like a specific feature?

  • Are there specific features you wish the module had?

  • What ideas for the future do you have?

How can you help?

Try it out.

Give feedback on this blog article.

Join the discussion in the Future Development issue

Develop yourself, fork Eileen’s github repo.

Hire Skvare to add the specific feature you want, now. We’ll put it back into the general release and continue building more functionality. Clients have already committed funds to further extend this project. Those who fund development guide the priorities, milestones, and timelines.

Talk to Mark Hanna, CiviCRM Entity maintainer and new development lead.

Want to see a Drupal 8 version sooner rather than later, contact us to make it happen.

Be on the lookout for a set of blog articles showcasing features and site building techniques that Skvare has implemented, and the use cases that we’ve gathered as we aim to further extend this module. We’ll also be presenting on this topic at the upcoming CiviCon 2016.

Comments

This is great work. Mark took something I started to places I never even knew about!

Indeed this is great, seeing this project really blossom. I look forward to figuring how the Fuzion team can best work in with you on this.

It's great you're looking at improving support for relationships in views. We'd seen a bit to suggest that was there and thought we could leverage it to produce proximity searches in views on Civi contacts and their addresses. Unfortunately we didn't work on enhancing relationship support as our budget was very limited at the time.

I love that you are considering support for extension entities. Documentation including examples for that will likely be important.

Thanks!!

Hi Mark - eileen is off radar for a bit. I just wanted to see how far I could go with creating CiviEvents directly by creating a Drupal node. Rules does the job (almost) but the one bit I don't get is that I want to be able to nominate a CiviEvent template id as a node field, and have that trigger the event creation (since that means a lot of other event data gets preset).

Currently the Create new entity settings in the Rule offers me "IS AN EVENT TEMPLATE" and EVENT TEMPLATE TITLE but of course that isn't what is required. What I need is the equivalent of the From Template field that a New Event offers us in Civi. Any thoghts? Or am I going entirely down the wrong route and is creating a civi event from a drupal node a known but diffferent path?

Any thoughts? I may push this in to StackExchange too.

Great question.  I do think the appropriate place for this discussion would be a support request in the CiviCRM Entity issue queue on drupal.org. Not headed down the wrong path, you just need a bit of help. There is no automagic rules "Create event from template" action, although wouldn't it be nice if there was...

If I understand what you are trying to do its this:

1) Create a node, which references a event template via an Entity Reference field

2) on Node save, a Rule would use that value, and create a new Event, based on that template

So what you'd need to do is Load the event template entity with a Rule action "Fetch entity from id". Then create your new event, and use tokens to populate the new Event values from the loaded event template values.

If I'm not understanding what you are trying to do, let me know and I'll try again.

If you'd like to see an automagic rules action "Create event from template", consider sponsoring its development, we can take that discussion offline.

Also - might be keen to dip our toes in to proximity search - anything you have looked in to yet?

Sure, this can be done, although its a broad topic, and I can think of a number of different ways to accomplish this. It can also get a tad complicated depending on what you are trying to do.

First I'd ask, can you define the specifications a little more for what you are wanting to proximity search?

I really love this module: https://www.drupal.org/project/geofield , use the 2.x version

often used in conjunction with this: https://www.drupal.org/project/geocoder

Which has a nice geocoding API BTW. I've thought about this before, and what would be really neat, is to write an extension to geocoder, that could dig into a Event or Contact address, and either use the address, or if Civi has geocoded it already, use the long and lat. A general solution would be really neat (development of a ctools plugin for geocoder), but you can do specific things with its API.

Lets pretend that your use case has to do with Events, perhaps you reference a CiviCRM event, from a "Event" content type.

You can write a bit of code that populates the geofield either manually, or using the geocoder API, from the address that the CiviCRM event references (on node save).  Once you have the data in the geofield, its a site building job to build up a View, using whatever map technology you prefer. I like Openlayers, some people like Leaflet, both are good. Its the geofield module that provides the proximity search capability in Views as a filter.