Detect broken links in documents - Sharepoint online migration

%3CLINGO-SUB%20id%3D%22lingo-sub-1599299%22%20slang%3D%22en-US%22%3EDetect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1599299%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20everyone%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20am%20migrating%20several%20sites%20from%20sharepoint%20on-premises%20to%20sharepoint%20online%2C%20however%20in%20some%20document%20libraries%20I%20have%20different%20types%20of%20documents%20(docx%2C%20pdf%2C%20xlsx...)%20with%20urls%20to%20old%20sites%20in%20sharepoint%20on-premises.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20am%20search%20for%20a%20solution%2C%20but%20until%20now%20seems%20that%20only%20with%20a%20third%20party%20tool%20I%20can%20do%20that.%20For%20example%2C%20Cognillo%20is%20a%20nice%20tool%20but%20very%20expensive.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EMy%20question%20is%20if%20it%20there%20is%20a%20solution%20provided%20by%20microsoft%20to%20solve%20this%2C%20for%20example%20any%20kind%20of%20powershell%20script%20or%20if%20there%20is%20another%20third%20party%20tool%20to%20solve%20this%20problem%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1599299%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3ESharePoint%20Online%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1599360%22%20slang%3D%22en-US%22%3ERe%3A%20Detect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1599360%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F660634%22%20target%3D%22_blank%22%3E%40Andre_Silva%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3ELet's%20start%20by%20ruling%20out%20the%20obvious.%26nbsp%3B%20How%20are%20you%20migrating%3F%26nbsp%3B%20It's%20possible%20that%20your%20current%20tool%20may%20have%20something%20that%20can%20do%20this%20for%20you.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1600525%22%20slang%3D%22en-US%22%3ERe%3A%20Detect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1600525%22%20slang%3D%22en-US%22%3EI%20don't%20think%20so.%20You'll%20have%20to%20look%20at%20third%20party%20tools%20like%20the%20one%20you%20mentioned%20above.%3CBR%20%2F%3EAnother%20thing%20you%20need%20to%20consider%20are%20the%20external%20references%20in%20Excel%20formulas.%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1600750%22%20slang%3D%22en-US%22%3ERe%3A%20Detect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1600750%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F11625%22%20target%3D%22_blank%22%3E%40Steven%20Andrews%3C%2FA%3E%26nbsp%3Bunfortunately%20not.%20I%20am%20using%20Sharegate%20and%20at%20this%20moment%20doesn't%20have%20this%20feature.%20I%20checked%20it.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1601198%22%20slang%3D%22en-US%22%3ERe%3A%20Detect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1601198%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F660634%22%20target%3D%22_blank%22%3E%40Andre_Silva%3C%2FA%3E%26nbsp%3B%3CBR%20%2F%3EYou%20basically%20have%202%20problems%3A%3CBR%20%2F%3Ea.%20migrated%20documents%20that%20contain%20links%20that%20are%20broken%20because%20of%20the%20migration%3CBR%20%2F%3Eb.%20links%20from%20external%20places%20(emails%2C%20bookmarks%2C%20documents%20in%20other%20systems%2C%20...)%20that%20refer%20to%20the%20old%20SharePoint%20location.%3CBR%20%2F%3E%3CBR%20%2F%3EAddressing%20problem%20a%20is%20not%20extremely%20hard.%20Use%20tools%20to%20replace%20the%20links%20within%20the%20migrated%20documents.%20It%20may%20cost%20some%20%24's%20but%20you%20will%20get%20an%20acceptabel%20result.%20Do%20check%20if%20the%203rd%20tools%20also%20change%20the%20modify%20date.%20If%20that%20has%20been%20retained%20as%20part%20of%20the%20migration%20you%20do%20not%20want%20to%20change%20these%20dates%20when%20fixing%20the%20links.%26nbsp%3BI%20am%20not%20aware%20of%20PS%20scripts%20with%20this%20capability.%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3EProblem%20b%20is%20much%20more%20challenging.%20These%20links%20will%20persist%20for%20years%20to%20come.%20One%20way%20to%20overcome%20this%20is%20by%20migrating%20documents%20plus%20their%20original%20url's%20to%20the%20new%20SharePoint%20system%20and%20then%20make%20the%20original%20url's%20searchable.%20Also%20automatically%20redirect%20traffic%20to%20the%20old%20locations%20to%20the%20search%20page.%3CBR%20%2F%3E(Interesting%20topic%20though.%20Something%20to%20give%20proper%20priority%20in%20our%20roadmap.)%3CBR%20%2F%3EPaul%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1601740%22%20slang%3D%22en-US%22%3ERe%3A%20Detect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1601740%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F4831%22%20target%3D%22_blank%22%3E%40Paul%20de%20Jong%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAccording%20our%20organization%2C%20problem%20a)%20is%20the%20most%20relevant.%20We%20have%20many%20official%20documents%20with%20link%20to%20other%20documents%20or%20folders%2C%20and%20we%20must%20to%20update%20this%20links.%26nbsp%3B%3C%2FP%3E%3CP%3EIt%20will%20be%20good%20with%20the%20improvement%20of%20Microsoft%20migration%20tool%20this%20feature%20should%20also%20be%20included.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1601800%22%20slang%3D%22en-US%22%3ERe%3A%20Detect%20broken%20links%20in%20documents%20-%20Sharepoint%20online%20migration%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1601800%22%20slang%3D%22en-US%22%3E%3CP%3EInspired%20by%20the%20code%20found%20here%2C%20here%20and%20here%2C%20I%20created%20this%20file%20in%20C%3A%5CProgram%20Files%5CCommon%20Files%5CMicrosoft%20Shared%5CWeb%20Server%20Extensions%5C12%5CTEMPLATE%5CCONTROLTEMPLATES%5CWikiMiniConsole.ascx%3C%2FP%3E%3CP%3E%26lt%3B%25%40%20Control%20Language%3D%22C%23%22%20AutoEventWireup%3D%22false%22%20%25%26gt%3B%3CBR%20%2F%3E%26lt%3B%25%40Assembly%20Name%3D%22Microsoft.SharePoint%2C%20Version%3D12.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D71e9bce111e9429c%22%20%25%26gt%3B%3CBR%20%2F%3E%26lt%3B%25%40Register%20TagPrefix%3D%22SharePoint%22%20Assembly%3D%22Microsoft.SharePoint%2C%20Version%3D12.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D71e9bce111e9429c%22%20namespace%3D%22Microsoft.SharePoint.WebControls%22%25%26gt%3B%3CBR%20%2F%3E%26lt%3B%25%40Register%20TagPrefix%3D%22SPHttpUtility%22%20Assembly%3D%22Microsoft.SharePoint%2C%20Version%3D12.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D71e9bce111e9429c%22%20namespace%3D%22Microsoft.SharePoint.Utilities%22%25%26gt%3B%3CBR%20%2F%3E%26lt%3B%25%40%20Register%20TagPrefix%3D%22wssuc%22%20TagName%3D%22ToolBar%22%20src%3D%22~%2F_controltemplates%2FToolBar.ascx%22%20%25%26gt%3B%3CBR%20%2F%3E%26lt%3B%25%40%20Register%20TagPrefix%3D%22wssuc%22%20TagName%3D%22ToolBarButton%22%20src%3D%22~%2F_controltemplates%2FToolBarButton.ascx%22%20%25%26gt%3B%3C%2FP%3E%3CP%3E%3CRENDERINGTEMPLATE%20id%3D%22%26quot%3BWikiMiniConsole%26quot%3B%22%20runat%3D%22%26quot%3Bserver%26quot%3B%22%3E%3CBR%20%2F%3E%3CTEMPLATE%3E%3CBR%20%2F%3E%3C%2FTEMPLATE%3E%3C%2FRENDERINGTEMPLATE%3E%3C%2FP%3E%3CDIV%20style%3D%22%26quot%3Bposition%3Arelative%3Btop%3A0%3Bleft%3A0%3B%26quot%3B%22%3E%3CBR%20%2F%3E%3CDIV%20class%3D%22%26quot%3Bms-wikieditouter%26quot%3B%22%3E%3CBR%20%2F%3E%3CTABLE%20id%3D%22%26quot%3Bminiconsole%26quot%3B%22%20cellspacing%3D%22%26quot%3B0%26quot%3B%22%20cellpadding%3D%22%26quot%3B0%26quot%3B%22%20border%3D%22%26quot%3B0%26quot%3B%22%20width%3D%22%26quot%3B100%25%26quot%3B%22%3E%3CTBODY%3E%3CTR%3E%3CTD%3E%3CBR%20%2F%3E%3CTABLE%20class%3D%22%26quot%3Bms-wikieditsecond%26quot%3B%22%20cellspacing%3D%22%26quot%3B0%26quot%3B%22%20cellpadding%3D%22%26quot%3B0%26quot%3B%22%20border%3D%22%26quot%3B0%26quot%3B%22%20width%3D%22%26quot%3B100%25%26quot%3B%22%3E%3CTBODY%3E%3CTR%3E%3CTD%3E%3CBR%20%2F%3E%3CTABLE%20class%3D%22%26quot%3Bms-wikieditthird%26quot%3B%22%20cellspacing%3D%22%26quot%3B0%26quot%3B%22%20cellpadding%3D%22%26quot%3B0%26quot%3B%22%20border%3D%22%26quot%3B0%26quot%3B%22%20width%3D%22%26quot%3B100%25%26quot%3B%22%3E%3CTBODY%3E%3CTR%3E%3CTD%3E%3CBR%20%2F%3E%3C!--%20this%20is%20for%20the%20orange%20cast%20inside%20the%20menu%20--%3E%3CBR%20%2F%3E%3CTABLE%20class%3D%22%26quot%3Bms-wikieditorange%26quot%3B%22%20cellspacing%3D%22%26quot%3B0%26quot%3B%22%20cellpadding%3D%22%26quot%3B0%26quot%3B%22%20border%3D%22%26quot%3B0%26quot%3B%22%20width%3D%22%26quot%3B100%25%26quot%3B%22%3E%3CBR%20%2F%3E%3CTBODY%3E%3CTR%3E%3CBR%20%2F%3E%3CTD%20class%3D%22%26quot%3Bms-wikieditorangeinnera%26quot%3B%22%20style%3D%22%26quot%3B%3Bwidth%3A100%25%3B%26quot%3B%22%3E%26amp%3Bnbsp%3B%3C%2FTD%3E%3CBR%20%2F%3E%3C%2FTR%3E%3CBR%20%2F%3E%3CTR%3E%3CTD%3E%3CBR%20%2F%3E%3CTOOLBAR%20cssclass%3D%22%26quot%3Bms-wikitoolbar%26quot%3B%22%20runat%3D%22%26quot%3Bserver%26quot%3B%22%3E%3CBR%20%2F%3E%3CTEMPLATE_BUTTONS%3E%3CBR%20%2F%3E%3CWIKIEDITITEMBUTTON%20text%3D%22%26quot%3B%26lt%3B%25%24Resources%3Awss%2Csiteactions_wikieditpage%25%22%3E%22%20runat%3D%22server%22%2F%26gt%3B%3CBR%20%2F%3E%3CWIKIPAGEHISTORYBUTTON%20text%3D%22%26quot%3B%26lt%3B%25%24Resources%3Awss%2Csiteactions_viewpagehistory%25%22%3E%22%20ButtonID%3D%22WikiPageHistory%22%20runat%3D%22server%22%2F%26gt%3B%3CBR%20%2F%3E%3CWIKIINCOMINGLINKSBUTTON%20text%3D%22%26quot%3BIncoming%22%20links%3D%22%22%3E%3C%2FWIKIINCOMINGLINKSBUTTON%3E%3CBR%20%2F%3E%3C%2FWIKIPAGEHISTORYBUTTON%3E%3CBR%20%2F%3E%3C%2FWIKIEDITITEMBUTTON%3E%3CBR%20%2F%3E%3C%2FTEMPLATE_BUTTONS%3E%3C%2FTOOLBAR%3E%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CBR%20%2F%3E%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CBR%20%2F%3E%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CBR%20%2F%3E%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSCRIPT%20src%3D%22%26quot%3B%26lt%3BA%22%20href%3D%22http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjquery%2F1.2.6%2Fjquery.min.js%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttp%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjquery%2F1.2.6%2Fjquery.min.js%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FA%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%20type%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Btext%2Fjavascript%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%20%3C%2FSCRIPT%3E%3CBR%20%2F%3E%3CSCRIPT%20type%3D%22%26quot%3Btext%2Fjavascript%26quot%3B%22%3E%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(function()%20%7B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3Bvar%20toc%20%3D%20%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3Bdiv%20id%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3Btoc%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%20style%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3Bbackground%3A%23EBF3FF%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Bborder%3A1px%20solid%20%236F9DD9%3Bdisplay%3Anone%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Bposition%3Aabsolute%3Btop%3A127%3Bright%3A11%3Bwidth%3A250px%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Btext-align%3Aleft%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2Fdiv%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Btd.ms-bodyareaframe%3Afirst%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).append(toc)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2F%2Fget%20the%20url%20for%20the%20incoming%20links%20page%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3Bu%20%3D%20%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Ba%5Bid%24%3DWikiIncomingLinks_LinkText%5D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B)%5B0%5D.href%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2F%2Fget%20the%20target%20container%20and%20load%20it%20with%20the%20incoming%20links%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2F%2Ffiltered%20to%20show%20the%20links%20list%20only%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23toc%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).load(u%20%2B%20%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%20.ms-propertysheet%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23toc%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).wrapInner(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3Bul%20style%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3Bpadding%3A2px%3Bmargin%3A0%3Blist-style-type%3Anone%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2Ful%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23toc%20a%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).wrap(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3Bli%20style%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3Bpadding%3A0%3Bmargin%3A0%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2Fli%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23toc%20li%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).prepend(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3Bimg%20style%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3Bmargin-right%3A5px%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%20alt%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%20src%3D%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%2F_layouts%2Fimages%2Fsquare.gif%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3B%2339%3B%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23incominglinks%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).click(function()%7B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23toc%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).toggle()%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%7D)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3B%2FP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BP%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%2F%2F%20override%20the%20target%20of%20our%20hyperlink%20to%20bring%20up%20the%20menu%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23ctl00_PlaceHolderMiniConsole_ctl00_ctl00_ctl00_RptControls_WikiIncomingLinks_LinkText%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).attr(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3Bhref%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%2C%20%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B)%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23ctl00_PlaceHolderMiniConsole_ctl00_ctl00_ctl00_RptControls_WikiIncomingLinks_LinkText%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).click(function()%7B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%24(%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B%23toc%26amp%3Bamp%3Bamp%3Bamp%3Bamp%3Bquot%3B).toggle()%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%7D)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%7D)%3B%26amp%3Bamp%3Bamp%3Bamp%3Blt%3BBR%20%2F%26amp%3Bamp%3Bamp%3Bamp%3Bgt%3B%3C%2FSCRIPT%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CBR%20%2F%3E%3CP%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20hope%20this%20helps%20you%20with%20broken%20links%20on%20%3CA%20href%3D%22https%3A%2F%2Fwww.o365cloudexperts.com%2Fblog%2Fmigrate-sharepoint-to-office-365%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ESharepoint%20online%20migration%3C%2FA%3E.%3C%2FP%3E
Highlighted
Occasional Contributor

Hi everyone,

 

I am migrating several sites from sharepoint on-premises to sharepoint online, however in some document libraries I have different types of documents (docx, pdf, xlsx...) with urls to old sites in sharepoint on-premises. 

 

I am search for a solution, but until now seems that only with a third party tool I can do that. For example, Cognillo is a nice tool but very expensive.

 

My question is if it there is a solution provided by microsoft to solve this, for example any kind of powershell script or if there is another third party tool to solve this problem?

 

Thanks

6 Replies
Highlighted

@Andre_Silva 

Let's start by ruling out the obvious.  How are you migrating?  It's possible that your current tool may have something that can do this for you.

Highlighted
I don't think so. You'll have to look at third party tools like the one you mentioned above.
Another thing you need to consider are the external references in Excel formulas.
Highlighted

@Steven Andrews unfortunately not. I am using Sharegate and at this moment doesn't have this feature. I checked it.

Highlighted

@Andre_Silva 
You basically have 2 problems:
a. migrated documents that contain links that are broken because of the migration
b. links from external places (emails, bookmarks, documents in other systems, ...) that refer to the old SharePoint location.

Addressing problem a is not extremely hard. Use tools to replace the links within the migrated documents. It may cost some $'s but you will get an acceptabel result. Do check if the 3rd tools also change the modify date. If that has been retained as part of the migration you do not want to change these dates when fixing the links. I am not aware of PS scripts with this capability. 

Problem b is much more challenging. These links will persist for years to come. One way to overcome this is by migrating documents plus their original url's to the new SharePoint system and then make the original url's searchable. Also automatically redirect traffic to the old locations to the search page.
(Interesting topic though. Something to give proper priority in our roadmap.)
Paul

Highlighted

@Paul de Jong 

According our organization, problem a) is the most relevant. We have many official documents with link to other documents or folders, and we must to update this links. 

It will be good with the improvement of Microsoft migration tool this feature should also be included. 

 

Inspired by the code found here, here and here, I created this file in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\CONTROLTEMPLATES\WikiMiniConsole.ascx

<%@ Control Language="C#" AutoEventWireup="false" %>
<%@Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@Register TagPrefix="SharePoint" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.WebControls"%>
<%@Register TagPrefix="SPHttpUtility" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Utilities"%>
<%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %>

<SharePoint:RenderingTemplate ID="WikiMiniConsole" runat="server">
<Template>
<div style="position:relative;top:0;left:0;">
<div class="ms-wikieditouter">
<table id="miniconsole" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td>
<table class="ms-wikieditsecond" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td>
<table class="ms-wikieditthird" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td>
<!-- this is for the orange cast inside the menu -->
<table class="ms-wikieditorange" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="ms-wikieditorangeinnera" style=";width:100%;">&nbsp;</td>
</tr>
<tr><td>
<wssuc:ToolBar CssClass="ms-wikitoolbar" runat="server">
<Template_Buttons>
<SharePoint:WikiEditItemButton Text= "<%$Resources:wss,siteactions_wikieditpage%>" runat="server"/>
<SharePoint:WikiPageHistoryButton Text= "<%$Resources:wss,siteactions_viewpagehistory%>" ButtonID="WikiPageHistory" runat="server"/>
<SharePoint:WikiIncomingLinksButton Text= "Incoming Links" ButtonID="WikiIncomingLinks" runat="server"/>
</Template_Buttons>
</wssuc:ToolBar>
</td></tr></table>
</td></tr></table>
</td></tr></table>
</td></tr></table>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"> </script>
<script type="text/javascript">
$(function() {

var toc = "<div id='toc' style='background:#EBF3FF;"
+"border:1px solid #6F9DD9;display:none;"
+"position:absolute;top:127;right:11;width:250px;"
+"text-align:left;'></div>";

$("td.ms-bodyareaframe:first").append(toc);

//get the url for the incoming links page
u = $("a[id$=WikiIncomingLinks_LinkText]")[0].href;

//get the target container and load it with the incoming links
//filtered to show the links list only
$("#toc").load(u + " .ms-propertysheet");

$("#toc").wrapInner("<ul style='padding:2px;margin:0;list-style-type:none;'></ul>");
$("#toc a").wrap("<li style='padding:0;margin:0;'></li>");
$("#toc li").prepend("<img style='margin-right:5px;' alt='' src='/_layouts/images/square.gif'/>");
$("#incominglinks").click(function(){
$("#toc").toggle();
});

// override the target of our hyperlink to bring up the menu
$("#ctl00_PlaceHolderMiniConsole_ctl00_ctl00_ctl00_RptControls_WikiIncomingLinks_LinkText").attr("href", "#")
$("#ctl00_PlaceHolderMiniConsole_ctl00_ctl00_ctl00_RptControls_WikiIncomingLinks_LinkText").click(function(){
$("#toc").toggle();
});
});
</script>

 

</div></div>
</Template>
</SharePoint:RenderingTemplate>

 

I hope this helps you with broken links on Sharepoint online migration.