Skip to main content

Build a Career Development Plan App in Power Apps — Part 10: Test Every Role, Joiners and Leavers

· 21 min read
Jagdish Kumawat
Founder @ Dewiride

The app is built. This part tests it the way the brief describes it, as each person in the demo sales team: a manager who's also an employee, a response that's declined and sent again, a promotion, someone who leaves and someone who joins. There are no new screens, only real accounts, real data and three findings.

This is Part 10 of a 14-part series.

  1. Part 1: Plan the App and Set Up the Demo Organization
  2. Part 2: Create the SharePoint Site and Lists
  3. Part 3: Create the Solution, Environment Variables and Canvas App
  4. Part 4: Build the Home Screen
  5. Part 5: Build the My Plan Screen
  6. Part 6: Build the Response Screen
  7. Part 7: Share the App and Build the My Team Screens
  8. Part 8: Build the Review Screen for Manager Approvals
  9. Part 9: Let Managers Manage Competencies
  10. Part 10: Test Every Role, Joiners and Leavers (you are here)
  11. Part 11: Build a Setup Flow That Creates the SharePoint Lists (coming soon)
  12. Part 12: Run the Solution Checker and Export the Solutions (coming soon)
  13. Part 13: Install the App in a New Environment (coming soon)
  14. Part 14: Recap, Production Checklist and Next Steps (coming soon)

Every test runs in the published app, with each person in their own browser window, and every change to people happens in the Microsoft 365 and Microsoft Entra admin centers, the way IT would make it. Three things came up on the way: an open app keeps the profile it read when it started, the Microsoft 365 admin center hides Sign out of all sessions once a user is blocked, and Microsoft Entra can show an old job title after saving a new one. Each is shown where it happened.

What You'll Test​

TestWhoBrief requirement
A manager's Home shows both plan and teamDaniel BrooksManagers are employees too
An employee's Home shows only their planAisha KhanEmployees see only their own competencies
A manager's own response goes to his managerDaniel and Olivia BennettResponses are sent to the manager, who approves or declines
A manager sees only direct reportsOliviaEach manager sees only their own direct reports
A decline with a comment, then a resendAisha and DanielManagers approve or decline
A promotion switches the planAishaCompetencies are based on the position
A leaver drops off the teamLeo MartinA leaver's role is taken by someone new
A joiner gets the plan with no setupMaya PatelA new joiner appears in the manager's team

Prerequisites​

Step 1: Open the App as Daniel and Aisha​

Open the app's link in Daniel's window and in Aisha's. Neither had signed in before, so each signed in with their temporary password from Part 1 and went through Microsoft's first sign-in (How to Add a User and Assign a License explains it). Then Power Apps showed the same permissions dialog Olivia saw in Part 7, and each of them selected Allow.

Daniel, the Sales Manager, gets both buttons, because Aisha and Leo report to him:

The app's Home screen for Daniel: Welcome, Daniel, Job title: Sales Manager, Manager: Olivia Bennett, with the My plan and My team buttons

Aisha, a Sales Engineer, gets only My plan. Nobody reports to her, so IsManager from Part 4 is false and My team stays hidden:

The app's Home screen for Aisha: Welcome, Aisha, Job title: Sales Engineer, Manager: Daniel Brooks, with only the My plan button

Step 2: Send a Response as Daniel​

Daniel is an employee too. His My plan shows the three Sales Manager competencies from Part 2:

Daniel's My plan screen for the job title Sales Manager, with Coaching (Intermediate), Leadership (Intermediate) and Pipeline management (Advanced), all Not started

Open Coaching, write a response and select Send to manager:

Daniel's response for Coaching at the Intermediate level: a 314-character paragraph about fortnightly one-to-ones and a call-review checklist, with the Send to manager button

The app confirms it, and Coaching changes to Waiting for review:

Daniel's My plan screen with the banner Your response was sent to your manager. and Coaching now Waiting for review

Step 3: Review It as Olivia​

Daniel's manager is Olivia, so his response waits on her My team. Her team is only Daniel. Aisha and Leo report to Daniel, not to her, so they don't appear: each manager sees only their own direct reports.

Olivia's My team screen listing only Daniel Brooks, Sales Manager, with a Waiting for review badge

Open Daniel Brooks, select Review on Coaching, and approve it. A comment is optional when approving:

The Review response screen showing Daniel's Coaching response, a comment from Olivia asking him to share the checklist with the other sales managers, and the Approve and Decline buttons

The app confirms You approved Daniel Brooks's response., nothing is waiting any more, and his plan shows Coaching as Approved:

Daniel's Team Member screen as Olivia sees it, with the banner You approved Daniel Brooks's response., Nothing is waiting for your review, and Coaching Approved in the plan for Sales Manager

Back in Daniel's window, his Coaching response shows the decision and Olivia's comment, and it can't be changed any more:

Daniel's response screen for Coaching: Approved, Your manager approved this on Wednesday, October 28, 2026. Approved responses can't be changed., the comment from his manager, and his response

Step 4: Send a Response as Aisha​

Aisha's My plan has the two Sales Engineer competencies:

Aisha's My plan screen for the job title Sales Engineer, with Customer skill (Intermediate) and Leadership (Beginner), both Not started

Her first response to Customer skill is short on purpose, so her manager has a reason to decline it:

Aisha's response for Customer skill: I answer customer questions quickly and always follow up after a demo. Customers tell me they like working with me., 115 of 4,000 characters

Select Send to manager. Customer skill changes to Waiting for review.

Step 5: Decline It as Daniel​

Now Daniel is the manager. His My team lists his two Sales Engineers, with Aisha waiting:

Daniel's My team screen with Aisha Khan, Sales Engineer, Waiting for review, and Leo Martin, Sales Engineer

Open Aisha Khan, select Review on Customer skill, write what's missing and select Decline. The comment is required to decline:

The Review response screen showing Aisha's short Customer skill response and Daniel's comment asking for one real customer example, with Approve and Decline

The app confirms You declined Aisha Khan's response and sent your comment.

Step 6: Update and Send It Again as Aisha​

Aisha selects Refresh on My plan, and Customer skill is Declined. Opening it shows when, and why, and the button now says Send again:

Aisha's response screen for Customer skill: Declined, Your manager declined this on Wednesday, October 28, 2026. Update your response and send it again., the comment from her manager, her original response, and the Send again button

She adds the example Daniel asked for and selects Send again:

Aisha's updated response, 381 characters, describing a logistics customer's failing integration test, a daily call with their IT lead, a firewall rule and an on-time go-live, with the Send again button

Customer skill is Waiting for review again.

Step 7: Approve the New Version as Daniel​

Daniel selects Refresh on Aisha's screen, and her response is waiting again. The Review screen shows the new text, with an empty comment box ready for a new decision. Decline stays disabled until he writes a comment. Resending also cleared his earlier comment from the response itself, as Part 6 designed it.

The Review response screen with Aisha's updated Customer skill response, an empty comment box with 0 of 1,000 characters, an enabled Approve button and a disabled Decline button

He selects Approve. In Aisha's window, after Refresh, the response is Approved and read-only:

Aisha's response screen for Customer skill: Approved, Your manager approved this on Wednesday, October 28, 2026. Approved responses can't be changed., with her updated response

That's the whole review cycle, and the manager-who's-also-an-employee case, working between three real people.

Step 8: A Promotion: Aisha Becomes a Sales Manager​

Part 1 promised that someone who changes role switches to their new role's plan. To test it, change Aisha's Job title to Sales Manager in the Microsoft Entra admin center (How to Set a User's Manager and Job Title):

The Job Information tab of Aisha Khan's properties in the Microsoft Entra admin center, with Job title Sales Manager outlined in red, Department Sales, Manager Daniel Brooks, and the Save button

The first finding. A minute after saving, Aisha's app, which had been open all along, still said Job title: Sales Engineer, even after Refresh on My plan. Daniel's open app still listed her as a Sales Engineer. Both had read the profile and the team when they started:

  • The profile and the team come from named formulas, MyProfile and MyDirectReports, which call Office 365 Users (Part 4). Microsoft says a named formula recalculates when something it depends on changes. Nothing inside the app changes when IT edits someone's profile.
  • The Refresh buttons re-read the SharePoint lists (How to Add a Refresh Button to a Screen), not the profile.

So Microsoft 365 changes reach the app the next time it opens. When Aisha reloaded the page, her Home said Job title: Sales Manager, and My plan switched to the Sales Manager plan:

Aisha's My plan screen after reopening the app: The competencies for your job title, Sales Manager, with Coaching, Leadership and Pipeline management, all Not started

When Daniel reopened his app, her row said Sales Manager, and her page showed the plan for Sales Manager:

Aisha Khan's Team Member screen as Daniel sees it after reopening: Job title: Sales Manager, Nothing is waiting for your review, and the plan for Sales Manager with all three competencies Not started

Then change her title back to Sales Engineer. The second finding was here: the save worked, but the Properties tab I already had open kept showing Sales Manager, even after its Refresh. I thought the save had failed and nearly made it twice. Reloading the browser page showed the right title (Fixed: Microsoft Entra Admin Center Shows the Old Job Title After Saving).

After reopening the app, Aisha's Sales Engineer plan was back, with her approved response:

Aisha's My plan screen for Sales Engineer again, with Customer skill Approved and Leadership Not started

Nothing was lost. Her response points at the Sales Engineer competency by its ID; My plan simply shows the competencies of her current job title.

Step 9: A Leaver: Leo Leaves​

Leo Martin leaves the company. Block his sign-in in the Microsoft 365 admin center (How to Block Sign-In for a User in Microsoft 365):

Leo Martin's details in the Microsoft 365 admin center with Sign-in blocked under his name, and Reset password, Unblock sign-in and Delete user

The third finding. Microsoft's offboarding article signs a leaver out of all sessions before blocking them. I blocked first, and the admin center then stopped offering Sign out of all sessions. Microsoft Entra's Revoke sessions did it instead (Fixed: "Sign Out of All Sessions" Missing After Blocking a User).

When Leo tried to sign in about an hour later, Microsoft refused:

The Microsoft sign-in page for leo.martin@example.com with the error Your account has been locked. Contact your support person to unlock it, then try again.

Nothing in the app needs to change for a leaver. This is the formula from Part 4 that builds Daniel's team:

A macOS-style code window titled App → Formulas showing the MyDirectReports named formula: Sort of Filter of Office365Users.DirectReportsV2 with MyProfile.id and a $select of six fields, keeping accountEnabled, sorted by displayName

App → Formulas
MyDirectReports = Sort(
Filter(
Office365Users.DirectReportsV2(
MyProfile.id,
{'$select': "id,displayName,mail,userPrincipalName,jobTitle,accountEnabled"}
).value,
accountEnabled
),
displayName
);

Blocking sign-in turns off Leo's Account enabled setting, so Filter(…, accountEnabled) leaves him out (How to Get a User's Direct Reports). Daniel's open app still listed him. When Daniel reopened it, five minutes after the block, his team was only Aisha:

Daniel's My team screen after reopening the app, listing only Aisha Khan, Sales Engineer

Leo's account, license and group membership are untouched, and any responses he had sent would stay in the CompetencyResponses list. He had sent none.

Step 10: A Joiner: Maya Joins​

Maya Patel joins as Leo's replacement, a Sales Engineer reporting to Daniel. IT does three things, each with its own guide:

  1. Add her account with a license, and her job title and department under Profile info (How to Add a User and Assign a License):

    The Review and finish page of the Add a user wizard for Maya Patel, maya.patel@example.com, with Password Type Auto-generated, the Microsoft 365 E5 Developer license with location India, Roles User (no admin center access), Profile info Job title Sales Engineer and Department Sales, and the Finish adding button outlined in red

  2. Set her manager to Daniel Brooks (How to Set a User's Manager and Job Title):

    The Job Information tab of Maya Patel's properties with Job title Sales Engineer, Department Sales, Manager Daniel Brooks and the Save button outlined in red

  3. Add her to Career Development Plan Users, the group the app and the SharePoint site are shared with (How to Add Members to a Security Group):

    The group's Members page showing 5 group members found, with Maya Patel outlined in red

Nobody touches the app or the lists. Maya signed in for the first time with her temporary password and opened the app link. After Allow, the Home screen knew her:

The app's Home screen for Maya: Welcome, Maya, Job title: Sales Engineer, Manager: Daniel Brooks, with the My plan button

Her My plan is the Sales Engineer plan, the same one Leo had:

Maya's My plan screen for the job title Sales Engineer, with Customer skill (Intermediate) and Leadership (Beginner), both Not started

From creating her account at 10:58 UTC to Maya using the app at 11:22 took 24 minutes, including her manager, her group and her first sign-in. When Daniel reopened his app, his team was Aisha and Maya:

Daniel's My team screen after reopening the app, listing Aisha Khan and Maya Patel, both Sales Engineers

The Results​

Brief requirementWhat happenedResult
Managers see their direct reportsDaniel saw Aisha and Leo; Olivia saw only Daniel✓
Managers are employees tooDaniel sent a response; Olivia approved it✓
Employees see only their own competenciesAisha saw her plan and no team✓
Managers approve or declineDaniel declined with a comment, Aisha resent, Daniel approved✓
Competencies are based on the positionAisha's promotion switched her plan; her approval returned when she moved back✓, after reopening the app
A leaver's role is taken by someone newLeo dropped off Daniel's team✓, after reopening the app
A new joiner appears in the manager's teamMaya got the Sales Engineer plan with no setup and appeared in Daniel's team✓, after reopening the app

Common Mistakes​

MistakeWhat happensDo this instead
Testing everything as yourselfYou only ever see the admin's viewUse a separate browser profile or private window per person
Expecting an open app to show Microsoft 365 changesIt shows the profile and team it read when it startedReopen the app
Typing a joiner's job title differentlySales engineer has no planUse the exact title, Sales Engineer
Forgetting the group for a joinerThey can't open the app or reach the listsAdd them to Career Development Plan Users
Blocking a leaver before signing them outThe admin center hides Sign out of all sessionsSign out first, or use Revoke sessions in Microsoft Entra

Troubleshooting​

SymptomLikely causeFix
A leaver still appears on My teamThe app was open before the blockReopen the app
Someone still sees their old plan after a job title changeSame: the app read their profile when it startedReopen the app
Entra's Properties tab still shows the old job titleThe page shows the values it loaded before the editReload the browser page
Sign out of all sessions is missingThe user is already blockedUse Revoke sessions in Microsoft Entra
A joiner has no planTheir job title has no competencies, or is typed differentlyCheck the title; a manager can add competencies (Part 9)

FAQ​

Does the app need any change when people join or leave?​

No. Everything in this part was done in the admin centers. The app reads people, managers and job titles from Microsoft 365 each time it opens.

What happens to a leaver's responses?​

They stay in the CompetencyResponses list. The app never deletes responses, and the reviewer is always the employee's current manager, so a leaver's responses simply stop appearing anywhere in the app.

Why did Aisha's approval disappear while she was a Sales Manager?​

It didn't. My plan shows the competencies of your current job title, and her response belongs to a Sales Engineer competency. It reappeared as soon as her title changed back.

Could the app pick up Microsoft 365 changes without reopening?​

Not as built. The profile and team come from named formulas, and the Refresh buttons re-read the SharePoint lists. For a development plan, reading people when the app opens is enough.

Conclusion​

Every role the brief describes works with real accounts:

  • a manager who's also an employee sent a response and had it approved;
  • a manager declined a response with a comment, and approved the resent version;
  • managers only ever saw their own direct reports;
  • a promotion switched the plan, and nothing was lost when it was undone;
  • a leaver dropped off his manager's team, and a joiner got her plan with no setup.

People changes reach the app the next time it opens. On the way, two admin center surprises got their own fixes posts: a missing Sign out of all sessions and an out-of-date Properties tab.

← Previous: Part 9: Let Managers Manage Competencies

Next → Part 11: Build a Setup Flow That Creates the SharePoint Lists (coming soon). A Power Automate flow will create both lists, with every column, on any SharePoint site.

Additional Resources​

Stay Updated

Subscribe to our newsletter for the latest tutorials, tech insights, and developer news.

By subscribing, you agree to our privacy policy. Unsubscribe at any time.