Helping a supportive organisation become more streamlined with a rebuild CMS

The STEM Learning organisation aims to achieve a world-leading education for young people in science, technology, engineering and mathematics (STEM). It does this by supporting teachers, technicians and support staff through high-quality continuing professional development (CPD), resources and student enrichment opportunities. 

Until 2015, the various services were provided by different websites giving users a disjointed experience and using up valuable time. STEM Learning issued a tender to create a single website and new digital brand to bring everything in one place to much-improve user experience.

Code Enigma worked with the internal team at STEM Learning to create a new digital identity, create a single website containing all the key functionality that had been spread across multiple sites, and migrate data from those sites into the new site.

Why Drupal was chosen
When STEM Learning issued a request for proposals, there was no indication of a preferred content management system. What the client did have was a list of over 300 required features including various integrations with external systems, such as an events management system and video platform.

The project also had complex data migration requirements as it was bringing a range of data types from different websites into a single new site.

Using Drupal meant we could guarantee all of the requirements could be met, that this could be done in a responsive design, and that they would have a platform that could continue to be extended. We could also guarantee that Drupal could support a busy online community of teachers.

Project requirements, goals and outcome

The primary business goal was to produce a website that school teachers of STEM subjects would consider an essential resource. This involved amalgamating features spread across four separate legacy sites, and creation of a new digital identity. The new site had to contain almost all of the legacy content, including over 12,000 learning resources, 50,000 files, and 200,000 users. In addition to migrating the users it was also necessary to migrate their history: comments, forum memberships, and bookmarks.

Specific requirements included multimedia learning resource publication, course bookings and payments, special interest groups, forums, commenting, tagged lists, microsites, customisable landing pages, and personalised dashboards.

The project started in March 2015 and launched in December 2015, and now provides the team at STEM Learning with a single platform for engaging with and supporting teachers.

Post-launch and Ongoing development

Our relationship with STEM Learning did not end with the deployment of their new website, as they continue to develop and improve their digital offer. Our developers continue to work closely with STEM to deliver new functionality for their website.

STEM identified a need for a ad-hoc report generation, to track resource downloads and user registrations within any given time period. The user registrations also needed to be reported on daily, and the results exporting to an external service.

We worked with STEM to identify the requirements, which helped determine the number of individual reports we needed to create. We then built several unique reports, complete with a number of different criteria selectors available for each report.

Spam monitoring
As part of the original brief, we delivered functionality for special interest groups and also user commenting. Unfortunately, spammers began to target the STEM website comments and a need for spam moderation was born.

We built a set of custom dashboards which were integrated with an external spam filtering tool. This enabled STEM to see what had been automatically caught by the filter, mark any false positives in the list, and capture any spam that had not been caught.

STEM Directory
The STEM Directory was briefed as a database of enrichment opportunities offered by STEM businesses, either for bringing into the classroom or to in the real world.

We needed to come up with a new workflow for the directory activities, as these had to be moderated before being included on the directory. Along with this, a moderation area was created for easy publishing, and email notifications for the moderators and publishers were implemented as part of the moderation workflow.

A custom module was created to enable this to be delivered.

IA restructure
As the offer from STEM Learning grew they identified a change in their audience, which had expanded far beyond the initial teacher audience. After they had completed a review of the site, and discovered which audiences they now needed to cater for, we worked to refresh the Information Architecture of the site. We changed their sitemap and created several new pages to enable them to add their content.

Key modules/theme/distribution used:
Panelizer / Wysiwyg / Entity API / Panels / Facet API / Search API / Rules / Better Formats / Clientside Validation / Commerce / Shortcode / Flag / Message / Organic groups / Scheduler


Why these were chosen:

Content Creation
A particularity of the site is that normal users would be allowed to create content by and for themselves, which meant the user interface for content creation had to be as simple and small as possible. Modules like Better Formats and Clientside Validation were used to simplify a few things on the interface and to provide a better experience when working with forms.

Modules like Protected Node and Scheduler were used to allow editors to create password-protected nodes, and a basic scheduling of content publication.

Wysiwyg, Insert, Oembed, Shortcode and Shortcode Wysiwyg modules were picked to enrich the content creation experience by making it very easy to embed external contents within articles and site pages.

Finally, there’s quite some logic behind the scenes for several content types, that is controlled on a node-level basis. Field permissions provided a clean way to limit access to certain fields for selected roles.

Community Groups & Newsletters
In total, four different types of groups were needed (with some variations of public and private groups), with their own set of group roles and permissions. Organic Groups was the foundation to make all this possible.

For the newsletters and group content notifications, the Flag module was used to allow each user to have their own notification preferences for each group (immediate notifications, daily digests, or weekly digests). The content alerts were built on top of this single flag type, using the Message Stack, and the Message Digest to control the processing and amalgamating of contents to be included in message digests.

Microsites and landing pages creation tools
One of the key requirements was to give site editors the ability to create landing pages and microsites by themselves. Panels was used as the main structural module to control how sections and pages would be organised within the site, but also provided the foundation on which to build custom landing pages.

Panelizer was used to make it possible for different nodes to have different layouts, selected by editors, and to allow them to use a number of custom widgets (built as ctools content_types, and as instances of fieldable panel panes) to embed elements such as: Twitter feeds, Search boxes to redirect to search pages with pre-filtered options, latest contents from selected groups, or simply blocks of multimedia content.

Migration and integration with 3rd-party APIs
Migrate is instrumental for the site operation on a daily basis. Courses information (as well as other entities details) is updated daily on a 3rd-party backend, and custom migration scripts are used to retrieve these updates or additions every few minutes.

It should be noted that regarding the course booking (arguably commerce) side of the project, we created not a forum, but instead replaced it with "groups" of interests on topics.


As the site is heavy in terms of contents, views, panel pages, etc, some basic modules are used to help with performance, the most important ones being entitycache and memcache. The number of current nodes and current users is 500k respectively; plus a fair amount of custom entities.

Even though it required a few custom tweaks, Drupal has been coping very well with the amount of data involved. We’re proud to mention two custom modules we created to cope with this.

Node Access Rebuild Progressive; a utility module that provides an alternative mean of rebuilding the Content Access table.

Selective Watchdog Backend; a tiny module that allows filtering of watchdog entries for given backends, based on type and/or severity. Typical use would be to have all entries logged to syslog for performance reasons, but a few still logged to the database for easier debugging and/or filtering.

Community contributions:
Ckeditor Insert

Semantic Views

File Compressor field

Get in touch today and tell us more about what you need