{"id":20899188,"url":"https://github.com/geekzter/gsuite-microsoft365-migration","last_synced_at":"2025-05-13T01:31:35.600Z","repository":{"id":115962194,"uuid":"509952571","full_name":"geekzter/gsuite-microsoft365-migration","owner":"geekzter","description":"GSuite to Microsoft 365 migration","archived":false,"fork":false,"pushed_at":"2022-08-14T18:24:49.000Z","size":3,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-01T14:58:45.415Z","etag":null,"topics":["email","google-apps","gsuite","microsoft-365","migration","office-365","office365"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geekzter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-03T07:25:04.000Z","updated_at":"2024-11-08T09:00:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"3f100a89-e562-4dfe-a9e4-b3e374307ad5","html_url":"https://github.com/geekzter/gsuite-microsoft365-migration","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekzter%2Fgsuite-microsoft365-migration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekzter%2Fgsuite-microsoft365-migration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekzter%2Fgsuite-microsoft365-migration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekzter%2Fgsuite-microsoft365-migration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geekzter","download_url":"https://codeload.github.com/geekzter/gsuite-microsoft365-migration/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253853839,"owners_count":21974180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["email","google-apps","gsuite","microsoft-365","migration","office-365","office365"],"created_at":"2024-11-18T11:13:24.787Z","updated_at":"2025-05-13T01:31:35.584Z","avatar_url":"https://github.com/geekzter.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GSuite to Microsoft 365 migration\nAfter 15 years, Google has finally [pulled the plug](https://support.google.com/a/answer/60217#faq) on ~~Google Apps~~ 'GSuite legacy free edition'. It was great while it lasted, and I thank Google for being so lenient to its early adoptors for so long.\nNow it is time to pay up, you may as well consider alternatives. While I love Gmail, I chose the market leader: Microsoft 365.\n\nMicrosoft has a ton of documentation on GSuite to Microsoft 365 migration. There is a [landing page](https://docs.microsoft.com/en-us/Exchange/mailbox-migration/perform-g-suite-migration) and an [overview of the migration process](https://docs.microsoft.com/en-gb/exchange/mailbox-migration/how-it-all-works-in-the-backend).\n\nThis repo does not aim to replace documentation. Rather, it contains a number of helper scripts I used to migrate from GSuite to Microsoft 365. This was a one-time event, so it is not something I'll be maintaining.\n\n## Pre-requisites\n- Pre-requisites as documented in the [Google Workspace migration prerequisites in Exchange Online guide](https://docs.microsoft.com/en-us/exchange/mailbox-migration/googleworkspace-migration-prerequisites)\n- Configure [domain-wide access](https://developers.google.com/admin-sdk/directory/v1/guides/delegation) in GSuite\n- [Enable](https://support.google.com/googleapi/answer/6158841?hl=en) the following GSuite API's:\n    - Calendar API\n    - Contacts API\n    - Gmail API\n    - People API\n- [Grant access to the service account for your Google tenant](https://docs.microsoft.com/en-gb/exchange/mailbox-migration/manually-configuring-gsuite-for-migration#grant-access-to-the-service-account-for-your-google-tenant)\n\n## Migration\nFollow [the documentation](https://docs.microsoft.com/en-gb/exchange/mailbox-migration/perform-g-suite-migration).\n\n### Scripts\n- [sample_batch.ps1](./scripts/sample_batch.ps1) creates a sample migration batch with 1 user\n- [check_migration_batches.ps1](./scripts/check_migration_batches.ps1) checks migration batches\n- [check_migration_users.ps1](./scripts/check_migration_users.ps1) checks individual users, and lusts skipped migration items\n\n## Known issues\n### GmailForwardingAddressRequiresVerificationException\nIf you run into this issue, try any of these solutions:\n- Do not use a `\u003ctenantname`\u003e.onmicrosoft.com domain (and [read the pre-requisites](https://docs.microsoft.com/en-GB/exchange/mailbox-migration/googleworkspace-migration-prerequisites#create-a-subdomain-for-mail-routing-to-microsoft-365-or-office-365))\n- Assign licenses before completing the migration batch\n- In Google Workspace, [set up routing for your domain or organization](https://support.google.com/a/answer/6297084)\n- The previous option is not available in GSuite free edition. In this case you have to ask each migrated user to click the validation link sent to their inbox.\n\n### Automatic forwarding is denied on Microsoft 365\nEven if you have a remote domain 'Default' set up to allow automatic forwarding, you can run into this error:   \n`Access denied, Your organization does not allow external forwarding. Please contact your administrator for further assistance. AS(7555)`   \n\nJust add another remote domain for your Microsoft 365 delivery domain (e.g. office365.`\u003cyourdomain`\u003e.com)\n\n## Other GSuite decommisioning tasks\nAs you plan to abanodon GSuite, realize a Google Account is used for a lot more than GSuite:\n- A Google Account can be used to sign into 3rd party applications (e.g., Feedly). Check any [apps or sites](https://myaccount.google.com/permissions) that a user logs in to. That will no longer be possible with the Google Account in GSuite.\n- Use Google [Takeout](https://takeout.google.com/) to download any data that may not have been migrated\n- Users may want a personal Google Account to continue using 1st party Google Apps (e.g., YouTube).\nWhile takeout exports Google 1st part app data, there is not straightforward process to re-import playlists, subscriptions, etc.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeekzter%2Fgsuite-microsoft365-migration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeekzter%2Fgsuite-microsoft365-migration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeekzter%2Fgsuite-microsoft365-migration/lists"}