Migrating to Bondry
Move members, groups, forums, blog and subscriptions from WordPress, XenForo or Invision Community with the free Migrator module.
The Migrator is a free official module that copies an existing site into Bondry. It reads WordPress (with or without ARMember and WooCommerce), XenForo 2 and Invision Community 4 and 5. Members keep their passwords, articles keep their images and every old address answers with a permanent redirect to its new page.
The old site is only read. The Migrator never writes to the source database or to its files, so the old site can stay online until you point the domain to Bondry.
Getting the module#
- Sign in to your account on bondry.org and open Downloads. The Migrator is listed under Free modules. No license and no checkout are involved.
- Download the installer.
- In your Bondry admin panel, open Modules, upload the zip and enable it. The installer checks the file against the Bondry registry before extracting it.
The Migrator has no license of its own. It receives updates through your core license, from the admin panel, for as long as the core license does.
Before you start#
- Back up Bondry first. Use System > Backup and keep the file outside the server. The migration writes a lot of data, and a backup is the fastest way back to a clean state.
- Database access to the old site. Host, port, database name, user,
password and table prefix. A user with
SELECTonly is enough, and it is the one we recommend. If the old database lives on another server that does not accept remote connections, import a dump into a temporary database on the Bondry server and point the Migrator at it. - Access to the old files. Either a local path on the Bondry server (for
example
/home/old/public_html/wp-content/uploads) or an HTTPS base address (for examplehttps://old.example.com/wp-content/uploads). Files are needed for avatars, images inside posts and attachments. - The scheduler running. Bondry processes the migration in batches through
schedule:run, every minute. Process now on the run screen also works through one batch at a time without the scheduler.
The wizard#
Open Migrator in the admin panel. Every run goes through the same seven steps:
- Source. Choose WordPress, XenForo or Invision Community. The screen summarises what that source brings and what it does not.
- Connection. Fill in the database details and the files path or address. Test answers with the detected version and the member count; the files test fetches a known file.
- Inventory. Counts per entity, and what will stay behind.
- Mapping. Source groups to Bondry groups (create a new one with the source name, or pick an existing one), subscription plans to Members Plus plans, and forums and blog categories (created as they are by default, or mapped to existing ones).
- Options. Merge members by e-mail address, download images embedded in posts, use Gravatar, keep the original dates and choose the batch size.
- Run. A progress bar per entity with the current batch, done, skipped and errors, plus Process now, Pause, Continue and a log you can filter by level. An interrupted run continues where it stopped and never creates a record twice.
- Report. Final counts, what stayed behind and why, the redirects recorded, how many members still have an older password format, the next steps, Revert and Export report.
The connection password is stored encrypted and never appears on screen or in the log. Running and reverting ask for your password again.
WordPress, ARMember and WooCommerce#
- In Source, choose WordPress.
- In Connection, use the values from the old site's
wp-config.php(DB_HOST,DB_NAME,DB_USER,DB_PASSWORDand$table_prefix, usuallywp_). For files, point towp-content/uploads. - In Inventory, check the members, posts, comments and media. When ARMember or WooCommerce Subscriptions are installed, their plans, subscriptions and payments are counted too.
- In Mapping, map each WordPress role to a Bondry group, and each ARMember plan or WooCommerce subscription product to a Members Plus plan.
- In Options, decide whether images inside posts are downloaded into the media library or kept on the old address, and whether Gravatar is used for members without a photo.
- Run, follow the progress and read the report.
Posts become blog articles with their categories, tags, featured image and nested comments. Shortcodes and block comments are removed; content passes through the same sanitiser as the editor. Drafts, scheduled and private posts keep their status.
XenForo 2#
- In Source, choose XenForo.
- In Connection, use the values from
src/config.php($config['db']). The table prefix isxf_. For files, point to the XenForo root: avatars come fromdata/avatarsand attachments frominternal_data/attachments. - In Inventory, check members, nodes, threads, posts, conversations and user upgrades.
- In Mapping, map user groups to Bondry groups and user upgrades to Members Plus plans. Nodes become forums and categories in the same tree.
- In Options, choose the batch size and whether to merge by e-mail.
- Run and read the report.
BBCode is converted to HTML. Polls, prefixes, tags, reactions, follows and warnings come along.
Invision Community 4 and 5#
- In Source, choose Invision Community.
- In Connection, use the values from
conf_global.php(sql_host,sql_database,sql_user,sql_passandsql_tbl_prefix, often empty). For files, point to theuploadsfolder. - In Inventory, check members, forums, topics, posts, messages, blog entries and, with Commerce, subscriptions, purchases and invoices.
- In Mapping, map member groups (secondary groups included) to Bondry groups and Commerce subscription packages to Members Plus plans. Each Invision blog becomes a blog category.
- In Options, choose the batch size and whether to merge by e-mail.
- Run and read the report.
What migrates#
| Content | WordPress, ARMember and WooCommerce | XenForo 2 | Invision Community 4 and 5 |
|---|---|---|---|
| Members and passwords | Yes, no password reset | Yes, no password reset | Yes, no password reset |
| Profile and custom fields | Partial: chosen user meta and ARMember fields | Yes | Yes |
| Groups and permissions | Roles become groups, with the main capabilities | Groups, the main permission matrix and forum permissions | Groups, secondary groups, the main permissions and forum permissions |
| Bans and warnings | Partial | Yes | Yes |
| Forum | Not applicable | Yes: nodes, threads, posts, polls, prefixes and tags | Yes: forums, topics, posts, polls and tags |
| Reactions and follows | Not applicable | Yes | Yes |
| Blog with images | Yes: posts, categories, tags, featured images and comments | Not applicable | Yes: entries, cover photos and comments |
| Attachments | Yes: the media library | Yes | Yes |
| Private messages | Not applicable | Yes | Yes |
| Subscriptions and payments | ARMember plans, members and payment log; WooCommerce Subscriptions and paid orders | User upgrades, active and expired | Commerce subscriptions, purchases and invoices |
| Coupons | Yes | Yes | Yes |
| Points and ranks | Not applicable | Partial: trophies become points | Partial: points and ranks |
| Redirects from old addresses | Yes, permanent (301) | Yes, permanent (301) | Yes, permanent (301) |
What does not migrate#
- WooCommerce products, product orders and shipping (Bondry has no store).
- Gallery, Downloads, Calendar, Clubs and Pages from Invision Community.
- Media Gallery and Resource Manager from XenForo.
- bbPress and BuddyPress from WordPress.
- Themes, plugins, site settings, emails and templates of the old site.
Everything that stays behind appears in the final report with the count and the reason, so you know what is left before switching the old site off.
Passwords#
Nobody needs to reset a password. Modern hashes (bcrypt, used by XenForo 2 and Invision Community 4 and 5) move as they are. Older formats from WordPress, Invision Community 3 and XenForo 1 are kept as they came and checked at the member's first sign in; when the password matches, it is re-hashed on the spot. The report shows how many members still carry an older format.
If you uninstall the Migrator before everyone has signed in, those older passwords stop matching and the member uses Forgot your password.
Redirects#
Every old topic, post, category, profile and article address is recorded and answers with a permanent redirect (301) to its new page. Point the old domain to Bondry and links from search engines, bookmarks and other sites keep working. Redirects work while the Migrator is enabled.
Subscriptions#
Active subscriptions come in with their plan and end date, but without automatic renewal: the payment method stays with the old gateway. Tell your subscribers before the end date so they renew in Bondry.
Reverting a migration#
Revert on the report removes what the run created, using the record of every item it migrated. It asks for your password and a confirmation. Content created in Bondry after the migration is not touched. If you want to start over from a clean state, restoring the backup you took before the run is faster.
After the migration#
- Review group permissions: each source models them differently and only the main matrix moves.
- Rebuild the search index with
php artisan search:rebuild. - Point the domain to Bondry.
- Tell subscribers about renewals.