{"id":57836,"date":"2023-07-29T09:16:18","date_gmt":"2023-07-29T03:46:18","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=57836"},"modified":"2023-08-28T09:33:37","modified_gmt":"2023-08-28T04:03:37","slug":"migrating-users-roles-from-drupal-7-to-drupal-10","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/migrating-users-roles-from-drupal-7-to-drupal-10\/","title":{"rendered":"Migrating Users &amp; roles from Drupal 7 to Drupal 10"},"content":{"rendered":"<p><span data-preserver-spaces=\"true\">This blog will target the migration of users &amp; roles from the Drupal 7 website to the Drupal 10 website.<\/span><\/p>\n<h2><strong><span data-preserver-spaces=\"true\">Why should you migrate from Drupal 7 to Drupal 10?<\/span><\/strong><\/h2>\n<p><span data-preserver-spaces=\"true\">November 2023 will be the end of life for Drupal 7. With the release of Drupal 10, it is essential to migrate the website from outdated versions for better community support, technological advancement, and security.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">We will start with creating a role migration definition.<\/span><\/p>\n<h1 id=\"4269\" class=\"lk ll ev be lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh bj\" data-selectable-paragraph=\"\">First step: Create migration definition<\/h1>\n<p>Add the YAML file in the location <em class=\"mn\">\/custom_module\/config\/install\/migrate_plus.migration.d7_user_role.yml:<\/em><\/p>\n<pre><span class=\"hljs-attr\">id:<\/span> <span class=\"hljs-string\">d7_user_role<\/span>\r\n<span class=\"hljs-attr\">label:<\/span> <span class=\"hljs-string\">User<\/span> <span class=\"hljs-string\">roles<\/span>\r\n<span class=\"hljs-attr\">migration_tags:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">Drupal<\/span> <span class=\"hljs-number\">7<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">Configuration<\/span>\r\n<span class=\"hljs-attr\">source:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">d7_user_role<\/span>\r\n<span class=\"hljs-attr\">process:<\/span>\r\n<span class=\"hljs-attr\">id:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">machine_name<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">name<\/span>\r\n<span class=\"hljs-bullet\">-<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">user_update_8002<\/span>\r\n<span class=\"hljs-attr\">label:<\/span> <span class=\"hljs-string\">name<\/span>\r\n<span class=\"hljs-attr\">permissions:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">static_map<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">permissions<\/span>\r\n<span class=\"hljs-attr\">bypass:<\/span> <span class=\"hljs-literal\">true<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">flatten<\/span>\r\n<span class=\"hljs-attr\">weight:<\/span> <span class=\"hljs-string\">weight<\/span>\r\n<span class=\"hljs-attr\">destination:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">entity:user_role<\/span>\r\n<span class=\"hljs-attr\">migration_dependencies:<\/span>\r\n<span class=\"hljs-attr\">optional:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">block_content_type<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">contact_category<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_comment_type<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_filter_format<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_node_type<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_shortcut_set<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_taxonomy_vocabulary<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_taxonomy_vocabulary_translation<\/span>\r\n<\/pre>\n<p>AND<br \/>\n<em class=\"mn\">Add YAML file in the location \/custom_module\/config\/install\/migrate_plus.migration.d7_user.yml:<\/em><\/p>\n<pre><span class=\"hljs-attr\">id:<\/span> <span class=\"hljs-string\">d7_user<\/span>\r\n<span class=\"hljs-attr\">label:<\/span> <span class=\"hljs-string\">User<\/span> <span class=\"hljs-string\">accounts<\/span>\r\n<span class=\"hljs-attr\">audit:<\/span> <span class=\"hljs-literal\">true<\/span>\r\n<span class=\"hljs-attr\">migration_tags:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">Drupal<\/span> <span class=\"hljs-number\">7<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">Content<\/span>\r\n<span class=\"hljs-attr\">class:<\/span> <span class=\"hljs-string\">Drupal\\user\\Plugin\\migrate\\User<\/span>\r\n<span class=\"hljs-attr\">source:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">d7_user<\/span>\r\n<span class=\"hljs-attr\">process:<\/span>\r\n<span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">name<\/span>\r\n<span class=\"hljs-attr\">pass:<\/span> <span class=\"hljs-string\">pass<\/span>\r\n<span class=\"hljs-attr\">mail:<\/span> <span class=\"hljs-string\">mail<\/span>\r\n<span class=\"hljs-attr\">created:<\/span> <span class=\"hljs-string\">created<\/span>\r\n<span class=\"hljs-attr\">access:<\/span> <span class=\"hljs-string\">access<\/span>\r\n<span class=\"hljs-attr\">login:<\/span> <span class=\"hljs-string\">login<\/span>\r\n<span class=\"hljs-attr\">status:<\/span> <span class=\"hljs-string\">status<\/span>\r\n<span class=\"hljs-attr\">timezone:<\/span> <span class=\"hljs-string\">timezone<\/span>\r\n<span class=\"hljs-attr\">langcode:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">user_langcode<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">entity_language<\/span>\r\n<span class=\"hljs-attr\">fallback_to_site_default:<\/span> <span class=\"hljs-literal\">false<\/span>\r\n<span class=\"hljs-attr\">preferred_langcode:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">user_langcode<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">language<\/span>\r\n<span class=\"hljs-attr\">fallback_to_site_default:<\/span> <span class=\"hljs-literal\">true<\/span>\r\n<span class=\"hljs-attr\">preferred_admin_langcode:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">user_langcode<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">language<\/span>\r\n<span class=\"hljs-attr\">fallback_to_site_default:<\/span> <span class=\"hljs-literal\">true<\/span>\r\n<span class=\"hljs-attr\">init:<\/span> <span class=\"hljs-string\">init<\/span>\r\n<span class=\"hljs-comment\"># Custom Fields.<\/span>\r\n<span class=\"hljs-attr\">field_first_name:<\/span> <span class=\"hljs-string\">d7_first_name<\/span>\r\n<span class=\"hljs-attr\">field_last_name:<\/span> <span class=\"hljs-string\">d7_last_name<\/span>\r\n<span class=\"hljs-attr\">roles:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">migration_lookup<\/span>\r\n<span class=\"hljs-attr\">migration:<\/span> <span class=\"hljs-string\">d7_user_role<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">roles<\/span>\r\n<span class=\"hljs-attr\">user_picture:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">default_value<\/span>\r\n<span class=\"hljs-attr\">source:<\/span> <span class=\"hljs-string\">picture<\/span>\r\n<span class=\"hljs-attr\">default_value:<\/span> <span class=\"hljs-literal\">null<\/span>\r\n<span class=\"hljs-bullet\">-<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">migration_lookup<\/span>\r\n<span class=\"hljs-attr\">migration:<\/span> <span class=\"hljs-string\">d7_file<\/span>\r\n<span class=\"hljs-attr\">destination:<\/span>\r\n<span class=\"hljs-attr\">plugin:<\/span> <span class=\"hljs-string\">entity:user<\/span>\r\n<span class=\"hljs-attr\">migration_dependencies:<\/span>\r\n<span class=\"hljs-attr\">required:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_user_role<\/span>\r\n<span class=\"hljs-attr\">optional:<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">d7_field_instance<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">language<\/span>\r\n<span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">default_language<\/span><\/pre>\n<p>For user image migration, a separate YAML file must be added by ID name d7_file.<\/p>\n<h1 id=\"034d\" class=\"lk ll ev be lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh bj\" data-selectable-paragraph=\"\"><strong class=\"al\">Second step: Add a definition for source plugin<\/strong><\/h1>\n<p>Create the php class in location \/custom_module\/src\/Plugin\/migrate\/source\/User.php<\/p>\n<pre><span class=\"hljs-meta\">&lt;?php<\/span>\r\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title.class\">Drupal<\/span>\\<span class=\"hljs-title.class\">d10_users_migration<\/span>\\<span class=\"hljs-title.class\">Plugin<\/span>\\<span class=\"hljs-title.class\">migrate<\/span>\\<span class=\"hljs-title.class\">source<\/span>;\r\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Drupal<\/span>\\<span class=\"hljs-title\">migrate<\/span>\\<span class=\"hljs-title\">Row<\/span>;\r\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Drupal<\/span>\\<span class=\"hljs-title\">migrate<\/span>\\<span class=\"hljs-title\">Plugin<\/span>\\<span class=\"hljs-title\">migrate<\/span>\\<span class=\"hljs-title\">source<\/span>\\<span class=\"hljs-title\">SqlBase<\/span>;\r\n<span class=\"hljs-comment\">\/**\r\n* Extract users from Drupal 7 database.\r\n*\r\n* <span class=\"hljs-doctag\">@MigrateSource<\/span>(\r\n* id = \"d7_user\",\r\n* source_module = \"migrate_plus\"\r\n* )\r\n*\/<\/span>\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">SqlBase<\/span> <\/span>{\r\n<span class=\"hljs-comment\">\/**\r\n* {<span class=\"hljs-doctag\">@inheritdoc<\/span>}\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">query<\/span>() <\/span>{\r\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">select<\/span>(<span class=\"hljs-string\">'users'<\/span>, <span class=\"hljs-string\">'u'<\/span>)\r\n-&gt;<span class=\"hljs-title.function.invoke\">fields<\/span>(<span class=\"hljs-string\">'u'<\/span>, <span class=\"hljs-title.function.invoke\">array_keys<\/span>(<span class=\"hljs-variable\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">baseFields<\/span>()))\r\n-&gt;<span class=\"hljs-title.function.invoke\">condition<\/span>(<span class=\"hljs-string\">'uid'<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-string\">'&gt;'<\/span>)-&gt;<span class=\"hljs-title.function.invoke\">orderBy<\/span>(<span class=\"hljs-string\">'uid'<\/span>, <span class=\"hljs-string\">'ASC'<\/span>);\r\n}\r\n<span class=\"hljs-comment\">\/**\r\n* {<span class=\"hljs-doctag\">@inheritdoc<\/span>}\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">fields<\/span>() <\/span>{\r\n<span class=\"hljs-variable\">$fields<\/span> = <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">baseFields<\/span>();\r\n<span class=\"hljs-variable\">$fields<\/span>[<span class=\"hljs-string\">'first_name'<\/span>] = <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'First Name'<\/span>);\r\n<span class=\"hljs-variable\">$fields<\/span>[<span class=\"hljs-string\">'last_name'<\/span>] = <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Last Name'<\/span>);\r\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$fields<\/span>;\r\n}\r\n<span class=\"hljs-comment\">\/**\r\n* {<span class=\"hljs-doctag\">@inheritdoc<\/span>}\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">prepareRow<\/span>(<span class=\"hljs-params\">Row <span class=\"hljs-variable\">$row<\/span><\/span>) <\/span>{\r\n<span class=\"hljs-variable\">$uid<\/span> = <span class=\"hljs-variable\">$row<\/span>-&gt;<span class=\"hljs-title.function.invoke\">getSourceProperty<\/span>(<span class=\"hljs-string\">'uid'<\/span>);\r\n<span class=\"hljs-comment\">\/\/ Get first name from d7 db.<\/span>\r\n<span class=\"hljs-variable\">$result<\/span> = <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">getDatabase<\/span>()-&gt;<span class=\"hljs-title.function.invoke\">query<\/span>(<span class=\"hljs-string\">'\r\nSELECT\r\nfld.field_first_name_value\r\nFROM\r\n{field_data_field_first_name} fld\r\nWHERE\r\nfld.entity_id = :uid\r\n'<\/span>, [<span class=\"hljs-string\">':uid'<\/span> =&gt; <span class=\"hljs-variable\">$uid<\/span>]);\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$result<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$record<\/span>) {\r\n<span class=\"hljs-variable\">$row<\/span>-&gt;<span class=\"hljs-title.function.invoke\">setSourceProperty<\/span>(<span class=\"hljs-string\">'d7_first_name'<\/span>, <span class=\"hljs-variable\">$record<\/span>-&gt;field_first_name_value);\r\n}\r\n<span class=\"hljs-comment\">\/\/ Get last name value from d7 db.<\/span>\r\n<span class=\"hljs-variable\">$result<\/span> = <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">getDatabase<\/span>()-&gt;<span class=\"hljs-title.function.invoke\">query<\/span>(<span class=\"hljs-string\">'\r\nSELECT\r\nfld.field_last_name_value\r\nFROM\r\n{field_data_field_last_name} fld\r\nWHERE\r\nfld.entity_id = :uid\r\n'<\/span>, [<span class=\"hljs-string\">':uid'<\/span> =&gt; <span class=\"hljs-variable\">$uid<\/span>]);\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$result<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$record<\/span>) {\r\n<span class=\"hljs-variable\">$row<\/span>-&gt;<span class=\"hljs-title.function.invoke\">setSourceProperty<\/span>(<span class=\"hljs-string\">'d7_last_name'<\/span>, <span class=\"hljs-variable\">$record<\/span>-&gt;field_last_name_value);\r\n}\r\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-built_in\">parent<\/span>::<span class=\"hljs-title.function.invoke\">prepareRow<\/span>(<span class=\"hljs-variable\">$row<\/span>);\r\n}\r\n<span class=\"hljs-comment\">\/**\r\n* {<span class=\"hljs-doctag\">@inheritdoc<\/span>}\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">getIds<\/span>() <\/span>{\r\n<span class=\"hljs-keyword\">return<\/span> [\r\n<span class=\"hljs-string\">'uid'<\/span> =&gt; [\r\n<span class=\"hljs-string\">'type'<\/span> =&gt; <span class=\"hljs-string\">'integer'<\/span>,\r\n<span class=\"hljs-string\">'alias'<\/span> =&gt; <span class=\"hljs-string\">'u'<\/span>,\r\n],\r\n];\r\n}\r\n<span class=\"hljs-comment\">\/**\r\n* User base fields.\r\n*\r\n* <span class=\"hljs-doctag\">@return<\/span> array\r\n* Base fields array.\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">baseFields<\/span>() <\/span>{\r\n<span class=\"hljs-variable\">$fields<\/span> = [\r\n<span class=\"hljs-string\">'uid'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'User ID'<\/span>),\r\n<span class=\"hljs-string\">'name'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Username'<\/span>),\r\n<span class=\"hljs-string\">'pass'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Password'<\/span>),\r\n<span class=\"hljs-string\">'mail'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Email address'<\/span>),\r\n<span class=\"hljs-string\">'signature'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Signature'<\/span>),\r\n<span class=\"hljs-string\">'signature_format'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Signature format'<\/span>),\r\n<span class=\"hljs-string\">'created'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Registered timestamp'<\/span>),\r\n<span class=\"hljs-string\">'access'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Last access timestamp'<\/span>),\r\n<span class=\"hljs-string\">'login'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Last login timestamp'<\/span>),\r\n<span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Status'<\/span>),\r\n<span class=\"hljs-string\">'language'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Language'<\/span>),\r\n<span class=\"hljs-string\">'picture'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Picture'<\/span>),\r\n<span class=\"hljs-string\">'init'<\/span> =&gt; <span class=\"hljs-variable.language\">$this<\/span>-&gt;<span class=\"hljs-title.function.invoke\">t<\/span>(<span class=\"hljs-string\">'Init'<\/span>),\r\n];\r\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$fields<\/span>;\r\n}\r\n<span class=\"hljs-comment\">\/**\r\n* {<span class=\"hljs-doctag\">@inheritdoc<\/span>}\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">bundleMigrationRequired<\/span>() <\/span>{\r\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">FALSE<\/span>;\r\n}\r\n<span class=\"hljs-comment\">\/**\r\n* {<span class=\"hljs-doctag\">@inheritdoc<\/span>}\r\n*\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">entityTypeId<\/span>() <\/span>{\r\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">'user'<\/span>;\r\n}\r\n}\r\n<\/pre>\n<p><strong class=\"ko ew\">Used methods \u2014<\/strong><\/p>\n<p id=\"8ee6\" class=\"pw-post-body-paragraph km kn ev ko b kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj eo bj\" data-selectable-paragraph=\"\">To fetch data from the Drupal 7 database, the <strong class=\"ko ew\">query()<\/strong>\u00a0function is used.<\/p>\n<p id=\"1568\" class=\"pw-post-body-paragraph km kn ev ko b kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj eo bj\" data-selectable-paragraph=\"\"><strong class=\"ko ew\">prepareRow()<\/strong>\u00a0is called to load data from tables $row-&gt;setSourceProperty() will provide any property in our \u201cprocess\u201d step.<\/p>\n<p id=\"6ae2\" class=\"pw-post-body-paragraph km kn ev ko b kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj eo bj\" data-selectable-paragraph=\"\"><strong class=\"ko ew\">baseFields()<\/strong> describes the basic user fields the query() function uses.<\/p>\n<p id=\"ec4d\" class=\"pw-post-body-paragraph km kn ev ko b kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj eo bj\" data-selectable-paragraph=\"\"><strong class=\"ko ew\">Drush commands to start migration:<br \/>\n<\/strong>1. For role migration<br \/>\ndrush migrate-import d7_user_role<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-57834 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/07\/roleMigration-1024x69.png\" alt=\"\" width=\"625\" height=\"42\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/07\/roleMigration-1024x69.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/roleMigration-300x20.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/roleMigration-768x52.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/roleMigration-624x42.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/roleMigration.png 1380w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p data-selectable-paragraph=\"\">2. For users Migration<br \/>\ndrush migrate-import d7_user<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-57835 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/07\/userMigration-1024x80.png\" alt=\"\" width=\"625\" height=\"49\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/07\/userMigration-1024x80.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/userMigration-300x24.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/userMigration-768x60.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/userMigration-624x49.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/07\/userMigration.png 1338w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p data-selectable-paragraph=\"\">This process will migrate the users along with the password, custom &amp; base fields on our Drupal 10 website.<\/p>\n<div class=\"ap-custom-wrapper\"><\/div><!--ap-custom-wrapper-->","protected":false},"excerpt":{"rendered":"<p>This blog will target the migration of users &amp; roles from the Drupal 7 website to the Drupal 10 website. Why should you migrate from Drupal 7 to Drupal 10? November 2023 will be the end of life for Drupal 7. With the release of Drupal 10, it is essential to migrate the website from [&hellip;]<\/p>\n","protected":false},"author":1607,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":23},"categories":[3602],"tags":[1703],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/57836"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1607"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=57836"}],"version-history":[{"count":2,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/57836\/revisions"}],"predecessor-version":[{"id":58153,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/57836\/revisions\/58153"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=57836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=57836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=57836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}