簡體   English   中英

無法在 Dynamics CRM 365 online 中創建系統用戶

[英]Unable to Create a systemuser in Dynamics CRM 365 online

在聯系人記錄的更新字段上,我想在動態 crm 365 在線創建一個系統用戶(用戶)。

這是我正在嘗試創建用戶的以下代碼

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"] = "projectservice_9@crmdemo.dynamics.com";
                    sysuser.Attributes["domainname"] = "projectservice_9@crmdemo.dynamics.com";
                    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);

                }

任何人都可以幫助我,謝謝。

更新:最近我們開始使用 OOB CSV 導入直接在線 CRM 中導入用戶(這對我來說也是新的),它會成功,稍后當為同一用戶分配許可證時 - 這不會創建另一個用戶記錄,而是將映射基於用戶名/域名/電子郵件的現有用戶記錄的 Azure 對象 GUID。 這在快速創建沒有許可證或角色的存根用戶時更有用。


在 Dynamics 365 CRM online 中,系統用戶記錄創建/啟用流程發生在 O365 管理門戶端。 閱讀更多

步驟如下:

  1. 必須在 Active Directory 中創建安全組並映射到任何 CRM 組織的 O365 管理門戶
  2. 必須在該 AD 安全組中添加用戶
  3. SG 的所有用戶將被復制為 CRM 實例中的系統用戶
  4. 在 O365 管理門戶中,針對用戶分配 CRM 許可證(基本版/專業版)時 - 將在 CRM 中啟用系統用戶記錄
  5. 在 CRM 端,我們將分配安全角色來完成用戶入職

由於上述 CRM 在線之外的手動步驟,我們無法直接使用 SDK 創建系統用戶。 可以使用 PowerShell 創建,就像在社區中回答的一樣。

//使用下面的代碼在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("businessunitid@odata.bind", "/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();
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM