protected override void Execute(IWorkflowActivityContext context)
        {
            this.EnsureNotNull(context, nameof(context));

            var activityContext = context.GetExecutionContext();

            var email   = TargetEmail.Get(activityContext);
            var applyTo = ApplyTo.Get(activityContext);

            if (email == null)
            {
                return;
            }

            if (applyTo.IsNullOrWhiteSpace())
            {
                return;
            }

            var role = Role.Get(activityContext);
            var team = Team.Get(activityContext);

            if (role == null && team == null)
            {
                return;
            }

            var roleUsers = GetRoleUsers(context, role);

            context.TracingService.Trace($"Found {roleUsers?.Count()} for role {role?.Id}");

            var teamUsers = GetTeamUsers(context, team);

            context.TracingService.Trace($"Found {teamUsers?.Count()} for team {team?.Id}");

            var users = roleUsers.Union(teamUsers).ToArray();

            if (users.Any())
            {
                UpdateEmail(
                    context,
                    email,
                    applyTo,
                    users);
            }
        }