From e29a6739968ceb2c8bb6734558fc9a58e79e84e1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:53:50 +0000 Subject: [PATCH 1/2] Initial plan From f5c6ed0414fcf02c551f83ab0d690474e9890640 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:00:27 +0000 Subject: [PATCH 2/2] Add comprehensive documentation for inactivity notification flows Co-authored-by: AmarSaiRam <220305901+AmarSaiRam@users.noreply.github.com> --- ...ISSUE_RESPONSE_INACTIVITY_NOTIFICATIONS.md | 275 +++++++++++ .../InactivityNotificationFlowsGuide.md | 435 ++++++++++++++++++ Documentation/README.md | 14 + docs/issue-response-templates.md | 14 +- 4 files changed, 737 insertions(+), 1 deletion(-) create mode 100644 Documentation/ISSUE_RESPONSE_INACTIVITY_NOTIFICATIONS.md create mode 100644 Documentation/InactivityNotificationFlowsGuide.md diff --git a/Documentation/ISSUE_RESPONSE_INACTIVITY_NOTIFICATIONS.md b/Documentation/ISSUE_RESPONSE_INACTIVITY_NOTIFICATIONS.md new file mode 100644 index 000000000..f0f41a469 --- /dev/null +++ b/Documentation/ISSUE_RESPONSE_INACTIVITY_NOTIFICATIONS.md @@ -0,0 +1,275 @@ +# GitHub Issue Response - Inactivity Notification Emails + +This template can be used when responding to issues related to repeated inactivity notification emails, manager notifications, or questions about the Archive Approval lifecycle. + +--- + +## Template: Repeated Inactivity Emails After Approval + +**Use when:** Users report receiving repeated inactivity emails even after clicking "Keep this App/Flow" or providing justification + +**Response:** + +Thank you for your question about the inactivity notification flows in the Governance Solution! + +### Quick Answer + +The behavior you're experiencing is typically caused by one of these issues: + +1. **Timing mismatch**: The weekly "Start Approval" flow runs before the daily "Check Approval" flow processes your response +2. **Check Approval flow not running**: The flow that processes approval responses is turned off or failing +3. **Connection issues**: The Check Approval flow's connections need to be refreshed + +### How It's Supposed to Work + +Here's the expected lifecycle: + +**Week 1: Approval Created** +- Start Approval flow identifies your inactive app/flow +- Sends you an approval request email +- Creates a record in the Archive Approval table + +**Your Response: "Keep this App"** +- You respond "Approve" with business justification +- Check Approval flow (runs **daily**) picks up your response within 24 hours +- Updates the Archive Approval record with your response +- Clears the tracking field (`admin_apparchiverequestignoredsince`) + +**Week 2 and Beyond: No More Emails** +- Start Approval flow runs again +- Checks for existing approval responses +- Finds your "Approve" response +- **Skips your app** - no new email sent + +### Troubleshooting Steps + +Please try the following: + +#### Step 1: Verify Check Approval Flow is Running + +1. Go to Power Automate in your CoE environment +2. Search for: `Admin | Inactivity notifications v2 - Check Approval` +3. Check if the flow is **turned on** +4. Review the **run history** - does it run daily? Are there any failures? +5. If it's off, turn it on. If there are failures, check the error details. + +#### Step 2: Check Your Approval Response + +1. Go to Dataverse in your CoE environment +2. Open the **Archive Approval** table (`admin_archiveapprovals`) +3. Find the record for your app (search by app name or your email) +4. Check the `admin_approvalresponse` field: + - Should be "Approve" if you clicked "Keep" + - Should be "Reject" if you clicked "Delete" + - If it's empty (null), your response wasn't processed + +#### Step 3: Verify Timing + +If you responded late in the week (e.g., Sunday) and received another email on Monday: +- This is a timing issue +- The Start Approval flow runs **weekly** (default: Monday) +- The Check Approval flow runs **daily** but may not have processed your weekend response yet + +**Recommendation**: Adjust the Start Approval flow schedule to run mid-week (Wednesday or Thursday) to allow more time for response processing. + +### Complete Documentation + +I've created a comprehensive guide that covers: +- The complete lifecycle of inactivity notifications +- Detailed explanations of all five flows involved +- Common scenarios and troubleshooting +- Best practices and FAQ + +📖 **[Inactivity Notification Flows - Complete Guide](./InactivityNotificationFlowsGuide.md)** + +### Specific Answers to Your Questions + +> 1. How does the complete cycle work for the 1st instance and when does the 2nd cycle trigger? + +**Answer**: +- **First Instance**: Approval created → Email sent → User responds → Response processed daily → Archive Approval updated +- **Second Cycle**: Only triggers if the app remains inactive AND there's no existing "Approve" or "Reject" response +- **If Approved**: No second cycle - the approval record stays indefinitely to prevent duplicate emails +- **If Rejected**: App deleted after 21 days, then a new cycle could start if somehow the app reappears +- **If Ignored**: Approval remains pending; manager notifications sent weekly until user responds + +> 2. What happens when the flow runs for 2nd and 3rd time after a user clicked "Keep"? + +**Answer**: +When the Start Approval flow runs again (2nd, 3rd, subsequent times), it: +1. Queries all inactive apps +2. Checks for existing Archive Approval records with "Approve" status +3. **Skips** apps that have been approved +4. Does NOT send new emails to users who already approved + +If users ARE receiving new emails, this indicates the Check Approval flow didn't process the response properly (see troubleshooting above). + +> 3. Why do manager notification emails trigger every week? + +**Answer**: +The "Email Managers - Ignored Inactivity notifications" flow is **designed** to send weekly emails to managers when: +- An employee has a pending (ignored) approval request +- The `admin_apparchiverequestignoredsince` field is set on the app record + +**To stop manager emails**: The employee must respond to the approval (either Approve or Reject). Once they respond, the Check Approval flow clears the `admin_apparchiverequestignoredsince` field, and manager emails stop. + +**If manager emails continue after employee response**: Check that the `admin_apparchiverequestignoredsince` field was properly cleared. See the troubleshooting guide. + +> 4. Is there documentation or best practices? + +**Answer**: +Yes! Please review the **[Inactivity Notification Flows Guide](./InactivityNotificationFlowsGuide.md)** which covers: +- How to configure the flows +- Best practices for rollout +- Testing in non-production environments +- Communication strategies +- Flow schedules and recommendations +- When to excuse apps from archival + +### Next Steps + +1. ✅ Review the **[complete guide](./InactivityNotificationFlowsGuide.md)** +2. ✅ Check if the Check Approval flow is running daily +3. ✅ Verify approval responses are being recorded in the Archive Approval table +4. ✅ Consider adjusting the Start Approval flow schedule to avoid timing conflicts +5. ✅ Set `admin_ProductionEnvironment = false` to test in dev/test environments + +### If Issues Persist + +If you've tried the above and are still experiencing issues, please provide: +- Screenshots of the Check Approval flow run history +- Screenshot of an Archive Approval record showing the response +- Screenshot of the app record showing the `admin_apparchiverequestignoredsince` field value +- Timeline: When did the user respond? When did they receive the next email? + +This will help us diagnose the specific issue. + +--- + +## Template: Manager Notification Questions + +**Use when:** Users ask why managers are receiving weekly emails + +**Response:** + +Thank you for asking about manager notifications in the inactivity flows! + +### What's Happening + +The **"Admin | Email Managers - Ignored Inactivity notifications"** flow is designed to notify managers when their direct reports **ignore** (don't respond to) inactivity approval requests. + +**It runs weekly** and sends emails to managers if: +- An employee has a pending approval request +- The employee hasn't responded within the configured time period +- The `admin_apparchiverequestignoredsince` field is set on the app/flow record + +### This is By Design ✅ + +Manager notifications are **intentional** and serve an important governance purpose: +- Encourages accountability +- Helps managers understand what their team is building +- Prompts action on abandoned resources + +### How to Stop Manager Emails + +Manager emails will stop automatically when: +1. **Employee responds** to the approval request (Approve or Reject) +2. Check Approval flow processes the response +3. The `admin_apparchiverequestignoredsince` field is cleared + +### If Manager Emails Continue After Employee Response + +This indicates a problem with the Check Approval flow. See the **[Troubleshooting Guide](./InactivityNotificationFlowsGuide.md#troubleshooting-repeated-emails)** for detailed steps. + +### Best Practices + +1. **Communicate the process** to both employees and managers before enabling +2. **Set clear expectations** about response timeframes +3. **Provide clear instructions** in the approval email on how to respond +4. **Monitor** the Archive Approval table for old pending requests +5. **Follow up** with employees who don't respond within 2-3 weeks + +### Additional Resources + +- **[Complete Inactivity Flows Guide](./InactivityNotificationFlowsGuide.md)** +- **[Microsoft Docs - Governance Components](https://learn.microsoft.com/en-us/power-platform/guidance/coe/governance-components)** + +--- + +## Template: How Long Does an Approval Last? + +**Use when:** Users ask about approval expiration or cleanup + +**Response:** + +Great question about the Archive Approval lifecycle! + +### Approval Duration by Response Type + +**"Approve" (Keep this App/Flow)** +- Duration: **Indefinite** +- The Archive Approval record stays in the table permanently +- Prevents duplicate approval requests +- The app/flow is excused from future inactivity notifications (as long as the approval exists) + +**"Reject" (Delete this App/Flow)** +- Duration: **21 days** (grace period) +- After 21 days, the Clean Up flow deletes the app/flow +- The Archive Approval record is also deleted +- Admin receives notification when something is marked for deletion + +**No Response (Ignored)** +- Duration: **Indefinite** (until user responds) +- Approval remains in "Pending" status +- Manager receives weekly notification emails +- Can be responded to at any time + +### What Happens to Old Approvals? + +- **Approved records**: Stay indefinitely (by design) +- **Rejected records**: Deleted after app/flow deletion (21 days) +- **Pending records**: Remain until responded to or manually cleaned up + +### Can Approvals Be Manually Removed? + +Yes, administrators can manually delete Archive Approval records from Dataverse. However: +- ⚠️ Deleting an "Approve" record may trigger new approval emails if the app is still inactive +- ⚠️ Only delete if you understand the implications + +### See Also + +- **[Archive Approval Table Lifecycle](./InactivityNotificationFlowsGuide.md#archive-approval-table-lifecycle)** +- **[Common Scenarios](./InactivityNotificationFlowsGuide.md#common-scenarios-explained)** + +--- + +## Notes for Responders + +### Key Points to Remember + +1. **Be clear about the weekly/daily schedule**: Start Approval (weekly) vs. Check Approval (daily) +2. **Emphasize timing**: Responses may take up to 24 hours to process +3. **Manager emails are intentional**: They serve a governance purpose +4. **Link to the complete guide**: Don't try to explain everything in the issue - point to the documentation +5. **Ask for specifics**: If troubleshooting, get flow run history, table records, timelines + +### Common Follow-up Questions + +- "How do I turn off manager notifications?" → Explain the governance purpose, but yes, you can turn off the flow +- "Can I change the 6-month threshold?" → Yes, via `InactivityNotifications-PastTime-Interval` environment variable +- "Can I exclude certain apps?" → Yes, set `admin_appexcusedfromarchival = true` +- "Can I test this without sending real emails?" → Yes, set `admin_ProductionEnvironment = false` + +### When to Escalate + +Create a separate bug issue if: +- Check Approval flow is running successfully but responses aren't being recorded +- `admin_apparchiverequestignoredsince` isn't being cleared despite valid responses +- Multiple duplicate Archive Approval records are being created for the same app +- Flow is failing with connector or permission errors + +--- + +**Template Version**: 1.0 +**Last Updated**: January 2026 +**Maintained by**: CoE Starter Kit Community diff --git a/Documentation/InactivityNotificationFlowsGuide.md b/Documentation/InactivityNotificationFlowsGuide.md new file mode 100644 index 000000000..7df77134c --- /dev/null +++ b/Documentation/InactivityNotificationFlowsGuide.md @@ -0,0 +1,435 @@ +# CoE Starter Kit - Inactivity Notification Flows Guide + +## Overview + +The **Governance Solution** in the CoE Starter Kit includes inactivity notification flows that help identify and manage unused Power Apps and Power Automate flows. This guide explains how these flows work, their lifecycle, and how to troubleshoot common issues. + +## Table of Contents + +1. [How Inactivity Notifications Work](#how-inactivity-notifications-work) +2. [The Flows Involved](#the-flows-involved) +3. [Archive Approval Table Lifecycle](#archive-approval-table-lifecycle) +4. [Common Scenarios Explained](#common-scenarios-explained) +5. [Troubleshooting Repeated Emails](#troubleshooting-repeated-emails) +6. [Best Practices](#best-practices) +7. [Configuration](#configuration) + +--- + +## How Inactivity Notifications Work + +The inactivity notification process helps administrators identify apps and flows that haven't been used in a specified period (default: 6 months) and gives makers an opportunity to either keep or delete them. + +### High-Level Process + +1. **Weekly Scan**: The system identifies all apps/flows not used in the past 6 months +2. **Approval Request**: Sends approval requests to app/flow owners asking them to confirm if they want to keep or delete the resource +3. **Daily Check**: Processes approval responses and updates records accordingly +4. **Manager Notification**: Notifies managers if their direct reports have ignored approval requests +5. **Cleanup**: After a specified period, deletes resources that were marked for deletion + +--- + +## The Flows Involved + +### 1. Admin | Inactivity notifications v2 - Start Approval for Apps + +**Trigger**: Weekly (default: Monday) + +**Purpose**: Identifies inactive apps and creates approval requests + +**Key Actions**: +- Queries all apps not launched or modified in the past 6 months (configurable) +- Checks if an approval already exists (approved, rejected, or pending) +- Creates new approval requests only if: + - No "Approve" response exists + - No "Reject" response exists + - Creates a record in the Archive Approval table + - Sets `admin_apparchiverequestignoredsince` if the user hasn't responded + +**Important**: This flow does NOT send duplicate approvals if a valid approval response already exists. + +### 2. Admin | Inactivity notifications v2 - Start Approval for Flows + +**Trigger**: Weekly (default: Monday) + +**Purpose**: Same as above but for Power Automate flows + +**Key Actions**: Similar to the Apps version but targets flows instead + +### 3. Admin | Inactivity notifications v2 - Check Approval + +**Trigger**: Daily + +**Purpose**: Processes approval responses and updates records + +**Key Actions**: +- Checks for approval responses from the last 10 days +- Updates Archive Approval records with the response (Approve/Reject) +- **Clears** `admin_apparchiverequestignoredsince` when a response is received +- Sends notifications to admins when resources are rejected + +**Critical**: This flow runs daily to ensure responses are processed promptly. + +### 4. Admin | Email Managers - Ignored Inactivity notifications - Apps + +**Trigger**: Weekly + +**Purpose**: Notifies managers when their direct reports ignore approval requests + +**Key Actions**: +- Queries apps where `admin_apparchiverequestignoredsince` is older than the configured threshold +- Groups by manager +- Sends summary emails to managers + +**Note**: This will continue to send emails weekly until the employee responds to the approval. + +### 5. Admin | Inactivity notifications v2 - Clean Up and Delete + +**Trigger**: Weekly + +**Purpose**: Deletes apps/flows that were marked for deletion after a grace period + +**Key Actions**: +- Finds approval records with "Reject" responses older than 21 days (configurable) +- Deletes the apps/flows +- Cleans up Archive Approval records + +--- + +## Archive Approval Table Lifecycle + +The `admin_archiveapprovals` table is central to the inactivity notification process. Here's how records flow through this table: + +### Lifecycle Stages + +#### Stage 1: Approval Created (Week 1) +``` +Status: Pending (admin_approvalresponse = null) +Action: Email sent to app/flow owner +App Record: admin_apparchiverequestignoredsince = [creation date] +``` + +#### Stage 2A: User Approves (Keeps the App/Flow) +``` +Status: Approved (admin_approvalresponse = 'Approve') +Action: Check Approval flow processes response +App Record: admin_apparchiverequestignoredsince = null (cleared) +Result: No further emails sent; app/flow is kept +Cleanup: Other pending approvals for this app/flow are deleted +``` + +The approved record stays in the Archive Approval table indefinitely. The Start Approval flow checks for existing approved records and skips creating new approvals. + +**Duration**: Indefinite (until app/flow becomes active again or is manually deleted) + +#### Stage 2B: User Rejects (Deletes the App/Flow) +``` +Status: Rejected (admin_approvalresponse = 'Reject') +Action: Check Approval flow processes response +App Record: admin_apparchiverequestignoredsince = null (cleared) +Result: 21-day grace period begins +Admin Notified: Email sent to admin about rejection +Cleanup: Other pending approvals for this app/flow are deleted +``` + +After 21 days, the Clean Up flow deletes the app/flow and the Archive Approval record. + +**Duration**: 21 days (then deleted) + +#### Stage 2C: User Ignores the Request +``` +Status: Pending (admin_approvalresponse = null) +Action: Nothing (approval remains pending) +App Record: admin_apparchiverequestignoredsince = [original creation date] +Result: Manager notification emails sent weekly +``` + +The approval remains in pending status indefinitely until the user responds. + +**Duration**: Indefinite (until user responds) + +--- + +## Common Scenarios Explained + +### Scenario 1: First Run - All Inactive Apps Get Emails + +**What Happens**: +- Start Approval flow runs for the first time +- Identifies all apps/flows not used in 6 months +- Sends approval requests to all owners +- Creates records in Archive Approval table + +**Expected**: This is normal for the first run. Everyone with inactive apps will receive an email. + +### Scenario 2: User Clicks "Keep This App" with Justification + +**What Should Happen**: +1. User responds "Approve" with business justification +2. Check Approval flow (runs daily) picks up the response +3. Archive Approval record updated with response and comment +4. `admin_apparchiverequestignoredsince` is cleared on the app record +5. **No further emails sent** for this app (approval record exists with "Approve" status) + +**Next Week**: Start Approval flow queries inactive apps, finds the existing "Approve" record, and skips this app. + +**If User Receives Another Email**: See [Troubleshooting](#troubleshooting-repeated-emails) section. + +### Scenario 3: User Ignores the Approval Request + +**What Happens**: +1. Approval remains in pending status +2. `admin_apparchiverequestignoredsince` remains set +3. Manager notification flow detects ignored request +4. **Manager receives weekly emails** until employee responds + +**To Stop Manager Emails**: Employee must respond to the approval request (either Approve or Reject). + +### Scenario 4: App Becomes Active Again + +**What Happens**: +- If an app that was previously approved/rejected becomes inactive again in the future, the cycle can restart +- The flow logic checks for existing approvals, but if the app's last modified/launched date is still old, it may create a new cycle + +**Expected Behavior**: This is by design. If an app remains inactive despite being "kept," it will eventually trigger new notifications. + +--- + +## Troubleshooting Repeated Emails + +If users are receiving repeated inactivity emails even after approving/rejecting, check the following: + +### Issue 1: Check Approval Flow Not Running + +**Symptom**: Users respond to approvals, but continue receiving emails + +**Root Cause**: The daily Check Approval flow is turned off or failing + +**Solution**: +1. Go to Power Automate in your CoE environment +2. Find flow: `Admin | Inactivity notifications v2 - Check Approval` +3. Check if it's turned on +4. Review run history for failures +5. Turn it on if disabled; fix any errors if failing + +### Issue 2: Timing Mismatch Between Flows + +**Symptom**: User responds on Sunday, but receives another email on Monday + +**Root Cause**: Start Approval flow runs before Check Approval flow processes the response + +**Solution**: +- **Immediate**: Manually run the Check Approval flow before the Start Approval flow runs +- **Long-term**: Adjust the schedule of the Start Approval flow to run later in the week (e.g., Wednesday or Thursday) to give Check Approval more time to process weekend responses + +### Issue 3: Approval Responses Not Syncing + +**Symptom**: Responses are recorded in the Approvals system but not in Archive Approval table + +**Root Cause**: The Check Approval flow's connection to Dataverse or Approvals connector is broken + +**Solution**: +1. Check connection references in the Check Approval flow +2. Ensure the Dataverse and Approvals connectors are authenticated +3. Re-test the connections +4. Turn the flow off and back on to refresh connections + +### Issue 4: Archive Approval Records Not Being Cleared + +**Symptom**: Old approved/rejected records remain in the Archive Approval table + +**Root Cause**: This is expected behavior for "Approve" responses. "Reject" responses are cleared after the app is deleted. + +**Solution**: This is by design. Approved records stay to prevent duplicate approvals. No action needed. + +### Issue 5: Manager Emails Continue After User Response + +**Symptom**: Manager still receives weekly emails even though employee responded + +**Root Cause**: The `admin_apparchiverequestignoredsince` field wasn't cleared properly + +**Solution**: +1. Check the Archive Approval record - does it have a response? +2. Check the app record - is `admin_apparchiverequestignoredsince` null? +3. If not null but response exists, manually clear the field or re-run Check Approval flow +4. Check the "Clear_Ignored_Since" action in the Check Approval flow for errors + +### Issue 6: Multiple Approval Requests for Same App + +**Symptom**: User receives multiple approval emails for the same app in the same week + +**Root Cause**: +- Multiple Archive Approval records were created (shouldn't happen) +- Flow ran multiple times due to retries + +**Solution**: +1. Check Archive Approval table for duplicate records +2. Delete duplicate records manually +3. Review Start Approval flow run history for multiple executions +4. Check if someone is manually triggering the flow + +--- + +## Best Practices + +### 1. **Communicate Before Enabling** + +Before enabling inactivity flows, communicate with your organization: +- Explain the purpose of inactivity notifications +- Provide a timeline (when emails will start) +- Share guidance on how to respond +- Clarify what happens if they approve vs. reject + +### 2. **Start with a Test Group** + +- Enable flows for a small group first +- Monitor for issues +- Gather feedback +- Adjust configuration if needed +- Roll out to the entire organization + +### 3. **Configure the Inactivity Threshold Appropriately** + +The default is 6 months. Consider: +- **3 months**: More aggressive cleanup, more frequent notifications +- **6 months**: Balanced approach (recommended) +- **12 months**: Less aggressive, fewer notifications + +Set via environment variable: `InactivityNotifications-PastTime-Interval` + +### 4. **Monitor Flow Run History** + +Regularly check: +- Start Approval flows: Ensure they run weekly without errors +- Check Approval flow: Ensure it runs daily and processes responses +- Manager notification flow: Review email volume +- Clean Up flow: Verify apps/flows are being deleted as expected + +### 5. **Review Archive Approval Data** + +Periodically review the Archive Approval table: +- How many pending approvals exist? +- How many approved vs. rejected? +- Are there old pending approvals (> 30 days)? +- Follow up with makers who haven't responded + +### 6. **Adjust the Cleanup Grace Period** + +The default grace period before deletion is 21 days. You can adjust this in the Clean Up flow logic if needed. + +### 7. **Excuse Critical Apps from Archival** + +For apps that should never be deleted (even if inactive): +1. Set `admin_appexcusedfromarchival = true` on the app record +2. Or set `admin_excusefromarchivalflows = true` on the environment record + +### 8. **Set Up the Clean Up App** + +Deploy the **App and Flow Archive and Clean Up View** app: +- Provides a UI for makers to view and respond to approvals +- Easier than navigating email links +- Shows all pending approvals in one place + +Configure via environment variable: `CleanUpAppURL` + +--- + +## Configuration + +### Environment Variables + +| Variable | Default | Description | +|----------|---------|-------------| +| `InactivityNotifications-PastTime-Interval` | 6 | How many time units to look back | +| `InactivityNotifications-PastTime-Unit` | Month | Time unit (Day, Week, Month, Year) | +| `admin_AdminMail` | (required) | Admin email for notifications | +| `admin_ProductionEnvironment` | true | If false, sends emails to admin instead of makers (for testing) | + +### Flow Schedules + +| Flow | Default Schedule | Recommendation | +|------|-----------------|----------------| +| Start Approval for Apps | Weekly (Monday) | Keep weekly; consider mid-week (Wednesday) | +| Start Approval for Flows | Weekly (Monday) | Keep weekly; consider mid-week (Wednesday) | +| Check Approval | Daily | Keep daily for timely processing | +| Email Managers | Weekly | Keep weekly | +| Clean Up and Delete | Weekly | Keep weekly | + +### Testing in Non-Production + +To test without sending emails to actual makers: +1. Set `admin_ProductionEnvironment = false` +2. All approval emails will go to `admin_AdminMail` instead +3. Test the full lifecycle +4. Set back to `true` before production rollout + +--- + +## Frequently Asked Questions + +### Q1: Why do manager emails keep coming even after the employee responded? + +**A**: There may be a timing issue or the `admin_apparchiverequestignoredsince` field wasn't cleared. Check the Archive Approval record and ensure the Check Approval flow is running daily. + +### Q2: How long does an "Approve" response last? + +**A**: Indefinitely. Once approved, the app won't receive new inactivity notifications as long as the Archive Approval record with "Approve" status exists. + +### Q3: Can users change their response from "Keep" to "Delete"? + +**A**: Not directly through the approval. They would need to contact the admin to update the Archive Approval record manually, or wait for the existing approval to be deleted and a new cycle to start. + +### Q4: What happens if an app owner leaves the organization? + +**A**: +- The approval email will fail to deliver +- The app may be flagged as orphaned +- Use the orphaned resources flows to reassign ownership +- The new owner will receive the approval request + +### Q5: Can I customize the email templates? + +**A**: Yes! The flows use customizable email templates from the `admin_customizedemails` table. You can modify these templates or create localized versions. + +### Q6: How do I stop the inactivity process entirely? + +**A**: Turn off all five flows mentioned in this guide. However, this is not recommended as it defeats the purpose of governance. + +### Q7: Why did I receive an email for an app I use regularly? + +**A**: The inactivity check is based on: +- **Last Modified Date**: When the app definition was last changed +- **Last Launched Date**: When the app was last opened + +If you use the app but haven't modified it, it may still trigger if "Last Launched Date" isn't being tracked properly. This can happen if analytics aren't enabled or if the app is embedded. + +**Solution**: Respond with "Keep" and provide justification. The app will be excused from future notifications. + +--- + +## Additional Resources + +- **Official Documentation**: [Microsoft Power Platform CoE Starter Kit - Governance Components](https://learn.microsoft.com/en-us/power-platform/guidance/coe/governance-components) +- **GitHub Issues**: [Report issues or ask questions](https://github.com/microsoft/coe-starter-kit/issues) +- **Community Forum**: [Power Apps Governance and Administration](https://powerusers.microsoft.com/t5/Power-Apps-Governance-and/bd-p/Admin_PowerApps) + +--- + +## Summary + +The inactivity notification flows provide a powerful governance mechanism, but they require proper configuration and monitoring. Key takeaways: + +1. **The cycle works as designed** when all flows are enabled and running on schedule +2. **Users should respond promptly** to avoid manager notifications +3. **Approved responses are stored indefinitely** to prevent duplicate emails +4. **Rejected responses trigger a 21-day grace period** before deletion +5. **Timing matters**: Ensure Check Approval runs before Start Approval in the weekly cycle +6. **Communication is critical**: Users need to understand the process + +By following the best practices and troubleshooting guidance in this document, you can successfully implement and manage the inactivity notification process in your organization. + +--- + +*Last updated: January 2026* +*CoE Starter Kit Version: January 2026* diff --git a/Documentation/README.md b/Documentation/README.md index 7bc462c6e..742031c40 100644 --- a/Documentation/README.md +++ b/Documentation/README.md @@ -4,6 +4,20 @@ This directory contains additional documentation, guidance, and best practices f ## Available Documentation +### [Inactivity Notification Flows - Complete Guide](./InactivityNotificationFlowsGuide.md) + +Comprehensive guide for understanding and managing the Governance Solution's inactivity notification flows. This document covers: + +- How inactivity notifications work (weekly scans, approval requests, daily checks) +- Complete lifecycle of the Archive Approval table +- Detailed explanation of all five flows involved in the process +- Common scenarios (first run, user approves/rejects, ignored requests, manager notifications) +- Troubleshooting repeated emails and timing issues +- Best practices for configuration and rollout +- FAQ addressing common questions + +**Relevant for**: CoE administrators implementing or troubleshooting the Governance Solution, particularly when users report receiving repeated inactivity emails after responding to approval requests + ### [Troubleshooting: Unexpected Azure DevOps Email Notifications](../docs/TROUBLESHOOTING-AZURE-DEVOPS-EMAILS.md) Complete troubleshooting guide for unexpected email notifications about "Sync Issues to Azure DevOps" after upgrading Core Components. This document covers: diff --git a/docs/issue-response-templates.md b/docs/issue-response-templates.md index f2327394d..a2a3b3ec1 100644 --- a/docs/issue-response-templates.md +++ b/docs/issue-response-templates.md @@ -1,4 +1,16 @@ -# GitHub Issue Response Template - Sovereign Cloud / GCC High Questions +# GitHub Issue Response Templates + +This document contains standardized templates for responding to common issues and questions about the CoE Starter Kit. + +## Available Templates + +1. **[Inactivity Notification Emails](../Documentation/ISSUE_RESPONSE_INACTIVITY_NOTIFICATIONS.md)** - For questions about repeated emails, manager notifications, and Archive Approval lifecycle +2. **Sovereign Cloud / GCC High Questions** - For deployment and upgrade questions in sovereign clouds +3. **Azure DevOps Email Notifications** - For unexpected notifications after Core Components upgrades + +--- + +# Sovereign Cloud / GCC High Questions This template can be used when responding to issues related to sovereign cloud deployments, GCC High upgrades, or connector availability.