<# .SYNOPSIS Adds the iMIS Outlook Integration enterprise application to your Microsoft tenant. .DESCRIPTION This script is required for iMIS Outlook Integration to read attachment data. The script must be run with a user that has sufficient permission to add an enterprise application to the tenant. .NOTES Author: Advanced Solutions International, Inc. Date: 2026-09-10 Version: 1.1 Dependencies: - Microsoft.Graph module - PowerShell 7+ required - https://aka.ms/PowerShell-Release?tag=stable #> #requires -Version 7 Clear-Host Write-Host "" Write-Host "iMIS Outlook Integration - Entra Application Installer [v1.0]" Write-Host "" [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 if (!(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "Error: This script must be run as Administrator." -ForegroundColor Red return } Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force Write-Host "Pulling and importing the latest Microsoft.Graph module, please wait..." Install-Module Microsoft.Graph.Applications -Scope CurrentUser -AllowClobber -Force -WarningAction SilentlyContinue | Out-Null Install-Module Microsoft.Graph.Authentication -Scope CurrentUser -AllowClobber -Force -WarningAction SilentlyContinue | Out-Null Import-Module Microsoft.Graph.Applications -WarningAction SilentlyContinue | Out-Null Import-Module Microsoft.Graph.Authentication -WarningAction SilentlyContinue | Out-Null Write-Host "Authenticating... (Opens in a browser window)" Connect-MgGraph -Scopes Application.ReadWrite.All -NoWelcome -ContextScope Proces | Out-Null $tenant = Get-MgContext Write-Host "Connected to tenant: $($tenant.Account) with tenant ID: $($tenant.TenantId))" -ForegroundColor Green Write-Host "" Write-Host "Adding iMIS Outlook Integration app registration..." $appRegistration = New-MgApplication ` -DisplayName "iMIS Outlook Integration" -Description "iMIS Outlook Integration by Computer System Innovations, Inc." ` -RequiredResourceAccess @( @{ ResourceAppId = "00000003-0000-0000-c000-000000000000"; # Microsoft Graph ResourceAccess = @( @{ Id = "570282fd-fa5c-430d-a7fd-fc8dc98a9dca"; # Mailbox.Read delegated permission Type = "Scope" } ) } )` -Info @{ PrivacyStatementUrl = "https://imis.ms/privacy"; TermsOfServiceUrl = "https://imis.ms/terms"; SupportUrl = "https://imis.ms/support" }` -Web @{ ImplicitGrantSettings = @{ EnableAccessTokenIssuance = $true; EnableIdTokenIssuance = $true; }; RedirectUris = @('https://iemail.imisapps.com', 'https://iemail.us.imisapps.com', 'https://iemail.ca.imisapps.com', 'https://iemail.ap.imisapps.com', 'https://iemail.uk.imisapps.com')} ` -Spa @{ RedirectUris = @('brk-multihub://iemail.imisapps.com', 'brk-multihub://iemail.us.imisapps.com', 'brk-multihub://iemail.ca.imisapps.com', 'brk-multihub://iemail.ap.imisapps.com', 'brk-multihub://iemail.uk.imisapps.com')} Disconnect-MgGraph | Out-Null if (!$appRegistration.Id) { Write-Host "ERROR: Did not receive an Application (Client) ID from Entra." return } Write-Host "Completed!" Write-Host "" Write-Host @" ╔══════════════════════════════════════════════════════════╗ ║ Application ID: $($appRegistration.AppId) ║ ╚══════════════════════════════════════════════════════════╝ "@ -ForegroundColor Green Write-Host "" Write-Host "Next step: Copy and paste this application ID into the settings area of iMIS Outlook Integration." Write-Host "" Write-Host "For more information and troubleshooting, please go to: https://imis.ms/iemailcloudattach" Write-Host "" Read-Host 'Press Enter to exit'