The Dovetail Blog

Food Standards Agency Northern Ireland launches MenuCal food analysis system

Mossy took a trip to Belfast this week to attend the launch of MenuCal by the Food Standards Agency in Northern Ireland.


Julie McKinstry-Harvey, Senior Dietary Health Advisor at the Food Standards Agency, commented on the launch: “We have developed MenuCal to support NI food businesses to be compliant with current legislation on allergens, and also help them influence consumers on making smarter, healthier choices when it comes to eating out or buying food to take away.  

Read more about the launch here.

Mossy has been the lead developer and Greg, Tomás and Martin have all worked on the system which is built on ASP.Net, MVC and SQL Server.

See the case study on MenuCal's launch by the Food Safety Authority of Ireland.

Register of Lobbying and Irish Rail Fixed Penalties

We had a busy start to September with two new systems going live.

The first was the new Register of Lobbying ( which opened for registration on September 1.

This system was built to implement details of the 2015 Regulation of Lobbying Act. It allows people and organisations who engage in lobbying to register and publish details of their lobbying activities.



Mossy, Rafal, Kit and Martin have been involved in this project, working with a great team from the Standards in Public Office Commission. We developed it using using ASP.Net, Angular 1, SQL Server and Lucene.Net.



The second system to go live last week was the new Fixed Penalty Notice System for Irish Rail. This is an internal system which Irish Rail use to manage Fixed Penalty Notices.  John and Martin worked on this system and it will shortly be extended to allow online payments. 

This solution was based upon similar systems which Dovetail developed for LUAS and Dublin Bus. It is written in ASP.Net and uses SQL Server.

Flexing our CSS muscles


I just recently started working on a small pet-project to keep sharpening my skills on the whole stack in my free time. One of the things I decided to go with is angular-material. It's an official Angular implementation of Google material design and it uses flexbox layout instead of the grid layout we're used to seeing in frameworks such as Bootstrap or Foundation. We talked a bit over it and since we will most probably use angular on most of our future projects, we decided to keep an eye on the whole thing so we could start using it when it feels production-ready.

We've outgrown our office, so we've taken a second room in GEC

Dovetail has grown in employee numbers quite quickly over the past 2 years. As a result we've run out of desk space in our GEC based office, so we've rented a second room, right next door. Four of the Dovetail team (myself included) have now moved into the new room.

We discussed different names for the new room, initially landing on dovetail 2. This name was not satisfactory as it inferred that we were a lesser side of Dovetail (not even remotely true!!), so we looked to geography and our two rooms are now called "Dovetail east" and "Dovetail west". 

We've been settling in nicely over the past few weeks, the east is a little quieter as there is less equipment and phones ringing, but we do miss out on a bit of the usual Dovetail banter. It's okay though, the Nespresso coffee machine is still in the west, so we visit regularly to catch up on the daily gossip. 

Dovetail offices, dovetail values

Having 2 rooms has taken a little getting used to, but it's a part of growth and a sign of exciting times ahead for Dovetail as we adjust to a bigger team.

IKEA customers are Swiping across the UK

One month has passed since the launch of the new Swipe A Surprise mechanic in 16 Ikea stores (UK and IE), and there are only two weeks left until the end of this phase. If you want to get your hands on a free gift from IKEA just join IKEA FAMILY and make any purchase in your local IKEA store!


This update arrives late on the blog because we have been busy actively tuning the system to improve the customer experience every day.

This new version of Swipe A Surprise works in a very different and more user friendly way. The interaction required by the user has been reduced to 2 simple actions: Scan and Print.

Every IKEA FAMILY Kiosk has been upgraded with a 2D barcode scanner, allowing customers to scan the barcode printed on their till receipts. The kiosk then shows the prize and allows the customer to print a voucher. So simple and so quick - over 122,000 prizes have been activated so far!

Mossy kindly showing a tasty voucher!

Here's Mossy holding a tasty voucher!

Olá Dovetail

Hello, my name is Murilo André da Silva and the I'm the newest international addition to Dovetail. I've been working here part-time since May while I was finishing my English studies and also bringing Coxinhas to the big bosses. In the end they liked the "Brazilian fried chicken things" so much that they decided to hire me.

I'm from a small (by Brazilian standards) city in the south of Brazil called Foz do Iguaçu. It is famous for the Iguazu Falls:


Before coming to Dublin I was working for SOFT-TI Informática as a Web Developer. Most of my experience comes from working with the .NET Framework, specially with ASP NET MVC applications. 

I'm really enjoying my time here at the company and I feel that the future here for me is very promising.



Changeover day in the fishtank

We've had a lot of fun with Pinchy the crayfish over the years. He amazed us with his prehistoric anatomy and we were fascinated by his molt. We laughed at his antics as he clambered around the tank. And he really challenged us when he laid eggs (though even that event failed to correct our casual use of masculine pronouns).

Look how big he got:

Pinchy in his travelling clothes

Unfortunately Pinchy's leading attributes were his appetite and his hunting. He ate all our fish bar two insomniac zebra danios. Since the loss of our pleco the tank became a quiet, overgrown, sad looking place - one into which we were unwilling to condemn any more fish.

Well that all changed this week. Goodbye Pinchy, hello bala sharks!

undefined undefined

Thanks to Shauna's Pet Shop for helping find a home for him.

p.s. I see he's on Shauna's Facebook page currently and somebody is talking about gumbo...Pinchy about to leave

Setting up a SMTP Server on an Azure Virtual Machine

Today I had an interesting challenge. It was to set up a SMTP server on an Azure virtual machine for a client who were moving to the cloud.

As we all know Microsoft likes to lock down or change certain settings on us when using their cloud services so hopefully this guide will help someone when setting up their SMTP on an Azure VM.

Here is the steps I needed to do in order to get SMTP server working on the Azure virtual machine.

  1. Install SMTP via Server Manager > Manage > Add Roles and Features
  2. Click Next until you reach "Server Roles"
  3. Tick Web server
  4. Click Next
  5. Tick SMTP
  6. After Installation Open IIS 6.0 Manager
  7. Right Click on SMTP Virtual Server and click properties
  8. Pick the VMs local IP address (Should be only one in drop down)
  9. Click Access Tab
  10. In the "Connection" and "Relay" screens select "All Except the list below"
  11. undefined
  12. Click Apply and OK
  13. Go to Services
  14. Right Click "Simple Mail Transfer Protocol"
  15. undefined
  16. Set the startup type to Automatic
  17. Click Apply
  18. Stop and Start the Service
  19. Click OK
  20. In your Web configs ensure to change any SMTP Server values from "localhost" to the name of the Azure VM e.g. "DovetailExampleVMName" This is the name you used when you first created the Virtual Machine on the Azure portal.
  21. Test your SMTP server

Hope this helps some people who are having trouble porting some websites over to an Azure virtual machine that used SMTP on their server. 

Rube Goldberg on the keyboard

Occasional Dovetailer Garrett Heaver recently asked what the lights are for on my monitor stand. This post is to answer him.

I annoy myself by accidentally hitting the caps lock key so I normally remove that key from my keyboards. (I think I may have actually learned that trick from Garrett). Recently I happened to have an Arduino Trinket lying around and some switches so I came up with a rather ridiculous replacement :)


There is a little video here on Youtube.


SSL Certificates, .NET Users MVC & The Return

SSL Certificates

I love SSL certs the green banner they give give a nice since of security when shopping online. But this week I was installing an SSL certificate and I encountered a very strange error "CertEnroll::CX509Enrollment::p_InstallResponse: ASN1 bad tag value met." 

The error occurred when I tried to install the certificate via IIS.

To fix the problem I had to do the following:

  1. Click Start, click Run, type mmc.exe, and then click OK.
  2. Click File, click Add/Remove Span-ins.
  3. Select Certificates, and click Add, and then click OK.
  4. Select Computer account, and click Next, and then click Finish.
  5. Click OK.
  6. Expand Certificates (Local Computer), and Personal, and then Certificates.
  7. Right-click the certificate, and then click Properties.
  8. Edit the Friendly name field


After I finally got the certificate installed I applied the it to the IIS binding for the site and we got the green banner on the site when we visited the secure side of the site.

.NET Membership with MVC & Auto Scripting

Kit this week has been building a Membership implementation for a client. He was trying to do it via code first approach were the database would be built later on.

I thought there was no automatic script building for SQL server. However buried deep inside .NET and not well documented Kit found how to get the database on the SQL server to be automatically populated specificly for Membership/Identity. All one had to do was send in the connection string and when you registered your first user the tables would be created on your SQL database. This will make creating Membership entities a lot easier int he future. Nice on Kit.

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
       public ApplicationDbContext()
           : base("ConnectionString.SQL Server (SqlClient)", throwIfV1Schema: false)
       public static ApplicationDbContext Create()
           return new ApplicationDbContext();

The Return of Gregory

Greg our intern for 7 months last year has returned to work full time with Dovetail. We are delighted to welcome him back. Hopefully he will have a blog post for you this month. He has been working with Fabrizio on the IKEA project.