crexin

Export Dynamics CE user roles Browser snippet

Oct 10th, 2025 (edited)
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 1.79 KB | Source Code | 0 0
  1. /**
  2.  * Retrieves and displays all security roles directly assigned to a user.
  3.  * Works with Xrm.WebApi inside Dynamics CE.
  4.  * @param {string} userId - The systemuserid (GUID) of the user.
  5.  */
  6. async function exportUserRoles(userId) {
  7.     if (!userId) {
  8.         console.error("❌ Please provide a userId (systemuserid).");
  9.         return;
  10.     }
  11.  
  12.     userId = userId.replace(/[{}]/g, "");
  13.     console.log(`🔍 Fetching direct roles for userId: ${userId}`);
  14.  
  15.     try {
  16.         // Step 1: Get all systemuserroles records for this user
  17.         const linkQuery = `?$filter=systemuserid eq ${userId}`;
  18.         const userRoles = await Xrm.WebApi.retrieveMultipleRecords("systemuserroles", linkQuery);
  19.  
  20.         if (!userRoles.entities.length) {
  21.             console.warn("⚠️ No direct roles found for this user.");
  22.             return [];
  23.         }
  24.  
  25.         // Step 2: Extract role IDs
  26.         const roleIds = userRoles.entities.map(r => r.roleid);
  27.  
  28.         // Step 3: Fetch each role's details
  29.         const roles = [];
  30.         for (const id of roleIds) {
  31.             try {
  32.                 const role = await Xrm.WebApi.retrieveRecord("role", id, "?$select=name,roleid");
  33.                 roles.push({ RoleName: role.name, RoleId: role.roleid });
  34.             } catch (innerError) {
  35.                 console.warn(`⚠️ Could not retrieve role ${id}:`, innerError.message);
  36.             }
  37.         }
  38.  
  39.         // 🧮 Step 4: Sort roles alphabetically by RoleName
  40.         roles.sort((a, b) => a.RoleName.localeCompare(b.RoleName));
  41.  
  42.         // Step 5: Display results
  43.         console.table(roles);
  44.         console.log(`✅ Total Direct Roles: ${roles.length}`);
  45.         return roles;
  46.  
  47.     } catch (error) {
  48.         console.error("❌ Error retrieving roles:", error.message || error);
  49.     }
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment