Skip to main content

Capell uses essential storage for sessions, security, and interface preferences. Analytics and marketing storage stay off unless you accept them.

Cookie Policy
Migration Assistant marketplace hero artwork.

Migration Assistant

Migration Assistant provides package import workflows, source reads, mapping, preview, validation, execution state, and rollback reports.

Overview

What Migration Assistant provides

Migration Assistant provides package import workflows, source reads, mapping, preview, validation, execution state, and rollback reports.

It is built for teams moving content into Capell from legacy systems or structured exports.

Editors and developers can inspect mappings before committing changes, reducing migration surprises.

Rollback reporting makes imports easier to support and safer to repeat.

Use it when content migration needs a controlled workflow instead of one-off scripts.

/ 06
6 captures Visual gallery
Install

Install on your Capell site in three steps.

Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.

Support
First-party Capell support for active marketplace customers.
Data access
Reads and writes Capell content structures required by the package; public output receives rendered content only.
  1. 01

    Require the package

    composer require capell-app/migration-assistant
  2. 02

    Register the extension

    php artisan capell:extension:enable capell-app-migration-assistant
  3. 03

    Clear schema cache

    php artisan capell:admin:clear-schemas-cache
Works well with this

Related extensions

Browse the packages that usually pair with Migration Assistant or buy the suite it belongs to.

Included in suites
Migration path

Migration & Import Suite

Move existing content into Capell with validated Migration Assistant imports, WordPress previews, Media Library migration support, and Diagnostics checks.

Migration Assistant WordPress Importer Media Library Diagnostics
Operational control

Operations Readiness Suite

Prepare Capell for controlled production work with access gates, publishing workflow, migration tooling, login audit, diagnostics, previews, and frontend authoring.

Access Gate Publishing Studio Migration Assistant WordPress Importer Login Audit Diagnostics
Package README Install impact, package shape, common pitfalls, and maintenance notes. Open

Migration Assistant

Migration Assistant export, import, and rollback report workflows for Capell.

At A Glance

  • Package: capell-app/migration-assistant
  • Namespace: Capell\MigrationAssistant\
  • Surfaces: Filament admin, queue, database
  • Service providers: packages/migration-assistant/src/Providers/MigrationAssistantServiceProvider.php
  • Capell dependencies: capell-app/admin, capell-app/core
  • Third-party dependencies: lorisleiva/laravel-actions, spatie/laravel-package-tools

Why It Helps Your Capell Workflow

  • Provides import workflows, source readers, mapping, preview, validation, execution state, and rollback reports for content moves.
  • Helps owners de-risk migrations by showing what will change before import and what changed afterwards.
  • Gives developers extension points for sources, targets, relations, row contributors, collision detection, and rollback behavior.

Best Used With

What It Adds

  • Migration Assistant export, import, and rollback report workflows for Capell.
  • Admin resources: ImportSessionResource.
  • Recovery Center page import workflow: upload, review, resolve relations, validate, queue execution, and inspect rollback evidence.

Why It Matters

For developers: Separates migration work into services, actions, DTOs, jobs, events, source readers, target registries, and resolver contracts so package and flat-file data can be moved with explicit ownership rules.

For teams: Supports controlled migration workflows where content, media, relationships, source files, and rollback evidence can be reviewed before and after import.

Built With

This package makes its Composer dependencies visible because they are part of the value proposition, not just plumbing. When an upstream package has a public repository, its linked preview card points readers back to the maintainers so their work gets proper credit.

Capell packages used here

Open-source packages used here

  • Laravel Actions - single-purpose action classes that keep package workflows out of controllers and Filament resources.
  • Spatie Laravel Package Tools - Laravel package bootstrapping for config, migrations, commands, translations, and service provider setup.

Linked package previews

Laravel Actions GitHub preview

Spatie Laravel Package Tools GitHub preview

Screens And Workflow

Screenshots are generated from docs/screenshots.json during package deployment.

  • Import session index or host admin surface.
  • Page import upload and validation workflow.
  • Import validation summary.
  • Relation resolution review.
  • Rollback report view.
  • Package export intent screen.

Technical Shape

  • MigrationAssistantServiceProvider registers the package.
  • Config file: migration-assistant.php.
  • Migrations create import_rollback_reports and import_sessions, including generic import target columns.
  • Jobs execute import plans.
  • Events report import completed or failed.
  • Services cover package reading, writing, CSV/XML reading, mapping, validation, relation resolution, media ingest, preview, and rollback reporting.
  • WordPress WXR support is intentionally provided by the separate capell-app/wordpress-importer package, which registers a source reader with Migration Assistant.

Code Map

Area Path Purpose
Actions packages/migration-assistant/src/Actions Domain operations. Test these directly where possible.
Data packages/migration-assistant/src/Data Structured payloads, form state, view models, and integration data.
Enums packages/migration-assistant/src/Enums Persisted states and Filament option values.
Models packages/migration-assistant/src/Models Eloquent records owned by the package.
Filament packages/migration-assistant/src/Filament Admin resources, pages, widgets, and settings UI.
Jobs packages/migration-assistant/src/Jobs Queued work and async side effects.
Providers packages/migration-assistant/src/Providers Registration, extension hooks, routes, migrations, and resources.
Resources packages/migration-assistant/resources Views, translations, assets, and package resources.
Config packages/migration-assistant/config Package configuration and publishable config.
Database packages/migration-assistant/database Migrations, seeders, and settings migrations.
Tests packages/migration-assistant/tests Package-level Pest coverage.

Admin Surface

  • Resources: ImportSessionResource.
  • Pages: ImportPagesPage, ListImportSessions, ViewImportSession. ImportSitesPage remains a hidden placeholder until the site-import wizard ships.

Runtime Surface

  • Jobs: ExecuteImportPlanJob.
  • Commands: migration-assistant:export, migration-assistant:import, migration-assistant:status, migration-assistant:rollback-report, migration-assistant:rollback-execute.

Data And Persistence

  • import_rollback_reports stores the import session, created model ids, source filename/checksum, summary counts, executing user/time, and manual rollback instructions.

  • import_sessions stores import kind, generic target type/id, status, manifest, decisions, validation state, and result summary.

  • Retention and deletion rules should be verified against the host application policy.

  • Models: ImportRollbackReport, ImportSession.

  • Migrations: 2026_05_10_190859_01_create_import_sessions_table.php, 2026_05_10_190859_02_create_import_rollback_reports_table.php, 2026_06_04_000001_rename_import_rollback_reports_table.php.

  • Config: packages/migration-assistant/config/migration-assistant.php.

  • Data objects live in src/Data/; use them for payloads, form state, and view models.

Extension Points

  • Contracts: ImportSessionSubNavigationExtender, ImportSourceReader, MigrationAssistantContextResolver, MigrationAssistantRowContributor, PageCollisionDetector, PageImportTargetResolver.
  • Events: ImportCompleted, ImportFailed.
  • Listeners: SendImportSessionNotifications.
  • Register Capell extension points, routes, migrations, settings, render hooks, and resources from service providers.

Install Impact

  • Adds import_rollback_reports and import_sessions tables.
  • Adds migration-assistant queue configuration.
  • Uses disk and path config for imports, exports, and working files.
  • May require queue workers for long-running imports.
  • No public routes are registered by this package.

Install And Setup

  • Install with composer require capell-app/migration-assistant in the host Capell application.
  • Run migrations through the host application package install flow.
  • In this repository, verify package changes with vendor/bin/pest; do not use php artisan.

Admin And Access

  • Import session access is guarded by ImportSessionPolicy.
  • Policy support: OwnershipMap (packages/migration-assistant/src/Policy/OwnershipMap.php)

Common Pitfalls

  • Configure MIGRATOR_QUEUE and MIGRATOR_DISK before large imports.
  • Check upload and package size limits before importing client archives.
  • Run queue workers before testing async import jobs.
  • Review relation resolution before applying imported data.
  • Use migration-assistant:export --page={id} --json or migration-assistant:export --site={id} --json for scripted package creation.
  • Use migration-assistant:import {archive} --json to create and validate an import session; add --execute to queue it or --sync for controlled one-off execution.
  • Use migration-assistant:status --json, migration-assistant:rollback-report {session} --json, and migration-assistant:rollback-execute {session} --dry-run --json for headless CI or migration audit checks.

Docs

Testing

Run package tests from the repository root:

vendor/bin/pest packages/migration-assistant/tests --configuration=phpunit.xml

Maintenance Notes

  • Put behaviour changes in src/Actions/; UI classes, commands, and controllers should call actions instead of owning domain logic.
  • Use package Data classes at boundaries instead of passing anonymous arrays between layers.
  • Use backed enums for persisted values and enum labels for Filament options.
Overview A shorter package overview for marketplace and account review. Open

Migration Assistant

Status: Available, schema-owning · Kind: package · Tier: premium · Bundle: operations · Contexts: admin, console · Product group: Capell Operations

This page is the consolidated implementation overview for the Migration Assistant package. It is extracted from the package README, service providers, migrations, config files, routes, resources, models, actions, and the shared Capell ERD notes where available.

What This Package Adds

Migration Assistant provides the Capell Migration Assistant: package export/import, CSV/XML source reads, source contracts for add-on importers, field mapping, preview, validation, dependency graph review, relation resolution, media ingest, queued execution, and rollback reports.

  • Page imports are owned here: the Recovery Center page upload, review, relation resolution, validation, dispatch, and status polling flow lives in Migration Assistant.
  • Import source contracts expose rows, columns, metadata, and a suggested target.
  • Native CSV and XML readers cover common flat-file migrations without extra Composer dependencies.
  • Field mapping targets Capell pages and types. Collection-like imports resolve through the same target registry until another package registers a concrete collection target.
  • Preview output separates creates, skips, warnings, and blocking errors before execution.
  • Rollback reports capture created model class/id pairs, imported URL/media counts, source filename/checksum, executing user/time, and manual rollback instructions.
  • Import session tracking, retry/cancel flow, notifications, and queued execution.
  • Package reader/writer services.
  • Import validation, relation resolution, dependency graph, and media ingest services.

Developer Notes

Separates migration work into services, actions, DTOs, jobs, events, source readers, target registries, and resolver contracts so package and flat-file data can be moved with explicit ownership rules.

  • MigrationAssistantServiceProvider registers the package.
  • Config file: migration-assistant.php.
  • Migrations create import_rollback_reports and import_sessions, including generic target fields.
  • Jobs execute import plans.
  • Events report import completed or failed.
  • Services cover package reading, writing, CSV/XML reading, mapping, preview, validation, relation resolution, media ingest, and rollback reports.
  • WordPress WXR support lives in capell-app/wordpress-importer, which depends on this package and registers its reader through the source registry.

Operational Notes

Supports controlled migration workflows where content, media, source files, and relationships need review before import and operators need evidence after execution.

  • Adds import_rollback_reports and import_sessions tables.
  • Adds migration-assistant queue configuration.
  • Uses disk and path config for imports, exports, and working files.
  • May require queue workers for long-running imports.
  • No public routes are registered by this package.

Data And Retention

  • import_rollback_reports stores import session, created model ids, source filename/checksum, summary counts, executing user/time, and manual rollback instructions.
  • import_sessions stores import kind, generic target type/id, status, manifest, decisions, validation state, and result summary.
  • Retention and deletion rules should be verified against the host application policy.

Screenshot Plan

  • Import session index or host admin surface.
  • Page import upload and validation workflow.
  • Import validation summary.
  • Relation resolution review.
  • Rollback report view.
  • Package export intent screen.

Screenshots

Validation, relation resolution, rollback, and export screenshots need seeded import sessions before they can show distinct workflow states.

Pitfalls

  • Configure MIGRATOR_QUEUE and MIGRATOR_DISK before large imports.
  • Check upload and package size limits before importing client archives.
  • Run queue workers before testing async import jobs.
  • Review relation resolution before applying imported data.

Verification

  • Run vendor/bin/pest packages/migration-assistant/tests when package tests exist.
  • Run the relevant host-app migration or package install flow in a disposable database.
  • Open the listed admin or frontend surface and compare it with the screenshot plan.

Package Manifest

  • Composer name: capell-app/migration-assistant
  • Product group: Capell Operations
  • Kind: package
  • Tier: premium
  • Bundle: operations
  • Contexts: admin, console
  • Requires: capell-app/admin, capell-app/core
  • Optional dependencies: None listed.

Admin Surfaces

  • ImportPagesPage (packages/migration-assistant/src/Filament/Pages/ImportPagesPage.php, slug recovery-center/import-pages)
  • ImportSitesPage (packages/migration-assistant/src/Filament/Pages/ImportSitesPage.php, slug recovery-center/import-sites) is a hidden placeholder until the site-import wizard ships.
  • ImportSessionResource (packages/migration-assistant/src/Filament/Resources/ImportSessions/ImportSessionResource.php)

Commands

  • migration-assistant:status {session?} --json reports recent import sessions or a specific session by id/UUID.
  • migration-assistant:export --page={id} --json and migration-assistant:export --site={id} --json create page/site migration packages for CI and scripted moves.
  • migration-assistant:import {archive} --json creates and validates an import session; --execute queues the validated session and --sync runs it inline.
  • migration-assistant:rollback-report {session} --json reports created records and manual rollback instructions for a completed import session.

Routes And Config

  • Config: packages/migration-assistant/config/migration-assistant.php

Permissions And Gates

  • Policy: OwnershipMap (packages/migration-assistant/src/Policy/OwnershipMap.php)

Migrations

  • Migration: create_import_rollback_reports_table.php
  • Migration: create_import_sessions_table.php

ERD Excerpt

erDiagram
    USERS ||--o{ IMPORT_SESSIONS : starts
    USERS ||--o{ IMPORT_ROLLBACK_REPORTS : executes
    IMPORT_SESSIONS ||--o{ IMPORT_ROLLBACK_REPORTS : reports

    IMPORT_ROLLBACK_REPORTS {
        bigint id PK
        uuid uuid
        bigint import_session_id FK
        bigint user_id FK
        string source_filename
        string source_package_checksum
        json created_models
        json summary
        text manual_instructions
        timestamp executed_at
    }

    IMPORT_SESSIONS {
        bigint id PK
        uuid uuid
        bigint user_id FK
        string kind
        string status
        json manifest
        json result_summary
    }

Screenshot Automation

Deployment should read screenshots.json, install the package with demo data, resolve each admin surface or frontend URL, and write images to packages/migration-assistant/docs/screenshots.

  • Import session index or host admin surface.
  • Import validation summary.
  • Relation resolution review.
  • Rollback report view.
  • Package export intent screen.
History

Downloads and releases

Total downloads
0
Last downloaded
No downloads yet

Version history

1 release
  1. v1.0.0
    May 3, 2026
Write a review

Write your comment here. If you are not logged in, you will be asked to log in or create an account before it can be submitted.

Login or create an account is required before the review is saved.

No approved reviews yet. Reviews from eligible customers appear here after marketplace review.

Payment and licences

How marketplace purchases work

Capell keeps payment, account ownership, package receipts, and install access separate so a failed step can be recovered without guessing where the licence lives.

Who takes the payment?

Paid marketplace checkouts are sent to Stripe. Capell does not collect card details inside your CMS; Stripe confirms the payment and Capell activates the matching marketplace licence for the Capell account that approved the install.

How is the licence attached?

The licence is created against the signed-in Capell account first. When the hosted install flow returns to your CMS, Capell binds that licence to the requesting site and sends back the install authorization needed to continue.

Where does Anystack fit?

Anystack can be the package commerce and distribution surface for marketplace products. Capell still records the account licence and installed receipt, then relays later Anystack product or licence events only to connected sites that already have the package installed.

What happens if checkout is cancelled or expires?

No licence is created until Stripe confirms payment. If checkout is cancelled, start it again from the same review screen. If the quote expires, return to the marketplace in your CMS and start a fresh install flow so pricing and package metadata are recalculated.

What should I do if something looks wrong?

Keep the support reference shown on the review screen or receipt, then contact support before retrying with a different account. For missing licences, failed returns, or Anystack receipt mismatches, Capell can reconcile the Stripe session, Capell account, package receipt, and connected site from that reference.