Skip to content

Instantly share code, notes, and snippets.

@muhammad-naderi
Created July 17, 2019 04:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save muhammad-naderi/cdf1ef63dfde131327a1cd2da28c1a45 to your computer and use it in GitHub Desktop.
Save muhammad-naderi/cdf1ef63dfde131327a1cd2da28c1a45 to your computer and use it in GitHub Desktop.
Dynamics365 - Check if a user exists in a team
using System.Activities;
using System.Linq;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;
namespace GeneralTools
{
public class UserExistsInTeam : CodeActivity
{
public IWorkflowContext context;
public IOrganizationServiceFactory serviceFactory;
public IOrganizationService service;
protected override void Execute(CodeActivityContext executionContext)
{
context = executionContext.GetExtension<IWorkflowContext>();
serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
service = serviceFactory.CreateOrganizationService(context.UserId);
var userEr = UserArgument.Get<EntityReference>(executionContext);
var teamEr = TeamArg.Get<EntityReference>(executionContext);
var teamUsers = GetTeamMembers(teamEr.Id, service);
var existence = teamUsers?.Entities?.ToList().Any(user => userEr.Id.Equals(user.Id)) ?? false;
ExistenceArg.Set(executionContext, existence);
}
private static EntityCollection GetTeamMembers(Guid teamGuid, IOrganizationService service)
{
var userQuery = new QueryExpression("systemuser");
userQuery.ColumnSet = new ColumnSet(true);
var teamLink = new LinkEntity("systemuser", "teammembership", "systemuserid", "systemuserid", JoinOperator.Inner);
var teamCondition = new ConditionExpression("teamid", ConditionOperator.Equal, teamGuid);
teamLink.LinkCriteria.AddCondition(teamCondition);
userQuery.LinkEntities.Add(teamLink);
var retrievedUsers = service.RetrieveMultiple(userQuery);
return retrievedUsers;
}
[Input("User")]
[ReferenceTarget("systemuser")]
[RequiredArgument]
public InArgument<EntityReference> UserArgument { get; set; }
[Input("Team")]
[ReferenceTarget("team")]
[RequiredArgument]
public InArgument<EntityReference> TeamArg { get; set; }
[Output("Exists")]
public OutArgument<bool> ExistenceArg { get; set; }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment