Problem/Motivation
As a site administrator, I want a configurable migration wizard under /admin/config/acquia-dam/migration that guides me through choosing which core media types to migrate and how (profile, sync method, target DAM media type), so that I can prepare the migration through a guided UI before the bulk migration runs.
Acceptance Criteria:
2-step wizard (step 1 AcquiaDamMigrationMapForm):
- Per core media type row (from
MigrationTrait::getCoreMediaTypes()): include checkbox, label, media count, upload profile select (from DAMgetUploadProfileList()), target DAM media type select (fromgetAcquiaDamMediaTypesAsOptions()) - Empty media types auto-skipped and disabled;
#statesused to conditionally expose type options - Step 2 (
AcquiaDamMigrationSummaryForm): review table of the chosen mapping + key point summary
Main form (AcquiaDamMigration, ConfigFormBase):
- Wizard page state via
current_pageinstored_values; Previous / Next (goPrevious/goNext), Save Configuration (doSave), Migrate button - Migrate button invokes the batch API via the
QueueProcessBatchdelegate - Config persisted to
acquia_dam_migration_tools.migration_preferences→stored_values
Completion (AcquiaDamMigrationComplete):
- Completion page showing per-type summary from
populateMigratedDataState()
Scaffold (data/UI layer):
acquia_dam_migration_tools.install← new —hook_schema()createsacquia_dam_migration_queue_map(media_id PK, queued_date) for O(1) dedup;hook_uninstall()deletes state keys +migration_preferencesconfig/schema/acquia_dam_migration_tools.schema.yml← new —migration_preferencesconfig_object withstored_valuesmapping (current_page;core_media_types/migrated_media_typesassequenceof mappings incl.media_type_label/sync_method/profile/target_source_type/target_media_type/include/media_source_type/media_source_field) — keyed lists usesequence, never a'*'wildcard key;metadata_mapping
Tests:
AcquiaDamMigrationToolsKernelTestBase(kernel) — shared kernel base for the form testsModuleInstallationTest(kernel) — module installation; config schema valid; typed config; services registered; queue worker plugin exists; uninstall cleanupAcquiaDamMigrationCompleteTest(kernel) — completion-page state summaryAcquiaDamUploadEndToEndTest(FunctionalJavascript) — end-to-end UI migration with node + media reference preserved and asset-id fixtureMigrationWizardNavigationTest(FunctionalJavascript) — wizard step navigation
Issue fork acquia_dam-3617773
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
rajeshreeputraRequesting review.
Comment #5
rajeshreeputraMR merged!