Migration Assistant
Migration Assistant provides package import workflows, source reads, mapping, preview, validation, execution state, and rollback reports.
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.
Install on your Capell site in three steps.
Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.
-
01
Require the package
composer require capell-app/migration-assistant -
02
Register the extension
php artisan capell:extension:enable capell-app-migration-assistant -
03
Clear schema cache
php artisan capell:admin:clear-schemas-cache
Related extensions
Browse the packages that usually pair with Migration Assistant or buy the suite it belongs to.
Capell Core
Capell Core gives Laravel teams the shared CMS model for sites, languages, pages, URLs, layouts, themes, media...
Capell Admin
Capell Admin gives editors a Filament workspace for managing structured content, settings, roles, publishing,...
Capell Installer
Capell Installer guides Laravel teams through bootstrapping a Capell site, choosing packages, preparing the fi...
Migration & Import Suite
Move existing content into Capell with validated Migration Assistant imports, WordPress previews, Media Library migration support, and Diagnostics checks.
Operations Readiness Suite
Prepare Capell for controlled production work with access gates, publishing workflow, migration tooling, login audit, diagnostics, previews, and frontend authoring.
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
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
MigrationAssistantServiceProviderregisters 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-importerpackage, 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.ImportSitesPageremains 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-assistantin 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 usephp 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} --jsonormigration-assistant:export --site={id} --jsonfor scripted package creation. - Use
migration-assistant:import {archive} --jsonto create and validate an import session; add--executeto queue it or--syncfor controlled one-off execution. - Use
migration-assistant:status --json,migration-assistant:rollback-report {session} --json, andmigration-assistant:rollback-execute {session} --dry-run --jsonfor headless CI or migration audit checks.
Docs
- docs index
- credits-and-acknowledgements.md
- extension-points.md
- import-export-workflow.md
- migration-assistant.md
- overview.md
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
Dataclasses 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.
MigrationAssistantServiceProviderregisters 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/testswhen 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?} --jsonreports recent import sessions or a specific session by id/UUID.migration-assistant:export --page={id} --jsonandmigration-assistant:export --site={id} --jsoncreate page/site migration packages for CI and scripted moves.migration-assistant:import {archive} --jsoncreates and validates an import session;--executequeues the validated session and--syncruns it inline.migration-assistant:rollback-report {session} --jsonreports 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.
Downloads and releases
- Total downloads
- 0
- Last downloaded
- No downloads yet
Version history
1 release-
v1.0.0May 3, 2026
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.