Use Power Automate to Notify of Upcoming Azure AD App Client Secrets and Certificate Expirations

Published Jun 01 2021 03:19 PM 30.4K Views
Microsoft

 

Disclaimer
The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages.

 

 

Are you constantly challenged with keeping up with all your Azure Active Directory Enterprise Application client secrets and certificates and their associated expiration dates? 

I sometimes work with customers who have a thousand or more Azure AD applications to manage. Unfortunately, trying to keep up with all the client secrets and certificates expiring on each one of these apps can be a futile experience.   

 

I came up with a solution to this problem by using Power Automate to proactively notify the Azure Active Directory administrators of upcoming client secret and certificate expirations. You can also optionally notify application owners as well, assuming you've defined the owner property on each application. This solution was a big help for customers with thousands of AAD apps to keep track of.  I owe a huge thanks to a friend and peer of mine, Norman Drews, for his CSS & HTML expertise. 

 

Here’s how I solved it using Power Automate.  If you’d like to download the Power Automate flow and import it into your environment, click here to download it from my Github repository.  I have also since the original publishing of this article, worked on creating a Logic Apps version of the same process and have it working well.  If you're interested in that instead, visit Use Azure Logic Apps to notify of pending AAD application client secrets and certificate expirations...

 

PLEASE take a moment to provide your feedback on this solution! https://forms.office.com/r/b7hHXLb7R1

 

  1. Create (or use an existing) Azure AD app registration that has ONE of the following Microsoft Graph Application type (not Delegated) Permissions (starting from the least and ending with the most restrictive option) -  Application.Read.All, Application.ReadWrite.All, or Directory.Read.All.
  2. Create a Scheduled Flow to run daily or weekly depending on how often you want to be alerted. 
     

    Variable definitions in the FlowVariable definitions in the Flow

     
  3. Initialize variable (String) – appId – this is the appID of the application created in step 1.
  4. Initialize variable (String) – displayName – this will be used to identify the display name of the application. 
  5. Initialize variable (String) – clientSecret – this needs to be set with the client secret of the Azure AD application created or chosen in step 1. In my upcoming Logic App blog equivalent version post of this Power Automate, I will also show how to check out the client secret, client ID, and tenant ID from an Azure Vault rather than hard coding these in as variables.  Stay tuned, it's coming soon (hopefully Oct 2021!)
  6. Initialize variable (String) – clientId – this needs to be set with the application (client) ID of the Azure AD application created or chosen in step 1. 
  7. Initialize variable (String) – tenantId – this needs to be set with the tenant ID of the Azure AD application created or chosen in step 1. 
  8. Initialize variable (Array) – passwordCredentials – this variable will be used to populate the client secrets of each Azure AD application. 
  9. Initialize variable (Array) – keyCredentials – this variable will be used to populate the certificate properties of each Azure AD application. 
  10. Initialize variable (Object) – styles – this is some CSS styling to highlight Azure AD app secrets and expirations that are going to expire in 30 days (yellow) vs 15 days (red).  You can adjust these values accordingly to meet your needs.

 

Content of this step: 

 

 

 

 

 

 

 

 

 

{ 
  "tableStyle": "style=\"border-collapse: collapse;\"", 
  "headerStyle": "style=\"font-family: Helvetica; padding: 5px; border: 1px solid black;\"", 
  "cellStyle": "style=\"font-family: Calibri; padding: 5px; border: 1px solid black;\"", 
  "redStyle": "style=\"background-color:red; font-family: Calibri; padding: 5px; border: 1px solid black;\"", 
  "yellowStyle": "style=\"background-color:yellow; font-family: Calibri; padding: 5px; border: 1px solid black;\"" 
} 

 

 

 

 

 

 

 

 

 

 

       11.  Initialize variable (String) – html – this creates the table headings and rows that will be populated with each of the Azure AD applications and associated expiration info. 


Content of this step:

 

 

 

 

 

 

 

 

 

 

 

<table @{variables('styles').tableStyle}><thead><th @{variables('styles').headerStyle}>Application ID</th><th @{variables('styles').headerStyle}>Display Name</th><th @{variables('styles').headerStyle}>Days until Expiration</th><th @{variables('styles').headerStyle}>Type</th><th @{variables('styles').headerStyle}>Expiration Date</th></thead><tbody> 

 

 

 

 

 

 

 

 

 

 

 

  1. Initialize variable (Float) – daysTilExpiration – this is the number of days prior to client secret or certificate expiration to use in order to be included in the report 
  2. We need to request an authentication token using our tenantIdclientId, and clientSecret variables. We do this by adding an "HTTP" action that should look like the following screenshot below, utilizing the URI, Headers, & Body, along with our clientId, tenantId, and clientSecret variables.  The authentication type will be "None" as this step is requesting a "Bearer token" which will be used for the HTTP request further down in the flow.
 

Request token step of the FlowRequest token step of the Flow

 

  1. The Parse JSON step will parse all the properties in the returned token request. 

 

 

Retrieve token info JSON schemaRetrieve token info JSON schema

 

The JSON schema to use is as follows: 

 

 

 

 

 

 

 

 

 

 

{ 
    "type": "object", 
    "properties": { 
        "token_type": { 
            "type": "string" 
        }, 
        "expires_in": { 
            "type": "integer" 
        }, 
        "ext_expires_in": { 
            "type": "integer" 
        }, 
        "access_token": { 
            "type": "string" 
        } 
    } 
}

 

 

 

 

 

 

 

 

 

 

 

  1. Initialize variable (String) – NextLink – This is the graph API URI to request the list of Azure AD applications.  The $select only returns the idappIdDisplayNamepasswordCredentials, and keyCredentials, and since graph API calls are limited to 100 rows at a time, I bumped my $top up to 999 so it would use less API requests (1 per 1000 apps vs 10 per 1000 apps). 

 

https://graph.microsoft.com/v1.0/applications?$select=id,appId,displayName,passwordCredentials,keyCr... 

 

  1. Next, we enter the Do until loop. It will perform the loop until the NextLink variable is empty.  The NextLink variable will hold the @odata.nextlink property returned by the API call. When the API call retrieves all the applications in existence, there is no @odata.nextlink property.  If there are more applications to retrieve, the @odata.nextlink property will store a URL containing the link to the next page of applications to retrieve. The way to accomplish this is to click “Edit in advanced mode” and paste @not(equals(variables('NextLink'), null)), or you can optionally use @empty(variables('NextLink')) which should be the same net result. 
 

Do Until loopDo Until loop

 

  1. The first step in the Do until loop uses the HTTP action to retrieve the Azure AD applications list.  The first call will use the URL we populated this variable within step 15.  For this step, the Authentication should be set to "RAW", and the Value should be set to "Bearer <access_token>".  access_token is a dynamic value returned from the "Parse JSON - Retrieve token info" step which should be holding our token that was issued.
  2. Parse JSON step is added to parse the properties from the returned body from the API call. 

 

The content of this Parse JSON step is as follows:

 

 

 

 

 

 

 

 

{
    "type": "object",
    "properties": {
        "properties": {
            "properties": {
                "@@odata.context": {
                    "properties": {
                        "type": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "value": {
                    "properties": {
                        "items": {
                            "properties": {
                                "properties": {
                                    "properties": {
                                        "@@odata.id": {
                                            "properties": {
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "appId": {
                                            "properties": {
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "displayName": {
                                            "properties": {
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "keyCredentials": {
                                            "properties": {
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "passwordCredentials": {
                                            "properties": {
                                                "items": {
                                                    "properties": {
                                                        "properties": {
                                                            "properties": {
                                                                "customKeyIdentifier": {
                                                                    "properties": {},
                                                                    "type": "object"
                                                                },
                                                                "displayName": {
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                },
                                                                "endDateTime": {
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                },
                                                                "hint": {
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                },
                                                                "keyId": {
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                },
                                                                "secretText": {
                                                                    "properties": {},
                                                                    "type": "object"
                                                                },
                                                                "startDateTime": {
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                }
                                                            },
                                                            "type": "object"
                                                        },
                                                        "required": {
                                                            "items": {
                                                                "type": "string"
                                                            },
                                                            "type": "array"
                                                        },
                                                        "type": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                },
                                "required": {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                "type": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "type": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "type": {
            "type": "string"
        }
    }
}

 

 

 

 

 

 

 

  1. Get future time action will get a date in the future based on the number of days you’d like to start receiving notifications prior to expiration of the client secrets and certificates. 
  2. Next a foreach – apps loop will use the value array returned from the Parse JSON step of the API call to take several actions on each Azure AD application. 
 

ForEach apps loopForEach apps loop

 

  1. Set variable (String) – appId – uses the appId variable we initialized in step 3 to populate it with the application ID of the current application being processed. 
  2. Set variable (String) – displayName – uses the displayName variable we initialized in step 4 to populate it with the displayName of the application being processed. 
  3. Set variable (String) – passwordCredentials – uses the passwordCredentials variable we initialized in step 5 to populate it with the client secret of the application being processed. 
  4. Set variable (String) – keyCredentials – uses the keyCredentials variable we initialized in step 5 to populate it with the client secret of the application being processed. 
  5. A foreach will be used to loop through each of the client secrets within the current Azure AD application being processed. 
 

ForEach passwordCreds loopForEach passwordCreds loop

 

  1. The output from the previous steps to use for the foreach input is the passwordCreds variable.  
  2. A condition step is used to determine if the Future time from the Get future time step 19 is greater than the endDateTime value from the current application being evaluated. 
  3. If the future time isn’t greater than the endDateTime, we leave this foreach and go to the next one. 
  4. If the future time is greater than the endDateTime, we first convert the endDateTime to ticks. Ticks is a 100-nanosecond interval since January 1, 0001 12:00 AM midnight in the Gregorian calendar up to the date value parameter passed in as a string format. This makes it easy to compare two dates, which is accomplished using the expression ticks(item()?[‘endDateTime’]). 
  5. Next, use a Compose step to convert the startDateTime variable of the current time to ticks, which equates to ticks(utcnow()). 
  6. Next, use another Compose step to calculate the difference between the two ticks values, and re-calculate it using the following expression to determine the number of days between the two dates. 

 

div(div(div(mul(sub(outputs('EndTimeTickValue'),outputs('StartTimeTickValue')),100),1000000000) , 3600), 24) 

 

  1. Set the variable daystilexpiration to the output of the previous calculation. 
  2. Set variable (String) – html – creates the HTML table.  The content of this step is as follows: 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<tr><td @{variables('styles').cellStyle}><a href="#"appId')}/isMSAApp/">@{variables('appId')}</a></td><td @{variables('styles').cellStyle}>@{variables('displayName')}</td><td @{if(less(variables('daystilexpiration'),15),variables('styles').redStyle,if(less(variables('daystilexpiration'),30),variables('styles').yellowStyle,variables('styles').cellStyle))}>@{variables('daystilexpiration')} </td><td @{variables('styles').cellStyle}>Secret</td><td @{variables('styles').cellStyle}>@{formatDateTime(item()?['endDateTime'],'g')}</td></tr> 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Another foreach will be used to loop through each of the certificates within the current Azure AD application being processed.  This is a duplication of steps 25 through 33 except that it uses the keyCredentials as its input, compares the future date against the currently processed certificate endDateTime, and the Set variable – html step is as follows: 

 

 

 

 

 

 

 

 

 

 

 

<tr><td @{variables('styles').cellStyle}><a href="#"appId')}/isMSAApp/">@{variables('appId')}</a></td><td @{variables('styles').cellStyle}>@{variables('displayName')}</td><td @{if(less(variables('daystilexpiration'), 15), variables('styles').redStyle, if(less(variables('daystilexpiration'), 30), variables('styles').yellowStyle, variables('styles').cellStyle))}>@{variables('daystilexpiration')} </td><td @{variables('styles').cellStyle}>Certificate</td><td @{variables('styles').cellStyle}>@{formatDateTime(item()?['endDateTime'], 'g')}</td></tr> 

 

 

 

 

 

 

 

 

 

 

 

ForEach Key Credentials loopForEach Key Credentials loop

 

  1. Immediately following the foreach – apps loop, as a final step in the Do while loop is a Set NextLink variable which will store the dynamic @odata.nextlink URL parsed from the JSON of the API call. 
  2. Append to variable (Array) – html – Immediately following the Do while loop ends, we close out the html body and table by appending <tbody></table> to the variable named html. 

 

Yes branchYes branch

 

  1. Finally, send the HTML in a Send an e-mail action, using the variable html for the body of the e-mail. 
 

End of the flow including send emailEnd of the flow including send email

  

And below is the resulting e-mail received when the flow runs on its scheduled time.  Included is a hyperlink for each application that takes you directly to where you need to update the client secret and/or certificates for each application within the Azure portal. 

Sample e-mailSample e-mail

 

Now - if you also want to notify the application owners as well, you can add an HTTP get to https://graph.microsoft.com/v1.0/applications/{id}/owners endpoint to query the application owner property of each application.  The logic check after Get Secret Owner uses an expression length(body('Get_Secret_owner')?['value']) to see if it is equal to an expression int(0).  

 

GetSecretOwner.png

 

If it's True, there's no owner to notify so it just appends "No Owner" to the html variable.  If it's not, there's an owner defined, and it will use the UserPrincipalName to build a mailto: hyperlink for the html using the expression body('Get_Secret_Owner')?['value'][0]?['userPrincipalName']

 

ownerhtml.JPG

Thanks for reading!  And again, PLEASE take a moment to provide your feedback on this solution! https://forms.office.com/r/b7hHXLb7R1

62 Comments
%3CLINGO-SUB%20id%3D%22lingo-sub-2412047%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2412047%22%20slang%3D%22en-US%22%3E%3CP%3EAwesome%20Work%20Rus!%20Really%20will%20be%20very%20helpful%20for%20all%20Azure%20AD%20admins.%3C%2FP%3E%3CP%3EIt%20would%20be%20great%20if%20you%20could%20do%20a%20working%20Demo%20of%20this%20from%20start%20to%20end%20which%20will%20make%20it%20easy%20and%20more%20clear%20about%20directly%20importing%20your%20Flows%20in%20Power%20automate%20and%20start%20using%20it.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2428933%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2428933%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F491101%22%20target%3D%22_blank%22%3E%40AnilChoubey%3C%2FA%3E%26nbsp%3BThank%20you!%26nbsp%3B%20Let%20me%20know%20if%20you%20have%20any%20specific%20questions%20on%20how%20to%20import%20it%20and%20use%20it%20and%20i'll%20be%20happy%20to%20answer.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2455854%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2455854%22%20slang%3D%22en-US%22%3E%3CP%3EThis%20was%20awesome%20and%20exactly%20what%20I%20was%20looking%20for!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2461075%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2461075%22%20slang%3D%22en-US%22%3E%3CP%3EThanks%20for%20posting%20this%20Russ%2C%20its%20like%20you%20read%20my%20mind!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2492054%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2492054%22%20slang%3D%22en-US%22%3E%3CP%3EThanks%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%2C%20an%20export%20of%20the%20template%20could%20be%20helpful%20here%26nbsp%3B%3CIMG%20class%3D%22lia-deferred-image%20lia-image-emoji%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Fhtml%2F%408341BD79091AF36AA2A09063B554B5CD%2Fimages%2Femoticons%2Fsmile_40x40.gif%22%20alt%3D%22%3Asmile%3A%22%20title%3D%22%3Asmile%3A%22%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2496776%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2496776%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3Bthanks%20a%20lot%20for%20your%20development.%20It's%20exactly%20what%20I%20was%20looking%20for.%20I've%20got%20just%20two%20questions%20regarding%20this%3A%3C%2FP%3E%3COL%3E%3CLI%3EIs%20Application.Read.All%20a%20risky%20permission%20or%20can%20I%20use%20it%20in%20a%20specific%20application%20created%20for%20that%20flow%3F%26nbsp%3B%3C%2FLI%3E%3CLI%3EIs%20it%20possible%20to%20store%20the%20secret%20in%20a%20sensitive%20field%20to%20hide%20his%20value%3F%3C%2FLI%3E%3C%2FOL%3E%3CP%3EThanks%20in%20advance%20for%20your%20answer.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2497380%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2497380%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%20class%3D%22VIiyi%22%3E%3CSPAN%20class%3D%22JLqJ4b%20ChMk0b%22%3E%3CSPAN%3EThanks%20for%20that%2C%20very%20useful!%3CBR%20%2F%3EUnfortunately%2C%20I%20reproduced%20your%20steps%20in%20a%20logic%20app%2C%20but%20I%20have%20a%20problem%20for%20%22Get%20AzureAD%20Applications%22%3A%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%20%20%22error%22%3A%20%0A%20%20%20%20%22code%22%3A%20%22Authorization_RequestDenied%22%2C%0A%20%20%20%20%22message%22%3A%20%22Insufficient%20privileges%20to%20complete%20the%20operation.%22%2C%3C%2FPRE%3E%3CP%3E%3CSPAN%20class%3D%22VIiyi%22%3E%3CSPAN%20class%3D%22JLqJ4b%20ChMk0b%22%3E%3CSPAN%3EThe%20App%20Registration%20as%20%22Azure%20Active%20Directory%20Graph%20%2F%20Application.Read.All%22%20granted%20for%20the%20company..%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22VIiyi%22%3E%3CSPAN%20class%3D%22JLqJ4b%20ChMk0b%22%3E%3CSPAN%3EAm%20I%20missing%20something%3F%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2499894%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2499894%22%20slang%3D%22en-US%22%3E%3CP%3EHello%20Russ%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20really%20like%20this%20solution.%20However%2C%20I'm%20having%20some%20trouble%20implementing%20it.%20Within%20the%20Do%20Until%20%3CSTRONG%3E%40empty(variables('NextLink'))%20step%2C%26nbsp%3B%3C%2FSTRONG%3Emy%20flow%20runs%20the%20Get-applications%20HTTP%20action%2060%20times%20even%20though%20I%20only%20have%206%20applications.%20Any%20idea%20what%20might%20have%20caused%20this%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks!%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2515550%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2515550%22%20slang%3D%22en-US%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%2C%3C%2FP%3E%3CP%3EI%20have%20the%20same%20behavior%20as%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1091606%22%20target%3D%22_blank%22%3E%40ts-yong%3C%2FA%3E%26nbsp%3Bhas.%3C%2FP%3E%3CP%3EDo%20you%20have%20the%20cause%20of%20that%20and%20how%20to%20correct%20this%20issue%3F%3C%2FP%3E%3CP%3EThanks%20for%20your%20precious%20help.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2535960%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2535960%22%20slang%3D%22en-US%22%3E%3CP%3EGreat%20solution%20%3Athumbs_up%3A%3Athumbs_up%3A%3Athumbs_up%3A%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2547462%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2547462%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1091606%22%20target%3D%22_blank%22%3E%40ts-yong%3C%2FA%3E%26nbsp%3Band%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1002353%22%20target%3D%22_blank%22%3E%40NicolasHon%3C%2FA%3E%26nbsp%3BWhat%20is%20your%20NextLink%20variable%20getting%20set%20to%20during%20this%2060%20time%20loop%3F%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2547483%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2547483%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F239893%22%20target%3D%22_blank%22%3E%40Julien%20Barreau-mainson%3C%2FA%3E%26nbsp%3BThe%20template%20is%20linked%20already%20for%20download%2C%20let%20me%20know%20if%20you're%20talking%20about%20some%20other%20template%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2547489%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2547489%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1090255%22%20target%3D%22_blank%22%3E%40chrisinternet%3C%2FA%3E%26nbsp%3Blooks%20like%20your%20Graph%20AAD%20app%20may%20not%20have%20been%20granted%20sufficient%20permissions%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2549160%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2549160%22%20slang%3D%22en-US%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EThis%20worked%20great%20for%20us%20and%20is%20super%20helpful%2C%20so%20thank%20you.%20Wondering%20your%20thoughts%20on%20where%20to%20start%20in%20adding%20owners%20of%20the%20appID%20and%20maybe%20sending%20the%20appropriate%20items%20to%20them%3F%20Once%20you%20have%20a%20large%20number%20of%20apps%20someone%20has%20to%20go%20through%20and%20check%20each%20one%20and%20notify%20that%20group%2Fuser%20for%20them%20to%20take%20some%20sort%20of%20action.%20That%20would%20be%20the%20ultimate%20automation%20of%20this%20problem%20from%20at%20least%20one%20perspective.%20Thanks.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2550373%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2550373%22%20slang%3D%22en-US%22%3E%3CP%3EHey%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%2C%20it%20is%20getting%20set%20to%20the%20value%20null.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2566049%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2566049%22%20slang%3D%22en-US%22%3E%3CP%3EHello%2C%26nbsp%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAs%20Azure%20AD%20will%20be%20deprecated%20soon%2C%20and%20it%20was%20not%20working%20for%20me%2C%20I%20changed%20the%20permission%20AzureAD%20Application.Read.All%20for%20Microsoft%20Graph%20Application.Read.All%2C%20and%20all%20is%20working%20well%20now.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2597924%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2597924%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F453005%22%20target%3D%22_blank%22%3E%40mrkoller%3C%2FA%3E%26nbsp%3BI%20think%20that%20should%20be%20doable%20-%20if%20there's%20an%20owner%20property%20set%20on%20each%20app%2C%20I'd%20think%20it%20could%20query%20AAD%20or%20O365%20for%20their%20e-mail%20address%20and%20send%20them%20an%20individual%20e-mail.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2636402%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2636402%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1090255%22%20target%3D%22_blank%22%3E%40chrisinternet%3C%2FA%3E%26nbsp%3BI've%20got%20a%20working%20Logic%20App%20version%20of%20this%20that%20I%20plan%20to%20blog%20in%20the%20next%20week%20or%20two.%26nbsp%3B%20Wondering%20if%20you%20got%20yours%20working%3F%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2636728%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2636728%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%2C%20thanks%20for%20asking!%3CBR%20%2F%3EYes%2C%20it's%20working%20fine%20for%20me.%20For%20unkown%20reason%2C%20I%20created%20the%20same%20logic%20app%20in%202%20tenant%2C%20one%20is%20working%20fine%20with%20AAD%20graph%2C%20the%20other%20one%20works%20only%20with%20MS%20Graph%20permissions...%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%3E%C2%AF%5C_(%C2%B0-%C2%B0)_%2F%C2%AF%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2671938%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2671938%22%20slang%3D%22en-US%22%3E%3CP%3ESo%20this%20works%20great.%20The%20question%20I%20have%20is%20that%20mine%20only%20seem%20to%20pull%20from%20the%20App%20Registration%20part%20of%20AzAD.%20Is%20there%20a%20way%20to%20get%20this%20to%20also%20pull%20from%20the%20list%20in%20Enterprise%20Applications%3F%20Should%20this%20already%20be%20doing%20that%20and%20I%20missed%20a%20step%20somewhere%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2681177%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2681177%22%20slang%3D%22en-US%22%3E%3CP%3EGetting%20this%20error%20when%20trying%20to%20run%20the%20flow%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EError%3A%20%3CSPAN%3EAction%20'HTTP_-_Get_AzureAD_Applications'%20failed%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EError%20Details%3A%20Access%20token%20is%20empty.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%3EAny%20suggestions%3F%20Thank%20you.%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684673%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684673%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F356602%22%20target%3D%22_blank%22%3E%40AzureGuineaPig%3C%2FA%3E%26nbsp%3B%20in%20your%20HTTP%20-%20Get%20Azure%20AD%20Applications%20step%2C%20make%20sure%20you%20set%20the%20Authentication%20to%20%22RAW%22%20and%20for%20the%20Value%2C%20enter%20%22Bearer%22%20and%20press%20spacebar%2C%20and%20then%20select%20the%20access_token%20returned%20by%20the%20Parse%20JSON%20step%20after%20the%20token%20request.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684685%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684685%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1134033%22%20target%3D%22_blank%22%3E%40MikeRemaly%3C%2FA%3E%26nbsp%3BAFAIK%20Enterprise%20Applications%20doesn't%20have%20client%20secrets%20and%20certificates%3F%26nbsp%3B%20If%20they%20do%2C%20i'm%20not%20even%20sure%20how%20to%20find%20or%20add%20or%20modify%20them%20tbh.%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684754%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684754%22%20slang%3D%22en-US%22%3E%3CP%3ESo%20I%20have%20noticed%20it%20sees%20the%20applications%20in%20Enterprise%20Apps%2C%20but%20it%20doesn't%20pull%20any%20information.%20For%20example%2C%20this%20is%20one%20of%20the%20returns%20for%20the%20flow%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E%22%40odata.id%22%3C%2FSPAN%3E%3CSPAN%3E%3A%20%3C%2FSPAN%3E%3CSPAN%3E%22%3CA%20href%3D%22https%3A%2F%2Fgraph.microsoft.com%2Fv2%2Fxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%2FdirectoryObjects%2Fxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx%2FMicrosoft.DirectoryServices.Application%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgraph.microsoft.com%2Fv2%2Fxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%2FdirectoryObjects%2Fxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx%2FMicrosoft.DirectoryServices.Application%3C%2FA%3E%22%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%22appId%22%3C%2FSPAN%3E%3CSPAN%3E%3A%20%3C%2FSPAN%3E%3CSPAN%3E%22xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx%22%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%22displayName%22%3C%2FSPAN%3E%3CSPAN%3E%3A%20%3C%2FSPAN%3E%3CSPAN%3E%22Cisco%20AnyConnect%20Corp%20VPN%22%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%22passwordCredentials%22%3C%2FSPAN%3E%3CSPAN%3E%3A%20%5B%5D%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%22keyCredentials%22%3C%2FSPAN%3E%3CSPAN%3E%3A%20%5B%5D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESo%20it%20sees%20the%20application%2C%20and%20the%20application%20has%20a%20cert%20that%20gets%20uploaded%20to%20the%20ASA%20to%20use%20AAD%20login%2FMFA%20for%20VPN%2C%20but%20it%20is%20not%20able%20to%20actually%20pull%20the%20information%20from%20Enterprise%20Apps%2C%20if%20that%20makes%20sense%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684794%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684794%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1134033%22%20target%3D%22_blank%22%3E%40MikeRemaly%3C%2FA%3E%26nbsp%3BI%20don't%20even%20see%20a%20way%20to%20add%20a%20client%20secret%20or%20certificate%20in%20Enterprise%20Apps%20to%20try%20and%20repro%20this%3F%26nbsp%3B%20How%20are%20you%20able%20to%20add%20them%20via%20Enterprise%20Apps%3F%26nbsp%3B%20I%20only%20see%20the%20option%20when%20in%20App%20Registrations%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684814%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684814%22%20slang%3D%22en-US%22%3E%3CP%3ESo%20when%20going%20under%20Enterprise%20applications%2C%20you%20can%20click%20on%20the%20app%2C%20then%20click%20Single%20Sign-on%2C%20there%20is%20a%20SAML%20Signing%20Certificate%20that%20is%20generated%20when%20using%20SSO.%20But%20they%20do%20generate%20with%20an%20expiration%20date%20from%20what%20I%20can%20see.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684857%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684857%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3Ebrilliant%2C%20that%20did%20the%20trick%20thank%20you%2C%20the%20flow%20ran%20successfully%2C%20however%20it%20generated%20~100%20separate%20blank%20emails.%20any%20suggestions%20on%20which%20step%20to%20look%20into%20for%20this%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2684942%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2684942%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1134033%22%20target%3D%22_blank%22%3E%40MikeRemaly%3C%2FA%3E%26nbsp%3BAhh%2C%20I%20think%20there%20have%20to%20be%20gathered%20through%20a%20totally%20different%20graph%20call%20-%20looks%20like%20by%20using%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Flogin.microsoftonline.com%2F%7Btenant-id%7D%2Ffederationmetadata%2F2007-06%2Ffederationmetadata.xml%3Fappid%3D%7Bapp-id%7D%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Flogin.microsoftonline.com%2F%7Btenant-id%7D%2Ffederationmetadata%2F2007-06%2Ffederationmetadata.xml%3Fappid%3D%7Bapp-id%7D%3C%2FA%3E%26nbsp%3Bper%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fgraph%2Fapplication-saml-sso-configure-api%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fgraph%2Fapplication-saml-sso-configure-api.%26nbsp%3B%26nbsp%3B%3C%2FA%3E%3C%2FP%3E%0A%3CP%3EMight%20be%20something%20worth%20trying%20to%20add%20for%20sure.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2685005%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2685005%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F356602%22%20target%3D%22_blank%22%3E%40AzureGuineaPig%3C%2FA%3E%26nbsp%3BHmmm%20it%20sounds%20like%20maybe%20your%20send%20e-mail%20step%20is%20inside%20the%20do%20until%20loop%3F%26nbsp%3B%20There%20should%20be%20two%20steps%20below%2Foutside%20the%20Do%20Until%20-%20one%20for%20Append%20to%20variable%20html%20and%20the%20other%20to%20send%20the%20e-mail%2C%20so%20it%20should%20only%20send%20one%20e-mail%2C%20and%20not%20until%20it%20leaves%20the%20Do%20Until%20loop.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2685069%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2685069%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%20Ah%2C%20that%20did%20the%20trick%2C%20getting%20one%20email%20now%2C%20however%20it's%20still%20blank%20%3A(%3C%2Fimg%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EOne%20thing%20I%20noticed%20in%20the%20each%20of%20the%20foreach%20-passowordCreds%20and%20keyCreds%20loops%2C%20I%20don't%20have%20an%20available%20variable%20called%20endDateTime%2C%20only%20parse%20JSON%2C%20could%20this%20be%20contributing%20to%20this%20issue%3F%26nbsp%3B%20When%20I%20select%20it%2C%20it%20resolves%20with%3A%20('Parse_JSON')%3F%5B'properties'%5D%3F%5B'value'%5D%3F%5B'items'%5D%3F%5B'properties'%5D%3F%5B'passwordCredentials'%5D%3F%5B'items'%5D%3F%5B'properties'%5D%3F%5B'endDateTime'%5D%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22screen1.jpg%22%20style%3D%22width%3A%20880px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F305745i5A22F13288B0B604%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22screen1.jpg%22%20alt%3D%22screen1.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2685170%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2685170%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F356602%22%20target%3D%22_blank%22%3E%40AzureGuineaPig%3C%2FA%3E%26nbsp%3BHmm%2C%20that%20should%20look%20like%20this%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22RussRimmerman_0-1629920522998.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F305747i45D2FB767771A5DE%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22RussRimmerman_0-1629920522998.png%22%20alt%3D%22RussRimmerman_0-1629920522998.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2697692%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2697692%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3Bthanks%20for%20this.%20I%20see%20you%20said%20you%20are%20working%20on%20the%20same%20thing%20using%20LOGIC%20APPS%3F%20if%20you%20can%20link%20me%20to%20it%20that%20would%20be%20great.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Eand%20I%20was%20having%20the%20same%20issue%20with%20AzureGuineaPig%2C%20where%20is%20this%20endDateTime%20coming%20from%3F%3C%2FP%3E%3CP%3EThanks%20in%20advance%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2768136%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2768136%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1141054%22%20target%3D%22_blank%22%3E%40jaybkim%3C%2FA%3E%26nbsp%3BYes%20I've%20created%20an%20ARM%20template%20of%20the%20Logic%20App%20version.%26nbsp%3B%20I'm%20thinking%20about%20blogging%20it%20soon%2C%20but%20if%20you'd%20like%20to%20try%20it%20early%20and%20validate%20my%20documentation%2C%20I'd%20be%20happy%20to%20share.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EendDateTime%20is%20items('foreach_-_passwordcreds')%3F%5B'endDateTime'%5D%20and%20the%20other%20is%26nbsp%3Bitems('foreach_-_keycreds')%3F%5B'endDateTime'%5D%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2794179%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2794179%22%20slang%3D%22en-US%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%20for%20sharing%20this%2C%20just%20like%20to%20ask%20what%20sort%20of%20license%20is%20required%20to%20set%20this%20up%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EMy%20account%20currently%20has%20E5%20but%20when%20I%20try%20to%20add%20the%20HTTP%20action%2C%20its%20saying%20that%20it%20requires%20premium%20license%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EDo%20I%20need%20the%20Power%20Automate%20with%20RPA%20license%20to%20get%20this%20working%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2803444%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2803444%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3EThanks%20for%20this%2C%20i%20got%20it%20running%20without%20any%20big%20headaches.%26nbsp%3B%20I%20just%20ran%20into%20an%20SSO%20cert%20expiration%20surprise.%26nbsp%3B%20Any%20idea%20the%20alterations%20i'd%20have%20to%20make%20to%20get%20this%20to%20include%20the%20saml%20cert%20expirations%20or%20a%20separate%20version%20just%20to%20report%20on%20those%3F%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2809026%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2809026%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3BThank%20you%20for%20the%20awesome%20solution!!!!%3C%2FP%3E%3CP%3EI%20had%20to%20scale%20it%20and%20deploy%20it%20to%20multiple%20clients%20thus%20I%20implemented%20a%20Bicep%20template%20based%20on%20the%20Logic%20APP%2C%20pretty%20rough%20but%20does%20the%20job%20and%20is%20easily%20customisable%3C%2FP%3E%3CP%3EPlease%20find%20a%20clone%20of%20the%20repo%20here%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FBiohazardhpk%2FAAD.LogicApp.Cred.Expiry.Check.git%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2FBiohazardhpk%2FAAD.LogicApp.Cred.Expiry.Check.git%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2824626%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2824626%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%2C%26nbsp%3Bthis%20looks%20perfect%20for%20what%20we%20need%20as%20an%20organization.%26nbsp%3B%20I%20have%20no%20experiance%20with%20Power%20automate.%26nbsp%3B%20I'm%20trying%20to%20import%20this%20flow%20and%20i%20get%20stuck%20here%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22drakede_0-1633644923814.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F316068i805D5CFD3F79383E%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22drakede_0-1633644923814.png%22%20alt%3D%22drakede_0-1633644923814.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EI%20can't%20get%20past%20the%20related%20resource.%20Is%20there%20something%20I%20need%20to%20define%20before%20I%20can%20import%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2825821%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2825821%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3BHi%20Russ%2C%20sorry%20for%20the%20late%20answer.%3C%2FP%3E%3CP%3EMy%20issue%20came%20from%20a%20miss%20configuration%20for%20the%20Http%20get%20authentication%20that%20was%20set%20to%20none...%3C%2FP%3E%3CP%3EThanks%20for%20your%20time%20and%20sorry%20for%20that.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2827400%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2827400%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1176299%22%20target%3D%22_blank%22%3E%40drakede%3C%2FA%3E%26nbsp%3Byou'll%20need%20to%20click%20%22Create%20new%22%20and%20create%20a%20new%20connection%20to%20your%20Office365Users%20connector.%26nbsp%3B%20That%20should%20get%20you%20further%20so%20it%20will%20import.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2828747%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2828747%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%2C%26nbsp%3Bthanks%20that%20made%20so%20much%20sense%2C%20I%20made%20a%20mistake%20the%20first%20time%20and%20created%20a%20azure%20AD%20connection.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI've%20got%20it%20all%20imported%20but%20I'm%20still%20failing%20on%20the%20graph%20call%20with%20insufficient%20permissions%3A%20%22Insufficient%20privileges%20to%20complete%20the%20operation.%22%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22drakede_0-1633728543129.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F316281i3D18A0B1DD65D781%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22drakede_0-1633728543129.png%22%20alt%3D%22drakede_0-1633728543129.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI'm%20sure%20this%20is%20a%20Noob%20mistake%2C%20can%20you%20point%20me%20in%20the%20correct%20direction%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2829835%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2829835%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1176299%22%20target%3D%22_blank%22%3E%40drakede%3C%2FA%3E%26nbsp%3BTry%20using%20Application%20permissions%20vs%20Delegated.%26nbsp%3B%20I%20probably%20should've%20mentioned%20that%20in%20the%20post%20-%20will%20update%20it%20now.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2856664%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2856664%22%20slang%3D%22en-US%22%3E%3CP%3E%3CDELETED%3E%3C%2FDELETED%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2856877%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2856877%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F644099%22%20target%3D%22_blank%22%3E%40Laggie%3C%2FA%3E%26nbsp%3Bsince%20it%20does%20make%20an%20http%20call%20which%20uses%20a%20premium%20connector%2C%20you'll%20need%20either%20a%20per%20user%20or%20per%20app%20Power%20Automate%20license.%26nbsp%3B%20For%20this%2C%20I%20would%20think%20per%20app%20would%20be%20must%20less%20costly%20and%20make%20more%20sense.%26nbsp%3B%20With%20that%20said%2C%20if%20you%20prefer%20to%20have%20it%20use%20Azure%20consumption%20rather%20than%20having%20to%20purchase%20a%20license%2C%20I%20have%20a%20Logic%20App%20version%20of%20the%20same%20process%20that%20will%20just%20use%20Azure%20consumption%20instead.%26nbsp%3B%20I'm%20hoping%20to%20blog%20that%20this%20week%20but%20if%20you%20hit%20me%20up%20I%20can%20send%20to%20you%20directly%20to%20test%20for%20me%20in%20advance.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2885180%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2885180%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3Bon%20Aug%2011%20you%20wrote%20you%20had%20a%20Logic%20App%20working%20and%20would%20be%20doing%20a%20blog%20about%20it%20within%20a%20week%20or%20two.%20I'm%20waiting%20for%20that%20blog%20to%20implement%20it%20and%20was%20hoping%20it%20would%20soon%20be%20ready%3F%20Thank%20you%20so%20much%20for%20your%20hard%20work!%20%3A)%3C%2Fimg%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2894941%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2894941%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3BHi%20Russ%2C%20i'm%20really%20looking%20forward%20for%20the%20Consumption%20Logic%20App%20version%2C%20too%20%3A)%3C%2Fimg%3E%20Thank%20you%20so%20much!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2920381%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2920381%22%20slang%3D%22en-US%22%3E%3CP%3EHello%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F356602%22%20target%3D%22_blank%22%3E%40AzureGuineaPig%3C%2FA%3E%20%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Edid%20you%20solve%20the%20issue%20as%20shown%20in%20screenshot%3F%20I%20also%20don't%20have%20an%20available%20variable%20called%20endDateTime%2C%20only%20parse%20JSON%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22endDate.JPG%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F323694i80C0711845A18AA7%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22endDate.JPG%22%20alt%3D%22endDate.JPG%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2919849%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2919849%22%20slang%3D%22en-US%22%3E%3CP%3EHello%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%20%2C%3CBR%20%2F%3E%3CBR%20%2F%3Eyou%20mentioned%20here%20on%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1176299%22%20target%3D%22_blank%22%3E%40drakede%3C%2FA%3E%20issue%20that%20for%20importing%20the%20workflow%20a%20connection%20to%20Office365%20Users%20is%20needed.So%20i%20created%20it%20but%20however%20when%20i%20try%20to%20import%20the%20package%20my%20Office365%20USers%20connection%20does%20not%20appear.See%20screenshot%20below%3A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Connections.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F323663i0E455FD7D0960885%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Connections.png%22%20alt%3D%22Connections.png%22%20%2F%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Import.JPG%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F323664iEC8A1AB72E1C6C99%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Import.JPG%22%20alt%3D%22Import.JPG%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIf%20i%20am%20getting%20it%20right%20here%20is%20needed%20an%20Offcie365%20Outlook%20Connection%20instead%20of%20Office365%20Users%2Cor%20am%20i%20wrong%3F%3C%2FP%3E%3CP%3EThe%20next%20issue%20which%20i%20have%20is%20that%20i%20also%20don't%20have%20an%20available%20variable%20called%20endDateTime%2C%20only%20parse%20JSON%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22olti88_3-1635948404946.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F323856i11F3203A641A052B%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22olti88_3-1635948404946.png%22%20alt%3D%22olti88_3-1635948404946.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22olti88_2-1635948305091.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F323855iF5A3BAFAE86D2E0E%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22olti88_2-1635948305091.png%22%20alt%3D%22olti88_2-1635948305091.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2919797%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2919797%22%20slang%3D%22en-US%22%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2936059%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2936059%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1090255%22%20target%3D%22_blank%22%3E%40chrisinternet%3C%2FA%3E%26nbsp%3B%3A%20Can%20you%20share%20the%20Logic%20app%20version%20please.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2939935%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2939935%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1167557%22%20target%3D%22_blank%22%3E%40Neha625%3C%2FA%3E%26nbsp%3Bhere's%20an%20importable%20Logic%20App%20arm%20template%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Frussrimm%2FAADAppSecretsnCertsExpirationNotification%2Fblob%2Fmain%2FarmTemplate.json%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EAADAppSecretsnCertsExpirationNotification%2FarmTemplate.json%20at%20main%20%C2%B7%20russrimm%2FAADAppSecretsnCertsExpirationNotification%20(github.com)%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2940127%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2940127%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1204974%22%20target%3D%22_blank%22%3E%40olti88%3C%2FA%3E%26nbsp%3BThe%20endDate%20in%20the%20condition%20should%20be%20items('foreach_-_passwordCreds')%3F%5B'endDateTime'%5D.%26nbsp%3B%20This%20is%20assuming%20you%20rename%20your%20foreach%20to%20%22foreach%20-%20passwordCreds%22%20of%20course.%26nbsp%3B%20Same%20for%20the%20foreach%20-%20keyCreds%20except%20it'd%20be%20items('foreach_-_keyCreds')%3F%5B'endDateTime'%5D.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2953621%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2953621%22%20slang%3D%22en-US%22%3E%3CP%3Ei%20my%20case%20i%20have%20only%20one%20tenant%20in%20Azure%20and%20more%20then%20400%20Users%20but%20i%20do%20not%20want%20to%20monitor%20them%20all%20because%20some%20of%20them%20are%20out%20of%20my%20responsibility.Would%20be%20possible%20somehow%20within%20AAD%20to%20reduce%20the%20scope%20of%20monitoring%3FLet%20say%20i%20have%2010%20Subscriptions%20and%20pro%20Subscription%20i%20have%203%20Users.How%20to%20monitor%20only%20these%2030%20Users%3FAny%20hint%20so%20far%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2955136%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2955136%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1204974%22%20target%3D%22_blank%22%3E%40olti88%3C%2FA%3E%26nbsp%3BI%20believe%20you'd%20have%20to%20first%20query%20a%20group%20that%20those%2030%20users%20are%20in%20and%20compare%20them%20against%20the%20owners%20identified%20on%20each%20AAD%20app%20to%20see%20if%20they're%20in%20the%20list%2Farray.%26nbsp%3B%20If%20so%2C%20then%20notify%2C%20if%20not%2C%20then%20exit%20and%20loop%20to%20the%20next%20app%20and%20repeat%20the%20process.%26nbsp%3B%20If%20they%20aren't%20in%20a%20group%2C%20you'd%20have%20to%20build%20an%20array%20manually%20to%20compare%20against.%26nbsp%3B%20Either%20way%2C%20a%20condition%20to%20check%20if%20each%20owner%20is%20a%20match%20in%20your%20array%20would%20probably%20be%20the%20best%20bet.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3006149%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3006149%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI'm%20getting%20some%20issue%20when%20GetAzure%20AD%20Applications.%3C%2FP%3E%3CP%3EI'm%20setting%20as%20per%20describe%20above%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Sylar007345_0-1637852767973.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F329467iCBB12846ECB9506D%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Sylar007345_0-1637852767973.png%22%20alt%3D%22Sylar007345_0-1637852767973.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EBut%20when%20i%20run%20the%20testing%2C%20i'm%20getting%20below%20error%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Sylar007345_1-1637852835496.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F329468i6B5071C9DC996764%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Sylar007345_1-1637852835496.png%22%20alt%3D%22Sylar007345_1-1637852835496.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EBtw%20thank%20you%20in%20advance%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3014378%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3014378%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1229708%22%20target%3D%22_blank%22%3E%40Sylar007345%3C%2FA%3E%26nbsp%3BTake%20the%20%26lt%3B%20and%20%26gt%3B%20off%20before%20and%20after%20your%20bearer%20token%20value.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3016353%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3016353%22%20slang%3D%22en-US%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThank%20you%20for%20your%20response.%3C%2FP%3E%3CP%3EI%20change%20the%20configuration%20from%20Bearer%20%3CACCESS_TOKEN%3E%20to%20Bearer%20access_token%20but%20unfortunately%20getting%20the%20same%20issue.%3C%2FACCESS_TOKEN%3E%3C%2FP%3E%3CP%3EBtw%20the%20for%20enddatetime%2C%20i'm%20getting%20the%20same%20variable%20issue%20as%20mentioned%20by%20the%20others%20where%20is%20not%20properly%20convert%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ETQ%20again%20and%20really%20appreciate%20it%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3018014%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3018014%22%20slang%3D%22en-US%22%3E%3CP%3Ebtw%20the%20request%20token%20info%20is%20returning%20an%20access%20token%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Sylar007345_0-1638275434333.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F330333i97E3FA46CB0993AB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Sylar007345_0-1638275434333.png%22%20alt%3D%22Sylar007345_0-1638275434333.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3061737%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3061737%22%20slang%3D%22en-US%22%3E%3CP%3EIt%20works!!%20Excellent%2C%20thx%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3110368%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3110368%22%20slang%3D%22en-US%22%3E%3CP%3EGreat%20post.%20Thanks%20for%20sharing%20it.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EOne%20point%20that%20came%20to%20my%20mind%20while%20I%20created%20the%20flow%20from%20your%20tutorial%3A%20The%20flow%20could%20be%20optimized%20by%20using%20the%20data%20in%20the%20for%20loop%20directly%20rather%20than%20saving%20it%20to%20a%20variable%20first.%20This%20minimizes%20the%20number%20of%20steps%20within%20the%20flow%2C%20which%20makes%20it%20faster%20and%20consume%20fewer%20API%20requests.%20I%20only%20have%204%20variables%20(TenantId%2C%20Style%2C%20Html%20and%20NextLink)%2C%20all%20the%20others%20can%20be%20used%20directly.%20Two%20exceptions%20of%20that%20are%20CliendId%20and%20ClientSecret%20of%20the%20AppRegistration%20used%20to%20fetch%20the%20list%20of%20AppRegistrations.%20Those%20I%20saved%20in%20environment%20variables.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3144003%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3144003%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWhile%20using%20code%20from%20git%20repo%20%2C%20our%20SPN%20owners%20got%20email%20even%20SPN%20is%20going%20to%20expire%20in%20-308%20days%2C%20can%20you%20please%20suggest%20what%20needs%20to%20change%20to%20get%20email%20only%20if%20SPN%20is%20going%20to%20expire%20in%20%26lt%3B30days%20%3F%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22DurgaPrasad_Daddinala_0-1644421898574.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F346776i1D4A45BFB263B6DB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22DurgaPrasad_Daddinala_0-1644421898574.png%22%20alt%3D%22DurgaPrasad_Daddinala_0-1644421898574.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EBcoz%20we%20are%20run%20thi%20logic%20app%20weekly%20and%20we%20don't%20send%20email%20all%20the%20times.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%3C%2FP%3E%3CP%3EDurgaPrasad%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3145733%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3145733%22%20slang%3D%22en-US%22%3E%3CP%3EWhy%20does%20the%20application%20need%26nbsp%3B%3CSTRONG%3EApplication.ReadWrite.All%3F%3C%2FSTRONG%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3193926%22%20slang%3D%22en-US%22%3ERe%3A%20Use%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3193926%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F237860%22%20target%3D%22_blank%22%3E%40Russ%20Rimmerman%3C%2FA%3E%26nbsp%3B-%20Thank%20your%20for%20the%20well%20written%20and%20detailed%20process%20for%20this%20task.%20Your%20work%20is%20greatly%20appreciated.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2406145%22%20slang%3D%22en-US%22%3EUse%20Power%20Automate%20to%20Notify%20of%20Upcoming%20Azure%20AD%20App%20Client%20Secrets%20and%20Certificate%20Expirations%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2406145%22%20slang%3D%22en-US%22%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CFONT%20size%3D%221%202%203%204%205%206%207%22%3E%3CEM%3E%3CSTRONG%3EDisclaimer%3C%2FSTRONG%3E%3CBR%20%2F%3EThe%20sample%20scripts%20are%20not%20supported%20under%20any%20Microsoft%20standard%20support%20program%20or%20service.%20The%20sample%20scripts%20are%20provided%20AS%20IS%20without%20warranty%20of%20any%20kind.%20Microsoft%20further%20disclaims%20all%20implied%20warranties%20including%2C%20without%20limitation%2C%20any%20implied%20warranties%20of%20merchantability%20or%20of%20fitness%20for%20a%20particular%20purpose.%20The%20entire%20risk%20arising%20out%20of%20the%20use%20or%20performance%20of%20the%20sample%20scripts%20and%20documentation%20remains%20with%20you.%20In%20no%20event%20shall%20Microsoft%2C%20its%20authors%2C%20or%20anyone%20else%20involved%20in%20the%20creation%2C%20production%2C%20or%20delivery%20of%20the%20scripts%20be%20liable%20for%20any%20damages%20whatsoever%20(including%2C%20without%20limitation%2C%20damages%20for%20loss%20of%20business%20profits%2C%20business%20interruption%2C%20loss%20of%20business%20information%2C%20or%20other%20pecuniary%20loss)%20arising%20out%20of%20the%20use%20of%20or%20inability%20to%20use%20the%20sample%20scripts%20or%20documentation%2C%20even%20if%20Microsoft%20has%20been%20advised%20of%20the%20possibility%20of%20such%20damages.%3C%2FEM%3E%3C%2FFONT%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EAre%20you%20constantly%20challenged%20with%20keeping%20up%20with%20all%20your%20Azure%20Active%20Directory%26nbsp%3BEnterprise%20Application%20client%20secrets%20and%20certificates%20and%20their%20associated%20expiration%20dates%3F%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EI%20sometimes%20work%20with%20customers%20who%20have%20a%20thousand%20or%20more%20Azure%20AD%20applications%20to%20manage.%20Unfortunately%2C%20trying%20to%20keep%20up%20with%20all%20the%20client%20secrets%20and%20certificates%20expiring%20on%20each%20one%20of%20these%20apps%20can%20be%20a%20futile%20experience.%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EI%20came%20up%20with%20a%20solution%20to%20this%20problem%20by%20using%20Power%20Automate%20to%20proactively%20notify%20the%20Azure%20Active%20Directory%20administrators%20of%20upcoming%20client%20secret%20and%20certificate%20expirations.%20You%20can%20also%20optionally%20notify%20application%20owners%20as%20well%2C%20assuming%20you've%20defined%20the%20owner%20property%20on%20each%20application.%20This%20solution%20was%20a%20big%20help%20for%20customers%20with%20thousands%20of%20AAD%20apps%20to%20keep%20track%20of.%26nbsp%3B%26nbsp%3BI%20owe%20a%20huge%20thanks%20to%26nbsp%3Ba%26nbsp%3Bfriend%20and%20peer%20of%20mine%2C%26nbsp%3BNorman%20Drews%2C%26nbsp%3Bfor%26nbsp%3Bhis%26nbsp%3BCSS%20%26amp%3B%20HTML%26nbsp%3Bexpertise.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EHere%E2%80%99s%20how%20I%20solved%20it%20using%20Power%20Automate.%26nbsp%3B%20If%20you%E2%80%99d%20like%20to%20download%20the%20Power%20Automate%20flow%20and%20import%20it%20into%20your%20environment%2C%20click%20%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Frussrimm%2FAADAppSecretsnCertsExpirationNotification%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehere%3C%2FA%3E%3CSPAN%3E%20to%20download%20it%20from%20my%20Github%20repository.%26nbsp%3B%20I%20have%20also%20since%20the%20original%20publishing%20of%20this%20article%2C%20worked%20on%20creating%20a%20Logic%20Apps%20version%20of%20the%20same%20process%20and%20have%20it%20working%20well.%26nbsp%3B%20If%20you're%20interested%20in%20that%20instead%2C%20visit%26nbsp%3B%3CA%20title%3D%22Use%20Azure%20Logic%20Apps%20to%20notify%20of%20pending%20AAD%20application%20client%20secrets%20and%20certificate%E2%80%AFexpirations%22%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fcore-infrastructure-and-security%2Fuse-azure-logic-apps-to-notify-of-pending-aad-application-client%2Fba-p%2F3014603%3Ffbclid%3DIwAR3ECopMRsitagEStKLC_yvAmFX4a1Ispn_a8ZFitapPquq9OZcZvQgKVOQ%22%20target%3D%22_self%22%3EUse%20Azure%20Logic%20Apps%20to%20notify%20of%20pending%20AAD%20application%20client%20secrets%20and%20certificate%E2%80%AFexpirations.%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22TextRun%20SCXW48764793%20BCX8%22%20data-contrast%3D%22auto%22%3E%3CSPAN%20class%3D%22NormalTextRun%20SCXW48764793%20BCX8%22%20data-ccp-charstyle%3D%22normaltextrun%22%20data-ccp-charstyle-defn%3D%22%7B%26quot%3BObjectId%26quot%3B%3A%26quot%3Bdbae0be5-20ad-4edb-bf86-f3270ecdfcb0%7C102%26quot%3B%2C%26quot%3BClassId%26quot%3B%3A1073872969%2C%26quot%3BProperties%26quot%3B%3A%5B134233614%2C%26quot%3Btrue%26quot%3B%2C201340122%2C%26quot%3B1%26quot%3B%2C469775450%2C%26quot%3Bnormaltextrun%26quot%3B%2C469778129%2C%26quot%3Bnormaltextrun%26quot%3B%2C469778324%2C%26quot%3BDefault%20Paragraph%20Font%26quot%3B%5D%7D%22%3EPLEASE%20take%20a%20moment%20to%20provide%20your%20feedback%20on%20this%20solution!%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CA%20class%3D%22Hyperlink%20SCXW48764793%20BCX8%22%20href%3D%22https%3A%2F%2Fforms.office.com%2Fr%2Fb7hHXLb7R1%22%20target%3D%22_blank%22%20rel%3D%22noreferrer%20noopener%22%3E%3CSPAN%20class%3D%22TextRun%20Underlined%20SCXW48764793%20BCX8%22%20data-contrast%3D%22none%22%3E%3CSPAN%20class%3D%22NormalTextRun%20SCXW48764793%20BCX8%22%20data-ccp-charstyle%3D%22Hyperlink%22%3Ehttps%3A%2F%2Fforms.office.com%2Fr%2Fb7hHXLb7R1%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3E%3CSPAN%3ECreate%20(or%20use%20an%20existing)%20Azure%20AD%20app%20registration%20that%20has%26nbsp%3BONE%20of%20the%20following%20Microsoft%20Graph%20%3CSTRONG%3EApplication%3C%2FSTRONG%3E%20type%20(not%20%3CSTRONG%3EDelegated%3C%2FSTRONG%3E)%20Permissions%26nbsp%3B(starting%20from%20the%20least%20and%20ending%20with%20the%20most%20restrictive%20option)%26nbsp%3B-%26nbsp%3B%26nbsp%3B%3CSTRONG%3EApplication.Read.All%2C%26nbsp%3BApplication.ReadWrite.All%2C%20%3C%2FSTRONG%3Eor%3CSTRONG%3E%20Directory.Read.All%3C%2FSTRONG%3E.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ECreate%20a%20Scheduled%20Flow%20to%20run%20daily%20or%20weekly%20depending%20on%20how%20often%20you%20want%20to%20be%20alerted.%26nbsp%3B%3C%2FSPAN%3E%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_0%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Variable%20definitions%20in%20the%20Flow%22%20style%3D%22width%3A%20549px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285467i5D58F3E2AB373D7C%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image1.PNG%22%20alt%3D%22Variable%20definitions%20in%20the%20Flow%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EVariable%20definitions%20in%20the%20Flow%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%26nbsp%3B(String)%26nbsp%3B%E2%80%93%26nbsp%3BappId%26nbsp%3B%E2%80%93%20this%26nbsp%3Bis%20the%26nbsp%3BappID%26nbsp%3Bof%20the%20application%20created%20in%20step%201.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%26nbsp%3B(String)%26nbsp%3B%E2%80%93%26nbsp%3BdisplayName%26nbsp%3B%E2%80%93%26nbsp%3Bthis%20will%20be%20used%20to%20identify%20the%20display%20name%20of%20the%20application.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(String)%20%E2%80%93%26nbsp%3BclientSecret%26nbsp%3B%E2%80%93%20this%20needs%20to%20be%20set%20with%20the%20client%20secret%20of%20the%26nbsp%3BAzure%20AD%20application%26nbsp%3Bcreated%20or%20chosen%20in%26nbsp%3Bstep%201.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3BIn%20my%20upcoming%20Logic%20App%20blog%20equivalent%20version%20post%20of%20this%20Power%20Automate%2C%20I%20will%20also%20show%20how%20to%20check%20out%20the%20client%20secret%2C%20client%20ID%2C%20and%20tenant%20ID%20from%20an%20Azure%20Vault%20rather%20than%20hard%20coding%20these%20in%20as%20variables.%26nbsp%3B%20Stay%20tuned%2C%20it's%20coming%20soon%20(hopefully%20Oct%202021!)%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%26nbsp%3B(String)%26nbsp%3B%E2%80%93%26nbsp%3BclientId%26nbsp%3B%E2%80%93%20this%20needs%20to%20be%20set%20with%20the%20application%26nbsp%3B(client)%26nbsp%3BID%26nbsp%3Bof%20the%26nbsp%3BAzure%20AD%26nbsp%3Bapplication%20created%20or%20chosen%20in%20step%201.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(String)%20%E2%80%93%26nbsp%3BtenantId%26nbsp%3B%E2%80%93%20this%20needs%20to%20be%20set%20with%20the%20tenant%20ID%20of%20the%20Azure%20AD%20application%20created%20or%20chosen%20in%20step%201.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(Array)%26nbsp%3B%E2%80%93%26nbsp%3BpasswordCredentials%26nbsp%3B%E2%80%93%20this%26nbsp%3Bvariable%26nbsp%3Bwill%20be%20used%20to%20populate%20the%20client%20secrets%26nbsp%3Bof%20each%20Azure%20AD%20application.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(Array)%20%E2%80%93%26nbsp%3BkeyCredentials%26nbsp%3B%E2%80%93%20this%20variable%20will%20be%20used%20to%20populate%20the%20certificate%20properties%20of%20each%20Azure%20AD%20application.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(Object)%20%E2%80%93%20styles%20%E2%80%93%20this%20is%20some%20CSS%20styling%20to%20highlight%20Azure%20AD%20app%20secrets%20and%20expirations%20that%20are%20going%20to%20expire%20in%2030%20days%20(yellow)%20vs%2015%20days%20(red).%26nbsp%3B%20You%20can%20adjust%20these%20values%20accordingly%26nbsp%3Bto%20meet%20your%20needs.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EContent%20of%20this%20step%3A%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-css%22%3E%3CCODE%3E%7B%20%0A%20%20%22tableStyle%22%3A%20%22style%3D%5C%22border-collapse%3A%20collapse%3B%5C%22%22%2C%20%0A%20%20%22headerStyle%22%3A%20%22style%3D%5C%22font-family%3A%20Helvetica%3B%20padding%3A%205px%3B%20border%3A%201px%20solid%20black%3B%5C%22%22%2C%20%0A%20%20%22cellStyle%22%3A%20%22style%3D%5C%22font-family%3A%20Calibri%3B%20padding%3A%205px%3B%20border%3A%201px%20solid%20black%3B%5C%22%22%2C%20%0A%20%20%22redStyle%22%3A%20%22style%3D%5C%22background-color%3Ared%3B%20font-family%3A%20Calibri%3B%20padding%3A%205px%3B%20border%3A%201px%20solid%20black%3B%5C%22%22%2C%20%0A%20%20%22yellowStyle%22%3A%20%22style%3D%5C%22background-color%3Ayellow%3B%20font-family%3A%20Calibri%3B%20padding%3A%205px%3B%20border%3A%201px%20solid%20black%3B%5C%22%22%20%0A%7D%20%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B11.%26nbsp%3B%20Initialize%20variable%20(String)%20%E2%80%93%20html%20%E2%80%93%20this%26nbsp%3Bcreates%20the%20table%20headings%20and%20rows%20that%20will%20be%20populated%26nbsp%3Bwith%20each%20of%20the%20Azure%20AD%20applications%20and%20associated%20expiration%20info.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%3CBR%20%2F%3EContent%20of%20this%20step%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-html%22%3E%3CCODE%3E%3C%2FCODE%3E%3CTABLE%3E%3CTHEAD%3E%3CTR%3E%3CTH%3EApplication%20ID%3C%2FTH%3E%3CTH%3EDisplay%20Name%3C%2FTH%3E%3CTH%3EDays%20until%20Expiration%3C%2FTH%3E%3CTH%3EType%3C%2FTH%3E%3CTH%3EExpiration%20Date%3C%2FTH%3E%3C%2FTR%3E%3C%2FTHEAD%3E%3CTBODY%3E%20%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%2212%22%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(Float)%26nbsp%3B%E2%80%93%26nbsp%3BdaysTilExpiration%26nbsp%3B%E2%80%93%20this%20is%20the%20number%20of%20days%20prior%20to%20client%20secret%20or%20certificate%20expiration%20to%20use%20in%20order%20to%20be%20included%20in%20the%26nbsp%3Breport%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EWe%26nbsp%3Bneed%20to%20request%20an%20authentication%20token%20using%20our%26nbsp%3B%3CSTRONG%3EtenantId%3C%2FSTRONG%3E%2C%26nbsp%3B%3CSTRONG%3EclientId%3C%2FSTRONG%3E%2C%20and%26nbsp%3B%3CSTRONG%3EclientSecret%3C%2FSTRONG%3E%26nbsp%3Bvariables.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3BWe%20do%20this%20by%20adding%20an%20%22HTTP%22%20action%20that%20should%20look%20like%20the%20following%20screenshot%20below%2C%20utilizing%20the%20URI%2C%20Headers%2C%20%26amp%3B%20Body%2C%20along%20with%20our%20clientId%2C%20tenantId%2C%20and%20clientSecret%20variables.%26nbsp%3B%20The%20authentication%20type%20will%20be%20%22None%22%20as%20this%20step%20is%20requesting%20a%20%22Bearer%20token%22%20which%20will%20be%20used%20for%20the%20HTTP%20request%20further%20down%20in%20the%20flow.%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_1%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Request%20token%20step%20of%20the%20Flow%22%20style%3D%22width%3A%20615px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285468i9D70B5E6FBAB4B01%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image2.PNG%22%20alt%3D%22Request%20token%20step%20of%20the%20Flow%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ERequest%20token%20step%20of%20the%20Flow%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2214%22%3E%0A%3CLI%3E%3CSPAN%3EThe%20Parse%20JSON%20step%20will%20parse%26nbsp%3Ball%26nbsp%3Bthe%20properties%20in%20the%20returned%20token%20request.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Retrieve%20token%20info%20JSON%20schema%22%20style%3D%22width%3A%20609px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285469iED603536D339B2F1%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image3.PNG%22%20alt%3D%22Retrieve%20token%20info%20JSON%20schema%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ERetrieve%20token%20info%20JSON%20schema%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EThe%20JSON%20schema%20to%20use%20is%20as%20follows%3A%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-json%22%3E%3CCODE%3E%7B%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22type%22%3A%E2%80%AF%22object%22%2C%20%0A%20%E2%80%AF%E2%80%AF%E2%80%AF%22properties%22%3A%E2%80%AF%7B%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22token_type%22%3A%E2%80%AF%7B%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22type%22%3A%E2%80%AF%22string%22%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%7D%2C%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22expires_in%22%3A%E2%80%AF%7B%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22type%22%3A%E2%80%AF%22integer%22%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%7D%2C%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22ext_expires_in%22%3A%E2%80%AF%7B%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22type%22%3A%E2%80%AF%22integer%22%20%0A%20%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%7D%2C%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22access_token%22%3A%E2%80%AF%7B%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%22type%22%3A%E2%80%AF%22string%22%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%7D%20%0A%E2%80%AF%E2%80%AF%E2%80%AF%E2%80%AF%7D%20%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2215%22%3E%0A%3CLI%3E%3CSPAN%3EInitialize%20variable%20(String)%20%E2%80%93%26nbsp%3BNextLink%26nbsp%3B%E2%80%93%20This%26nbsp%3Bis%20the%20graph%20API%20URI%20to%20request%20the%20list%20of%20Azure%20AD%20applications.%26nbsp%3B%20The%26nbsp%3B%3CSTRONG%3E%24select%3C%2FSTRONG%3E%26nbsp%3Bonly%20returns%20the%20%3CSTRONG%3Eid%3C%2FSTRONG%3E%2C%26nbsp%3B%3CSTRONG%3EappId%3C%2FSTRONG%3E%2C%26nbsp%3B%3CSTRONG%3EDisplayName%3C%2FSTRONG%3E%2C%26nbsp%3B%3CSTRONG%3EpasswordCredentials%3C%2FSTRONG%3E%2C%20and%26nbsp%3B%3CSTRONG%3EkeyCredentials%3C%2FSTRONG%3E%2C%20and%20since%20graph%20API%20calls%20are%20limited%20to%20100%20rows%20at%20a%20time%2C%20I%20bumped%26nbsp%3Bmy%26nbsp%3B%3CSTRONG%3E%24top%3C%2FSTRONG%3E%26nbsp%3Bup%20to%20999%20so%20it%20would%26nbsp%3Buse%20less%20API%20requests%26nbsp%3B(1%20per%201000%20apps%20vs%2010%20per%201000%20apps).%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fgraph.microsoft.com%2Fv1.0%2Fapplications%3F%24select%3DappId%2CdisplayName%2CpasswordCredentials%2CkeyCredentials%26amp%3B%24top%3D999%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgraph.microsoft.com%2Fv1.0%2Fapplications%3F%24select%3Did%2CappId%2CdisplayName%2CpasswordCredentials%2CkeyCredentials%26amp%3B%24top%3D999%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%2216%22%3E%0A%3CLI%3E%3CSPAN%3ENext%2C%20we%26nbsp%3Benter%26nbsp%3Bthe%26nbsp%3B%3CSTRONG%3EDo%20until%3C%2FSTRONG%3E%26nbsp%3Bloop.%26nbsp%3BIt%20will%20perform%20the%20loop%20until%20the%26nbsp%3B%3CSTRONG%3ENextLink%3C%2FSTRONG%3E%26nbsp%3Bvariable%20is%20empty.%26nbsp%3B%26nbsp%3BThe%26nbsp%3B%3CSTRONG%3ENextLink%3C%2FSTRONG%3E%26nbsp%3Bvariable%20will%20hold%20the%26nbsp%3B%3CSTRONG%3E%40odata.nextlink%3C%2FSTRONG%3E%26nbsp%3Bproperty%20returned%26nbsp%3Bby%20the%20API%20call.%26nbsp%3BWhen%20the%20API%20call%20retrieves%20all%20the%20applications%20in%20existence%2C%20there%20is%20no%26nbsp%3B%3CSTRONG%3E%40odata.nextlink%3C%2FSTRONG%3E%26nbsp%3Bproperty.%26nbsp%3B%20If%20there%20are%20more%20applications%20to%20retrieve%2C%20the%26nbsp%3B%3CSTRONG%3E%40odata.nextlink%3C%2FSTRONG%3E%26nbsp%3Bproperty%20will%20store%20a%20URL%20containing%20the%20link%20to%20the%20next%20page%20of%20applications%20to%26nbsp%3Bretrieve.%26nbsp%3BThe%26nbsp%3Bway%20to%20accomplish%20this%20is%20to%20click%20%E2%80%9CEdit%20in%20advanced%20mode%E2%80%9D%20and%20paste%20%3CSTRONG%3E%40not(equals(variables('NextLink')%2C%20null))%2C%3C%2FSTRONG%3E%26nbsp%3Bor%20you%20can%20optionally%20use%26nbsp%3B%3CSTRONG%3E%40empty(variables('NextLink'))%26nbsp%3B%3C%2FSTRONG%3Ewhich%20should%20be%20the%20same%20net%20result.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_3%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Do%20Until%20loop%22%20style%3D%22width%3A%20585px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285470i57D2049575358051%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image4.PNG%22%20alt%3D%22Do%20Until%20loop%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDo%20Until%20loop%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2217%22%3E%0A%3CLI%3E%3CSPAN%3EThe%20first%20step%20in%20the%20Do%20until%20loop%20uses%20the%20HTTP%20action%20to%20retrieve%20the%20Azure%20AD%20applications%20list.%26nbsp%3B%20The%20first%20call%20will%20use%20the%26nbsp%3BURL%20we%20populated%20this%20variable%26nbsp%3Bwithin%26nbsp%3Bstep%2015.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%20For%20this%20step%2C%20the%20Authentication%20should%20be%20set%20to%20%22RAW%22%2C%20and%20the%20Value%20should%20be%20set%20to%20%22Bearer%20%3CACCESS_TOKEN%3E%22.%26nbsp%3B%20access_token%20is%20a%20dynamic%20value%20returned%20from%20the%20%22Parse%20JSON%20-%20Retrieve%20token%20info%22%20step%20which%20should%20be%20holding%20our%20token%20that%20was%20issued.%3C%2FACCESS_TOKEN%3E%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EA%26nbsp%3B%3CSTRONG%3EParse%20JSON%3C%2FSTRONG%3E%26nbsp%3Bstep%20is%20added%20to%20parse%20the%20properties%20from%20the%26nbsp%3Breturned%20body%20from%20the%26nbsp%3BAPI%26nbsp%3Bcall.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EThe%20content%20of%20this%20%3CSTRONG%3EParse%20JSON%20%3C%2FSTRONG%3Estep%20is%20as%20follows%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3E%7B%0A%20%20%20%20%22type%22%3A%20%22object%22%2C%0A%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%40%40odata.context%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22items%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%40%40odata.id%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22appId%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22displayName%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22keyCredentials%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22passwordCredentials%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22items%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22customKeyIdentifier%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22displayName%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22endDateTime%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22hint%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22keyId%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22secretText%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22startDateTime%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22required%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22items%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22array%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22required%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22items%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22array%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%2219%22%3E%0A%3CLI%3E%3CSPAN%3EA%26nbsp%3B%3CSTRONG%3EGet%20future%20time%3C%2FSTRONG%3E%26nbsp%3Baction%20will%20get%20a%20date%20in%20the%20future%26nbsp%3Bbased%20on%20the%20number%20of%20days%20you%E2%80%99d%20like%20to%20start%20receiving%20notifications%20prior%20to%20expiration%20of%26nbsp%3Bthe%20client%20secrets%20and%20certificates.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ENext%26nbsp%3Ba%26nbsp%3B%3CSTRONG%3Eforeach%26nbsp%3B%E2%80%93%20apps%3C%2FSTRONG%3E%26nbsp%3Bloop%26nbsp%3Bwill%26nbsp%3Buse%20the%26nbsp%3B%3CSTRONG%3Evalue%3C%2FSTRONG%3E%26nbsp%3Barray%20returned%20from%20the%20%3CSTRONG%3EParse%20JSON%3C%2FSTRONG%3E%20step%20of%20the%20API%20call%20to%26nbsp%3Btake%26nbsp%3Bseveral%26nbsp%3Bactions%20on%20each%20Azure%20AD%20application.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_4%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22ForEach%20apps%20loop%22%20style%3D%22width%3A%20583px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285481i692E13638C605981%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image5.png%22%20alt%3D%22ForEach%20apps%20loop%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EForEach%20apps%20loop%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2221%22%3E%0A%3CLI%3E%3CSPAN%3ESet%20variable%20(String)%20%E2%80%93%26nbsp%3BappId%26nbsp%3B%E2%80%93%20uses%20the%26nbsp%3B%3CSTRONG%3EappId%3C%2FSTRONG%3E%26nbsp%3Bvariable%20we%20initialized%26nbsp%3Bin%20step%26nbsp%3B3%26nbsp%3Bto%20populate%20it%20with%20the%20application%20ID%20of%20the%20current%20application%20being%20processed.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ESet%20variable%20(String)%20%E2%80%93%26nbsp%3BdisplayName%26nbsp%3B%E2%80%93%20uses%20the%26nbsp%3B%3CSTRONG%3EdisplayName%3C%2FSTRONG%3E%26nbsp%3Bvariable%20we%20initialized%20in%20step%26nbsp%3B4%20to%20populate%20it%20with%20the%26nbsp%3B%3CSTRONG%3EdisplayName%3C%2FSTRONG%3E%26nbsp%3Bof%20the%20application%20being%20processed.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ESet%20variable%20(String)%20%E2%80%93%26nbsp%3BpasswordCredentials%26nbsp%3B%E2%80%93%20uses%20the%26nbsp%3B%3CSTRONG%3EpasswordCredentials%3C%2FSTRONG%3E%26nbsp%3Bvariable%20we%20initialized%20in%20step%205%20to%20populate%20it%20with%20the%20client%20secret%26nbsp%3Bof%20the%20application%20being%20processed.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ESet%20variable%20(String)%20%E2%80%93%26nbsp%3BkeyCredentials%26nbsp%3B%E2%80%93%20uses%20the%26nbsp%3B%3CSTRONG%3EkeyCredentials%3C%2FSTRONG%3E%26nbsp%3Bvariable%20we%20initialized%20in%20step%205%20to%20populate%20it%20with%20the%20client%20secret%20of%20the%20application%20being%20processed.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EA%26nbsp%3Bforeach%20will%20be%20used%20to%20loop%20through%26nbsp%3Beach%20of%20the%20client%20secrets%20within%20the%20current%20Azure%20AD%20application%20being%20processed.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_5%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22ForEach%20passwordCreds%20loop%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285472iB8259438005B7AB2%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image6.png%22%20alt%3D%22ForEach%20passwordCreds%20loop%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EForEach%20passwordCreds%20loop%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2226%22%3E%0A%3CLI%3E%3CSPAN%3EThe%26nbsp%3Boutput%20from%20the%20previous%20steps%20to%20use%20for%20the%20foreach%20input%20is%20the%26nbsp%3B%3CSTRONG%3EpasswordCreds%26nbsp%3B%3C%2FSTRONG%3Evariable.%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EA%26nbsp%3Bcondition%20step%26nbsp%3Bis%20used%20to%20determine%20if%20the%20Future%20time%20from%20the%20Get%20future%20time%20step%26nbsp%3B19%26nbsp%3Bis%20greater%20than%26nbsp%3Bthe%26nbsp%3B%3CSTRONG%3EendDateTime%26nbsp%3B%3C%2FSTRONG%3Evalue%20from%20the%20current%20application%20being%20evaluated.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EIf%26nbsp%3Bthe%20future%20time%20isn%E2%80%99t%20greater%20than%20the%26nbsp%3B%3CSTRONG%3EendDateTime%3C%2FSTRONG%3E%2C%20we%26nbsp%3Bleave%20this%20foreach%20and%20go%20to%20the%20next%20one.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EIf%26nbsp%3Bthe%20future%20time%20is%20greater%20than%20the%26nbsp%3B%3CSTRONG%3EendDateTime%3C%2FSTRONG%3E%2C%20we%20first%20convert%20the%26nbsp%3B%3CSTRONG%3EendDateTime%3C%2FSTRONG%3E%26nbsp%3Bto%20ticks.%20Ticks%26nbsp%3Bis%26nbsp%3Ba%26nbsp%3B100-nanosecond%26nbsp%3Binterval%20since%20January%201%2C%26nbsp%3B0001%26nbsp%3B12%3A00%20AM%20midnight%26nbsp%3Bin%20the%20Gregorian%20calendar%26nbsp%3Bup%26nbsp%3Bto%20the%26nbsp%3Bdate%26nbsp%3Bvalue%26nbsp%3Bparameter%26nbsp%3Bpassed%26nbsp%3Bin%26nbsp%3Bas%20a%20string%26nbsp%3Bformat.%20This%20makes%20it%20easy%20to%20compare%20two%20dates%2C%26nbsp%3Bwhich%26nbsp%3Bis%26nbsp%3Baccomplished%26nbsp%3Busing%20the%26nbsp%3Bexpression%26nbsp%3B%3CSTRONG%3Eticks(item()%3F%5B%E2%80%98endDateTime%E2%80%99%5D).%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ENext%2C%26nbsp%3Buse%20a%26nbsp%3B%3CSTRONG%3ECompose%3C%2FSTRONG%3E%26nbsp%3Bstep%20to%26nbsp%3Bconvert%20the%26nbsp%3B%3CSTRONG%3EstartDateTime%26nbsp%3B%3C%2FSTRONG%3Evariable%26nbsp%3Bof%20the%20current%20time%20to%20ticks%2C%26nbsp%3Bwhich%26nbsp%3Bequates%20to%26nbsp%3B%3CSTRONG%3Eticks(utcnow()).%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3ENext%2C%26nbsp%3Buse%20another%26nbsp%3B%3CSTRONG%3ECompose%3C%2FSTRONG%3E%26nbsp%3Bstep%20to%26nbsp%3Bcalculate%26nbsp%3Bthe%20difference%20between%20the%20two%26nbsp%3Bticks%26nbsp%3Bvalues%2C%26nbsp%3Band%26nbsp%3Bre-calculate%20it%26nbsp%3Busing%26nbsp%3Bthe%26nbsp%3Bfollowing%20expression%20to%20determine%20the%26nbsp%3Bnumber%20of%20days%20between%20the%20two%20dates.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%3CSTRONG%3Ediv(div(div(mul(sub(outputs('EndTimeTickValue')%2Coutputs('StartTimeTickValue'))%2C100)%2C1000000000)%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%3E%3CSTRONG%3E%2C%E2%80%AF3600)%2C%E2%80%AF24)%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%2232%22%3E%0A%3CLI%3E%3CSPAN%3E%3CSTRONG%3ESet%20the%20variable%26nbsp%3Bdaystilexpiration%26nbsp%3Bto%20the%20output%20of%20the%26nbsp%3Bprevious%26nbsp%3Bcalculation.%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3E%3CSTRONG%3ESet%20variable%20(String)%20%E2%80%93%20html%26nbsp%3B%E2%80%93%26nbsp%3Bcreates%20the%26nbsp%3BHTML%20table.%26nbsp%3B%20The%20content%20of%20this%20step%20is%20as%20follows%3A%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-html%22%3E%3CCODE%3E%3CTR%3E%3CTD%3E%3CA%20href%3D%22https%3A%2F%2Fms.portal.azure.com%2F%23blade%2FMicrosoft_AAD_RegisteredApps%2FApplicationMenuBlade%2FCredentials%2FappId%2F%40%7Bvariables('appId')%7D%2FisMSAApp%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%40%7Bvariables('appId')%7D%3C%2FA%3E%3C%2FTD%3E%3CTD%3E%40%7Bvariables('displayName')%7D%3C%2FTD%3E%3CTD%3E%40%7Bvariables('daystilexpiration')%7D%20%3C%2FTD%3E%3CTD%3ESecret%3C%2FTD%3E%3CTD%3E%40%7BformatDateTime(item()%3F%5B'endDateTime'%5D%2C'g')%7D%3C%2FTD%3E%3C%2FTR%3E%20%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2234%22%3E%0A%3CLI%3E%3CSPAN%3EAnother%26nbsp%3Bforeach%20will%20be%20used%20to%20loop%20through%20each%20of%20the%20certificates%20within%20the%20current%20Azure%20AD%20application%20being%20processed.%26nbsp%3B%20This%20is%20a%20duplication%20of%20steps%26nbsp%3B25%20through%2033%20except%20that%20it%20uses%26nbsp%3Bthe%26nbsp%3B%3CSTRONG%3EkeyCredentials%26nbsp%3B%3C%2FSTRONG%3Eas%20its%20input%2C%20compares%20the%20future%20date%20against%20the%20currently%20processed%26nbsp%3Bcertificate%26nbsp%3B%3CSTRONG%3EendDateTime%3C%2FSTRONG%3E%2C%20and%20the%26nbsp%3BSet%20variable%20%E2%80%93%20html%20step%20is%20as%20follows%3A%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-html%22%3E%3CCODE%3E%3CTR%3E%3CTD%3E%3CA%20href%3D%22https%3A%2F%2Fms.portal.azure.com%2F%23blade%2FMicrosoft_AAD_RegisteredApps%2FApplicationMenuBlade%2FCredentials%2FappId%2F%40%7Bvariables('appId')%7D%2FisMSAApp%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%40%7Bvariables('appId')%7D%3C%2FA%3E%3C%2FTD%3E%3CTD%3E%40%7Bvariables('displayName')%7D%3C%2FTD%3E%3CTD%3E%40%7Bvariables('daystilexpiration')%7D%20%3C%2FTD%3E%3CTD%3ECertificate%3C%2FTD%3E%3CTD%3E%40%7BformatDateTime(item()%3F%5B'endDateTime'%5D%2C%20'g')%7D%3C%2FTD%3E%3C%2FTR%3E%20%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22ForEach%20Key%20Credentials%20loop%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285473i98791524FA5E0CD4%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image7.png%22%20alt%3D%22ForEach%20Key%20Credentials%20loop%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EForEach%20Key%20Credentials%20loop%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3COL%20start%3D%2235%22%3E%0A%3CLI%3E%3CSPAN%3EImmediately%20following%26nbsp%3Bthe%20%3CSTRONG%3Eforeach%26nbsp%3B%E2%80%93%20apps%3C%2FSTRONG%3E%26nbsp%3Bloop%2C%26nbsp%3Bas%20a%26nbsp%3Bfinal%26nbsp%3Bstep%20in%20the%26nbsp%3B%3CSTRONG%3EDo%20while%3C%2FSTRONG%3E%26nbsp%3Bloop%26nbsp%3Bis%20a%26nbsp%3B%3CSTRONG%3ESet%26nbsp%3BNextLink%3C%2FSTRONG%3E%26nbsp%3Bvariable%26nbsp%3Bwhich%20will%20store%20the%20dynamic%26nbsp%3B%3CSTRONG%3E%40odata.nextlink%3C%2FSTRONG%3E%26nbsp%3BURL%20parsed%20from%20the%20JSON%20of%20the%26nbsp%3BAPI%26nbsp%3Bcall.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%3E%3CSPAN%3EAppend%20to%20variable%20(Array)%20%E2%80%93%20html%20%E2%80%93%26nbsp%3BImmediately%20following%20the%20%3CSTRONG%3EDo%20while%20%3C%2FSTRONG%3Eloop%20ends%2C%26nbsp%3Bwe%20close%20out%20the%20html%20body%20and%20table%26nbsp%3Bby%20appending%26nbsp%3B%3CSTRONG%3E%3C%2FSTRONG%3E%3CTBODY%3E%3CSTRONG%3E%3C%2FSTRONG%3E%3C%2FTBODY%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FOL%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%26nbsp%3Bto%20the%20variable%20named%26nbsp%3B%3CSTRONG%3Ehtml.%3C%2FSTRONG%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%0A%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Yes%20branch%22%20style%3D%22width%3A%20516px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285474i1358ECB6FEFC5EBA%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image8.png%22%20alt%3D%22Yes%20branch%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EYes%20branch%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3COL%20start%3D%2237%22%3E%0A%3CLI%3E%3CSPAN%3EFinally%2C%26nbsp%3Bsend%20the%20HTML%20in%20a%26nbsp%3B%3CSTRONG%3ESend%26nbsp%3Ban%26nbsp%3Be-mail%3C%2FSTRONG%3E%26nbsp%3Baction%2C%20using%20the%20variable%3CSTRONG%3E%26nbsp%3Bhtml%26nbsp%3B%3C%2FSTRONG%3Efor%20the%20body%20of%20the%20e-mail.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_8%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22End%20of%20the%20flow%20including%20send%20email%22%20style%3D%22width%3A%20625px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285475i74475EBE46491B32%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image9.PNG%22%20alt%3D%22End%20of%20the%20flow%20including%20send%20email%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EEnd%20of%20the%20flow%20including%20send%20email%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EAnd%26nbsp%3Bbelow%26nbsp%3Bis%20the%20resulting%20e-mail%26nbsp%3Breceived%20when%20the%20flow%20runs%20on%20its%20scheduled%20time.%26nbsp%3B%20Included%20is%26nbsp%3Ba%20hyperlink%26nbsp%3Bfor%20each%26nbsp%3Bapplication%26nbsp%3Bthat%20takes%20you%20directly%20to%26nbsp%3Bwhere%20you%20need%20to%20update%20the%26nbsp%3Bclient%20secret%20and%2For%26nbsp%3Bcertificates%20for%20each%20application%26nbsp%3Bwithin%20the%20Azure%20portal.%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Sample%20e-mail%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285485i9595DFCCBC540F15%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22image11.png%22%20alt%3D%22Sample%20e-mail%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ESample%20e-mail%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CDIV%20id%3D%22tinyMceEditorRuss%20Rimmerman_9%22%20class%3D%22mceNonEditable%20lia-copypaste-placeholder%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CP%3ENow%20-%20if%20you%20also%20want%20to%20notify%20the%20application%20owners%20as%20well%2C%20you%20can%20add%20an%20HTTP%20get%20to%20%3CA%20href%3D%22https%3A%2F%2Fgraph.microsoft.com%2Fv1.0%2Fapplications%2F%7Bid%7D%2Fowners%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgraph.microsoft.com%2Fv1.0%2Fapplications%2F%7Bid%7D%2Fowners%3C%2FA%3E%26nbsp%3Bendpoint%20to%20query%20the%20application%20owner%20property%20of%20each%20application.%26nbsp%3B%20The%20logic%20check%20after%20Get%20Secret%20Owner%20uses%20an%20expression%20length(body('Get_Secret_owner')%3F%5B'value'%5D)%20to%20see%20if%20it%20is%20equal%20to%20an%20expression%20int(0).%26nbsp%3B%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22GetSecretOwner.png%22%20style%3D%22width%3A%20627px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F313371i06BC3291D846F3C2%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22GetSecretOwner.png%22%20alt%3D%22GetSecretOwner.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIf%20it's%20True%2C%20there's%20no%20owner%20to%20notify%20so%20it%20just%20appends%20%22No%20Owner%22%20to%20the%20html%20variable.%26nbsp%3B%20If%20it's%20not%2C%20there's%20an%20owner%20defined%2C%20and%20it%20will%20use%20the%20UserPrincipalName%20to%20build%20a%20mailto%3A%20hyperlink%20for%20the%20html%20using%20the%20expression%20%3CSTRONG%3Ebody('Get_Secret_Owner')%3F%5B'value'%5D%5B0%5D%3F%5B'userPrincipalName'%5D%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22ownerhtml.JPG%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F313372i2CB8E2AFE48D63B6%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22ownerhtml.JPG%22%20alt%3D%22ownerhtml.JPG%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EThanks%20for%20reading!%26nbsp%3B%20And%20again%2C%26nbsp%3B%3CSPAN%20class%3D%22TextRun%20SCXW48764793%20BCX8%22%20data-contrast%3D%22auto%22%3E%3CSPAN%20class%3D%22NormalTextRun%20SCXW48764793%20BCX8%22%20data-ccp-charstyle%3D%22normaltextrun%22%20data-ccp-charstyle-defn%3D%22%7B%26quot%3BObjectId%26quot%3B%3A%26quot%3Bdbae0be5-20ad-4edb-bf86-f3270ecdfcb0%7C102%26quot%3B%2C%26quot%3BClassId%26quot%3B%3A1073872969%2C%26quot%3BProperties%26quot%3B%3A%5B134233614%2C%26quot%3Btrue%26quot%3B%2C201340122%2C%26quot%3B1%26quot%3B%2C469775450%2C%26quot%3Bnormaltextrun%26quot%3B%2C469778129%2C%26quot%3Bnormaltextrun%26quot%3B%2C469778324%2C%26quot%3BDefault%20Paragraph%20Font%26quot%3B%5D%7D%22%3EPLEASE%20take%20a%20moment%20to%20provide%20your%20feedback%20on%20this%20solution!%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CA%20class%3D%22Hyperlink%20SCXW48764793%20BCX8%22%20href%3D%22https%3A%2F%2Fforms.office.com%2Fr%2Fb7hHXLb7R1%22%20target%3D%22_blank%22%20rel%3D%22noreferrer%20noopener%22%3E%3CSPAN%20class%3D%22TextRun%20Underlined%20SCXW48764793%20BCX8%22%20data-contrast%3D%22none%22%3E%3CSPAN%20class%3D%22NormalTextRun%20SCXW48764793%20BCX8%22%20data-ccp-charstyle%3D%22Hyperlink%22%3Ehttps%3A%2F%2Fforms.office.com%2Fr%2Fb7hHXLb7R1%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FA%3E%3C%2FP%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-2406145%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%3EAre%20you%20challenged%20with%20keeping%20up%20with%20all%20your%20Azure%20Active%20Directory%26nbsp%3BEnterprise%20Application%20client%20secrets%20and%20certificates%20and%20their%20associated%20expiration%20dates%3F%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EI%20sometimes%20work%20with%20customers%20who%20have%20a%20thousand%20or%20more%20Azure%20AD%20applications%20to%20manage.%20Unfortunately%2C%20trying%20to%20keep%20up%20with%20all%20the%20client%20secrets%20and%20certificates%20expiring%20on%20each%20one%20of%20these%20apps%20can%20be%20a%20futile%20experience.%26nbsp%3B%20Today%2C%20I%20will%20show%20you%20an%20automated%20way%20to%20send%20e-mail%20notifications%20of%20upcoming%20AAD%20app%20secrets%20and%20certificates%20using%20Power%20Automate.%26nbsp%3B%20I%20also%20now%20have%20a%20solution%20using%20Logic%20Apps%20as%20well%20which%20I%20hope%20to%20blog%20soon.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Sample%20e-mail%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F285479i55DA00BBB6107DFB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22image11.png%22%20alt%3D%22Sample%20e-mail%22%20%2F%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ESample%20e-mail%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2406145%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3ERussRimmerman%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Co-Authors
Version history
Last update:
‎May 05 2022 07:04 AM
Updated by:
We support Ukraine and condemn war. Push Russian government to act against war. Be brave, vocal and show your support to Ukraine. Follow the latest news HERE