This is a transcript of the Introduction to the Step-by-Step Guide for Migrating Data from Drupal 7 to Drupal 10. Click here to return to Introduction to the Step-by-Step Guide for Migrating Data from Drupal 7 to Drupal 10


[00:00:00] Michael Meyers: Hello, Drupal fans. Welcome to Tag1 Team Talks, the podcast of Tag1 Consulting. I'm really excited to announce that after a year of work, Mauricio Dinarte has completed his game changing step by step 31 part data migration blog post series, and we've packaged it as an ebook. This isn't just another tutorial.

[00:00:19] Michael Meyers: This is the ultimate guide for moving your Drupal 7 site to Drupal 10 or 11, and it's created by a subject matter expert who's led many successful large scale migrations. and rescued many organizations from migration disasters. So what makes this tutorial different? Well, we give you everything, complete local environment, pre configured source and target sites, real data to practice with, along with all these detailed step by step instructions that don't assume you're a Migrate expert.

[00:00:50] Michael Meyers: I guarantee, even if you are a Migration expert, you're going to learn a lot from this series, too. Starting today, you can download the entire series as an e book at no [00:01:00] cost. No more hunting through the blog posts to try and find what you're looking for, or bookmarking dozens of pages. You can just go to tag1.com/migrate-book and grab your free copy. Even if you're migrating from Adobe or Sitecore or another CMS to Drupal, this data migration resource is really going to help you out because let's be honest, data migrations are almost always the single most time consuming and costly aspect of a platform migration.

[00:01:29] Michael Meyers: So you don't want to get it right. You need to get it right. And that's exactly what this guide helps you do. I'm Michael Meyers, the managing director at Tag1. Just a little bit of business before we get started. At Tag1, we build large scale applications using Drupal, as well as many other technologies for leading organizations in every sector, including Pfizer, Google, the New York Times, the Department of Energy, the ACLU, just to name a few.

[00:01:55] Michael Meyers: Most organizations hire us because of our major contributions to open source projects, including [00:02:00] Drupal. For over 20 years, our team has been responsible for many of the innovations that have helped make Drupal the second most popular content management system on the Internet.

[00:02:09] Michael Meyers: And we apply that expertise in architecting the platform that powers millions of websites to ensure your mission critical projects are a huge success. So if you need help with your website, platforms, or large scale applications, please email us at info at tag1. com. That's T H E, the number one dot com.

[00:02:29] Michael Meyers: So let's jump in, joining me today on the show are Tag1 team members and renowned migration experts, Mauricio Dinarte, the author of our migration series, whose passion for teaching and speaking has helped countless developers learn complex web technologies, and Lucas Hedding a top Drupal contributor, a maintainer of the Drupal Migrate subsystem, and a mentor to the mentors, guiding new Drupal core contributors. Mauricio and Lucas

[00:02:53] Michael Meyers: thanks so much for joining me and welcome back to the show.

[00:02:57] Mauricio Dinarte: Hello. Thanks for having us. [00:03:00]

[00:03:00] Lucas Hedding: Thanks. Yeah, it's great to be here chatting about things that, uh, are so interesting.

[00:03:08] Michael Meyers: So just to step back and set the stage, um, Mauricio, um, you know. This book is a hundred percent focused on data migration. Uh, data migration is, you know, a key and big part of a platform migration, but there's also other components to completing a platform migration.

[00:03:30] Michael Meyers: So Mauricio, just to get us started, um, you know, data migrations is a really critical and large part of a platform migration, but it is a component.

[00:03:40] Michael Meyers: There are other important aspects as well. Um, why focus just on data migration in this series?

[00:03:47] Mauricio Dinarte: The primary reason is because, um, we haven't found a similar guide that will give you in detail, um, information about how to perform this operation from a migration standpoint. [00:04:00] Um, there are a lot of guides about theming or custom module development.

[00:04:05] Mauricio Dinarte: But for the migration in particular, there are good resources out there that will cover one topic or another, but we wanted to put a comprehensive guide that we get you like a step by step how to perform the operation and not only execute the migration, but also plan and think throughout the process.

[00:04:25] Mauricio Dinarte: So that decisions that you made today are going to make it easier for things that will come down the road. So as we're going to discuss in the podcast, uh, before ever writing a single line of migration code at all, we actually take the time of planning and, um, that's what we wanted to offer. We wanted to give you a guide.

[00:04:45] Mauricio Dinarte: where you can start your current website or application, plan what you want to do next in Drupal 10 or Drupal 11 , and basically connect the thoughts one step at a time.

[00:04:59] Michael Meyers: I know with, [00:05:00] uh, 31 posts over 300 pages of content, it puts it into context, data migration. Is, is, you know, a, a really, you know, difficult topic to cover and I'm sure there were more things you wanted to cover or, or more depth that you wanted to go into, so doing a more, you know, sure.

[00:05:18] Michael Meyers: If we had another two years, um, but yeah, like you said, there's a lot of great resources. Who is this book for? Like, you know, who should care about this? Who should read it? Who's going to get value out of it?

[00:05:31] Mauricio Dinarte: Um, I would like to say that this book is for everyone. Um, if you are a business leader, a project manager, by reading at least the first few sections of the book, um, We're not necessarily we are writing migrations.

[00:05:45] Mauricio Dinarte: You're going to get a very good understanding of the needs and requirements to, um, you know, do a project like this to perform a migration. Um, there are topics about planning about a strategy. Um, there are guides about [00:06:00] estimating efforts. So, um, this is going to give you a clue of how much it is going to cost, uh, both in terms of time and resources.

[00:06:08] Mauricio Dinarte: Um, also, um, I would say this, the primary audience would be developers in which after that, those planning phases, um, we give you like a development environment in which you can, um, execute all the exercises that are explained, uh, in the, in the book, and we give you like one step at a time. And in some cases, um, We go back in time basically because that happens in real life you after working on something you identify the need to to tweak things that have already been done and we give we basically simulate a real life scenario in which, um, things that are covered next, um, unveil things that you might have overseen in the past. And then we explain, you know, this is how you should have done it or planned it and so on. But basically [00:07:00] it is, uh, if you're a developer, it is like, uh, like line by line, uh, in some cases. Giving you the commands that you need to, you need to execute to perform the whole migration.

[00:07:13] Michael Meyers: I've been part of a lot of migrations. I've led large scale migrations. And I have to say, I read this and learn something in every post. So I definitely encourage people that are going to be participating in a migration to check this out. You're really going to benefit from it. The book, you know, the blog post series is broken down into four main topics.

[00:07:34] Michael Meyers: Uh, it covers the planning and preparation. Uh, there's the example repository and tooling along with, you know, how to do and run automated migrations. Uh, there's migrating configuration and lastly, migrating content. Uh, we're going to talk a little bit about each of those sections. Uh, but before we do that, I wanted to talk a little bit about one of the things that really surprised me in this book.

[00:07:57] Michael Meyers: I thought it would be exclusively, I mean, and this is just my [00:08:00] perspective, having, you know, done mostly large scale migrations. I thought this would be exclusively about the Migrate API. And Lucas, as you know, one of the maintainers of the Migrate API, I'm curious, you know, why go beyond that? Like, you know, uh, I hadn't thought of other use cases and, you know, reasons you may or may not use something other than Migrate API.

[00:08:25] Lucas Hedding: Well, the Migrate API. is sort of the icing on the top once you've figured out what you want to do. But if you don't know what you want to do, the saying goes, any road will take you. You got to sit down and plan. And, uh, if you've ever looked at a, Something we, whenever you look at a migration project, it is a project.

[00:08:53] Lucas Hedding: It's a, uh, it's a, you know, a left and a right where I've got to take [00:09:00] what's over here and throw it over here, but you got to figure out what it is that you want to move from left to right. Sometimes this quote migration is hiring a summer intern and then copying pasting, and that's more efficient.

[00:09:14] Lucas Hedding: That's more cost, uh, uh, effective. Then, and then automating it a lot of times it isn't, and that's where the migrate API comes into play. Um, you also have to just like figure out what data do you want to pull over? Some of this is blog posts from 15 years ago. Um, maybe we should store that as HTML and no longer.

[00:09:39] Lucas Hedding: You know, there's a lot of decisions that need to come in. Do you want to bring over and that's what goes into those first initial phases of figuring out what you're going to be migrating, uh, well before you you open up your I. D. E. It really is planning [00:10:00]

[00:10:00] Mauricio Dinarte: and from a technical standpoint, um, Drupal in general, this is not only from a migration standpoint, Drupal is a collection of a lot of different API APIs.

[00:10:11] Mauricio Dinarte: There are books that try to cover as many as possible. We can start naming them. There will be more than 10, 15, 20 different APIs, and they are all connected. They are all interconnected. So when we migrate content, when we migrate a configuration, we also touch on the Entity API. We also touch on the Field API.

[00:10:32] Mauricio Dinarte: We talk about validation. Uh, constraints, we talk about the database API and different, uh, content model, modeling strategies that might be applied. So, um, again, like even though the focus is on migrating the data, we take a holistic approach and we try to, when necessary, when appropriate in the right context, explain these other API that, uh, are connected.

[00:10:59] Michael Meyers: Yeah. Even [00:11:00] if you're doing a large scale migration, there may be aspects where you want to do things manually. Um, there may be small scale migrations that aren't worth automating. Like, like you said, Lucas, and even using the Migrate API entails a lot of different things. Um,

[00:11:16] Michael Meyers: so the first main section of the book is about planning and preparation. And one of the biggest topics in this is the source site audit. Um, and it is one of the most fundamental and important aspects of a migration. Why is that?

[00:11:34] Mauricio Dinarte: There is a saying that goes, measure twice, code once. And that is basically what we want to, um, you know, cover in this section.

[00:11:42] Mauricio Dinarte: Do you have, um, a Drupal 7 site that might be running for years? Uh, we have migrated projects that have been running for 10 plus years. And along that time, they have accumulated a lot of content. And to be honest, sometimes cruft, that for one, it might not be [00:12:00] necessary to move over. And the other thing is that technology evolves and you might want to leverage features that were not available before.

[00:12:08] Mauricio Dinarte: And in the past, in the current site, you have to resort to things that would be considered not. Uh, good practices anymore. So basically you, you, you take an x ray of your current site, both from a perspective of what data I have, how this data and different features, uh, support my, my business. And also from a technology standpoint, how things were implemented.

[00:12:37] Mauricio Dinarte: How they can be improved. So after taking that, you know, x ray, that is snapshot, you start thinking, you start planning. This is what Lucas was saying before, uh, about your new site. Like you have a vision, you, you know, what tools are going to be available, uh, in modern versions of Drupal. And then you start making the mapping to be able to connect the two.

[00:12:56] Michael Meyers: We're going to talk about the automated tooling in a second. [00:13:00] One of the things that I think makes this, you know, book so valuable to people are the resources that you provide. One of those is a source site audit checklist, you know, a guide to walk you through the process. Tell me more about that.

[00:13:17] Mauricio Dinarte: Yes. Um, along with the code repository, there is a file. That gives you commands that you can execute against your Drupal 7 site. Uh, one of them will give you a list of all the modules and themes that are currently enabled. So from a very high level, uh, perspective, you can get a sense of what modules were being used. You can verify if they have compatible versions in newer version of Drupal.

[00:13:42] Mauricio Dinarte: Um, as part of also for the migration, there are modules and tools that we run in the site itself that will give you replacements of modules, um, when, when they are found. So from one, uh, in one sense, we cover modules and themes, [00:14:00] but we also go beyond. And in particular, uh, we execute and provide the commands that you can use to execute a audit of the database, and there is a spreadsheet, a template that after running those SQL queries, basically you can copy over to a Google sheet and then you can have, you know, an even greater understanding of your current site. There are queries to analyze content types. Um, you know, how many of exists on the website, how many nodes are there, whether they are published or not, or the percentage of published versus unpublished nodes.

[00:14:36] Mauricio Dinarte: We have information about taxonomy terms, fields, views, menus, web forms, field collections, roles, files, um, text formats, image effects, basically a lot of the components that make a Drupal 7 website, you, you get, uh, just by issuing some commands, the information you put it in the spreadsheet and there are some [00:15:00] calculations that happen automatically, but just from having the information is useful to understand, Oh, this content type is no longer being used.

[00:15:07] Mauricio Dinarte: These vocabulary really doesn't need to be there. And why do I have three web forms that have zero submissions and things like that. So, uh, by running these queries and analyzing the database and the actual content, you can determine, um, you know, what things to keep, what things to drop. And when necessary, um, this is something that is covered also in the series.

[00:15:30] Mauricio Dinarte: When you want to apply content model changes, let's say you went from nodes to a different entity like media in the new site.

[00:15:37] Michael Meyers: I mean, Lucas, this is something that you and I work on a lot, right? People come to us, they want to do a migration. And the first question they ask is, you know, how long is it going to cost? And how long is it going to take me? And. You know, this, you know, obviously, sometimes we have the opportunity to go through a discovery, but, but often, you know, very early up front, you know, [00:16:00] after a phone call or two, we need to give people a ballpark.

[00:16:03] Michael Meyers: Um, and this process is, is fundamental to what we do.

[00:16:09] Lucas Hedding: I, uh, kind of have a funny story there. So, you know, you, we write these, uh, These blog posts, we put them out there and I read them as they come out and, uh, I was working on one of your, your estimates, Michael, and for client and, and someone reminded us.

[00:16:31] Lucas Hedding: Well, did you look at, at Mauricio's spreadsheet for collecting all of the answers to all these questions that we were sort of bumbling through trying to figure out how many field collections are there? Where's the, you know, all of the questions that if we stopped and thought we would have had all of them right there in front of us.

[00:16:55] Lucas Hedding: So it's, it's invaluable because these are the things we already are doing, [00:17:00] but it's not very thorough. And so then we, you know, we put our fingers up in the air and we're like, well, okay, this, this size, and then we could be totally wrong. And, and that's very costly, not only for us as an agency, but also for the client when they, they get the wrong impression for either how big or how small that, uh, of work they got to do, because they have things that they could use their money for if, if we over, overbid.

[00:17:29] Lucas Hedding: Um, and likewise, you know, no one likes to be told it's going to be, um, this small and it's, you know, five times as much as what everyone thought it was once we got in, because then we got in and we found how messy the data was.

[00:17:43] Michael Meyers: So what I'm hearing is we shouldn't publish this ebook because Mauricio's giving away our secret sauce.

[00:17:49] Michael Meyers: Is that, is that the moral of that story?

[00:17:52] Lucas Hedding: No, it's still a lot of work and there's still a lot of, you can't send AI at everything and then have it spit out a solution. [00:18:00] Uh, there's still a lot of knowledge in the, in the brain of Mauricio that I wouldn't, I wouldn't, uh, I wouldn't go to someone else if I had the option.

[00:18:09] Mauricio Dinarte: One thing about the book is, um, this is a, a reference to my future self. So yes, these commands basically I execute every day. Like the book is something that I bookmarked and I consult myself over and over because we have given, so much information and just like commands that you can execute by just copying and pasting and you get exactly the information that you need that, um, like, yes, it's valuable for everybody, but also as a developer doing these on a daily basis for years, this is like, you know, my, basically my cheat sheet in which I can just go copy paste and I have the information that I need to fulfill a specific task.

[00:18:56] Michael Meyers: I think that's what Lucas was really saying, and we we bounce between [00:19:00] all sorts of different types of estimates for moving fast. It's a really great resource to have to remind ourselves and have, you know, a thorough plan process every time you go through this. That's, you know, as consistent as possible.

[00:19:12] Michael Meyers: And it really is. But what we use, um, you know, it is what what you guys should use as well. So I hope everybody checks that out. Um, The, uh, the next big section is about both the example repository and the automated migration process. Um, I want to hear more about the, the tooling that you provided, like how, you know, he said, Oh, we provided with tooling to, you know, do a migration.

[00:19:36] Michael Meyers: What does that mean? And how easy is it to get up and running? Like, could I do it?

[00:19:42] Mauricio Dinarte: Yes. Uh, so basically the examples repository that we provide is based on ddev. You can go to ddev. com for more information, but it is. In my opinion, um, the best, uh, option to have local development environments for Drupal, and not [00:20:00] only for Drupal for that matter, like DDEV supports 20 plus, uh, platforms, but focusing on Drupal and, uh, in the specific example that we provide, we give you two sites, one Drupal 7 site, one Drupal 11 site.

[00:20:15] Mauricio Dinarte: That is fully configured, um, uh, when you execute about five commands for each and you have a fully working Drupal 7 site and a Drupal 11 site ready to be migrated. Basically a skeleton in which you can start going through the series and executing the commands. Uh, you, you will have in the end a migrated site.

[00:20:36] Mauricio Dinarte: So for one, um, we use DDEV for having both a Drupal 7 and a Drupal 11 site. And then we resort to tools that are provided both by Drupal Core and by contributed modules, many of which Lucas maintains, that helps with the automation process, um, in particular. Um, [00:21:00] we, we use the core Migrate API, which supports, uh, Migrate, Migrating from Drupal 6 and Drupal 7.

[00:21:07] Mauricio Dinarte: Um, but if you are only use that, it will try to get a one to one copy of the legacy site. And in many cases, that is not what you want. Uh, we, we have been discussing, you might want to. Remove content or old features and configurations. You want to leverage new features. Um, you want to make changes to the content model and optimizations in general.

[00:21:30] Mauricio Dinarte: So having a verbatim copy is rarely what you really want to do. So, um, then we go on to explain like other modules that you can use to generate and automate some of that migration, some of the, from some of the content and the configuration automatically. But with the option to tweak and customize to your specific needs.

[00:21:53] Mauricio Dinarte: And in the subsequent sections, we, we explain the process of customizations, what was [00:22:00] iterated automatically.

[00:22:01] Michael Meyers: When I asked if I could do it, I appreciate you're not saying maybe.

[00:22:09] Mauricio Dinarte: So going back to DDEV, DDEV has fantastic support and literally anybody with a computer can download the tool. And have it up and running with very little friction.

[00:22:24] Michael Meyers: Yeah. Huge shout out to Randy Fay and the DDEV community. Uh, we're big supporters of them and it really is an amazing, uh, and easy tool. And that's exactly what I use when I need to fire up a demo or get something done.

[00:22:38] Michael Meyers: One of the things that really surprised me about this was the number of articles, uh, that you had in the migration of configuration section. I would have thought that. It was maybe an article or two, not a section with nine articles. Uh, Lucas, why is configuration such a huge part of a data migration? [00:23:00]

[00:23:01] Lucas Hedding: I remember it's probably been eight years ago working on splitting out in Drupal core, the differentiation between configuration and content migrations.

[00:23:15] Lucas Hedding: And that's where we added all of those tags. And all of the migrations of Drupal core. So that's what we then end up standing on the shoulders of with all of these automated tools. Uh, I'm waiting for Mauricio to nod because I think that's what exactly we're doing. Uh, configuration is the stuff in Drupal 7 like features or, um, just those, those.

[00:23:41] Lucas Hedding: Settings and configurations of the site. They tend to be set and forget, and we need to make sure that when we pull over, say, path auto or meta tags or [00:24:00] core configuration that we take the old name of whatever the setting and the toggle was and pull it into the right new name. And then once you're done with configuration.

[00:24:13] Lucas Hedding: On a, on a site, you end up not having to touch that ever again. It was just sort of like, pull this stuff over and, and, and in my experience, I do the configuration. Once I get the configuration right. I just sort of scrap and throw that in the, in the dust bin and then start focusing on the content. Is that, um, Mauricio, your approach then too?

[00:24:37] Mauricio Dinarte: Yes, that's what is explained and core in the series. We basically cover all of the configuration first, and then we have a skeleton. So let's take a step back a little bit. Configuration would be things like your content types, your fields, your vocabularies, your media types, your paragraph types, and so on.

[00:24:57] Mauricio Dinarte: It is possible to have this skeleton with [00:25:00] all the configuration elements in place without having, you know, one piece of content. So that's what we do. Initially, we go over everything, uh, configuration wise to have these boxes in which we can start adding content into. And something anecdotal, if you will, about this section until relatively recently.

[00:25:24] Mauricio Dinarte: Most of the migration projects that I was involved with didn't include automatic migration of configuration. Why? Um, because, um, it was until recently that Drupal 7 end of life was real, that people started to hurry to get their site updated. Uh, because they wanted to be, they needed to be in a supported version of Drupal.

[00:25:46] Mauricio Dinarte: And they were willing to make the compromise of forgoing some improvements, even if that meant, you know, having a one to one copy or as close as possible copy of what they had before. [00:26:00] Provided that they are on a supported version of Drupal. So very early on people were, you know, we're going to replatform.

[00:26:07] Mauricio Dinarte: We're going to invest a lot of time and effort into, into this project. We want to get it right. And we're going to take advantage of, of all the new things. So in those cases, people were actually building the new site from scratch in Drupal 10 or Drupal 11. And, uh, after that, um, shell, if you will, uh, was created only the content needed to be moved, moved into the, into the new structure.

[00:26:34] Mauricio Dinarte: But nowadays, uh, people again are in a hurry and this automatic migration of configuration also helps them. And along the way, uh, we mentioned at the beginning, this was about a year long effort. Drupal itself continues to evolve, um, in as part of the series, we don't try to use the Migrate API as the one and only solution for everything.

[00:26:57] Mauricio Dinarte: As Michael was saying, we, we talk about, and [00:27:00] we discuss other APIs. So of course the focus is the Migrate API. Most most of the configuration gets migrated automatically. But at some point we also talk about when manual changes are easier to do and more cost efficient to do. But in particular, the last two blog posts in this section talk about recipes.

[00:27:19] Mauricio Dinarte: And recipes is not something that you normally encounter or discuss when talking about a migration because it's a relatively new concept. Um, but there are many things that, um, are already available using recipes in Drupal 10 and Drupal 11 that just like by applying, again, some commands that you can copy and paste from the series, you get, um, not only configuration creates for you, but configuration model.

[00:27:47] Mauricio Dinarte: Model after what Drupal core uses out of the box. So you can, you, you, you can, uh, have this confidence that you are working with something that has been battled [00:28:00] tested because it is part of Drupal core. And also that is going to be familiar with your future self and other developers that they know how Drupal core works out of the box.

[00:28:10] Mauricio Dinarte: And, you know, these set of. Media types, for example, you know, they, they will know how to interact with them just by, because it would be the same as with any other Drupal 10 or Drupal 11 site that they ever encounter. So we talk about, um, the technical, technical part of things, but we also like try to think about.

[00:28:30] Michael Meyers: Um, what is more efficient and what other tools might be available for you to, to accomplish the same task. And the migration of content is the final section, obviously, you know, a big chunk of the, the book, um, you know, just at a high level, what are some of the key things that you cover in that?

[00:28:50] Mauricio Dinarte: Um, the first thing is do not shoot yourself in the foot and I mentioned it because, um, in every single [00:29:00] migration project that I have worked with at some point, there are problems because of not planning well, um, how to handle the migration of configuration in particular.

[00:29:12] Mauricio Dinarte: Uh, Drupal nowadays uses numerical identifiers, uh, for keeping track of content. So if, which is the case for large, large scale projects, if you need to break down your project into multiple phases and potentially multiple months, um, you will be doing migrations over and over in an incremental way. And at some point you are going to give a partially migrated site to people who will be testing the new site and new features and so on.

[00:29:41] Mauricio Dinarte: And if you don't. plan carefully, uh, you might end up with, uh, conflicted entities like this and so on. So the first article in that section, it talks about how to prevent this. Like, um, you know, as I said before, planning is key. And before ever giving you that, [00:30:00] you know, the instruction on how to start migrating content, we give you like all the red lights that you need to be thinking about in the future.

[00:30:07] Mauricio Dinarte: And in every other subsequent article that talks about migration of content, we have a dedicated section about, okay, remember to do this, remember to take these actions in order to prevent entity conflicts in the future. Another thing that is also covered in every, um, um, content migration is a section on performance.

[00:30:29] Mauricio Dinarte: How, uh, in particular, how to use a tool called High Watermark. To improve the performance of, um, the specific entities that you will be migrating. So, you know, with that preface, uh, then we talk about migrating files, users, taxonomy terms, um, how to apply entity model changes, like the specific example that we cover in the book is going from field collections in Drupal 7 to Paragraph in Drupal 11.

[00:30:59] Mauricio Dinarte: We [00:31:00] also talk about migrating media, um, migrating nodes and so on. Uh, there are plenty of examples. And in some cases, the same entity, uh, is in Drupal 7 and in Drupal 11, but there are also. A couple of example, when you want to apply content, whether it changes, what are the considerations that you need to take in order to do that properly?

[00:31:28] Michael Meyers: I want to ask a personal question, you know, the, you wrote. A blog post, a really in depth blog post with code examples. Plus there's all of the tooling, the checklist, you know, you published at least, uh, you know, uh, one big thing every week and a half on average for a year, that's, you know, a, a huge endeavor.

[00:31:53] Michael Meyers: And it took a tremendous amount of drive. I'm, I'm really curious. Um, how did you stay [00:32:00] motivated? Like, how did you drive, you know, yourself to, to do this over the last year?

[00:32:06] Mauricio Dinarte: Um, well, it's many things. For one is one way to give back to the community. Um, I have received so much from Drupal, so. Uh, this is one way in which I can say thank you.

[00:32:19] Mauricio Dinarte: Another thing is what I said before. This is my guide to my future self and to be honest It's my guide to my everyday self and Probably what what what you are trying to to say is like yes, these are very technical articles and You know writing one can take 20 plus hours just The writing process, not counting the review, the editing and everything that comes after the fact.

[00:32:50] Mauricio Dinarte: So to keep me motivated, to keep me sane, uh, I also try to, you know, be fun from time to time. Um, and in the [00:33:00] articles, there are many Easter eggs. If you pay close attention, you will find references to, you know, Drupal stuff. Um, if you see a number that looks strange, maybe. That can be a date that is important in the, in the history of Drupal.

[00:33:15] Mauricio Dinarte: Um, we also like, if you see dimensions in an image that might be a year, something happened or, um, again, a date, there are references to movies. There are references to songs. Um, There is even a full, uh, um, training session in one of the articles. Uh, so yeah, look, look, look them up and feel free to ping me on social media or in Slack, uh, if you find them, because again, it is a lot of effort from a technical perspective.

[00:33:47] Mauricio Dinarte: So some, in order to keep it interesting for myself and for the readers, I try to put fun from, you know, from time to time in inside articles themselves.

[00:33:58] Michael Meyers: Yeah, that's a really great point to acknowledge. [00:34:00] I mean, I can't thank you enough for all of your hard work on this, but, uh, you know, Janez Urevc, you know, did a tremendous amount of editing and feedback.

[00:34:08] Michael Meyers: June Gregg, Bryan Pruett, Jeff Sheltren, so many people, uh, chipped in. You know, Lucas, uh, you know, give feedback, review code, uh, and help along the way. And so, um, you know, thank you to everybody who helped Mauricio make this a huge success. Um, before we wrap up, let's just touch on the book. Um, the book is out now.

[00:34:31] Michael Meyers: Uh, it is free. You can get it at tag1.com/migrate-book. Uh, Mauricio, uh, is this, uh, online only in print and. What all does it include?

[00:34:46] Mauricio Dinarte: Um, so what you are going to get is a mobile version, and that mobile version can mean PDF, ebook, or mobile, depending on your preference of format and device in which you will be reading it.

[00:34:59] Mauricio Dinarte: [00:35:00] Um, if you would like to see it printed, let us know and we can Um, work on that. And in addition to the book itself, the accompanying code repository that we mentioned before, that is at github. com slash Tag1 Consulting. Um, and it is linked from, from the book itself.

[00:35:21] Michael Meyers: Awesome. Mauricio, thank you so much for all of your hard work on this book.

[00:35:26] Michael Meyers: Uh, Lucas, thanks for your help and thank you both for joining us. Um, all the links we mentioned, we'll put them in the show notes. Uh, please, uh, remember to upvote, subscribe and share this with other Drupalists. Um, check out our past Tag1 Team Talks at tag1. com slash TTT. That's three T's for Tag1 Team Talks.

[00:35:47] Michael Meyers: Uh, and as always, we'd love your feedback, uh, your input on this book. Tell us if it was helpful to you, useful to you, what changes you'd like. That was, if there are topics you want us to cover in future shows, whether it's Migrate or [00:36:00] something else, you can reach us at TTT at tag1. com. That's T A G, the number one. com. Thank you all so much for joining us today. We'll see you next time.

[00:36:10] Mauricio Dinarte: Thank you. Bye.

[00:36:14] Mauricio Dinarte: Thank you.