A Power Platform Toolbox (PPTB) plugin for viewing and updating Dynamics 365 / Dataverse user settings. This tool provides an intuitive interface to manage user settings across multiple users simultaneously.
- π₯ User Browser - View all active system users in your Dataverse environment
- βοΈ User Settings Management - View and edit detailed user settings
- π Bulk Updates - Update settings for multiple users at once
- π Advanced Filtering - Filter users by name, email, or business unit
- π Sortable Data Grid - Sort users by any column with multi-select support
- πΎ Save Changes - Track and save pending changes with visual feedback
- π¨ Theme Support - Automatic light/dark theme switching based on PPTB settings
The tool supports viewing and editing various user settings including:
- Localization: UI Language, Help Language, Currency, Timezone, Format (locale)
- Navigation: Default Homepage Area, Subarea, and Dashboard
- Display: Paging Limit, Calendar Type, Default Calendar View, Week Numbers
- Regional Settings: Date/Time formats, Number formats, Currency formats
- Email & Sync: Email filtering, Sync intervals, Contact sync settings
- Advanced: Various personalization and feature toggles
- β React 18 with TypeScript
- β Fluent UI React Components for consistent Microsoft design
- β Vite for fast development and optimized builds
- β Power Platform Toolbox API integration
- β Dataverse API for querying and updating user settings
pptb-user-settings-utility/
βββ src/
β βββ components/
β β βββ Filter.tsx # Business unit and text filtering
β β βββ Overview.tsx # Main container component
β β βββ SystemuserDetails.tsx # User details and settings editor
β β βββ SystemuserGrid.tsx # Data grid for system users
β β βββ usersettings/ # User settings components
β β βββ FieldInfoTooltip.tsx # Tooltip for field info
β β βββ FieldRenderers.tsx # Field rendering utilities
β β βββ SettingsSection.tsx # Settings section component
β β βββ UsersettingsTab.tsx # Main settings tab
β β βββ ... # Additional utilities
β βββ hooks/
β β βββ useToolboxAPI.ts # PPTB API hooks
β βββ mappers/
β β βββ businessunitMapper.ts # Business unit data mapping
β β βββ formatMapper.ts # Format/locale data mapping
β β βββ languageMapper.ts # Language data mapping
β β βββ sitemapMapper.ts # Sitemap data mapping
β β βββ systemuserMapper.ts # System user data mapping
β β βββ timezoneMapper.ts # Timezone data mapping
β β βββ usersettingsMapper.ts # User settings data mapping
β βββ services/
β β βββ dataverseService.ts # Dataverse API queries
β βββ types/
β β βββ businessunit.ts # Business unit type definitions
β β βββ currency.ts # Currency type definitions
β β βββ dashboard.ts # Dashboard type definitions
β β βββ format.ts # Format type definitions
β β βββ language.ts # Language type definitions
β β βββ pendingChanges.ts # Pending changes type definitions
β β βββ sitemap.ts # Sitemap type definitions
β β βββ systemuser.ts # System user type definitions
β β βββ timezone.ts # Timezone type definitions
β β βββ usersettings.ts # User settings type definitions
β βββ App.tsx # Main application component
β βββ main.tsx # Entry point
β βββ index.css # Global styling
βββ dist/ # Build output
βββ icon/ # Tool icons
βββ index.html
βββ package.json
βββ tsconfig.json
βββ vite.config.ts
- Node.js >= 18.0.0
- npm or yarn
- Power Platform Toolbox installed
- Clone the repository:
git clone <repository-url>
cd pptb-user-settings-utility- Install dependencies:
npm installStart development server with HMR:
npm run devThe tool will be available at `http://localhost:5173\`
Build the tool in watch mode for continuous updates:
npm run watchBuild the optimized production version:
npm run buildThe output will be in the `dist/` directory.
Preview the production build locally:
npm run preview- Build the tool:
npm run build- Package the tool (creates npm-shrinkwrap.json):
npm run finalize-package-
Install in Power Platform Toolbox using the PPTB interface
-
Connect to a Dataverse environment
-
Launch the tool to view and manage user settings
- Business Unit Dropdown: Filter users by their business unit
- Search Box: Real-time search across user name, email, and business unit
- Click column headers to sort
- Use checkboxes to select one or multiple users
- Columns: Full Name, Email, Business Unit, System User ID
- View and edit settings for selected user(s)
- When multiple users are selected:
- Fields with matching values show the common value
- Fields with different values show "No change" placeholder
- Pending changes are tracked and displayed
- Click "Save" to apply changes to all selected users
The tool uses the Power Platform Toolbox and Dataverse APIs:
// Get current connection
const connection = await window.toolboxAPI.getConnection();// Query system users
const users = await window.dataverseAPI.queryData(
"systemusers?$select=systemuserid,fullname,internalemailaddress"
);
// Query user settings
const settings = await window.dataverseAPI.queryData(
\`usersettingscollection?$filter=systemuserid eq '\${userId}'\`
);// Show notification
await window.toolboxAPI.utils.showNotification({
title: "Success",
body: "Settings updated successfully",
type: "success",
duration: 3000,
});MIT License - see LICENSE file for details.
Lars Hildebrandt
