1
votes

On update field of contact record I want to create a systemuser(user) in dynamics crm 365 online.but I’m getting error like "usersettings With Id = 5fe33120-607f-e811-a95c-000d3af29269 Does Not Exist"

This is the below code I'm trying to create a user

Entity getEntity = (Entity)context.InputParameters["Target"];
                string str = getEntity.Attributes["new_isaeon"].ToString();

                if (str != null && str == "True")
                {
                    // http://localhost:51625/api/Users
                    Entity sysuser = new Entity("systemuser");
                    sysuser.Attributes["fullname"] = "hsk";
                    sysuser.Attributes["internalemailaddress"] = "[email protected]";
                    sysuser.Attributes["domainname"] = "[email protected]";
                    Guid getGuid = new Guid("700F2217-786A-E811-A95A-000D3AF2793E");
                    sysuser.Attributes["businessunitid"] = new EntityReference("businessunit", getGuid);
                    sysuser.FormattedValues["accessmode"] = "Read-Write";
                    Guid getuserid = service.Create(sysuser);

                }

can anyone help me on this thanks.

2
If your domain is static like your snippet, you will be only be able to execute this once. As the domain name must be unique, have you already created a user with this domain name ?Stefan William-Worrall
not yet created any user.throwing that error usersettings with id does not existsSrinivas Hsk
Checking the doc sample it looks like the domain name is using domain\login syntaxCleptus
BTW, is it 2011 or 365? Those two behave different...Cleptus
it is dynamics-365 onlineSrinivas Hsk

2 Answers

4
votes

Update: Recently we started importing users in CRM online directly using OOB CSV import (this is new for me too), it will succeed, and later on when license assigned for same user - this wont create another user record, instead it will map the Azure object GUID to the existing user record based on username/domain name/email. This is more useful when creating stub users without license or roles quickly.


In Dynamics 365 CRM online, system users record creation/enabling flow happens from O365 Admin portal end. Read more

Steps go like this:

  1. Security group has to be created in Active directory & mapped in O365 Admin portal for any CRM Org
  2. Users has to be added in that AD Security group
  3. All the users from SG will be replicated as system users in CRM instance
  4. In O365 Admin portal, on assigning CRM license (Basic/Pro) against the user - the system user record will be enabled in CRM
  5. In CRM side, we will assign Security role to complete user on-boarding

We cannot create system user using SDK directly because of above manual steps outside CRM online. Can be created using PowerShell like answered in community.

2
votes

//Use below code to create User in D365

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

namespace PowerApps.Samples
{
    public partial class SampleProgram
    {
        static void Main(string[] args)
        {
            JObject azureUser = new JObject();
            JObject retrievedResult;
            string queryOptions = string.Empty;
            string domainName = string.Empty;
            try
            {
                Console.WriteLine("Please enter domain name.");
                domainName = Console.ReadLine();

                string connectionString = ConfigurationManager.ConnectionStrings["Connect"].ConnectionString;

                using (HttpClient client = SampleHelpers.GetHttpClient(
                    connectionString,
                    SampleHelpers.clientId,
                    SampleHelpers.redirectUrl,
                    "v9.1"))
                {

                    queryOptions = "systemusers?$select=domainname&$filter=domainname eq '" + domainName + "'";

                    HttpResponseMessage retrieveResponse = client.GetAsync(client.BaseAddress.AbsoluteUri + queryOptions,
                        HttpCompletionOption.ResponseHeadersRead).Result;

                    if (retrieveResponse.IsSuccessStatusCode) //200
                    {
                        retrievedResult = JObject.Parse(retrieveResponse.Content.ReadAsStringAsync().Result);
                        string outputDomainname = (string)retrievedResult.SelectToken("value[0].domainname");
                        Console.WriteLine("Domain: " + outputDomainname);
                        if (outputDomainname == null)
                        {
                            Console.WriteLine("Adding user to Azure AD..");

                            HttpRequestMessage createrequest = new HttpRequestMessage(HttpMethod.Post,
                                client.BaseAddress + "systemusers");

                            Console.WriteLine("Enter first name");
                            azureUser.Add("firstname", Console.ReadLine());

                            Console.WriteLine("Enter last name");
                            azureUser.Add("lastname", Console.ReadLine());

                            Console.WriteLine("Enter internal email address");
                            azureUser.Add("internalemailaddress", Console.ReadLine());

                            azureUser.Add("isdisabled", false);
                  
                            azureUser.Add("caltype", 7);
                            azureUser.Add("[email protected]", "/businessunits(8c44c8ac-f6a3-ea11-a812-000d3a0a74cb)");

                            createrequest.Content = new StringContent(azureUser.ToString());
                            createrequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");

                            HttpResponseMessage createResponse = client.SendAsync(createrequest, HttpCompletionOption.ResponseHeadersRead).Result;
                            if (createResponse.IsSuccessStatusCode)
                            {
                                Console.WriteLine("Account created");
                            }
                            else
                            {
                                throw new Exception(string.Format("Failed to Post Records", createResponse.ReasonPhrase));
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Failed to retrieve domain: {0}",
                            retrieveResponse.ReasonPhrase);
                        throw new Exception(string.Format("Failed to retrieve domain: {0}", retrieveResponse.Content));
                    }
                }
            }
            catch (Exception ex)
            {
                SampleHelpers.DisplayException(ex);
                throw ex;
            }
            finally
            {
                Console.WriteLine("Press <Enter> to exit the program.");

                Console.ReadLine();
            }
        }
    }
}