Skip to content

Migration Assistant

This page is generated from public package documentation in capell-4/packages and the package manifest checked into the source repository.

FieldValue
Composer packagecapell-app/migration-assistant
Package slugmigration-assistant
Product groupCapell Operations
Tierpremium
Bundleoperations
Runtime contextsadmin, console
Capell version^4.0
Source repositorycapell-app/packages
Source pathpackages/migration-assistant
Docs sourcepackages/migration-assistant/docs
Manifestcapell.json

MigrationAssistant export, import, and rollback report workflows for Capell.

  • 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
  • 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.
  • MigrationAssistant 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.

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.

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

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.
  • MigrationAssistantServiceProvider registers the package.
  • Config file: migration-assistant.php.
  • Migrations create import_rollback_dashboard-dashboard_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 MigrationAssistant.
AreaPathPurpose
Actionspackages/migration-assistant/src/ActionsDomain operations. Test these directly where possible.
Datapackages/migration-assistant/src/DataStructured payloads, form state, view models, and integration data.
Enumspackages/migration-assistant/src/EnumsPersisted states and Filament option values.
Modelspackages/migration-assistant/src/ModelsEloquent records owned by the package.
Filamentpackages/migration-assistant/src/FilamentAdmin resources, pages, widgets, and settings UI.
Jobspackages/migration-assistant/src/JobsQueued work and async side effects.
Providerspackages/migration-assistant/src/ProvidersRegistration, extension hooks, routes, migrations, and resources.
Resourcespackages/migration-assistant/resourcesViews, translations, assets, and package resources.
Configpackages/migration-assistant/configPackage configuration and publishable config.
Databasepackages/migration-assistant/databaseMigrations, seeders, and settings migrations.
Testspackages/migration-assistant/testsPackage-level Pest coverage.
  • Resources: ImportSessionResource.
  • Pages: ImportPagesPage, ImportSitesPage, ListImportSessions, ViewImportSession.
  • Jobs: ExecuteImportPlanJob.
  • import_rollback_dashboard-dashboard_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_dashboard-dashboard_reports_table.php, 2026_05_18_000001_add_target_columns_to_import_sessions_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.

  • 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.
  • Adds import_rollback_dashboard-dashboard_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 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.
  • None proven in this package directory.

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

  • 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.

Run package tests from the repository root:

Terminal window
vendor/bin/pest packages/migration-assistant/tests --configuration=phpunit.xml
  • 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.