The following Microsoft Visual Basic and C# examples show how to provision an object for a user in an organizational unit. The _MMS_UseAdminP property is set to true to create the e-mail account from the AdminP process. The mail template is specified in the _MMS_MailTemplateName property value. The number of days before the certificate expires is set to 5. The mail size limit is set to 4 MB, and the mail warning threshold is set to 3 MB. The mail template file is statrep5.ntf.

The organizational unit is accounting. The identification file is stored as an attachment, and the password for the identification file is "FilePassword". The user accesses e-mail through the Lotus Notes client.

Note:
Change the value of the Lotus Notes Properties property to a different value than the value that is shown in the code example.

If you are referencing a file that is located in a folder for the DN value, such as the file for the Notes Address Book (NAB) value, use a forward slash (/) to separate the folder name from the file name: for example, folder/file name.

The following examples show how to provision an object for a user in an organizational unit.

Visual Basic  Copy Code
Imports Microsoft.MetadirectoryServices

Public Class MVExtensionObject
	Implements IMVSynchronization

	Public Sub Initialize() Implements IMvSynchronization.Initialize

		' TODO: Add initialization code here.
	End Sub

	Public Sub Terminate() Implements IMvSynchronization.Terminate

		' TODO: Add termination code here.
	End Sub

	Public Sub Provision(ByVal mventry As MVEntry) Implements IMVSynchronization.Provision
		Dim ManagementAgent As ConnectedMA
		Dim Connectors As Integer
		Dim csentry As CSEntry
		Dim DNName As String
		Dim DNCertifier As String = "O=Main"

		If mventry("EmployeeStatus").IsPresent _
			AndAlso mventry("EmployeeStatus").Value.Equals("active") Then

			ManagementAgent = mventry.ConnectedMAs("Lotus Notes MA")
			Connectors = ManagementAgent.Connectors.Count

			If 0 = Connectors Then
				csentry = ManagementAgent.Connectors.StartNewConnector("person")
				DNName = mventry("sn").Value

				If mventry("middleName").IsPresent Then
					DNName = mventry("middleName").Value + " " + DNName
				End If

				If mventry("givenName").IsPresent Then
					DNName = mventry("givenName").Value + " " + DNName
				End If

				DNName = DNName + "/" + DNCertifier

				' Set the property values to provision the object.
				csentry.DN = ManagementAgent.EscapeDNComponent("CN=" _
								+ DNName).Concat("NAB=names.nsf")

				csentry("LastName").Value = mventry("sn").Value
				csentry("_MMS_Certifier").Value = DNCertifier
				csentry("_MMS_IDRegType").IntegerValue = 1  ' US User
				csentry("_MMS_IDStoreType").IntegerValue = 1  ' ID File as an attachment
				csentry("_MMS_OU").Value = "accounting"  ' Organizational Unit is accounting

				' The next property must have a value for a user with an
				' identification file.
				csentry("_MMS_Password").Value = "FilePassword"

				' The next two properties must have a value for a user
				' to access e-mail through the Lotus Notes client.
				csentry("MailServer").Value = "CN=DominoServer/O=DominoDomain"
				csentry("MailFile").Value = "mail\" + mventry("uid").Value

				' The value of the _MMS_UseAdminP property by default 
				' is "false". If true, the provisioned users' specified
				' mailfile will be created by the AdminP process on the 
				' Notes server. If false, the mailfile is created with the
				' Notes user (i.e. <tla rid="fim_sync_short"/> 3.0 RTM behavior). 
				csentry("_MMS_UseAdminP").BooleanValue = True

				' The _MMS_MailTemplateName property indicates the mail 
				' template file to use when creating the users' mail 
				' file. If specified, the mail file is created using the 
				' template; if it is not specified, the default mail
				' template file is used to create the mailfile.
				csentry("_MMS_MailTemplateName").Value = "statrep5.ntf"

				' The _ MMS_CertDaysToExpire property is a string that 
				' indicates the number of days from today's date until the
				' certificates expiration date. The default value is 2 years
				' (current hardcoded behavior).
				csentry("_MMS_CertDaysToExpire").Value = "5"

				' _MMS_MailQuotaSizeLimit is a string 
				' indicating the number of megabytes for the
				' mailfile database size quota.
				csentry("_MMS_MailQuotaSizeLimit").Value = "4"

				' _MMS_MailQuotaWarningThreshold is a 
				' string that indicates the number of megabytes
				' before the warning is issued. 
				csentry("_MMS_MailQuotaWarningThreshold").Value = "3"

				'  Finish creating the new connector.
				csentry.CommitNewConnector()
			End If
		End If
	End Sub

	Public Function ShouldDeleteFromMV(ByVal csentry As CSEntry, _
			ByVal mventry As MVEntry) As Boolean Implements IMVSynchronization.ShouldDeleteFromMV
		' TODO: Add MV deletion code here
		Throw New EntryPointNotImplementedException()
	End Function
End Class
C#  Copy Code
using System;
using Microsoft.MetadirectoryServices;

namespace Mms_Metaverse
{
// summary
// Summary description for MVExtensionObject.
// summary
	public class MVExtensionObject : IMVSynchronization
	{
		public MVExtensionObject()
		{
			//
			// TODO: Add constructor logic here.
			//
	}

		void IMVSynchronization.Initialize ()
		{
			//
			// TODO: Add initialization logic here.
			//
	}

		void IMVSynchronization.Terminate ()
		{
			//
			// TODO: Add termination logic here.
			//
	}

		void IMVSynchronization.Provision(MVEntry mventry)
		{
			ConnectedMA ManagementAgent;
			int Connectors;
			CSEntry csentry;
			string DNName;
			string DNCertifier = "O=Main";

			if (mventry["EmployeeStatus"].IsPresent)
			{
				if (mventry["EmployeeStatus"].Value.Equals("active"))
				{
					ManagementAgent = mventry.ConnectedMAs["Lotus Notes MA"];
					Connectors = ManagementAgent.Connectors.Count;

					if (0 == Connectors)
					{
						csentry = ManagementAgent.Connectors.StartNewConnector("person");
						DNName = mventry["sn"].Value;

						if (mventry["middleName"].IsPresent)
						{
							DNName = mventry["middleName"].Value + " " + DNName;
					}

						if (mventry["givenName"].IsPresent)
						{
							DNName = mventry["givenName"].Value + " " + DNName;
					}

						DNName = DNName + "/" + DNCertifier;

						// Set the property values to provision the object.
						csentry.DN = ManagementAgent.EscapeDNComponent("CN="
										+ DNName).Concat("NAB=names.nsf");

						csentry["LastName"].Value = mventry["sn"].Value;
						csentry["_MMS_Certifier"].Value = DNCertifier;
						csentry["_MMS_IDRegType"].IntegerValue = 1;  // US User
						csentry["_MMS_IDStoreType"].IntegerValue = 1;  // ID File as an attachment
						csentry["_MMS_OU"].Value = "accounting";  // Organizational Unit is accounting

						// The next property must have a value for a user 
						// with an identification file.
						csentry["_MMS_Password"].Value = "FilePassword";

						// The next two properties must have a value for a 
						// user to access e-mail through the Lotus Notes client.
						csentry["MailServer"].Value = "CN=DominoServer/O=DominoDomain";
						csentry["MailFile"].Value = @"mail\" + mventry["uid"].Value;

						// The value of the _MMS_UseAdminP property by default 
						// is false. If "true" then it will cause the 
						// provisioned user's specified mailfile to be created
						// by the AdminP process on the Notes server. If 
						// not specified, the mailfile is created together with 
						// the Notes user (i.e. <tla rid="fim_sync_short"/> 3.0 RTM behavior).
						csentry["_MMS_UseAdminP"].BooleanValue = true;

						// The _MMS_MailTemplateName property indicates the 
						// mail template file to use when creating the users 
						// mail file. If specified, the mail file is created
						// using the template, if it is not specified, the 
						// default mail template file is used to create 
						// the mailfile.
						csentry["_MMS_MailTemplateName"].Value = "statrep5.ntf";

						// The _ MMS_CertDaysToExpire property is a string 
						// that indicates the number of days from today's date
						// for the certificates to expire. The default is 2 
						// years (current hardcoded behavior).
						csentry["_MMS_CertDaysToExpire"].Value = "5";

						// _MMS_MailQuotaSizeLimit - The string number of
						// megabytes for the mailfile database size quota.
						csentry["_MMS_MailQuotaSizeLimit"].Value = "4";

						// _MMS_MailQuotaWarningThreshold - The string number 
						// of megabytes before the warning is issued.
						csentry["_MMS_MailQuotaWarningThreshold"].Value = "3";

						//  Finish creating the new connector.
						csentry.CommitNewConnector();
				}
			}
		}
	}

		bool IMVSynchronization.ShouldDeleteFromMV (CSEntry csentry, MVEntry mventry)
		{
			//
			// TODO: Add MV deletion logic here
			//
			throw new EntryPointNotImplementedException();
	}
}
}

See Also