Skip to main content

Migration Part I : Drupal to Drupal migration

Drupal 8 core provides support for Drupal-to-Drupal migrations. it will allow you to migrate your content from previous versions to Drupal 8.
Core:
  • Migrate
  • Migrate Drupal
Contributed:
Step 1 - goto your drupal 8 site setting.php and add the drupal 7 db setting in this file,
so default drupal 8 db settings comes with 
$database['default']['default']  copy this and make new key named as 
$database['upgrade']['default'] like below
$databases['upgrade']['default'] = array (
  'database' => 'dbname',
  'username' => 'dbuser',
  'password' => 'dbpass',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);
Make sure to have enable config properly the config folder in
$config_directories['staging'] // for drupal 7 config files
$config_directories['sync'] // for drupal 8 config files
Step-2  : Run the migration command from drupal 8  root
drush migrate-upgrade --configure-only
This command will generate migration configuration entities in the drupal 8 site, All the drupal 7 configuration would be availbale to the drupal 8 , next we will export these configuration in a directory in d8
Let suppose we are exporting these drupal 7 config in drupal8_root/tmp/migrate folder
drush config-export --destination=/tmp/migrate
Now You have two config in drupal 8 site, one is /tmp/migrate it has all the drupal 7 config and another is drupal8 /sites/default/config drupal 8 config files,,,,

So if we start migration then we have to copy the config files from /tmp/migrate   -> /sites/default/config folder.....

Lets Suppose we want to migrate only users then we would copy only two files as below,and paste it into the /sites/default/config

migrate_plus.migration_group.migrate_drupal7.yml
migrate_plus.migration_upgrade_d7_user.yml

We have to define one more db settting in d8 site with the key of drupal_7
it is defined in the (migrate_plus.migration_group.migrate_drupal7.yml) file
$databases['drupal_7']['default'] = array (
  'database' => 'dbname',
  'username' => 'dbuser',
  'password' => 'dbpass',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

Now run
Drush config-import staging

Drush ms (will show you the status of migration)

Drush mi upgrade_d7_user

All Done.  That is the process of drupal to drupal migration

A Guide for Upgrading a Drupal 7 Website to Drupal 8

Drupal 8 core comes bundled with the following migration modules:

Ref: https://www.youtube.com/watch?v=_z2FH0efd_g
https://drupalize.me/blog/201604/custom-drupal-drupal-migrations-migrate-tools

Comments

Popular posts from this blog

Get The field values of node in Drupal 8

use Drupal \ node \ NodeInterface ; /** * Implements hook_ENTITY_TYPE_insert() for node entities. * * This tests saving a node on node insert. * * @see \Drupal\node\Tests\NodeSaveTest::testNodeSaveOnInsert() */ function node_test_node_insert ( NodeInterface $node ) { // Set the node title to the node ID and save. if ( $node - > getTitle ( ) == 'new' ) { $node - > setTitle ( 'Node ' . $node - > id ( ) ) ; $node - > setNewRevision ( FALSE ) ; $node - > save ( ) ; } } Now There is so many functions are there to get the values, For All the functions available visit the API code, https://api.drupal.org/api/drupal/core%21modules%21node%21src%21NodeInterface.php/interface/NodeInterface/8.2.x Some of as below, Node edit form, Drupal 8 Automatically Load the whole object no need to load the entity like below, if ($event->getFormId() == 'node_alexa_audio_clips_edit_form') { $node = \Drupal::ro...

Drupal Setup with docker

Option 1:  docker pull mysql docker pull phpmyadmin docker pull drupal docker run -d --name MysqlClient -e MYSQL_ROOT_PASSWORD=drupal mysql Download the phpmyadmin image and Setup Container: docker run --name phpmyadmin -d --link MysqlClient:db -p 8083:80 phpmyadmin Download the Drupal image and Setup Container: docker run -d --name dweb2 --link MysqlClient -p 8082:80 -e MYSQL_USER:root -e MYSQL_PASSWORD:drupal drupal   We are using docker4 drupal and following below URL https://wodby.com/docs/1.0/stacks/drupal/local/ From Mount my codebase Download and unpack docker4drupal.tar.gz with hidden files in a new directory, also get the drupal code with in web directory composer create - project drupal / recommended - project my_site_name_dir It means with in new directory we have docker files and drupal files also has web folder for drupal. now run docker-compose up -d Now PROJECT_BASE_URL is mentioned in .env file open this url in the web with port, it will open the drupal page, ...