Skip to content

Microsoft Office 365

The Office 365 plugin enables the creation of automated services connected to O365 licenses, users , roles and distribution groups.

Prerequisites

Install the following powershell modules:

  • MSOnline
  • ExchangeOnlineManagement
Install-Module MSOnline -Force -Verbose
Install-Module ExchangeOnlineManagement -Force -Verbose
Activities
Add-ZPO365DistributionGroupMember
Add-ZPO365RoleMember
Add-ZPO365MailboxPermission
Add-ZPO365RecipientPermission
Add-ZPO365MailboxModeratedBy
Get-ZPO365User
Get-ZPO365Group
Get-ZPO365Mailbox
New-ZPO365DistributionGroup
New-ZPO365ExcelLicenseReport
New-ZPO365User
New-ZPO365Mailbox
Remove-ZPO365EmailAddress
Remove-ZPO365License
Remove-ZPO365RoleMember
Remove-ZPO365User
Remove-ZPO365DistributionGroupMember
Remove-ZPO365Group
Remove-ZPO365RecipientPermission
Remove-ZPO365MailboxPermission
Remove-ZPO365Mailbox
Set-ZPO365EmailAddress
Set-ZPO365License
Set-ZPO365LicenseDelegated
Set-ZPO365GraphUser
Set-ZPO365User
Set-ZPO365Group
Set-ZPO365DistributionGroup
Set-ZPO365MailboxType
Set-ZPO365MailboxSendOnBehalf
Set-ZPO365MailboxForwardingAddress
Set-ZPO365Mailbox
Set-ZPO365MailboxClutter
Start-ZPO365DirectorySync
Test-ZPO365User
Test-ZPO365IsLicenseAssigned
ConvertTo-ZPO365ObjectGuid
Disable-ZPO365ActiveSync
Disable-ZPO365Pop
Disable-ZPO365Imap
Enable-ZPO365ActiveSync
Enable-ZPO365Pop
Enable-ZPO365Imap
Data sources Type
Get-ZPO365FreeLicenses Web service
Get-ZPO365ServicePlan Web service
Get-ZPO365User Web service
Get-ZPO365UserLicense Web service
Get-ZPO365UserLicenseServicePlan Web service
Get-ZPO365Group Web service
Get-ZPO365ServicePlanRestricted Web service
Get-ZPO365UserLicenseInformation Web service
Get-ZPO365MobileDevice Web service
Test-ZPO365DisplayName Web service
Test-ZPO365EmailAddress Web service
Test-ZPO365User Web service
DropDown.O365Domain Drop down
DropDown.O365License Drop down
DropDown.O365User Drop down
DropDown.O365DistributionGroup Drop down
DropDown.O365MyDistributionGroup Drop down
DropDown.Graph.O365User Drop down
DropDown.Graph.O365License Drop down
DropDown.Graph.O365LicenseDelegated Drop down
DropDown.Graph.O365ServicePlanRestricted Drop down
DropDown.Graph.O365ProjectOnlineLicense Drop down

Installation and Configuration

Update Provider Config

ProvisioningSystem

Update the provider config with the settings applicable for your environment

office365.provisioningsystem.providers.xml

Key Example Value Description
DomainController DC01.domain.local Preferred domain controller FQDN
Credential O365 Name of the credential object stored in the Credential Manager
ConnectionRetryCount 10 Number of retries to perform if the connection to MSOL fails
ConnectionRetryIntervalSec 1 Number of seconds to wait between each connection attempt
UsageLocation SE Fallback Usage Location to use if none is specified in the activities
UICulture en-US Language to display state messages in (en-US or sv-SE)
DirSyncServer SRV01.domain.local Name of the server running dirsync. Requires PowerShell remoting
SessionName ZervicePoint.Activity.O365.Exchange Name of the PSSession.
ExchangeConnectionUri https://outlook.office365.com/powershell-liveid Connection URL to Excange online
ExchangeAuthentication Basic Exchange authentication types
LicenseDelegationConfigurationPath C:\Program Files\Zipper\ZervicePoint\Provider extensions\Office 365 Path to your license configuration json file
GraphTenantName zipperdevtest.onmicrosoft.com The target tenant of the Graph related calls
GraphAPIVersion 1.6 The Graph version to use in the Graph related calls
GraphCredential O365 Typically the same credential as for O365
GraphProxyCredential O365 Typically the same credential as for O365. Must be specified if GraphProxy is set
GraphProxy http://webproxy.company.com Leave empty if no proxy is needed for Graph calls

ClientWebService

Update the provider config with the settings applicable for your environment

office365.clientwebservice.provider.xml

Key Example Value Description
DomainController DC01.domain.local Preferred domain controller FQDN
SearchBase OU=Demo,DC=domain,DC=local Default search base if no other search base is set up in the dropdown.xml file
Credential O365 Name of the credential object stored in the Credential Manager
ConnectionRetryCount 10 Number of retries to perform if the connection to MSOL fails
ConnectionRetryIntervalSec 1 Number of seconds to wait between each connection attempt
UICulture en-US Language to display state messages in (en-US or sv-SE)
Categories Active Directory Categories to display in the User dropdowns. supported values are: 'Active Directory', 'Office 365' or 'Active Directory, Office 365'
SessionName ZervicePoint.ClientWebService.O365.Exchange Name of the PSSession.
ExchangeConnectionUri https://outlook.office365.com/powershell-liveid Connection URL to Excange online
ExchangeAuthentication Basic Exchange authentication types
LicenseDelegationConfigurationPath C:\Program Files\Zipper\ZervicePoint\Provider extensions\Office 365 Path to your license configuration json file
GraphTenantName zipperdevtest.onmicrosoft.com The target tenant of the Graph related calls
GraphAPIVersion 1.6 The Graph version to use in the Graph related calls
GraphCredential O365 Typically the same credential as for O365
GraphProxyCredential O365 Typically the same credential as for O365. Must be specified if GraphProxy is set
GraphProxy http://webproxy.company.com Leave empty if no proxy is needed for Graph calls

Dependencies

License Delegation configuration

Getting started

Create a file called LicenseDelegationConfiguration.json (recommended path is C:\Program Files\Zipper\ZervicePoint\Provider extensions\Office 365\Shared modules\LicenseDelegationConfiguration).

Configure the path in providers.xml for both provisioning system and client web service where key is "LicenseDelegationConfigurationPath" and value is the path.

Open LicenseDelegationConfiguration.json in a texteditor and configure the rules.

Rules

  • Roles - Specify available licenses for roles
  • GloballyDisabledLicenses - Disable licenses globally
  • GloballyDisabledServicePlans - Disable service plans globally
  • SwapLicenseSets - Specify sets of licenses which are swappable

Roles To specify roles in configuration file, use roles key and specify which licenses and service plans are available for specific roles. For example, the following make STANDARDPACK license and Teams and Yammer enterprise serviceplans available for the role Sweden.

{
    "roles": {
        "Sweden": [
            {
                "skuPartNumber": "STANDARDPACK",
                "allowedServicePlans": [
                    "TEAMS1",
                    "YAMMER_ENTERPRISE"
                ]
            }
        ]
    }
}

An example with multiple roles and licenses.

{
    "roles": {
        "Sweden": [
            {
                "skuPartNumber": "STANDARDPACK",
                "allowedServicePlans": [
                    "Deskless"
                ]
            },
              {
                "skuPartNumber": "ENTERPRISEPACK",
                "allowedServicePlans": [
                  "Deskless",
                  "FLOW_O365_P2"
                ]
              }
        ],
        "Norway": [
            {
                "skuPartNumber": "POWER_BI_STANDARD",
                "allowedServicePlans": [
                    "BI_AZURE_P0"
                ]
            }
        ]
    }
}

GloballyDisabledLicenses The GloballyDisabledLicenses rule allows you to disable licenses for all roles.

{
    "globallyDisabledLicenses": [ "CRMTESTINSTANCE", "ENTERPRISEPACK" ]
}

GloballyDisabledServicePlans The GloballyDisabledServicePlans rule allows you to disable licenses for all roles.

{
    "GloballyDisabledServicePlans ": [ "TEAMS1", "FLOW_O365_P2" ]
}

SwapLicenseSets You can add license sets where you specify which licenses should be swappable. An example if you want the users to have either ENTERPRISEPACK or POWER_BI_STANDARD.

{
    "swapLicenseSets": {
        "Standard": [
            "ENTERPRISEPACK",
            "STANDARDPACK"
        ]
    }
}

In this case, suppose you have a user who has ENTERPRISEPACK and you assign POWER_BI_STANDARD. If you have this configuration the user would only have POWER_BI_STANDARD.

It's also possible to specify multiple SwapLicenseSets.

{
    "swapLicenseSets": {
        "Standard": [
            "ENTERPRISEPACK",
            "STANDARDPACK"
        ],
        "CRM": [
            "CRMPLAN1",
            "CRMPLAN2",
            "CRMSTANDARD"
        ]
    }
}

License Delegation json example

An example with multiple rules.

{
    "roles": {
        "Sweden": [
            {
                "skuPartNumber": "STANDARDPACK",
                "allowedServicePlans": [
                    "Deskless",
                    "FLOW_O365_P1",
                    "POWERAPPS_O365_P1",
                    "TEAMS1",
                    "SHAREPOINTWAC",
                    "PROJECTWORKMANAGEMENT",
                    "SWAY",
                    "INTUNE_O365",
                    "YAMMER_ENTERPRISE",
                    "MCOSTANDARD",
                    "SHAREPOINTSTANDARD",
                    "EXCHANGE_S_STANDARD"
                ]
            },
            {
                "skuPartNumber": "ENTERPRISEPACK",
                "allowedServicePlans": [
                  "Deskless",
                  "FLOW_O365_P2",
                  "POWERAPPS_O365_P2",
                  "TEAMS1",
                  "PROJECTWORKMANAGEMENT",
                  "SWAY",
                  "INTUNE_O365",
                  "YAMMER_ENTERPRISE",
                  "RMS_S_ENTERPRISE",
                  "OFFICESUBSCRIPTION",
                  "MCOSTANDARD",
                  "SHAREPOINTWAC",
                  "SHAREPOINTENTERPRISE",
                  "EXCHANGE_S_ENTERPRISE"
                ]
            }
        ],
        "Norway": [
            {
                "skuPartNumber": "POWER_BI_STANDARD",
                "allowedServicePlans": [
                    "BI_AZURE_P0"
                ]
            },
            {
                "skuPartNumber": "ENTERPRISEPACK",
                "allowedServicePlans": [
                    "Deskless",
                    "FLOW_O365_P2",
                    "POWERAPPS_O365_P2",
                    "TEAMS1",
                    "PROJECTWORKMANAGEMENT",
                    "SWAY",
                    "INTUNE_O365",
                    "YAMMER_ENTERPRISE",
                    "RMS_S_ENTERPRISE",
                    "OFFICESUBSCRIPTION",
                    "MCOSTANDARD",
                    "SHAREPOINTWAC",
                    "SHAREPOINTENTERPRISE",
                    "EXCHANGE_S_ENTERPRISE"
                ]
            }
        ]
    },
    "globallyDisabledLicenses": [ "CRMTESTINSTANCE" ],
    "globallyDisabledServicePlans": [ "TEAMS1" ],
    "swapLicenseSets": {
        "Standard": [
            "ENTERPRISEPACK",
            "STANDARDPACK"
        ],
        "CRM": [
            "CRMPLAN1",
            "CRMPLAN2",
            "CRMSTANDARD"
        ]
    }
}

Related Activities, dropdowns and webservices

  • Set-ZPO365LicenseDelegated
  • DropDown.Graph.O365LicenseDelegated
  • DropDown.Graph.O365ServicePlanRestricted
  • Get-ZPO365ServicePlanRestricted
  • Get-ZPO365UserLicenseInformation