This is an edited transcript. For the blog post and video, see Drupal Migrations: Getting Started.
[00:00:00] Michael Meyers: Hello and welcome to Tag1 Team Talks brought to you by Tag1 Consulting. With Drupal 7 and Drupal 9 rapidly approaching end of life, we're hearing people talk about migrating and upgrading more than ever before.
[00:00:12] Michael Meyers: And anyone who's ever been involved with a large scale migration, migrating a large application or site from one technology stack to another, is going to tell you that it's complex, time consuming, and it demands expertise. That's why today we're kicking off a brand new series of talks diving deep into the world of Drupal migrations.
[00:00:32] Michael Meyers: and who better to guide us than Tag1's very own Drupal migration experts from the masterminds and maintainers of Drupal's migration tooling to the individuals behind the most groundbreaking Drupal migrations, we've got an all star lineup will cover everything you need to know about every aspect of migrating large scale applications.
[00:00:51] Michael Meyers: In today's episode, we're going to talk through some of the jargon at a high level, including porting code and themes and migrating data users and configuration.[00:01:00]
[00:01:00] Michael Meyers: You'll walk away with a solid understanding of the terminology and the context you need to talk like an expert and dive deeper into the world of migration topics in our upcoming talks. Be sure to stick around for the end because we're going to be announcing a few of our first talks in this series that are coming up next.
[00:01:16] Michael Meyers: Without further ado, let's dive in. I'm Michael Meyers, the managing director at Tag1 Consulting. And I'm joined today by an all star lineup of top Drupal contributors, including Janez Urevc, the co host of this series, Benji Fisher and Lucas Hedding, two of the five current Drupal Migrate core subsystem maintainers, Mauricio Dinarte, who is the Drupal migration expert and the author of the 31 Days of Migration series.
[00:01:41] Michael Meyers: And Mike Ryan, the co creator of Migrate. Welcome everybody. And thank you guys so much for joining us. Hello. Hello.
[00:01:52] Michael Meyers: So I often hear the term upgrade and migrate used interchangeably. I'm going to upgrade my [00:02:00] site from D7 to D10 before end of life. I hear that about, you know, pretty much as often as I hear, I'm going to migrate from Drupal 7 to Drupal 10 before EOL.
[00:02:09] Michael Meyers: And I'm wondering, are those the same thing? Does it matter? Benji, what do you think?
[00:02:16] Benji Fisher: So there, there's actually a third term that gets bandied about, which is update. And then we, uh, spend a lot of time discussing the distinctions between upgrades and updates. But, um, a migration is, is really going from, from one system to another and the old system.
[00:02:37] Benji Fisher: Might be something entirely different. I don't know, uh, Sitecore, Confluence, WordPress, and you're migrating into Drupal. Um, the old system might be an older version of Drupal because before Drupal 8, Um, anything before Drupal 8 is really a different system from, Drupal as we've come to know it in the last eight years.[00:03:00]
[00:03:00] Benji Fisher: So, um, an, an upgrade or an update, you're keeping the same system. Um, it's usually a simpler process. You're not making radical changes and a migration. Um, you are making radical changes. So for example, going from Drupal 7 to Drupal 10 or anything before Drupal 8 to anything after Drupal 8, um. There are, uh, really big changes in how the, the code is organized, and, and therefore, Um, there are necessary changes in the database to accommodate those changes in the code.
[00:03:44] Benji Fisher: Um, so, so moving from Drupal nine to Drupal 10, it's either an upgrade or an update, um, going from Drupal seven to Drupal 10, it's a migration. Does that answer the question? [00:04:00]
[00:04:00] Michael Meyers: Yeah. You guys, you guys agree?
[00:04:03] Janez Urevc: Spot on. Yeah.
[00:04:04] Mike Ryan: Spot on.
[00:04:04] Janez Urevc: Uh, and there is another term, related term, uh, that is often used, which is called porting, porting code. Um, so how does that relate to migrations? Uh, Lucas, do you have any opinions on that?
[00:04:20] Lucas Hedding: Well, if you're going from Drupal 9 to Drupal 10, there's going to be a little bit of porting code.
[00:04:30] Lucas Hedding: Hey, if you're just upgrading from one point release to another, you might be doing some porting if... There's some, some deprecated feature, uh, porting is just getting your code up to snuff for the latest and greatest version comes into play quite importantly with the, the topic of migrating from an older system to Drupal 9 and 10, because if you're coming from Drupal 7, you've got all this legacy business logic, logic that needs [00:05:00] to be addressed.
[00:05:01] Lucas Hedding: Uh, as you're as you're moving the site from here to there, and you've got this, uh, this code that you need to upgrade, uh, and people conflate and combine the, hey, I'm migrating. I'm migrating my site. And I've got all this legacy code. I don't know if we're Defining terms here, migration is just that data movement from one system to the other.
[00:05:27] Lucas Hedding: You also have to consider all of your legacy code. And that's not so much the migration process. It's moving your code from older PHP paradigms, um, functional programming, where you've got function XYZ to classes. Uh, and, and injecting, um, dependencies and all this, this, um, some would say goodness of, of a more modern PHP framework.[00:06:00]
[00:06:01] Lucas Hedding: Um, there's, uh, in our, in our talks and prep for this, there was a mention about like retrofit. Where does that fit in here? Uh, that can fit in here. That's, it's a new thing that's becoming more and more, um, talked about in the circles, uh, around Drupal. Well, how do I get my Drupal 7 site code working with Drupal 9, Drupal 10?
[00:06:24] Lucas Hedding: And, uh, to be honest, I haven't looked at it, uh, quite enough to know, but it's, it's out there, um, going to be looking into it more with a couple of my. Upcoming projects. But, uh, that's definitely a piece that might fit in this, this place of we've got old code, how do I throw a square, like square peg into a round hole?
[00:06:49] Lucas Hedding: And how do I make these things work? Well, you're going to have to look at your code. You're going to have to see, can I take the logic from there and put it into the new processes? [00:07:00] In some cases, in a lot of cases I'm finding. I don't even need to pull over that legacy code. There's a lot of stuff that I had for malters or whatever else in Drupal seven, because it was harder to do what I wanted to do.
[00:07:16] Lucas Hedding: And now it's just natively there in Drupal nine and 10. I don't know anyone else have, um, feelings in this space.
[00:07:25] Mauricio Dinarte: Um, one thing that it would be worth mentioning is the fact that, um, we can step out a little bit and think about a Drupal 10 project as consisting of at least four different parts. One is the content, the configuration, the custom code and the custom themes.
[00:07:44] Mauricio Dinarte: So we're talking about right now is the custom code. And when we talk about migrations. We usually talk about it in the context of the Migrate API. So the Migrate API is about migrating the first two content and configuration, but it doesn't [00:08:00] touch on migrating either custom code or custom themes. So this is where you need to do, you know, extra work outside of the Migrate API to move your, let's say Drupal 7, uh, custom code.
[00:08:13] Mauricio Dinarte: To make it compatible with, uh, Drupal 10. There are tools that you can use, but the Migrate API is not the one that you will be using. Um, something that you might want to look at is, uh, code modes, which are automatic tools to, uh, refactor your code base to either a newer version of the language or a newer version of the framework that you're using.
[00:08:36] Mauricio Dinarte: So in that sense, uh, there have been a couple of efforts, uh, probably the most used today is Rector, Drupal Rector, to keep your site up to date, I mean, to keep your code up to date, with this, uh, newer standards of PHP and. Uh, deprecation removals of, uh, api functions and such. But this need of moving from one version to another [00:09:00] has existed over the years.
[00:09:01] Mauricio Dinarte: So there are also like Drupal module operator projects that will help you a little bit with that. But again, like, uh, porting code, and we will be talking next about this porting themes, that is something that happens outside of the Migrate API.
[00:09:18] Benji Fisher: Yeah, just
[00:09:18] Benji Fisher: to follow up on what Mauricio said, um, the, the content and the configuration, those are both in the database, and that's what the Migrate API helps us with. And just to follow up on something that Lucas said, um, Uh, another reason for rewriting your code, which is basically what porting amounts to, is that Drupal has changed so much.
[00:09:41] Benji Fisher: In Drupal 6 and 7, we would often create custom database, uh, database tables, um, as, as part of the site. And a lot of that is unnecessary now. We can create entities and take advantage of, uh, of the structure that Drupal gives us [00:10:00] to, to do things without having to create custom tables now.
[00:10:04] Michael Meyers: Interesting. So there's there's things in the database that you migrate.
[00:10:07] Michael Meyers: There's things outside of the database that you migrate. Um, when you're outside of the database, we talked about code. Another big thing is themes. Um, you know, uh,
[00:10:21] Michael Meyers: you guys consider a theme separate from code. And what does it mean to migrate a theme then, Janez?
[00:10:32] Janez Urevc: Um,
[00:10:58] Janez Urevc: Um, the main [00:11:00] question that I think everybody needs, everybody that has to migrate a Drupal 7 site to D9 or D10 is whether... They will keep the theme as it is, or use this opportunity to also do a redesign. The reason why this question needs to be answered is, uh, the fact that the theme, the theme APIs, uh, changed a lot between Drupal 7 .and Drupal 8. In Drupal 8, we got Twig, um, and many other changes, but Twig is one of the biggest. Which means that all the templates that existed in D7, we need to be rewritten to Twig anyway, which can be quite a lot of effort. Um, so sometimes just keeping the theme as it is visually requires almost as much effort as doing a redesign.
[00:11:57] Janez Urevc: On the other hand, if you [00:12:00] keep your theme as it is, you limit your risk. So it's really up to every individual organization to decide where their priorities are. And I heard that Lucas had some very interesting experiences in this area in the past, so maybe you can comment to that.
[00:12:16] Lucas Hedding: It was a Migrate project several years ago.
[00:12:19] Lucas Hedding: It was, it was actually into Drupal 7 at the time, but I think the, the concept definitely applies with Drupal 10. It was a very, very large pharmacy, pharmaceutical, uh, organization in the United States. And they, they didn't want to go back to the FDA and get their, their marketing material re approved. So if the pixels were off, if the CSS moved something wrong, they had to go back to the FDA.
[00:12:46] Lucas Hedding: And get reapproval, uh, they needed to move off their legacy system. This is a bit of an extreme case, but in their case, it definitely made a lot of sense to, to maintain the look and the appearance of [00:13:00] everything when they moved over into Drupal 7. If you've got a situation like that, where you've got a huge investment.
[00:13:07] Lucas Hedding: Where it's going to cost a lot of time and dollars to to make it better, because I think that's the goal when you when you redesign a theme is you want to make your appearance better. But in their case of this large pharmaceutical they couldn't make it better at the same time as moving off their legacy system they had.
[00:13:29] Lucas Hedding: Dates and deadlines. And if they didn't move off by X date, they're going to have to pay millions of dollars back to the vendor for their legacy system, uh, to get another year of maintenance and support. And, uh, it's one of those things where you can't just say, well, it's a cut and dry decision. We're, we're, we're gonna not change the theme or we are going to change the theme layer.
[00:13:54] Lucas Hedding: Um, there's nuances to all of these things. Great. [00:14:00] Uh, for everybody tuning in from the outside of the United States, FDA stands for Federal Drug Administration, as far as I know, which is basically the regulatory agency that regulates everything related to drugs and Also food, if I'm not mistaken. I think so.
[00:14:17] Mike Ryan: Uh, food and
[00:14:18] Mike Ryan: drug administration actually. Okay. Food and drug administration. Food,
[00:14:23] Janez Urevc: yeah. I'm obviously not from the United States, so I completely You don't have to deal with it.
[00:14:28] Lucas Hedding: No. , no, but you get the benefit, I think. I think a lot of countries around the world will say, oh, that's not approved by the FDA, with like some of the even recent vaccines that came out with Covid, but we're just gonna go with whatever the F D A approves.
[00:14:42] Lucas Hedding: Um, exactly. Yeah, it's very, very strict. Uh, and costly to go through that process.
[00:14:51] Janez Urevc: Awesome. Um, Mauricio already, uh, mentioned, uh, data, which is. A huge, like [00:15:00] migrating data is a huge part of every migration. Uh, so we should probably talk about that a little bit. Um, Ryan, you are, as far as I understood, you are one of the original creators of the Migrate module.
[00:15:13] Janez Urevc: So I guess you definitely have... A few things to say about that.
[00:15:18] Mike Ryan: Yeah, one or two, maybe, um, boy, that was a long time ago. But, uh, so data when we, when we talk about data, basically your site content, your site content. Represents data you want to present to your visitors. Um, and there's also data about the site itself, the data about your visitors in the form of user accounts.
[00:15:46] Mike Ryan: Um, there's assets as such as images, videos, and other files. And, um, of course it's critical when you're moving to a new platform, [00:16:00] you've got to get your square pegs in the form of. How the content was originally stored, into the round holes, nice, perfect circles that Drupal provides. Um, or maybe some of those not quite so round holes from our earlier versions of Drupal forward to modern Drupal.
[00:16:24] Mike Ryan: And so, um, the data may come in many forms, most commonly in modern CMSs most of your data is in a, an SQL database, but you may also receive data from web services from flat files such as CSVs or spreadsheets and, um,
[00:16:52] Mike Ryan: and critically you need to, these, this data has relationships. One [00:17:00] article. References several categories, perhaps, and these need to be maintained when you are migrating the data.
[00:17:08] Mike Ryan: So, uh, classically be a large data migration uses what is called an ETL, uh, system. ETL stands for extract, transform, load. Classically, you would extract all the data from your source system into one form. You would run some sort of program to transform it into an appropriate form for your new system, and then you would load this in bulk into your new system.
[00:17:43] Mike Ryan: Uh, the Drupal migration API does do extract, transform, load, but it does it row by row, object by object, entity by entity. So, in your typical case, you're going from database [00:18:00] to database. You're running a database query that returns one row at a time from your source. The migration system transforms that row to the appropriate, uh, format for the destination and then you load it into that destination.
[00:18:20] Mike Ryan: Um, and this gives you great flexibility in that transformation step. You can write very precise transformers that can say, in this case, we want to capitalize the strain in another case, we want to add a prefix to it and so forth. So it's a very flexible system and it also, um, in the process of moving this data, it knows how to identify each source item and each destination item and keeps track of the [00:19:00] connection.
[00:19:00] Mike Ryan: So we know that the content item number 78 that we've loaded into Drupal, that came from the original CMS's ID number 33. We have this mapping from 33 to 78, which means that while we're doing this. Anything that referred to that, uh, data item 33 in your old system, we can use that map table and update the relationships.
[00:19:29] Mike Ryan: So they now point to the right place on the Drupal side, which is. 78. Um, and anyone want to, uh, add a little?
[00:19:43] Mike Ryan: Yeah, I do.
[00:19:44] Lucas Hedding: You did a really great job, Mike, explaining this. Have you done a migration or two before? I'm joking here.
[00:19:52] Lucas Hedding: Migration
[00:19:53] Janez Urevc: or 20?
[00:19:54] Lucas Hedding: I remember when I first met you, you were, you were introduced as Mr.
[00:19:57] Lucas Hedding: Migrate. [00:20:00] Are you still known as that in the community or?
[00:20:03] Mike Ryan: Uh,
[00:20:04] Mike Ryan: well, not so much. I'm, um, my role now is less implementing migrations and more, um, reviewing, reviewing code because the, the migration, uh, framework, including all the contributed modules. In the, uh, in the Drupal ecosystem is much more evolved.
[00:20:27] Mike Ryan: It's much more mature now than when I, Moshe and I started way back when. And there's so many more people like the people on this call who've developed the migration skills. Um, so, you know, I, I could, I can look at Lucas's code and check it off. I don't need to worry about it. All right. I will test it. I will test it.
[00:20:51] Mike Ryan: We are, we are good about our testing, but
[00:20:54] Mike Ryan: I trust Lucas.
[00:20:56] Michael Meyers: I don't want to jump ahead to the talks that we're going to be doing, but [00:21:00] I really want to do a history of Migrate to talk about, you know, the birth of the Migrate tooling and, you know, why you guys created it and some of the big projects that sort of evolved it to, to where it is today, because it's, it's, it's really. Amazing and powerful piece of software. And, um, I think a lot of people would be fascinated by the things that you can do with it.
[00:21:22] Mike Ryan: Well, my memory, we're going to have to depend on my faulty memory for that. archaeology on drupal. org.
[00:21:35] Benji Fisher: I'd like to elaborate a little on something that, that Mike said. So, um, say you have a site with 10, 000 articles, um, and they have some sort of classifications, some tags or something, and there are a hundred of those. Um, So in a sense, the easy part is migrating the 10, 000 articles and the 100 taxonomy terms.
[00:21:58] Benji Fisher: And what you also [00:22:00] have to do is make sure that the right taxonomy term gets attached to the right article, which is sort of a 100 times 10, 000 scale problem. And you handle that with the sort of thing that Mike was talking about, keeping track of the new and old. IDs and, um, you know, sometimes I'll, I'll have a vocabulary that, uh, that just has two terms in it, a true false or a yes, no vocabulary, and because I want to attach that vocabulary to things, I'll, I won't just recreate it on the new site, I will
[00:22:31] Benji Fisher: migrate it.
[00:22:34] Michael Meyers: What about the content itself? Like, one of the things I've seen is that, you know, especially going from like, say a legacy CMS or, or, you know, something outside of Drupal, there's a ton of stuff in the content. And, and how do you need to manipulate the content itself to get it into Drupal in a more modernized fashion and some of the things that you do to make that happen.
[00:22:54] Michael Meyers: Um, did you talk about that?
[00:22:55] Lucas Hedding: Benji's the expert there. He wrote all the DOM transform [00:23:00] properties and plugins for, uh, Migrate Plus.
[00:23:05] Benji Fisher: Are we planning to talk about that in one of the future podcasts?
[00:23:10] Mike Ryan: I'd love to.
[00:23:14] Michael Meyers: Yeah. That's a major topic.
[00:23:16] Lucas Hedding: But no, yeah, you can totally do the transformation on the body field. Uh, and there's a bunch of things that have come up in contrib space that allow you to do that.
[00:23:26] Michael Meyers: I think, you know, all the things that you guys mentioned is why data migrations are so complicated and challenging, you know, the amount of data, the relationships, what's in the data, how you need to transform it. Um, I think it's, you know, in my experience, it's something that organizations tend to really underestimate.
[00:23:43] Michael Meyers: And when they do so, it leads to a lot of problems and challenges. Uh, we're going to talk about our tips and tricks. And another episode is to like, how to avoid all of those problems. Before we get to the upcoming talk preview. The last thing I want to cover is configuration. [00:24:00] Um, it's another thing is in the database is configuration of all sorts of things.
[00:24:05] Michael Meyers: And, you know, there are many cases where you might want to copy that configuration over from another system to your new version of Drupal. Um, Mauricio, give a sense of like, what kind of configuration you would want to copy over and, and, and why do you care? Like, why would you want to copy over a configuration from a legacy system into a new one?
[00:24:26] Mauricio Dinarte: Okay. When we talk about configuration in the context of a Drupal upgrade. Um, for the most part, we're talking about, uh, configuration management API in Drupal itself. That is new in Drupal 8 and onwards. And it take cares of mostly the content model. That means your content types, your vocabularies, uh, media types, uh, views, uh, also like how you present the data with views, and there are.
[00:24:55] Mauricio Dinarte: Plenty of more examples, but those would be like the high level ones. So one of the [00:25:00] key decisions that you need to make when you are performing on an upgrade to modern Drupal is do you want to keep them content model the same, change it drastically, or just tweak it a little bit, because that is going to determine, uh, uh, what are actions you need to take along the process.
[00:25:19] Mauricio Dinarte: So let's. Uh, from, from my experience, the projects that I have been involved, something that I noticed early on was that, you know, people were taking the opportunity of, uh, operating to a newer version of Drupal 8 or forward as an opportunity to massively change their site, their content model, their application.
[00:25:38] Mauricio Dinarte: So we were not migrating the configuration for the most part. Uh, we were coming with something new and fresh and just accommodating the old data into that new model. With the Drupal seven end of life approaching, I have seen a trend that people just want to be on a platform that is supported and they are [00:26:00] migrated mostly one-to-one or with very, uh, with very few changes.
[00:26:04] Mauricio Dinarte: So in that sense, you are trying to get as much as possible from the previous site, content types, views, fields, configuration, everything as much as possible one to one. So again, this is something that you need to take into account because that is also going to affect how you migrate your content. To give concrete examples, uh, if you were, uh, using Uh, content type before, and now you can use a different entity type, like a vocabulary, that is a configuration in the content model that will also require, uh, changes to how you migrate the, the underlying content itself.
[00:26:40] Mauricio Dinarte: Um, another example, it may be related to the models that you want to implement. Maybe you were using organic groups in Drupal 7, and now you want to use the group module, uh, in Drupal 10. Functionally, they might serve the same purpose, but the data is stored in a completely different way under the hood, uh, at the [00:27:00] database level.
[00:27:00] Mauricio Dinarte: So you need to make sure that you make the proper transformations, uh, to, to verify that everything, uh, fits into place. And yet another example, and this is related to something that we were talking about before. Uh, with how you move your, your content, the data itself. Uh, some time ago, I worked on a Drupal 6 to Drupal 9 upgrade.
[00:27:20] Mauricio Dinarte: It was a few years ago. So that was the stable version, uh, the latest stable version back then. And something that. Uh, you know, when you do a migration like that, you see how far Drupal has evolved over time. But to give the specific use case is, this site was storing information about physical products.
[00:27:39] Mauricio Dinarte: So they needed to store, um, length, height, and width of a product. Back then, you didn't have the tools that you have right now. So everything was in a text field. And a free text field where people can enter whatever they wanted. And among other things, the data was very inconsistent. In the new site, for many different reasons, we [00:28:00] wanted to implement a more structured, uh, content model.
[00:28:02] Mauricio Dinarte: So there is a physical field, literally called like that, which allows you to store the three dimensions and the units of measurements. So part of the migration process was, uh, writing process plugins, which. We're going to cover in another episode that parsed the data as it was, uh, inconsistent in the Drupal 6 site and put it in, you know, this stricter, uh, you know, yeah, put it in, in, in a new content model that is more strict in terms of how you store the data and how you validate the data.
[00:28:37] Mauricio Dinarte: So again, depending on which approach you want to follow. Your configuration might also determine how part of the content is going to be migrated.
[00:28:54] Lucas Hedding: Yeah, I remember working on that project with you, Mauricio. It was, it was a fun one. Um, [00:29:00] but the, the data model between Drupal 6 and Drupal 7 hasn't changed all that much. Those two are pretty, pretty similar. Um, and I, I remember back in the day, even Drupal, Drupal 5, when we're just launching Drupal 8, we had a few of those sites come across.
[00:29:17] Lucas Hedding: And it's so powerful, Drupal 9 and 10, so many ways to do things, like you said, with the physical field versus text fields or, or whatever, though, that's just a great example of how much has just been built into the system now that it's, it's, it's all part of.
[00:29:35] Janez Urevc: In a way, it's similar
[00:29:36] Janez Urevc: to the question about the theme, whether you want to keep it exactly as it was or, uh, do a redesign here, we're talking about a data model, like do you want to keep the data model or make it more modern to fit your current needs better? Um, so we have some great talking coming up and I want to quickly talk about [00:30:00] that.
[00:30:00] Janez Urevc: Uh, our goal is to put, uh, out one episode per week, uh, over the next few months to support the community, uh, in the migration process. One of the most common questions we get is how much it will cost and how long it will take. Uh, so our upcoming how to estimate effort of our migration is sure to be very popular.
[00:30:25] Janez Urevc: Um, we already mentioned the three part series on ETL. We're going to cover the Drupal Migrate tooling and go a lot, into a lot more detail on how to extract from various sources. How to handle complex transformations and how to efficiently load data. Um, talking about efficiency, performance is something we care deeply about at Tag1, and it obviously applies to migrations as well.
[00:30:53] Janez Urevc: Uh, when you are handling very large data sets, a migration can take hours or [00:31:00] sometimes maybe even days. So every performance improvement you can achieve is. Pays out a lot. Uh, we'll do a handful of talks on this topic. Uh, we will talk about how to profile and tune a migration, including really long running migrations.
[00:31:19] Janez Urevc: And, uh, we'll also do a talk on incremental migrations. Uh, you can include or exclude things and even run a migration on a subset of your data. So we will cover all of that. Um, other talk topics include porting custom code from Drupal 7 to Drupal 10, the future of migrate tooling, uh, how to approach porting a theme and many, many more.
[00:31:44] Janez Urevc: Uh, so we hope that you'll tune in and enjoy our upcoming team talks.
[00:31:50] Michael Meyers: Awesome.
[00:31:51] Michael Meyers: Thank you guys so much. I'm really excited about this upcoming series. Uh, so many great things to talk about. Uh, Janez just hinted at a few of the things we're going to be talking about. We'll have some [00:32:00] blog posts come up as well.
[00:32:01] Michael Meyers: Uh, really big thank you to all of you. Janez, Benji, Lucas, Mauricio, Mike. Thank you so much for taking the time today to give us a quick overview of some of the terminology, the jargon, key components of a migration, and how they interrelate to each other. Um, for our listeners, thank you so much for joining us.
[00:32:20] Michael Meyers: If you like this talk, please remember to upvote, subscribe, and share it out with your friends. We would love your feedback and input. If you want to see us cover specific topics in this series, please reach out to us. You can email us at TTT at tag1. com. That's three T's for Tag1 Team Talks.
[00:32:38] Michael Meyers: You can also check out our past talks and other series at tag1. com slash TTT. Again, a huge thank you to everyone. Thank you so much for tuning in and joining us. See you soon. Thank you guys.[00:33:00]
[00:33:01] Michael Meyers: That was, that was great.