This is a desktop application built with Electron, React, and Vite to create Microsoft 365 Partner Center GDAP requests and to manage role assigments to the relationships. This app runs with delegated user permissions and needs that the user has Admin Agent-role set in Partner portal. This is not Entra admin role, it can only be found in Partner portal roles.
PLEASE NOTE: This app is only tested on Windows, but should run and build package on Mac and Linux too, but Mac and Linux has not been tested!
5.1.2026
- Updated so userdefined variables are easily changeable in one file /src/appConfig.ts and not in several different files.
- Relantionship enddate is visible and autorenew is now toggleable on/off.
- Other minor quality-of-life upgrades
9.12.2025
- When selecting roles for groups in a relationship, only eligible, available roles in the relationship are selectable.
Before you can run this application, you MUST configure your Azure AD App Registration correctly.
- Navigate to the [Entra portal] (https://entra.microsoft.com/) and select App Registration under Entra ID.
- Click new registration.
- Give it a name and choose who can use the application, usually it's single tenant only.
- Select Redirect URI and choose "Public client/native (mobile & desktop)", add http://localhost, click register.
- Take note of Application (client) ID and Directory (tenant) ID.
- Click Authentication and under Advanced Settings, Allow public client flows set Enable the following mobile and desktop flows to yes.
This is a critical step. The application needs permission to read and create GDAP relationships and manage their assignments.
- In your App Registration, go to the API permissions blade.
- Click "Add a permission".
- Select "Microsoft Graph".
- Select "Delegated permissions".
- In the search box, type
DelegatedAdminRelationshipand selectDelegatedAdminRelationship.ReadWrite.All. - Search for and select
Group.Read.All. This is required for managing security group assignments to GDAP relationships. - Click "Add permissions".
- After adding the permissions, you must grant consent. Click the "Grant admin consent for [Your Tenant Name]" button and accept the prompt. The status for the permissions should change to "Granted".
- Open
src/appConfig.tsin your code editor and add Application (client) ID into theAAD_APP_CLIENT_IDand Directory (tenant) IDAAD_APP_TENANT_IDconstants (Rows 7 and 8).
- Create three different security groups in entra or admin portal for templates, ie. basic, advanced, expert. You can name them in any way you like. Take note of their groupId.
- Open
src/appConfig.ts. - Change the name of the predefined group name on row 36 to correspond created security group: ie. name: 'Production Basic',
- Change the groupid to the one you created for basic roles: ie. groupId: 'f7c2d8a1-4b3e-4e9a-9d6f-2a8f4b7c1e35',
- Repeat steps 3. and 4. to advanced and expert groups in rows 45-46 and 63-64.
- The templates are called in the app with their tag, basic, advanced and expert that are in rows 35, 44 and 62. There is no need to change them, but if you do, also change them in src/renderer/src/components/AssignmentEditor.tsx.
You need to have Node.js installed on your computer.
Open your terminal or command prompt, navigate to the project's root directory (where package.json is located), and run:
npm installThis will download Electron and all other necessary packages, that are listed below with their version number (same as in package.json)
azure/msal-node": "3.8.1" - Basic MSAL authentication library
azure/msal-node-extensions": "1.5.24" - Advanced MSAL authentication library, used for encrypting the token. DPAPI on Windows, Keychain on macOS, and libsecret on Linux.
electron-toolkit/utils": "4.0.0" - Electron-app packaging.
types/react": "18.3.3" - The main library for building user interface.
types/react-dom": "18.3.0" - The "renderer" for React. It's the bridge that connects React components to the actual browser environment.
To start the application for development with hot-reloading, run:
npm run devThis command will launch the Electron application window. The developer tools will open automatically.
To package the application into a runnable .exe installer for Windows, run:
npm run package:winThis command will create an release folder in your project directory containing the installer (GDAP Request Creator Setup X.X.X.exe) and portable .exe to subfolder win-unpacked. You can distribute these files to other users.
Portable .exe needs the whole contents of win-unpacked to run.
For MacOS, the command is: npm run package:mac and for linux: npm run package:linux
Please note, you need to run these on their corresponding OS. ie. only build Win version on Win computer, Linux on Linux and MacOS on MacOS.