Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Option 1: Find Script on Internet

Option 2: Write a script ourselves using Drupal Migration Code

Option 3: Write a script ourselves using direct database calls

Option 4: Hand migrate

Description

In this option, we have tried a related option that is available on the internet and takes the idea if someone already did migration in order to investigate.

In this option, We have to study internal architecture how the workflow, rule modules module functional in the Drupal 8 sites, and based on those inputs we need to create a custom module that will migrate the data from drupal 7 to drupal 8.

Similar to the option 2, but using direct database calls instead of writing php code to perform the migrations.

In this option, We have to migrate workflow rules from Drupal 8 administrator by taking the reference which we had on the Drupal 7 site.

We will also need to hand migrate the historical Access and Publishing Requests that are contained within the current system. This would be done through the UI interface by replicating the original not by copy the data through the database.

Workflow Rules

Workflow included 12 states and rule is having 14 configurational settings

Workflow included 12 states and rule is having 14 configurational settings

Workflow included 12 states and rule is having 14 configurational settings

Workflow included 12 states and rule is having 14 configurational settings

Pros (plus)

  • Time-Saving approach

  • Easy to implement

  • A custom module can be used on multiple sites.

  • Already have some familiarity with the APIs and hooks provided by Drupal 8, which lowers the overhead of research costs

  • The IDE will also provide IntelliSense when working with objects provided by the modular creator (lowers research costs)

  • Time-Saving approach

  • Easy to implement

Cons (minus)

  • Very less information available and haven't found any successful workaround regarding the same.

  • Time-consuming approach

  • The Workflow modules specific APIs and hooks need to be researched and tested

  • Time-consuming approach

  • We will have to also understand if there were any value/data definition changes within the new database to correctly apply the transformations.

  • Workflow states and rules condition should be accurate. otherwise, functionality will not work as excepted.

Data

  • Drupal site is having 2 workflows i.e “API Publish” and “Application Approval Request” which will have their certain state respectively.

  • Workflow Rule is having 14 rules based on a certain event condition.

  • Drupal site is having 2 workflows i.e “API Publish” and “Application Approval Request” which will have their certain state respectively.

  • Workflow Rule is having 14 rules based on a certain event condition.

  • D7 Workflow data will be residing under the below-mentioned tables.

Code Block
workflow_node                                
workflow_node_history                     
workflow_scheduled_transition
workflow_states 
workflow_transitions
workflow_type_map
workflows
  • D8 Workflow data will be residing under the below-mentioned tables.

Code Block
config
config_snapshot
workflow_transition_schedule
workflow_transition_history
  • Drupal site is having 2 workflows i.e “API Publish” and “Application Approval Request” which will have their certain state respectively.

  • Workflow Rule is having 14 rules based on a certain event condition.

Pros (plus)

  • Already have some familiarity with the APIs and hooks provided by Drupal 8, which lowers the overhead of research costs

  • The data storage logic has already been written by the module owner, so we won’t make mistakes by going on this approach (lower risk)

  • The IDE will also provide IntelliSense when working with objects provided by the modular creator (lowers research costs)

  • Already having configuration settings (state & transition) in Drupal 8 site that easy to port into the Drupal 8.

Cons (minus)

  • We will need to research the difference between the D7 and D8 database schemas.

  • We will have to also understand if there were any value/data definition changes within the new database to correctly apply the transformations.

  • Reproducing the accurate Dates and Times of the original approvals (who they were done by and when) could not be replicated in this approach. (There would be data loss, or data distortion.)

Notes

On the basis of research on the internet, there is no direct way available to migrate workflow and rules directly from Drupal 7 to Drupal 8.
Here is the list of the POC:-
1: I have tried migration through the Drush commands. These steps are given in the doc Migration Process from Drupal 7 to 8

Result: Failed, I have tried to migrate workflow and rules data through the brush but the process is not supported to migrate the data from D7 to D8.

Useful Link: https://www.drupal.org/docs/upgrading-drupal/upgrade-using-drush

2: Tried to import workflow state by adding code and followed steps mentioned here in this link https://www.drupal.org/docs/upgrading-drupal/upgrade-using-drush But there is not success found with that.

Result: Failed, As node was not imported to the D8.

3: In order to migrate rule from D7 to D8, I have used a few modules with providing missing functionality in Drupal 8. Here is the list of those modules.

  • D8 Rule Essentials

  • Typed Data

Result: Failed

4: I have tried to apply the patch which is having on Drupal community https://www.drupal.org/files/issues/2020-09-24/workflow-add_migrate_support_for_the_workflow_system_on_d8-3015900-3-D8.patch

Result: Failed

On the basis of the POC on this approach, the D7 and D8 database scheme has been changed significantly.

In drupal 7, workflow module with a separate table w.r.t their functionality module. whereas in Drupal 8, it will use a common table except for workflow history and transition.

On the basis of the research that we can make the workflow settings manually which included state and transition and we will import the history by using a script that will get the data from the Drupal 7 site.

...