Drupal to WordPress utility now public

I’m releasing my in-house tool for Drupal to WordPress migration. You can go directly to the download page for the latest version of the utility.

If you’d rather let someone else do the work, you can find more information at my dedicated migration service page.

When I started Another Cup of Coffee, we specialized in setting up Drupal since it was—and still is—a very versatile content management system suitable for anything from simple ‘brochureware’ sites to online shops and social networking. One of my working assumptions was that website owners would appreciate a platform that offers more flexibility as their needs expanded. However, over the past few years, I’ve received quite a few requests from new and existing clients to migrate sites from Drupal to WordPress. At first it seemed a little odd that it was almost always in this direction and rarely the other way around.

Some investigation quickly brought out an obvious answer: there is a Drupal module called wordpress_migrate that supports migrating WordPress blog exports into Drupal, but no simple mechanism to convert Drupal nodes into WordPress posts and pages.

After many years of experience with running Drupal sites, I can understand why a certain type of website owner would prefer WordPress. It’s just much more suited to the non-technical user who just wants a simple site with fairly standard functionality. (Incidentally, this describes our target market.) Since I’d first started using WordPress in 2004, it has evolved from simple blogging software into a fully-fledged content management system. Further, it’s more user-friendly out-of-the-box than Drupal’s default utilitarian interace and has a simpler update system. From my own experience, Drupal maintenance can be quite demanding with its frequent core and module updates. WordPress, on the other hand, is refreshingly easy to maintain.

Releasing our in-house utility

Unfortunately for us, manually moving a client’s site from Drupal to WordPress was quite tricky and time consuming, especially when lots of content types and entries are involved. We obviously needed some sort of automated tool but to my surprise, all that I could find online were either articles about people experimenting with SQL scripts, or paid-for services like GoWordPress and cms2cms. Our margins are pretty tight and paying for the service just wasn’t an option so I decided to hack together some scripts to build our own in-house tool. A blog post by Scott Anderson at Underdog of Perfection provided the best steps to get me started.

After using our tool to migrate a fair number of sites, I realised that it was time to give back to the community. After all, my code built upon the efforts of others who freely shared their work. I’m therefore releasing our Drupal to WordPress Migration Tool for public use under the MIT License.

Screenshot of our Drupal to WordPress migration tool

Where to download the Drupal to WordPress Migration Tool

I’ve set up a dedicated page for downloading our Drupal to WordPress Migration Tool which will have the most up-to-date version. More feature-rich versions can be found there as feedback comes in and bugs are reported. The first version should definitely be considered a ‘beta’ and only used by people who know what they’re doing when it comes to setting up and configuring content management systems. Currently it supports only Drupal 6 and WordPress 3.5. Eventually I aim for it to be a ‘wizard’ style utility that can be used by less technical people, like web creatives who’ve been tasked with migrating their clients’ sites from various releases of Drupal into the latest version of WordPress.

If you’re unsure of how to proceed or would simply like someone else to do the work, please drop us a note and we’ll be happy to provide a quotation.

Go to the download page. IMPORTANT: I’m offering this tool with no warranty or support implied.

About the EU Cookie Law and our cookie policy

The EU Cookie Law

In May 2011, EU countries adopted the ‘EU Cookie Law’ (officially, the EU e-Privacy Directive). Essentially, it put in place legislation to force website owners to be transparent about their use of cookies and to ask visitors for consent. The legislation applies to all sites in European Union Member States, as well as foreign website who target audiences in Member States. The fine for non-compliance can be as much as £500,000.

The UK’s Information Commissioner’s Office (ICO) gave British websites a 12 month grace period to update their sites and published guidelines for compliance. This grace period ended on 26th May 2012.

What are cookies?

A cookie is a small file which is sent to your computer by a website. Many sites use them for things like storing site preferences, analysing web traffic, keeping you logged in and remembering shopping-basket items. Web browsers tend to automatically accept cookies but there are settings that allow you to customize how you deal with them. You can find more information about cookies, as well as find help on how to disable or delete them at

How we use cookies

On this website, we use cookies for anonymous traffic statistics and to improve user experience. Technically, this site can also use cookies to keep track of logged in users and for post commenters. However, this functionality only applies to a limited set of website content editors. These cookies are not set for public visitors. For a list of cookies used on this site, please see the table below.

More information about the data we may collect can be found on our Privacy Policy page.

Your implied consent and how to opt-out

According to the ICO, “Implied consent is a valid form of consent and can be used in the context of compliance with the revised rules on cookies.” By continuing to use this website, we’ll assume you understand that your actions will result in cookies being set and have given your implied consent.

If you prefer not to have these cookies set, you may opt-out by configuring your browser to reject the cookies. Information on how to do this can be found at Google provides a Browser Add-on for Chrome that enables you to opt out of all Google analytics.

Cookies on our clients’ sites

The kind of cookies we use for sites that we build depend on our clients’ requirements. Our general policy is to only use cookies that are needed for the operation of the site. Since we mostly install Drupal and WordPress content management systems, these include cookies that allow users to log in and post comments. When requested by the client, we also install traffic analysis code, such as Google Analytics, which also sets cookies to measure visitor statistics.

Sometimes a client wishes to display content from third-parties, such as advertising, games or ‘widgets’. These often also set cookies but we’d need to perform an audit to find out how they affect their site’s compliance.

Is your site compliant?

Please contact us if you’re not sure what kind of cookies are used on your own site. We will perform a cookie audit so that you can update your privacy policy in order to comply with the law.

More information

The table below describes the cookies we set on this site for public visitors.


You might find these articles helpful.

Using Basecamp’s To Do feature

We use a web-based project management system called Basecamp which you can used to communicate with us. It allows you to send messages which are logged chronologically for your records. It also lets you assign tasks to us in the form of To-Do lists. This helps us keep track of outstanding tasks more efficiently.

This document gives a primer on how to use Basecamp’s To-Do system.

1. Log in to the Basecamp project management site

Log in to Basecamp using the details provided to you by our development team. If you don’t know your login details, you’ve probably been interacting with us via email only. See the section below for more information about Basecamp and how to set up your account.

2. Go to the To-Do section

Once logged in, you’ll see the Overview screen below. This shows the recent activity on your project. Click the To-Dos tab.

Image of Basecamp's To Do page

3. Add new To-Do item

The To-Do section should look a little like the screenshot below.

Image of Basecamp's add new to-do item screen

The main area shows the list of pending content updates. Below it is a section where you can enter new content updates in the form of a to-do item. The greyed-out portion below is a listing of recently completed content updates.

Setting up your Basecamp account

Basecamp is a third-party project management system that we use to organise projects. It helps keep you in the loop about the progress and gives you a way to interact with our development team. This tool can be more useful than communicating by email because you’ll find all related discussions, files and to-do items in one place. Other project members can also add their input by attaching comments.

Note that anything you add will be visible to team members listed in the ‘People’ section. Therefore, please contact me directly by email or phone if you’d like to discuss anything confidential, such as financial and billing details, or restricted intellectual property information.

At the start of our work together, you should have received an email that helps you set up your account on Basecamp. I would have looked like this:

Image of Basecamp's invitation email

If you can’t find the email and it’s not in your spam folder, let me know and I’ll get the email resent.

After you click on the link in the email, you should see a page that lets you enter your name, email address and password. Your account is created once this is done.

Image of Basecamp's setup screen

Q: Is there a standard list of things to test on my site?

There really isn’t a standard list because each site tends to have slightly different features. Generally, though, there are three main areas that should be tested:

(A) Technical (do the features work correctly?)
(B) Usability (is the site easy to use?)
(C) Accessibility (can visitors access the site’s content without too much trouble?)

Here’s a common list of technical things to check that would apply to most of our clients’ site:

  1. Does the site display on different browsers and operating systems? (Which browsers depend on your target market but usually they’d be Internet Explorer 7, 8 & 9, Firefox 11 & 12, Safari 5, Chrome 18. Operating systems for the general market would be Windows and Mac. We don’t usually consider mobile access unless it’s a feature that clients specifically request.)
  2. Are there any broken links?
  3. Are all the pages formatted so that all content is visible?
  4. Does the search facility turn up the correct results?
  5. Can you click through to the content images and do they expand and close to return you to the article?

As you can see, this is all pretty basic stuff because most of our site’s features aren’t too complex.

Because of this, I suggest that your user testing should mostly be focusing on non-technical aspects like (B) and (C). However, because the bulk of these areas are subjective, it’s difficult to come up with an actual list. Therefore, I would suggest having free form comment boxes for people to leave their feedback.

Another thing to note is that the UK and EU have legislation covering web accessibility. You can find out more about this via the following links:


Unfortunately, this topic is quite a complex and time consuming area and most companies and web developers know little about the subject. There are also doubts about how these laws can actually be enforced. Furthermore, there are no specific definitions on what exact standards must be met within the UK. Thus it is my experience that many web owners and developers simply ignore the issue.

My policy is that we use web-standards compliant technologies where possible. This resolves most accessibility issues within reason for the amount invested in development. However, if a client wants to meet specific standards compliance, we do this under our standard hourly rate as an added service.

Ultimately, this is a business decision to be made on the client end whether this should be a focus.

Q: Do you have sample terms and conditions we can use?

Generally, my clients tend use template-based terms and conditions when starting up. (They tend to take on paid legal advice later on, for example, after their venture has stabilized.)

Usually they ask about:

  1. Website usage terms
  2. Privacy policy (especially when they’re collecting data through online forms)

For those who are UK-based, I point them towards the Business Link website.

Edit 22 April 2013: It seems that the website has now been replaced by and the above links no longer work. However, the sample privacy policy does still seem to be online for the time being at this link. (Microsoft .doc download, 28KB)

Q: What should we expect after signing-off a project with you?

Projects tend to vary for each client but the process goes as follows:

  1. I’ll send you an invoice for a 50% down-payment to cover for the start-up costs.
  2. You’ll receive log-in details to our project collaboration site. This will show some initial project time-scales and check-lists of what needs to be done.
  3. We’ll schedule your work as soon as we receive your down-payment remittance.


From experience with many other projects, I now generally do not specify timescales for the stages in the initial work agreement or invoice. There are several reasons for this:

  1. For the majority of projects, the original timescales end up changing part way into the work. The reasons vary, such as a change of focus, new ideas for features and as is often the case with start-ups, an evolution in the business priorities.
  2. The stages themselves are not fixed and sometimes we end up running them concurrently, starting early or delaying them.

Instead, we work towards some broad milestones that are set by our clients. The milestones are set on our project collaboration site and are adjusted depending on how the project evolves.


Testing is another area where we differ slightly from some other web companies.

In my opinion, the best people to test the site are the clients themselves; you know better than anyone else how you expect things to work. We’re then guided by your observations.

This process helps keep our fee low because I don’t need to hire dedicated testers or get expensive programmers to do the job. It also skips the time intensive (and expensive) test specification documentation what would be necessary if we were to perform the tests thoroughly.

Testing is therefore more of a collaborative process with you.

For us, testing starts very early on in the project. The usual procedure many web companies follow is to give access to the site towards the end of the development process, only when things are ‘ready’ for the client to view.

I believe that it helps to let you loose on it early on because it gives you a realistic expectation of how things are going all the way through our work together. It also gives you a chance to ask questions and steer things in the right direction while we develop the site.

Testing period

Because of the above, I find that specifying a testing period in the contract usually isn’t very flexible.

It’s also quite difficult to stick to the period specified. For many clients, the website, while important, isn’t the only thing they must deal with in their business. In my experience, things nearly always come up that prevents them from dealing with the task during the allocated time.

For example, let’s take a client’s suggestion of a testing period of two days after delivery. I find  what happens in practical terms is that if I deliver, say, on Monday, the client would have a meeting on the Tuesday, then a series of calls for Wednesday and so on. Thus the testing period expired but the client was still unable to even look at the site.

Again, this is another reason why we actually start the testing process near the beginning of the project.

Of course, if you prefer to have the period specified in the contract, we can do our best to meet it but with the caveat that things might not turn out that way.

Customising the length of post summaries (or ‘teasers’) on your Drupal site

Many Drupal-based sites create summaries when you upload a post. These are often shown in listing pages that show the first paragraph or so of the post. These post summaries called ‘teasers’ in Drupal and are extracted automatically from the main text. The software makes its best guess about how much of the text to show but it doesn’t always look right.

You can manually tell Drupal where the teaser should end by inserting a special tag in the main editing box. To do just follow the steps below:

  1. Go to the edit screen of the page you’d like to edit.
  2. Click the ‘Disable rich-text’ link just below the ‘Description’ text input box.
  3. Enter the tag <!--break--> at the point you want the summary to end and click save.

Creating emergency-resilient electronic file backups

Most computer users know about the importance of backups as it’s all too common to have years worth of information and memories wiped out by a computer crash. Generally though, the average backup strategy involves copying files into some sort of device in your home or office. This may be of little use if the building is destroyed. Furthermore, fragile electronics may not survive an evacuation should you need to leave your home in an emergency.

The key to creating emergency-resilient electronic backups is to have both local and remote copies to create several layers of redundancy.

  • Local backups (or on-site backups) are kept in your primary location, such as at home or the office. These are for convenience since it’s usually easier to make more frequent and larger backups. Should you need to restore, they are easily accessible.

  • Remote backups (or off-site backups) stored at another location are for redundancy in case your local ones are destroyed. These are likely to be the ones you’ll fall back on after a large-scale emergency.

Local backups

Your local backup storage options include CDs, DVDs, external hard-drives or memory sticks. Since they can be connected directly to your computer, you can quickly backup and restore large files. Unfortunately, they’re also the ones most likely to be lost in the event of a house fire, earthquake, flood or any number of emergencies.

To help protect them, these should ideally be stored in a strong, waterproof and fire resistant container. There are commercially available data safes that are rated to protect your backup media from fire, water and theft but these are expensive. A cheaper but still pricey alternative would be to use professional waterproof hard cases from Pelican or Wonderful. Those on a very tight budget can simply try putting the backups in a sealed plastic food container such as those from Lock & Lock or Tupperware.

However, the biggest drawback with these local backups is that you are faced with a dilemma:

  • You can keep your backup media stored in the protective case and schedule regular backups. They’ll have some protection in the event of an emergency but it’s easy to postpone or forget about making the backups. You also won’t have a copy of any files that have been edited between the backups; or

  • You can make frequent backups to a constantly attached drive, usually automatically through backup software. This makes your backup process more reliable but leaves the media at risk since they’re left out.

Image of laptops and hard-drives in temporary office space during an emergency
A make-shift office of laptops and backup drives laid out on the dining room table

Remote backups

The most convenient way to keep remote backups is to use an online service like the following:

By far the easiest to use are Dropbox and Carbonite but the most secure are rsync, SpiderOak and JungleDisk. (There are many more services available but these are the ones that I’ve personally tried.)

*SpiderOak and Dropbox have a free option. If you want to try one of these, use my referrer code and we’ll both get free extra space.

These types of services host their servers in business-grade data centers; your data will be housed in a secure facility with its own disaster recovery systems. In other words, they do the job of keeping your data safe for you. (Of course, you should never give full trust to a third-party so local backups are still important.)

Keep in mind that due to storage fees or internet speed limitations, some types of data, such as a large music or video library, may not be practical to store online. You should also expect your first backup to take a while since you’ll need to copy everything onto the remote server. For example, the first time I used SpiderOak, it took several days to backup almost 30GB of data. Fortunately, subsequent backups are quicker as most services copy over only the changes.

A solution to keeping remote backups of large files is to create a ‘backup-ring’ with friends and relatives from out-of-town. The principle behind this is quite simple: make backups and then swap disks when you visit your out-of-town friends; you keep their drive and they keep yours.


File synchronization is a technology that’s matured over the past few years and combines benefits of local and remote storage. It works by copying files from your computer onto online storage and when any changes are made, the older file is automatically updated with the new version.

Most services also allow you to synchronize several computers so if you have a laptop, desktop and office computer, they can all be updated with the latest changes. This feature alone can greatly simplify your backup and restore process; if one computer is unusable, you simply log in to another, synchronize then pick up where you left off. The same process applies when buying a new computer. Just install the synchronization software and your files will be copied over from the servers.

Some even offer web and mobile device access so in an emergency, you don’t even need your own computer to get hold of your files.

Dropbox, JungleDisk and SpiderOak offer computer synchronization. Note that these services require an internet connection to synchronize. During a wide scale emergency, internet links may be down or unreliable so it’s a good idea to ensure that your computers regularly go online to get updates.

Other tips

  • If your email provider supports it, try using the IMAP protocol for your emails. This essentially keeps your mail server synchronized with your computer’s mailbox changes. Even if your computer is destroyed, you can still connect to the server and have your emails in the same state of your last access: new, read, saved and deleted emails will appear as they did on the destroyed computer. Those who use web-based email, like Gmail, Hotmail and Yahoo won’t need to worry about this.

  • Remember that your backups may contain confidential files. For privacy, make sure that all backups are encrypted. Your backup software may have this feature built-in. If not, you might want to try TrueCrypt which is well-known and trusted encryption software.

  • Some files use special formats so make sure you also backup any software you need to access your files. As much as possible, try to save or export files into a widely used format. For example, PDF files can usually be opened in pretty much any operating system and most devices come with some sort of PDF reader.

  • Don’t forget to run a test restore. You may be diligently making backups but they’re useless if some error in your process means that you can’t retrieve the files when needed.

It’s all about continuity

While keeping your data safe might seem like a low priority in comparison to other preparedness tasks, the purpose behind creating emergency-resilient electronic file backups is continuity. Crises always pass and life eventually returns to normal. Since a large part of our assets, both business and personal, are now electronic, rescuing your data files will speed up your recovery.

More than anything, having data backups provide emotional security. Knowing that your digital archive of family photos or vital business documents are safe can help you focus on the immediate needs of getting through an emergency.

Q: Can I use an email program such Outlook to send bulk mail?

Quite a few clients have asked if they can run an email marketing campaign through our servers using an email program like Microsoft Outlook. The main thing to note is that email accounts provided by our hosting company, Rackspace, are not really to be used for sending out bulk emails. Although it is technically possible this method is not recommended for several reasons:

  1. You may breach Rackspace’s terms of service
  2. It’s more error-prone and therefore the results are unreliable.
  3. There is no way to gather metrics such as view and click-through statistics.
  4. There is a risk of getting your domain blacklisted as a spam sender by ISPs. Once you’re on the blacklists, some or all of your email accounts will keep ending up in the recipient’s spam filters. It may be very difficult to get off the blacklists.

However, many of our clients are small and micro-business who send out nowhere near the levels of bulk mail as many larger corporations. I’ve therefore contacted Rackspace to ask what are the allowable limits under their Rackspace Cloud service. Based on their reply, you should be safe if you:

  • Send no more than 250 messages per 20 min
  • Send no more than 5,000 messages per day
  • Include an unsubscribe link in the messages (and act on the request)
  • Send only to people who’ve given you permission to contact them about this

Nevertheless, I recommend that you a dedicated bulk emailing service to send to your distribution lists. The catch is that there’s a fee and the legitimate ones are very strict with how you’ve gathered the email addresses. (They won’t allow you to send to people who haven’t given you their permission.) However, the messages are more professional and you’ll be able to track statistics such as the number of emails that have been opened, unsubscribed or bounced.

We use such a system and if you’re interested, I’ll be happy to put together a quotation for you. As a rough idea, our profile of clients tend to average approximately £10 per campaign to use the system.

For your reference, Rackspace have a Knowledge Center article that states the following:

If your application is going to be sending out single messages (or less than 25 messages at a time), we highly suggest using SMTP. SMTP is a better option for sending out small amounts of mail. If you have questions on configuring your application to use SMTP, please visit with a member of our support team.
On the other hand, you may need to use our mail relays if your application will be sending out messages to a larger mailing list. If that’s the case, please review the following rules for sending messages through our mail relays:
1. Your message must have a working unsubscribe link, which must be demonstrated to us upon request.
2. The message must have a valid Return Path. This means the message must have a valid from address listed in the message.
3. The message of the email can only refer to the domain the message is being sent from. This means “” cannot send messages for “”
4. You must obtain Rackspace Site’s advance approval for any bulk or commercial e-mail, which will not be given unless you are able to demonstrate, at a minimum, that your intended recipients have given their consent to receive e-mail via some affirmative means, such as an opt-in procedure, your procedures for soliciting consent include reasonable means to ensure that the person giving consent is the owner of the e-mail address for which the consent is given, you retain evidence of the recipient’s consent in a form that may be promptly produced on request, and you honor the recipient’s and Rackspace Site’s requests to produce consent evidence within 72 hours of receipt of the request.
5. We do not allow bulk or commercial e-mail being sent to more than five-thousand (5,000) users per day at a rate of 250 messages every 20 minutes.
6. Rackspace Sites may test and otherwise monitor your compliance with its requirements, including requesting opt-in information from a random sample of your list at any time.