FrameworkTemplate/SolutionTemplate/Plugins/Users/SamplePlugin.cs

using Microsoft.Xrm.Sdk;
using System;
using Common;
using Entities;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AddName.Users

{
    [CrmPluginRegistration("Update",
    "systemuser", StageEnum.PreOperation, ExecutionModeEnum.Synchronous,
    "employeeid", "Users_SetEmployeeID on Pre Op Update", 1,
    IsolationModeEnum.Sandbox
    , Image1Type = ImageTypeEnum.PreImage
    , Image1Name = "PreImage"
    , Image1Attributes = "employeeid,domainname"
    , Description = "Sets the employee ID to the local-part of the email/username"
    , Id = "D0EED135-76FE-4BCA-BBA1-2435EBBBA6DA"
    )]
    [CrmPluginRegistration("Create",
    "systemuser", StageEnum.PreOperation, ExecutionModeEnum.Synchronous,
    "", "Users_SetEmployeeID on Pre Op Create", 1,
    IsolationModeEnum.Sandbox
    , Description = "Sets the employee ID to the local-part of the email/username"
    , Id = "4081D6EF-885B-43A4-89AA-F3F35F7C1057"
    )]
    public class SamplePlugin : BasePlugin
    {
        protected override void Execute(LocalPluginContext localcontext)
        {
            localcontext.Trace($"Entered Plugins.User.SamplePlugin.Execute {DateTime.UtcNow}");

            var user = localcontext.PluginExecutionContext.GetTarget<SystemUser>();
            var domainName = ImageHelpers.GetFinalAttribute(localcontext.PluginExecutionContext, "domainname", ImageHelpers.PreEntityImageName)?.ToString();

            var index = domainName?.IndexOf('@');
            user.EmployeeId = domainName?.Substring(0, index > 0 ? index.Value : 0);

            localcontext.Trace($"Exited Plugins.User.SamplePlugin.Execute {DateTime.UtcNow}");
        }
    }
}