CMS Made Simple to WordPress Data Migration card art
2024-11-21

CMS Made Simple to WordPress Data Migration

A short and scrappy PHP script built to pull user data out of CMS Made Simple and reshape it so WordPress and MemberPress could actually use it. Built fast for a freelance client, kept simple on purpose.

The Brief

This one came in as a classic freelance move. The client had years of user data sitting inside an older CMS Made Simple database and they needed every record moved over to WordPress, specifically into MemberPress, which is the membership plugin they were switching to.

The data had to leave one structure and land inside a totally different one. Different tables, different columns, different rules. Nothing lined up by default. So the whole thing needed a bridge.

The Idea

Keep it simple. Write one PHP script that talks to the CMS Made Simple database, reads every user record, transforms what it finds, and exports it in a shape WordPress and MemberPress could actually digest on arrival.

The core decisions were ones of ease and speed:

One file for the driver. The whole thing runs from a single index that does the connecting, the reading, the transforming and the echoing out of progress to the screen.

Direct database access. No plugins, no CMS admin APIs, no middlemen. Just a straight MySQL connection and clear queries against the source.

Stuff you could swap. Credentials and help writing stayed wrapped in tiny helpers so the next person dropping this in could point it at a database and go.

The manual parts.

Big migration tools can be heavy and they can also surprise you. For a focused job this size, a lean script won on stage over a fancy framework that wanted its own ceremony. The task was narrow and the reward for narrow tooling was transparency and total control.

Some parts still need a human being. Passwords can not be ported over with old hash formats, so the script generated fresh temporary passwords that the new site could hand to users on first login. That was a deliberate trade off, security over one to one cookie cutting.

And because it is a real world project, the error reporting could stay on for debugging, revealing what was failing with loud and clear messages.

The Stack

  • PHP for the scripting and the logic.
  • MySQL for reading the old CMS Made Simple schema.
  • Developer mode style design, quick badges for success, orange warnings for near misses and red for failures.
  • A touch of Tailwind styling in the templates so pasting in docs look presentable.

What It Taught Me

Freelance migrations do not need a whole enterprise platform. Sometimes it is just a well aimed excerpt, a clear picture of what the destination DB expects, and a script that never pounds the table. This project was exactly that kind.

Simple wins. When the old place and the new place think differently, you only really need a translator you can ship and forget. That is this script, shipped, handled, done.

© 2026 iEscapedVim · handcrafted in neovim · 0 rounded-corners · 0 cookies, and one cat
N~/iescapedvim/projects/cms-made-simple-to-word-press-data-migrationKARMA:0