Dynamics 365 (crm) Импортируйте правило календаря для расписания праздников из одной системы в другую - PullRequest
0 голосов
/ 22 мая 2019
  1. Я создал Расписание праздников Запись в OrgA. Эта запись создан под сущность "календарь".
  2. Я мог бы переместить эту запись, используя инструмент передачи данных XrmToolBox.
  3. Внутри (Связано) с График отпусков Запись есть много правил Т.е. майские записи. Они из сущности "Правило календаря".
  4. Я хочу импортировать эти записи «Правила календаря» из OrgA в OrgB.

Дополнительная информация:

Когда я пытался получить «Правило календаря» с помощью fetchxml Builder, он выдавал сообщение об ошибке

Получение нескольких не поддерживается

Использование сущности CRMRESTBuilder «Правило календаря» недоступно. Используя Data Transporter, он не переносил записи и выдавал ошибку как

«Получение нескольких файлов не поддерживается»

Ниже ссылка полезна для понимания Календаря и всех связанных с ним сущностей. https://www.inogic.com/blog/2014/08/calendars-and-expand-calendar-request-in-crm-2013-sp-1/

1 Ответ

1 голос
/ 22 мая 2019

Сущность CalendarRule может быть получена с помощью тестера XrmToolbox FetchXml, который указывает, что он поддерживает ExecuteFetchRequest, но не RetrieveMultiple.

Я написал статью о CRM Tip of the Day о сущностях, которые демонстрируют такое поведение: https://crmtipoftheday.com/796/long-live-executefetchrequest/

Запрос:

<fetch>
    <entity name="calendarrule" />
</fetch>

Ответ (первая запись):

<result>
    <groupdesignator>
        FC5769FC-4DE9-445d-8F4E-6E9869E60857
    </groupdesignator>
    <rank formattedvalue="2" >
        2
    </rank>
    <createdon date="4/11/2019" time="8:55 PM" >
        2019-04-11T20:55:16-04:00
    </createdon>
    <starttime date="12/31/1999" time="7:00 PM" >
        1999-12-31T19:00:00-05:00
    </starttime>
    <organizationid>
        {3906F615-4DCD-422D-A3E3-F79134C7CCEF}
    </organizationid>
    <isselected name="Yes" >
        1
    </isselected>
    <duration formattedvalue="1,440" >
        1440
    </duration>
    <innercalendarid type="4003" >
        {7177F09C-BD5C-E911-A817-000D3A37FFD3}
    </innercalendarid>
    <isvaried name="No" >
        0
    </isvaried>
    <modifiedon date="4/11/2019" time="8:55 PM" >
        2019-04-11T20:55:16-04:00
    </modifiedon>
    <createdby name="--- ---" dsc="" yomi="--- ---" type="8" >
        {EE10412E-68E7-471D-A10C-D28FCE63B6F3}
    </createdby>
    <calendarruleid>
        {7277F09C-BD5C-E911-A817-000D3A37FFD3}
    </calendarruleid>
    <timezonecode formattedvalue="92" >
        92
    </timezonecode>
    <pattern>
        FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR
    </pattern>
    <description>
        Weekly Single Rule
    </description>
    <modifiedby name="--- ---" dsc="" yomi="--- ---" type="8" >
        {EE10412E-68E7-471D-A10C-D28FCE63B6F3}
    </modifiedby>
    <calendarid type="4003" >
        {7077F09C-BD5C-E911-A817-000D3A37FFD3}
    </calendarid>
    <effectiveintervalend date="12/30/9999" time="6:59 PM" >
        9999-12-30T18:59:59-05:00
    </effectiveintervalend>
    <businessunitid>
        {79263477-AA5C-E911-A817-000D3A37FFD3}
    </businessunitid>
</result>

Вот пример кода C # (не тестировался в текущей форме):

using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Tooling.Connector;

public void Run()
{
    var connectionString = "Url=https://foobar.crm.dynamics.com; Username=user@foobar.onmicrosoft.com; Password=myPass; AuthType=Office365";     
    var crmSvcClient = new CrmServiceClient(connectionString);

    var fetch = @"<fetch mapping='logical'>
                    <entity name='calendarrule' />                                  
                  </fetch>";

    var executeFetchReq = new ExecuteFetchRequest 
    { 
        FetchXml = fetch 
    };

    //Works
    var crmSvcExecuteFetchResponse = crmSvcClient.Execute(executeFetchReq);
    //Doesn't work
    var crmSvcRetrieveMultipleResponse = crmSvcClient.RetrieveMultiple(new FetchExpression(fetch));
}
...