Import from Concrete CMS
The Concrete import reads a Concrete CMS 9 database dump (no MySQL needed) and brings in pages, talent, posts, files, file sets, stacks, forms, menus, the footer, and templates. You can run it again later with a fresher dump: it updates what it imported and leaves anything you’ve edited here alone.
This is done by whoever runs the server, from the command line.
Before you start
Section titled “Before you start”- Switch the site to the Studio Center theme (Pages & Design → Themes).
- Install and turn on the Forms, Shop, Location map, Google reviews, Search, and Talents extensions (Extensions). Forms, products, and map locations go into them.
- Get the dump (the
.sqlfile frommariadb-dump), the oldsitemap.xml, and, if you can, a copy of Concrete’sapplication/filesfolder.
Try it first
Section titled “Try it first”pnpm import:concrete --dump dump.sql --sitemap sitemap.xml --dry-runThis writes nothing. It lists what would be imported, the type templates and menus it would make, notes about blocks that changed on the way, and any old address that wouldn’t work.
Run the import
Section titled “Run the import”pnpm import:concrete --dump dump.sql --sitemap sitemap.xml --as you@example.com --files-dir /path/to/application/files--as: an Administrator of the site (a Developer too, to bring in structured data).--files-dir: stores files from the copy. Without it, the files are downloaded from the old site in the background.--no-files: for a trial run; files are listed but not fetched. A later run with--files-dir(or without either flag) fills in the files those records are waiting for.--offline: don’t look upsimian.meandreel.iovideo links (they stay links instead of players).--concrete-root <folder>: the Concrete installation folder. The Google Reviews API key and Place ID are copied to the Google reviews extension when its settings are empty; the key is never shown.--with-staff: people in Concrete staff groups are added as invited people. Administrators become Administrators; other staff groups become Editors; customers, clients, and registered users are skipped. No passwords carry over, and pages are credited to their authors.--send-invites: emails each invited staff member an invitation, once. You can add it now or on a later run.--resend-invitessends everyone who hasn’t accepted yet a new link. Staging sites never send email.--with-form-submissions: form results from the last year (or each form’s own retention period) become entries under Extensions → Forms → Form submissions. Uploaded files come along only with--files-dir, and only people who manage extensions can download them. If an earlier run brought in submissions without their files, a later run with--files-diradds the missing attachments to entries that are still there.
What you get
Section titled “What you get”- Talent and case studies as their own content types, with Talent Data beside each page’s content as on the old site,, with their own templates (Pages & Design → Templates → Content types). Posts use the Post template, which is also filled in from Concrete.
- Testimonials as items of a Testimonial type, shown by content lists.
- The main menu from Concrete’s header navigation, including links like “Auditions login”. Third-level pages follow their parent in the dropdown.
- The footer with the social links and award badges.
- The home page set in Settings, so it shows at the site’s address.
- Old addresses keep working. Old page addresses redirect to the new ones, and old file links (
/application/files/…,/download_file/…) lead to the files once they’ve arrived.
Templates, menus, and the home page setting are only filled in when you haven’t changed them here. The report says what it left alone. See Design to adjust them afterwards.
The store
Section titled “The store”Store product pages become Products at the same addresses (/about/shop/products/…). Each has its picture, a summary that starts with its price, and the Shop product it sells. /about/shop/products stays the page that lists them, and product lists show Products, sorted as before. Inactive products keep their page but aren’t listed or sold.
Product sizes and other choice lists become Shop options. With --concrete-root, the import also sets up payments from Concrete’s store, but only while the Shop has no payment setup yet: PayPal Standard becomes “PayPal with just my email address”, with the same account and Live or Sandbox, and the currency comes across too. Tax is imported only when Concrete’s rate applied to whole countries; the report says when it didn’t. The report only says what was set and never shows the values.
After importing, check Extensions → Shop: set Countries you ship to so PayPal asks for a shipping address, and set tax if it applies.
Form uploads stay private
Section titled “Form uploads stay private”Files people sent through forms (job applications, CVs, headshots, pitches) are never added to the media library, and their old addresses don’t work, even though Concrete kept them in its file manager. If a page on the old site showed or linked one of these files, it’s kept, and the import report lists it by file number so you can check it.
Listing pages and folder pages
Section titled “Listing pages and folder pages”If an old page sits at a content type’s address (for example /talent/camera/search-camera/camera-actors), it stays and becomes that type’s listing page; the talent pages still open under it. Empty folder pages that only grouped talent pages (camera-women, camera-men…) aren’t imported, and their addresses lead to the listing page.
Not imported
Section titled “Not imported”Comments (sc-cms comments are for staff discussing drafts), pages in Concrete’s trash, and, unless you ask for them with the flags above, staff accounts and form submissions.
Running it again
Section titled “Running it again”Run the same command with a newer dump just before switching over. Pages you edited here since the last run are listed and left as they are.