I need to create a batch of events that will appear in "User-defined events" in order to assign them in my plugin used in XProtect Management Client, but I cannot find any code in MIP SDK sampler or documentation on how to do that.

Here’s my Add-UserDefinedEvent PowerShell cmdlet as an example of doing this using the SDK components and strong typed Milestone objects:

using System;
using System.Management.Automation;
using VideoOS.Platform.ConfigurationItems;
 
namespace MilestonePSTools.EventCommands
{
    [Cmdlet(VerbsCommon.Add, nameof(UserDefinedEvent))]
    [OutputType(typeof(UserDefinedEvent))]
    public class AddUserDefinedEvent : ConfigApiCmdlet
    {
        [Parameter(Position = 1, Mandatory = true)]
        public string Name { get; set; }
 
        protected override void ProcessRecord()
        {
            try
            {
                var ms = new ManagementServer(Connection.CurrentSite.FQID.ServerId);
                var task = ms.UserDefinedEventFolder.AddUserDefinedEvent(Name);
                WriteObject(new UserDefinedEvent(Connection.CurrentSite.FQID.ServerId, task.Path));
            }
            catch (Exception ex)
            {
                WriteExceptionError(ex);
            }
        }
    }
}

​It can also be done using the Configuration API directly which is what these underlying types (ManagementServer, UserDefinedEventFolder and so on) are using under the surface.

Thank you for pointing out to use Management Server, tho code I came up with looks more like this:

var ms = new ManagementServer(EnvironmentManager.Instance.MasterSite.ServerId);
ms.UserDefinedEventFolder.AddUserDefinedEvent(name);

Although the “User Defined Events” list still need to be refreshed afterwards