{"id":546,"date":"2018-10-29T20:30:00","date_gmt":"2018-10-29T20:30:00","guid":{"rendered":"https:\/\/www.digitaldatatactics.com\/?p=546"},"modified":"2020-09-17T21:15:19","modified_gmt":"2020-09-17T21:15:19","slug":"dtm-to-launch-migration-series-3-the-migration-process","status":"publish","type":"post","link":"https:\/\/www.digitaldatatactics.com\/index.php\/2018\/10\/29\/dtm-to-launch-migration-series-3-the-migration-process\/","title":{"rendered":"DTM-to-Launch Migration Series #3: The Migration Process"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignright size-thumbnail is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/33sticks_logo-150x150.png\" alt=\"33 Sticks Logo- Orange Circle with 3|3 in it\" class=\"wp-image-538\" width=\"75\" height=\"75\" srcset=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/33sticks_logo-150x150.png 150w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/33sticks_logo-300x300.png 300w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/33sticks_logo.png 441w\" sizes=\"(max-width: 75px) 100vw, 75px\" \/><\/figure><\/div>\n\n\n\n<p>(This is cross-posted from the 33 Sticks Blog)<\/p>\n\n\n\n<p>Thus far in this series, we\u2019ve discussed&nbsp;<a href=\"https:\/\/33sticks.com\/dtm-launch-migration-series-1-options-considerations\/\">your options for a DTM-to-Launch Migration<\/a>, and some&nbsp;<a href=\"https:\/\/33sticks.com\/dtm-to-launch-migration2-a-golden-opportunity\/\">potential areas you can improve upon your solution<\/a>&nbsp;as part of a migration. As you can see from my previous posts, there are a lot of possible considerations for a DTM-to-Launch migration. So what might the actual process look like to get your company on Launch instead of DTM?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rollOut\">Figure Out How You\u2019ll Roll Out<\/h2>\n\n\n\n<p>Does it make sense for your org to roll Launch out all at once to all of your properties? Or would you prefer to bite off one chunk at a time? (For instance, one client is currently updating their internal search single page app, so they\u2019re going to roll out Launch there first, as a sort of guinea pig.) Keep in mind that even if you are only rolling out Launch to 3 pages first, ANY roll out is going to have to tackle some global logic- it may be that those first three pages are the hardest because you\u2019ll need to tackle how to handle not just the requirements for those three pages, but also global items like authentication status or global marketing tags.<br>If you do want to roll out all at once,&nbsp;<a href=\"https:\/\/docs.adobelaunch.com\/upgrade-from-dtm-to-launch\/link-dtm-embed-code\" target=\"_blank\" rel=\"noreferrer noopener\">you can keep using the same DTM embed code<\/a>&nbsp;you always have so your developers don\u2019t need to make changes to the pages, but that\u2019s an all-or-nothing option (once you switch to Launch, Launch will \u201cown\u201d that embed code unless you choose to re-publish from DTM), and it only works in prod (dev\/staging environments will still need the new embed codes).<\/p>\n\n\n\n<p>Also, if you\u2019re considering having DTM and Launch run alongside each other&nbsp;<em>on the same page<\/em>\u2026. don\u2019t even consider this an option. It won\u2019t work. Both tools use the _satellite object and one WILL overwrite the other and\/or get very confused by the presence of the other.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"validation\">Validation<\/h3>\n\n\n\n<p>Keep in mind the effort to validate things-&nbsp;<strong>even if you are doing a \u201csimple lift-and-shift\u201d, you will still need to validate that Launch is doing all the things that DTM had been doing<\/strong>. Depending on how well-documented your current implementation is, and\/or what QA efforts are currently in place, this may mean figuring out what it is that DTM is currently doing so you know whether Launch is matching it or not. This is a golden opportunity to set up some QA processes, if you haven\u2019t already.<br>If you don\u2019t have a solid process already in place, you won\u2019t be able to test every possible beacon for every possible user, but you should can set up a testing procedure in place for critical beacons on your most typical flows. Note, none of this is specific to DTM or Launch, but is a best practice regardless and will help with the DTM-to-Launch migration.<\/p>\n\n\n\n<ul><li>Establish key user flows and document each beacon in the flow\u2019s expected variables<\/li><li>Use a tool like&nbsp;<a href=\"https:\/\/www.observepoint.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Observepoint<\/a>&nbsp;or&nbsp;<a href=\"http:\/\/www.hub-scan.com\/features\/\" target=\"_blank\" rel=\"noreferrer noopener\">Hub\u2019scan<\/a>&nbsp;to automate testing<\/li><li>For your KPIs, in Adobe Analytics set up anomaly detection and\/or alerts based on reasonable thresholds (alert me if revenue dips below $___ or visits climbs above ___)<\/li><\/ul>\n\n\n\n<p>This is all much easier if you used the migration as a chance to document your solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"audit\">Audit What You\u2019ve Got and What You Want<\/h2>\n\n\n\n<p>Unfortunately, Adobe does not provide a great way to document all of your current rules and data elements in DTM. Fortunately, there is a tool to help:&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/jimalytics.com\/tag-management\/export-dtm-rules-with-tagtician\/\" target=\"_blank\">Tagtician has a free chrome extension<\/a>&nbsp;that can create a spreadsheet with a list of all your data elements, rules (including third party tags and what is deployed in the Adobe Analytics\/Google Analytics section of each rule.) I cannot overstate how incredibly helpful this has been for every DTM migration project I\u2019ve been on.<br>Depending on how ambitious our migration plans are (on a scale of \u201clift-and-shift\u201d to \u201cburn it down and start fresh\u201d), I\u2019ve used this as a basis for a new solution design, so we know on each user action what variables are expected, where those variables are set, and where they pull their information from:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"100\" src=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/exampleSolutionDesign-1024x100.png\" alt=\"\" class=\"wp-image-527\" srcset=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/exampleSolutionDesign-1024x100.png 1024w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/exampleSolutionDesign-300x29.png 300w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/exampleSolutionDesign-768x75.png 768w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/exampleSolutionDesign.png 1184w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Then I take that to figure out how to deploy it through Launch (which may or may not look anything like how it was deployed in DTM): for instance, if pageName is always going to get it\u2019s value from the same data element, I can set that in a global rule that fires on all page loads. Whereas my search variables can get their own rule, which will combine with the global rule on the search results page to create one analytics beacon with all the variables I need. Now that you can control load order and when analytics beacons fire in Launch, you may be able to really compartmentalize logic based on scope and get rid of redundancy in your implementation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"publishing\">Decide On Your Publishing Flow<\/h2>\n\n\n\n<p>Launch has a new publishing flow- it\u2019s no longer just staging vs production. You now have development (as many environments as you need), staging, and production; no changes automatically get built into a library unless you set it up to; you can use libraries to group together changes and move a group through the flow. If you only have one person in Launch at a time, and that one person tends to do most approvals and publishes, then the flow can definitely seem like \u201ctoo much.\u201d But for a lot of bigger organizations, this new flow is a game changer.<br>Part of moving to Launch is figuring out how this flow should apply to your organization. For example, one client came up with something similar to this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/publishingFlowv2-1024x440.png\" alt=\"\" class=\"wp-image-534\" srcset=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/publishingFlowv2-1024x440.png 1024w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/publishingFlowv2-300x129.png 300w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/publishingFlowv2-768x330.png 768w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/publishingFlowv2.png 1392w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>At the start of each sprint, they create a library with that sprint name, and link it to the main dev environment. Each member of their analytics team has their own permanent library in dev, linked to alternative dev environments (which aren\u2019t referenced by any pages and are only really interacted with through the switcher plugin- basically a sandbox for them to build in, using the switcher plugin to see the effect of their efforts in dev). As changes are completed and pass their first round of validation, they get moved into the Sprint\u2019s library, which at the end of the sprint moves into Staging, where it is validated by the developer\/UX QA team before being approved and published.&nbsp;<em>(This is just an example- there is no single \u201cright way\u201d to use this flow, it was designed to be flexible for a reason.)<\/em><br>Be aware,&nbsp;<strong>once a library has \u201cclaimed\u201d an environment (which is linked to an embed code), no other library can claim that environment, so if you want multiple libraries you will need multiple dev environments<\/strong>.<br>Also, you can no longer use code in a developer console to switch between environments- currently, the only way I know to switch between environments is to use&nbsp;<a href=\"https:\/\/chrome.google.com\/webstore\/detail\/launch-and-dtm-switch\/nlgdemkdapolikbjimjajpmonpbpmipk?hl=en\" target=\"_blank\" rel=\"noreferrer noopener\">the Search Discovery switcher chrome extension<\/a>&nbsp;or to use something like&nbsp;<a href=\"http:\/\/www.digitaldatatactics.com\/index.php\/2016\/03\/11\/using-charles-proxy-for-analytics\/\" target=\"_blank\" rel=\"noreferrer noopener\">Charles Proxy Map Remote<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"projectPlan\">The Migration Project Plan<\/h2>\n\n\n\n<p>A DTM-to-Launch migration can become quite the involved project. For the simplest of migrations, it still may be 4-6 weeks to migrate within the tools, do any necessary validation, and publish your changes. It may only need to be one or two main analytics\/TMS folks and\/or a QA person working on it.<br>Or, it may be a 9 month project that involves devs, QA\/UAT, data architects, analysts\u2026 don\u2019t underestimate the resource cost of the migration (though at the same time, don\u2019t undervalue the long-term resource savings if you take the time to get it right as part of the migration and (re)build a scalable, maintainable, well-documented solution.)<br>For instance, below is an example of how a Launch migration could go. This example does not include any changes to the data layer, but does include a substantial attempt to re-deploy analytics rather than merely shift the existing implementation with all the same rules and data elements.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"621\" height=\"761\" src=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/Launch-Migration.png\" alt=\"\" class=\"wp-image-533\" srcset=\"https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/Launch-Migration.png 621w, https:\/\/www.digitaldatatactics.com\/wp\/wp-content\/uploads\/2020\/09\/Launch-Migration-245x300.png 245w\" sizes=\"(max-width: 621px) 100vw, 621px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"resources\">Next Steps and Resources<\/h1>\n\n\n\n<p>As you can see, even a simple lift-and-switch to Launch can be a bit involved, and folks can feel daunted by all the considerations, options, and things to be aware of. I\u2019ve tried to be as thorough and comprehensive as possible in this series, and I hope I hit the right level of detail to give practical guidance on how to tackle a DTM-to-Launch migration. There is a great community out there for folks who need DTM\/Launch support- check out the following resources:<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/forums.adobe.com\/community\/experience-cloud\/platform\/launch\" target=\"_blank\" rel=\"noreferrer noopener\">The Adobe Launch Community Forum<\/a><\/li><li><a href=\"https:\/\/www.measure.chat\/\" target=\"_blank\" rel=\"noreferrer noopener\">#measure Slack<\/a>&nbsp;is a free Slack community full of practitioners, consultants, and Adobe product\/community resources; I spend a lot of time in the #adobe-analytics and #adobe-launch channels<\/li><li>The&nbsp;<a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLScq1m63YkDrRpvPLhzUqtfoleWiDDTTXZsSivIXRfFdlSMzpQ\/viewform\" target=\"_blank\" rel=\"noreferrer noopener\">Launch Developers Slack Forum<\/a>&nbsp;is particularly helpful for those wanting to use the APIs, build extensions, or get technical best practices<\/li><li>Adobe\u2019s&nbsp;<a href=\"https:\/\/docs.adobelaunch.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Launch Documentation<\/a><\/li><li>Awesome blogs with a lot of good Launch content:<ul><li>Adobe\u2019s Launch (oh, sorry, I mean \u201cLaunch, by Adobe\u201d) posts on&nbsp;<a href=\"https:\/\/medium.com\/launch-by-adobe\" target=\"_blank\" rel=\"noreferrer noopener\">Medium<\/a><\/li><li>Jim Gordon at&nbsp;<a href=\"https:\/\/jimalytics.com\/tag\/adobe-launch\/\" target=\"_blank\" rel=\"noreferrer noopener\">Jimalytics<\/a><\/li><li>Jan Exner at&nbsp;<a href=\"https:\/\/webanalyticsfordevelopers.com\/category\/launch\/\" target=\"_blank\" rel=\"noreferrer noopener\">Web Analytics for Developers<\/a><\/li><li>Jerry Helou at&nbsp;<a href=\"https:\/\/softcrylic.com\/blogs\/adobe-launch-proper-way-launch-adobe-cloud-platform\/\" target=\"_blank\" rel=\"noreferrer noopener\">Softcrylic<\/a><\/li><li>Antti Koski\u2019s newer Adobe Analytics&nbsp;<a href=\"http:\/\/www.anttikoski.fi\/my-biggest-learnings-about-adobe-launch-after-few-implementations\/\" target=\"_blank\" rel=\"noreferrer noopener\">blog<\/a><\/li><li>And of course, the 33 Sticks&nbsp;<a href=\"https:\/\/33sticks.com\/category\/tms\/\" target=\"_blank\" rel=\"noreferrer noopener\">blog<\/a>, as well as&nbsp;<a href=\"http:\/\/www.digitaldatatactics.com\/index.php\/category\/dtm\/\" target=\"_blank\" rel=\"noreferrer noopener\">my own blog<\/a>, have lots of Launch content.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>Hopefully&nbsp;this series&nbsp;helped, but feel free to reach out if you have questions or if you\u2019d like to engage with us to make sure you get off on the right foot as you move to Launch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(This is cross-posted from the 33 Sticks Blog) Thus far in this series, we\u2019ve discussed&nbsp;your options for a DTM-to-Launch Migration, and some&nbsp;potential areas you can improve upon your solution&nbsp;as part of a migration. As you can see from my previous posts, there are a lot of possible considerations for a DTM-to-Launch migration. So what might &#8230; <a title=\"DTM-to-Launch Migration Series #3: The Migration Process\" class=\"read-more\" href=\"https:\/\/www.digitaldatatactics.com\/index.php\/2018\/10\/29\/dtm-to-launch-migration-series-3-the-migration-process\/\" aria-label=\"Read more about DTM-to-Launch Migration Series #3: The Migration Process\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[57,8,45,51,42],"_links":{"self":[{"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/posts\/546"}],"collection":[{"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/comments?post=546"}],"version-history":[{"count":2,"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/posts\/546\/revisions"}],"predecessor-version":[{"id":548,"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/posts\/546\/revisions\/548"}],"wp:attachment":[{"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/media?parent=546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/categories?post=546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.digitaldatatactics.com\/index.php\/wp-json\/wp\/v2\/tags?post=546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}