09 October, 2017

One of the main reasons our partners choose to set up a CiviCRM application is its extended functionality developed specifically for managing all contacts, communications, records and activities of an organization in one place.

Yet one of our clients put a broader meaning into the concept single CiviCRM-based solution and requested new functionality that would allow users to manage their emails (check and read incoming emails, compose new messages, etc.) from the CRM instead of shifting between different applications.

In other words, the client requested an inbuilt email client for CiviCRM that would prevent the staff from wasting time by tediously switching between CRM and Emails.


... Read more
21 July, 2017

CiviCooP and Systopia and Palasthotel have been working together on CiviProxy and CiviProxy. This blog is a round up of what we have achieved in the last couple of days. The first thing we have achieved is that we had fun and a very good work atmosphere. We made long days and made lots of progress.

What are CiviProxy and CiviMcRestFace?

CiviProxy is a script to act as an application firewall for CiviCRM. It could be used to put your civicrm in secure network. CiviProxy is the gatekeeper to which external systems, such as your website, connect (this is for example when a user signs a petition on your website and the website submits this data to your CiviCRM). CiviProxy will make sure the call is from the right place (ip-adress) and is only doing what allowed to do. 

CiviMcRestFace (CiviMRF) is a framework to be used in other systems (such as your external website) to connect to CiviCRM. The framework itself is...

Read more
17 April, 2017
Filed under API, Make it happen

We’ve talked about and have made some progress on APIv4. Along with a native form builder and an improved UI, a new version of CiviCRM’s API was identified as a key objective our roadmap. While it may be the least glamorous of the three, it is an increasingly important and powerful feature within CiviCRM. And it’s time for an update.

Api version 4 represents an important leap forward for the CiviCRM platform. An api is an "Application Program Interface" used to create, read, update or delete information in the database. It is used by extensions, 3rd-party integrations, customizations, and increasingly by the core CiviCRM software itself. CiviCRM currently ships with api version 3, which has many excellent features but also some limitations which hinder development of api-based applications.

Broadly speaking, APIv4 will allow organizations using CiviCRM to:

  • Better...

Read more
22 May, 2016
By Eileen
Filed under API, Architecture

Busy sites have often encountered problems with deadlocks on the group contact cache. There were no less that 3 different code contributions to mitigate this problem put up for 4.7.8 and a number of other discussions have been going on in JIRA.


Merged into 4.7.8 are some improvements which we hope will mitigate this problem for those sites that experience it. JIRA is the primary source of information on this, however I wanted to share a brief overview.


The focus of the fix so far has been very much on deadlocks when clearing the contact cache. The reason being that these have been causing the most havoc. In analysing the problem it turned out that when someone edits pretty much anything the code looks for stale groups & tries to flush the cache. Depending on the size of the cache that can take a few seconds and it doesn't update the cache last flushed date until afterwards. So if the...

Read more
11 March, 2016

Our customer Werk met Zin (Network of job coaches in Flanders) has a Wordpress site and uses CiviCRM to manage their relations and cases. On their Wordpress site they allow users to register for some events, which they solve with the civicrm event info and registration pages.

However, they also allow an individual to request the start of individual job coaching with a form. This should end up in CiviCRM as a special activity with the fields on the website form as custom data. And the Wordpress website is on another server, although that would not make such a big difference. Anyway, we (as in CiviCooP) developed a specific solution that takes the data from the Wordpress website on server A and sends it to CiviCRM on server B. The solution has a Wordpress part and a CiviCRM part.

The Wordpress plugin

This plugin can be found at...

Read more
09 March, 2016
By totten
Filed under API, Architecture, Extensions

Automated tests are important when collaborating with other developers in a large project. Even if you focus your attention on a small piece of the puzzle, your piece depends on other pieces, and others may depend on you. There will be inevitable occasions when a change in one causes an unexpected change or break in another. Automated tests form the first line of defense, providing timely feedback so that problems can be addressed while the material is mentally fresh.

Testing CiviCRM is trickier than testing a basic library -- tests may involve system services (from Civi or the CMS), and CiviCRM developers may use different CMS's, file structures, and URLs. This problem can be mitigated by creating more configuration files (for each extension, test-suite, or installation), but that grows unwieldy with multiple extensions.

We've published some updated documentation and tooling to support tests in extensions. The remainder of this post assumes that you have...

Read more
06 March, 2016
Filed under API

Mark your calendars, the api team will be doing a webinar introducing api version 4 on Thurs March 24 12:15pm EST.

For anyone that's developed an extension or other integration with CiviCRM, you know how important a good api is. CiviCRM's api version 3 is incredibly useful - it's mature, stable, tested, robust, and even has a handy gui explorer that writes code for you!

Great as it is, api v3 is now 5 years old, and while it may well last another 5 years before being retired, it's time to think about the future. Over the last 5 years it's managed to build up a fair amount of cruft and oddities, which we keep around for the sake of backward-compatability. Bumping up to version 4 represents a chance to start with a clean slate, lose the cruft, and embrace new technologies and techniques.

As of this writing, api v4 is in its infancy. It supports a single entity (Participant, which I picked for no other reason than it's one of the cruftiest and worst-supported by...

Read more
22 February, 2016
By Eileen
Filed under API, Extensions

Using extensions on 4.7 I discovered that if you add entities but don't define them via hook you can get errors.


So, if you have an extension that defines entities you need a hook like the one below


 * Implements hook_civicrm_entityTypes.
 * @param array $entityTypes
 *   Registered entity types.
function accountsync_civicrm_entityTypes(&$entityTypes) {
  $entityTypes['CRM_Accountsync_DAO_AccountContact'] = array(
    'name' => 'AccountContact',
    'class' => 'CRM_Accountsync_DAO_AccountContact',
    'table' => 'civicrm_account_contact',
  $entityTypes['CRM_Accountsync_DAO_AccountInvoice'] = array(
    'name' => 'AccountInvoice',
    'class' => 'CRM_Accountsync_DAO_AccountInvoice',
    'table' => 'civicrm_account_invoice',
09 February, 2016
Filed under API, Extensions, WordPress

Our customer Werk Met Zin (platform of independent 'job' coaches and trainers in Flanders) use a Wordpress site as a front end and CiviCRM as their back end. There is now one specific instance where an individual can apply for a series of coaching sessions on the website. This has to be passed to CiviCRM and rather than updating the website to Drupal we are passing the data from the Wordpress site to CiviCRM. The company that develops the Wordpress website knows nothing about CiviCRM (and want to keep it that way.) Any remarks and/or suggestions are very welcome, and obiously we will share the solution with the CiviCRM community once it is complete. Here is what we plan to do (and thank you to Werk Met Zin for funding the development and us at CiviCooP for developing.....):

  • create a Wordpress plugin that catches the form (with the save_post action) and...
Read more
19 January, 2016
By Eileen
Filed under API

Someone really did give me a kitten for Christmas once. He was cute and funny and unwillingly cuddly. I got a lot of enjoyment out of him, not to mention years of semi-safe passwords. He also chased away our existing cat and eventually we couldn't look after him as our living circumstances changed. To his credit the giver of the kitten was honest that he didn't actually have any other way of looking after the kitten and didn't blame us when the kitten, grown to a scrappy cat, disappeared under a cloud of neglect.


I mention the kitten because I am still recovering from Christmas (I know it's almost been a month) and there is some sort of cyclic track running through my mind merging two quotes “CiviCRM is free as in kittens not free as in beer” with “Kittens are for life not just Christmas”. Sometimes my mind just munges it all down to “free beer” and “Merry Civimess” but I feel like something worth saying is trying to free itself from the brain-mush.



Read more