You are on page 1of 238

Troubleshooting Guide OmniPCX Record

ALESVC50173 ed.18 Release 2.3 and above

OmniPCX Record: Troubleshooting guide

This current document is a guideline to help when facing problem with an OmniPCX Record.

Revision History
Edition 7: June 30, 2017 update of the document
Edition 8: April 12, 2018 update of the document
Edition 9: June 14, 2018 update of the document
Edition 10: July 17, 2018 update of the document
Edition 11: October 31, 2018 update of the document
Edition 12: February 08, 2019 update of the document
Edition 13: April 10, 2019 update of the document
Edition 14: July 12, 2019 update of the document
Edition 15: September 20, 2019 update of the document
Edition 16: January 20, 2020 update of the document
Edition 17: April 02, 2020 update of the document
Edition 18: June 30, 2020 update of the document

Legal notice:
The Alcatel-Lucent name and logo are trademarks of Nokia used under license by ALE. To view other trademarks used by affiliated
companies of ALE Holding, visit: www.al-enterprise.com/en/legal/trademarks-copyright. All other trademarks are the property of
their respective owners. The information presented is subject to change without notice. Neither ALE Holding nor any of its affiliates
assumes any responsibility for inaccuracies contained herein. © 2018 ALE International. All rights reserved. www.al-enterprise.com
Table of contents
1 Document History ....................................................................................................................................... 7
2 Introduction ................................................................................................................................................ 9

3 Principle of recording with the Alcatel-Lucent OmniPCX Record .................................................................... 10


3.1 The CSTA link between the OmniPCX Enterprise and the OmniPCX Record ............................................. 11
3.2 DR-link recording mode ....................................................................................................................... 13
3.3 The IP DR-link recording mode ............................................................................................................ 15
3.3.1 One OmniPCX Record – Simple IP stream duplication : ................................................................... 15
3.3.2 Multiple OmniPCX Record – Double IP stream duplication : ............................................................. 16
3.4 The mixed recording mode .................................................................................................................. 19
3.5 Recording in PBX network ................................................................................................................... 20
3.5.1 Remote DR-Link recording mode ................................................................................................... 20
3.5.2 IP DR-Link networking recording mode .......................................................................................... 21
3.6 Recording ISDN Trunk ......................................................................................................................... 22
3.7 Recording with encryption ................................................................................................................... 24
3.7.1 The IP DR-link recording mode with OXE in encryption mode .......................................................... 24
3.7.2 Mixed recording mode with OXE in encryption ................................................................................ 25
3.8 4059EE IP Attendant ........................................................................................................................... 26
3.8.1 4059EE IP Attendant with Port Mirroring ........................................................................................ 26
3.8.2 A4059EE IP Attendant with RTP Redirection ................................................................................... 28
3.9 SIP Recording mode ............................................................................................................................ 30
3.10 SIP Trunk Recording mode ................................................................................................................ 32
3.11 SIPREC Recording mode .................................................................................................................... 34
3.12 Beep generation ................................................................................................................................ 36
3.12.1 BEEP Tone.................................................................................................................................. 36
3.12.2 Voice Guide ................................................................................................................................ 38

4 OmniPCX Enterprise Management for recording with the Alcatel-Lucent OmniPCX Record.............................. 39
4.1 DR-Link & IP DR-Link : Record Authorization for user ............................................................................ 39
4.2 DR-Link recording mode ...................................................................................................................... 40
4.2.1 Creation of PCM2 board ................................................................................................................ 40
4.2.2 Create Virtual Equipments channels ............................................................................................... 40
4.2.3 OmniPCX Enterprise Software locks................................................................................................ 41
4.3 Remote DR-Link recording mode.......................................................................................................... 41
4.3.1 Centralized DR-Link node .............................................................................................................. 41
4.3.1.1 Centralized DR-Link node -- CSTA parameter ........................................................................................... 41
4.3.1.2 Centralized DR-Link node - Creation of PCM2 board and virtual equipments channels .................................. 41
4.3.2 Remote DR-Link node ................................................................................................................... 42
4.3.2.1 Remote DR-Link node - CSTA parameter ................................................................................................. 42
4.3.2.2 Remote DR-Link node – Recording resources ........................................................................................... 42
4.3.2.3 Remote DR-Link node - OmniPCX Enterprise Software locks ...................................................................... 42
4.4 IP DR-Link recording mode .................................................................................................................. 43

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 2/238
4.4.1 IP DR-Link – creation of an IP logger = OmniPCX Record ................................................................ 43
4.4.2 IP DR-Link – parameter Application\CSTA\ “DR-Link on IP supported” ............................................ 43
4.4.3 IP DR-Link - OmniPCX Record Software locks ................................................................................. 43
4.5 Mixed recording mode ......................................................................................................................... 44

5 4059EE IP Attendant Management – Port Mirroring ..................................................................................... 44


5.1 On the OmniPCX Enterprise ................................................................................................................. 44
5.2 On the OmniPCX Record Server ........................................................................................................... 45
5.2.1 Service “IP Attendant Recording Server” ........................................................................................ 45
5.2.2 Management of the LAN Network Adaptor for Port Mirroring ........................................................... 45
5.2.3 Configuration of the Network Adaptor requested for Port Mirroring .................................................. 46
5.2.4 Creation of Attendants in the OmniPCX Record Console for Port Mirroring ........................................ 46
5.3 On the Attendant PC ........................................................................................................................... 47
5.3.1 Installation of the Client Utility Notifier ........................................................................................... 47
5.3.2 Configuration and start of the Client Utility Notifier ......................................................................... 47
5.4 On the IP network .............................................................................................................................. 49
6 4059EE IP Attendant Management – RTP Redirection .................................................................................. 50
6.1 OmniPCX Enterprise Configuration ....................................................................................................... 50
6.2 IP Desktop creation ............................................................................................................................. 50
6.3 IP attendant 4059EE creation .............................................................................................................. 51
6.4 On the OmniPCX Record Server ........................................................................................................... 52
6.4.1 Service “IP Attendant Recording Server” ........................................................................................ 52
6.4.2 Creation of Attendants in the OmniPCX Record Console for RTP Redirection ..................................... 52
6.5 On the Attendant PC ........................................................................................................................... 53
6.5.1 Installation of the Client Utility Notifier ........................................................................................... 53
6.5.2 Configuration and start of the Client Utility Notifier ......................................................................... 53

7 SIP Recording mode management ............................................................................................................. 56


7.1 On the OmniPCX Record Server ........................................................................................................... 56
7.1.1 Service “SIP Recording Server” ...................................................................................................... 56
7.1.2 Management of the LAN Network Adaptor for Port Mirroring ........................................................... 56
7.1.3 Configuration of the Network Adaptor requested for Port Mirroring .................................................. 57
7.1.4 Creation of the extension SIP in the OmniPCX Record Console......................................................... 57
7.2 On the IP network .............................................................................................................................. 57
8 Activating Support Traces in the OmniPCXRecord ........................................................................................ 58

8.1 Where to configure traces? .................................................................................................................. 58


8.2 Restrictive mode ................................................................................................................................. 59
8.3 Unrestrictive mode .............................................................................................................................. 60
9 How to control the LAN reliability ............................................................................................................... 63
9.1 Test ping to control the communication between OmniPCX Record and OmniPCX Enterprise ................... 63
9.1.1 Environment of the test ................................................................................................................. 63
9.1.2 Goal of the tests ........................................................................................................................... 64

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 3/238
9.1.3 Script to run on the OmniPCX Record ............................................................................................. 64
9.1.4 Script to run on OmniPCX Enterprise .............................................................................................. 65
9.1.5 Script to run on PC Test ................................................................................................................ 66
9.1.6 Wireshark on the OmniPCX Record server ...................................................................................... 67
9.1.7 Issue occurred: information to be collected .................................................................................... 67
9.2 Test ping to control the communication from OmniPCX Record to Packetizer .......................................... 68
9.2.1 Environment of the test ................................................................................................................. 68
9.2.2 Goal of the tests ........................................................................................................................... 68
9.2.3 Scripts to run on the OmniPCX Record ........................................................................................... 69
9.2.3.1 OmniPCX Record server to Packetizer ...................................................................................................... 69
9.2.3.2 OmniPCX Record server to the PC Test “2” .............................................................................................. 70
9.2.4 Script to run on PC Test ................................................................................................................ 70
9.2.5 Wireshark on the OmniPCX Record server ...................................................................................... 71
9.2.6 Issue occurred: information to be collected .................................................................................... 71

10 Calls not being recorded / No call recording .............................................................................................. 72

10.1 In the OmniPCX enterprise ................................................................................................................ 72


10.1.1 Common checks for DR-Link & IP DR-Link .................................................................................... 72
10.1.2 Additional Checks for DR-Link ...................................................................................................... 76
10.1.3 Additional Checks for remote DR-Link........................................................................................... 81
10.2 In the OmniPCX Record ..................................................................................................................... 82

11 Recordings without audio......................................................................................................................... 91


12 OmniPCX Record Version upgrade ............................................................................................................ 94

12.1 Transit version for upgrade of OmniPCX Record .................................................................................. 94


12.2 Procedure to upgrade OmniPCX Record on different server machine .................................................... 95
12.3 After upgrade: “invalid username or password” in OmniPCX Record web console (server administration).
............................................................................................................................................................... 97
13 Web console connection: “Invalid username or password” ......................................................................... 98

13.1 Check the username is correctly entered ............................................................................................ 98


13.2 Lost your admin password ................................................................................................................. 98
13.2.1 OmniPCX Record release lower than 2.3.0.19 (not included) .......................................................... 98
13.2.2 OmniPCX Record release higher than 23.0.19 (included) ............................................................... 99
14 Web console: HTTP Error 503. The service is unavailable. ....................................................................... 102

14.1 Stop all the OmniPCX Record services .............................................................................................. 102


14.2 Open the tool “CMAUtility” ............................................................................................................... 102
14.3 Check the password is changed in the web config file........................................................................ 105
14.4 Check the application pools in the web server ................................................................................... 105
15 The OmniPCX Record stopped / crashed ................................................................................................. 107
16 Bad voice quality/ voice cuts / distortion in call / Call duration difference when compared from OXE / Multiple
voices in one recorded call.......................................................................................................................... 110
16.1 In IP DR-Link .................................................................................................................................. 110

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 4/238
16.2 In DR-Link ...................................................................................................................................... 116

17 Calls are not played in the OmniPCX Record Player.................................................................................. 117


18 Records are not displayed from the OmniPCX Record web console ........................................................... 119
18.1 Database backup ............................................................................................................................ 120
18.2 Changing the SQL database collation ................................................................................................ 124
18.2.1 OmniPCX Record release 2.3.0.18 or lower (single SQL database) ................................................ 124
18.2.2 OmniPCX Record release 2.3.0.19 or higher (multiple SQL databases) .......................................... 136
18.2.2.1 SQL Database OPCXR_Config.............................................................................................................. 136
18.2.2.2 SQL Database OPCXR_Tenant ............................................................................................................. 148
18.3 Create a user in SQL Server ............................................................................................................. 160
18.3.1 OmniPCX Record release 2.3.0.18 or lower (single SQL database) ................................................ 160
18.3.2 OmniPCX Record release 2.3.0.19 or higher (multiples SQL database) .......................................... 169

19 Fatal Error occurred during installation ................................................................................................... 179

20 Silent Monitoring issues ......................................................................................................................... 179


21 Screen Capture issues ........................................................................................................................... 182

22 HA and call replication issues ................................................................................................................. 186


23 IP Attendant / Console Recording issues ................................................................................................. 188
24 Quality Monitor not accessible ................................................................................................................ 192

25 Removing coach links from the OmniPCX Record ..................................................................................... 193

26 Not able to deploy a patch file................................................................................................................ 193


27 DR-Link recording mode (Voice Guide, Beep) .......................................................................................... 195
27.1 Voice Guide channel lack for VG No 565 ........................................................................................... 195
27.2 Beep not heard when listening the record ......................................................................................... 198
28 Consulting the Technical Support ........................................................................................................... 199
29 Appendix A : Recording Filters Rules ...................................................................................................... 202

30 Appendix B : OmniPCX Record Call Flows ................................................................................................ 215


30.1 4059EE Attendant recording with Port Mirroring ................................................................................ 215
30.2 4059EE Attendant recording with RTP Redirection ( so with IPDSP ) .................................................. 216
30.3 Warm Standby keep alive ................................................................................................................ 217
30.4 Warm Standby Replication with Local DB .......................................................................................... 218
30.5 Warm Standby – Secondary becomes main with Local DB ................................................................. 219
30.6 Primary Recorder Initialization with Local DB .................................................................................... 220
30.7 IP DR-Link Recording with Local DB ................................................................................................. 221
30.8 IP DR-Link Recording with Local DB ................................................................................................. 222
30.9 Web Configuration .......................................................................................................................... 223
30.10 ROD (Record Entire Call type) in IP DR-Link with Web Application .................................................... 224
30.11 ROD (Record Entire Call type) in IP DR-Link with PRS ...................................................................... 225

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 5/238
30.12 ROD (Record From Now type) in IP DR-Link with PRS ..................................................................... 226
30.13 ROD (Record Entire Call type) in IP DR-Link with API client Application ............................................ 227
30.14 Archiving Process .......................................................................................................................... 228
30.15 Screen Recording with IP DR-Link .................................................................................................. 229
30.16 SNMP Traps .................................................................................................................................. 230
30.17 Email Sending ............................................................................................................................... 231
30.18 Moving to OmniPCX Enterprise Double Main situation ...................................................................... 232
30.19 End of OmniPCX Enterprise Double Main situation ........................................................................... 233
30.20 Keep alive mechanism between Recorder and OXE .......................................................................... 234
30.21 SIP Phone Recording with Port Mirroring......................................................................................... 235
30.22 User Authentication using RADIUS Server ....................................................................................... 236
30.23 User Authentication using RADIUS Server in HA .............................................................................. 237

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 6/238
1 Document History

Edition Date Changes / Comments / Details /


01 19/02/2015 Initial edition
02 04/03/2015 Appendix B : OmniPCX Record Call Flows
In Warm Standby call flow : change of keep alive timout for R2.3.0.11
03 02/04/2015 Appendix B : OmniPCX Record Call Flows
In Keep alive mechanism between Recorder and OXE : change of ICMP ping
request in R2.3.0.12
04 08/12/2015 Chapter 6 Modification of Activating Support Traces in the OmniPCXRecord
Chapter 10.1 : modification of storage settings screenshot
05 21/11/2016 Chapter 5: Heading has been amended
Chapter 5.1.2: Screenshot has been updated
Chapter 5.1.4: Screenshot has been updated
Chapter 5.1.5: New section to describe RTP redirection option.
Capter 5.2.2: Screenshot has been updated.
Chapter 21.1 : call flow diagram has been updated.
06 19/06/2017 Chapter 3 : modification of the general remarks and addition of SIP
recording mode
Chapter 3.7 : addition of RTP redirection mode for A4059 EE IP
Chapter 3.8 : addition of SIP Recording mode
Chapter 5 & 6 : new explanations for attendant recording
Chapter 7 : addition of the SIP Recording mode management
07 30/06/2017 Appendix B : Addition of SIP phone Recording call flow
08 12/04/2018 Chapter 14 : Records are not displayed from the OmniPCX Record web
console
09 14/06/2018 Chapter 9: How to control the LAN reliability
10 17/07/2018 New Template Alcatel
11 31/10/2018 Chapter 12: Procedure to upgrade OmniPCX Record on different server
machine
12 08/02/2019 Modify Chapter 12
13 05/03/2019 Renaming TG0081 to ALESVC5017
Chapter 3.1: add OXE locks for multiple connection (DR-Link)
Chapter 10.1.1: add new info in cstainfo (OXE command)
Add the lock 386 (UC as a Service)
Chapter 7: add remark in SIP Recording mode
Add a new chapter “Web console: HTTP 503 error…”. Inserted in chapter
14, shifting the other chapters.
Chapter 28: add the call flows concerning RADIUS Server

14 Modification: 4.4.1 IP DR-Link - creation of an IP logger = OmniPCX Record


Chapter 26 (1.Call Recording Problem) => add RTP Logger Logs
15 01/10/2019 3.1 The CSTA link between the OmniPCX Enterprise and the OmniPCX
Record
(add points -1-, -2- and -3-) => IP flow to 2 different IP addresses

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 7/238
Chapter 3.3.2 Multiple OmniPCX Record – Double IP flow duplication
Chapter 3.9: add voice guide (3.9.2)
Modification: Lock 130 =2 or 4
4.2.3 OmniPCX Enterprise Software locks
4.3.2.3 Remote DR-Link node - OmniPCX Enterprise Software locks
4.4.3 IP DR-Link - OmniPCX Record Software locks
10.1.1 Common checks for DR-Link & IP DR-Link
Old Chapter 26 becomes Chapter 28 (Consulting the Technical Support)
New chapter (Not able to deploy a patch file) => Chapter 26
New chapter (Voice Guide channel lack for VG No 565) => Chapter 27
16 01/12/2019 Modification:
Chapter 3.8 – SIP Recording mode
Chapter 3.9 Beep generation => Change to Chapter 3.11
New Chapter 3.9 - SIP Trunk Recording mode
New Chapter 3.10 - SIPREC Recording mode
Chapter 11 - Recording without audio
Chapter 12 - OmniPCX Record Version upgrade
Chapter 13 - Web console connection: “Invalid username or password”
Chapter 23 – IP attendant / Console recording issues

17 11/02/2020 Modification:
10.1.2 – Additional checks for DR-Link (add the name of the firmware of the
packetizer for DR-Link recording mode)
Add Recording ISDN Trunk (chapter 3.6)
Modification in chapter 13.2
Add Chapter 27.2 “Beep not heard when listening the record”

18 30/06/2020 Modification:
13.2 Lost your admin password

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 8/238
2 Introduction

This current document is a guideline to help when facing problem with an Alcatel-Lucent OmniPCX
Record.

Please refer to Alcatel Lucent Business Partner Web Site at the following URL:
http://www.businesspartner.alcatel-lucent.com/ to get latest available edition of this document.

For any comment, suggestion or question, please contact Technical Support.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 9/238
3 Principle of recording with the Alcatel-Lucent OmniPCX Record

The Alcatel-Lucent OmniPCX Record uses the following modes of recording :


- The DR-Link ( Dedicated Recording Link )
- The IP DR-link ( IP Dedicated Recording Link )
- Port mirroring or RTP redirection for the A4059EE IP Attendant
- Port mirroring for the SIP mode recording

The DR-Link records all types of sets available by the Alcatel-Lucent CSTA protocol (TDM, IP, analog
sets, etc…).

The IP DR-Link records only 8 Series IP Touch sets + 8000 Series sets + 8082/noe set and the IP Desktop
Softphones.

For IP DR-Link double IP recording only the following phone types are compliant:
all NOE 3G EE IPTOUCH 8008, 8018, 8028s, 8058s, 8068s, 8078s with NOE 3G EE R500 5.40.09 binay
version and IP Desktop Softphone with minimum version 11.2.0.

Port mirroring works with both IPDSP and physical phone sets but RTP redirection only works with
IPDSP.

Check the available sets in the OmniPCX Record Hardware-Software specification guide for more
information.

One record on the OmniPCX Record consists of two parts :

The call audio flow

The detailed information of the call

For DR-Link & IP DR-Link, the call informations are provided by the CSTA.

For the IP attendant 4059EE (port mirroring and RTP redirection), the call informations
are provided via the client utility Notifier installed on the attendant PC.

For SIP Mode, the call informations are provided via the port mirroring of the SIP Phone.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 10/238
3.1 The CSTA link between the OmniPCX Enterprise and the OmniPCX Record

The OmniPCX Enterprise and the OmniPCX Record are linked by a CSTA link typed DR-Link.

The OmniPCX Enterprise is the CSTA server. It means that the OXE generates CSTA events (DELIVERED,
ESTABLISHED, etc…) for the users.
The CSTA server is done by the process CSTAMONO of the OmniPCX Enterprise.

The OmniPCX Record is the CSTA client. It means that the OmniPCX Record will send requests to the
OmniPCX Enterprise to record users.

-1- Until the OXE Release R12 M1, OXE can only accept one OmniPCX Record system.
-2- From OXE Release R12.1 M2.300, OXE is able to accept more than one OmniPCX Record system.
Now the value of the lock 130 (in the OXE, command spadmin (option 2)) can take one the following
value:
- Value 0 (none)
- Value 1 (Nice voice recorder)
- Value 2 (DR-Link voice recorder)
- Value 3 (multiple Nice voice recorder)
- Value 4 (multiple DR-Link voice recorder)
Remark:
The number of recorder links is restricted by the max number of CSTA clients.
For multiple voice recorder connection, OXE can only accept DR-Link recorders of the same type.
Each DR-Link recorder works independently, if more than 1 DR-Link recorder is accepted by the OXE.
If several DR-Link recorders are connected to an OXE, each recorder monitors a group of TDM or IP extensions,
and different recorder is not allowed to manage the same user.
(If the extension is already monitored by another DR-Link application, the service is rejected with the error
message: Service busy).
See example at the next page:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 11/238
1 : [172.xx.xxx.25] CSTA (DR_LINK, Ecma II, TAPIPREMSERV, Null, SessionAssociated) - 5 monitoring(s)
client connection time : 17:25:59 - 23 Sep 2019 ( 6min 56sec )
3 : [172.xx.xxx.16] CSTA (DR_LINK, Ecma II, TAPIPREMSERV, Null, SessionAssociated) - 1 monitoring(s)
client connection time : 17:26:05 - 23 Sep 2019 ( 6min 50sec )

Extension 3000 is requested to be monitored by the OmniPCX Record “172.xx.xxx.25” and also this
extension 3000 is requested to be monitored by the OmniPCX Record “172.xx.xxx.16”

172.xx.xxx.25 => Send Monitoring Request for Device:3000 => no error in the Monitoring response
Extension 3000 is monitored
Then 172.xx.xxx.16 => Send Monitoring Request for Device:3000 => error: Service busy

For a same directory number: The first Monitoring request received by the OXE will be accepted but the
second (or more) will be refused (Service busy error message)

-3- From OXE Release R12.3.1 M4.500, OXE is still able to accept more than one OmniPCX Record
system and the following IP Phones are able to duplicate their IP stream to 2 different IP addresses
(OmniPCX Record): all NOE 3G EE IPTOUCH 8008, 8018, 8028s, 8058s, 8068s, 8078s with NOE 3G EE
R500 5.40.09 binary version and IP Desktop Softphone with minimum version 11.2.0.

Remark:
The number of recorder links is restricted by the max number of CSTA clients.
For multiple voice recorder connections, OXE can only accept DR-Link recorders of the same type.
Each DR-Link recorder works independently, if more than 1 DR-Link recorder is accepted by the OXE.
If several DR-Link recorders are connected to an OXE, each recorder monitors a group of TDM or IP extensions,
and different recorders are allowed to monitor the same user. No limitation to monitor the same directory
number.
If 3 voice recorders (all typed as DR_Link) are connected to the OXE, and request to monitor the same IP Touch
(8068s), the 2 first StartIPRecording will be accepted but the third will be refused (INVALID_OBJECT_STATE)
because the IP extensions is able to duplicate 2 * 2 flows.

How is tagged the CSTA link on the OmniPCX Enterprise?

The CSTA mono is accessible by executing telnet localhost 2555 on the OmniPCX Enterprise.
Then enter character D (shift + d). You can display the list of all connected CSTA clients with the
command ls.

The CSTA client corresponding to the OmniPCX Record is a TAPIPREMSERV link with the type DR-
Link

For instance dbg> ls


4 : [172.27.138.30] CSTA (DR_LINK, Ecma II, TAPIPREMSERV, Null, SessionAssociated) - 5 monitoring(s)
client connection time : 17:34:36 - 16 Dec 2014 ( 9sec )

Remark : it is tagged DR-Link even if the OmniPCX Record is used for IP DR-Link recording.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 12/238
3.2 DR-link recording mode
The DR-Link recording mode is an active recording mode. A StartListening event is sent by the OmniPCX
Record to request the recording of a monitored (CSTA) device.

Schema of DR-Link record

The cable between the PCM2 board and the packetizer depends on the specific OmniPCX
Enterprise hardware and mustn’t exceed 1,5m.

Note:
ULAW is currently being used by companies in North America and in Japan while ALAW is being used
in Europe.
The packetizer used in DR-Link recording mode is not the same as the one used in ISDN Trunk
recording.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 13/238
From CSTA point of view :

a- The OmniPCX Record registers as Voice recording system in the OXE


The OmniPCX Recorder sends the CSTA request to the OXE:“Escape Service Register = 234”

b- The OmniPCX Record monitors recordable users of the OXE


The OmniPCX Record sends the CSTA request to the OXE : “Monitor Device”

c- Recording request :
a. An ESTABLISHED CSTA event is handled in the OXE as soon as a recordable user is in
conversation.
b. The OmniPCXRecord receives this ESTABLISHED CSTA event for this recordable user
c. According to the OmniPCX Recorder recording rules, the OmniPCX Recorder records or
not this conversation of this user.
d. If the OmniPCX Record records, this one sends the recording request to the OXE
The OmniPCX Record sends the CSTA request to the OXE :
“Start listening : Device_ID, PCM rack Id, PCM2 coupler Id, PCM2 Time Slot”

From Audio point of view :

a- The request “Start listening : Device_ID, PCM rack Id, PCM2 coupler Id, PCM2 Time Slot”
handles a virtual conference in the OXE between the recorded user A, the user B and the
time slot of the PCM2.

b- This virtual conference is done thanks to conference resources:


a. In the GD, GA or GACONF boards with Common hardware. It is necessary to have
dedicated conferences resources for the recording.
b. In the back panel with Crystal hardware

c- This virtual conference is done also thanks to compression resources:


a. In the GD, GA boards with Common hardware
b. In the INTIP boards with Crystal hardware

d- This TDM flow of the time slot of the PCM2 is sent to the Packetizer ( Blue Box )

e- The Packetizer transforms the TDM to RTP ( so IP ) flow.

f- The RTP flow is sent from the packetizer to the OmniPCX Record.

At the end of the conversation, the OmniPCX Record builds the record with the audio and the
detailed CSTA information.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 14/238
3.3 The IP DR-link recording mode
The IP DR-Link recording mode is an active recording mode. A StartIPRecording event is sent by the OmniPCX
Record to request the recording of a monitored (CSTA) device.

3.3.1 One OmniPCX Record – Simple IP stream duplication :

From CSTA point of view :

a- The OmniPCX Record registers as Voice recording system in the OXE


The OmniPCX Recorder sends the CSTA request to the OXE:“Escape Service Register = 234”

b- The OmniPCX Record monitors recordable users of the OXE


The OmniPCX Record sends the CSTA request to the OXE : “Monitor Device”

c- Recording request :
a. An ESTABLISHED CSTA event is handled in the OXE as soon as a recordable user is in
conversation.
b. The OmniPCXRecord receives this ESTABLISHED CSTA event for this recordable user
c. According to the OmniPCX Recorder recording rules, the OmniPCX Recorder records or
not this conversation of this user.
d. If the OmniPCX Record records, this one sends the recording request to the OXE
The OmniPCX Record sends the CSTA request to the OXE :
“Start IP Recording : Device_ID, IP@of the OmniPCX Record,Port X1, Port X2”

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 15/238
From Audio point of view :

The request “Start IP Recording : Device_ID, IP@of the OmniPCX Record,Port X1, Port X2” handles a
duplicated RTP flow from the recorded user A to the OmniPCX Record.

It means that on the Start Recording request, the IP set sends the RTP flow to the OmniPCXRecord
− From Recorded to Remote sets towards port X1 of the OmniPCX Record
− From Remote to Recorded sets towards port X2 of the OmniPCX Record

At the end of the conversation, the OmniPCX Record builds the record with the audio and the
detailed CSTA information.

3.3.2 Multiple OmniPCX Record – Double IP stream duplication :


The double IP recording is a new feature available from the OXE R12.3.1 (m4.501.x).
The OXE can accept more than one DR_Link connection => lock 130 = 4.

Warning: Only the following phone sets are compliant: all NOE 3G EE IPTOUCH 8008, 8018, 8028s,
8058s, 8068s, 8078s with NOE 3G EE R500 5.40.09 binary version and IP Desktop Softphone with
minimum version 11.2.0.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 16/238
From CSTA point of view :

a- The OmniPCX Record registers as Voice recording system in the OXE


The OmniPCX Recorder 1 sends the CSTA request to the OXE:“Escape Service Register = 234”
The OmniPCX Recorder 2 sends the CSTA request to the OXE:“Escape Service Register = 234”

The OXE will have 2 CSTA clients (typed DR_Link) connected. Recordable devices will be monitored thru those
CSTA clients.
From the OXE (telnet interface), we can check those connections by the command telnet localhost 2555:
(1)vrec_cs1> telnet localhost 2555
Trying 172.27.xxx.20...
Connected to vrec_cs1.
Escape character is '^]'.
D

dbg> ls
1 : [172.27.xxx.10] CSTA (DR_LINK, Ecma II, TSERVERECMAV2, Null, SessionAssociated) - 0 monitoring(s)
client connection time : 17:37:11 - 25 Apr 2019 ( 4min 17sec )
2 : [172.27.xxx.11] CSTA (DR_LINK, Ecma II, TAPIPREMSERV, Null, SessionAssociated) - 0 monitoring(s)
client connection time : 17:37:38 - 25 Apr 2019 ( 3min 50sec )
3 : [vrec_cs1] CSTA (AFE, Afe II, AFE, CSTA V2, SessionAssociated) - 36 monitoring(s)
client connection time : 17:37:44 - 25 Apr 2019 ( 3min 44sec )
4 : [vrec_cs1] CSTA Debug
client connection time : 17:40:26 - 25 Apr 2019 ( 1min 2sec )

b- The OmniPCX Record 1 monitors recordable users of the OXE


The OmniPCX Record 1 sends the CSTA request to the OXE : “Monitor Device”
The OmniPCX Record 2 monitors recordable users of the OXE
The OmniPCX Record 2 sends the CSTA request to the OXE : “Monitor Device”

dbg> ls
1 : [172.27.xxx.10] CSTA (DR_LINK, Ecma II, TSERVERECMAV2, Null, SessionAssociated) - 3 monitoring(s)
client connection time : 17:37:11 - 25 Apr 2019 ( 4min 17sec )
2 : [172.27.xxx.11] CSTA (DR_LINK, Ecma II, TAPIPREMSERV, Null, SessionAssociated) - 3 monitoring(s)
client connection time : 17:37:38 - 25 Apr 2019 ( 3min 50sec )
3 : [vrec_cs1] CSTA (AFE, Afe II, AFE, CSTA V2, SessionAssociated) - 36 monitoring(s)
client connection time : 17:37:44 - 25 Apr 2019 ( 3min 44sec )
4 : [vrec_cs1] CSTA Debug
client connection time : 17:40:26 - 25 Apr 2019 ( 1min 2sec )

(1)vrec_cs1> cstainfo

CSTA MONITORING REQUESTS


CSTA = 0 (99999 max) Agent = 0 Business = 0
CSTA bypass = 0 (99999 max)
TSAPI = 0 (99999 max)
DR-Link = 6 (1000 max) => 3 monitorings per OmniPCX Record connected.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 17/238
c- Recording request :
a. An ESTABLISHED CSTA event is handled in the OXE as soon as a recordable user is in
conversation.
b. The OmniPCXRecord 1 and the OmniPCXRecord 2 receive both this ESTABLISHED CSTA
event for this recordable user.
c. According to the OmniPCX Recorders recording rules, the OmniPCX Recorder records
or not this conversation of this user.
d. The 2 OmniPCX Records send (independently) the recording request to the OXE:
The OmniPCX Record 1 sends the CSTA request to the OXE :
“Start IP Recording : 3400, 172.27.xxx.10,Port X1, Port X2”
The OmniPCX Record 2 sends the CSTA request to the OXE :
“Start IP Recording : 3400, 172.27.xxx.11,Port X3, Port X4”

As soon as the StartIPRecording request is accepted by the OXE, the Phone set should duplicate its UDP stream
to the two voice recorder IP addresses:
(1)vrec_cs1> zdpost d 3400 | grep cstaRec
cstaRecording[0] : IP recording (type=1)
cstaRecording[1] : IP recording (type=1)

The command cstainfo show the following info:


(1)vrec_cs1> cstainfo

Thu Apr 25 23:55:27 CEST 2019

CSTA LOCKS
CSTA profile = 2
IVR access = 30 (99999 max)
CCD agents = 1 (1000 max)
RSI agents = 0 (99999 max)
CCD pilot can be monitored = true
Feature SOSM = false
Feature Emirats Arabes Unis = false
Feature NICE - DR-Link = Multi DR-Link => Lock 130 = 4
DR-Link recording time slot = 0 (600 max)
DR-Link recording net time slot = 0 (99999 max)
DR-Link IP recording = 2 (99999 max) => Lock 334, 2 locks taken related to the 2
StartIPRecording accepted by the OXE.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 18/238
From Audio point of view :

The request “Start IP Recording : Device_ID, IP@of the OmniPCX Record,Port X1, Port X2” handles a
duplicated RTP flow from the recorded user A to the OmniPCX Record.
Duplicated RTP flow to the OmniPCX Record 1 (172.27.xxx.10)
Duplicated RTP flow to the OmniPCX Record 2 (172.27.xxx.11)

It means that on the Start Recording request, the IP Phone set sends the RTP flow to each
OmniPCXRecord:
OmniPCX Record 1
− From Recorded to Remote sets towards port X1 of the OmniPCX Record
− From Remote to Recorded sets towards port X2 of the OmniPCX Record
OmniPCX Record 2
− From Recorded to Remote sets towards port X3 of the OmniPCX Record
− From Remote to Recorded sets towards port X4 of the OmniPCX Record

At the end of the conversation, the OmniPCX Records build the record with the audio and the
detailed CSTA information.

3.4 The mixed recording mode

The OmniPCX Record is able to do DR-Link and IP DR-link recording modes in the same
installation.

It is called the mixed recording mode.

The 8 Series Ip Touch sets + 8000 Series sets + 8082/noe set and the IP Desktop Softphones are recorded
in IP DR-Link and the other types of sets are recorded in DR-Link.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 19/238
3.5 Recording in PBX network

The OmniPCX Record is able to record for PBX network.

The Remote DR-Link recording and the IP DR-Link network recording solutions allow to centralize
the recordings of a homogeneous Alcatel-Lucent network.

3.5.1 Remote DR-Link recording mode

Schema of Remote DR-Link recording mode :

The cable between the PCM2 board and the Blue Box depends on the specific OmniPCX
Enterprise hardware and mustn’t exceed 1,5m.

The centralized DR-Link node is the node where PCM2 resources are located.
The remote node DR-Link is the node where the recorded user(s) are located.

Remark regarding the CSTA request : The OmniPCX Record sends the CSTA request to the OXE :

“Start listening : Device_ID, 128 + PCM rack Id, PCM2 coupler Id, PCM2 Time Slot”

The rack number “128 + “ is used for remote DR-Link

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 20/238
3.5.2 IP DR-Link networking recording mode

Schema of IP DR-Link networking recording mode:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 21/238
3.6 Recording ISDN Trunk
The OmniPCX Record is able to record ISDN Trunk lines (E1 or T1).
The ISDN Trunk recording solution is a passive recording mode. There is no event sent by the
OmniPCX Record to trigger the recording. All the call (independent of the extension type) passing
thru the ISDN Trunk are recorded on the OmniPCX Record.

Schema of ISDN Trunk recording mode:

Commercial reference is :
3JE10103AB => Trunk E1
3JE10104AB => Trunk T1

Note:
One dedicated packetizer can be associated with one ISDN trunl line only.
The packetizer used in ISDN Trunk recording is not the same as the one used in DR-Link recording
mode.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 22/238
From CSTA point of view :

The ISDN Trunk recording is a passive recording mode. No CSTA monitoring involved.

From Audio point of view :

a- A call is established passing thru the ISDN Trunk

b- The ISDN flow of the ISDN trunk line is splitted (Splitter). Identical flow sent to the
packetizer and sent to the T2 board.

c- The packetizer transforms the ISDN flow to RTP ( so IP ) flow.

d- The RTP flow is sent from the packetizer to the OmniPCX Record.

At the end of the conversation, the OmniPCX Record builds the record with the audio.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 23/238
3.7 Recording with encryption
We can apply the DR-Link & the IP DR-Link recording modes with OXE using encryption.

Do not confuse the following described feature (audio call flow encryption) with the storage of the
OmniPCX record audio files encryption

3.7.1 The IP DR-link recording mode with OXE in encryption mode

Schema of architecture : user A and external user are in conversation

The CSTA is not encrypted between the OmniPCX Record and the OXE.

The recording flow is encrypted from the IP Phone to the MSM module in front of the OmniPCX
Record.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 24/238
3.7.2 Mixed recording mode with OXE in encryption

The OmniPCX Record is able to do the mixed recording mode with OXE in encryption in the same
installation.

The CSTA is not encrypted between the OmniPCX Record and the OXE.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 25/238
3.8 4059EE IP Attendant

As the OmniPCX Enterprise doesn’t generate CSTA events for attendants, the 4059EE IP
attendants CAN NOT be recorded in DR-Link OR in IP DR-Link.

There are two ways to record attendant console : the port mirroring and the RTP redirection

3.8.1 4059EE IP Attendant with Port Mirroring

The RTP will be provided through port mirroring from managed switch and call informations are
provided via the client utility Notifier ( called also OmniPCX Record Console or OmniPCX TAPI
attendant client )installed on the attendant PC.

Schema of the Port Mirroring for Attendant 4059EE :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 26/238
What is the process for one recorded call on the attendant with port mirroring?

1- When the attendant PC answers a call, the internal Alcatel API of the attendant PC notifies it
to the client utility Notifier.

2- The client utility Notifier sends the beginning of the call information to the OmniPCX Record.

3- In parallel, at the connection of the call, the phone set associated to the attendant is in
conversation with the caller via RTP.

To have the RTP recorded flow, it is necessary to make a port mirroring of the phone set
associated to the attendant using a managed switch and the OmniPCX Record makes IP
sniffing on a 2nd dedicated LAN adapter.

So at the connection of the call, the OmniPCX Record begins the IP sniffing on the 2nd
dedicated LAN adapter.

4- At the disconnection of the call, the internal Alcatel API of the attendant PC notifies it to the
client utility Notifier.

5- The client utility Notifier sends the end call information to the OmniPCX Record

6- The OmniPCX Record stops the IP sniffing.

7- The OmniPCX Record builds the record with the audio and the detailed call information.

Remarks or limitations :

1- The “Hold on” of the attendant during a conversation generates two records for the same
conversation.

2- As the client utility Notifier is needed to have the call information, we can see easily that
attendants phone sets ONLY ( so without PC ) can not be recorded.

3- The OmniPCX Record must have TWO LAN cards in case of port mirroring : one for all
attendants and one for the DR & IP DR-Link.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 27/238
3.8.2 A4059EE IP Attendant with RTP Redirection

The RTP redirection works ONLY with an embedded IPDSP phone set in the A4059EE IP attendant.

Schema of the RTP redirection for Attendant 4059EE :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 28/238
What is the process for one recorded call on the attendant with RTP redirection?

1- When the attendant PC answers a call, the internal Alcatel API of the attendant PC notifies it
to the client utility Notifier.

2- The client utility Notifier sends the beginning of the call information to the OmniPCX Record.

3- In parallel, at the connection of the call, the IPDSP associated to the attendant is in
conversation with the caller via RTP.

To have the RTP recorded flow, the client utility notifier is able to redirect its RTP flow to
the OmniPCX Record.

4- At the disconnection of the call, the internal Alcatel API of the attendant PC notifies it to the
client utility Notifier.

5- The client utility Notifier sends the end call information to the OmniPCX Record.

6- The IPDSP stops its RTP flow, so end of the RTP recorded flow.

7- The OmniPCX Record builds the record with the audio and the detailed call information.

Remark for this mode: The WinpCap has to be installed on the attendant PC

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 29/238
3.9 SIP Recording mode

The SIP Phones, created as “SIP device”, should be recorded in SIP Recording mode.

This mode applies to any SIP sets that are not associated to an OXE or for OXE sets declared as “SIP
device”.
From OXE (mgr) \ Users => Set Type : SIP device
For OXE sets declared as “SIP extension”, DR-Link recording is the supported way. Please note that
the recording of OXE SIP extension with port mirroring is not a supported way as it may generate
double records.

The SIP Recording mode consists in port mirroring of the SIP phone from managed switch, for the
RTP Flow and also for the call information.

Schema of the Port Mirroring for SIP Recording Mode :

SIP Signalling
& RTP recording flow

Conversation flow

Connecting cable

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 30/238
What is the process for one recorded call with SIP Recording mode ( so with port mirroring )?

1- It is necessary to make a port mirroring of the SIP phone set using a managed switch and the
OmniPCX Record makes IP sniffing on a 2nd dedicated LAN adapter.

2- When the SIP Phone set answers a call or makes a call ( and until the end of the conversation
), the OmniPCXRecord receives the SIP Phone signaling ( INVITE, 200 OK, BYE, etc… ) via the
managed switch.

3- In parallel, at the connection of the call, the OmniPCXRecord receives from the managed
switch the RTP flow of this SIP Phone.

4- At the disconnection of the call, the OmniPCXRecord receives the SIP BYE event of the SIP
Phone via the managed switch.

5- The OmniPCX Record builds the record with the received audio and the detailed call
information.

Regarding the detailed information, the OmniPCXRecord is able to decrypt the SIP events
information ( for instance, “from”, “to”, beginning / end of the record ) and to build the
record detailed information.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 31/238
3.10 SIP Trunk Recording mode

Firewall/Network Router

Switch managed
Ext A
Port mirroring
Managed swicth with duplication of the RTP flow
and the SIP signalling of the Trunk SIP to the LAN
2 network adapter of the OmniPCX Record.

LAN 2
"SIP Trunk
Recording SIP Signalling
LAN 1
server" service & RTP recording flow

Conversation flow

LAN Connecting cable

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 32/238
What is the process for one recorded call with SIP Trunk Recording mode (port mirroring )?

1- It is necessary to make a port mirroring of the SIP Trunk using a managed switch and the
OmniPCX Record makes IP sniffing on a 2nd dedicated LAN adapter (LAN 2 in the above
diagram)

2- When “Ext A” extension answers a call or makes a call ( and until the end of the conversation
), the OmniPCXRecord receives the SIP Trunk signaling ( INVITE, 200 OK, BYE, etc… ) thru the
managed switch.

3- In parallel, at the connection of the call, the OmniPCXRecord receives from the managed
switch the RTP flow of the SIP Trunk.

4- At the disconnection of the call, the OmniPCXRecord receives the SIP BYE event thru the SIP
Trunk via the managed switch.

5- The OmniPCX Record builds the record with the received audio and the detailed call
information.

Regarding the detailed information, the OmniPCXRecord is able to decrypt the SIP events
information ( for instance, “from”, “to”, beginning / end of the record ) and to build the
record detailed information.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 33/238
3.11 SIPREC Recording mode

Firewall/Network Router

Ext A
LAN

SIPREC Signalling flow

SIPREC RTP flow


Conversation flow
Connecting cable
OmniPCX
SRS
LAN 1

OmniPCXRecord
SIPRecServer

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 34/238
What is the process for one recorded call with SIPREC Recording mode ?

1- There is no port mirroring in SIPREC recording mode. The SBC component will send the SIP
messages and SIP RTP to OmniPCX Record.

2- When “Ext A” extension answers a call or makes a call ( and until the end of the conversation
), a SIP dialog is established between OXE and SIP Provider thru the SBC component.

3- As soon as the SIP call is established, The SBC initiates another SIP dialog to the
OmniPCXRecord (SRS process).
OmniPCX Record (SRS process) receives the SIP messages signaling ( INVITE, 200 OK, BYE,
etc… ) from the SBC .

4- When the SIP signaling is processed, the RTP flow is duplicated by the SBC to the OmniPCX
Record (SIPREC process).

5- At the disconnection of the call, the OmniPCXRecord (SRS process) receives the SIP BYE event
from the SBC. The RTP flow is stopped.

6- The OmniPCX Record builds the record with the received audio and the detailed call
information.

Regarding the detailed information, the OmniPCXRecord is able to decrypt the SIP events
information by the SRS process ( for instance, “from”, “to”, beginning / end of the record )
and to build the record detailed information.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 35/238
3.12 Beep generation

The OmniPCX Record can request a “beep” tone (tone: 22) or a voice guide (voice guide: 565) to all
parties involved in a call to inform the users that the current conversation is recorded.

The service is executed if the device is in the conversation state and if a recording operation has
been launched.

3.12.1 BEEP Tone

From CSTA point of view :

In DR-Link, the OmniPCX Record sends the CSTA request to the OXE :
StartBeep_DR: Device_ID, tone, presence Timer, silence Timer”
Example taken from the recorder logs, for the TDM extension 3005:
[GetStartBeepRequest_DR] Device :3005 ToneId:22 presenceDuration:50 silenceDuration:15

In IP DR-Link, the OmniPCX Record sends the CSTA request to the OXE :
StartBeep : Device_ID, tone, presence Timer, silence Timer”
Example taken from the recorder logs, for the IP Phone 3000:
[GetStartBeepRequest] Device :3000 ToneId:22 presenceDuration:50 silenceDuration:15

Four parameters are required to characterize a square pulse signal.


- “beeped” extension: extension on which the beep tone is received.
- “tonality” : the used OXE tone is tone 22.
- “presence” timer of the pulse : the timer is fixed and is equal to 50ms.
- “silence” timer of the pulse : value can be 15, 30, 45, 60 seconds.

From Audio point of view :

The requests “StartBeep_DR” and “StartBeep” handles a generation of the tone to the recorded
user.

Schema of the beep generation :


Presence Silence (15s, 30s, 45s, 60s)

Time
OmniPCX Record - Release 2.3 and above – ALESVC50173
OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 36/238
The silence timer can be chosen in OmniPCX Record Console / Site Administration/ System :

It is possible to request only one beep. This beep will be generated at the beginning of the recorded
conversation and so in theory, the value of silence timer must be set to 0.

To do it, in OmniPCX Record Console / Site Administration/ System:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 37/238
3.12.2 Voice Guide
New feature available from the OmniPCX Record 2.4.0.4 (OXE Release R12.3.1 m4.501.11 or upper).
To play a voice guide instead of the beep tone.

From CSTA point of view :

In DR-Link, the OmniPCX Record sends the CSTA request to the OXE :
StartBeep_DR: <mcdu> <vg> <presence_duration=50> <silence_duration=0>
Example taken, from the recorder logs, for the TDM extension 3005:
[GetStartBeepRequest_DR] Device :3005 ToneId:565 presenceDuration:50 silenceDuration:0

In IP DR-Link, the OmniPCX Record sends the CSTA request to the OXE :
StartBeep_DR <mcdu> <vg> <presence_duration=50> <silence_duration=3>
Example taken from the recorder logs, for the IP Phone 3000:
[GetStartBeepRequest] Device :3000 ToneId:565 presenceDuration:50 silenceDuration:3

Four parameters are needed to play the Voice Guide.


- mcdu: extension on which the voice guide is received.
- vg: the used OXE voice guide is 565.
- “presence”: not used
- “silence”: not used

From Audio point of view :

The requests “StartBeep_DR” and “StartBeep” handles a generation of the voice guide to the
recorded user.

By configuration from the OmniPCX Record web console (Site Administration \ System), you are able
to configure a voice guide (it is the number 565 which is mandatory).

The voice guide number is the 565 (and could not be another voice guide number).
The associated message (according to the choosen languge) has to be created and assigned to a GD,
GA or GPA board.
As soon as a recorded call is established, the voice guide is played at the beginning. The recording is
starting at the beginning of the call (so during the period the voice guide is played, the parties in
conversation can speak together and are recorded).

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 38/238
4 OmniPCX Enterprise Management for recording with the Alcatel-
Lucent OmniPCX Record

4.1 DR-Link & IP DR-Link : Record Authorization for user


An administrator can authorize / protect a given extension regarding the DR-Link & IP DR-Link
recording.

The parameter called “Record Authorization” in Categories / Phone Facilities Categories from
the “Rights” menu must be set accordingly:

“0” means unauthorized recording. When recording is forbidden on a device, the recording request is
rejected with the “SECURITY VIOLATION” error code.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 39/238
4.2 DR-Link recording mode

4.2.1 Creation of PCM2 board

Create the PCM2 board as a Z30 board.


Do not forget to set the following parameters
− Networking recording use to True.
− IVR protocol to “No IVR Protocol”

4.2.2 Create Virtual Equipments channels

Create 30 new users on the Z30 board by declaring analog sets with a physical location on this
board (30 phone numbers must be defined in the Phonebook). Start from Eqt Address 1 to 30.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 40/238
4.2.3 OmniPCX Enterprise Software locks

There are 2 software locks related to the DR-Link feature :


− Lock 130 must be equal to 2 or 4 ( 2 means only one “other recorder” (like OmniPCX
Record) and 4 means multiple “other recorder” (same type DR_Link))
− Lock 145 gives the maximum available local recording channels ( so maximum simultaneous
DR-Link recordings )

4.3 Remote DR-Link recording mode


In network DR-Link mode, there are two nodes: a centralized node and a remote node.
The Centralized node is the node where PCM2 resources are located.

4.3.1 Centralized DR-Link node

4.3.1.1 Centralized DR-Link node -- CSTA parameter


In the centralized node, in mgr: Applications\CSTA\
Recording Centralizing node : YES
Associate Recording node : -1

4.3.1.2 Centralized DR-Link node - Creation of PCM2 board and virtual equipments channels

Idem as in DR-Link ( chapter 3.2.1 & 3.2.2 )

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 41/238
4.3.2 Remote DR-Link node

4.3.2.1 Remote DR-Link node - CSTA parameter

In the remote node, in mgr : Applications\CSTA\ :


Recording Centralizing node : NO
Associate Recording node : Centralized node number

4.3.2.2 Remote DR-Link node – Recording resources

In the remote node, check in “mgr : Applications\ Recording resource” that the recording resources
of the centralized node are present.

If the recording resources are not present, please make an audit of the recording resources
from the centralized DR-Link node to the remote DR-Link node. This is the choice 53 (Recording
Resource ) in the audit menu.

4.3.2.3 Remote DR-Link node - OmniPCX Enterprise Software locks


There are 2 software locks related to the remote DR-Link feature:
− Lock 130 must be equal to 2 or 4 ( 2 means only one “other recorder” (like OmniPCX
Record) and 4 means multiple “other recorder” (same type DR_Link))
− Lock 164 gives the maximum available remote recording channels (so maximum
simultaneous recordings in the remote DR-Link node)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 42/238
4.4 IP DR-Link recording mode

In IP DR-Link recording type, the recorded set (8 Series Ip Touch sets + 8000 Series sets + 8082/noe
set and the IP Desktop Softphones) will duplicate its RTP flow directly to the IP Logger.

To use the IP DR-Link recording mode, it is necessary to create an IP Logger in the OmniPCX
Enterprise and to validate the parameter Application\CSTA\ “DR-Link on IP supported” = YES.

4.4.1 IP DR-Link – creation of an IP logger = OmniPCX Record


Under Application\Recording IP logger, create an IP logger which is the OmniPCX Record

In case of OmniPCX Record HA, create two IP loggers:


- IP logger 1 = Primary OmniPCX Recorder
- IP logger 2 = Secondary OmniPCX Record

4.4.2 IP DR-Link – parameter Application\CSTA\ “DR-Link on IP supported”


To validate the IP DR-Link mode, please validate the parameter Application\CSTA\ “DR-Link on IP
supported” = YES.

If the parameter “DR-Link on IP supported” = NO, IP Phone will no more duplicate


its RTP to IP Logger and could be recorded in DR-Link mode.
If a modification is done for this parameter, a reboot of the OmniPCX Enterprise is
necessary.

4.4.3 IP DR-Link - OmniPCX Record Software locks


There are 2 software locks related to the IP DR-Link feature:
− Lock 130 must be equal to 2 or 4 ( 2 means one other recorder as OmniPCX Record, 4 means
multiple “other recorder” (same type DR_Link))
− Lock 334 gives the maximum available IP recording flows ( based on the maximum number
of IP devices recorded at the same time )

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 43/238
4.5 Mixed recording mode
It is necessary to manage both DR-Link & IP DR-Link recording modes shown above.

5 4059EE IP Attendant Management – Port Mirroring


This chapter concerns ONLY the recording of 4059EE IP WITH PORT MIRRORING.
The next chapter concerns the recording of 4059 EE IP WITH RTP REDIRECTION.

5.1 On the OmniPCX Enterprise


Creation of the A4059 IP attendant. Fill the associated phone set.

4068 set

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 44/238
5.2 On the OmniPCX Record Server
5.2.1 Service “IP Attendant Recording Server”
In Console / Manage / Server : start the IP Attendant Recording Server

5.2.2 Management of the LAN Network Adaptor for Port Mirroring

In Console / Manage / System : Choose the correct LAN network adapter which is used for the
port mirroring of the Attendant IP 4059EE

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 45/238
It means that on the OmniPCX Record, there are two LAN adapters :
LAN 1 is used for the DR-LINK & IP DR-Link
LAN 2 is used for the IP sniffing of the Attendant IP 4059EE

5.2.3 Configuration of the Network Adaptor requested for Port Mirroring

In Windows \ Control Panel \ Network and Internet\Network and Sharing Center, configure the
LAN2 :

For instance, I configured the local network like this:


Local Area Connection
192.168.6.47
255.255.255.0
192.168.6.1
this network adaptor concerns the DR-Link and IP DR-Link

Local Area Connection 2


1.1.1.1
255.255.255.0
The Second LAN card should simply be configured with 1.1.1.1 and the relevant
subnet mask. The reason for this is that the second LAN card only Listens for traffic and
does not send any.

5.2.4 Creation of Attendants in the OmniPCX Record Console for Port Mirroring

In OmniPCX Record Console / Manage/ Extension : create an extension which is the associated
set of the Attendant and fill the mac address of this IP phone set. The parameter “Enable
Recording Redirect” is not validated.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 46/238
5.3 On the Attendant PC
5.3.1 Installation of the Client Utility Notifier
In Console / Download : choose IP Attendant Utility and install it

After installed, the application icon will appear in the System tray :

5.3.2 Configuration and start of the Client Utility Notifier


To open the configuration Window, do a Right Click on the icon and select Configuration

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 47/238
In Configuration, fill the following information and Save :
The IP @ of the OmniPCX Record Primary Server
The IP @ of the OmniPCXRecord Secondary Server
The extension associated to the attendant

For Port Mirroring Mode

Then, Start the Service

Remark : The Alcatel-Lucent 4059 EE Attendant must be running before starting the
"OmniPCX Console Recording Agent"

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 48/238
Once the OmniPCX Console Recording Agent is connected, the Application Icon will turn
green.

5.4 On the IP network


Manage a switch which duplicates the RTP flow of the associated phone set of the attendant to the
LAN2 network adaptor of the OmniPCX Record.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 49/238
6 4059EE IP Attendant Management – RTP Redirection
This chapter concerns ONLY the recording of 4059 EE IP WITH RTP REDIRECTION.
This recording mode implicates that the 4059EE machine is associated to an IPDSP (embedded into
the same machine)

Environment (4059 EE IP Attendant – RTP Redistribution) :

Headset

6.1 OmniPCX Enterprise Configuration


Open a telnet window to the OXE IP address.
Login mtcl and type mgr

6.2 IP Desktop creation


Users (Creation)
Directory Number : 3010
Directoey name : IP DSP
Shelf Address : 255

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 50/238
Board Address : 255
Equipment Address : 255
Set Type : IPTouch 8068
Users\Tsc IP User
IP-SoftPhone Emulation : YES

6.3 IP attendant 4059EE creation


Attendant\Attendants Group (Create)
Physical Directory N° : A3000
Attendant Group Id :0
Name : GROP

Attendants\Attendant Sets (Create)


Physical Directory N° : 3011
Attendant Id :1
Attendant Group Id :0
Shelf Address : 255
Board Address : 255
Equipment Address : 255
Set Type : 4059 IP

Associated phone set : 3010

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 51/238
6.4 On the OmniPCX Record Server
6.4.1 Service “IP Attendant Recording Server”
In Console / Manage / Server : start the IP Attendant Recording Server

6.4.2 Creation of Attendants in the OmniPCX Record Console for RTP Redirection

In OmniPCX Record Console / Manage/ Extension : create an extension which is the associated
set of the Attendant and fill the mac address of this IP phone set. The parameter “Enable
Recording Redirect” is validated.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 52/238
6.5 On the Attendant PC
6.5.1 Installation of the Client Utility Notifier
In Console / Download : choose IP Attendant Utility and install it

After installed, the application icon will appear in the System tray :

6.5.2 Configuration and start of the Client Utility Notifier


To open the configuration Window, do a Right Click on the icon and select Configuration

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 53/238
In Configuration, fill the following information and Save :
The IP @ of the OmniPCX Record Primary Server
The IP @ of the OmniPCXRecord Secondary Server
The extension associated to the attendant

For RTP Redirection Mode


Validate the parameter “Enable RTP Re-Direction Mode”.
Then the “network adapter” parameter will scroll down the different Ethernet cards of the
4059 IP Attendant machine. Choose the correct one which will send the IP flow to the
OmniPCXRecord.

Then, Start the Service

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 54/238
Remark : The Alcatel-Lucent 4059 EE Attendant must be running before starting the
"OmniPCX Console Recording Agent"

Once the OmniPCX Console Recording Agent is connected, the Application Icon should turn
green.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 55/238
7 SIP Recording mode management

7.1 On the OmniPCX Record Server


7.1.1 Service “SIP Recording Server”
In Console / Manage / Server : start the SIP Recording Server

7.1.2 Management of the LAN Network Adaptor for Port Mirroring

In Console / Manage / System : Choose the correct LAN network adapter which is used for the
port mirroring of the SIP Phone set

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 56/238
It means that on the OmniPCX Record, there are two LAN adapters :
LAN 1 is used for the DR-LINK & IP DR-Link
LAN 2 is used for the IP sniffing of the SIP Phone set

7.1.3 Configuration of the Network Adaptor requested for Port Mirroring

In Windows \ Control Panel \ Network and Internet\Network and Sharing Center, configure the
LAN2 :

For instance, I configured the local network like this:


Local Area Connection
192.168.6.47
255.255.255.0
192.168.6.1
this network adaptor concerns the DR-Link and IP DR-Link

Local Area Connection 2


1.1.1.1
255.255.255.0
The Second LAN card should simply be configured with 1.1.1.1 and the relevant
subnet mask. The reason for this is that the second LAN card only Listens for traffic and
does not send any.

7.1.4 Creation of the extension SIP in the OmniPCX Record Console

In OmniPCX Record Console / Manage/ Extension : create the extension SIP and fill the mac
address of this phone set.

7.2 On the IP network


Manage a switch which duplicates the RTP flow of the SIP phone set to the LAN2 network adaptor of
the OmniPCX Record.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 57/238
8 Activating Support Traces in the OmniPCXRecord

In case that it is not possible to identify an issue, it will be necessary to enable the software traces.

8.1 Where to configure traces?

You can configure the traces under Console / Manage / System

When you click on this link, it displays the following screen:

The trace files produced are generated for all of the OmniPCX RECORD services, these consist of the
following:
• Archiving Server
• Administration Auditing
• Omni Console Recorder
• General Recorder
• Recording Transfer Service
• Replication Service
• SNMP Agent
• Screen Capture
• Recording Mixer

There are now two modes of traces :


1. Restricted Mode (Default)
2. Unrestricted Mode

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 58/238
8.2 Restrictive mode
This mode keeps the log growth restricted by configuring the maximum file size and the number of
files option.

Maximum File Size *


Specifies the maximum size of a trace file. By default the value is set to 5000KB.

No of Files *
Specifies the number of days that trace files should be regenerated before recycling. By default the
value is set to 20.

Update Button
Saves any configuration changes.

Marker
Marker Comment

Insert Button
Inserts the Marker Comment into the recorder trace file. This enables a support engineer to easily
identify the entries that were being written to the trace file when the user indicated that a problem
had been identified.

Note: These Traces are only for the log files which are written in Logs folder
C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Logs

Note: Auto log Backup of one day and Auto file deletion older than last 3 days is not offered in
Restricted Mode

Note: Logs backup and Snapshot features are not available in restricted mode.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 59/238
8.3 Unrestrictive mode
This mode offers unrestricted file size. It creates the log files on hourly basis. The system will have
24 log files in a day.

Export Backup Log


Specifies that the Trace files should be backed up automatically. By default, files are zipped into a
single compressed file and backed up approximately every 1.5 hour (5000 Seconds).

Note: The compressed zip file containing the trace files is named using the current date.

If you want to modify the backup interval, you can do so by amending the “LogBackupTimerInterval”
in the following file:
C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\SNMP Agent\OmniPCXRECORD-
SNMPAgent.exe

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 60/238
Backup Log Path
The trace files will be zipped into a single compressed file and backed up to this path in a subfolder
named “OPR Schedule Logs Backup”

Note: The backup process can operate using a “Copy (Default)” or “Cut” method.
• Copy, duplicates the trace files in a compressed zip file, and copies the file to the backup
path, leaving the existing files in the original folder (Recommended)

• Cut, duplicates the trace files in a compressed zip file, copies them to the Backup path and
the ‘deletes’ the traces from the original file.

Your preferred method can be specified by setting the LogBackupMethod=”Copy” or “Cut” in the
following configuration file:

C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\SNMP Agent\OmniPCXRECORD-


SNMPAgent.exe

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 61/238
Additionally, the backup process can be configured to delete old backed up zip files at set intervals.
To do this you must amend the “EnableOldLogsDeletion” & ”DeleteLogFilesOlderThanDays”
parameters in the following same file, as shown below:

Update Button
Saves any configuration changes.

Snapshot Button
Takes an instant 1 day snapshot of the current trace files, zips them into a compressed file and
stores them in a folder named “Backup Snapshot” located under the “Backup log path”

Marker
Marker Comment

Insert Button
Inserts the Marker Comment into the recorder trace file. This enables a support engineer to easily
identify the entries that were being written to the trace file when the user indicated that a problem
had been identified.

Once done, click on Update button to save these specifications

Note: After changing traces mode, user is automatically logged out from the web interface and
OmniPCX RECORD suite requires a restart.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 62/238
9 How to control the LAN reliability
This part described a solution to check the correct behavior of the IP network/LAN.
The tool which is proposed is the ping command.
Let’s see below 2 kinds of ping test:
- OmniPCX Record server to OmniPCX Enterprise
- OmniPCX Record server to Packetizer (BlueBox)

9.1 Test ping to control the communication between OmniPCX Record and
OmniPCX Enterprise
9.1.1 Environment of the test

Ping 1
Ping from the OmniPCX Record server to the OmniPCX Enterprise
Ping 2
Ping from the OmniPCX Enterprise to the OmniPCX Record server
Ping 3
Ping from another PC (let's name it PC Test “1”) on the same LAN / Router / Switch /Hub
as the OmniPCX Record server to another PC (let's name it PC Test “2”) on the same LAN /
Router / Switch / Hub as the OmniPCX Enterprise.
Ping 4
Ping from PC Test “1” to PC Test “2”.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 63/238
9.1.2 Goal of the tests
The goal of the above is to ping both ways between OmniPCX Record server and OmniPCX Enterprise,
and to ping both ways from 2 PCs connected to same LAN segments as the OmniPCX Record and the
OmniPCX Enterprise so that we can see if the trouble is at LAN or OXR or OXE level.
Ping 3 Ping 4 Ping 1
Ping tests and are there in case you are losing some packets in tests
Ping 2
and .

Hypothesis according to the results:


Ping 1 Ping 2 Ping 3 Ping 4
=> If you are losing packets in tests and but not in tests and ,
then it will mean that something is wrong either at OXE or OXR or both OXE and OXR Level.
Ping 3 Ping 4
=> If you are losing packets in at least test or , then it will mean that there is
something wrong at LAN level.

9.1.3 Script to run on the OmniPCX Record

On the OmniPCX Record server, create a batch file named "pingOXRtoOXE.bat" that will contain:

mode con cols=80 lines=9


:START
@echo off
ping 192.168.2.20 -n 1
IF %ERRORLEVEL%==1 echo Ping error on %date% at %time% >>"Ping Errors OXR to OXE.txt"
timeout /t 01>nul
cls
goto START

Warning:
192.168.2.20 is the OXE IP address.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 64/238
This batch will create the "Ping Errors OXR to OXE.txt" file only if there are some ping errors. It will
contain the date and time.

Launch the "pingOXRtoOXE.bat" file and do not close the console, otherwise it will stop the script.

9.1.4 Script to run on OmniPCX Enterprise

On the OmniPCX Enterprise, create a batch file named "pingOXEtoOXR" that will contain:

while true
do
date >> LOGOXEtoOXR.TXT
ping 192.168.1.10 -c 1 >> LOGOXEtoOXR.TXT
echo >> LOGOXEtoOXR.TXT
echo >> LOGOXEtoOXR.TXT
sleep 1
done

Warning:
192.168.1.10 is the OXR IP address.

This batch will create the "LOGOXEtoOXR.TXT" file that will contain all pings (good and bad) since I
did not find a way to log only bad ones.
The size of this file will be roughly 1Mb per hour.

Gives all rights to the file "pingOXEtoOXR" as follow:


chmod 777 pingOXEtoOXR

Launch it as follow:
Open a console and telnet the OXE, the enter: ./pingOXEtoOXR
Keep the console open otherwise the script will stop.

To stop it, just close the telnet console.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 65/238
9.1.5 Script to run on PC Test

On PC Test “1”, create a batch file named "pingPC1toPC2.bat" that will contain:

mode con cols=80 lines=9


:START
@echo off
ping 192.168.2.40 -n 1
IF %ERRORLEVEL%==1 echo Ping error on %date% at %time% >>"Ping Errors PC1 to PC2.txt"
timeout /t 01>nul
cls
goto START

Warning:
192.168.2.40 is the PC Test “2” IP address.

This batch will create the "Ping Errors PC1 to PC2.txt" file only if there are some ping errors. It will
contain the date and time.

Launch the "pingPC1toPC2.bat" file and do not close the console, otherwise it will stop the script.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 66/238
On PC Test “2”, create a batch file named "pingPC2toPC1.bat" that will contain:

mode con cols=80 lines=9


:START
@echo off
ping 192.168.1.30 -n 1
IF %ERRORLEVEL%==1 echo Ping error on %date% at %time% >>"Ping Errors PC2 to PC1.txt"
timeout /t 01>nul
cls
goto START

Warning:
192.168.1.30 is the PC Test “1” IP address.

This batch will create the "Ping Errors PC2 to PC1.txt" file only if there are some ping errors. It will
contain the date and time.

Launch the "pingPC2toPC1.bat" file and do not close the console, otherwise it will stop the script.

9.1.6 Wireshark on the OmniPCX Record server


From the time all batches are running, launch the Wireshark on the OXR.

9.1.7 Issue occurred: information to be collected


As soon as an issue occured stop all batch scripts.
=> If "Ping Errors PC1 to PC2.txt" or "Ping Errors PC2 to PC1.txt" files contains loss of packets, then
the trouble is at LAN level.
=> See with the end-customer IT manager.

=> If "Ping Errors OXR to OXE.txt" or "LOGOXEtoOXR.TXT" files contains loss of packets, then the
trouble is at OmniPCX Enterprise or OmniPCX Record server level.
=> Get the following files and open a ticket at ALE Technical Support:
- "Ping Errors OXR to OXE.txt" file
- "LOGOXEtoOXR.TXT" file
- "Ping Errors PC1 to PC2.txt" file
- "Ping Errors PC2 to PC1.txt" file
- The OmniPCX Enterprise infocollect.
- The OmniPCX Record Wireshark log.
- All OmniPCX Recordlog files
- The date time the trouble occurred.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 67/238
9.2 Test ping to control the communication from OmniPCX Record to Packetizer
9.2.1 Environment of the test

Ping 1
Ping from the OmniPCX Record server to the Packetizer (BlueBox)
Ping 2
Ping from the OmniPCX Record server to the PC Test “2” on the same LAN / Router /
Switch /Hub as the Packetizer
Ping 3
Ping from the PC Test “2” on the same LAN / Router / Switch /Hub as the Packetizer to
OmniPCX Record server

9.2.2 Goal of the tests


The goal of the above is to ping OmniPCX Record server to Packetizer, and to ping OmniPCX Record
server and PC (connected on same LAN segments as the Packetizer) so that we can see if the trouble
is at LAN or OmniPCX Record server or Packetizer level.
Ping 2 Ping 3 Ping 1
Ping tests and are there in case you are losing some packets in tests .

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 68/238
Hypothesis according to the results:
Ping 1 Ping 2 Ping 3
=> If you are losing packets in tests but not in tests and , then it will
mean that something is wrong the Packetizer Level.
Ping 2 Ping 3
=> If you are losing packets in at least test or , then it will mean that there is
something wrong at LAN level.

9.2.3 Scripts to run on the OmniPCX Record

9.2.3.1 OmniPCX Record server to Packetizer

On the OXR, create a batch file named "pingOXRtoPacketizer.bat" that will contain:

mode con cols=80 lines=9


:START
@echo off
ping 192.168.2.50 -n 1
IF %ERRORLEVEL%==1 echo Ping error on %date% at %time% >>"Ping Errors OXR to Packetizer.txt"
timeout /t 01>nul
cls
goto START

Warning:
192.168.2.50 is the Packetizer IP address.

This batch will create the "Ping Errors OXR to Packetizer.txt" file only if there are some ping errors.
It will contain the date and time.

Launch the "pingOXRtoPacketizer.bat" file and do not close the console, otherwise it will stop the
script.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 69/238
9.2.3.2 OmniPCX Record server to the PC Test “2”

On the OXR, create a batch file named "pingOXRtoPC2.bat" that will contain:

mode con cols=80 lines=9


:START
@echo off
ping 192.168.2.40 -n 1
IF %ERRORLEVEL%==1 echo Ping error on %date% at %time% >>"Ping Errors OXR to PC2.txt"
timeout /t 01>nul
cls
goto START

Warning:
192.168.2.40 is the PC Test “2” IP address.

This batch will create the "Ping Errors OXR to PC2.txt" file only if there are some ping errors. It will
contain the date and time.

Launch the "pingOXRtoPC2.bat" file and do not close the console, otherwise it will stop the script.

9.2.4 Script to run on PC Test

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 70/238
On PC Test “2”, create a batch file named "pingPC2toOXR.bat" that will contain:

mode con cols=80 lines=9


:START
@echo off
ping 192.168.1.10 -n 1
IF %ERRORLEVEL%==1 echo Ping error on %date% at %time% >>"Ping Errors PC2 to OXR.txt"
timeout /t 01>nul
cls
goto START

Warning:
192.168.1.10 is the OmniPCX Record IP address.

This batch will create the "Ping Errors PC2 to OXR.txt" file only if there are some ping errors. It will
contain the date and time.

Launch the "pingPC2toOXR.bat" file and do not close the console, otherwise it will stop the script.

9.2.5 Wireshark on the OmniPCX Record server


From the time all batches are running, launch the Wireshark on the OmniPCX Record server.

9.2.6 Issue occurred: information to be collected


As soon as an issue occurred, stop all batch scripts.
=> If " Ping Errors OXR to PC2.txt " or " Ping Errors PC2 to OXR.txt " file contains loss of packets, then
the trouble is at LAN level.
=> See with the end-customer IT manager.

=> If "Ping Errors OXR to Packetizer.txt" file contains loss of packets, then the trouble is at
Packetizer level.
=> Get the following files and open a ticket at ALE Technical Support:
- "Ping Errors OXR to Packetizer.txt" file
- "LOGOXEtoOXR.TXT" file
- "Ping Errors PC2 to OXR.txt" file
- "Ping Errors OXR to PC2.txt" file
- The OmniPCX Enterprise infocollect.
- The OmniPCX Record Wireshark log.
- All OmniPCX Recordlog files
- The date time the trouble occurred.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 71/238
10 Calls not being recorded / No call recording
This is the common main issue. See below the method to check the configurations

10.1 In the OmniPCX enterprise


10.1.1 Common checks for DR-Link & IP DR-Link
1- According to the recording mode, verify if the OXE settings are correctly configured as
described in the Chapter 3 “Principle of recording with the Alcatel-Lucent OmniPCX
Record”.

2- According to the recording mode, verify the OmniPCX Enterprise software locks with
spadmin option2

• Ensure lock 130 (CSTA voice recording type) = 2 or 4.

• Ensure lock 145 (CSTA Recording B channel) is set to the maximum available recording
channels (so maximum simultaneous recordings in the DR-Link node)

• Ensure lock 334 (Max. IP recording) is set to the maximum number of IP Extensions to be
simultaneously recorded via the IP-DR Link.

• Ensure lock 164 (CSTA Record networked) is set to the maximum available remote recording
channels (so maximum simultaneous recordings in the remote DR-Link node)

• Ensure lock 386 (UC as a service) is set to 0 to use the limit of the locks 145, 164 or 334.
If the lock 386 is set to 1 that means you are in “Cloud” configuration. The above locks (145,
164 or 334) will be not used and the limit must be managed from System \ Other System
Param. \ RTU Parameters:
CSTA recording B Channel => replaces the lock 145
Remote recording TS => replaces the lock 164
CSTA record B Channel Over IP => replaces the lock 334

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 72/238
3- Please verify if the users are added to the right class of service (with record
authorization = 1). In case of modification of class of service of one user, the
corresponding set must be rebooted.
4- Please verify if the Recorder server is registered with the OXE.

Log on the PBX (using for example mtcl/mtcl) then execute telnet localhost 2555
Then enter character D (shift + d)

Within the telnet session, you can display the list of all connected CSTA clients, you have to see
which one is your Recording system (by using for example the IP address). Notice the related client
number.

dbg> ls
1 : [172.27.138.25] CSTA (CCATServer, Ecma II, TSERVERCCA, Null, SessionAssociated, Authenticate) - 3
monitoring(s)
client connection time : 15:48:52 - 15 Dec 2014 ( 1j 1h 45min 53sec )
2 : [xa000011] CSTA (AFE, Afe II, AFE, CSTA V2, SessionAssociated) - 21 monitoring(s)
client connection time : 14:46:51 - 10 Dec 2014 ( 6j 2h 47min 54sec )

3 : [xa000011] CSTA Debug


client connection time : 17:31:35 - 16 Dec 2014 ( 3min 10sec )

4 : [172.27.138.30] CSTA (DR_LINK, Ecma II, TAPIPREMSERV, Null, SessionAssociated) - 5 monitoring(s)


client connection time : 17:34:36 - 16 Dec 2014 ( 9sec )

The CSTA client corresponds to the OmniPCX Record which is typed DR-Link.
In the above example the OmniPCX Record at the IP address (172.27.138.30) is typed DR_LINK.

5- Please verify if the user is monitored by the OmniPCX Record

Use the same command telnet localhost 2555

To see all users monitored with the OmniPCX Record, enter the command “log –m <client
number>”

In our instance :
dbg> log –m 4

dbg> ls -m 4
11015 :
(XrefId=184756993, client=4, filter=2)
11010 :
(XrefId=185010176, client=4, filter=2)
11006 :
(XrefId=185076224, client=4, filter=2)
11011 :
(XrefId=186861058, client=4, filter=2)
11008 :
(XrefId=190800384, client=4, filter=2)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 73/238
6- Command cstainfo in the OmniPCX Enterprise :

The cstainfo is a realtime command very helpful to see the current used OmniPCX Enterprise
locks

New info in cstainfo


command for the
multiple connection.

In CSTA locks :
===============

Feature NICE – DR Link : corresponds to the established type of recording link

=> For instance : Feature NICE – DR Link = DR Link


It means the recording link is OmniPCX Record. “DR-Link” corresponds to the lock 130 equal
to 2 or 4.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 74/238
Nice recording time slot : corresponds to the current simultaneous recording PCM2 channels
used in DR-Link

=> For instance : Nice recording time slot = 3 <400 max >
It means that 3 PCM2 channels are currently used and that 400 is the number max of
simultaneous PCM2 channels used in DR-Link. Here, the lock 145 = 400.

Nice recording net time slot : corresponds to the current simultaneous recording PCM2
channels used in remote DR-Link

=> For instance : Nice recording net time slot = 24 <200 max >
It means that 24 PCM2 channels are currently used for the remote DR-Link and that 200 is the
number max of simultaneous PCM2 channels for the remote DR-Link. Here, the lock 164 =
200.

DR_Link IP recording : corresponds to the current simultaneous records in IP DR-Link

=> For instance : Nice recording time slot = 3 <400 max >
It means that 3 PCM2 channels are currently used and that 400 is the number max of
simultaneous PCM2 channels. Here, the lock 145 = 400.

Remark : the limits of the locks are in the OmniPCX Record Hardware-Software specifications

In CSTA MONITORING REQUESTS :


===========================

NICE : corresponds to the maximum monitoring of users for the recording

=> For instance : NICE = 3 <1000 max >


It means that 3 users monitoring are currently used and the maximum number of users
monitoring is 1000. 1000 corresponds to the PARAMAO 21 in hardware.mao

Remark : the limit of the PARAMAO 21 is equal to 1600 from OmniPCX Record.

7- Please check the incidents 4032 in the OXE using incvisu command

For instance :
000001M|---/--/-/---|=4:4032=CSTA : monitoring limit exceed type=DRLink maximun=1000

It means that the maximum of users monitoring for the OmniPCX Record is reached.

In order to increase this number to the maximum 1600, please use ACTIS.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 75/238
8- Please verify if the extension type is supported in the used recording mode. The
supported extensions list is available in the OmniPCX RECORD Hardware and Software
specification guide.

10.1.2 Additional Checks for DR-Link

1- Please verify that 30 users are created per each PCM2 board

2- Please check the Jumper settings on the PCM2 board when using Crystal Hardware. It should be
set as shown below to receive the connection of the OmniPCX Record packetizer.

3- Please verify that the PCM2 board is IN SERVICE with cplstat command of the OmniPCX
Enterprise

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 76/238
4- Please verify the ALL terminals of the PCM2 couplers are IN SERVICE with the listerm command
of the OmniPCX Enterprise

5- Please verify there is no dis-synchronization with the PCM2 board with incvisu

For instance : issue of dis-synchronization : Incvisu


10/10/14 14:07:27 000001M|002/05/0/000|=4:2112=NOS alarm on MIC/SYNC access
10/10/14 14:07:37 000001M|002/05/0/000|=5:2102=MIC/SYNC access back to normal
21/10/14 15:04:59 000001M|002/05/0/000|=4:2112=NOS alarm on MIC/SYNC access
21/10/14 15:05:09 000001M|002/05/0/000|=5:2102=MIC/SYNC access back to normal
24/10/14 13:57:28 000001M|002/05/0/000|=4:2112=NOS alarm on MIC/SYNC access
24/10/14 13:57:38 000001M|002/05/0/000|=5:2102=MIC/SYNC access back to normal

6- Please check the loopback is put on the packetizer

For Crystal and Common hardware, the loopback must be put on the packetizer as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 77/238
7- Please verify if the blue box is up and running. The lights on the Blue Box should be as below:

If the lights in front of the paketizer are not has shown below, Please flash again the packetizer to
be sure you have loaded the correct firmware (for DR-Link recording mode).

8- Flashing the packetizer

This is detailed clearly in the Install Guide (chapter 10.1.2 Flashing the Packetizer).
The name of the firmware files are PK-AMIGO-PRI-TDM or PK-AMIGO-PRI-TDM-ULAW. According to our
configuration, one of this file must be selected when extensions are recorded in DR-Link mode.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 78/238
9- Please check the cabling

PCM 2 crystal hardware

OmniPCX Record Server Packetizer Blue Box Common Hardware

Common Cat 5 cable

Lan Ethernet cable

PCM 2 Hardware Common : Use the NetW connector ( Front Face of the Female PCM Board
connector ) when using a direct cable

RJ45 pin 1 2 3 4 5 6 7 8

NETW II RX+ RX- TX+ TX-

PBX X TX+ TX- RX+ RX-

There is different category 5 cable type , please use the STP ( Shielded Twisted Pair ) to protect
against interference , and limit the length to 1,5 meter.
The Shield Twisted Pair cable contains a protection around the twisted pair , this cable is
surrounded by a shielding.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 79/238
PCM 2 crystal hardware

Packetizer Blue Box Crystal Hardware

3BA28166AA
OmniPCX
Alcatel
Lan Ethernet cable 4400

120 Ohms Connection Cable Type 5 :


Back Panel of the ACT connector View

C B A REMARKS

2 PCMTXb PCMTXa PCMTXa = PCM transmission wire a

3 PCMRXb PCMRXa PCMTXb = PCM transmission wire b


PCMRXa = PCM reception wire a
4
PCMRXb = PCM reception wire a
5

Cable : 3BA28166 AA : This cable allow the direct connection between PCM crystal
3BA28166AA RJ45E1NT 6 m system cable AA15

TY2 96PTSDIN ( 3BA 58010 ) Cable can be used to connect to Main frame distributor : different
length are available : form 10 m to 95 meter . To avoid synchronization issue , it is better to
use the direct cable 3BA28166AA.

Check the Led of the PCM board to detect synchronization issue and the incvisu maintenance
command to detect the LOS ( Lost of Synchronization ).
The LOS alarms can be some time very short and not permanent, so the Oxe record those alarm
in the incident list.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 80/238
10- Please check the incidents 2011 in the OXE using the incvisu command

In Common Hardware architecture, DR-Link solution requires additional Conference resources that can
involve possible incident in the system.
Thus, in case of failure for recording resource reservation, the following incident message is
generated.

The format is:


Incident 2011: not enough resources between crystal P1 and crystal P2 or not enough resources
forconference

P1 is the crystal number or the type of conference which is requested :


- 0 .. 99: resources are missing

- 250 : missing resources for telephonic conference

- 251 : missing resources for recording a simple conversation or a member of a three party
telephonic conference located in another crystal

- 252 : missing resources for recording a member of a three party telephonic conference in the
same crystal and in the same board (GA or GACONF)

- 253 : the telephonic conference resource has been reserved within a MEX or GD board and the
recording of a member in the same crystal P2 is impossible

10.1.3 Additional Checks for remote DR-Link

As in chapter 3.3.1.2, please check the recording resources are well broadcasted.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 81/238
10.2 In the OmniPCX Record
1- Please verify if the recording service is running.
In OmniPCX Record Console / Manage / Server :

2- Please verify if the licenses are available in the OmniPCX RECORD.


In OmniPCX Record Console / General / Licensing :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 82/238
3- Please verify if the node is well configured.
a. In IP DR-Link and mixed mode :
In OmniPCX Record Console / Manage / Nodes, check that IPDR logger address is filled

b. In DR-link :
In OmniPCX Record Console / Manage / Nodes :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 83/238
Check also the PCM2 settings : check that the packetizer is associated to the OXE node.
In OmniPCX Record Console / Manage / Edit PCM II Settings :

c. In Remote DR-link :
Check the remote OXE node is associated to the right centralized recorder
IMPORTANT: The Remote Node drop down list will NOT include Nodes that do not have a
Packetizer assigned to them.

In OmniPCX Record Console / Manage / Nodes :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 84/238
The above configuration corresponds to the schema :

4- Please verify if the extensions are correctly added in the OmniPCX RECORD and recording is
enabled on these extensions.
In OmniPCX Record Console / Manage / Extensions :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 85/238
5- Please verify if the extensions are well associated to the corresponding agent in the OmniPCX
RECORD.

In OmniPCX Record Console / Manage /Agents :

6- Please verify if any call recording & ROD filters rule is preventing the call from being recorded.

For more explanation, please see the Appendix A at the end of the document.
The rules of the recording and ROD filters are managed in recordings filters, agent and extension
tabs.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 86/238
In OmniPCX Record Console / Manage / Recording Filters : these are the system recording
rules added to the default action.

In OmniPCX Record Console / Manage / User rules => Edit Recording rule button : these are
the User rules

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 87/238
In OmniPCX Record Console / Manage / Extension : this is the ROD filter

See below the diagrammatic illustration of how the recording filters are applied:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 88/238
7- Please verify if there are any SQL errors in the OmniPCX Record logs. For e.g. search the word
“timeout” or “no space” in the recorder logs.

The OmniPCX Record logs are under the folder :

C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Logs\Recorder Logs

8- Please verify if there are any “Security Violation” errors in the recorder logs.
Eg :

[CheckCSTAError] CSTA error =Security violation found in dictionary


[CSTAMessageHandlerForCDR] CSTA event response error = Security violation

If these errors are observed then please check the following:


In DR-Link :
a) OXE and/or Omni PCX Record Licenses not available
b) Invalid PCM parameters (crystal number or coupler number or channel number or blue
box port number-9000 in OmniPCX RECORD).
c) Record authorization flag in the OXE.
d) if occurs at the start-up phase, it can mean a Dr-Link connection already exists. Check
the existing connection.
e) Firewall on the server machine should be turned off or the required ports should be
opened and authorised for OmniPCXRecord. Ports details are available in the section
“IP Flow Matrix” of the installation guide.

In IP DR-Link :
a) OXE and/or Omni PCX Record Licenses not available
b) IP logger not managed in the OmniPCX Enterprise under mgr>Applications>IPLogger
c) Record authorization flag in the OXE.
d) The parameter “DR-Link on IP” not well managed under mgr>Applications>CSTA. Modify
it to YES and reboot the OXE

e) If occurs at the start-up phase, it can mean a DR-Link connection already exists. Check
the existing connection.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 89/238
f) Firewall on the server machine should be turned off or the required ports should be
opened and authorised for OmniPCXRecord. Ports details are available in the section “IP
Flow Matrix” of the installation guide.

9- Please verify if there are any “Request Incompatible with objects” errors in the recorder logs.
If these errors are observed then please check the following:
In DR-Link :
a) The station is not monitored
b) The station is not supported by the CSTA

In IP DR-Link :
a) The station is not monitored
b) The station is not supported by the CSTA
c) The station is not an IP Phone

Verify if the extension type is supported in the used recording mode. The supported
extensions list is available in the OmniPCX RECORD Hardware and Software specification guide.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 90/238
11 Recordings without audio

If the call is recorded but without any Audio then please verify the following:

1- Please verify that the codecs being used are supported. Please note that G723 is unsupported.

To check in real time the used codec for one user, use the OmniPCX Enterprise command :
cnx d <directory_number>

2- If there are firewall(s) involved in the network then they should be configured to work with
OmniPCXRecord

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 91/238
See below the summary of the ports used by the OmniPCX Record :

Reference Port Type Port Number

Online Config Change Port TCP 10010

Extension Starting Port UDP 2000

UDP 2 Ports for each EXT to be recorded. Eg:

Total Extension Ports 100 EXT‟s requires ports 2000 2200

Recorder Port UDP 9097

Recorder Warm Standby Port TCP 30020

CSTA Connection Port TCP 2555

Silent Monitoring Ports UDP 9996,9998

IIS Port TCP/UDP 80

SNMP Port UDP 161/162

Screen Capture Agent and Server TCP 8044

Recording Server & Screen Capture Server UDP 8055

GDP For Screen Capture Agents to Broadcast UDP 11001

GDP For Screen Capture Server to Broadcast UDP 11010

Screen Capture Agent Location TCP 8066

Blue Box Connection Port TCP 9000,9001

SMTP port TCP 25

ROD - PRS Communication Port TCP 2011

Before configuring the Firewall to enable the ports, Please make a call (to be recorded) and check from the
recorder logs which pair of ports are proposed by the OmnipCX Record in the StartIPRecording request:

[StartIpRecording] 172.27.1xx.xx: StartIpRecording:3000 : 172.27.139.16 : 2005 : 2004

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 92/238
3- Please verify in the recorder logs if there are any exceptions especially right after Answer Start
event for that particular call.

The OmniPCX Record logs under C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord


Suite\Logs\Recorder Logs :

4- In case of a TDM call, please verify that there are not exceptions related to BlueBox in the same
recorder logs.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 93/238
12 OmniPCX Record Version upgrade

12.1 Transit version for upgrade of OmniPCX Record


The OmnipCX Record release 2.3.0.25 (higher version in 2.3) is no more supported.
This is the unique version compliant with the Release 2.4.0.x to restore SQL Database.
(for example, SQL Database Backup from 2.2.2.x or from 2.3.0.24 is not compliant to be restored directly in
2.4.0.x).

Please find below the transit OmniPCX Record version:

Current
version Final version or Transit version
2.2.2.10 Same License 2.2.2.22

2.2.2.22 New license 2.3.0.16

2.3.0.16 Same License 2.3.0.25


SQL Backup
2.3.0.16 Not possible to restore SQL Backup 2.3.0.16

2.3.0.25 New License 2.4.0.x

SQL Backup 2.3.0.25 Restore the SQL Backup of the 2.3.0.25

2.4.0.x Same License 2.4.0.x

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 94/238
12.2 Procedure to upgrade OmniPCX Record on different server machine
The OmniPCX Record in version 2.3.0.25 is installed on the SERVER1. The SQL Server is embedded.
How to upgrade to the version 2.4.0.x on another server machine (SERVER2).

OmniPCX Record 2.3.0.25 OmniPCX Record 2.4.0.x


SERVER1 SERVER2

-- upgrade to 2.4.0.x -- >

SQL Server :

SERVER1 – OmniPCX Record 2.3.0.25 SERVER2 – OmniPCX Record 2.4.0.x


-1- Backup the SQL Database (OmniPCX Record
2.3.0.25)
-2- Install the prerequisites for the 2.4.0.x
-3- Check the SQL collation
SQL Collation must be SQL_Latin1_General_CP1_Cl_AS
If not the case, Please change the SQL Collation
-4- Install the SQL Server
SQL Collation must be SQL_Latin1_General_CP1_Cl_AS
-5- Restore the backup file (step -1-)
-6- Install the OmniPCX Record 2.4.0.x
When prompting to create new database, DON’T tick
the box “Create new database”

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 95/238
Then tick the box as shown below to continue:

2 SQL databases are created:

-7- Configure the services and the IIS using the utility
CMAUtility
-8- Request of new license for 2.4.0.x is necessary

Note: OPCXR_Config is the newly created database and the OPCXR_Tenant_010001 is the one which was
upgraded.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 96/238
12.3 After upgrade: “invalid username or password” in OmniPCX Record web
console (server administration).
After an upgrade from an OmniPCX Record version which has 1 SQL database to a version which has 2 SQL
database, we get the warning “invalid username or password” when we try to connect via the OmniPCX Record
web console (server administration).
For the site administration, the password is the same as the password used in the previous version.

Let’s take an example for an upgrade from 2.3.0.15 to 2.3.0.25.


In this example, the SQL Server will be embedded on the OmniPCX Record server machine:

OmniPCX Record 2.3.0.15 OmniPCX Record 2.3.0.25

-- upgrade to 2.2.3.0.25 --
>

SQL Server : SQL Server:

Site administration
Connection to the OmniPCX Record via the web console:

Same password Server administration

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 97/238
13 Web console connection: “Invalid username or password”

13.1 Check the username is correctly entered


For example if you enter the username Admin, even if the password is correct you will get the warning “Invalid
username or password”.
The default username for the Administrator is admin.

13.2 Lost your admin password


If you lost your password, it is stored in the SQL Database(s).
There are 2 cases:

13.2.1 OmniPCX Record release lower than 2.3.0.19 (not included)


Check the username exists:
-1- Open the SQL Database Management Server
-2- check the username “admin” exists in the SQL table dbo.Users
=> from the SQL Management Studio, open the dbo.Users table:
Databases\OmniPCXRecord\Tables

=> the username admin exists, so the problem of log in is linked to a wrong password.
Password has to be changed.
To change the password of the admin username, we have to do it from the SQL Table dbo.Users.
=> note that the password is encrypted in the Table dbo.Users.

Procedure to change the password:


The password is encrypted. Please find below a password “Recorder1” which is encrypted:
F6niHkDzUw5GcjpnTNr4U6s0IdEmjaxEqC94SfE4GSzlPXgA1BhnSC0K4RQKbMmU/dYcCs3hhyUEvOZ
W2scWiXgW+Wz3iRDPzZG7vPA5QiZfp7ennJrRNXcouFUoIQz7fjxQO4iRW+o52i58pQHU/g==

-1- Open the SQL Database Management Server and expand the OmniPCXRecord Database
-2- Expand Tables, right click on the dbo.Users and click on “Script Table as” \ UPDATE To \ New Query Editor
Window
=> delete the contain of the window => Ctrl A and then Suppr

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 98/238
-3- Now, copy the following SQL script:

USE [OmniPCXRecord]
GO
UPDATE [dbo].[Users]
SET
[Password] =
'F6niHkDzUw5GcjpnTNr4U6s0IdEmjaxEqC94SfE4GSzlPXgA1BhnSC0K4RQKbMmU/dYcCs3hhyUEvOZW2scWiXgW+
Wz3iRDPzZG7vPA5QiZfp7ennJrRNXcouFUoIQz7fjxQO4iRW+o52i58pQHU/g==', [IsOPRActive] = 'True'
WHERE username = 'admin'
GO

-4- As soon as the SQL script is copied, then click on Execute

-5- close the OXR web page if opened and then open the OXR web page. Try the password Recorder1 for the
Username admin.

13.2.2 OmniPCX Record release higher than 23.0.19 (included)


Starting from the OmnipCX Record release 2.3.0.21, there are at least 2 SQL Databases.
Default names are:
OPCXR_Config
OPCXR_Tenant_010001
As mentioned previously the OPCXR_Config is related to the Server Administration OmniPCX Record web page
and the OPCXR_Tenant_010001 is related to the Site Administration web page.
Both of those SQL Databases have the table dbo.Users.
The choise of the table dbo.Users will depend from which web page you get the warning “Invalid username or
password”.
In this section, we use the default name of the SQL databases.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 99/238
Procedure to change the password to access Site Administration:
- OPCXR_Tenant_010001 database

The password is encrypted. Please find below a password “Recorder1” which is encrypted:
F6niHkDzUw5GcjpnTNr4U6s0IdEmjaxEqC94SfE4GSzlPXgA1BhnSC0K4RQKbMmU/dYcCs3hhyUEvOZ
W2scWiXgW+Wz3iRDPzZG7vPA5QiZfp7ennJrRNXcouFUoIQz7fjxQO4iRW+o52i58pQHU/g==

-1- Open the SQL Database Management Server and expand the Database OPCXR_Tenant_010001
-2- Expand Tables, right click on the dbo.Users and click on “Script Table as” \ UPDATE To \ New Query Editor
Window
=> delete the contain of the window => Ctrl A and then Suppr
-3- Now, copy the following SQL script:

USE [OPCXR_Tenant_010001]
GO
UPDATE [dbo].[Users]
SET
[Password] =
'F6niHkDzUw5GcjpnTNr4U6s0IdEmjaxEqC94SfE4GSzlPXgA1BhnSC0K4RQKbMmU/dYcCs3hhyUEvOZW2scWiXgW+
Wz3iRDPzZG7vPA5QiZfp7ennJrRNXcouFUoIQz7fjxQO4iRW+o52i58pQHU/g==',
[IsOPRActive] = 'True'
WHERE Username = 'admin'
GO

-4- As soon as the SQL script is copied, then click on Execute

-5- Close the OXR web page if opened and then open the OXR web page \ Site Administration. Try the password
Recorder1 for the Username admin.
Please note for the OmniPCXRecord 2.4.0.7 and onward, the user will land on change password page on web
interface.
Remark: You can't enter any of your previous 4 passwords.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 100/238
Procedure to change the password to access Server Administration:
- OPCXR_Config
The password is encrypted. Please find below a password “Recorder1” which is encrypted:
F6niHkDzUw5GcjpnTNr4U6s0IdEmjaxEqC94SfE4GSzlPXgA1BhnSC0K4RQKbMmU/dYcCs3hhyUEvOZ
W2scWiXgW+Wz3iRDPzZG7vPA5QiZfp7ennJrRNXcouFUoIQz7fjxQO4iRW+o52i58pQHU/g==

-1- Open the SQL Database Management Server and expand the Database OPCXR_Config
-2- Expand Tables, right click on the dbo.Users and click on “Script Table as” \ UPDATE To \ New Query Editor
Window
=> delete the contain of the window => Ctrl A and then Suppr
-3- Now, copy the following SQL script:

USE [OPCXR_Config]
GO
UPDATE [dbo].[Users]
SET
[Password] =
'F6niHkDzUw5GcjpnTNr4U6s0IdEmjaxEqC94SfE4GSzlPXgA1BhnSC0K4RQKbMmU/dYcCs3hhyUEvOZW2scWiXgW+
Wz3iRDPzZG7vPA5QiZfp7ennJrRNXcouFUoIQz7fjxQO4iRW+o52i58pQHU/g==',[IsOPRActive] = 'True'
WHERE Username = 'admin'
GO

-4- As soon as the SQL script is copied, then click on Execute

-5- Close the OXR web page if opened and then open the OXR web page \ Server Administration. Try the
password Recorder1 for the Username admin.
Please note for the OmniPCXRecord 2.4.0.7 and onward, the user will land on change password page on web
interface.
Remark: You can't enter any of your previous 4 passwords.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 101/238
14 Web console: HTTP Error 503. The service is unavailable.
After changing the windows password on the OmniPCX Record server and restarted the server machine,
Password: Recorder1 => changed to password: Record1903
I’m no more able to connect the OmniPCX Record web console: HTTP Error 503.

=>

14.1 Stop all the OmniPCX Record services


Open the Services window and stop all the services related to the OmniPCX Record (like OXERecordServer,
archiving).

14.2 Open the tool “CMAUtility”


This tool is available on the folder Install_drive:\Program Files (x86)\Alcatel-Lucent Enterprise\OmniPCXRecord
Suite\Utils.
Double click on the application file “OmniPCXRecordCMA”:

Click “This account”, then enter the administrator account and password (the new password: 1903).

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 102/238
Selected the required service(s), according to your configuration:

Click “Update”

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 103/238
Click on the tab “IIS Configuration”

Enter the administrator account and the password (the new password: Record1903)

Then click on “Configure”

Close the “CMAUtility” tool

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 104/238
14.3 Check the password is changed in the web config file
The web config file is located under the folder:
Install_drive:\Program Files (x86)\Alcatel-Lucent Enterprise\OmniPCXRecord Suite\OmniPCXRecord
Change the password has shown below to the new password (password: Record1903):

14.4 Check the application pools in the web server


Open the IIS manager => run: INETMGR
Click on “View Application Pools”:

Check if the application “OmniPCXRecordAppPool” is started, if not you have to start it:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 105/238
Open the web console as soon as the “OmniPCXRecordAppPool” is started:

Enter the Username (like admin) and the associated password.


Remark: this password is not related to the password of the windows user. The password of the OmniPCX
Record web console is stored in the SQL Server Database. => see chapter 13.
To change this password (OmniPCX Record web console), change it through the “Change password” as soon as
logged on.

The correct procedure after changing the windows password for the administrator user, is to apply the CMAUtility
tool before any resboot of the server machine.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 106/238
15 The OmniPCX Record stopped / crashed

1- Please verify if licenses are available.

In OmniPCX Record Console / General / Licensing :

We retrieve the licenses status also in the logs files in c:\Program Files(x86)\Alcatel-
Lucent\OmnipcxRecord Suite\OmniPCXConsole\Startup Logs\OMNI Operator Console Logs :

For instance :

2014-09-11 08:30:45,451 - [OnStartHandler] Server license is available. Now getting log details from
DB...

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 107/238
2- Please verify the connection string in the web.config file under C:\Program Files
(x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\

Eg :

<connectionStrings>
<add name="OmniPCXRECORDConnectionString" connectionString="workstation id=172.27.145.31;packet size=4096
;user id=sa;password=sa;data source=172.27.145.31;persist security info=false;initial catalog=OmniPCXRecord;" />
<add name="OmniPCXRECORDConnectionStringSecondary" connectionString="" />
</connectionStrings>

3- Please check the latest “Startup”,“Web” and “Recorder” logs. Now search for the word
“exception”. If found, consult with Technical Support.
The startup logs are under :
C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Server\Startup Logs

The Web logs are under :


C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Logs\Web

The Recorder logs are under :


C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Logs\Recorder Logs

4- Please verify the Windows event viewer on recorder server machine and check if there are
any exception(s) for OmniPCXRecord service. If “fault bucket error” or “omnipcxrecord service

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 108/238
terminated unexpectedly” errors are observed then please forward the details of error(s) to
Technical Support.
Complete path : Start/Administrative Tools/Event viewer select Windows Logs / Application
and look for Source = OxeRecordService

5- Search for keyword “error”, “memory”, “socket error”, “timeout”, “i/o race condition” in the
recorder logs. If found, consult with Technical Support.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 109/238
16 Bad voice quality/ voice cuts / distortion in call / Call duration
difference when compared from OXE / Multiple voices in one
recorded call

16.1 In IP DR-Link
1- Download the issued record file from OmniPCX Record with its CDR.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 110/238
Now search that call in recorder logs and check the RTP packets difference between the two
streams of this call.
To check the packets count of two streams in a particular IP call, search the keyword
“extension number :: RTP Pckets” e.g. “11010 :: RTP Pckets”.
This search will take you to a line in the logs that would look something like “11010 :: RTP
Pckets : 5637 , 5637”.
2014-09-15 11:49:10,925 - [RecordStop_IPDR] 11010 :: RTP Pckets : 5636 , 5637for Call on Extension
11010:2258:2257

As there are two streams in an IP call so please observe the number of packets for both streams.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 111/238
Ideally they should be equal but if there is a difference between them then it should not be
more than 5%.
If the difference is high then this would mean that there is packet loss on the network and the
customer needs to check their network.

2- Compare the above packet difference between few “Bad” and “normal” calls.

3- To verify packet loss, collect Wireshark traces from the IP Phone and from server machine and
compare the calls.

See below the procedure to take wireshark traces in front of the IP Phone :

Example taken by using IP Phone 11010


---------
Plug an IP cable on the plug "PC" of the IP Phone set (located in back of the physical IP Phone
set just closed to the "LAN" plug) to a computer on which an IP capture tool (example:
wireshark) is installed.

---------
The IP@ of the IP phone is needed :
To know the IP address of the IP Phone 11010
> ippstat d 11010

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 112/238
---------

To activate the telnet for this IP Phone


> ippstat
Enter your choice : 15 ( Timeout for telnet session of IP Touch set )
Enter a directory number you want to manage : 11010
Enter a timeout value expressed in minutes (between 0 to 1440) : 1440
---------

Quit the tool ippstat


---------

Check the parameter "State PC Port"


> mgr
Alcatel-Lucent 8&9 Series/ 8&9 Series COS/ Phone COS (phone COS of the IP Phone 11010)
State PC Port = Cascad. not filt. (IP-Phone or PC)
---------

Activate the mirroring on the IP Phone 11010


> telnet IP Address of the IP Phone
NoePhone > mirror set lan
mirror OK
---------

4- Check compression type being used in OXE from the path System -> Descend Descend
hierarchy -> Other system param -> Descend hierarchy -> Compression Parameters -> Review
Modify -> Compression Type

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 113/238
5- If the distortion appears to call from IP Phones using G729 codec, then check the value of G729
framing in OXE and set the same value in the tag “G729 payLoadLenght” in
OXERecordServer.exe.config

G729 framing in OXE : mgr > IP > IP Parameters :

OXERecordServer.exe.config is under :
C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Server

6- Please verify if VAD in OXE is disabled for every codec. To verify it, go to the path System -
> Descend hierarchy -> Other system param -> Descend hierarchy -> Compression Parameters -
> Review Modify -> Voice Activity Detection on G711.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 114/238
System -> Descend Descend hierarchy -> Other system param -> Descend hierarchy ->
Compression Parameters -> Review Modify -> Voice Activity Detect

7- Please verify if the “Recorder’s installed location” and “Audio file path location” are set to
different hard disks.
If yes then this might cause bad quality issues where the call load is very high. In such cases,
“Recorder’s installed location” and “Audio file path location” should be on the same hard disk.
They can be on different drives but the hard disk should be the same.

In OmniPCX Record Console / Manage/Storage Settings/Repository Storage Path :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 115/238
8- If the site is using Alcatel IPDesktopSoftPhone then please verify the release.
=> Minimum release : 10.0.2

16.2 In DR-Link
1- In case of TDM calls, please verify if the correct firmware is installed on the packetizer.

2- Please verify the cable length between packetizer and OXE. It should not be more than 1.5
meters. The recommended cable has the reference 3BA28166AA.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 116/238
17 Calls are not played in the OmniPCX Record Player

1- Please verify if the machine has a sound card installed. Normally, server machine does not
have sound cards.
2- Please verify if the Windows Media player is installed on that machine.
3- Download the call from OmniPCX RECORD and play. If the call is playing fine then please verify
if the Windows Media Player plug-in is installed and enabled in the Internet Explorer browser.

Under IE, Tools > Managed Add-ons :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 117/238
4- Please verify if the Internet Explorer version is supported in the hardware-software
specifications documentation.

5- Please verify user credentials in IIS are correctly configured.


In the OmniPCX Record server, use INETMGR command and under each following location :
- Sites Default Web Site OmniPCXRecord
- Sites Default Web Site OmniPCXRecord OmniPCXRECORDAudio
- Sites Default Web Site OmniPCXRecord Temp

Check the Basic Settings and Advanced Settings.


Check also the authentication (anonymous authentication).

Verify it is configured as in the installation guide.

6- If Screen Capture calls for more than 2 or 3 minutes are not being played, then please check
if the “ffmpeg” file is present at the location “…\OmniPCX RECORD Suite\Screen Capture” and
the parameter “mixing through ffmpeg” is enabled in OmniPCXScreenCapture config file.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 118/238
18 Records are not displayed from the OmniPCX Record web console

When you try to “Search Calls” from the OmniPCX Record web console, no records are displayed:

When you check the web logs ( ) the following exception occurs:

Also, if the record files (for the same selected period of Search Calls) are stored correctly on the storage folder
(see the Storage Path Configuration on the OmniPCX Record web console => Storage Settings), the issue could
be related to the SQL collation.

OmniPCXRecord database Collation MUST be English DB


collation (SQL_Latin1_General_CP1_CI_AS).

If the SQL collation is not set to SQL_Latin1_General_CP1_CI_AS, find below the procedure to change the SQL
collation.

Note: Downtime is required to perform the following procedure. All the services of OmniPCX RECORD MUST
be stopped.
There 3 steps in the procedure to change the SQL Collation to “SQL_Latin1_General_CP1_CI_AS”:
1- Database backup
2- Changing the SQL collation for the appropriated SQL database
3- Create a user in SQL server

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 119/238
18.1 Database backup
Whatever the OmniPCX Record Release, the procedure to backup the SQL database is the same.
According to the release of the OmniPCX Record, the number of the SQL database can be more than one.

OmniPCX Record Release One SQL Database: More than one SQL Databases:
OmniPCXRecord OPCXR_Config
OPCXR_Tenant_010001
OPCXR_Tenant_01000x

Release 2.2, Release equal to ☒ ☐


2.3.0.18 or lower

Release equal to 2.3.0.19 or ☐ ☒


higher

Let’s take an example using OmniPCX Record in Release 2.3.0.18:

1. Login to SQL Management Studio


2. From the left panel expand Databases
3. Right click on OmniPCXRecord database, select Tasks then click Backup as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 120/238
4. The following screen will appear:

5. From the left panel select Options: following screen will appear

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 121/238
6. Select the boxes marked with red arrows above and then select General from the left panel.

7. The Default backup path is already set but if you want to change the path then please press Add.
8. The following screen will appear, add the destination path or backup device and click OK, as shown
below.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 122/238
9. Once the backup path is selected, click OK

10. A backup of the OmniPCX RECORD database has been created

For an OmniPCX Record Release equal to 2.3.0.19 or higher, the database backup concerns:
- If one site, the SQL database OPCXR_Config and OPCXR_Tenant_010001

- If two sites, the SQL database OPCXR_Config, OPCXR_Tenant_010001 and OPCXR_Tenant_010002

Follow this chapter 14.1 but at the point 3., you have to right click on OPCXR_Config database, select Tasks
then click Backup. Then continue to the points 10.
Do the same steps for the second SQL database OPCXR_Tenant_010001.
If you have more than one site configured, do also the same for also the OPCXR_Tenant database.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 123/238
18.2 Changing the SQL database collation
In this part we will provide the SQL queries to change the SQL database collation.2 different chapters,
according to the OmniPCX Record release, which contain different SQL queries.

18.2.1 OmniPCX Record release 2.3.0.18 or lower (single SQL database)

1. Login to SQL Management Studio


2. Expand Databases
3. Right click on OmniPCXRecord database and select New Query as shown below:

4. In the new query window, copy and paste the following query1 for OmniPCXRecord:
USE [OmniPCXRecord]
GO
/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 02/23/2018 20:36:19 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN',
N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SplitString]
GO

USE [master];
GO
ALTER DATABASE OmniPCXRecord SET Single_USER WITH ROLLBACK IMMEDIATE;
GO

USE [master]
GO
ALTER DATABASE omnipcxrecord
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 124/238
USE [master];
GO
ALTER DATABASE OmniPCXRecord SET Multi_USER WITH ROLLBACK IMMEDIATE;
GO

USE [OmniPCXRecord]
/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 02/23/2018 20:36:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN',
N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'
CREATE FUNCTION [dbo].[SplitString]
(
@SplitStr nvarchar(max),
@SplitChar nvarchar(5)
)
RETURNS @RtnValue table
(
Data nvarchar(50)
)
AS
BEGIN
Declare @Count int
Set @Count = 1

While (Charindex(@SplitChar,@SplitStr)>0)
Begin
Insert Into @RtnValue (Data)
Select
Data = ltrim(rtrim(Substring(@SplitStr,1,Charindex(@SplitChar,@SplitStr)-1)))

Set @SplitStr = Substring(@SplitStr,Charindex(@SplitChar,@SplitStr)+1,len(@SplitStr))


Set @Count = @Count + 1
End

Insert Into @RtnValue (Data)


Select Data = ltrim(rtrim(@SplitStr))

Return
END
'
END
GO

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 125/238
5. Click on Execute button to execute the query:

6. A confirmation will be displayed at the bottom for the query execution.

7. Now, again right click on OmniPCXRecord database and select New Query.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 126/238
8. In the new query window, copy and paste the following query2 for OmniPCXRecord:

/*******************************************************************************
*
*
*
* This script will check individual columns collations and check it against the
* database default collation, where they are different it will create the scripts
* required to drop all the objects dependant on the column, change the collation
* to the database default and then recreate the dependant objects.
* Some of the code has been reused from stuff found online the majority from
* created scripts to drop and recreate constraints
*
*********************************************************************************/

SET ANSI_WARNINGS OFF;


GO
DECLARE @SchemaName VARCHAR(100);
DECLARE @TableName VARCHAR(256);
DECLARE @IndexName VARCHAR(256);
DECLARE @ColumnName VARCHAR(100);
DECLARE @is_unique VARCHAR(100);
DECLARE @IndexTypeDesc VARCHAR(100);
DECLARE @FileGroupName VARCHAR(100);
DECLARE @is_disabled VARCHAR(100);
DECLARE @IndexOptions VARCHAR(MAX);
DECLARE @IndexColumnId INT;
DECLARE @IsDescendingKey INT;
DECLARE @IsIncludedColumn INT;
DECLARE @TSQLScripCreationIndex VARCHAR(MAX);
DECLARE @TSQLScripDisableIndex VARCHAR(MAX);
DECLARE @Collation_objectid INT;
DECLARE @Collation_columnid INT;
DECLARE @Collation_constraint INT;
DECLARE @Collation_index INT;
DECLARE @Collation_foreign INT;
DECLARE @Collation_stats INT;
DECLARE @stats_id INT;
DECLARE @Collation_fkid INT;
DECLARE @Collation_unique INT;
DECLARE @DatabaseCollation VARCHAR(100)='SQL_Latin1_General_CP1_CI_AS';
CREATE TABLE #tempscriptstore (ScriptType VARCHAR(20),
script NVARCHAR(MAX));
--SELECT @DatabaseCollation=collation_name FROM sys.databases WHERE database_id=DB_ID();

/*****************************************************************************************************************
*******************
* Generates a list of all the columns where their collation doesn't match the database default and
the depenmdancies they have. *

******************************************************************************************************************
******************/
DECLARE collationfix CURSOR FOR
SELECT t.object_id, c.column_id, COUNT(kc.object_id) AS [has_key_constraint], COUNT(ic.index_id) AS
[has_index], COUNT(fk.constraint_object_id) AS [has_foreign_key], COUNT(st.stats_id) AS [has_stats],
COUNT(uq.object_id) AS [has_unique_constraint]
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id=t.object_id
INNER JOIN sys.types ty ON c.system_type_id=ty.system_type_id
LEFT JOIN sys.index_columns ic ON ic.object_id=c.object_id AND ic.column_id=c.column_id
LEFT JOIN sys.key_constraints kc ON kc.parent_object_id=c.object_id AND
kc.unique_index_id=ic.index_id AND kc.type='PK'
LEFT JOIN sys.key_constraints uq ON uq.parent_object_id=c.object_id AND
uq.unique_index_id=ic.index_id AND uq.type='UQ'

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 127/238
LEFT JOIN sys.foreign_key_columns fk ON fk.referenced_object_id=c.object_id AND
fk.constraint_column_id=c.column_id
LEFT JOIN sys.stats_columns st ON st.object_id=c.object_id AND st.column_id=c.column_id AND
st.stats_column_id !=1
WHERE t.is_ms_shipped=0 AND c.collation_name<>@DatabaseCollation AND ty.name !='sysname'
GROUP BY t.object_id, c.column_id;
OPEN collationfix;
FETCH NEXT FROM collationfix
INTO @Collation_objectid, @Collation_columnid, @Collation_constraint, @Collation_index,
@Collation_foreign, @Collation_stats, @Collation_unique;
WHILE(@@FETCH_STATUS=0)BEGIN

/*****************************************************************************************************************
*******************
* Generates the code to update the columns colation
*

******************************************************************************************************************
******************/
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AlterCollation', 'ALTER TABLE '+QUOTENAME(t.name)+' ALTER COLUMN
'+QUOTENAME(c.name)+' '+CASE WHEN (ty.name='ntext'OR ty.name='text') THEN ty.name+' COLLATE '+@DatabaseCollation+'
' ELSE ty.name+'('+CASE WHEN c.max_length=-1 THEN 'MAX' ELSE CASE WHEN ty.name='nvarchar' THEN CAST(c.max_length /
2 AS VARCHAR(20))ELSE CAST(c.max_length AS VARCHAR(20))END END+') COLLATE '+@DatabaseCollation+' ' END+CASE WHEN
c.is_nullable=1 THEN 'NULL;' ELSE 'NOT NULL;' END
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id=t.object_id
INNER JOIN sys.types ty ON c.system_type_id=ty.system_type_id
LEFT JOIN sys.index_columns ic ON ic.object_id=c.object_id AND ic.column_id=c.column_id
WHERE t.is_ms_shipped=0 AND c.collation_name<>@DatabaseCollation AND ty.name !='sysname' AND
c.column_id=@Collation_columnid AND t.object_id=@Collation_objectid;

/*****************************************************************************************************************
*******************
* If the column is in an index this creates the drop and recreate index script
*

******************************************************************************************************************
******************/
IF @Collation_index>0 BEGIN
DECLARE CursorIndex CURSOR FOR
SELECT DISTINCT SCHEMA_NAME(t.schema_id) [schema_name], t.name, ix.name, CASE WHEN
ix.is_unique=1 THEN 'UNIQUE ' ELSE '' END, ix.type_desc, CASE WHEN ix.is_padded=1 THEN 'PAD_INDEX = ON, ' ELSE
'PAD_INDEX = OFF, ' END+CASE WHEN ix.allow_page_locks=1 THEN 'ALLOW_PAGE_LOCKS = ON, ' ELSE 'ALLOW_PAGE_LOCKS =
OFF, ' END+CASE WHEN ix.allow_row_locks=1 THEN 'ALLOW_ROW_LOCKS = ON, ' ELSE 'ALLOW_ROW_LOCKS = OFF, ' END+CASE
WHEN INDEXPROPERTY(t.object_id, ix.name, 'IsStatistics')=1 THEN 'STATISTICS_NORECOMPUTE = ON, ' ELSE
'STATISTICS_NORECOMPUTE = OFF, ' END+CASE WHEN ix.ignore_dup_key=1 THEN 'IGNORE_DUP_KEY = ON, ' ELSE
'IGNORE_DUP_KEY = OFF, ' END+'SORT_IN_TEMPDB = OFF, FILLFACTOR ='+CASE WHEN ix.fill_factor=0 THEN CAST(100 AS
VARCHAR(3))ELSE CAST(ix.fill_factor AS VARCHAR(3))END AS IndexOptions, ix.is_disabled,
FILEGROUP_NAME(ix.data_space_id) FileGroupName
FROM sys.tables t
JOIN sys.indexes ix ON t.object_id=ix.object_id
JOIN sys.columns c ON c.object_id=t.object_id
JOIN sys.index_columns ic ON ic.index_id=ix.index_id AND ic.column_id=c.column_id AND
ic.object_id=t.object_id
WHERE ix.type>0 AND ix.is_primary_key=0 AND ix.is_unique_constraint=0
--AND schema_name(tb.schema_id)= @SchemaName
--AND tb.name=@TableName
AND t.is_ms_shipped=0 AND t.name<>'sysdiagrams' AND c.column_id=@Collation_columnid AND
t.object_id=@Collation_objectid AND ic.column_id=@Collation_columnid
ORDER BY SCHEMA_NAME(t.schema_id), t.name, ix.name;
OPEN CursorIndex;
FETCH NEXT FROM CursorIndex

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 128/238
INTO @SchemaName, @TableName, @IndexName, @is_unique, @IndexTypeDesc, @IndexOptions,
@is_disabled, @FileGroupName;
WHILE(@@fetch_status=0)BEGIN
DECLARE @IndexColumns VARCHAR(MAX);
DECLARE @IncludedColumns VARCHAR(MAX);
SET @IndexColumns='';
SET @IncludedColumns='';
DECLARE CursorIndexColumn CURSOR FOR
SELECT col.name, ixc.is_descending_key, ixc.is_included_column
FROM sys.tables tb
INNER JOIN sys.indexes ix ON tb.object_id=ix.object_id
INNER JOIN sys.index_columns ixc ON ix.object_id=ixc.object_id AND
ix.index_id=ixc.index_id
INNER JOIN sys.columns col ON ixc.object_id=col.object_id AND
ixc.column_id=col.column_id
WHERE ix.type>0 AND(ix.is_primary_key=0 OR ix.is_unique_constraint=0)AND
SCHEMA_NAME(tb.schema_id)=@SchemaName AND tb.name=@TableName AND ix.name=@IndexName
ORDER BY ixc.index_column_id;
OPEN CursorIndexColumn;
FETCH NEXT FROM CursorIndexColumn
INTO @ColumnName, @IsDescendingKey, @IsIncludedColumn;
WHILE(@@fetch_status=0)BEGIN
IF @IsIncludedColumn=0
SET @IndexColumns=@IndexColumns+@ColumnName+CASE WHEN @IsDescendingKey=1 THEN '
DESC, ' ELSE ' ASC, ' END;
ELSE SET @IncludedColumns=@IncludedColumns+@ColumnName+', ';
FETCH NEXT FROM CursorIndexColumn
INTO @ColumnName, @IsDescendingKey, @IsIncludedColumn;
END;
CLOSE CursorIndexColumn;
DEALLOCATE CursorIndexColumn;
SET @IndexColumns=SUBSTRING(@IndexColumns, 1, LEN(@IndexColumns)-1);
SET @IncludedColumns=CASE WHEN LEN(@IncludedColumns)>0 THEN SUBSTRING(@IncludedColumns, 1,
LEN(@IncludedColumns)-1)ELSE '' END;
-- print @IndexColumns
-- print @IncludedColumns
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DropIndex', 'DROP INDEX
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+'.'+QUOTENAME(@IndexName)+';';
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'CreateIndex', 'CREATE '+@is_unique+@IndexTypeDesc+' INDEX
'+QUOTENAME(@IndexName)+' ON '+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+'('+@IndexColumns+') '+CASE WHEN
LEN(@IncludedColumns)>0 THEN CHAR(13)+'INCLUDE ('+@IncludedColumns+')' ELSE '' END+CHAR(13)+'WITH
('+@IndexOptions+') ON '+QUOTENAME(@FileGroupName)+';';
IF @is_disabled=1
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DisableIndex', 'ALTER INDEX '+QUOTENAME(@IndexName)+' ON
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+' DISABLE;';
FETCH NEXT FROM CursorIndex
INTO @SchemaName, @TableName, @IndexName, @is_unique, @IndexTypeDesc, @IndexOptions,
@is_disabled, @FileGroupName;
END;
CLOSE CursorIndex;
DEALLOCATE CursorIndex;
END;

/*****************************************************************************************************************
*******************
* If the column has a primary key constraint this creates the drop and recreate constraint script
*
* *

******************************************************************************************************************
******************/
IF @Collation_constraint>0 BEGIN

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 129/238
-------------------------------------------------
--ALTER TABLE DROP PRIMARY KEY CONSTRAINT Queries
-------------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'DropPrimaryKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id))+' DROP CONSTRAINT
'+QUOTENAME(name)
FROM sys.key_constraints skc
WHERE type='PK' AND parent_object_id=@Collation_objectid;

---------------------------------------------------
--ALTER TABLE CREATE PRIMARY KEY CONSTRAINT Queries
---------------------------------------------------
SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id)) AS pk_table, --PK
table name
skc.object_id AS constid, QUOTENAME(skc.name) AS constraint_name, --PK name
QUOTENAME(iskcu.COLUMN_NAME)+CASE WHEN sic.is_descending_key=1 THEN ' DESC' ELSE ' ASC'
END AS pk_col, iskcu.ORDINAL_POSITION, CASE WHEN unique_index_id=1 THEN 'UNIQUE' ELSE '' END AS index_unique_type,
si.name AS index_name, si.type_desc AS index_type, QUOTENAME(fg.name) AS filegroup_name, 'WITH('+' PAD_INDEX =
'+CASE WHEN si.is_padded=0 THEN 'OFF' ELSE 'ON' END+','+' IGNORE_DUP_KEY = '+CASE WHEN si.ignore_dup_key=0 THEN
'OFF' ELSE 'ON' END+','+' ALLOW_ROW_LOCKS = '+CASE WHEN si.allow_row_locks=0 THEN 'OFF' ELSE 'ON' END+','+'
ALLOW_PAGE_LOCKS = '+CASE WHEN si.allow_page_locks=0 THEN 'OFF' ELSE 'ON' END+')' AS index_property
--,*
INTO #temp_pk
FROM sys.key_constraints skc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE iskcu ON skc.name=iskcu.CONSTRAINT_NAME
INNER JOIN sys.indexes si ON si.object_id=skc.parent_object_id AND si.is_primary_key=1
INNER JOIN sys.index_columns sic ON si.object_id=sic.object_id AND
si.index_id=sic.index_id
INNER JOIN sys.columns c ON sic.object_id=c.object_id AND sic.column_id=c.column_id
INNER JOIN sys.filegroups fg ON si.data_space_id=fg.data_space_id
WHERE skc.type='PK' AND iskcu.COLUMN_NAME=c.name AND skc.parent_object_id=@Collation_objectid
ORDER BY skc.parent_object_id, skc.name, ORDINAL_POSITION;
WITH cte AS (SELECT pk_table, constraint_name, index_type, SUBSTRING((SELECT ','+pk_col FROM
#temp_pk WHERE constid=t.constid FOR XML PATH('')), 2, 99999) AS pk_col_list, index_unique_type, filegroup_name,
index_property
FROM #temp_pk t)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddPrimaryKey', 'ALTER TABLE '+pk_table+' ADD CONSTRAINT '+constraint_name+'
PRIMARY KEY '+CAST(index_type COLLATE DATABASE_DEFAULT AS VARCHAR(100))+' ('+pk_col_list+')'+index_property+' ON
'+filegroup_name+''
FROM cte;

--dropping the temp tables


DROP TABLE #temp_pk;
END;

/*****************************************************************************************************************
*******************
* If the column has a foreign key constraint this creates the drop and recreate constraint script
*
* *

******************************************************************************************************************
******************/
IF @Collation_foreign>0 BEGIN
DECLARE foreignkeycursor CURSOR FOR
SELECT constraint_object_id
FROM sys.foreign_key_columns
WHERE referenced_object_id=@Collation_objectid AND referenced_column_id=@Collation_columnid;
OPEN foreignkeycursor;
FETCH NEXT FROM foreignkeycursor
INTO @Collation_fkid;

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 130/238
WHILE(@@FETCH_STATUS=0)BEGIN

---------------------------------------------
--ALTER TABLE DROP FOREIGN CONSTRAINT Queries
---------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'DropForeignKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(fkeyid))+'.'+QUOTENAME(OBJECT_NAME(fkeyid))+' DROP CONSTRAINT
'+QUOTENAME(OBJECT_NAME(constid))
FROM sys.sysforeignkeys sfk
WHERE sfk.constid=@Collation_fkid;

------------------------------------------------
--ALTER TABLE CREATE FOREIGN CONSTRAINT Queries
------------------------------------------------

--Obtaining the necessary info from the sys tables


SELECT constid, QUOTENAME(OBJECT_NAME(constid)) AS constraint_name, CASE WHEN
fk.is_not_trusted=1 THEN 'WITH NOCHECK' ELSE 'WITH CHECK' END AS trusted_status,
QUOTENAME(OBJECT_SCHEMA_NAME(fkeyid))+'.'+QUOTENAME(OBJECT_NAME(fkeyid)) AS fk_table, QUOTENAME(c1.name) AS
fk_col, QUOTENAME(OBJECT_SCHEMA_NAME(rkeyid))+'.'+QUOTENAME(OBJECT_NAME(rkeyid)) AS rk_table, QUOTENAME(c2.name)
AS rk_col, CASE WHEN fk.delete_referential_action=1 AND fk.delete_referential_action_desc='CASCADE' THEN 'ON
DELETE CASCADE ' ELSE '' END AS delete_cascade, CASE WHEN fk.update_referential_action=1 AND
fk.update_referential_action_desc='CASCADE' THEN 'ON UPDATE CASCADE ' ELSE '' END AS update_cascade, CASE WHEN
fk.is_disabled=1 THEN 'NOCHECK' ELSE 'CHECK' END AS check_status
--,sysfk.*,fk.*
INTO #temp_fk
FROM sys.sysforeignkeys sysfk
INNER JOIN sys.foreign_keys fk ON sysfk.constid=fk.object_id
INNER JOIN sys.columns c1 ON sysfk.fkeyid=c1.object_id AND sysfk.fkey=c1.column_id
INNER JOIN sys.columns c2 ON sysfk.rkeyid=c2.object_id AND sysfk.rkey=c2.column_id
WHERE sysfk.constid=@Collation_fkid
ORDER BY constid, sysfk.keyno

--building the column list for foreign/primary key tables


;
WITH cte AS (SELECT DISTINCT constraint_name, trusted_status, fk_table, SUBSTRING((SELECT
','+fk_col FROM #temp_fk WHERE constid=c.constid FOR XML PATH('')), 2, 99999) AS fk_col_list, rk_table,
SUBSTRING((SELECT ','+rk_col FROM #temp_fk WHERE constid=c.constid FOR XML PATH('')), 2, 99999) AS rk_col_list,
check_status, delete_cascade, update_cascade
FROM #temp_fk c)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddForeignKey', 'ALTER TABLE '+fk_table+' '+trusted_status+' ADD
CONSTRAINT '+constraint_name+' FOREIGN KEY('+fk_col_list+') REFERENCES '+rk_table+'('+rk_col_list+')'+'
'+delete_cascade+update_cascade+';'+' ALTER TABLE '+fk_table+' '+check_status+' CONSTRAINT '+constraint_name
FROM cte;

--dropping the temp tables


DROP TABLE #temp_fk;
FETCH NEXT FROM foreignkeycursor
INTO @Collation_fkid;
END;
CLOSE foreignkeycursor;
DEALLOCATE foreignkeycursor;
END;

/*****************************************************************************************************************
*******************
* If the column has statistics that aren't part of an index this creates the drop and recreate
scripts *

******************************************************************************************************************
******************/
IF @Collation_stats>0 AND @Collation_index=0 BEGIN

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 131/238
DECLARE stats_cursor CURSOR FOR
SELECT sc.stats_id
FROM sys.stats_columns sc
JOIN sys.stats s ON s.object_id=sc.object_id AND s.stats_id=sc.stats_id AND
s.user_created=1
WHERE sc.object_id=@Collation_objectid AND sc.column_id=@Collation_columnid;
OPEN stats_cursor;
FETCH NEXT FROM stats_cursor
INTO @stats_id;
WHILE(@@FETCH_STATUS=0)BEGIN
--Create DROP Statistics Statement
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DropStatistics', 'DROP STATISTICS
'+QUOTENAME(OBJECT_SCHEMA_NAME(s.object_id))+'.'+QUOTENAME(OBJECT_NAME(s.object_id))+'.'+QUOTENAME(s.name)
FROM sys.stats s
WHERE s.object_id=@Collation_objectid AND s.stats_id=@stats_id;

--Building the CREATE statistics statement

--Obtaining all the information


SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(sc.object_id))+'.'+QUOTENAME(OBJECT_NAME(sc.object_id)) AS st_table,
QUOTENAME(s.name) AS st_name, QUOTENAME(c.name) AS st_column, sc.object_id, sc.stats_id, sc.stats_column_id
INTO #temp_stats
FROM sys.stats_columns sc
JOIN sys.stats s ON s.stats_id=sc.stats_id AND s.object_id=sc.object_id
JOIN sys.columns c ON c.object_id=sc.object_id AND c.column_id=sc.column_id
WHERE sc.object_id=@Collation_objectid AND sc.stats_id=@stats_id;
WITH cte AS (SELECT DISTINCT st_table, st_name, SUBSTRING((SELECT ','+st_column
FROM #temp_stats
WHERE stats_id=ts.stats_id
ORDER BY stats_column_id ASC
FOR XML PATH('')), 2, 99999) AS
st_col_list
FROM #temp_stats ts)
--Constructing the statement
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'AddStatistics', 'CREATE STATISTICS '+cte.st_name+' ON
'+cte.st_table+'('+cte.st_col_list+')'
FROM cte;
DROP TABLE #temp_stats;
FETCH NEXT FROM stats_cursor
INTO @stats_id;
END;
CLOSE stats_cursor;
DEALLOCATE stats_cursor;
END;

/*****************************************************************************************************************
*******************
* If the column has a unique constraint this creates the drop and recreate scripts
*

******************************************************************************************************************
******************/
IF @Collation_unique>0 BEGIN

-------------------------------------------------
--ALTER TABLE DROP UNIQUE CONSTRAINT Queries
-------------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'DropUniqueKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id))+' DROP CONSTRAINT
'+QUOTENAME(name)
FROM sys.key_constraints skc

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 132/238
JOIN sys.index_columns ic ON ic.object_id=skc.parent_object_id AND
ic.index_id=skc.unique_index_id
WHERE type='UQ' AND parent_object_id=@Collation_objectid AND ic.column_id=@Collation_columnid;

---------------------------------------------------
--ALTER TABLE CREATE UNIQUE CONSTRAINT Queries
---------------------------------------------------
SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id)) AS uq_table, --PK
table name
skc.object_id AS constid, QUOTENAME(skc.name) AS constraint_name, --PK name
QUOTENAME(iskcu.COLUMN_NAME)+CASE WHEN sic.is_descending_key=1 THEN ' DESC' ELSE ' ASC'
END AS uq_col, iskcu.ORDINAL_POSITION, CASE WHEN unique_index_id=1 THEN 'UNIQUE' ELSE '' END AS index_unique_type,
si.name AS index_name, si.type_desc AS index_type, QUOTENAME(fg.name) AS filegroup_name, 'WITH('+' PAD_INDEX =
'+CASE WHEN si.is_padded=0 THEN 'OFF' ELSE 'ON' END+','+' IGNORE_DUP_KEY = '+CASE WHEN si.ignore_dup_key=0 THEN
'OFF' ELSE 'ON' END+','+' ALLOW_ROW_LOCKS = '+CASE WHEN si.allow_row_locks=0 THEN 'OFF' ELSE 'ON' END+','+'
ALLOW_PAGE_LOCKS = '+CASE WHEN si.allow_page_locks=0 THEN 'OFF' ELSE 'ON' END+')' AS index_property
--,*
INTO #temp_uq
FROM sys.key_constraints skc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE iskcu ON skc.name=iskcu.CONSTRAINT_NAME
INNER JOIN sys.indexes si ON si.object_id=skc.parent_object_id AND si.is_unique=1
INNER JOIN sys.index_columns sic ON si.object_id=sic.object_id AND
si.index_id=sic.index_id
INNER JOIN sys.columns c ON sic.object_id=c.object_id AND sic.column_id=c.column_id
INNER JOIN sys.filegroups fg ON si.data_space_id=fg.data_space_id
WHERE skc.type='UQ' AND iskcu.COLUMN_NAME=c.name AND skc.parent_object_id=@Collation_objectid
AND c.column_id=@Collation_columnid
ORDER BY skc.parent_object_id, skc.name, ORDINAL_POSITION;
WITH cte AS (SELECT uq_table, constraint_name, index_type, SUBSTRING((SELECT ','+uq_col FROM
#temp_uq WHERE constid=t.constid FOR XML PATH('')), 2, 99999) AS uq_col_list, index_unique_type, filegroup_name,
index_property
FROM #temp_uq t)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddUniqueKey', 'ALTER TABLE '+uq_table+' ADD CONSTRAINT '+constraint_name+'
UNIQUE '+CAST(index_type COLLATE DATABASE_DEFAULT AS VARCHAR(100))+' ('+uq_col_list+')'+index_property+' ON
'+filegroup_name+''
FROM cte;

--dropping the temp tables


DROP TABLE #temp_uq;
END;
FETCH NEXT FROM collationfix
INTO @Collation_objectid, @Collation_columnid, @Collation_constraint, @Collation_index,
@Collation_foreign, @Collation_stats, @Collation_unique;
END;
CLOSE collationfix;
DEALLOCATE collationfix;

/*****************************************************************************************************************
*******************
* Returns all the created scripts in the correct order for running
*

******************************************************************************************************************
******************/
SELECT DISTINCT script, CASE WHEN ScriptType='DropForeignKey' THEN 1
WHEN ScriptType='DropPrimaryKey' THEN 2
WHEN ScriptType='DropUniqueKey' THEN 3
WHEN ScriptType='DropIndex' THEN 4
WHEN ScriptType='DropStatistics' THEN 5
WHEN ScriptType='AlterCollation' THEN 6
WHEN ScriptType='CreateIndex' THEN 7
WHEN ScriptType='DisableIndex' THEN 8

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 133/238
WHEN ScriptType='AddStatistics' THEN 9
WHEN ScriptType='AddUniqueKey' THEN 10
WHEN ScriptType='AddPrimaryKey' THEN 11
WHEN ScriptType='AddForeignKey' THEN 12 ELSE 99 END AS [exec_order]
FROM #tempscriptstore
WHERE script !=''
ORDER BY exec_order ASC;
DROP TABLE #tempscriptstore;

9. Click on Execute button to execute the query2:

10. The result will be displayed as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 134/238
11. In the result window, left click on Script column header then right click and select Copy as shown below:

12. Right click on OmniPCXRecord database and select New Query


13. In the new query window, right click on it and select Paste
14. Click on Execute button

Procedure of changing the database collation has been completed for OmniPCX Record release 2.3.0.18 or lower.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 135/238
18.2.2 OmniPCX Record release 2.3.0.19 or higher (multiple SQL databases)
In this chapter the OmniPCX Record releases will contain at least 2 SQL Databases. For each
database, there are 2 SQL queries to be executed.

Query1 and Query2 for the SQL database OPCXR_Config


Query1 and Query2 for the SQL database(s) OPCXR_Tenant_01000X

Please find below the query1 and the query2 for the SQL Database OPCXR_Config:

18.2.2.1 SQL Database OPCXR_Config


1. Login to SQL Management Studio
2. Expand Databases
3. Right click on OPCXR_Config database and select New Query as shown below:

4. In the new query window, copy and paste the following query1 for OPCXR_Config:
USE [OPCXR_Config]
GO
/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 02/23/2018 20:36:19 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN',
N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SplitString]
GO

USE [master];
GO
ALTER DATABASE OPCXR_Config SET Single_USER WITH ROLLBACK IMMEDIATE;
GO

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 136/238
USE [master]
GO
ALTER DATABASE OPCXR_Config
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

USE [master];
GO
ALTER DATABASE OPCXR_Config SET Multi_USER WITH ROLLBACK IMMEDIATE;
GO

USE [OPCXR_Config]
/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 02/23/2018 20:36:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN',
N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'
CREATE FUNCTION [dbo].[SplitString]
(
@SplitStr nvarchar(max),
@SplitChar nvarchar(5)
)
RETURNS @RtnValue table
(
Data nvarchar(50)
)
AS
BEGIN
Declare @Count int
Set @Count = 1

While (Charindex(@SplitChar,@SplitStr)>0)
Begin
Insert Into @RtnValue (Data)
Select
Data = ltrim(rtrim(Substring(@SplitStr,1,Charindex(@SplitChar,@SplitStr)-1)))

Set @SplitStr = Substring(@SplitStr,Charindex(@SplitChar,@SplitStr)+1,len(@SplitStr))


Set @Count = @Count + 1
End

Insert Into @RtnValue (Data)


Select Data = ltrim(rtrim(@SplitStr))

Return
END
'
END
GO

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 137/238
5. Click on Execute button to execute the query:

6. Click Execute button until getting “Commands completed successfully” at the bottom for the query
execution.

7. Now, again right click on OPCXR_Config database and select New Query.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 138/238
8. In the new query window, copy and paste the following Query2 for OPCXR_Config:
Use OPCXR_Config
/*******************************************************************************
*
*
*
* This script will check individual columns collations and check it against the
* database default collation, where they are different it will create the scripts
* required to drop all the objects dependant on the column, change the collation
* to the database default and then recreate the dependant objects.
* Some of the code has been reused from stuff found online the majority from
* created scripts to drop and recreate constraints
*
*********************************************************************************/

SET ANSI_WARNINGS OFF;


GO
DECLARE @SchemaName VARCHAR(100);
DECLARE @TableName VARCHAR(256);
DECLARE @IndexName VARCHAR(256);
DECLARE @ColumnName VARCHAR(100);
DECLARE @is_unique VARCHAR(100);
DECLARE @IndexTypeDesc VARCHAR(100);
DECLARE @FileGroupName VARCHAR(100);
DECLARE @is_disabled VARCHAR(100);
DECLARE @IndexOptions VARCHAR(MAX);
DECLARE @IndexColumnId INT;
DECLARE @IsDescendingKey INT;
DECLARE @IsIncludedColumn INT;
DECLARE @TSQLScripCreationIndex VARCHAR(MAX);
DECLARE @TSQLScripDisableIndex VARCHAR(MAX);
DECLARE @Collation_objectid INT;
DECLARE @Collation_columnid INT;
DECLARE @Collation_constraint INT;
DECLARE @Collation_index INT;
DECLARE @Collation_foreign INT;
DECLARE @Collation_stats INT;
DECLARE @stats_id INT;
DECLARE @Collation_fkid INT;
DECLARE @Collation_unique INT;
DECLARE @DatabaseCollation VARCHAR(100)='SQL_Latin1_General_CP1_CI_AS';
CREATE TABLE #tempscriptstore (ScriptType VARCHAR(20),
script NVARCHAR(MAX));
--SELECT @DatabaseCollation=collation_name FROM sys.databases WHERE database_id=DB_ID();

/*************************************************************************************************************
**********************
* Generates a list of all the columns where their collation doesn't match the database
* default and the depenmdancies they have.
**************************************************************************************************************
**********************/
DECLARE collationfix CURSOR FOR
SELECT t.object_id, c.column_id, COUNT(kc.object_id) AS [has_key_constraint],
COUNT(ic.index_id) AS [has_index], COUNT(fk.constraint_object_id) AS [has_foreign_key],
COUNT(st.stats_id) AS [has_stats], COUNT(uq.object_id) AS [has_unique_constraint]
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id=t.object_id
INNER JOIN sys.types ty ON c.system_type_id=ty.system_type_id
LEFT JOIN sys.index_columns ic ON ic.object_id=c.object_id AND ic.column_id=c.column_id
LEFT JOIN sys.key_constraints kc ON kc.parent_object_id=c.object_id AND
kc.unique_index_id=ic.index_id AND kc.type='PK'
LEFT JOIN sys.key_constraints uq ON uq.parent_object_id=c.object_id AND
uq.unique_index_id=ic.index_id AND uq.type='UQ'
LEFT JOIN sys.foreign_key_columns fk ON fk.referenced_object_id=c.object_id AND
fk.constraint_column_id=c.column_id

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 139/238
LEFT JOIN sys.stats_columns st ON st.object_id=c.object_id AND st.column_id=c.column_id AND
st.stats_column_id !=1
WHERE t.is_ms_shipped=0 AND c.collation_name<>@DatabaseCollation AND ty.name !='sysname'
GROUP BY t.object_id, c.column_id;
OPEN collationfix;
FETCH NEXT FROM collationfix
INTO @Collation_objectid, @Collation_columnid, @Collation_constraint, @Collation_index,
@Collation_foreign, @Collation_stats, @Collation_unique;
WHILE(@@FETCH_STATUS=0)BEGIN

/*************************************************************************************************************
**********************
* Generates the code to update the columns colation
**************************************************************************************************************
**********************/
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AlterCollation', 'ALTER TABLE '+QUOTENAME(t.name)+' ALTER COLUMN
'+QUOTENAME(c.name)+' '+CASE WHEN (ty.name='ntext'OR ty.name='text') THEN ty.name+' COLLATE
'+@DatabaseCollation+' ' ELSE ty.name+'('+CASE WHEN c.max_length=-1 THEN 'MAX' ELSE CASE
WHEN ty.name='nvarchar' THEN CAST(c.max_length / 2 AS VARCHAR(20))ELSE CAST(c.max_length AS
VARCHAR(20))END END+') COLLATE '+@DatabaseCollation+' ' END+CASE WHEN c.is_nullable=1 THEN
'NULL;' ELSE 'NOT NULL;' END
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id=t.object_id
INNER JOIN sys.types ty ON c.system_type_id=ty.system_type_id
LEFT JOIN sys.index_columns ic ON ic.object_id=c.object_id AND
ic.column_id=c.column_id
WHERE t.is_ms_shipped=0 AND c.collation_name<>@DatabaseCollation AND ty.name !='sysname'
AND c.column_id=@Collation_columnid AND t.object_id=@Collation_objectid;

/*************************************************************************************************************
***********************
* If the column is in an index this creates the drop and recreate index script
*
**************************************************************************************************************
**********************/
IF @Collation_index>0 BEGIN
DECLARE CursorIndex CURSOR FOR
SELECT DISTINCT SCHEMA_NAME(t.schema_id) [schema_name], t.name, ix.name, CASE WHEN
ix.is_unique=1 THEN 'UNIQUE ' ELSE '' END, ix.type_desc, CASE WHEN ix.is_padded=1
THEN 'PAD_INDEX = ON, ' ELSE 'PAD_INDEX = OFF, ' END+CASE WHEN ix.allow_page_locks=1
THEN 'ALLOW_PAGE_LOCKS = ON, ' ELSE 'ALLOW_PAGE_LOCKS = OFF, ' END+CASE WHEN
ix.allow_row_locks=1 THEN 'ALLOW_ROW_LOCKS = ON, ' ELSE 'ALLOW_ROW_LOCKS = OFF, '
END+CASE WHEN INDEXPROPERTY(t.object_id, ix.name, 'IsStatistics')=1 THEN
'STATISTICS_NORECOMPUTE = ON, ' ELSE 'STATISTICS_NORECOMPUTE = OFF, ' END+CASE WHEN
ix.ignore_dup_key=1 THEN 'IGNORE_DUP_KEY = ON, ' ELSE 'IGNORE_DUP_KEY = OFF, '
END+'SORT_IN_TEMPDB = OFF, FILLFACTOR ='+CASE WHEN ix.fill_factor=0 THEN CAST(100 AS
VARCHAR(3))ELSE CAST(ix.fill_factor AS VARCHAR(3))END AS IndexOptions,
ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName
FROM sys.tables t
JOIN sys.indexes ix ON t.object_id=ix.object_id
JOIN sys.columns c ON c.object_id=t.object_id
JOIN sys.index_columns ic ON ic.index_id=ix.index_id AND
ic.column_id=c.column_id AND ic.object_id=t.object_id
WHERE ix.type>0 AND ix.is_primary_key=0 AND ix.is_unique_constraint=0
--AND schema_name(tb.schema_id)= @SchemaName
--AND tb.name=@TableName
AND t.is_ms_shipped=0 AND t.name<>'sysdiagrams' AND
c.column_id=@Collation_columnid AND t.object_id=@Collation_objectid AND
ic.column_id=@Collation_columnid
ORDER BY SCHEMA_NAME(t.schema_id), t.name, ix.name;
OPEN CursorIndex;
FETCH NEXT FROM CursorIndex
INTO @SchemaName, @TableName, @IndexName, @is_unique, @IndexTypeDesc, @IndexOptions,
@is_disabled, @FileGroupName;
WHILE(@@fetch_status=0)BEGIN

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 140/238
DECLARE @IndexColumns VARCHAR(MAX);
DECLARE @IncludedColumns VARCHAR(MAX);
SET @IndexColumns='';
SET @IncludedColumns='';
DECLARE CursorIndexColumn CURSOR FOR
SELECT col.name, ixc.is_descending_key, ixc.is_included_column
FROM sys.tables tb
INNER JOIN sys.indexes ix ON tb.object_id=ix.object_id
INNER JOIN sys.index_columns ixc ON ix.object_id=ixc.object_id AND
ix.index_id=ixc.index_id
INNER JOIN sys.columns col ON ixc.object_id=col.object_id AND
ixc.column_id=col.column_id
WHERE ix.type>0 AND(ix.is_primary_key=0 OR ix.is_unique_constraint=0)AND
SCHEMA_NAME(tb.schema_id)=@SchemaName AND tb.name=@TableName AND ix.name=@IndexName
ORDER BY ixc.index_column_id;
OPEN CursorIndexColumn;
FETCH NEXT FROM CursorIndexColumn
INTO @ColumnName, @IsDescendingKey, @IsIncludedColumn;
WHILE(@@fetch_status=0)BEGIN
IF @IsIncludedColumn=0
SET @IndexColumns=@IndexColumns+@ColumnName+CASE WHEN
@IsDescendingKey=1 THEN ' DESC, ' ELSE ' ASC, ' END;
ELSE SET @IncludedColumns=@IncludedColumns+@ColumnName+', ';
FETCH NEXT FROM CursorIndexColumn
INTO @ColumnName, @IsDescendingKey, @IsIncludedColumn;
END;
CLOSE CursorIndexColumn;
DEALLOCATE CursorIndexColumn;
SET @IndexColumns=SUBSTRING(@IndexColumns, 1, LEN(@IndexColumns)-1);
SET @IncludedColumns=CASE WHEN LEN(@IncludedColumns)>0 THEN
SUBSTRING(@IncludedColumns, 1, LEN(@IncludedColumns)-1)ELSE '' END;
print @IndexColumns
print @IncludedColumns
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DropIndex', 'DROP INDEX
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+'.'+QUOTENAME(@IndexName)+';';
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'CreateIndex', 'CREATE '+@is_unique+@IndexTypeDesc+' INDEX
'+QUOTENAME(@IndexName)+' ON
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+'('+@IndexColumns+') '+CASE WHEN
LEN(@IncludedColumns)>0 THEN CHAR(13)+'INCLUDE ('+@IncludedColumns+')' ELSE ''
END+CHAR(13)+'WITH ('+@IndexOptions+') ON '+QUOTENAME(@FileGroupName)+';';
IF @is_disabled=1
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DisableIndex', 'ALTER INDEX '+QUOTENAME(@IndexName)+' ON
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+' DISABLE;';
FETCH NEXT FROM CursorIndex
INTO @SchemaName, @TableName, @IndexName, @is_unique, @IndexTypeDesc, @IndexOptions,
@is_disabled, @FileGroupName;
END;
CLOSE CursorIndex;
DEALLOCATE CursorIndex;
END;

/*************************************************************************************************************
***********************
* If the column has a primary key constraint this creates the drop and recreate
constraint script *
*
**************************************************************************************************************
**********************/
IF @Collation_constraint>0 BEGIN
-------------------------------------------------
--ALTER TABLE DROP PRIMARY KEY CONSTRAINT Queries
-------------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 141/238
SELECT DISTINCT 'DropPrimaryKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_ob
ject_id))+' DROP CONSTRAINT '+QUOTENAME(name)
FROM sys.key_constraints skc
WHERE type='PK' AND parent_object_id=@Collation_objectid;

---------------------------------------------------
--ALTER TABLE CREATE PRIMARY KEY CONSTRAINT Queries
---------------------------------------------------
SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_obje
ct_id)) AS pk_table, --PK table name
skc.object_id AS constid, QUOTENAME(skc.name) AS constraint_name, --PK name
QUOTENAME(iskcu.COLUMN_NAME)+CASE WHEN sic.is_descending_key=1 THEN ' DESC' ELSE '
ASC' END AS pk_col, iskcu.ORDINAL_POSITION, CASE WHEN unique_index_id=1 THEN 'UNIQUE'
ELSE '' END AS index_unique_type, si.name AS index_name, si.type_desc AS index_type,
QUOTENAME(fg.name) AS filegroup_name, 'WITH('+' PAD_INDEX = '+CASE WHEN
si.is_padded=0 THEN 'OFF' ELSE 'ON' END+','+' IGNORE_DUP_KEY = '+CASE WHEN
si.ignore_dup_key=0 THEN 'OFF' ELSE 'ON' END+','+' ALLOW_ROW_LOCKS = '+CASE WHEN
si.allow_row_locks=0 THEN 'OFF' ELSE 'ON' END+','+' ALLOW_PAGE_LOCKS = '+CASE WHEN
si.allow_page_locks=0 THEN 'OFF' ELSE 'ON' END+')' AS index_property
--,*
INTO #temp_pk
FROM sys.key_constraints skc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE iskcu ON
skc.name=iskcu.CONSTRAINT_NAME
INNER JOIN sys.indexes si ON si.object_id=skc.parent_object_id AND
si.is_primary_key=1
INNER JOIN sys.index_columns sic ON si.object_id=sic.object_id AND
si.index_id=sic.index_id
INNER JOIN sys.columns c ON sic.object_id=c.object_id AND
sic.column_id=c.column_id
INNER JOIN sys.filegroups fg ON si.data_space_id=fg.data_space_id
WHERE skc.type='PK' AND iskcu.COLUMN_NAME=c.name AND
skc.parent_object_id=@Collation_objectid
ORDER BY skc.parent_object_id, skc.name, ORDINAL_POSITION;
WITH cte AS (SELECT pk_table, constraint_name, index_type, SUBSTRING((SELECT
','+pk_col FROM #temp_pk WHERE constid=t.constid FOR XML PATH('')), 2, 99999) AS
pk_col_list, index_unique_type, filegroup_name, index_property
FROM #temp_pk t)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddPrimaryKey', 'ALTER TABLE '+pk_table+' ADD CONSTRAINT
'+constraint_name+' PRIMARY KEY '+CAST(index_type COLLATE DATABASE_DEFAULT AS
VARCHAR(100))+' ('+pk_col_list+')'+index_property+' ON '+filegroup_name+''
FROM cte;

--dropping the temp tables


DROP TABLE #temp_pk;
END;

/*************************************************************************************************************
***********************
* If the column has a foreign key constraint this creates the drop and recreate
constraint script *
*
**************************************************************************************************************
**********************/
IF @Collation_foreign>0 BEGIN
DECLARE foreignkeycursor CURSOR FOR
SELECT constraint_object_id
FROM sys.foreign_key_columns
WHERE referenced_object_id=@Collation_objectid AND
referenced_column_id=@Collation_columnid;
OPEN foreignkeycursor;
FETCH NEXT FROM foreignkeycursor

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 142/238
INTO @Collation_fkid;
WHILE(@@FETCH_STATUS=0)BEGIN

---------------------------------------------
--ALTER TABLE DROP FOREIGN CONSTRAINT Queries
---------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'DropForeignKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(fkeyid))+'.'+QUOTENAME(OBJECT_NAME(fkeyid))+' DROP
CONSTRAINT '+QUOTENAME(OBJECT_NAME(constid))
FROM sys.sysforeignkeys sfk
WHERE sfk.constid=@Collation_fkid;

------------------------------------------------
--ALTER TABLE CREATE FOREIGN CONSTRAINT Queries
------------------------------------------------

--Obtaining the necessary info from the sys tables


SELECT constid, QUOTENAME(OBJECT_NAME(constid)) AS constraint_name, CASE WHEN
fk.is_not_trusted=1 THEN 'WITH NOCHECK' ELSE 'WITH CHECK' END AS trusted_status,
QUOTENAME(OBJECT_SCHEMA_NAME(fkeyid))+'.'+QUOTENAME(OBJECT_NAME(fkeyid)) AS fk_table,
QUOTENAME(c1.name) AS fk_col,
QUOTENAME(OBJECT_SCHEMA_NAME(rkeyid))+'.'+QUOTENAME(OBJECT_NAME(rkeyid)) AS rk_table,
QUOTENAME(c2.name) AS rk_col, CASE WHEN fk.delete_referential_action=1 AND
fk.delete_referential_action_desc='CASCADE' THEN 'ON DELETE CASCADE ' ELSE '' END AS
delete_cascade, CASE WHEN fk.update_referential_action=1 AND
fk.update_referential_action_desc='CASCADE' THEN 'ON UPDATE CASCADE ' ELSE '' END AS
update_cascade, CASE WHEN fk.is_disabled=1 THEN 'NOCHECK' ELSE 'CHECK' END AS
check_status
--,sysfk.*,fk.*
INTO #temp_fk
FROM sys.sysforeignkeys sysfk
INNER JOIN sys.foreign_keys fk ON sysfk.constid=fk.object_id
INNER JOIN sys.columns c1 ON sysfk.fkeyid=c1.object_id AND
sysfk.fkey=c1.column_id
INNER JOIN sys.columns c2 ON sysfk.rkeyid=c2.object_id AND
sysfk.rkey=c2.column_id
WHERE sysfk.constid=@Collation_fkid
ORDER BY constid, sysfk.keyno

--building the column list for foreign/primary key tables


;
WITH cte AS (SELECT DISTINCT constraint_name, trusted_status, fk_table,
SUBSTRING((SELECT ','+fk_col FROM #temp_fk WHERE constid=c.constid FOR XML PATH('')),
2, 99999) AS fk_col_list, rk_table, SUBSTRING((SELECT ','+rk_col FROM #temp_fk WHERE
constid=c.constid FOR XML PATH('')), 2, 99999) AS rk_col_list, check_status,
delete_cascade, update_cascade
FROM #temp_fk c)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddForeignKey', 'ALTER TABLE '+fk_table+' '+trusted_status+' ADD
CONSTRAINT '+constraint_name+' FOREIGN KEY('+fk_col_list+') REFERENCES
'+rk_table+'('+rk_col_list+')'+' '+delete_cascade+update_cascade+';'+' ALTER TABLE
'+fk_table+' '+check_status+' CONSTRAINT '+constraint_name
FROM cte;

--dropping the temp tables


DROP TABLE #temp_fk;
FETCH NEXT FROM foreignkeycursor
INTO @Collation_fkid;
END;
CLOSE foreignkeycursor;
DEALLOCATE foreignkeycursor;
END;

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 143/238
/*************************************************************************************************************
***********************
* If the column has statistics that aren't part of an index this creates the drop and
recreate scripts *
**************************************************************************************************************
**********************/
IF @Collation_stats>0 AND @Collation_index=0 BEGIN
DECLARE stats_cursor CURSOR FOR
SELECT sc.stats_id
FROM sys.stats_columns sc
JOIN sys.stats s ON s.object_id=sc.object_id AND s.stats_id=sc.stats_id AND
s.user_created=1
WHERE sc.object_id=@Collation_objectid AND sc.column_id=@Collation_columnid;
OPEN stats_cursor;
FETCH NEXT FROM stats_cursor
INTO @stats_id;
WHILE(@@FETCH_STATUS=0)BEGIN
--Create DROP Statistics Statement
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DropStatistics', 'DROP STATISTICS
'+QUOTENAME(OBJECT_SCHEMA_NAME(s.object_id))+'.'+QUOTENAME(OBJECT_NAME(s.object_id))+
'.'+QUOTENAME(s.name)
FROM sys.stats s
WHERE s.object_id=@Collation_objectid AND s.stats_id=@stats_id;

--Building the CREATE statistics statement

--Obtaining all the information


SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(sc.object_id))+'.'+QUOTENAME(OBJECT_NAME(sc.object_id))
AS st_table, QUOTENAME(s.name) AS st_name, QUOTENAME(c.name) AS st_column,
sc.object_id, sc.stats_id, sc.stats_column_id
INTO #temp_stats
FROM sys.stats_columns sc
JOIN sys.stats s ON s.stats_id=sc.stats_id AND s.object_id=sc.object_id
JOIN sys.columns c ON c.object_id=sc.object_id AND c.column_id=sc.column_id
WHERE sc.object_id=@Collation_objectid AND sc.stats_id=@stats_id;
WITH cte AS (SELECT DISTINCT st_table, st_name, SUBSTRING((SELECT ','+st_column
FROM #temp_stats
WHERE stats_id=ts.stats_id
ORDER BY stats_column_id ASC
FOR XML PATH('')), 2, 99999) AS
st_col_list
FROM #temp_stats ts)
--Constructing the statement
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'AddStatistics', 'CREATE STATISTICS '+cte.st_name+' ON
'+cte.st_table+'('+cte.st_col_list+')'
FROM cte;
DROP TABLE #temp_stats;
FETCH NEXT FROM stats_cursor
INTO @stats_id;
END;
CLOSE stats_cursor;
DEALLOCATE stats_cursor;
END;

/*************************************************************************************************************
***********************
* If the column has a unique constraint this creates the drop and recreate scripts
*
**************************************************************************************************************
**********************/
IF @Collation_unique>0 BEGIN

-------------------------------------------------

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 144/238
--ALTER TABLE DROP UNIQUE CONSTRAINT Queries
-------------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'DropUniqueKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_ob
ject_id))+' DROP CONSTRAINT '+QUOTENAME(name)
FROM sys.key_constraints skc
JOIN sys.index_columns ic ON ic.object_id=skc.parent_object_id AND
ic.index_id=skc.unique_index_id
WHERE type='UQ' AND parent_object_id=@Collation_objectid AND
ic.column_id=@Collation_columnid;

---------------------------------------------------
--ALTER TABLE CREATE UNIQUE CONSTRAINT Queries
---------------------------------------------------
SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_obje
ct_id)) AS uq_table, --PK table name
skc.object_id AS constid, QUOTENAME(skc.name) AS constraint_name, --PK name
QUOTENAME(iskcu.COLUMN_NAME)+CASE WHEN sic.is_descending_key=1 THEN ' DESC' ELSE '
ASC' END AS uq_col, iskcu.ORDINAL_POSITION, CASE WHEN unique_index_id=1 THEN 'UNIQUE'
ELSE '' END AS index_unique_type, si.name AS index_name, si.type_desc AS index_type,
QUOTENAME(fg.name) AS filegroup_name, 'WITH('+' PAD_INDEX = '+CASE WHEN
si.is_padded=0 THEN 'OFF' ELSE 'ON' END+','+' IGNORE_DUP_KEY = '+CASE WHEN
si.ignore_dup_key=0 THEN 'OFF' ELSE 'ON' END+','+' ALLOW_ROW_LOCKS = '+CASE WHEN
si.allow_row_locks=0 THEN 'OFF' ELSE 'ON' END+','+' ALLOW_PAGE_LOCKS = '+CASE WHEN
si.allow_page_locks=0 THEN 'OFF' ELSE 'ON' END+')' AS index_property
--,*
INTO #temp_uq
FROM sys.key_constraints skc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE iskcu ON
skc.name=iskcu.CONSTRAINT_NAME
INNER JOIN sys.indexes si ON si.object_id=skc.parent_object_id AND
si.is_unique=1
INNER JOIN sys.index_columns sic ON si.object_id=sic.object_id AND
si.index_id=sic.index_id
INNER JOIN sys.columns c ON sic.object_id=c.object_id AND
sic.column_id=c.column_id
INNER JOIN sys.filegroups fg ON si.data_space_id=fg.data_space_id
WHERE skc.type='UQ' AND iskcu.COLUMN_NAME=c.name AND
skc.parent_object_id=@Collation_objectid AND c.column_id=@Collation_columnid
ORDER BY skc.parent_object_id, skc.name, ORDINAL_POSITION;
WITH cte AS (SELECT uq_table, constraint_name, index_type, SUBSTRING((SELECT
','+uq_col FROM #temp_uq WHERE constid=t.constid FOR XML PATH('')), 2, 99999) AS
uq_col_list, index_unique_type, filegroup_name, index_property
FROM #temp_uq t)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddUniqueKey', 'ALTER TABLE '+uq_table+' ADD CONSTRAINT
'+constraint_name+' UNIQUE '+CAST(index_type COLLATE DATABASE_DEFAULT AS
VARCHAR(100))+' ('+uq_col_list+')'+index_property+' ON '+filegroup_name+''
FROM cte;

--dropping the temp tables


DROP TABLE #temp_uq;
END;
FETCH NEXT FROM collationfix
INTO @Collation_objectid, @Collation_columnid, @Collation_constraint, @Collation_index,
@Collation_foreign, @Collation_stats, @Collation_unique;
END;
CLOSE collationfix;
DEALLOCATE collationfix;

/*************************************************************************************************************
***********************

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 145/238
* Returns all the created scripts in the correct order for running
*
**************************************************************************************************************
**********************/
SELECT DISTINCT script, CASE WHEN ScriptType='DropForeignKey' THEN 1
WHEN ScriptType='DropPrimaryKey' THEN 2
WHEN ScriptType='DropUniqueKey' THEN 3
WHEN ScriptType='DropIndex' THEN 4
WHEN ScriptType='DropStatistics' THEN 5
WHEN ScriptType='AlterCollation' THEN 6
WHEN ScriptType='CreateIndex' THEN 7
WHEN ScriptType='DisableIndex' THEN 8
WHEN ScriptType='AddStatistics' THEN 9
WHEN ScriptType='AddUniqueKey' THEN 10
WHEN ScriptType='AddPrimaryKey' THEN 11
WHEN ScriptType='AddForeignKey' THEN 12 ELSE 99 END AS [exec_order]
FROM #tempscriptstore
WHERE script !=''
ORDER BY exec_order ASC;
DROP TABLE #tempscriptstore;

9. Click on Execute button to execute the query2:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 146/238
10. The result will be displayed as shown below:

11. In the result window, left click on Script column header then right click and select Copy as shown below:

12. Right click on OPCXR_Config database and select New Query


13. In the new query window, right click on it and select Paste

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 147/238
14. Click on Execute button

Procedure of changing the database collation has been completed for OPCXR_Config database.

Please find now the query1 and the query2 for the SQL Database OPCXR_Tenant_0100X.
Let’s take an example below using the Tenant 010001.
Note: for another Tenant or another site, use the same query but change the number of the Tenant or site to be
compliant to the name of the SQL database.

18.2.2.2 SQL Database OPCXR_Tenant


1. Login to SQL Management Studio
2. Expand Databases
3. Right click on OPCXR_Tenant_010001 database and select New Query as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 148/238
4. In the new query window, copy and paste the following query1 for OPCXR_Tenant_010001:
USE [OPCXR_Tenant_010001]
GO
/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 02/23/2018 20:36:19 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN',
N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SplitString]
GO

USE [master];
GO
ALTER DATABASE OPCXR_Tenant_010001 SET Single_USER WITH ROLLBACK IMMEDIATE;
GO

USE [master]
GO
ALTER DATABASE OPCXR_Tenant_010001
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

USE [master];
GO
ALTER DATABASE OPCXR_Tenant_010001 SET Multi_USER WITH ROLLBACK IMMEDIATE;
GO

USE [OPCXR_Tenant_010001]

/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 02/23/2018 20:36:19 ******/


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN',
N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'
CREATE FUNCTION [dbo].[SplitString]
(
@SplitStr nvarchar(max),
@SplitChar nvarchar(5)
)
RETURNS @RtnValue table
(
Data nvarchar(50)
)
AS
BEGIN
Declare @Count int
Set @Count = 1

While (Charindex(@SplitChar,@SplitStr)>0)
Begin
Insert Into @RtnValue (Data)
Select
Data = ltrim(rtrim(Substring(@SplitStr,1,Charindex(@SplitChar,@SplitStr)-1)))

Set @SplitStr = Substring(@SplitStr,Charindex(@SplitChar,@SplitStr)+1,len(@SplitStr))


Set @Count = @Count + 1
End

Insert Into @RtnValue (Data)


Select Data = ltrim(rtrim(@SplitStr))

Return
END
'

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 149/238
END
GO

5. Click on Execute button to execute the query:

6. Click Execute button until getting “Commands completed successfully” at the bottom for the query
execution.

7. Now, again right click on OPCXR_Tenant_010001 database and select New Query.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 150/238
8. In the new query window, copy and paste thefollowing Query2 for OPCXR_Tenant_010001:
Use OPCXR_Tenant_010001
/*******************************************************************************
*
*
*
* This script will check individual columns collations and check it against the
* database default collation, where they are different it will create the scripts
* required to drop all the objects dependant on the column, change the collation
* to the database default and then recreate the dependant objects.
* Some of the code has been reused from stuff found online the majority from
* created scripts to drop and recreate constraints
*
*********************************************************************************/

SET ANSI_WARNINGS OFF;


GO
DECLARE @SchemaName VARCHAR(100);
DECLARE @TableName VARCHAR(256);
DECLARE @IndexName VARCHAR(256);
DECLARE @ColumnName VARCHAR(100);
DECLARE @is_unique VARCHAR(100);
DECLARE @IndexTypeDesc VARCHAR(100);
DECLARE @FileGroupName VARCHAR(100);
DECLARE @is_disabled VARCHAR(100);
DECLARE @IndexOptions VARCHAR(MAX);
DECLARE @IndexColumnId INT;
DECLARE @IsDescendingKey INT;
DECLARE @IsIncludedColumn INT;
DECLARE @TSQLScripCreationIndex VARCHAR(MAX);
DECLARE @TSQLScripDisableIndex VARCHAR(MAX);
DECLARE @Collation_objectid INT;
DECLARE @Collation_columnid INT;
DECLARE @Collation_constraint INT;
DECLARE @Collation_index INT;
DECLARE @Collation_foreign INT;
DECLARE @Collation_stats INT;
DECLARE @stats_id INT;
DECLARE @Collation_fkid INT;
DECLARE @Collation_unique INT;
DECLARE @DatabaseCollation VARCHAR(100)='SQL_Latin1_General_CP1_CI_AS';
CREATE TABLE #tempscriptstore (ScriptType VARCHAR(20),
script NVARCHAR(MAX));
--SELECT @DatabaseCollation=collation_name FROM sys.databases WHERE database_id=DB_ID();

/*****************************************************************************************************************
*******************
* Generates a list of all the columns where their collation doesn't match the database default
* and the depenmdancies they have.

*********************************************************************************************************
***************************/
DECLARE collationfix CURSOR FOR
SELECT t.object_id, c.column_id, COUNT(kc.object_id) AS [has_key_constraint], COUNT(ic.index_id) AS
[has_index], COUNT(fk.constraint_object_id) AS [has_foreign_key], COUNT(st.stats_id) AS [has_stats],
COUNT(uq.object_id) AS [has_unique_constraint]
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id=t.object_id
INNER JOIN sys.types ty ON c.system_type_id=ty.system_type_id
LEFT JOIN sys.index_columns ic ON ic.object_id=c.object_id AND ic.column_id=c.column_id
LEFT JOIN sys.key_constraints kc ON kc.parent_object_id=c.object_id AND
kc.unique_index_id=ic.index_id AND kc.type='PK'
LEFT JOIN sys.key_constraints uq ON uq.parent_object_id=c.object_id AND
uq.unique_index_id=ic.index_id AND uq.type='UQ'

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 151/238
LEFT JOIN sys.foreign_key_columns fk ON fk.referenced_object_id=c.object_id AND
fk.constraint_column_id=c.column_id
LEFT JOIN sys.stats_columns st ON st.object_id=c.object_id AND st.column_id=c.column_id AND
st.stats_column_id !=1
WHERE t.is_ms_shipped=0 AND c.collation_name<>@DatabaseCollation AND ty.name !='sysname'
GROUP BY t.object_id, c.column_id;
OPEN collationfix;
FETCH NEXT FROM collationfix
INTO @Collation_objectid, @Collation_columnid, @Collation_constraint, @Collation_index,
@Collation_foreign, @Collation_stats, @Collation_unique;
WHILE(@@FETCH_STATUS=0)BEGIN

/*****************************************************************************************************************
*******************
* Generates the code to update the columns colation *

******************************************************************************************************************
******************/
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AlterCollation', 'ALTER TABLE '+QUOTENAME(t.name)+' ALTER COLUMN
'+QUOTENAME(c.name)+' '+CASE WHEN (ty.name='ntext'OR ty.name='text') THEN ty.name+' COLLATE '+@DatabaseCollation+'
' ELSE ty.name+'('+CASE WHEN c.max_length=-1 THEN 'MAX' ELSE CASE WHEN ty.name='nvarchar' THEN CAST(c.max_length /
2 AS VARCHAR(20))ELSE CAST(c.max_length AS VARCHAR(20))END END+') COLLATE '+@DatabaseCollation+' ' END+CASE WHEN
c.is_nullable=1 THEN 'NULL;' ELSE 'NOT NULL;' END
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id=t.object_id
INNER JOIN sys.types ty ON c.system_type_id=ty.system_type_id
LEFT JOIN sys.index_columns ic ON ic.object_id=c.object_id AND ic.column_id=c.column_id
WHERE t.is_ms_shipped=0 AND c.collation_name<>@DatabaseCollation AND ty.name !='sysname' AND
c.column_id=@Collation_columnid AND t.object_id=@Collation_objectid;

/*****************************************************************************************************************
*******************
* If the column is in an index this creates the drop and recreate index script *

******************************************************************************************************************
******************/
IF @Collation_index>0 BEGIN
DECLARE CursorIndex CURSOR FOR
SELECT DISTINCT SCHEMA_NAME(t.schema_id) [schema_name], t.name, ix.name, CASE WHEN
ix.is_unique=1 THEN 'UNIQUE ' ELSE '' END, ix.type_desc, CASE WHEN ix.is_padded=1 THEN 'PAD_INDEX = ON, ' ELSE
'PAD_INDEX = OFF, ' END+CASE WHEN ix.allow_page_locks=1 THEN 'ALLOW_PAGE_LOCKS = ON, ' ELSE 'ALLOW_PAGE_LOCKS =
OFF, ' END+CASE WHEN ix.allow_row_locks=1 THEN 'ALLOW_ROW_LOCKS = ON, ' ELSE 'ALLOW_ROW_LOCKS = OFF, ' END+CASE
WHEN INDEXPROPERTY(t.object_id, ix.name, 'IsStatistics')=1 THEN 'STATISTICS_NORECOMPUTE = ON, ' ELSE
'STATISTICS_NORECOMPUTE = OFF, ' END+CASE WHEN ix.ignore_dup_key=1 THEN 'IGNORE_DUP_KEY = ON, ' ELSE
'IGNORE_DUP_KEY = OFF, ' END+'SORT_IN_TEMPDB = OFF, FILLFACTOR ='+CASE WHEN ix.fill_factor=0 THEN CAST(100 AS
VARCHAR(3))ELSE CAST(ix.fill_factor AS VARCHAR(3))END AS IndexOptions, ix.is_disabled,
FILEGROUP_NAME(ix.data_space_id) FileGroupName
FROM sys.tables t
JOIN sys.indexes ix ON t.object_id=ix.object_id
JOIN sys.columns c ON c.object_id=t.object_id
JOIN sys.index_columns ic ON ic.index_id=ix.index_id AND ic.column_id=c.column_id AND
ic.object_id=t.object_id
WHERE ix.type>0 AND ix.is_primary_key=0 AND ix.is_unique_constraint=0
--AND schema_name(tb.schema_id)= @SchemaName
--AND tb.name=@TableName
AND t.is_ms_shipped=0 AND t.name<>'sysdiagrams' AND c.column_id=@Collation_columnid AND
t.object_id=@Collation_objectid AND ic.column_id=@Collation_columnid
ORDER BY SCHEMA_NAME(t.schema_id), t.name, ix.name;
OPEN CursorIndex;
FETCH NEXT FROM CursorIndex
INTO @SchemaName, @TableName, @IndexName, @is_unique, @IndexTypeDesc, @IndexOptions,
@is_disabled, @FileGroupName;
WHILE(@@fetch_status=0)BEGIN

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 152/238
DECLARE @IndexColumns VARCHAR(MAX);
DECLARE @IncludedColumns VARCHAR(MAX);
SET @IndexColumns='';
SET @IncludedColumns='';
DECLARE CursorIndexColumn CURSOR FOR
SELECT col.name, ixc.is_descending_key, ixc.is_included_column
FROM sys.tables tb
INNER JOIN sys.indexes ix ON tb.object_id=ix.object_id
INNER JOIN sys.index_columns ixc ON ix.object_id=ixc.object_id AND
ix.index_id=ixc.index_id
INNER JOIN sys.columns col ON ixc.object_id=col.object_id AND
ixc.column_id=col.column_id
WHERE ix.type>0 AND(ix.is_primary_key=0 OR ix.is_unique_constraint=0)AND
SCHEMA_NAME(tb.schema_id)=@SchemaName AND tb.name=@TableName AND ix.name=@IndexName
ORDER BY ixc.index_column_id;
OPEN CursorIndexColumn;
FETCH NEXT FROM CursorIndexColumn
INTO @ColumnName, @IsDescendingKey, @IsIncludedColumn;
WHILE(@@fetch_status=0)BEGIN
IF @IsIncludedColumn=0
SET @IndexColumns=@IndexColumns+@ColumnName+CASE WHEN @IsDescendingKey=1 THEN '
DESC, ' ELSE ' ASC, ' END;
ELSE SET @IncludedColumns=@IncludedColumns+@ColumnName+', ';
FETCH NEXT FROM CursorIndexColumn
INTO @ColumnName, @IsDescendingKey, @IsIncludedColumn;
END;
CLOSE CursorIndexColumn;
DEALLOCATE CursorIndexColumn;
SET @IndexColumns=SUBSTRING(@IndexColumns, 1, LEN(@IndexColumns)-1);
SET @IncludedColumns=CASE WHEN LEN(@IncludedColumns)>0 THEN SUBSTRING(@IncludedColumns, 1,
LEN(@IncludedColumns)-1)ELSE '' END;
-- print @IndexColumns
-- print @IncludedColumns
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DropIndex', 'DROP INDEX
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+'.'+QUOTENAME(@IndexName)+';';
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'CreateIndex', 'CREATE '+@is_unique+@IndexTypeDesc+' INDEX
'+QUOTENAME(@IndexName)+' ON '+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+'('+@IndexColumns+') '+CASE WHEN
LEN(@IncludedColumns)>0 THEN CHAR(13)+'INCLUDE ('+@IncludedColumns+')' ELSE '' END+CHAR(13)+'WITH
('+@IndexOptions+') ON '+QUOTENAME(@FileGroupName)+';';
IF @is_disabled=1
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DisableIndex', 'ALTER INDEX '+QUOTENAME(@IndexName)+' ON
'+QUOTENAME(@SchemaName)+'.'+QUOTENAME(@TableName)+' DISABLE;';
FETCH NEXT FROM CursorIndex
INTO @SchemaName, @TableName, @IndexName, @is_unique, @IndexTypeDesc, @IndexOptions,
@is_disabled, @FileGroupName;
END;
CLOSE CursorIndex;
DEALLOCATE CursorIndex;
END;

/*****************************************************************************************************************
*******************
* If the column has a primary key constraint this creates the drop and recreate constraint script
*
******************************************************************************************************************
******************/
IF @Collation_constraint>0 BEGIN
-------------------------------------------------
--ALTER TABLE DROP PRIMARY KEY CONSTRAINT Queries
-------------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 153/238
SELECT DISTINCT 'DropPrimaryKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id))+' DROP CONSTRAINT
'+QUOTENAME(name)
FROM sys.key_constraints skc
WHERE type='PK' AND parent_object_id=@Collation_objectid;

---------------------------------------------------
--ALTER TABLE CREATE PRIMARY KEY CONSTRAINT Queries
---------------------------------------------------
SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id)) AS pk_table, --PK
table name
skc.object_id AS constid, QUOTENAME(skc.name) AS constraint_name, --PK name
QUOTENAME(iskcu.COLUMN_NAME)+CASE WHEN sic.is_descending_key=1 THEN ' DESC' ELSE ' ASC'
END AS pk_col, iskcu.ORDINAL_POSITION, CASE WHEN unique_index_id=1 THEN 'UNIQUE' ELSE '' END AS index_unique_type,
si.name AS index_name, si.type_desc AS index_type, QUOTENAME(fg.name) AS filegroup_name, 'WITH('+' PAD_INDEX =
'+CASE WHEN si.is_padded=0 THEN 'OFF' ELSE 'ON' END+','+' IGNORE_DUP_KEY = '+CASE WHEN si.ignore_dup_key=0 THEN
'OFF' ELSE 'ON' END+','+' ALLOW_ROW_LOCKS = '+CASE WHEN si.allow_row_locks=0 THEN 'OFF' ELSE 'ON' END+','+'
ALLOW_PAGE_LOCKS = '+CASE WHEN si.allow_page_locks=0 THEN 'OFF' ELSE 'ON' END+')' AS index_property
--,*
INTO #temp_pk
FROM sys.key_constraints skc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE iskcu ON skc.name=iskcu.CONSTRAINT_NAME
INNER JOIN sys.indexes si ON si.object_id=skc.parent_object_id AND si.is_primary_key=1
INNER JOIN sys.index_columns sic ON si.object_id=sic.object_id AND
si.index_id=sic.index_id
INNER JOIN sys.columns c ON sic.object_id=c.object_id AND sic.column_id=c.column_id
INNER JOIN sys.filegroups fg ON si.data_space_id=fg.data_space_id
WHERE skc.type='PK' AND iskcu.COLUMN_NAME=c.name AND skc.parent_object_id=@Collation_objectid
ORDER BY skc.parent_object_id, skc.name, ORDINAL_POSITION;
WITH cte AS (SELECT pk_table, constraint_name, index_type, SUBSTRING((SELECT ','+pk_col FROM
#temp_pk WHERE constid=t.constid FOR XML PATH('')), 2, 99999) AS pk_col_list, index_unique_type, filegroup_name,
index_property
FROM #temp_pk t)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddPrimaryKey', 'ALTER TABLE '+pk_table+' ADD CONSTRAINT '+constraint_name+'
PRIMARY KEY '+CAST(index_type COLLATE DATABASE_DEFAULT AS VARCHAR(100))+' ('+pk_col_list+')'+index_property+' ON
'+filegroup_name+''
FROM cte;

--dropping the temp tables


DROP TABLE #temp_pk;
END;

/*****************************************************************************************************************
*******************
* If the column has a foreign key constraint this creates the drop and recreate constraint script
*
******************************************************************************************************************
******************/
IF @Collation_foreign>0 BEGIN
DECLARE foreignkeycursor CURSOR FOR
SELECT constraint_object_id
FROM sys.foreign_key_columns
WHERE referenced_object_id=@Collation_objectid AND referenced_column_id=@Collation_columnid;
OPEN foreignkeycursor;
FETCH NEXT FROM foreignkeycursor
INTO @Collation_fkid;
WHILE(@@FETCH_STATUS=0)BEGIN

---------------------------------------------
--ALTER TABLE DROP FOREIGN CONSTRAINT Queries
---------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 154/238
SELECT DISTINCT 'DropForeignKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(fkeyid))+'.'+QUOTENAME(OBJECT_NAME(fkeyid))+' DROP CONSTRAINT
'+QUOTENAME(OBJECT_NAME(constid))
FROM sys.sysforeignkeys sfk
WHERE sfk.constid=@Collation_fkid;

------------------------------------------------
--ALTER TABLE CREATE FOREIGN CONSTRAINT Queries
------------------------------------------------

--Obtaining the necessary info from the sys tables


SELECT constid, QUOTENAME(OBJECT_NAME(constid)) AS constraint_name, CASE WHEN
fk.is_not_trusted=1 THEN 'WITH NOCHECK' ELSE 'WITH CHECK' END AS trusted_status,
QUOTENAME(OBJECT_SCHEMA_NAME(fkeyid))+'.'+QUOTENAME(OBJECT_NAME(fkeyid)) AS fk_table, QUOTENAME(c1.name) AS
fk_col, QUOTENAME(OBJECT_SCHEMA_NAME(rkeyid))+'.'+QUOTENAME(OBJECT_NAME(rkeyid)) AS rk_table, QUOTENAME(c2.name)
AS rk_col, CASE WHEN fk.delete_referential_action=1 AND fk.delete_referential_action_desc='CASCADE' THEN 'ON
DELETE CASCADE ' ELSE '' END AS delete_cascade, CASE WHEN fk.update_referential_action=1 AND
fk.update_referential_action_desc='CASCADE' THEN 'ON UPDATE CASCADE ' ELSE '' END AS update_cascade, CASE WHEN
fk.is_disabled=1 THEN 'NOCHECK' ELSE 'CHECK' END AS check_status
--,sysfk.*,fk.*
INTO #temp_fk
FROM sys.sysforeignkeys sysfk
INNER JOIN sys.foreign_keys fk ON sysfk.constid=fk.object_id
INNER JOIN sys.columns c1 ON sysfk.fkeyid=c1.object_id AND sysfk.fkey=c1.column_id
INNER JOIN sys.columns c2 ON sysfk.rkeyid=c2.object_id AND sysfk.rkey=c2.column_id
WHERE sysfk.constid=@Collation_fkid
ORDER BY constid, sysfk.keyno

--building the column list for foreign/primary key tables


;
WITH cte AS (SELECT DISTINCT constraint_name, trusted_status, fk_table, SUBSTRING((SELECT
','+fk_col FROM #temp_fk WHERE constid=c.constid FOR XML PATH('')), 2, 99999) AS fk_col_list, rk_table,
SUBSTRING((SELECT ','+rk_col FROM #temp_fk WHERE constid=c.constid FOR XML PATH('')), 2, 99999) AS rk_col_list,
check_status, delete_cascade, update_cascade
FROM #temp_fk c)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddForeignKey', 'ALTER TABLE '+fk_table+' '+trusted_status+' ADD
CONSTRAINT '+constraint_name+' FOREIGN KEY('+fk_col_list+') REFERENCES '+rk_table+'('+rk_col_list+')'+'
'+delete_cascade+update_cascade+';'+' ALTER TABLE '+fk_table+' '+check_status+' CONSTRAINT '+constraint_name
FROM cte;

--dropping the temp tables


DROP TABLE #temp_fk;
FETCH NEXT FROM foreignkeycursor
INTO @Collation_fkid;
END;
CLOSE foreignkeycursor;
DEALLOCATE foreignkeycursor;
END;

/*****************************************************************************************************************
*******************
* If the column has statistics that aren't part of an index this creates the drop and recreate *
scripts *

******************************************************************************************************************
******************/
IF @Collation_stats>0 AND @Collation_index=0 BEGIN
DECLARE stats_cursor CURSOR FOR
SELECT sc.stats_id
FROM sys.stats_columns sc
JOIN sys.stats s ON s.object_id=sc.object_id AND s.stats_id=sc.stats_id AND
s.user_created=1
WHERE sc.object_id=@Collation_objectid AND sc.column_id=@Collation_columnid;

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 155/238
OPEN stats_cursor;
FETCH NEXT FROM stats_cursor
INTO @stats_id;
WHILE(@@FETCH_STATUS=0)BEGIN
--Create DROP Statistics Statement
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'DropStatistics', 'DROP STATISTICS
'+QUOTENAME(OBJECT_SCHEMA_NAME(s.object_id))+'.'+QUOTENAME(OBJECT_NAME(s.object_id))+'.'+QUOTENAME(s.name)
FROM sys.stats s
WHERE s.object_id=@Collation_objectid AND s.stats_id=@stats_id;

--Building the CREATE statistics statement

--Obtaining all the information


SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(sc.object_id))+'.'+QUOTENAME(OBJECT_NAME(sc.object_id)) AS st_table,
QUOTENAME(s.name) AS st_name, QUOTENAME(c.name) AS st_column, sc.object_id, sc.stats_id, sc.stats_column_id
INTO #temp_stats
FROM sys.stats_columns sc
JOIN sys.stats s ON s.stats_id=sc.stats_id AND s.object_id=sc.object_id
JOIN sys.columns c ON c.object_id=sc.object_id AND c.column_id=sc.column_id
WHERE sc.object_id=@Collation_objectid AND sc.stats_id=@stats_id;
WITH cte AS (SELECT DISTINCT st_table, st_name, SUBSTRING((SELECT ','+st_column
FROM #temp_stats
WHERE stats_id=ts.stats_id
ORDER BY stats_column_id ASC
FOR XML PATH('')), 2, 99999) AS
st_col_list
FROM #temp_stats ts)
--Constructing the statement
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT 'AddStatistics', 'CREATE STATISTICS '+cte.st_name+' ON
'+cte.st_table+'('+cte.st_col_list+')'
FROM cte;
DROP TABLE #temp_stats;
FETCH NEXT FROM stats_cursor
INTO @stats_id;
END;
CLOSE stats_cursor;
DEALLOCATE stats_cursor;
END;

/*****************************************************************************************************************
*******************
* If the column has a unique constraint this creates the drop and recreate scripts *

******************************************************************************************************************
******************/
IF @Collation_unique>0 BEGIN

-------------------------------------------------
--ALTER TABLE DROP UNIQUE CONSTRAINT Queries
-------------------------------------------------
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'DropUniqueKey', 'ALTER TABLE
'+QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id))+' DROP CONSTRAINT
'+QUOTENAME(name)
FROM sys.key_constraints skc
JOIN sys.index_columns ic ON ic.object_id=skc.parent_object_id AND
ic.index_id=skc.unique_index_id
WHERE type='UQ' AND parent_object_id=@Collation_objectid AND ic.column_id=@Collation_columnid;

---------------------------------------------------
--ALTER TABLE CREATE UNIQUE CONSTRAINT Queries
---------------------------------------------------

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 156/238
SELECT
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))+'.'+QUOTENAME(OBJECT_NAME(parent_object_id)) AS uq_table, --PK
table name
skc.object_id AS constid, QUOTENAME(skc.name) AS constraint_name, --PK name
QUOTENAME(iskcu.COLUMN_NAME)+CASE WHEN sic.is_descending_key=1 THEN ' DESC' ELSE ' ASC'
END AS uq_col, iskcu.ORDINAL_POSITION, CASE WHEN unique_index_id=1 THEN 'UNIQUE' ELSE '' END AS index_unique_type,
si.name AS index_name, si.type_desc AS index_type, QUOTENAME(fg.name) AS filegroup_name, 'WITH('+' PAD_INDEX =
'+CASE WHEN si.is_padded=0 THEN 'OFF' ELSE 'ON' END+','+' IGNORE_DUP_KEY = '+CASE WHEN si.ignore_dup_key=0 THEN
'OFF' ELSE 'ON' END+','+' ALLOW_ROW_LOCKS = '+CASE WHEN si.allow_row_locks=0 THEN 'OFF' ELSE 'ON' END+','+'
ALLOW_PAGE_LOCKS = '+CASE WHEN si.allow_page_locks=0 THEN 'OFF' ELSE 'ON' END+')' AS index_property
--,*
INTO #temp_uq
FROM sys.key_constraints skc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE iskcu ON skc.name=iskcu.CONSTRAINT_NAME
INNER JOIN sys.indexes si ON si.object_id=skc.parent_object_id AND si.is_unique=1
INNER JOIN sys.index_columns sic ON si.object_id=sic.object_id AND
si.index_id=sic.index_id
INNER JOIN sys.columns c ON sic.object_id=c.object_id AND sic.column_id=c.column_id
INNER JOIN sys.filegroups fg ON si.data_space_id=fg.data_space_id
WHERE skc.type='UQ' AND iskcu.COLUMN_NAME=c.name AND skc.parent_object_id=@Collation_objectid
AND c.column_id=@Collation_columnid
ORDER BY skc.parent_object_id, skc.name, ORDINAL_POSITION;
WITH cte AS (SELECT uq_table, constraint_name, index_type, SUBSTRING((SELECT ','+uq_col FROM
#temp_uq WHERE constid=t.constid FOR XML PATH('')), 2, 99999) AS uq_col_list, index_unique_type, filegroup_name,
index_property
FROM #temp_uq t)
--forming the ADD CONSTRAINT query
INSERT INTO #tempscriptstore(ScriptType, script)
SELECT DISTINCT 'AddUniqueKey', 'ALTER TABLE '+uq_table+' ADD CONSTRAINT '+constraint_name+'
UNIQUE '+CAST(index_type COLLATE DATABASE_DEFAULT AS VARCHAR(100))+' ('+uq_col_list+')'+index_property+' ON
'+filegroup_name+''
FROM cte;

--dropping the temp tables


DROP TABLE #temp_uq;
END;
FETCH NEXT FROM collationfix
INTO @Collation_objectid, @Collation_columnid, @Collation_constraint, @Collation_index,
@Collation_foreign, @Collation_stats, @Collation_unique;
END;
CLOSE collationfix;
DEALLOCATE collationfix;

/*****************************************************************************************************************
*******************
* Returns all the created scripts in the correct order for running *

******************************************************************************************************************
******************/
SELECT DISTINCT script, CASE WHEN ScriptType='DropForeignKey' THEN 1
WHEN ScriptType='DropPrimaryKey' THEN 2
WHEN ScriptType='DropUniqueKey' THEN 3
WHEN ScriptType='DropIndex' THEN 4
WHEN ScriptType='DropStatistics' THEN 5
WHEN ScriptType='AlterCollation' THEN 6
WHEN ScriptType='CreateIndex' THEN 7
WHEN ScriptType='DisableIndex' THEN 8
WHEN ScriptType='AddStatistics' THEN 9
WHEN ScriptType='AddUniqueKey' THEN 10
WHEN ScriptType='AddPrimaryKey' THEN 11
WHEN ScriptType='AddForeignKey' THEN 12 ELSE 99 END AS [exec_order]
FROM #tempscriptstore
WHERE script !=''
ORDER BY exec_order ASC;
DROP TABLE #tempscriptstore;

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 157/238
9. Click on Execute button to execute the query2:

10. The result will be displayed as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 158/238
11. In the result window, left click on Script column header then right click and select Copy as shown below:

12. Right click on OPCXR_Tenant_010001 database and select New Query


13. In the new query window, right click on it and select Paste
14. Click on Execute button

Changing the database collation has been completed for OPCXR_Tenant_010001 database.

Procedure of changing the database collation has been completed for OmniPCX Record release 2.3.0.19 or higher.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 159/238
18.3 Create a user in SQL Server
18.3.1 OmniPCX Record release 2.3.0.18 or lower (single SQL database)

If you see any exception while deleting the SQL user then please perform the following steps to recreate the
SQL user and assign the proper permissions on database(s)
Note: If the same SQL user is being used to access other(s) database(s) then leave that user as it is and create a
new SQL user.

1. Log on to SQL Management Studio


2. Expand Security
3. Right click on Logins and select “New Login …” as shown below:

4. The following screen will appear

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 160/238
OmniPCX Record - Release 2.3 and above – ALESVC50173
OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 161/238
5. Enter the details of SQL user and select English from the dropdown list of Default language

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 162/238
6. Click OK

New SQL user has been created successfully

7. Now you need to change the database owner. For this, right click on OmniPCXRecord database and select
properties as shown below

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 163/238
8. The following window will appear

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 164/238
9. From the left panel, select Files and update the newly created SQL user as a database owner as shown below:

10. Click OK

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 165/238
11. Now you need to update the newly created SQL user permissions on OmniPCX RECORD database. For this,
expand Login, right click on the SQL user and select properties as shown below:

12. The following screen will appear:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 166/238
13. Select Server Role from left panel and assign proper read & write permissions to the user i.e public and
dbcreator

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 167/238
14. From the left panel, select User Mapping and assign the proper read & write permissions to the user i.e
public and dbcreator on Master and OmniPCXRecord databases as shown below:

15. Click OK

Procedure to create a user SQL has been completed for OmniPCX Record release 2.3.0.18 or lower.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 168/238
18.3.2 OmniPCX Record release 2.3.0.19 or higher (multiples SQL database)

If you see any exception while deleting the SQL user then please perform the following steps to recreate the
SQL user and assign the proper permissions on database(s)
Note: If the same SQL user is being used to access other(s) database(s) then leave that user as it is and create a
new SQL user.

1. Login on to SQL Management Studio


2. Expand Security
3. Right click on Logins and select “New Login …” as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 169/238
4. The following screen will appear

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 170/238
5. Enter the details of SQL user and select English from the dropdown list of Default language

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 171/238
6. Click OK

New SQL user has been created successfully

7. Now you need to change the database owner. For this, right click on OmniPCX RECORD databases
(OPCXR_Config and OPCXR_Tenant_010001) and select properties as shown below

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 172/238
8. The following window will appear

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 173/238
9. From the left panel, select Files and update the newly created SQL user as a database owner as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 174/238
10. Click OK

11. Now you need to update the newly created SQL user permissions on OmniPCX RECORD databases. For this,
expand Login, right click on the SQL user and select properties as shown below:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 175/238
12. The following screen will appear:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 176/238
13. Select Server Role from left panel and assign proper read & write permissions to the user i.e public and
dbcreator

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 177/238
14. From the left panel, select User Mapping and assign the proper read & write permissions to the user i.e
public and dbcreator on Master, OPCXR_Config and OPCXR_Tenant_010001 databases as shown below:

15. Click OK

Procedure to create a user SQL has been completed for OmniPCX Record release 2.3.0.19 or higher.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 178/238
19 Fatal Error occurred during installation

This error occurs when setup tries to perform compulsory steps such as creating directories, database
and files but fails to do that.
1- Please verify if all the pre-requisites (Roles and Features) are installed as mentioned in the
install guide.
2- Please verify if the user has proper user rights.

IMPORTANT

OmniPCX RECORD installation can be performed only via Local machine Administrator or local
machine user with full administrator rights. It cannot be performed via domain user.

20 Silent Monitoring issues

1- Please verify if silent monitoring licenses are available in OmniPCXRECORD.


In OmniPCX Record Console / General / Licensing :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 179/238
2- Please verify if silent monitoring is enabled for supervisor.

Check the supervisor belongs to a group admin which has the right of silent monitoring on
supervised teams

3- Please verify the version of VLC Player as mentioned in the hardware-software


specification documentation.

4- Please verify if the VLC Player plug-in is installed and enabled in Internet Explorer.
Under IE, Tools > Managed Add-ons :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 180/238
5- If the voice is not coming in OmniPCX RECORD interface, then follow the steps below to
verify If the audio stream is coming to that machine directly in VLC Player or not.
a. Open VLC Player
b. Open OXR Silent monitoring page on the client’s PC.
c. Play any live call whether there is sound or not.
d. On VLC Player, click on “Media” and “Open Network stream”.
e. Provide rtp://@[client’s PC IP]:9996 in “Network URL”.
f. Close browser (OXR without logging out or doing anything) and listen to the voice in
VLC Player.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 181/238
21 Screen Capture issues

1- Please verify if the screen capture licenses are available in OmniPCX RECORD.
In OmniPCX Record Console / General / Licensing :

2- Please verify if the screen capture server and client versions are same.
In the Omni PCX Record server and client, in Control Panel / All Control Panel Items / Program
and Features :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 182/238
3- Please verify if Xvid is installed on both server and client machines.
In the Omni PCX Record server and client, in Control Panel / All Control Panel Items / Program
and Features :

4- Please verify if the Screen capture server is running.


In OmniPCX Record Console / General / Server :

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 183/238
5- Please verify if the username of Screen capture client PC is correct in agent settings of
OmniPCX RECORD.
The username of Screen Capture client PC is the Windows account of the client PC.

In OmniPCX Record Console / General / Agents :

6- The agent must be logged on his PC with same username which is configured in OmniPCX
RECORD agent settings.

7- Please verify if the screen capture server IP is correctly configured in the


“OmniPCXScreenCapture (Agent).exe” (config file) at location “…\Alcatel
Lucent\OmniPCXRecord Suite\Screen Capture Agent” on the client machine

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 184/238
8- Please verify screen capture server machine is accessible from screen capture agent’s
machine and vice versa.

9- Please verify that ports required for screen capture are enabled in the firewall and any anti
virus running on agent’s machine. Please see “Firewall configuration” section in the install
guide.

Reference Port Type Port Number

Screen Capture Agent and Server TCP 8044

Recording Server & Screen Capture Server UDP 8055

GDP For Screen Capture Agents to Broadcast UDP 11001

GDP For Screen Capture Server to Broadcast UDP 11010

Screen Capture Agent Location TCP 8066

10- The screen capture client should be running on agent’s machine only with
one username which is configured in OmniPCX RECORD agent settings. Verify this from Task
Manger > Processes

11- The screen capture will not work if the agent machine is locked or another user is logged in by
using windows “switch user” option. So the agent must log off or shutdown his machine for
screen capture to work properly.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 185/238
22 HA and call replication issues

1- Please verify if the configuration of Primary and Secondary servers is correct in system
settings page.
2- Please verify if “OmniPCXRecord SQL Replication” service is running on both primary and
secondary servers. This service is independant of the recorder service.

3- Check if the audio file paths are shared for both servers.

4- Please verify if the secondary database is accessible from the primary server with the SQL
user configured in OmniPCXRecord and vice versa.

5- Please verify from SQL Configuration Manager that “TCP/IP” and “Named Pipes” are enabled
on both primary and secondary servers.
Start / All Programs / Microsoft SQL Server 2008 / Configuration Tools / SQL Server Configuration
Manager

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 186/238
6- Please verify if the administrator account was used to install OmniPCX RECORD.

7- Check the replication logs from the primary and secondary servers and see if there is any error
in the logs. Please check the replication activity after section “Large table replication” in the
logs.
The replication logs are under :
C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\Logs\Replication

8- In the replication logs from the primary and secondary servers, please checkif there are no
errors for accessing audio file path.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 187/238
23 IP Attendant / Console Recording issues

1- Please verify Attendant Client is installed and startedon the client PC.
Windows / Taskbar Menu / Check the Attendant Client is in green state

2- Please verify if WinPCap is installed on the OmniPCXRecord server machine.


In Control Panel / All Control Panel Items / Program and Features :

3- Check Alcatel Lucent 4059 application is installed.

4- Please verify Alcatel Lucent 4059 keyboard driver is installed.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 188/238
5- Attendant extension (e.g. A001) in OmniPCX Enterprise should have associated IP extension
e.g. 11008 ( Serie 8 - 4068 Set )

4068 set

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 189/238
6- Please verify Associated IP Extension is added in the OmniPCX Record extension list and its
mac address is correct.

In OmniPCX Record Console / Manage/ Extension :

7- Please verify if the same associated IP extension is provided in the Attendant Client
machine configuration.
In C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCX Console Recording Agent
\ OmniPCXConsoleRecordingAgentService.exe.config file

Attendant Number

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 190/238
8- Please verify if the correct LAN card (which is used for port mirroring) of
OminPCX RECORD server is selected in “Network Adaptor” settings in the system settings page
in OmniPCX RECORD.
In OmniPCX Record Console / Manage/ System / Recorder Settings:

9- Please verify if the RTP traffic is coming from an IP Phone (associated phone) to the server.
To do it, launch wireshark traces in mirroring port of the IP Phone. Refer to chapter 8.1.3

10- Please verify agent logged on console client machine must have admin rights

11- On the OXE, check the UDP port:


Open mgr, go under IP \ TSC/IP Parameters \ UDP Port
If the UDP Port is different to 32512, Change it to 32512

Reboot the OXE to take the modification into account

From wireshark you should see the UDP stream on port with value more than 32512, and
redirection to the port 13000 (from IP attendant 4059EE to OmniPCX Record):

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 191/238
24 Quality Monitor not accessible

If Quality Monitor is not accessible and shows error “error loading rad chart image telerik”, then
perform the following steps.

1- Go to the path “…\OmniPCX Record Suite\Quality Monitor” on the server machine and open
the file “web.config” in notepad.

2- Copy the following tags and paste in the “web.config” file under“<system.webServer>” at the
bottom and save the file.

<handlers>
<add name="Telerik.ReportViewer.axd_*" path="Telerik.ReportViewer.axd" verb="*"
type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms,
Version=6.0.12.215, Culture=neutral, PublicKeyToken=a9d7983dfcc261be"
preCondition="integratedMode" />
<add name="ChartImage_axd" verb="*" preCondition="integratedMode" path="ChartImage.axd"
type="Telerik.Web.UI.ChartHttpHandler" />
<add name="Telerik.Web.UI.SpellCheckHandler.axd_*"
path="Telerik.Web.UI.SpellCheckHandler.axd" verb="*" type="Telerik.Web.UI.SpellCheckHandler,
Telerik.Web.UI, Culture=neutral, PublicKeyToken=121fae78165ba3d4" preCondition="integratedMode"
/>
<add name="Telerik.Web.UI.DialogHandler.aspx_*" path="Telerik.Web.UI.DialogHandler.aspx"
verb="*" type="Telerik.Web.UI.DialogHandler, Telerik.Web.UI, Culture=neutral,
PublicKeyToken=121fae78165ba3d4" preCondition="integratedMode" />
<add name="Telerik.RadUploadProgressHandler.ashx_*"
path="Telerik.RadUploadProgressHandler.ashx" verb="*"
type="Telerik.Web.UI.Upload.RadUploadProgressHandler, Telerik.Web.UI"
preCondition="integratedMode" />
<add name="Telerik.Web.UI.WebResource.axd_*" path="Telerik.Web.UI.WebResource.axd" verb="*"
type="Telerik.Web.UI.WebResource, Telerik.Web.UI" preCondition="integratedMode" />
</handlers>

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 192/238
25 Removing coach links from the OmniPCX Record

If Aspire coach was installed previously, uninstalling Aspire coach will not remove coach links from
OmniPCXRecord web page.
1- Go to the path “…\OmniPCXRecord Suite\OmniPCXRecord” and open the file “web.config” in
notepad.
2- Search the key “ <add key="CoachVDirectory" value="Aspire" />” and change the name to
“Aspire1” from “Aspire” and save the file.

26 Not able to deploy a patch file


If you received a patch file (correction) from the Alcatel-Lucent Technical Support, check all the provided files are
not blocked (Security):

Right click on the file and select Properties. If the file is blocked by Windows then you will find the
security option available at the bottom:

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 193/238
Select the checkbox to unblock the file

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 194/238
27 DR-Link recording mode (Voice Guide, Beep)

27.1 Voice Guide channel lack for VG No 565


In the previous OmniPCX Record release only a tone could be managed for the recording notification type.
Since the OXE Release m4.500 and the OmniPCX Record 2.4.0.4, you are able to configure a Voice Guide (the
voice guide is the 565 and can not be changed) as a beep.
4 choices are proposed:

Note: after any change, the Recording Server must be restarted for the new the change to take effect.

When you select the choice “Voice Guide”, the OmniPCX Record will request to the OXE to play the voice guide
565.
By default, this voice guide 565 has the following messages associated to the languages:
Nb Constant Backup Function VG Message Nb for Language
tone start 1 2 3 4 5 6 7 8
565 VG_DRLINK_IS 56 Mono Yes Conversation in 565 779 777 776 775 774 773 772
_RECORDING message progress may is
being recorded

According to the language you use, you must create and record the right message (example: message 565 for
the language 1).

Association between recorded device and voice message:


-1- Check the Language ID of the device
mgr
\Users

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 195/238
2- Check which voice message is configured in the Voice Guide 565
System \Voice Guides (565)

-3- Check the voice message is assigned to a GD/GD3, GA/GA3 or GPA board
(example for a GD Board 1-1)
System \Dynamic Voice Guides \Assigment

If there is no voice message 565 cretaed, Create it.

You can change the number of the message if you don’t want to use 565 but the Voice Guide number must be
565.
As soon as the message is created, recorded (recordable prefix) and selected, it will be played just after a
recorded call is established.
If the participants are speaking during the voice guide is played, all the voice will be overlapped.
The voice guide will be recorded in the record file.

The principle to play the voice guide is a 3 parties conference is used on the OXE.
In DR-Link recording mode, you must check the settings of the GD, GA (common hardware) or GPA board
(crystal hardware). Management of N part conference is required because a 3 parties conference is already used
to record the call through the PCM channels (connected to a packetizer).

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 196/238
Without configuring properly, the N part conference, the incident 2615 will raise on the OXE:
2615=Voice Guide channel lack for VG No 565

Required configuration on the OXE:


• N part conference:
GD or GA board:
Number of N part conferences on MG: 0 -> 1
GD3 or GA3 board
N part conferences configuration: 0 -> 2x7
N part conference type: Meet-me -> Add-on
GPA2 board:
Shelf\Board\GPA DSP program (Review/Modify)
Interface Type: GPA2
Configuration GPA2: 3 Conference+VAD+Tone
Shelf\Board\GPA DSP program (Descend hierarchy)
Modular conference ((Review/Modify)
Shelf Address : 1
Board Address : 10
DSP Number : 1

Conference size + 1x30 -> 7x4


Mapping + Meet-me -> Add-on

• Management ressources
Connect the OXE (telnet command
Type the command:
cd /DHS3data/mao
Then type the command:
cfgUpdate
Press return and enter the value 62 for the Value to modify
Value to modify (0 = Exit): 62

Old value: 0
New value: 10
After entering the value 10, press return
Enter Y to validate your choice and press return
Validation (Yes/No) Y
You should be in the list:
62 Maximum simultaneous casual conferences : 10
Enter 0 to exit

• To take the update into account, don’t forget to reboot the OXE.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 197/238
27.2 Beep not heard when listening the record

The beep (interval: 15 sec configured in the OmniPCX Record) is heard properly in the telephonic conversation
but when we listen to the record file, the beep is not heard.
This issue occurred during an internal between 2 TDM sets (monitored and recordable).

= > the minimum version of the OXE must be the R12.3.1 m4.501.7.a

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 198/238
28 Consulting the Technical Support

Should you not be able to resolve your issue using the information given above, it will be
necessary to contact a technical support engineer who can assist you in resolving the problem.
However, before contacting support it is important that you have the following details to hand:

1- A brief description of the issue you are facing

2- The software version number, this can be located at the bottom of the page on the
administration interface

3- Trace files (These can be retrieved from the OmniPCX SERVER in the following folder)
“C:\Program Files\Alcatel-Lucent\OmniPCXRecord Suite\Logs”

4- Sample Times & Dates that the issue occurred

5- Your packetizer serial number (If applicable)

6- Your support contract number

7- Screenshot of the licenses of the OmniPCX Record

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 199/238
Required Logs

1. Call Recording Problem:


We need the following log from client regarding this issue

..\OmniPCXRecord Suite\Logs\Recorder Logs


..\OmniPCXRecord Suite\Logs\RTP Logger Logs (if they have the OPR release which includes
RTP logger)
Wireshark Traces

2. Screen Capturing Problem:


We need the following log from client regarding this issue.

..\OmniPCXRecord Suite\Logs\Recorder Logs


..\OmniPCXRecord Suite\Logs\ Screen Capture Logs (SERVER)
..\OmniPCXRecord Suite\Screen Capture Agent\Logs (Client)
..\OmniPCXRecord Suite\Screen Capture Server\Snapshots (Optional)
Wireshark Traces (Optional)

3. Silent Monitoring Problem:


We need the following log from client regarding this issue.

..\OmniPCXRecord Suite\Logs\Recorder Logs


..\OmniPCXRecord Suite\Logs\Web
Wireshark Traces (Optional)

4. IP Attendant Problem:
We need the following log from client regarding this issue.

..\OmniPCXRecord Suite\Logs\OMNI Console Recorder Logs (Server)


..\OmniPCXRecord Suite\OmniPCX Console Recording Agent\Logs (Client)

5. Quality Monitoring Problem:


We need the following log from client regarding this issue.

Quality Monitor’s Logs when the problem appears.

6. HA Problem:
We need the following log from client regarding this issue.

..\OmniPCXRecord Suite\Server\Startup Logs (Primary & Secondary)


..\OmniPCXRecord Suite\Logs\ Recorder Logs (Primary & Secondary)
..\OmniPCXRecord Suite\Logs\Replication (Primary & Secondary)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 200/238
7. Recorder Service Problem:

..\OmniPCXRecord Suite\Logs\ Recorder Logs


..\OmniPCXRecord Suite\Server\Startup Logs
Event Viewer Logs

MUST Depends on the situation

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 201/238
29 Appendix A : Recording Filters Rules

This appendix describes the following scenarios to explain in detail the recording filters rules

Scenario 1:
Extensions are to be recorded automatically (by default) by OmniPCX Record.

1-1 Description of the environment:

Extensions without ROD Calls recorded by default

1-2 Recording filters to be applied:

Extensions without ROD => calls recorded by default

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 202/238
Let’s see how created recording filter is working:

Description step by step:

Step 1- Extension receives a call an answer to the call

Step 2- OXR is checking if system filter is matching

No system filter configured

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 203/238
Step 3- OXR is checking what is the Default Action

Default Action is: Record

Step 4- The call is starting to be recorded

Step 5- Extension hangs up the call

Step 6- OXR checks if Record on Demand has been activated.


The extension has not the right for ROD:

ROD is not activated

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 204/238
Step 7- OXR checks if User filter(s) has been managed.

OXR checks the agent associated to the extension 3000 (in this example) to control the
Recording rules(s).

No User filter managed

Step 8- OXR checks if the call is being recorded


The call is being recorded (see step 4)

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 205/238
Step 9- OXR saves the recorded call

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 206/238
Scenario 2:
Some extensions are to be recorded automatically (by default) by OmniPCX RECORD and some
extensions are to be configured to use Record on demand (ROD).

2-1 Description of the environment:

Correspond to the Scenario 1

Extensions without ROD Calls recorded by default

Add-on in the Scenario 2

Extensions with ROD

When call arrived on those extensions :

Calls recorded if ROD is


In our example, the agent activated (ROD entire call)
selects the « ROD entire call » during the call.

Calls not recorded if ROD is


not activated during the call.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 207/238
2.2 Recording filters to be applied:

2.2.1- Extension without ROD configured => same Recording filter configured at the Scenario 1.

2.2.2- Extensions with ROD configured => for those extensions we need to consider 2 cases:

=> we don’t need to add recording filter in order to record the call for which ROD has been activated
because the Default Action is “Record” and Default Action is checked by the OXR before the ROD.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 208/238
During the “Start of Call” phase, there is no difference, to start the call recording, between extension for
which the ROD is configured and extension for which the ROD is not configured.

The difference between the call for which the ROD has been activated and the call for which the ROD
hasn’t been activated will appear during the End of Call phase.

2.2.2.1- If the ROD is activated (ROD entire call) during the call, the call must be recorded.
“End of call” Description step by step for ROD activated:

Step 1- During the call, the extension has activated the ROD

Step 2- Extension hangs up the call

Step 3- OXR checks if the ROD has been activated

Step 4- OXR saves the call

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 209/238
2.2.2.2- If the ROD is not activated during the call, the call mustn’t be recorded.
“End of call” Description step by step for ROD activated:

Step 1- During the call, the extension has NOT activated the ROD

Step 2- Extension hangs up the call

Step 3- OXR checks if the ROD has been activated

Step 4- OXR checks if User filter is configured


No User filter configured

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 210/238
Step 5- OXR checks if call is being recorded
Call is being recorded (see 2.2.2)

Step 6- OXR saves the call

As you can see the call is recording and saved. This is not what the customer wants.
Calls not recorded if ROD is not activated during the call.

To respect the requirement, a User recording filter has to be created in order to Ignore the calls for which the
ROD is not activated during the call.

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 211/238
The step 4 at the section 2.2.2 will change after creating the User recording filter.
Let’s remind the step 4:

OXR checks if User filter is configured


No User filter configured

How to create the User recording filter:

Edit the agent view associated to extension for which ROD is configured
Then click on “Recording Rules”

To add the rule

Modification “End of call” Description step by step for ROD activated:

To apply the rule


OmniPCX Record - Release 2.3 and above – ALESVC50173
OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 212/238
The 3 first steps are the same as described in beginning of the section 2.2.2.2.

Step 4- OXR checks if User filter is configured


Yes, User filter is configured

Step 5- OXR checks the Action of User filter


Action is Ignore call

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 213/238
Step 6- OXR doesn’t save the call

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 214/238
30 Appendix B : OmniPCX Record Call Flows

This appendix describes the OmniPCX Record call flow following different scenarios.

30.1 4059EE Attendant recording with Port Mirroring

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 215/238
30.2 4059EE Attendant recording with RTP Redirection ( so with IPDSP )

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 216/238
30.3 Warm Standby keep alive

** This value is changed to 10 seconds from OPR 2.3.0.11 onwards

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 217/238
30.4 Warm Standby Replication with Local DB

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 218/238
30.5 Warm Standby – Secondary becomes main with Local DB

** This value is changed to 10 seconds from OPR 2.3.0.11 onwards

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 219/238
30.6 Primary Recorder Initialization with Local DB

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 220/238
30.7 IP DR-Link Recording with Local DB

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 221/238
30.8 IP DR-Link Recording with Local DB

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 222/238
30.9 Web Configuration

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 223/238
30.10 ROD (Record Entire Call type) in IP DR-Link with Web Application

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 224/238
30.11 ROD (Record Entire Call type) in IP DR-Link with PRS

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 225/238
30.12 ROD (Record From Now type) in IP DR-Link with PRS

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 226/238
30.13 ROD (Record Entire Call type) in IP DR-Link with API client Application

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 227/238
30.14 Archiving Process

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 228/238
30.15 Screen Recording with IP DR-Link

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 229/238
30.16 SNMP Traps

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 230/238
30.17 Email Sending

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 231/238
30.18 Moving to OmniPCX Enterprise Double Main situation

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 232/238
30.19 End of OmniPCX Enterprise Double Main situation

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 233/238
30.20 Keep alive mechanism between Recorder and OXE

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 234/238
30.21 SIP Phone Recording with Port Mirroring

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 235/238
30.22 User Authentication using RADIUS Server

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 236/238
30.23 User Authentication using RADIUS Server in HA

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 237/238
Follow us on Facebook and Twitter
Connect with us on Facebook and Twitter for the latest:
− Software releases
− Technical communications
− AAPP InterWorking reports
− Newsletters
…and much more!

twitter.com/ALUE_Care

facebook.com/ALECustomerCare

Submitting a Service Request


Please connect to our eService Request application.

Before submitting a Service Request, please be sure:


− The application has been certified via the AAPP if a third party application is involved.
− You have read the release notes that list new features, system requirements, restrictions, and more,
and are available in the Technical Documentation Library.
− You have read through the related troubleshooting guides and technical bulletins available in the
Technical Documentation Library.
− You have read through the self-service information on commonly asked support questions and known
issues and workarounds available in the Technical Knowledge Center.

- END OF DOCUMENT -

OmniPCX Record - Release 2.3 and above – ALESVC50173


OmniPCX Record: Troubleshooting guide ALESVC50173 ed.18
Copyright © ALE International 2020 page 238/238

You might also like