Skip to content

Instantly share code, notes, and snippets.

@jkbryan
Last active October 14, 2017 21:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jkbryan/75867fcdc6fdbeef8bd6dacf0b7ca136 to your computer and use it in GitHub Desktop.
Save jkbryan/75867fcdc6fdbeef8bd6dacf0b7ca136 to your computer and use it in GitHub Desktop.
FIM/MIM - Email address creation with suffix validation
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
If mventry.Item("mail").IsPresent Then
If mventry.Item("provisionExchangeMailbox").Value.ToLower = "true" Then
'User is still entitled to an MBX...Calculate what suffix the user should have:
Dim mailSuffix As String = ""
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
'Does the suffix match?
If mventry.Item("mail").Value.ToLower.IndexOf(mailSuffix.ToLower) = -1 Then
'the suffix does not match, so raise an error!
'Throw New Exception("Wrong email suffix for user with email address: " & mventry("mail").Value & " , suffix should be " & mailSuffix)
Logging.Log("Wrong email suffix for user with email address: " & mventry("mail").Value & ", suffix should be " & mailSuffix, True, 0)
End If
Else
If mventry("mailEnable").IsPresent Then
If mventry("mailEnable").Value = "False" Then 'covers/ ignores island site people
'User is not entitled to an MBX...
Logging.Log("User no longer entitled to an MBX," & csentry("mail").Value, True, 0)
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