1 개의 사업부에서 새로 설치 한 1 개의 사용자로 전체 부하를 옮기려고합니다. 저는 CRM 전문가가 아니며, 사용자를 이동시켜야한다는 정보를 받았습니다. 기존 역할을 먼저 확인한 다음 새 BU로 이동 한 다음 BU가 아닌 역할을 복원 한 다음 수정하십시오. 사용자에 대한 예제는 다음과 같습니다주어진 사용자 목록에 대한 역할을 업데이트하려면 어떻게해야합니까?
BU1
역할 :
BU1Admin
BU1Read 전용
계약
이동이에 : BU2
역할 :
BU2Admin
BU2Read 전용
계약
이 예제에서 사용자는 자신의 관리 역할과 읽기 전용 역할을 BU2로 수정해야하지만 계약서는 동일하게 유지해야합니다.
Dictionary<Guid, string> UserRoles = new Dictionary<Guid, string>();
QueryExpression query = new QueryExpression();
query.EntityName = "systemuserroles";
ColumnSet cols = new ColumnSet();
cols.Attributes = new string[] { "systemuserid", "roleid" };
query.ColumnSet = cols;
LinkEntity le = new LinkEntity();
le.LinkFromEntityName = "systemuserroles";
le.LinkFromAttributeName = "roleid";
le.LinkToEntityName = "role";
le.LinkToAttributeName = "roleid";
LinkEntity le2 = new LinkEntity();
le2.LinkFromEntityName = "systemuserroles";
le2.LinkFromAttributeName = "systemuserid";
le2.LinkToEntityName = "systemuser";
le2.LinkToAttributeName = "systemuserid";
// Find only users in BU1
ConditionExpression ce = new ConditionExpression();
ce.AttributeName = "businessunitid";
ce.Operator = ConditionOperator.Equal;
ce.Values = new string[] { BU1 Guid };
le2.LinkCriteria = new FilterExpression();
le2.LinkCriteria.Conditions = new ConditionExpression[] { ce };
query.LinkEntities = new LinkEntity[] { le, le2 };
try
{
//This call doesn't work and fails saying RetrieveMultiple doesn't support entities of type systemuserroles.
BusinessEntityCollection UserRolesCollection = crmService.RetrieveMultiple(query);
foreach (BusinessEntity be in UserRolesCollection.BusinessEntities)
{
//Do my stuff here
}
}
catch (SoapException se)
{
throw new Exception("Error occurred." + se.Detail);
}
다음 단계, 나는 새로운 역할과 사용자를 다음하면됩니다 업데이트 할 수 있도록하려면 : 내 최초의 생각은 이런 식으로 뭔가를 사용하여 역할 이름과 함께 systemuserid 년대를 검색하는 쿼리를 생성하는 것이 었습니다 . 나는 이것이 내가 가지고있는 문제들에 기초하여 행해질 수 있는지 알지 못한다. 어떤 도움이라도 대단히 감사 할 것입니다. 나는 DynamicEntity가 this을 읽은 후에 여기에 어떤 용도로 사용 될지 궁금합니다.
는업데이트 : 당신이 AssignUserRolesRole 요청 클래스 here를 사용하여 사용자 역할을 업데이트 할 수 있습니다처럼
것 같습니다. 그러나, 나는 아직도 순간 검색 비트에 아직도 붙어있어. 내가 SQL에 의지 할 필요가 있는지 궁금하네요?
웹 서비스를 통해이 작업을 수행 한 경험이 없지만 SQL 경로에 관심이 있으시면 언제든지 알려 주시기 바랍니다. SQL을 통해이 작업을 수행하는 것은 Microsoft에서 지원하지 않습니다. – Zach
@Zach 내 생각은 중간 집을 만드는 것입니다. SystemUserRoles 테이블에서 필요한 데이터를 검색하는 함수를 작성한 다음 코드에서 호출하여 사전에 넣습니다. 그런 다음 CrmService를 사용하여 AssignUserRolesRole을 사용하여 각 사용자의 역할을 업데이트합니다. SQL을 통해 업데이트를하는 것은 업데이트해야 할 모든 장소를 확신하므로 매우 무서운 것 같습니다. – sr28