{"id":5273,"date":"2025-05-01T10:17:19","date_gmt":"2025-05-01T17:17:19","guid":{"rendered":"https:\/\/SUMMALAI.COM\/?p=5273"},"modified":"2025-05-01T10:17:21","modified_gmt":"2025-05-01T17:17:21","slug":"password-expiration-notification-for-microsoft-365-users","status":"publish","type":"post","link":"https:\/\/SUMMALAI.COM\/?p=5273","title":{"rendered":"Password Expiration Notification for Microsoft 365 Users"},"content":{"rendered":"\n<p>Statistics show that password-related issues are among the most common helpdesk calls. Implementing an automated process to get password expiration notification email can significantly reduce helpdesk call volume and associated costs. In our previous blog, we discussed how to\u00a0<a href=\"https:\/\/blog.admindroid.com\/send-m365-password-expiration-notification-via-power-automate\/\" target=\"_blank\" rel=\"noreferrer noopener\">create password change reminders using Power Automate\u00a0<\/a>. One of the most requested solutions for password expiration management is sending follow-up emails. In this blog, we\u2019ll show you how to set up free password expiry notification with 7-day follow-up emails, so your users never miss a deadline.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Password-Expiration-Policy-in-Microsoft-365\">Password Expiration Policy in Microsoft 365<\/h2>\n\n\n\n<p>By default, Microsoft 365 passwords are&nbsp;<strong>set to never expire<\/strong>, a recommendation by Microsoft to reduce user burden and prevent risks associated with frequent password changes, such as weaker or reused passwords. Despite Microsoft\u2019s recommendation, many organizations still choose to&nbsp;<a href=\"https:\/\/blog.admindroid.com\/guide-to-setup-office-365-password-policy-in-azure-ad-password-protection\/\" target=\"_blank\" rel=\"noreferrer noopener\">set Azure AD password expiration policy<\/a>.<\/p>\n\n\n\n<p>If your organization sets an expiration limit for user passwords, it\u2019s crucial to establish a system to automate password expiry notifications in Microsoft 365. Manually managing this process can be challenging but automating it can save time and reduce the risk of forgotten password changes. While using PowerShell scripts is also an option, using an automated password expiry notification tool allows for more granular customizations.<\/p>\n\n\n\n<p>Let\u2019s see how to set up password expiry alerts with a free password expiration notifier using Power Automate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Is-this-Really-a-Free-Password-Expiry-Notification-Tool%3F\">Is this Really a Free Password Expiry Notification Tool?<\/h3>\n\n\n\n<p>Yes, this is a free password expiry notification tool because it uses standard connectors instead of premium ones. This means you don\u2019t need a Power Automate premium license, allowing you to run effective workflows without incurring extra costs. Additionally, Power Automate comes free with your Office 365 license, enabling you to leverage this free password expiration notifier without additional expenses.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"How-to-Set-up-Password-Expiration-Notification-Emails%3F\">How to Set up Password Expiration Notification Emails?<\/h2>\n\n\n\n<p>To make this process easy for you, we\u2019ve created a detailed step-by-step video guide. This video walks you through each step, ensuring you can follow along and set up email notifications for password expiration reminders correctly. Watch the video here:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/youtube.com\/watch?v=TfCApGVQPKU%3Ffeature%3Doembed\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Password-Expiry-Notification-Flow---Overview\">Password Expiry Notification Flow \u2013 Overview<\/h2>\n\n\n\n<p>Here is a breakdown of what exactly happens in each step of the flow:<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li><strong>Recurrence<\/strong>: This trigger runs the flow on a scheduled basis, such as daily, to ensure daily checks for expiring passwords.<\/li>\n\n\n\n<li><strong>Enter expiry limit<\/strong>: This step likely allows the admin to input the expiry limit (e.g., 90 days) for passwords.<\/li>\n\n\n\n<li><strong>Send an HTTP request<\/strong>: This step fetches user data, including LastPasswordChangeDateTime, PasswordPolicies, and userPrincipalName from Microsoft Graph API.<\/li>\n\n\n\n<li><strong>Parse JSON<\/strong>: Parses the response from the HTTP request into a JSON format that can be easily processed in the flow.<\/li>\n\n\n\n<li><strong>Filter empty and null values<\/strong>: Filters out any records where the relevant password change date or is empty or null.<\/li>\n\n\n\n<li><strong>Filter expiring items<\/strong>: Filters the data to include only those items (user accounts) that are within the password expiry limit set by the admin.<\/li>\n\n\n\n<li><strong>Filter never expires set items<\/strong>: Further excludes items (user accounts) where the password is set to never expire.<\/li>\n\n\n\n<li><strong>Initialize days remaining<\/strong>: Initializes a variable to store the days left until password expiry.<\/li>\n\n\n\n<li><strong>Process each expiring item<\/strong>: Loops through each filtered user item that has an expiring password.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/expiry-limit-value-970x1024.png\" alt=\"Password expiration notification Microsoft 365\" class=\"wp-image-9462\"\/><figcaption class=\"wp-element-caption\">Password Expiration Notification Flow<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Inside the Loop:<\/strong><\/h4>\n\n\n\n<p><strong>i) Calculate expiring date<\/strong>: Adds the expiry limit to the LastPasswordChangeDateTime to determine the expiry date.<br><strong>ii) Calculate days remaining:&nbsp;<\/strong>Checks if a follow-up password expiry email notification should be sent based on the number of days remaining.<br><strong>iii) Calculates ticks difference:<\/strong>&nbsp;Calculates the difference in ticks between the expiry date and the current date. (Ticks are a finer granularity of time measurement.)<br><strong>iv)Convert difference in ticks to difference in days<\/strong>: Converts the ticks difference into days.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li><strong>Store calculated difference in days<\/strong>: Stores the final calculated difference in days in the daysRemaining variable.<\/li>\n\n\n\n<li><strong>Switch<\/strong>: Evaluates the daysRemaining variable to determine the appropriate action (i.e., when to send Microsoft 365 password expiry notification).<\/li>\n\n\n\n<li><strong>Cases:&nbsp;<\/strong>A password expiration email notification is sent daily for up to 7 days until the user changes their password.<\/li>\n\n\n\n<li><strong>Default<\/strong>: No action is taken if daysRemaining does not match any of the cases (e.g., more than 7 days remaining or negative values).<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/loop-1024x535.png\" alt=\"Password expiry notification\" class=\"wp-image-9463\"\/><figcaption class=\"wp-element-caption\">Processing each items inside the loop<\/figcaption><\/figure>\n\n\n\n<p>At this point, you should have a good understanding of how the flow works. Next, let\u2019s see the step-by-step procedure to deploy the flow and start sending email notification on password expiration for your Microsoft 365 users.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Free-Password-Expiry-Notification%3A-Step-by-Step-Process-to-Import-and-Run-the-Flow\">Free Password Expiry Notification: Step-by-Step Process to Import and Run the Flow<\/h3>\n\n\n\n<p>Let\u2019s see how you can easily import our pre-built package into your Power Automate environment and run the flow that sends email notifications to users before password gets expired: Follow these steps to get started:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Step-1%3A-Download-the-Package\"><strong>Step 1: Download the Package<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Download the<\/strong>&nbsp;<a href=\"https:\/\/admindroid.sharepoint.com\/:u:\/s\/external\/EfSfoLTIH0BAgANNcvQq2NYBN2WqvY3GTXZgRt8zoTpfAA?e=PB3nPs\"><strong>PasswordExpirationNotificationFlow.zip<\/strong><\/a><\/p>\n<\/blockquote>\n\n\n\n<p>For more workflows on M365 user onboarding &amp; offboarding, refer our&nbsp;<a href=\"https:\/\/github.com\/admindroid-community\/power-automate\/tree\/main\" target=\"_blank\" rel=\"noreferrer noopener\"><em>AdminDroid GitHub.<\/em><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Step-2%3A-Import-the-Package-into-Power-Automate\"><strong>Step 2: Import the Package into Power Automate<\/strong><em><\/em><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open the&nbsp;<a href=\"https:\/\/make.powerautomate.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Power Automate app<\/a>.<\/li>\n\n\n\n<li>In the left navigation pane, select&nbsp;<strong>My flows<\/strong>.<\/li>\n\n\n\n<li>At the top, click the&nbsp;<strong>Import<\/strong>&nbsp;dropdown.<\/li>\n\n\n\n<li>Select&nbsp;<strong>Import package (legacy)<\/strong>&nbsp;from the dropdown.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/My-flows1.png\" alt=\"Password expiry email notification\" class=\"wp-image-9464\"\/><figcaption class=\"wp-element-caption\">Importing package<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Once the page loads, click&nbsp;<strong>Upload<\/strong>. Choose the downloaded zip file.<\/li>\n\n\n\n<li>Wait for the file to finish uploading.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Step-3%3A-Configure-the-Imported-Package\"><strong>Step 3: Configure the Imported Package<\/strong><em><\/em><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Under&nbsp;<strong>Choose your import options<\/strong>, click&nbsp;<strong>Update<\/strong>. Select&nbsp;<strong>Create as new<\/strong>&nbsp;and click&nbsp;<strong>Save<\/strong>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/upload-package-2-1024x542.png\" alt=\"Password expiration notification email\n\" class=\"wp-image-9465\"\/><figcaption class=\"wp-element-caption\">Configuring the imported package<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Under&nbsp;<strong>Related resources<\/strong>, select&nbsp;<strong>Create new<\/strong>. This opens the connections page where you can add the necessary standard connectors for the flow.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Create a connection<\/strong>&nbsp;and search for&nbsp;<strong>Office 365 Outlook<\/strong>. Click the&nbsp;<strong>+<\/strong>&nbsp;button to add the connection.<\/li>\n\n\n\n<li>Next, click&nbsp;<strong>Add connection<\/strong>, search for&nbsp;<strong>Office 365 Users<\/strong>, and add another connection.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/add-office-365-outlook-1024x209.png\" alt=\"Password expiration notification tool\n\" class=\"wp-image-9466\"\/><figcaption class=\"wp-element-caption\">Adding Office 365 users connection<\/figcaption><\/figure>\n\n\n\n<p>Return to the configuration page. Click the&nbsp;<strong>Refresh list<\/strong>&nbsp;option, select the added account, and click&nbsp;<strong>Save<\/strong>&nbsp;for both connectors.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/refresh-list.png\" alt=\"sends email notifications for password expiration\n\" class=\"wp-image-9467\"\/><figcaption class=\"wp-element-caption\">Adding admin account<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Once the&nbsp;<strong>Import<\/strong>&nbsp;button is enabled, click it and wait for the package to import.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Step-4%3A-Open-and-Enable-the-Flow\"><strong>Step 4: Open and Enable the Flow<\/strong><em><\/em><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>After the package is successfully imported, select&nbsp;<strong>Open flow<\/strong>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/open-flow-1024x820.png\" alt=\"set up email notifications for password expiration\n\" class=\"wp-image-9468\"\/><figcaption class=\"wp-element-caption\">Opening the imported flow<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This opens the imported flow in your Power Automate workspace. Navigate to the&nbsp;<strong>My flows<\/strong>&nbsp;page.<\/li>\n\n\n\n<li>Select the flow, click&nbsp;<strong>More options<\/strong>&nbsp;(three dots), and choose&nbsp;<strong>Turn on<\/strong>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/turn-on-flow.png\" alt=\"\" class=\"wp-image-9469\"\/><figcaption class=\"wp-element-caption\">Enabling the flow<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Step-5%3A-Customize-the-Flow-by-Setting-Password-Expiry-Limit\"><strong>Step 5: Customize the Flow by Setting Password Expiry Limit<\/strong><em><\/em><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Select the&nbsp;<strong>Edit<\/strong>&nbsp;button to open the flow for editing.<\/li>\n\n\n\n<li>In the second action, labeled&nbsp;<strong>Enter expiry limit<\/strong>, enter the expiration limit set for your organization. The default is 90 days.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Save.<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/enter-expiry-limit-1024x525.png\" alt=\"\" class=\"wp-image-9470\"\/><figcaption class=\"wp-element-caption\">Setting expiry limit value<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Step-6%3A-Test-the-Flow\"><strong>Step 6: Test the Flow<\/strong><em><\/em><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click on the&nbsp;<strong>Test<\/strong>&nbsp;option.<\/li>\n\n\n\n<li>Select&nbsp;<strong>Manually<\/strong>&nbsp;and then click&nbsp;<strong>Test<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run flow<\/strong>&nbsp;and then&nbsp;<strong>Done<\/strong>.<\/li>\n\n\n\n<li>Verify that the flow ran successfully and check that the users meeting the condition have received emails.<\/li>\n<\/ul>\n\n\n\n<p>Once you save the flow, it will run daily, automatically sending notifications to users whose passwords are approaching expiration. And that\u2019s it! Your flow to notify Microsoft 365 users about their upcoming password expiration is now ready to go!\u00a0Password Expiry Notification Flow Result:<\/p>\n\n\n\n<p>Let\u2019s check the password expiration email received for one of the users.<\/p>\n\n\n\n<p>In the email body, they will be given a link to the password change portal as shown below. They can change the password right away.<\/p>\n\n\n\n<p><strong>Note:&nbsp;<\/strong>If you\u2019d like to modify the content of the email, you can adjust the \u201cSend an email\u201d action within the flow and customize the email body to better suit your preferences.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.admindroid.com\/wp-content\/uploads\/2024\/07\/portal.png\" alt=\"Email notifications for password expiration\" class=\"wp-image-9472\"\/><figcaption class=\"wp-element-caption\">Password changing portal<\/figcaption><\/figure>\n\n\n\n<p>We hope that this blog has helped you with the Power Automate flow that sends email notification for password expiration seven days in advance. Similarly, you can also\u00a0<a href=\"https:\/\/blog.admindroid.com\/microsoft-365-user-onboarding-workflow-for-easy-user-provisioning\/\" target=\"_blank\" rel=\"noreferrer noopener\">use Power Automate to simplify Microsoft 365 onboarding<\/a>\u00a0&amp;\u00a0<a href=\"https:\/\/blog.admindroid.com\/office-365-offboarding-best-practices\/\" target=\"_blank\" rel=\"noreferrer noopener\">offboarding practices<\/a>. Thanks for reading. If you have any questions or need further assistance, please leave a comment below.<\/p>\n\n\n\n<p>REF: <a href=\"https:\/\/blog.admindroid.com\/free-password-expiration-notification-with-follow-up-emails-in-power-automate\/\">Free Password Expiry Notification with Follow-up Emails<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Statistics show that password-related issues are among the most common helpdesk calls. Implementing an automated process to get password expiration notification email can significantly reduce helpdesk call volume and associated costs. In our previous blog, we discussed how to\u00a0create password change reminders using Power Automate\u00a0. One of the most requested solutions for password expiration management <a class=\"read-more\" href=\"https:\/\/SUMMALAI.COM\/?p=5273\">Read More<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[238,239],"tags":[1844,1843],"class_list":["post-5273","post","type-post","status-publish","format-standard","hentry","category-cloud","category-azure","tag-password-expiration-notification-for-microsoft-365","tag-password-expiration-notification-for-microsoft-365-users"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=\/wp\/v2\/posts\/5273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5273"}],"version-history":[{"count":1,"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=\/wp\/v2\/posts\/5273\/revisions"}],"predecessor-version":[{"id":5275,"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=\/wp\/v2\/posts\/5273\/revisions\/5275"}],"wp:attachment":[{"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/SUMMALAI.COM\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}