{"id":20267344,"url":"https://github.com/loryanstrant/bookingswithmesignaturemanager","last_synced_at":"2025-09-09T06:50:25.677Z","repository":{"id":60687198,"uuid":"543348955","full_name":"loryanstrant/BookingsWithMeSignatureManager","owner":"loryanstrant","description":"A solution for end-users to easily add/remove their Bookings with Me public page to their email signature, using a Power App front-end, Power Automate workflows, Microsoft Graph calls, and an Exchange PowerShell script running in an Azure Automation Runbook","archived":false,"fork":false,"pushed_at":"2022-10-03T22:16:10.000Z","size":146,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-06T08:57:52.555Z","etag":null,"topics":["automation","azure-automation","microsoft","microsoft-365","microsoft-graph","outlook","outlook-365","powershell"],"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/loryanstrant.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}},"created_at":"2022-09-29T22:57:59.000Z","updated_at":"2025-03-05T16:46:20.000Z","dependencies_parsed_at":"2023-01-19T04:31:20.252Z","dependency_job_id":null,"html_url":"https://github.com/loryanstrant/BookingsWithMeSignatureManager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/loryanstrant/BookingsWithMeSignatureManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loryanstrant%2FBookingsWithMeSignatureManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loryanstrant%2FBookingsWithMeSignatureManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loryanstrant%2FBookingsWithMeSignatureManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loryanstrant%2FBookingsWithMeSignatureManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/loryanstrant","download_url":"https://codeload.github.com/loryanstrant/BookingsWithMeSignatureManager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loryanstrant%2FBookingsWithMeSignatureManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274257361,"owners_count":25251187,"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","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["automation","azure-automation","microsoft","microsoft-365","microsoft-graph","outlook","outlook-365","powershell"],"created_at":"2024-11-14T12:14:17.559Z","updated_at":"2025-09-09T06:50:25.653Z","avatar_url":"https://github.com/loryanstrant.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bookings with Me Signature Manager\nA solution for end-users to easily add/remove their Bookings with Me public page to their email signature, using a Power App front-end, Power Automate workflows, Microsoft Graph calls, and an Exchange PowerShell script running in an Azure Automation Runbook.\n\u003cbr\u003e\nAn example of the end-user experience:\n![image](https://user-images.githubusercontent.com/51473494/193504352-f3e784c3-b098-412d-b5f7-0d4564898b37.png)\n\nThe output looks like this:\n![image](https://user-images.githubusercontent.com/51473494/193695677-1fcc0c70-08bd-4d9f-b990-bd636fed5c7e.png)\n\u003cbr\u003e\n\nYou can access the full write-up of this solution here: https://www.loryanstrant.com/2022/10/04/automatically-populate-staff-signatures-with-their-bookings-with-me-public-page/\n\nWhile this solution does use extensionAttribute1, you can change this to use another one if this is already in use.\n\nPrerequisites:\n- Azure Automation account\n  - Exchange Online Management module for PowerShell installed\n  - Run As account created\n  - Exchange Administrator role assigned\u003cbr\u003e\n  Follow this blog for steps on how to achieve the above steps: https://practical365.com/use-azure-automation-exchange-online/\n\nSteps required to install:\n1. Import the solution into Power Apps / Power Automate\n2. Using the associated App Registration from your Azure Run As app in your Azure Active Directory\n   - Add the \"Exchange.ManageAsApp\" application permission from Office 365 Exchange Online\n   - Add the \"User.ReadWrite.All\" application permission Microsoft Graph\n   - Grant admin consent for the permissions\n   - Create a client secret\n3. Create a Runbook in Azure Automation with the PowerShell script that utilises the Service Principal created in step 2\n4. Update the two Azure Automation actions in the workflow \"USERS - Book with Me (CHILD FLOW) - get ExchangeGUID\" to use your new Runbook (expect errors, they will go away as you update the fields)\n5. Update the corresponding variables in the following workflows with your Tenant ID, Client / Application ID, and Secret obtained in step 2:\n   - \"USERS - Book with Me - clear extensionAttribute1\"\n   - \"USERS - Book with Me - get status of extensionAttribute1\"\n   - \"USERS - Book with Me - set URL in extensionAttribute1\"\n6. Turn on the workflow \"USERS - Book with Me (CHILD FLOW) - get ExchangeGUID\" and copy the HTTP POST URL from the trigger\n7. Paste the HTTP POST URL from step 6 into the \"HTTP - call child workflow\" action in the workflow \"USERS - Book with Me - set URL in extensionAttribute1\"\n8. Publish the app, and away you go!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floryanstrant%2Fbookingswithmesignaturemanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floryanstrant%2Fbookingswithmesignaturemanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floryanstrant%2Fbookingswithmesignaturemanager/lists"}