We are in the process of migrating a site where approx. 3400 pages are mirrored and since the Migration Tool does not take mirroring into the mix I'm trying to come up with a fix :-) After some refatoring and digging around we have found that in CMS5 mirroring makes use of the new PageGUID instead for the MIrrorLookupInfo and it's PageLookup(btw since it's not in use anymore it should be removed :-) )
We do not use friendly URLs so deleting the mirrord pages on the destination site and just mirror again would make bookmarks, searchengines etc. point to pages that no longer exists. That can be solved with a mapping between old and new pageids and return 302 html status cods and redirect to the new page...
But, I've been working on a solution that takes the mapping table out of the equation and I thought I'd fly it by you all :-)
When mirroring in CMS5 the PageGUID from the source site is used as a PageGuid when creating a page on the destination site, and that makes perfect sense since the page is in essential the same.
So what if we change the PageGuids on pages that has been mirrored on the destination site to match the PageGuid on the sender?! The PageData.PageGuid is reeadonly(has been propperly changed in CMS5 R2 SP2) so it has to be done in the database(PageGuid in tblPagedata).
If we do his change before mirroring for the first time after migrating both sites then the mirroring job will find it's corresponing page based on the PageGuid through the PermanentLinkMapStore.
There is one more thing that I know needs to be done and that is to update the tblPageSoftLinks linkurl field on the destination site with new guids for internal links. This has to be done since we changed the guids on the pages, so if there are other pages that links to the ones we have changed then that would break.
So my question is; do anyone know of other places that needs to be updated? It seens to be working quite good on the test I've done, and it makes for a good fix.