private void AddUsersToTeam(Guid idTeam, IEnumerable <Guid> userList) { if (userList == null || !userList.Any()) { return; } var teamUsers = GetTeamUsers(idTeam, userList.ToArray()); var hashSet = new HashSet <Guid>(teamUsers); var usersToAdd = userList.Where(r => !hashSet.Contains(r)).ToArray(); if (!usersToAdd.Any()) { return; } var request = new AddMembersTeamRequest() { TeamId = idTeam, MemberIds = usersToAdd, }; var response = (AddMembersTeamResponse)_service.Execute(request); }
public void When_a_non_existing_member_is_added_to_an_existing_list_exception_is_thrown() { var ctx = new XrmFakedContext(); var service = ctx.GetOrganizationService(); var team = new Team { Id = Guid.NewGuid(), Name = "Some team" }; ctx.Initialize(new List <Entity> { team }); AddMembersTeamRequest addMembersTeamRequest = new AddMembersTeamRequest { MemberIds = new[] { Guid.NewGuid() }, TeamId = team.ToEntityReference().Id }; Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addMembersTeamRequest)); }
private void AddUserFromTeams(Guid idUser, IEnumerable <Guid> teamList) { if (teamList == null || !teamList.Any()) { return; } var userTeams = GetUserTeams(idUser, teamList.ToArray()); var hashSet = new HashSet <Guid>(userTeams); var teamsToAdd = teamList.Where(r => !hashSet.Contains(r)).ToArray(); if (!teamsToAdd.Any()) { return; } var userArray = new[] { idUser }; foreach (var idTeam in teamsToAdd) { var request = new AddMembersTeamRequest() { TeamId = idTeam, MemberIds = userArray, }; var response = (AddMembersTeamResponse)_service.Execute(request); } }
public static void AddMembersToTeam(Guid teamId, Guid[] membersId, IOrganizationService service) { AddMembersTeamRequest addRequest = new AddMembersTeamRequest(); addRequest.TeamId = teamId; addRequest.MemberIds = membersId; service.Execute(addRequest); }
public void GetAllSecurityteam() { IOrganizationService service = CRMHelper.ConnectToMSCRM(); /* * * Select AccountId, AccountName * From Account * Where AccountStatus= 'Customer' * Order by AccountName Asec * */ string teamName = "FinanceTeam"; QueryExpression query = new QueryExpression("systemuser"); query.ColumnSet = new ColumnSet(new string[] { "fullname", "domainname" }); LinkEntity TeamOwnerShipLinkEntity = new LinkEntity("systemusuer", "teammembership", "systemuserid", "systemuserid", JoinOperator.Inner); LinkEntity TeamLinkEnitty = new LinkEntity("teammembership", "team", "teamid", "teamid", JoinOperator.Inner); TeamLinkEnitty.LinkCriteria.AddCondition("name", ConditionOperator.Equal, teamName); TeamOwnerShipLinkEntity.LinkEntities.Add(TeamLinkEnitty); query.LinkEntities.Add(TeamOwnerShipLinkEntity); EntityCollection accountEntityList = service.RetrieveMultiple(query); // Create the AddMembersTeamRequest object. AddMembersTeamRequest addRequest = new AddMembersTeamRequest(); // Set the AddMembersTeamRequest TeamID property to the object ID of // an existing team. addRequest.TeamId = new Guid("A9DE5707-7D0D-E811-A958-000D3AF083FD"); // Set the AddMembersTeamRequest MemberIds property to an // array of GUIDs that contains the object IDs of one or more system users. Guid[] memberIds = new[] { new Guid("C68F0F3F-680D-E811-A95B-000D3AF07CE4") }; addRequest.MemberIds = memberIds; // Execute the request. service.Execute(addRequest); RemoveMembersTeamRequest removeRequest = new RemoveMembersTeamRequest(); removeRequest.TeamId = new Guid("A9DE5707-7D0D-E811-A958-000D3AF083FD"); // Set the AddMembersTeamRequest MemberIds property to an // array of GUIDs that contains the object IDs of one or more system users. removeRequest.MemberIds = memberIds; // Execute the request. service.Execute(removeRequest); //service.Associate("team", new Guid("A9DE5707-7D0D-E811-A958-000D3AF083FD"), new Relationship("teamroles_association"),) }
private void AddUserToTeam(Entity user, Guid teamId) { var addUserRequest = new AddMembersTeamRequest(); addUserRequest.MemberIds = new[] { user.Id }; addUserRequest.TeamId = teamId; _client.Execute(addUserRequest); }
public void AddToTeam(Guid userId, Guid teamId) { if (!IsInTeam(userId, teamId)) { var request = new AddMembersTeamRequest(); request.TeamId = teamId; request.MemberIds = new[] { userId }; XrmService.Execute(request); } }
/// <summary> /// Add users to a team /// </summary> /// <param name="team"></param> /// <param name="users"></param> public void AddUsersToTeam(EntityReference team, params EntityReference[] users) { var req = new AddMembersTeamRequest { TeamId = team.Id, MemberIds = users.Select(x => x.Id).ToArray() }; Core.Execute(req, AdminUser); }
public static void AddTeamMember(Guid teamId, Guid userId, IOrganizationService service) { var addToTeamRequest = new AddMembersTeamRequest { TeamId = teamId, MemberIds = new[] { userId } }; service.Execute(addToTeamRequest); }
public void AddUsersToTeam(EntityReference teamRef, params EntityReference[] userRefs) { var request = new AddMembersTeamRequest { MemberIds = userRefs.Select(u => u.Id).ToArray(), TeamId = teamRef.Id }; AdminOrganizationService.Execute(request); }
/// <summary> /// Executes the workflow activity. /// </summary> /// <param name="executionContext">The execution context.</param> protected override void Execute(CodeActivityContext executionContext) { // Create the tracing service ITracingService tracingService = executionContext.GetExtension <ITracingService>(); if (tracingService == null) { throw new InvalidPluginExecutionException("Failed to retrieve tracing service."); } tracingService.Trace("Entered AddMemberTeamActivity.Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}", executionContext.ActivityInstanceId, executionContext.WorkflowInstanceId); // Create the context IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>(); if (context == null) { throw new InvalidPluginExecutionException("Failed to retrieve workflow context."); } tracingService.Trace("AddMemberTeamActivity.Execute(), Correlation Id: {0}, Initiating User: {1}", context.CorrelationId, context.InitiatingUserId); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { EntityReference user = this.User.Get(executionContext); EntityReference team = this.Team.Get(executionContext); if (!IsMemberInTeam(service, team.Id, user.Id)) { OrganizationRequest request = new AddMembersTeamRequest { MemberIds = new Guid[] { user.Id }, TeamId = team.Id }; var response = service.Execute(request) as AddMembersTeamResponse; } } catch (FaultException <OrganizationServiceFault> e) { tracingService.Trace("Exception: {0}", e.ToString()); // Handle the exception. throw; } tracingService.Trace("Exiting AddMemberTeamActivity.Execute(), Correlation Id: {0}", context.CorrelationId); }
/// <summary> /// Add bulk <c>System User</c> data into to the <c>Team</c>. /// <para> /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.addmembersteamrequest(v=crm.8).aspx /// </para> /// </summary> /// <param name="teamId"><c>Team</c> Id</param> /// <param name="systemuserIdList"><c>System User</c> Id list</param> /// <returns><see cref="AddMembersTeamResponse"/></returns> public AddMembersTeamResponse AddMember(Guid teamId, List <Guid> systemuserIdList) { ExceptionThrow.IfGuidEmpty(teamId, "teamId"); ExceptionThrow.IfNullOrEmpty(systemuserIdList.ToArray(), "systemuserIdList"); AddMembersTeamRequest request = new AddMembersTeamRequest() { TeamId = teamId, MemberIds = systemuserIdList.ToArray() }; return((AddMembersTeamResponse)this.OrganizationService.Execute(request)); }
public void When_a_request_is_called_with_a_null_memberid_parameter_exception_is_thrown() { var ctx = new XrmFakedContext(); var service = ctx.GetOrganizationService(); AddMembersTeamRequest addMembersTeamRequest = new AddMembersTeamRequest { MemberIds = null, TeamId = Guid.NewGuid() }; // Execute the request. Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addMembersTeamRequest)); }
public async Task ExecuteAsync_AddMembersTeamRequest_When_OneUsersAdded_Then_Ok() { var unitTestsUserId = CrmClient.GetMyCrmUserId(); var userRef = new EntityReference(SystemUserEntityName, unitTestsUserId); var teamId = new Guid("a640a425-a463-ea11-aae8-005056b42cd8"); var action = new AddMembersTeamRequest(teamId) { Members = { userRef } }; await CrmClient.ExecuteAsync(action); }
public void AddUsersToTeam(Microsoft.Xrm.Sdk.EntityReference teamRef, params Microsoft.Xrm.Sdk.EntityReference[] userRefs) { if (userRefs.Length == 0) { return; } var request = new AddMembersTeamRequest { MemberIds = userRefs.Select(u => u.Id).ToArray(), TeamId = teamRef.Id }; AdminOrganizationService.Execute(request); }
private static void AddUserToTeam(IOrganizationService service, Entity team, Guid userId) { AddMembersTeamRequest addRequest = new AddMembersTeamRequest(); // Set the AddMembersTeamRequest TeamID property to the object ID of // an existing team. addRequest.TeamId = team.Id; // Set the AddMembersTeamRequest MemberIds property to an // array of GUIDs that contains the object IDs of one or more system users. addRequest.MemberIds = new Guid[] { userId }; // Execute the request. service.Execute(addRequest); }
private void AddMember(LocalPluginContext localContext) { var orgService = localContext.OrganizationService; var retrievedSystemUser = orgService.Retrieve("systemuser", localContext.PluginExecutionContext.PrimaryEntityId, new ColumnSet("businessunitid")); var team = GetBusinessUnitDefaultTeam(orgService, retrievedSystemUser); var request = new AddMembersTeamRequest { TeamId = team.Id, MemberIds = new[] { retrievedSystemUser.Id } }; orgService.Execute(request); }
private void AddMembersToTeam(Guid?TeamId, EntityReferenceCollection Users, IOrganizationService service) { Guid[] UserIds; //get user AddMembersTeamRequest addRequest = new AddMembersTeamRequest(); if (TeamId.HasValue) { addRequest.TeamId = TeamId.Value; UserIds = Users.Select(x => x.Id).ToArray(); addRequest.MemberIds = UserIds; tracingService.Trace("before updating "); service.Execute(addRequest); tracingService.Trace("after updating "); } }
public async Task ExecuteAsync_AddMembersTeamRequest_When_MultipleUsersAdded_Then_Ok() { var unitTestsUserId = new Guid("{9A8A23B4-07DB-EA11-AAF0-005056B42CD8}"); var otherUserId = new Guid("a988c6a2-5236-ea11-aadc-005056b42cd8"); var testTeamId = new Guid("a640a425-a463-ea11-aae8-005056b42cd8"); var userRef = new EntityReference(SystemUserEntityName, unitTestsUserId); var userRef1 = new EntityReference(SystemUserEntityName, otherUserId); var teamId = testTeamId; var action = new AddMembersTeamRequest(teamId) { Members = { userRef, userRef1 } }; var resp = await CrmClient.ExecuteAsync(action); }
public void When_a_member_is_added_to_a_non_existing_team_exception_is_thrown() { var ctx = new XrmFakedContext(); var service = ctx.GetOrganizationService(); AddMembersTeamRequest addMembersTeamRequest = new AddMembersTeamRequest { MemberIds = new[] { Guid.NewGuid() }, TeamId = Guid.NewGuid() }; // Execute the request. Assert.Throws <FaultException <OrganizationServiceFault> >(() => service.Execute(addMembersTeamRequest)); }
/// <summary> /// If there is a separate user connection for the XrmService connection used for scripting limited security /// sets that connections user as a member of the teamId and removes them from any other team /// </summary> /// <param name="teamId">id of the team to set the test script user in</param> public void SetTestUserAsTeamMember(Guid teamId) { var testUserId = XrmService.WhoAmI(); var adminUserId = XrmServiceAdmin.WhoAmI(); //if the same user for both the admin and standard connection then don't bother if (testUserId == adminUserId) { return; } //get the non-default teams th4e test user a member of var teamQuery = XrmServiceAdmin.BuildQuery(Entities.team, fields: new string[0], conditions: new[] { new ConditionExpression(Fields.team_.isdefault, ConditionOperator.NotEqual, true) }); var memberJoin = teamQuery.AddLink(Relationships.team_.teammembership_association.EntityName, Fields.team_.teamid, Fields.team_.teamid); memberJoin.LinkCriteria.AddCondition(new ConditionExpression(Fields.systemuser_.systemuserid, ConditionOperator.Equal, testUserId)); var teamsMemberships = XrmServiceAdmin.RetrieveAll(teamQuery); //if they are already only a member of the team then return if (teamsMemberships.Count() == 1 && teamsMemberships.First().Id == teamId) { return; } //remove them from the teams they are a member of foreach (var team in teamsMemberships) { if (!team.GetBoolean(Fields.team_.isdefault)) { var removeRequest = new RemoveMembersTeamRequest(); removeRequest.TeamId = team.Id; removeRequest.MemberIds = new[] { testUserId }; XrmService.Execute(removeRequest); } } //add them to the team var addRequest = new AddMembersTeamRequest(); addRequest.TeamId = teamId; addRequest.MemberIds = new[] { testUserId }; XrmService.Execute(addRequest); }
protected override void Execute(CodeActivityContext executionContext) { #region "Load CRM Service from context" Common objCommon = new Common(executionContext); objCommon.tracingService.Trace("Load CRM Service from context --- OK"); #endregion #region "Read Parameters" EntityReference userReference = this.User.Get(executionContext); EntityReference teamReference = this.Team.Get(executionContext); objCommon.tracingService.Trace(String.Format("UserID: {0} - TeamID: {1} ", userReference.Id.ToString(), teamReference.Id.ToString())); #endregion AddMembersTeamRequest req = new AddMembersTeamRequest(); req.TeamId = teamReference.Id; req.MemberIds = new[] { userReference.Id }; AddMembersTeamResponse res = (AddMembersTeamResponse)objCommon.service.Execute(req); }
public void When_a_member_is_added_to_an_existing_list_member_is_added_successfully() { var ctx = new XrmFakedContext(); var service = ctx.GetOrganizationService(); var team = new Team { Id = Guid.NewGuid(), Name = "Some team" }; var systemuser = new SystemUser { Id = Guid.NewGuid() }; ctx.Initialize(new List <Entity> { team, systemuser }); AddMembersTeamRequest addMembersTeamRequest = new AddMembersTeamRequest { MemberIds = new[] { systemuser.Id }, TeamId = team.ToEntityReference().Id }; service.Execute(addMembersTeamRequest); using (var context = new XrmServiceContext(service)) { var member = context.CreateQuery <TeamMembership>().FirstOrDefault(tm => tm.TeamId == team.Id && tm.SystemUserId == systemuser.Id); Assert.NotNull(member); } }
/// <summary> /// Creates any entity records that this sample requires. /// </summary> public void CreateRequiredRecords() { #region create users Console.WriteLine(" Creating users"); var ldapPath = ""; _users = SystemUserProvider.RetrieveSalespersons(_serviceProxy, ref ldapPath); _users.Add(SystemUserProvider.RetrieveSystemUser( "dparker", "Darren", "Parker", "Salesperson", _serviceProxy, ref ldapPath)); #endregion #region fetch root business unit // Retrieve the root business unit to use for creating the team for the // sample. var businessUnitQuery = new QueryExpression { EntityName = BusinessUnit.EntityLogicalName, ColumnSet = new ColumnSet("businessunitid"), Criteria = new FilterExpression() }; businessUnitQuery.Criteria.AddCondition("parentbusinessunitid", ConditionOperator.Null); var businessUnitResult = _serviceProxy.RetrieveMultiple(businessUnitQuery); _rootBusinessUnit = businessUnitResult.Entities[0].ToEntity <BusinessUnit>(); #endregion #region create new business unit Console.WriteLine(" Creating new business unit"); _businessUnit = new BusinessUnit() { Name = "A Sample Business Unit", ParentBusinessUnitId = _rootBusinessUnit.ToEntityReference() }; _businessUnit.Id = _serviceProxy.Create(_businessUnit); #endregion #region create team Console.WriteLine(" Creating a user team"); _team = new Team { AdministratorId = new EntityReference(SystemUser.EntityLogicalName, _users[0]), Name = "Sample team", BusinessUnitId = _rootBusinessUnit.ToEntityReference() }; _team.Id = _serviceProxy.Create(_team); var salespersonRole = (from role in _context.RoleSet where role.Name == "Salesperson" && role.BusinessUnitId.Id == _rootBusinessUnit.Id select role).First(); // assign role to the team _serviceProxy.Associate( Team.EntityLogicalName, _team.Id, new Relationship("teamroles_association"), new EntityReferenceCollection() { salespersonRole.ToEntityReference() } ); // wait for the async job to finish for (int i = 1; i <= 30; i++) { Console.WriteLine(" Checking to see if the async job has finished {0}/30", i); var teamPrivileges = (RetrieveTeamPrivilegesResponse) _serviceProxy.Execute(new RetrieveTeamPrivilegesRequest { TeamId = _team.Id }); if (teamPrivileges.RolePrivileges.Any((rp) => rp.PrivilegeId == new Guid("A8ECAC53-09E8-4A13-B598-8D8C87BC3D33"))) // prvReadLead { break; } System.Threading.Thread.Sleep(1000); } #endregion #region add users to team Console.WriteLine(" Adding users to the team"); AddMembersTeamRequest addMembers = new AddMembersTeamRequest() { TeamId = _team.Id, MemberIds = new Guid[] { _users[0], _users[1] } }; _serviceProxy.Execute(addMembers); #endregion #region create leads Console.WriteLine(" Creating leads"); _leads[0] = new Lead { CompanyName = "A. Datum Corporation", FirstName = "Joe", LastName = "Andreshak", }; _leads[0].Id = _serviceProxy.Create(_leads[0]); _leads[1] = new Lead { CompanyName = "Wingtip Toys", FirstName = "Diogo", LastName = "Andrade" }; _leads[1].Id = _serviceProxy.Create(_leads[1]); _leads[2] = new Lead { CompanyName = "The Phone Company", FirstName = "Ronaldo", LastName = "Smith Jr." }; _leads[2].Id = _serviceProxy.Create(_leads[2]); _leads[3] = new Lead { CompanyName = "Tailspin Toys", FirstName = "Andrew", LastName = "Sullivan", }; _leads[3].Id = _serviceProxy.Create(_leads[3]); #endregion #region assign leads Console.WriteLine(" Assigning leads to users and teams"); _serviceProxy.Execute(new AssignRequest() { Assignee = new EntityReference(SystemUser.EntityLogicalName, _users[0]), Target = _leads[0].ToEntityReference() }); _serviceProxy.Execute(new AssignRequest() { Assignee = new EntityReference(SystemUser.EntityLogicalName, _users[1]), Target = _leads[1].ToEntityReference() }); _serviceProxy.Execute(new AssignRequest() { Assignee = new EntityReference(SystemUser.EntityLogicalName, _users[2]), Target = _leads[2].ToEntityReference() }); // give the team access to the record so that it can be assigned to it _serviceProxy.Execute(new GrantAccessRequest() { Target = _leads[3].ToEntityReference(), PrincipalAccess = new PrincipalAccess() { AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess, Principal = _team.ToEntityReference() } }); // assign the lead to the team _serviceProxy.Execute(new AssignRequest() { Assignee = _team.ToEntityReference(), Target = _leads[3].ToEntityReference() }); #endregion }
/// <summary> /// Creates any entity records that this sample requires. /// </summary> public void CreateRequiredRecords() { // Create a unique identifier for this sample for preventing name conflicts. var sampleIdentifier = Guid.NewGuid(); // Retrieve/create the system users to use for the sample. var ldapPath = String.Empty; _systemUserIds = SystemUserProvider.RetrieveDelegates( _serviceProxy, ref ldapPath); // Retrieve the root business unit to use for creating the team for the // sample. var businessUnitQuery = new QueryExpression { EntityName = BusinessUnit.EntityLogicalName, ColumnSet = new ColumnSet("businessunitid"), Criteria = new FilterExpression() }; businessUnitQuery.Criteria.AddCondition("parentbusinessunitid", ConditionOperator.Null); var businessUnitResult = _serviceProxy.RetrieveMultiple(businessUnitQuery); var businessUnit = businessUnitResult.Entities[0].ToEntity<BusinessUnit>(); // Get the GUID of the current user. var who = new WhoAmIRequest(); var whoResponse = (WhoAmIResponse)_serviceProxy.Execute(who); _currentUserId = whoResponse.UserId; // Create a team for use in the sample. var team = new Team { AdministratorId = new EntityReference( "systemuser", _currentUserId), Name = String.Format("User Access Sample Team {0}", sampleIdentifier), BusinessUnitId = businessUnit.ToEntityReference() }; _teamId = _serviceProxy.Create(team); // Add the second user to the newly created team. var addToTeamRequest = new AddMembersTeamRequest { TeamId = _teamId, MemberIds = new[] { _systemUserIds[1] } }; _serviceProxy.Execute(addToTeamRequest); // Create a lead for use in the sample. var lead = new Lead { CompanyName = "User Access Sample Company", FirstName = "Sample", LastName = "Lead", Subject = "User Access Sample Lead", }; _leadId = _serviceProxy.Create(lead); // Create a task to associate to the lead. var leadReference = new EntityReference(Lead.EntityLogicalName, _leadId); var task = new Task { Subject = "User Access Sample Task", RegardingObjectId = leadReference }; _taskId = _serviceProxy.Create(task); // Create a letter to associate to the lead. var letter = new Letter { Subject = "User Access Sample Letter", RegardingObjectId = leadReference }; _serviceProxy.Create(letter); }
public void Run(ServerConnection.Configuration serverConfig, bool promptForDelete) { try { // Connect to the Organization service. // The using statement assures that the service proxy will be properly disposed. using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials)) { String ldapPath = String.Empty; Guid businessUnitId; // This statement is required to enable early-bound type support. _serviceProxy.EnableProxyTypes(); // Call this method to create any data that this sample requires. CreateRequiredRecords(); // Retrieve the sales people that will be added to the team. salesPersons = SystemUserProvider.RetrieveSalespersons(_serviceProxy, ref ldapPath); // Get the ID's of the current user and business unit. var who = new WhoAmIRequest(); var whoResponse = (WhoAmIResponse)_serviceProxy.Execute(who); _currentUserId = whoResponse.UserId; businessUnitId = whoResponse.BusinessUnitId; // Create a access team. var team = new Team { AdministratorId = new EntityReference( "systemuser", _currentUserId), Name = "UserAccess Test Team", BusinessUnitId = new EntityReference( "businessunit", businessUnitId), TeamType = new OptionSetValue((int)TeamTeamType.Access), }; _teamId = _serviceProxy.Create(team); Console.WriteLine("Created an access team named '{0}'.", team.Name); // Add two sales people to the access team. var addToTeamRequest = new AddMembersTeamRequest { TeamId = _teamId, MemberIds = new[] { salesPersons[0], salesPersons[1] } }; _serviceProxy.Execute(addToTeamRequest); Console.WriteLine("Added two sales people to the team."); // Grant the team read/write access to an account. var accountReference = new EntityReference(Account.EntityLogicalName, _accountId); var teamReference = new EntityReference(Team.EntityLogicalName, _teamId); var grantAccessRequest = new GrantAccessRequest { PrincipalAccess = new PrincipalAccess { AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess, Principal = teamReference }, Target = accountReference }; _serviceProxy.Execute(grantAccessRequest); Console.WriteLine("Granted read/write access on the account record to the team."); // Retrieve and display access information for the account. RetrieveAndDisplayEntityAccess(accountReference); // Display the account access for the team and its members. var currentUserReference = new EntityReference( SystemUser.EntityLogicalName, _currentUserId); RetrieveAndDisplayPrincipalAccess(accountReference, currentUserReference, "Current User"); var firstSalesPersonReference = new EntityReference( SystemUser.EntityLogicalName, salesPersons[0]); RetrieveAndDisplayPrincipalAccess(accountReference, firstSalesPersonReference, "Sales Person"); var secondSalesPersonReference = new EntityReference( SystemUser.EntityLogicalName, salesPersons[1]); RetrieveAndDisplayPrincipalAccess(accountReference, secondSalesPersonReference, "Sales Person"); // Delete all records created by this sample. DeleteRequiredRecords(promptForDelete); } } // Catch any service fault exceptions that Microsoft Dynamics CRM throws. catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> ) { // You can handle an exception here or pass it back to the calling method. throw; } }
private void ImportAndAddButton_Click(object sender, EventArgs e) { ResultTextBox.Text = string.Empty; if (TeamBusinessUnitSelectionOptionset.SelectedIndex == -1)//Nothing selected { MessageBox.Show("Please select Team ", "Error"); return; } progressBar1.Minimum = 0; progressBar1.Maximum = 100; progressBar1.Value = 10; List <ProcessCSV> listA = new List <ProcessCSV>(); string Location = FileLocationTextBox.Text; using (var reader = new System.IO.StreamReader(Location)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); listA.Add(new ProcessCSV { emailuser = values[0] }); progressBar1.Value = 20; } progressBar1.Value = 30; } string text = string.Empty; int userCount = 0; progressBar1.Minimum = 0; progressBar1.Maximum = 100; EntityCollection UserEmails = new EntityCollection(); var fetchXml = "<fetch>" + "<entity name='systemuser'>" + "<filter>" + "<condition attribute='domainname' operator='in'>"; foreach (ProcessCSV email in listA) { userCount++; progressBar1.Value = 40; if (userCount > 200) { MessageBox.Show("This tool can process only first 200 Records"); //System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE=""JavaScript"">alert("Hello this is an Alert")</SCRIPT>"); goto BreakLoop; } fetchXml += "<value>" + email.emailuser + "</value>"; } BreakLoop: //timer1.Interval = userCount; fetchXml += "</condition>" + "</filter>" + "</entity>" + "</fetch> "; EntityCollection userCollection = new EntityCollection(); try { userCollection = Service.RetrieveMultiple(new FetchExpression(fetchXml)); } catch (Exception ex) { progressBar1.Value = 10; throw new InvalidPluginExecutionException(ex.Message + "As you have provided Invalid CSV file"); } try { progressBar1.Value = 50; // MessageBox.Show(userCollection.Entities.Count.ToString()); string ResultedString = "Below Users are Added Sucessfully to " + TeamBusinessUnitSelectionOptionset.Text + " " + System.Environment.NewLine; Guid[] members = new Guid[userCollection.Entities.Count]; if (AssignmentcomboBox.SelectedIndex == 0) { if (checkbox == true && userCollection.Entities.Count > 0) { progressBar1.Value = 70; // Instantiate QueryExpression QEsystemuser var QEsystemuser = new QueryExpression("systemuser"); // Add columns to QEsystemuser.ColumnSet QEsystemuser.ColumnSet.AddColumns("systemuserid"); // Add link-entity QEsystemuser_teammembership var QEsystemuser_teammembership = QEsystemuser.AddLink("teammembership", "systemuserid", "systemuserid"); // Define filter QEsystemuser_teammembership.LinkCriteria QEsystemuser_teammembership.LinkCriteria.AddCondition("teamid", ConditionOperator.Equal, teamToBeassign); EntityCollection usersToBeremoveCollection = Service.RetrieveMultiple(QEsystemuser); Guid[] removeMembers = new Guid[usersToBeremoveCollection.Entities.Count]; for (int i = 0; i < usersToBeremoveCollection.Entities.Count; i++) { removeMembers[i] = (Guid)usersToBeremoveCollection.Entities[i].Attributes["systemuserid"]; } // Create the AddMembersTeamRequest object. RemoveMembersTeamRequest addRequest2 = new RemoveMembersTeamRequest(); // Set the AddMembersTeamRequest TeamID property to the object ID of // an existing team. addRequest2.TeamId = EntityToBeassign; // Set the AddMembersTeamRequest MemberIds property to an // array of GUIDs that contains the object IDs of one or more system users. addRequest2.MemberIds = removeMembers; // Execute the request. Service.Execute(addRequest2); } //timer1.Start(); if (userCount == userCollection.Entities.Count || userCount == 201) { for (int i = 0; i < userCollection.Entities.Count; i++) { progressBar1.Value = 60; //MessageBox.Show(userCollection.Entities[i].Id.ToString()); members[i] = (Guid)userCollection.Entities[i].Attributes["systemuserid"]; //MessageBox.Show(i.ToString()); ResultedString += (userCollection.Entities[i].Attributes["fullname"]).ToString().ToUpper() + "" + System.Environment.NewLine; // textBox1.Text += (Guid)userCollection.Entities[i].Attributes["systemuserid"]; } if (EntityToBeassign != Guid.Empty && members.Length != 0) { progressBar1.Value = 90; // Create the AddMembersTeamRequest object. AddMembersTeamRequest addRequest = new AddMembersTeamRequest(); // Set the AddMembersTeamRequest TeamID property to the object ID of // an existing team. addRequest.TeamId = EntityToBeassign; // Set the AddMembersTeamRequest MemberIds property to an // array of GUIDs that contains the object IDs of one or more system users. addRequest.MemberIds = members; // Execute the request. Service.Execute(addRequest); progressBar1.Value = 100; ResultTextBox.Text = ResultedString; MessageBox.Show("Task completed Sucessfully", "sucess"); // progressBar1.ForeColor = Color.Black; } } else { progressBar1.Value = 10; MessageBox.Show("Task Could Not Be completed (Please check csv file)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); //progressBar1.ForeColor= Color.Black; } } else { if (userCount == userCollection.Entities.Count || userCount == 201) { if (EntityToBeassign != Guid.Empty && members.Length != 0) { foreach (Entity user in userCollection.Entities) { progressBar1.Value = 90; SetBusinessSystemUserRequest changeUserBURequest = new SetBusinessSystemUserRequest(); changeUserBURequest.BusinessId = EntityToBeassign; changeUserBURequest.UserId = user.Id; changeUserBURequest.ReassignPrincipal = new EntityReference("systemuser", user.Id); Service.Execute(changeUserBURequest); } for (int i = 0; i < userCollection.Entities.Count; i++) { progressBar1.Value = 60; //MessageBox.Show(userCollection.Entities[i].Id.ToString()); members[i] = (Guid)userCollection.Entities[i].Attributes["systemuserid"]; //MessageBox.Show(i.ToString()); ResultedString += (userCollection.Entities[i].Attributes["fullname"]).ToString().ToUpper() + "" + System.Environment.NewLine; } progressBar1.Value = 100; ResultTextBox.Text = ResultedString; MessageBox.Show("Task completed Sucessfully", "sucess"); // progressBar1.ForeColor = Color.Black; } } else { progressBar1.Value = 10; MessageBox.Show("Task Could Not Be completed (Please check csv file)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); //progressBar1.ForeColor= Color.Black; } } //timer1.Start(); // MessageBox.Show("TaskCompleted total "+userCount+" users are added to "+TeamSelectorOptionset.Text); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// Creates any entity records that this sample requires. /// </summary> public void CreateRequiredRecords() { // Create a unique identifier for this sample for preventing name conflicts. var sampleIdentifier = Guid.NewGuid(); // Retrieve/create the system users to use for the sample. var ldapPath = String.Empty; _systemUserIds = SystemUserProvider.RetrieveDelegates( _serviceProxy, ref ldapPath); // Retrieve the root business unit to use for creating the team for the // sample. var businessUnitQuery = new QueryExpression { EntityName = BusinessUnit.EntityLogicalName, ColumnSet = new ColumnSet("businessunitid"), Criteria = new FilterExpression() }; businessUnitQuery.Criteria.AddCondition("parentbusinessunitid", ConditionOperator.Null); var businessUnitResult = _serviceProxy.RetrieveMultiple(businessUnitQuery); var businessUnit = businessUnitResult.Entities[0].ToEntity <BusinessUnit>(); // Get the GUID of the current user. var who = new WhoAmIRequest(); var whoResponse = (WhoAmIResponse)_serviceProxy.Execute(who); _currentUserId = whoResponse.UserId; // Create a team for use in the sample. var team = new Team { AdministratorId = new EntityReference( "systemuser", _currentUserId), Name = String.Format("User Access Sample Team {0}", sampleIdentifier), BusinessUnitId = businessUnit.ToEntityReference() }; _teamId = _serviceProxy.Create(team); // Add the second user to the newly created team. var addToTeamRequest = new AddMembersTeamRequest { TeamId = _teamId, MemberIds = new[] { _systemUserIds[1] } }; _serviceProxy.Execute(addToTeamRequest); // Create a lead for use in the sample. var lead = new Lead { CompanyName = "User Access Sample Company", FirstName = "Sample", LastName = "Lead", Subject = "User Access Sample Lead", }; _leadId = _serviceProxy.Create(lead); // Create a task to associate to the lead. var leadReference = new EntityReference(Lead.EntityLogicalName, _leadId); var task = new Task { Subject = "User Access Sample Task", RegardingObjectId = leadReference }; _taskId = _serviceProxy.Create(task); // Create a letter to associate to the lead. var letter = new Letter { Subject = "User Access Sample Letter", RegardingObjectId = leadReference }; _serviceProxy.Create(letter); }
public void Run(ServerConnection.Configuration serverConfig, bool promptForDelete) { try { // Connect to the Organization service. // The using statement assures that the service proxy will be properly disposed. using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials)) { String ldapPath = String.Empty; Guid businessUnitId; // This statement is required to enable early-bound type support. _serviceProxy.EnableProxyTypes(); // Call this method to create any data that this sample requires. CreateRequiredRecords(); // Retrieve the sales people that will be added to the team. salesPersons = SystemUserProvider.RetrieveSalespersons(_serviceProxy, ref ldapPath); // Get the ID's of the current user and business unit. var who = new WhoAmIRequest(); var whoResponse = (WhoAmIResponse)_serviceProxy.Execute(who); _currentUserId = whoResponse.UserId; businessUnitId = whoResponse.BusinessUnitId; //<snippetCreateAndShareAccessTeam1> // Create a access team. var team = new Team { AdministratorId = new EntityReference( "systemuser", _currentUserId), Name = "UserAccess Test Team", BusinessUnitId = new EntityReference( "businessunit", businessUnitId), TeamType = new OptionSetValue((int)TeamTeamType.Access), }; _teamId = _serviceProxy.Create(team); Console.WriteLine("Created an access team named '{0}'.", team.Name); // Add two sales people to the access team. var addToTeamRequest = new AddMembersTeamRequest { TeamId = _teamId, MemberIds = new[] { salesPersons[0], salesPersons[1] } }; _serviceProxy.Execute(addToTeamRequest); Console.WriteLine("Added two sales people to the team."); // Grant the team read/write access to an account. var accountReference = new EntityReference(Account.EntityLogicalName, _accountId); var teamReference = new EntityReference(Team.EntityLogicalName, _teamId); var grantAccessRequest = new GrantAccessRequest { PrincipalAccess = new PrincipalAccess { AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess, Principal = teamReference }, Target = accountReference }; _serviceProxy.Execute(grantAccessRequest); Console.WriteLine("Granted read/write access on the account record to the team."); //</snippetCreateAndShareAccessTeam1> // Retrieve and display access information for the account. RetrieveAndDisplayEntityAccess(accountReference); // Display the account access for the team and its members. var currentUserReference = new EntityReference( SystemUser.EntityLogicalName, _currentUserId); RetrieveAndDisplayPrincipalAccess(accountReference, currentUserReference, "Current User"); var firstSalesPersonReference = new EntityReference( SystemUser.EntityLogicalName, salesPersons[0]); RetrieveAndDisplayPrincipalAccess(accountReference, firstSalesPersonReference, "Sales Person"); var secondSalesPersonReference = new EntityReference( SystemUser.EntityLogicalName, salesPersons[1]); RetrieveAndDisplayPrincipalAccess(accountReference, secondSalesPersonReference, "Sales Person"); // Delete all records created by this sample. DeleteRequiredRecords(promptForDelete); } } // Catch any service fault exceptions that Microsoft Dynamics CRM throws. catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>) { // You can handle an exception here or pass it back to the calling method. throw; } }
[STAThread] // Added to support UX static void Main(string[] args) { CrmServiceClient service = null; try { service = SampleHelpers.Connect("Connect"); if (service.IsReady) { #region Sample Code ////////////////////////////////////////////// #region Set up SetUpSample(service); #endregion Set up #region Demonstrate // Retrieve the sales people that will be added to the team. salesPersons = SystemUserProvider.RetrieveSalespersons(service, ref ldapPath); // Get the ID's of the current user and business unit. var who = new WhoAmIRequest(); var whoResponse = (WhoAmIResponse)service.Execute(who); _currentUserId = whoResponse.UserId; businessUnitId = whoResponse.BusinessUnitId; // Create a access team. var team = new Team { AdministratorId = new EntityReference( "systemuser", _currentUserId), Name = "UserAccess Test Team", BusinessUnitId = new EntityReference( "businessunit", businessUnitId), TeamType = new OptionSetValue((int)TeamTeamType.Access), }; _teamId = service.Create(team); Console.WriteLine("Created an access team named '{0}'.", team.Name); // Add two sales people to the access team. var addToTeamRequest = new AddMembersTeamRequest { TeamId = _teamId, MemberIds = new[] { salesPersons[0], salesPersons[1] } }; service.Execute(addToTeamRequest); Console.WriteLine("Added two sales people to the team."); // Grant the team read/write access to an account. var accountReference = new EntityReference(Account.EntityLogicalName, _accountId); var teamReference = new EntityReference(Team.EntityLogicalName, _teamId); var grantAccessRequest = new GrantAccessRequest { PrincipalAccess = new PrincipalAccess { AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess, Principal = teamReference }, Target = accountReference }; service.Execute(grantAccessRequest); Console.WriteLine("Granted read/write access on the account record to the team."); // Retrieve and display access information for the account. RetrieveAndDisplayEntityAccess(service, accountReference); // Display the account access for the team and its members. var currentUserReference = new EntityReference( SystemUser.EntityLogicalName, _currentUserId); RetrieveAndDisplayPrincipalAccess(service, accountReference, currentUserReference, "Current User"); var firstSalesPersonReference = new EntityReference( SystemUser.EntityLogicalName, salesPersons[0]); RetrieveAndDisplayPrincipalAccess(service, accountReference, firstSalesPersonReference, "Sales Person"); var secondSalesPersonReference = new EntityReference( SystemUser.EntityLogicalName, salesPersons[1]); RetrieveAndDisplayPrincipalAccess(service, accountReference, secondSalesPersonReference, "Sales Person"); #region Clean up CleanUpSample(service); #endregion Clean up } #endregion Demonstrate else { const string UNABLE_TO_LOGIN_ERROR = "Unable to Login to Common Data Service"; if (service.LastCrmError.Equals(UNABLE_TO_LOGIN_ERROR)) { Console.WriteLine("Check the connection string values in cds/App.config."); throw new Exception(service.LastCrmError); } else { throw service.LastCrmException; } } } #endregion Sample Code catch (Exception ex) { SampleHelpers.HandleException(ex); } finally { if (service != null) { service.Dispose(); } Console.WriteLine("Press <Enter> to exit."); Console.ReadLine(); } }
/// <summary> /// Creates any entity records that this sample requires. /// </summary> public void CreateRequiredRecords() { #region create users Console.WriteLine(" Creating users"); var ldapPath = ""; _users = SystemUserProvider.RetrieveSalespersons(_serviceProxy, ref ldapPath); _users.Add(SystemUserProvider.RetrieveSystemUser( "dparker", "Darren", "Parker", "Salesperson", _serviceProxy, ref ldapPath)); #endregion #region fetch root business unit // Retrieve the root business unit to use for creating the team for the // sample. var businessUnitQuery = new QueryExpression { EntityName = BusinessUnit.EntityLogicalName, ColumnSet = new ColumnSet("businessunitid"), Criteria = new FilterExpression() }; businessUnitQuery.Criteria.AddCondition("parentbusinessunitid", ConditionOperator.Null); var businessUnitResult = _serviceProxy.RetrieveMultiple(businessUnitQuery); _rootBusinessUnit = businessUnitResult.Entities[0].ToEntity<BusinessUnit>(); #endregion #region create new business unit Console.WriteLine(" Creating new business unit"); _buisnessUnit = new BusinessUnit() { Name = "A Sample Business Unit", ParentBusinessUnitId = _rootBusinessUnit.ToEntityReference() }; _buisnessUnit.Id = _serviceProxy.Create(_buisnessUnit); #endregion #region create team Console.WriteLine(" Creating a user team"); _team = new Team { AdministratorId = new EntityReference(SystemUser.EntityLogicalName, _users[0]), Name = "Sample team", BusinessUnitId = _rootBusinessUnit.ToEntityReference() }; _team.Id = _serviceProxy.Create(_team); var salespersonRole = (from role in _context.RoleSet where role.Name == "Salesperson" && role.BusinessUnitId.Id == _rootBusinessUnit.Id select role).First(); // assign role to the team _serviceProxy.Associate( Team.EntityLogicalName, _team.Id, new Relationship("teamroles_association"), new EntityReferenceCollection() { salespersonRole.ToEntityReference() } ); // wait for the async job to finish for (int i = 1; i <= 30; i++) { Console.WriteLine(" Checking to see if the async job has finished {0}/30", i); var teamPrivileges = (RetrieveTeamPrivilegesResponse) _serviceProxy.Execute(new RetrieveTeamPrivilegesRequest { TeamId = _team.Id }); if (teamPrivileges.RolePrivileges.Any((rp) => rp.PrivilegeId == new Guid("A8ECAC53-09E8-4A13-B598-8D8C87BC3D33"))) // prvReadLead { break; } System.Threading.Thread.Sleep(1000); } #endregion #region add users to team Console.WriteLine(" Adding users to the team"); AddMembersTeamRequest addMembers = new AddMembersTeamRequest() { TeamId = _team.Id, MemberIds = new Guid[] { _users[0], _users[1] } }; _serviceProxy.Execute(addMembers); #endregion #region create leads Console.WriteLine(" Creating leads"); _leads[0] = new Lead { CompanyName = "A. Datum Corporation", FirstName = "Joe", LastName = "Andreshak", }; _leads[0].Id = _serviceProxy.Create(_leads[0]); _leads[1] = new Lead { CompanyName = "Wingtip Toys", FirstName = "Diogo", LastName = "Andrade" }; _leads[1].Id = _serviceProxy.Create(_leads[1]); _leads[2] = new Lead { CompanyName = "The Phone Company", FirstName = "Ronaldo", LastName = "Smith Jr." }; _leads[2].Id = _serviceProxy.Create(_leads[2]); _leads[3] = new Lead { CompanyName = "Tailspin Toys", FirstName = "Andrew", LastName = "Sullivan", }; _leads[3].Id = _serviceProxy.Create(_leads[3]); #endregion #region assign leads Console.WriteLine(" Assigning leads to users and teams"); _serviceProxy.Execute(new AssignRequest() { Assignee = new EntityReference(SystemUser.EntityLogicalName, _users[0]), Target = _leads[0].ToEntityReference() }); _serviceProxy.Execute(new AssignRequest() { Assignee = new EntityReference(SystemUser.EntityLogicalName, _users[1]), Target = _leads[1].ToEntityReference() }); _serviceProxy.Execute(new AssignRequest() { Assignee = new EntityReference(SystemUser.EntityLogicalName, _users[2]), Target = _leads[2].ToEntityReference() }); // give the team access to the record so that it can be assigned to it _serviceProxy.Execute(new GrantAccessRequest() { Target = _leads[3].ToEntityReference(), PrincipalAccess = new PrincipalAccess() { AccessMask = AccessRights.ReadAccess|AccessRights.WriteAccess, Principal = _team.ToEntityReference() } }); // assign the lead to the team _serviceProxy.Execute(new AssignRequest() { Assignee = _team.ToEntityReference(), Target = _leads[3].ToEntityReference() }); #endregion }
public void ExecuteTest() { // // Arrange // Guid actualUserId = Guid.NewGuid(); Guid actualTeamId = Guid.NewGuid(); var workflowUserId = Guid.NewGuid(); var workflowCorrelationId = Guid.NewGuid(); var workflowInitiatingUserId = Guid.NewGuid(); // IOrganizationService var service = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationService(); service.ExecuteOrganizationRequest = r => { AddMembersTeamRequest request = r as AddMembersTeamRequest; actualUserId = request.MemberIds[0]; actualTeamId = request.TeamId; return(new AddMembersTeamResponse()); }; // IWorkflowContext var workflowContext = new Microsoft.Xrm.Sdk.Workflow.Fakes.StubIWorkflowContext(); workflowContext.UserIdGet = () => { return(workflowUserId); }; workflowContext.CorrelationIdGet = () => { return(workflowCorrelationId); }; workflowContext.InitiatingUserIdGet = () => { return(workflowInitiatingUserId); }; // ITracingService var tracingService = new Microsoft.Xrm.Sdk.Fakes.StubITracingService(); tracingService.TraceStringObjectArray = (f, o) => { Debug.WriteLine(f, o); }; // IOrganizationServiceFactory var factory = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationServiceFactory(); factory.CreateOrganizationServiceNullableOfGuid = id => { return(service); }; var expectedUserId = Guid.NewGuid(); var expectedTeamId = Guid.NewGuid(); AddMemberTeamActivity target = new AddMemberTeamActivity(); using (ShimsContext.Create()) { var fakeTarget = new DynamicsCRMUnitTest.Workflow.Fakes.ShimAddMemberTeamActivity(target); fakeTarget.IsMemberInTeamIOrganizationServiceGuidGuid = (svc, teamId, memberId) => { return(false); }; var invoker = new WorkflowInvoker(target); invoker.Extensions.Add <ITracingService>(() => tracingService); invoker.Extensions.Add <IWorkflowContext>(() => workflowContext); invoker.Extensions.Add <IOrganizationServiceFactory>(() => factory); var inputs = new Dictionary <string, object> { { "User", new EntityReference("systemuser", expectedUserId) }, { "Team", new EntityReference("team", expectedTeamId) } }; // // Act // var outputs = invoker.Invoke(inputs); } // // Assert // Assert.AreEqual(expectedUserId, actualUserId); Assert.AreEqual(expectedTeamId, actualTeamId); }