0 votes

Hello,

i have a custom command which sets the oof-message for the selected user. in this custom command i have a parameter "param-vertretung" (ad-object picker). Now i want to put the fullname, phone number and email from "param-vertretung" into the oof-message.

we want our users to select another user as a stand-in and then display the fullname, phone number and email of the stand-in in the oof-message. Can you help me with that? Thanks

by (1.1k points)
0

Hello,

Sorry for the confusion, but we are not sure we understand what exactly you need to achieve. Is it that you want to select multiple users in the Ad object picker parameter, get their property values (Full name, Phone number and Email) and add the values to the OOF message of the user? If that is correct, it can be done using a script that will get the values and use them to set the OOF message. For us to provide you with the script, please, specify what exactly the script should do. Should it only update the OOF message or also enable/schedule the feature?

If that is not what you need, please, describe the desired behavior in all the possible details with live examples.

0

Hello, thanks for the quick answer. i want the object picker to select only one user, and then put the property values of this user in the oof message. the scheduling of the message with date and time is also needed.

Example: User A will go on vacation. User A selects User B as a stand-in. User A chooses the beginning and ending of the oof message. in the oof message are the contact details (Full Name, Phone Number, Email) of the stand-in User B.

0

Hello,

User A selects User B as a stand-in. User A chooses the beginning and ending of the oof message. in the oof message are the contact details (Full Name, Phone Number, Email) of the stand-in User B.

Thank you for clarifying. What exactly do you mean by chooses the beginning and ending of the OOF message? Are they also specified via parameters? Could you, please, provide us with all the parameters that will take part in setting OOF message and how each of them should be used? A screenshot of the Custom Command parameters list will be very helpful. You can post it here or send to us (support[at]adaxes.com).

the scheduling of the message with date and time is also needed

How will the start date and end date be specified? Will it also be done via parameters?

0

image.png

This are the parameters in the custom command. param-Vertretung = Stand-in param-abw-beginn= start for oof message param-abw-ende= end of oof message

0

Hello,

Thank you for the provided details. Could you, also, please, specify what should be done if the user selected in the Vertretung parameter has no Phone Number or Email? Should the update be cancelled or the values should just be ignored during OOF enabling?

0

Hello,

the values should just be ignored, if the selected user has no Email or Phone Number. This would be just fine. Thanks.

1 Answer

0 votes
by (189k points)

Hello,

Thank you for the provided details. Your Custom command should look like the following: image.png In the command, use the below script. In the script:

  • $phoneNumberPropertyName - Specifies the LDAP name of the property that will be used to obtain the mobile number of the user specified in the parameter.
  • $userParameterName - Specifies the name of the parameter for selecting a user with the param- prefix.
  • $oofStartDateParameterName - Specifies the name of the parameter for selecting the OOF schedule start date with the param- prefix.
  • $oofEndDateParameterName - Specifies the name of the parameter for selecting the OOF schedule end date with the param- prefix.
  • $oofMessageTemplate - Specifies a template of the OOF message that will be set. In the template, placeholders {0}, {1}, {2} and {3} will be replaced with the OOF schedule end date, full name, phone number and email address of the selected user accordingly.
$phoneNumberPropertyName = "telephoneNumber" # TODO: modify me
$userParameterName = "param-Vertretung" # TODO: modify me
$oofStartDateParameterName = "param-abw-beginn" # TODO: modify me
$oofEndDateParameterName = "param-abw-ende" # TODO: modify me
$oofMessageTemplate = "I am on vacation until {0} 
and will not see your message until then. 
Your message sits safely in my Inbox awaiting my return.
If you need immediate assistance, please contact {1} at {2} {3}." # TODO: modify me

# Bind to the source user
$userDN = $Context.GetParameterValue($userParameterName)
$user = $Context.BindToObjectByDN($userDN)

# Get source user full name
$fullName = $user.Get("cn")

# Get source user phone number
try
{
    $phoneNumber = $user.Get($phoneNumberPropertyName)
}
catch
{
    $phoneNumber = $NULL
}

# Get source user email
try
{
    $email = $user.Get("mail")
}
catch
{
    $email = $NULL
}

# Create an instance of the 'AdmExchangeMailboxParameters' class
$mailboxParams = New-Object "Softerra.Adaxes.Adsi.Exchange.AdmExchangeMailboxParameters"

# Schedule OOF
$automaticReplies = $mailboxParams.AutoReplyConfiguration
$automaticReplies.AutoReplyState = "ADM_EXCHANGE_OOFSTATETYPE_SCHEDULED"

$startTime = $Context.Arguments.GetParameterValueAsIs($oofStartDateParameterName)
$automaticReplies.StartTime = $startTime

$endTime = $Context.Arguments.GetParameterValueAsIs($oofEndDateParameterName)
$automaticReplies.EndTime = $endTime

$endDate = $endTime.ToShortDateString()
$oofMessage = [System.String]::Format($oofMessageTemplate, @($endDate, $fullName, $phoneNumber, $email))

# Internal message
$automaticReplies.InternalMessage = $oofMessage

# External message
$automaticReplies.ExternalAudience = "ADM_EXCHANGE_EXTERNALAUDIENCETYPE_ALL"
$automaticReplies.ExternalMessage = $oofMessage
$mailboxParams.AutoReplyConfiguration = $automaticReplies

# Save changes
$targetUser = $Context.BindToObjectByDNEx("%distinguishedName%", $True)
$targetUser.SetMailParameters($mailboxParams, "ADM_SET_EXCHANGE_PARAMS_FLAGS_RESOLVEVALUEREFERENCES")
0

Hello,

it works fine, but one little problem showed up. The CN of our users is in the format "lastname.firstname". In the OOF-message should be "givenName SN" Is it possible to change the script, so we get "givenName SN" ? Except from that, it is exactly what we want. Thanks

0

Hello,

The thing is that the Full Name (LDAP name cn) property is mandatory in AD and cannot be empty (and you have it formatted as lastname.firstname). At the same time First Name (LDAP name givenName) and Last Name (LDAP name sn) can be empty. We can update the script to use the properties instead, but what should be done if either of them or both are empty?

0

Hello,

both attributes (givenName, SN) are mandatory in our company. In every user both fields are filled.

0

Hello, Thank you for the confirmation. Here is the updated script.

$phoneNumberPropertyName = "telephoneNumber" # TODO: modify me
$userParameterName = "param-Vertretung" # TODO: modify me
$oofStartDateParameterName = "param-abw-beginn" # TODO: modify me
$oofEndDateParameterName = "param-abw-ende" # TODO: modify me
$oofMessageTemplate = "I am on vacation until {0} 
and will not see your message until then. 
Your message sits safely in my Inbox awaiting my return.
If you need immediate assistance, please contact {1} {2} at {3} {4}." # TODO: modify me

# Bind to the source user
$userDN = $Context.GetParameterValue($userParameterName)
$user = $Context.BindToObjectByDN($userDN)

# Get source user first and last name
$firstName = $user.Get("givenName")
$lastName = $user.Get("sn")

# Get source user phone number
try
{
    $phoneNumber = $user.Get($phoneNumberPropertyName)
}
catch
{
    $phoneNumber = $NULL
}

# Get source user email
try
{
    $email = $user.Get("mail")
}
catch
{
    $email = $NULL
}

# Create an instance of the 'AdmExchangeMailboxParameters' class
$mailboxParams = New-Object "Softerra.Adaxes.Adsi.Exchange.AdmExchangeMailboxParameters"

# Schedule OOF
$automaticReplies = $mailboxParams.AutoReplyConfiguration
$automaticReplies.AutoReplyState = "ADM_EXCHANGE_OOFSTATETYPE_SCHEDULED"

$startTime = $Context.Arguments.GetParameterValueAsIs($oofStartDateParameterName)
$automaticReplies.StartTime = $startTime

$endTime = $Context.Arguments.GetParameterValueAsIs($oofEndDateParameterName)
$automaticReplies.EndTime = $endTime

$endDate = $endTime.ToShortDateString()
$oofMessage = [System.String]::Format($oofMessageTemplate, @($endDate, $firstName, $lastName, $phoneNumber, $email))

# Internal message
$automaticReplies.InternalMessage = $oofMessage

# External message
$automaticReplies.ExternalAudience = "ADM_EXCHANGE_EXTERNALAUDIENCETYPE_ALL"
$automaticReplies.ExternalMessage = $oofMessage
$mailboxParams.AutoReplyConfiguration = $automaticReplies

# Save changes
$targetUser = $Context.BindToObjectByDNEx("%distinguishedName%", $True)
$targetUser.SetMailParameters($mailboxParams, "ADM_SET_EXCHANGE_PARAMS_FLAGS_RESOLVEVALUEREFERENCES")
0

Hello,

now its working as we wish.

One extra question: Is it possible to mark the users, which have an active Out-of-Office-Message. Like this: image.png

Of course with a different icon, maybe a custom one?

0

Hello,

Unfortunately, there is no such possibility.

Related questions

0 votes
1 answer

What is the proper syntax for displaying the user display name in all lower case?

asked May 9, 2018 by bbuck (910 points)
0 votes
1 answer

Using the built in 'Deprovision' Custom Command, I would like the person that is trying to Deprovision a user (Help Desk member) be asked who (from a list of existing active ... to leave the question 'blank', which means that no one gets access to the mailbox.

asked Apr 22 by RayBilyk (690 points)
0 votes
1 answer

I have a custom command that prompts for a "reporter" for our ticketing system for enabling VPN accounts. Sometimes a technician will enable an account on behalf of another ... do I extract the email address of that object chosen as a parameter? Thank you.

asked Dec 10, 2019 by bjzielinski (480 points)
0 votes
1 answer

I would like to create a task to get an address from proxyAddresses (Email Proxy Addresses) and add the number to a CustomAttribute field. The address would be DIR:xxxx ... digit number) and I would like to add the 4 digit number to adm-CustomAttributeText5.

asked May 6, 2016 by Kikaida (4.8k points)
0 votes
1 answer

I would like to add the following logic into a Powershell script that will be triggered on 'After Create User'. Read the value of the 'title' property of the user just created ... 'True' or 'False'. Could you assist with how to script this please? Many thanks.

asked May 1 by Bernie (1.8k points)
2,352 questions
2,107 answers
5,746 comments
132,700 users