Steps on this page focus on getting the system operational and performing some basic health checks

Start TM PS Service and TM Configurator

  1. After all the TM System Components are installed, reboot the machine.
  2. Start the Luware-TM-PS (PS) using  C:\windows\system32\Services.msc

    (warning) The Luware-TM-PS Service must always be started first. Otherwise the other services will not properly start!

  3. Now start all remaining services one at a time

    All TM services running

    (question) Is a service not starting or stopping again after a while? Check Windows Event Viewer for problems. There are also logfiles in the installation directory of each component (e.g. C:\Program Files\Luware AG\LUCS-FE\FeCore\Log\)

  4. Afterwards you can start the TM Configurator and inspect if the Services are running correctly and are detected in their new Version

    TM Configurator - Checking Component Status in the Home Screen

Verify Topology Data

With PS (Persistence Service) started and either the WebConfigurator / TM Configurator open, you should verify that all topology entries are correct. If you need a refresher on how to set up the topology fields, head over to the Topology page.

Any changes are made to the Trusted Applications, Components or Server whilst carrying calls will terminate those sessions.

Components (Server)

TM Configurator -> Topology -> Components (Server)

(info) TM supports the Multipool feature for AC, CR, ICH and MM system components.

Trusted Application Pools

You can configure several Trusted Application Pools on this tab. However, for one trusted application pool, you can only create one set of Trusted Applications, containing 1 AC, 1 CR, 1 ICH and 1 MM.

Trusted Application Pool Tab

Configure Trusted Applications

Applications may be either filled in via execution of the migration script or manually.

Register Trusted Application Endpoints Script

# Script Name: Registering_LUCS_TM_TrustedApps.ps1
# Description: Create TrustedAppPool / Apps / Endpoints
#V1.0.0.0: Initial - Davide Iadarola
#V1.0.0.1: Update: Feature - Create default endpoint - Davide Iadarola
#V1.0.0.2: Update: Feature - Add ApplicationPrefix - Davide Iadarola
#V1.0.0.3: Update: Feature - Create LUCS/TM Conference Policy if not exists / Bugfix - Outputfile folder not created /
#				   Feature - Assign Conference Policy to Endpoints - Davide Iadarola

#Config section:
$Application = "lucs"; #Options: lucs / tm
$ApplicationPrefix = ""; #Placeholder for TrustedappPoolName in TrustedApps and SipAddresses - Option is not required
$TrustedAppPool = ""; #LUCS or TM TrustedAppPool - FQDN
$SfBRegistrar = ""; #Skype for Business Registrar - FQDN
$SfBSite = ""; #Skype for Business Site
$TrustedAppComputers = @(
); #Hostname.domain.local
$SipDomain = ""; #Customer SIP Domain - sipdomain.local
$InstallMMSwitch = $false; #Options: $true / $false - Install LUCS MM?
$AdditionalEndpointsSwitch = $false; #Options: $true / $false - Add more Endpoints to the System
$AdditionalEndpointsStart = 10; #First Additional Endpoint
$AdditionalEndpointsEnd = 20; #Last Additional Endpoint
$ConfigOutputPath = "C:\Temp\LuwareTrustedAppConfig.txt"; #Path to Config Export
$DefaultEndpointSwitch = $false; #Options: $true / $false - Create default endpoint for failover scenarios
$DefaultEndpointPrefix = "defaultendpoint"; #Default endpoint name - "sip:" and "@sipdomain" will be added automaticaly

#Do not Change below

#Add "-" to $Applicationprefix if used
if($ApplicationPrefix -ne ""){
	$ApplicationPrefix = ($ApplicationPrefix + "-")

#Check if ConferencePolicy Tag:LucsService exists -> if not -> create ConferencePolicy
if((Get-CsConferencingPolicy -Identity "Tag:LucsService" -ErrorAction SilentlyContinue) -eq $null){
	New-CsConferencingPolicy -Identity "Tag:LucsService" -AllowIPAudio $true -AllowIPVideo $true -AllowMultiView $false `
	-Description "Lucs Contact Center Conferencing Policy" -AllowParticipantControl $true -AllowAnonymousParticipantsInMeetings $true `
	-AllowExternalUserControl $true -EnableDialInConferencing $true -AllowConferenceRecording $false -EnableDataCollaboration $true `
	-MaxVideoConferenceResolution "VGA"

#Save AdditionalEndpointsStart Var for Output
if($AdditionalEndpointsSwitch -eq $true){
	$AdditionalEndpointsStartOutput = $AdditionalEndpointsStart;
	$AdditionalEndpointsStartOutput = "";

#Create TrustedAppPool
New-CsTrustedApplicationPool -Identity $TrustedAppPool -Registrar $SfBRegistrar -Site Site:$SfBSite -ComputerFqdn $TrustedAppComputers[0];

#Add Computers to Pool
Foreach($TrustedAppComputer in $TrustedAppComputers){
	if($TrustedAppComputer -ne "" -and $TrustedAppComputer -ne $TrustedAppComputers[0]){
		New-CsTrustedApplicationComputer -Identity $TrustedAppComputer -Pool $TrustedAppPool;

#Set Port Numbers
if ($Application -eq "lucs"){
	$PortPrefix = 6;
	$StartDefaultPort = 7000;
	$StartAddPort = 7500;
elseif ($Application -eq "tm"){
	$PortPrefix = 8;
	$StartDefaultPort = 9000;
	$StartAddPort = 9500;

# ICH Registration - Create TrustedApp ICH
New-CsTrustedApplication -ApplicationId ($ApplicationPrefix + $Application + "-ich") -TrustedApplicationPoolFqdn $TrustedAppPool `
-Port ("$PortPrefix" + "000");

#Create Default TrustedApps + Endpoints
$Count = 0;
	New-CsTrustedApplication -ApplicationId ($ApplicationPrefix + $Application + "-connector-" + $Count) `
	-TrustedApplicationPoolFqdn $TrustedAppPool -Port $StartDefaultPort;
	New-CsTrustedApplicationEndpoint -ApplicationId ("urn:application:" + $ApplicationPrefix + $Application + "-connector-" + $Count) `
	-TrustedApplicationPoolFqdn $TrustedAppPool `
	-SipAddress ("sip:" + $ApplicationPrefix + $Application + "-connector-" + $Count + "@" + $SipDomain);
	Get-CsTrustedApplicationEndpoint ("sip:" + $ApplicationPrefix + $Application + "-connector-" + $Count + "@" + $SipDomain) `
	| Grant-CsConferencingPolicy -PolicyName "Tag:LucsService";
	$StartDefaultPort = $StartDefaultPort + 100;
While($Count -le 4)

#Additional Endpoints
if($AdditionalEndpointsSwitch -ne $false){
		New-CsTrustedApplication -ApplicationId ($ApplicationPrefix + $Application + "-connector-" + $AdditionalEndpointsStart) `
		-TrustedApplicationPoolFqdn $TrustedAppPool -Port $StartAddPort;
		New-CsTrustedApplicationEndpoint -ApplicationId ("urn:application:" + $ApplicationPrefix + $Application + "-connector-" `
		+ $AdditionalEndpointsStart) -TrustedApplicationPoolFqdn $TrustedAppPool -SipAddress ("sip:" + $ApplicationPrefix + $Application `
		+ "-connector-" + $AdditionalEndpointsStart + "@" + $SipDomain);
		Get-CsTrustedApplicationEndpoint ("sip:" + $ApplicationPrefix + $Application + "-connector-" + $AdditionalEndpointsStart + "@" + $SipDomain) `
		| Grant-CsConferencingPolicy -PolicyName "Tag:LucsService";
		$StartAddPort = $StartAddPort + 1;
	While($AdditionalEndpointsStart -le $AdditionalEndpointsEnd)

#CR Registration
$Count = 1;
New-CsTrustedApplication -ApplicationId ($ApplicationPrefix + $Application + "-cr") -TrustedApplicationPoolFqdn $TrustedAppPool `
-Port ("$PortPrefix" + "200");
	New-CsTrustedApplicationEndpoint -ApplicationId ($ApplicationPrefix + $Application + "-cr") -TrustedApplicationPoolFqdn  $TrustedAppPool `
	-SipAddress ("sip:" + $ApplicationPrefix + $Application + "-conversationrecording-" + $count + "@" + $SipDomain);
While($Count -le 2)

#MM Registration
if($InstallMMSwitch -eq $true -and $Application -eq "lucs"){
	New-CsTrustedApplication -ApplicationId ($ApplicationPrefix + $Application + "-mm") -TrustedApplicationPoolFqdn $TrustedAppPool -Port 6300;
	New-CsTrustedApplicationEndpoint -ApplicationId ("urn:application:" + $ApplicationPrefix + $Application + "-mm") `
	-TrustedApplicationPoolFqdn $TrustedAppPool -SipAddress ("sip:" + $ApplicationPrefix + $Application + "-mailmanager@" + $SipDomain);

#AC Registration
New-CsTrustedApplication -ApplicationId ($ApplicationPrefix + $Application + "-ac") `
-TrustedApplicationPoolFqdn $TrustedAppPool -Port ("$PortPrefix" + "100");
New-CsTrustedApplicationEndpoint -ApplicationId ("urn:application:" + $ApplicationPrefix + $Application + "-ac") `
-TrustedApplicationPoolFqdn $TrustedAppPool -SipAddress ("sip:" + $ApplicationPrefix + $Application + "-agentcontrol@" + $SipDomain);

#SMD Registration
$ServerAppPrio = Get-CsServerApplication | ?{$_.Identity -like "*$SfBRegistrar/TranslationService"} | Select-Object Priority;
$ServerAppPrio.Priority = $ServerAppPrio.Priority + 1;
New-CsServerApplication -Identity ("Registrar:$SfBRegistrar/" + $Application + "-SMD") -Uri ("" + $Application `
+ "-SMD") -Priority $ServerAppPrio.Priority -Critical $False -Enabled $True;

#Default endpoint
if($DefaultEndpointSwitch -eq $true){
	#Create default endpoint
	New-CsTrustedApplicationEndpoint -ApplicationId ($ApplicationPrefix + $Application + "-ich") -TrustedApplicationPoolFqdn $TrustedAppPool `
	-SipAddress ("sip:" + $ApplicationPrefix + $Application + "-" + $DefaultEndpointPrefix + "@" + $SipDomain) `
	| Grant-CsConferencingPolicy -PolicyName "Tag:LucsService";

# Output

$ichport = ("$PortPrefix" + "000");
$acport = ("$PortPrefix" + "100");
$crport = ("$PortPrefix" + "200");
$connectorprefix = ("$ApplicationPrefix" + "$Application" + "-connector-");
$connector0 = ("$ApplicationPrefix" + "$Application" + "-connector-0");
$connector1 = ("$ApplicationPrefix" + "$Application" + "-connector-1");
$connector2 = ("$ApplicationPrefix" + "$Application" + "-connector-2");
$connector3 = ("$ApplicationPrefix" + "$Application" + "-connector-3");
$connector4 = ("$ApplicationPrefix" + "$Application" + "-connector-4");

#Change Var if
if($AdditionalEndpointsSwitch -eq $false){
	$AdditionalEndpointsStart = "";
	$AdditionalEndpointsEnd = "";
	$connectorprefix = "";
if($InstallMMSwitch -eq $true){
	$mmurn = ("urn:application:" + $ApplicationPrefix + $Application + "-mm");
	$mmport = ("$PortPrefix" + "300");
	$mmuseragent = ($ApplicationPrefix + $Application + "-mm");
	$mmtrustedapppool = "$TrustedAppPool";
	$mmservertype = "MM";
	$mmurn = "";
	$mmport = "";
	$mmuseragent = "";
	$mmtrustedapppool = "";
	$mmservertype = "";
if($DefaultEndpointSwitch -eq $true){
	$DefaultEndpointSipAddress = "sip:$DefaultEndpointPrefix@$SipDomain";
	$DefaultEndpointSipAddress = "";

$ApplicationPrefixAndApplication = ($ApplicationPrefix + $Application);

$OutputConfig = @("
Please enter those settings in the Webconfigurator under the following chapters:

Settings -> Topology -> Frontendpools:
Name: $SfBRegistrar

Settings -> Topology -> Trusted Application Pools
FQDN: $TrustedAppPool
Select: $SfBRegistrar

Settings -> Topology -> Trusted Applications

********* ICH *********
URN: urn:application:$ApplicationPrefixAndApplication-ich
Port: $ichport
User Agent: $ApplicationPrefixAndApplication-ich
Application Pool: $TrustedAppPool
Server Type: ICH

********* AC *********
URN: urn:application:$ApplicationPrefixAndApplication-ac
Port: $acport
User Agent: $ApplicationPrefixAndApplication-ac
Application Pool: $TrustedAppPool
Server Type: AC

********* CR *********
URN: urn:application:$ApplicationPrefixAndApplication-cr
Port: $crport
User Agent: $ApplicationPrefixAndApplication-cr
Application Pool: $TrustedAppPool
Server Type: CR

********* MM *********
URN: $mmurn
Port: $mmport
User Agent: $mmuseragent
Application Pool: $mmtrustedapppool
Server Type: $mmservertype

Settings -> Topology -> Components

********* CR *********
SipUris: sip:$ApplicationPrefixAndApplication-conversationrecording-1@$SipDomain;

********* ICH *********
ConnectorApplicationURN: urn:application:$connector0
ConnectorApplicationURN1: urn:application:$connector1
ConnectorApplicationURN2: urn:application:$connector2
ConnectorApplicationURN3: urn:application:$connector3
ConnectorApplicationURN4: urn:application:$connector4
ConnectorEnd: $AdditionalEndpointsEnd
ConnectorPrefix: urn:application:$connectorprefix
ConnectorStart: $AdditionalEndpointsStartOutput
DefaultEndpointSipAddress: $DefaultEndpointSipAddress

********* SMD *********



#Create Output
if(Test-Path ($ConfigOutputPath.Substring(0, $ConfigOutputPath.lastIndexOf('\')))){
	$OutputConfig > $ConfigOutputPath;
	New-Item -Path ($ConfigOutputPath.Substring(0, $ConfigOutputPath.lastIndexOf('\'))) -ItemType Directory;
    $OutputConfig > $ConfigOutputPath;


Write-Host "Script finished - Please Run Enable-CsTopology command and check the output file - Path: $ConfigOutputPath" `
-ForegroundColor Yellow;

Each trusted application should be assigned to a trusted application pool. It may be several trusted application pools in the system, but for one trusted application pool, it will be possible to create only one trusted application set, which contains 1AC, 1 CR and 1 ICH.

Trusted Applications are configured in the TM Configurator -> Topology -> Trusted Applications  tab.

Trusted Application Setup in TM Configurator

The table of settings:

Field NameDescription
NameEnter the name of the application. The name can be found on Lync Server machine in the  Microsoft Lync Server Control Panel  -> Topology -> Trusted Application.

Format :  urn:application:name

Example : urn:application:brown_agentcontrol

PortEnter the port number of the application. The port number can be found on Lync Server machine in the  Microsoft Lync Server Control Panel  -> Topology -> Trusted Application.

Example : 6300

User AgentEnter the user agent. The name can be found on Lync Server machine in the  Microsoft Lync Server Control Panel  -> Topology -> Trusted Application.

Format :  name (without urn:application:)

Example : brown_agentcontrol

Application PoolSelect from the dropdown the trusted application pool of the component.

Pre-conditions : the trusted application pool should be configured earlier on  TM Configurator -> Topology -> Trusted Application Pools

Server TypeSelect from the dropdown the system component.

Server (System)

Verify that Instance name, FQDN, IP Address and assigned Application Pool are correct.

  1.  On the TM Configurator -> Topology -> Server (System)  tab, select the trusted application pool from the drop-down.
  2. Repeat as necessary for further servers (e.g. High Load, Reporting)

Any changes are made to the Trusted Application whilst carrying calls, the calls will be terminated.

The created Trusted Applications are displayed in ‘Trusted Application’ dropdown in Team details and have to be defined

  • on TM Configurator ->Team -> Enabled Teams tab -> Trusted Application dropdown
  • on TM Configurator ->Team -> Disabled Teams tab -> Trusted Application dropdown
  • on TM FE -> Activated Teams page -> Advanced Settings section -> Trusted Application dropdown
  • on TM FE -> Add Teams page -> Advanced Settings section -> Trusted Application dropdown

→ Also see the screenshots below 

TM Configurator -> Topology -> Server (System) tab

Assigning Trusted Applications to Teams

If a new trusted application or team has been created, you need to assign it to a specific team. This can be done in Configurator or the Frontend. 

via TM Configurator

Head to Team > Enabled Teams Tab. Select the Team and assign the Trusted Application.

Assigning trusted application to a team in TM Configurator

via TM Frontend

Head to Add Teams > Select a Team (or Add it) and assign the Trusted Application.

Assigning trusted application to a team on TM FE

Licence Check

Licence Checklist

After upgrading and starting your new TM services, you must provide a valid TM product license. 

There are two types of TM licenses:

  1. Full license (Allows running the TM product without time limit).
  2. Trial license (Allows running the TM product for a defined period).

(warning) Usage of the TM system outside the contract and license is prohibited. If such usage is detected, the TM system informs you about to buy additional licenses or decrease the usage of the product.

Examples of licence related warnings are:

  • the trial period has expired
  • the allowed quantity of concurrent agents is exceeded,
  • the allowed quantity of the configured supervisors is exceeded.

Quick-Check your license information:

  • click ‘Show Information’ button on the TM Configurator -> ‘Home’ tab or
  • log in to the TM FE with system administrator’s permissions and click Preferences -> License.

Start TM System Components as Services

Congratulations! At this point you should have completed the following steps:

(tick) Updated your Database
(tick) Uninstalled old software components
Installed new software components
(tick) Started TM-PS and validated your topology and services using the Configurator

Restarting all Services

With all the steps above completed, restart each Luware-TM service in the Services.msc console.

(lightbulb) When doing this after an upgrade we highly recommend you do this one at a time and monitor the Windows Event Viewer to ensure that they start correctly.

Starting all TM Services