Created
October 15, 2017 17:38
-
-
Save jkbryan/e3663e55bbab54507d3d0dad2b34ef88 to your computer and use it in GitHub Desktop.
FIM/MIM - Defining a Unique Email Address
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Case "mail-ADMA-Export" | |
'MV attributes required are: provisionExchangeMailbox, firstName, sn, initials, company, orgSite, department | |
'Pump out attribute required for mailbox provision | |
If mventry.Item("provisionExchangeMailbox").IsPresent Then | |
If Not csentry.Item("mail").IsPresent Then 'Mail attribute is not present | |
If mventry.Item("provisionExchangeMailbox").Value.ToLower = "true" Then | |
'Lets start trying to generate a new email address for this user... | |
'Start calculating the suffix: | |
Dim mailSuffix As String = "" | |
Dim mailPrefix As String = "" | |
If mventry.Item("firstName").IsPresent And mventry.Item("sn").IsPresent Then | |
If mventry.Item("orgSite").IsPresent Then | |
If mventry.Item("orgSite").Value.ToLower = "oxford" Or mventry.Item("orgSite").Value.ToLower = "edinburgh" Then | |
mailSuffix = "@abcd.co.uk" | |
End If | |
End If | |
If mventry.Item("company").IsPresent Then | |
If mventry.Item("company").Value.ToLower = "abcd" Then | |
mailSuffix = "@abcd.co.uk" | |
ElseIf mventry.Item("company").Value.ToLower = "lmno" Then | |
mailSuffix = "@lmno.co.uk" | |
ElseIf mventry.Item("company").Value.ToLower = "wxyz" Then | |
mailSuffix = "@wxyz.co.uk" | |
End If | |
End If | |
If mventry.Item("department").IsPresent Then | |
If mventry.Item("department").Value.ToLower = "lmno" Then | |
mailSuffix = "@lmno.co.uk" | |
ElseIf mventry.Item("department").Value.ToLower = "pqrs" Then | |
mailSuffix = "@pqrs.co.uk" | |
End If | |
End If | |
'Next generate a prefix... | |
'1. firstname.lastname | |
mailPrefix = mventry.Item("firstName").Value & "." & mventry.Item("sn").Value | |
'Then go check if it has already been used by looking in the MV. | |
Dim AdminEntry1() As MVEntry = Utils.FindMVEntries("mail", mailPrefix & mailSuffix) | |
If AdminEntry1.Length = 0 Then | |
csentry.Item("mail").Value = mailPrefix & mailSuffix | |
ElseIf AdminEntry1.Length <> 0 Then | |
'That address is already used, so lets try creating a new prefix... | |
'2. firstname.initial.lastname | |
mailPrefix = mventry.Item("firstName").Value & "." & mventry.Item("initials").Value & "." & mventry.Item("sn").Value | |
Dim AdminEntry2() As MVEntry = Utils.FindMVEntries("mail", mailPrefix & mailSuffix) | |
If AdminEntry2.Length = 0 Then | |
csentry.Item("mail").Value = mailPrefix & mailSuffix | |
ElseIf AdminEntry2.Length <> 0 Then | |
'That address is already used, so lets try creating a new prefix... | |
'3. initials.lastname | |
mailPrefix = mventry.Item("initials").Value & "." & mventry.Item("sn").Value | |
Dim AdminEntry3() As MVEntry = Utils.FindMVEntries("mail", mailPrefix & mailSuffix) | |
If AdminEntry3.Length = 0 Then | |
csentry.Item("mail").Value = mailPrefix & mailSuffix | |
ElseIf AdminEntry3.Length <> 0 Then | |
'That address is already used, so lets try creating a new prefix... | |
'4. firstname.lastname<n> | |
Dim rnd As New Random() | |
Dim prefixNum As Integer = rnd.Next(1, 9) | |
mailPrefix = mventry.Item("firstName").Value & "." & mventry.Item("sn").Value & prefixNum | |
Dim AdminEntry4() As MVEntry = Utils.FindMVEntries("mail", mailPrefix & mailSuffix) | |
If AdminEntry4.Length = 0 Then | |
csentry.Item("mail").Value = mailPrefix & mailSuffix | |
ElseIf AdminEntry4.Length <> 0 Then | |
Throw New Exception("Unable to allocate Email Address") | |
End If | |
End If | |
End If | |
End If | |
End If | |
End If | |
End If | |
End If |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment