Google Contacts Offboarding Reassignment
When an employee is offboarded (HR trigger or list), the flow reassigns their Google Contacts to a manager or shared account, exports a backup to SharePoint, updates ownership in the CRM, and notifies the manager in Teams. Prevents loss of relationships when people leave.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
FlowLibs - Google Contacts Offboarding Reassignment preserves business relationships when an employee leaves. When an HR Offboarding Request row is created in Dataverse, the flow backs up the departing employee's Google contacts to SharePoint as a CSV, records the ownership reassignment in a Dataverse log (the CRM ownership update), stamps the request as processed, and notifies the manager in Teams.
Why it matters: When people leave, their contacts often vanish. An automated backup + ownership record + manager handoff preserves continuity and creates a governed audit trail.
Connector limitation: the Google Contacts connector is read/create only — it has no update or delete operation — so contacts cannot be programmatically moved from a flow. Reassignment is therefore implemented as a governed backup + Dataverse ownership record + manager notification; the actual Google-side move requires the Google People API via an HTTP action with OAuth (typically domain-wide delegation), noted in the customization guide and the log status.
Status: Built. Ships Off (demo). Flow Checker: 0 errors / 0 warnings.
Use Case
HR/IT wants a departing employee's contacts captured, backed up, and formally handed to the right owner with a clear audit record.
Flow Architecture
When an offboarding request is created
Microsoft Dataverse — SubscribeWebhookTrigger (Create, Org scope)Fires on a new Offboarding Request row.
Initialize Correlation Id + config
Initialize VariableTrace id plus departing/manager emails, new owner (request value or default), site URL, backup path, and Teams group/channel.
List Google Contacts
Google Contacts — PeopleApiListContactsV4Read all contacts (backup + handoff source).
Select Contacts For Backup
SelectFlatten to Name/Email/Phone/Company/JobTitle.
Create CSV Backup
Table (CSV)Build a CSV from the flattened contacts.
Compose Backup File Name / Count
ComposeUnique timestamped CSV file name and contact count.
Backup Contacts To SharePoint
SharePoint — CreateFileWrite the CSV backup to the document library.
Create Reassignment Log
Microsoft Dataverse — CreateRecordRecord new owner, count, and backup URL (CRM ownership).
Update Offboarding Request
Microsoft Dataverse — UpdateRecordMark the request Processed and stamp the correlation id.
Notify Manager In Teams
Microsoft Teams — PostMessageToConversationNotify the manager of the handoff.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_OffboardingEntityName | String | flowlibs_offboardingrequests | Entity-set name the Dataverse trigger watches. |
| flowlibs_ContactsBackupFolderPath | String | /Shared Documents/Contacts Backups | Server-relative library/folder for the CSV backup. |
| flowlibs_SharePointSiteURL | String | https://your-tenant.sharepoint.com | SharePoint site for the backup. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams team/group id for the notification. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel id for the notification. |
| flowlibs_DefaultNewOwnerEmail | String | admin@your-tenant.onmicrosoft.com | Fallback new owner / shared account for reassignment. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Dataverse | shared_commondataserviceforapps | SubscribeWebhookTrigger CreateRecord UpdateRecord |
| Google Contacts | shared_googlecontacts | PeopleApiListContactsV4 |
| SharePoint | shared_sharepointonline | CreateFile |
| Microsoft Teams | shared_teams |
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Selective handover
- Add a Filter array after List Google Contacts to back up only customer/external contacts (e.g. by company or email domain).
- Real Google-side move
- Add an HTTP action to the Google People API (PUT/PATCH on the contact) with domain-wide delegation to complete the actual reassignment, then set the log status to Reassigned.
- Retention
- Schedule a cleanup over the backup library / log table per data-retention policy.
- Manager lookup
- Resolve the manager from Entra ID instead of carrying it on the request.
- Trigger source
- Swap the Dataverse trigger for a Microsoft Forms / Power Apps offboarding intake by writing into the same flowlibs_offboardingrequest table.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Correlation ID
Per-run trace id.
EXPR.02New owner (request value or default)
Use the request's new owner, falling back to the default-owner env var.
EXPR.03Backup file name
Unique timestamped CSV file name.
EXPR.04Contact count
Number of contacts backed up.
EXPR.05Trigger record id (for UpdateRecord)
Primary id of the offboarding request to update.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.