728x90

Exploring Default Installation and SQL Paths in Lync Server 2013

http://howdouc.blogspot.com/2012/11/exploring-default-installation-and-sql.html

 

 

SfB Topology Builder – Select Database File Location

http://silbers.net/sfb-topology-builder-select-database-file-location/

 

How to Install Lync SQL Express to a Non-System Drive

https://guybachar.net/2014/03/29/how-to-install-lync-sql-express-to-a-non-system-drive/

 

 

Script: Set-Cs2013Features.ps1 – Easily Install Prerequisites and Tools for Microsoft Lync Server 2013

https://www.ucunleashed.com/1697

 

Lync Server 2013: Using the DatabasePathMap Parameter to Deploy Databases

https://blogs.technet.microsoft.com/nexthop/2012/11/20/lync-server-2013-using-the-databasepathmap-parameter-to-deploy-databases/

728x90
728x90

Stats Man and KHI released for Skype for Business Server 2019

Two more tools have been released for Skype for Business Server 2019. The Real-Time Stats Manager and Key Health Indicators (KHI) are now available for download here:

Real-Time Statistics Manager

Key Health Indicators

 

 

Setup Step-by-Step For Real-Time Stats Manager

https://blogs.technet.microsoft.com/dodeitte/2015/10/24/skype-for-business-server-real-time-statistics-manager/

 

https://blogs.technet.microsoft.com/dodeitte/2016/04/25/skype-for-business-server-real-time-statistics-manager-1-1-available/

Skype for Business Server 실시간 통계 관리자에 대한 업데이트를 사용할 수 있습니다. 릴리스 1.1에서 다음과 같은 알려진 문제점이 수정되었습니다.

• UI / 서버 / 에이전트 - 신뢰성 및 성능 향상

• UI - 기본 필터 제어가 이제 다른 경우와 정확하게 정렬됩니다 (사람들이 특정 서버가 시스템에 없을 때 시스템에 있다고 생각하게 만들었습니다)

• 서버 - 이제 서버 구성 요소가 영어가 아닌 서버에 설치됩니다.

• 서버 / 에이전트 - 특정 버전의 .NET 4.0 때문에 에이전트 및 서버 구성 요소가 .NET 오류로 설치되지 않는 경우가 있습니다. 이 문제가 해결되었습니다.

• 에이전트 - Statsman 에이전트에 확장 이벤트 로깅이 추가되었습니다. 토폴로지가 아닌 서버에 에이전트를 설치하면 더 이상 크래시가 발생하지 않으며 가능한 다른 많은 오류 조건과 함께 이벤트 로그에 기록됩니다.

• UI - Chrome 브라우저를 사용하는 웹 클라이언트는 Statistics Manager 웹 서버와 동일한 작업 그룹 또는 도메인에 가입되지 않은 클라이언트 컴퓨터를 사용할 때 여러 로그인 프롬프트를 보게됩니다. 이제 세션 당 하나의 로그인 만 필요합니다.

 

728x90
728x90

Introduction

Managing address book in Lync\SFB environment, in itself, is a task. Lync\SFB admins keep on getting address book related issues in the environment.

  • Users may notice duplicate contacts in address book search
  • User may notice old contact details (name, phone number, title etc).
  • Users see contacts deleted in Active Directory (resigned cases)
  • Users may not be able to search address book.
  • Users may experience “Cannot Synchronize Address Book” error as below.

"This article focusses on steps to resolve address book issues."


Re-Create the Address Book (Server)

This section of the article explains the process to re-create address book files at server end. Navigate following folder and delete the contents (existing address book files).

Lync_File_Share\1-WebServices-1\ABfiles\000000000\000000000



Forces the back-end user database to clear its replication status with Active Directory. This causes the database to re-read all the user-related information stored in Active Directory Domain Services.


Now, run following command on the Front End server;

Update-CsAddressBook

Forces the specified Address Book servers to synchronize their contents with the User database.


Wait for some time (5-10 mins, may be longer), and navigate to following location. You should see the files being recreated.

Lync_File_Share\1-WebServices-1\ABfiles\000000000\000000000

Check Address Book URLs

As a next step, make sure that you can browse to the following URLs.

As an internal client;

https://<internal web services url>/abs/handler 
https://<internal web services url>/abs/handler/GroupExpansion/Service.svc

As an external client;

https://<external web services url>/abs/handler 
https://<external web services url>/abs/handler/GroupExpansion/Service.svc

Test Address Book Service

Run following commands to check errors. You should be fine if it doesn’t return configuration related erros.

Test-CsAddressBookService

Test-CsAddressBookWebQuery

AddressBookAvailability Setting in Client Policy

You have option to select how a user should search a contact. There is a setting, AddressBookAvailability, in Lync\SFB client policy for this. By default, the policy is set to allow address book download and web search (by typing SIP URI of a contact).

Run following command to check address book setting.

Get-CsClientPolicy | Select-Object Identity,AddressBookAvailability | ft

There are currently three available settings for this parameter; WebSearchAndFileDownload,WebSearchOnly, and FileDownloadOnly. Define it as per your organization’s requirement.

  • WebSearchOnly is realtime and address book file content could be 24 hrs old.
  • You need to type full SIP URI for web search. Contact searching is user friendly if address book file downloaded.


Re-Create the Address Book (Client)

Now, re-create address book file, after performing above steps. First, delete local SIP profile of the users.

If user is running Skype For Business 2016

  • Log off of the Lync client and delete the profile from:
  • %userprofile%\appdata\Local\Microsoft\Office\15.0\Lync
  • Delete following registry key.
  • HKCU\Software\Microsoft\Office\16.0\Lync\sip@Domain.com

If user is running Lync 2013\Skype For Business 2015

  • Log off of the Lync client and delete the profile from:
  • %userprofile%\appdata\Local\Microsoft\Office\15.0\Lync
  • Delete following registry key.
  • HKCU\Software\Microsoft\Office\15.0\Lync\sip@Domain.com

If user is running Lync 2010

  • Log off of the Lync client and delete the profile from:
  • %userprofile%\AppData\Local\Microsoft\Communicator
  • Delete following registry key.
  • HKLM\Software\Policies\Microsoft\Communicator\sip@Domain.com

Download Address Book Immediately

In some cases, Lync\SFB users may face delay (upto 60 minutes) in address book download. Create this registry key to download address book immediately.

Run following command if user is running Skype For Business 2016

  • reg add HKLM\Software\Policies\Microsoft\Office\16.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f

Run following command if user is running Lync 2013\Skype For Business 2015

  • reg add HKLM\Software\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f

Run following command if user is running Lync 2010

  • reg add HKLM\Software\Policies\Microsoft\Communicator /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f


728x90
728x90

Lync 오디오 품질 메트릭 입문서

The topic of audio quality can be vast and complex. 음질의 주제는 방대하고 복잡 할 수 있습니다. The purpose of this post is to provide some practical and easy to read guidance on the key metrics used in several Lync Server monitoring reports. 이 게시물의 목적은 여러 Lync Server 모니터링 보고서에 사용되는 주요 메트릭에 대한 실용적이고 읽기 쉬운 지침을 제공하는 것입니다. This will enable IT professionals to quickly gain insight into the audio quality of a particular Lync call or conference and troubleshoot poor audio quality if need be. 이를 통해 IT 전문가는 특정 Lync 전화 또는 회의의 오디오 품질에 대한 통찰력을 얻고 필요한 경우 열악한 오디오 품질 문제를 해결할 수 있습니다.

Note : this post is focused on audio metrics for Lync Audio – not enterprise voice audio – although some of the same metrics apply. 참고 :이 게시물은 동일한 측정 항목 중 일부가 적용되지만 Lync Audio 용 오디오 메트릭 (엔터프라이즈 음성이 아님)에 중점을 둡니다.

See my previous blog post Key Tips to Get Started with Lync Monitoring & Reporting to get started with the Lync Monitoring role and reports. Lync Monitoring 역할 및 보고서를 시작하려면 Lync Monitoring & Reporting 을 시작하는 데 필요한 이전 블로그 팁 주요 팁을 참조하십시오. Microsoft has a set of 4 documents to get you started and interpret the reports: Microsoft Lync Server 2010: Work Smart Guide for Monitoring Server Reports . Microsoft는 보고서를 시작하고 해석 할 수있는 4 가지 문서 세트를 제공합니다. Microsoft Lync Server 2010 : 서버 보고서 모니터링을위한 업무용 스마트 가이드 . Lastly, fellow Lync MVP Stale Hansen recently posted a good article regarding “ Lync Server 2010 Monitoring reports and why you always should deploy them ” which covers how and why you should deploy the Lync monitoring reports, and some of the metrics covered in this post. 마지막으로 동료 Lync MVP Stale Hansen은 최근에 " Lync Server 2010 모니터링 보고서 및이 보고서를 배포해야하는 이유 "와 관련된 좋은 기사를 게시했습니다.이 보고서 에는 Lync 모니터링 보고서를 배포해야하는 방법과 이유 및이 게시물에서 다루는 측정 항목 중 일부가 나와 있습니다.

 

728x90
728x90

1. 특정 Front-End 서버의 사용자만 찾고자 하는경우

Get-CsUser | Get-CsUserPoolInfo | Where-Object {$_.PrimaryPoolPrimaryRegistrar -eq "fe01.mani4u.com"} | ft identity, PrimaryPoolPrimaryRegistrar

 

 

2. 특정 Front-End 서버의 특정 사용자만 찾고자 하는경우

Get-CsUser -Filter {DisplayName -Like "*TEST*"} | Get-CsUserPoolInfo | Where-Object {$_.PrimaryPoolPrimaryRegistrar -eq "fe01.mani4u.com"} | ft identity, PrimaryPoolPrimaryRegistrar

 

결과값

Identity                                PrimaryPoolPrimaryRegistrar
--------                                ---------------------------
1000002@mani4u.com                     fe01.mani4u.com
1000010@mani4u.com                     fe01.mani4u.com
1000013@mani4u.com                     fe01.mani4u.com
1000014@mani4u.com                     fe01.mani4u.com
1000016@mani4u.com                     fe01.mani4u.com
1000019@mani4u.com                     fe01.mani4u.com
1000021@mani4u.com                     fe01.mani4u.com
1000024@mani4u.com                     fe01.mani4u.com

728x90
728x90

Phone Number Normalization Rule Regular Expressions

The pattern-matching notation of regular expressions makes it possible to quickly parse large amounts of text to find specific character patterns; to extract, edit, replace, or delete text substrings; or, to add the extracted strings to a collection in order to generate a report. You use .NET regular expressions to specify the phone pattern and the translation pattern as follows:

  • Phone pattern regular expression. This consists of designators and variables that represent specific sets of numbers. For example, the phone pattern regular expression of ^9(\d{7})$ describes phone numbers that consist of the number 9 followed by any seven digits.

  • Translation pattern regular expression. This consists of the + symbol, numbers, and the $ symbol. The $ symbol captures the items of the phone pattern regular expression that are included inside the parenthesis. The number following the $ symbol must be less than or equal to the total number of captures specified by the phone pattern regular expression.

    For example, the translation pattern regular expression of +1425$1 describes a translation that adds a prefix of +1425 to the captures (the phone pattern items in parenthesis). If the phone pattern regular express is ^9(\d{3})(\d{4})$ (containing two captures), the number following the $ sign can only be 1 or 2.

The following table shows sample normalization rules and the corresponding values for the rule name, description, phone pattern, and translation pattern.

Rule Name

Description

Phone Pattern

Translation Pattern

Example

4digitExtension

Translates 4-digit extensions

^(\d{4})$

+1425555$1

1234 is translated to +14255551234

5digitExtension

Translates 5-digit extensions

^8(\d{4})$

+1425558$1

81234 is translated to +14255581234

7digitcallingRedmond

Translates 7-digit numbers to Redmond local number

^(\d{7})$

+1425$1

5551212 is translated to +14255551212

7digitcallingDallas

Translates 7-digit numbers to Dallas local number

^(\d{7})$

+1972$1

5551212 is translated to +19725551212

10digitcallingUS

Translates 10-digit numbers in US

^(\d{10})$

+1$1

2065551212 is translated to +12065551212

LDCallingUS

Translates numbers with LD prefix in US

^1(\d{10})$

+1$1

12145551212 is translated to +12145551212

IntlCallingUS

Translates numbers with international prefix in US

^011(\d*)$

+$1

011914412345678 is translated to +914412345678

RedmondOperator

Translates 0 to Redmond Operator

^0$

+14255551212

0 is translated to +14255551212

RedmondSitePrefix

Translates numbers with on-net prefix (6) and Redmond site code (222)

^6222(\d{4})$

+1425555$1

62221234 is translated to +14255551234

NYSitePrefix

Translates numbers with on-net prefix (6) and NY site code (333)

^6333(\d{4})$

+1202555$1

63331234 is translated to +12025551234

DallasSitePrefix

Translates numbers with on-net prefix (6) and Dallas site code (444)

^6444(\d{4})$

+1972555$1

64441234 is translated to +19725551234

 

출처

https://support.office.com/en-us/article/phone-number-normalization-rule-regular-expressions-6ea76427-0892-4237-b024-10b418dcb05e

 

추가 참고

Lync Dial Plans and Normalization Rules :

http://designinglync.blogspot.com/2011/05/lync-dial-plans-and-normalization-rules.html

728x90
728x90

Phone Number Normalization Rule Regular Expressions

The pattern-matching notation of regular expressions makes it possible to quickly parse large amounts of text to find specific character patterns; to extract, edit, replace, or delete text substrings; or, to add the extracted strings to a collection in order to generate a report. You use .NET regular expressions to specify the phone pattern and the translation pattern as follows:

  • Phone pattern regular expression. This consists of designators and variables that represent specific sets of numbers. For example, the phone pattern regular expression of ^9(\d{7})$ describes phone numbers that consist of the number 9 followed by any seven digits.

  • Translation pattern regular expression. This consists of the + symbol, numbers, and the $ symbol. The $ symbol captures the items of the phone pattern regular expression that are included inside the parenthesis. The number following the $ symbol must be less than or equal to the total number of captures specified by the phone pattern regular expression.

    For example, the translation pattern regular expression of +1425$1 describes a translation that adds a prefix of +1425 to the captures (the phone pattern items in parenthesis). If the phone pattern regular express is ^9(\d{3})(\d{4})$ (containing two captures), the number following the $ sign can only be 1 or 2.

The following table shows sample normalization rules and the corresponding values for the rule name, description, phone pattern, and translation pattern.

Rule Name

Description

Phone Pattern

Translation Pattern

Example

4digitExtension

Translates 4-digit extensions

^(\d{4})$

+1425555$1

1234 is translated to +14255551234

5digitExtension

Translates 5-digit extensions

^8(\d{4})$

+1425558$1

81234 is translated to +14255581234

7digitcallingRedmond

Translates 7-digit numbers to Redmond local number

^(\d{7})$

+1425$1

5551212 is translated to +14255551212

7digitcallingDallas

Translates 7-digit numbers to Dallas local number

^(\d{7})$

+1972$1

5551212 is translated to +19725551212

10digitcallingUS

Translates 10-digit numbers in US

^(\d{10})$

+1$1

2065551212 is translated to +12065551212

LDCallingUS

Translates numbers with LD prefix in US

^1(\d{10})$

+1$1

12145551212 is translated to +12145551212

IntlCallingUS

Translates numbers with international prefix in US

^011(\d*)$

+$1

011914412345678 is translated to +914412345678

RedmondOperator

Translates 0 to Redmond Operator

^0$

+14255551212

0 is translated to +14255551212

RedmondSitePrefix

Translates numbers with on-net prefix (6) and Redmond site code (222)

^6222(\d{4})$

+1425555$1

62221234 is translated to +14255551234

NYSitePrefix

Translates numbers with on-net prefix (6) and NY site code (333)

^6333(\d{4})$

+1202555$1

63331234 is translated to +12025551234

DallasSitePrefix

Translates numbers with on-net prefix (6) and Dallas site code (444)

^6444(\d{4})$

+1972555$1

64441234 is translated to +19725551234

 

출처

https://support.office.com/en-us/article/phone-number-normalization-rule-regular-expressions-6ea76427-0892-4237-b024-10b418dcb05e

 

추가 참고

Lync Dial Plans and Normalization Rules :

http://designinglync.blogspot.com/2011/05/lync-dial-plans-and-normalization-rules.html

728x90
728x90

A question that comes up from customers from time to time is how do I get a list of what users are actually using OCS/Lync?  While there’s no built in report to easily tell you what users are actually signing into the environment, there is some information stored in SQL that you can use to help figure out adoption rate in your environment.  The information we’re looking for is stored in the LastNewRegisterTime column in the HomedResourceDynamic table in the rtcdyn database.  You can run the following queries* to pull back the user’s SIP URI and their last registration time:

For Lync Server 2010/2013

USE rtcdyn
SELECT rtc.dbo.Resource.UserAtHost, rtcdyn.dbo.HomedResourceDynamic.LastNewRegisterTime
FROM rtcdyn.dbo.HomedResourceDynamic
INNER JOIN rtc.dbo.Resource on rtc.dbo.Resource.ResourceId = rtcdyn.dbo.HomedResourceDynamic.OwnerId
INNER JOIN rtcdyn.dbo.RegistrarEndpoint ON rtcdyn.dbo.RegistrarEndpoint.OwnerId = rtcdyn.dbo.HomedResourceDynamic.OwnerId
WHERE IsServerSource = 0
ORDER BY UserAtHost

Which produces the following output:

For OCS 2007 R2

USE rtcdyn
SELECT rtc.dbo.Resource.UserAtHost, rtcdyn.dbo.HomedResourceDynamic.LastNewRegisterTime
FROM rtcdyn.dbo.HomedResourceDynamic
INNER JOIN rtc.dbo.Resource ON rtc.dbo.Resource.ResourceId = rtcdyn.dbo.HomedResourceDynamic.OwnerId
ORDER BY UserAtHost

Which produces the following output:


Note: A user with a LastNewRegisterTime of NULL is a user that has never logged in, but has been added to someone’s contact list.  You would want to remove these entries from your exported results.

While the query to gather the information is very similar the SQL instance that you connect to to retrieve this information is different depending on which version you’re using.  In OCS 2007 R2 all of this information was stored in the rtcdyn database on the SQL instance that you defined when first creating the pool.  Because of the changes to the registrar functionality in Lync Server 2010 to support survivability, the information that we’re looking for has moved to the RTCLOCAL SQL instance that is stored on each registrar.

You can see this if you compare the HomedResourceDynamic table in the rtcdyn database between the Front End Pool SQL Instance and one of the Front End Server’s RTCLOCAL SQL Instance:

Front End Pool SQL Instance

RTCLOCAL SQL Instance

 

For row 2, OwnerId 12 corresponds to my Lync test user that has logged into the client.  You can see that the information that we’re looking for, LastNewRegisterTime, only gets populated in the RTCLOCAL SQL instance on the Front End Server.  So this means that in Lync Server 2010 you don’t have one place you can go for all of the users homed on that pool.  You will need to run the query and aggregate the data from every registrar in the pool, as well as any SBA/SBS deployed.  The other issue that comes up in an Enterprise Edition pool with multiple Front End Servers is that when users fail-over to another Front End Server in the pool, there is a record created in that Front End Server’s RTCLOCAL rtcdyn database.  After you run the queries and have exported all of the results you would want to clean up the duplicate entries so that you weren’t reporting inflated numbers.

Even though there’s a little work involved in gathering the information this is a fairly easy way to gauge adoption and see which of your users are actually using the OCS/Lync.

Using the Lync Server 2013 Monitoring Server

If you have the Monitoring Server role configured in your environment, and for Lync Server 2013 everyone should!, you can use information contained in the LcsCDR database to pull back the last time a user signed in.  You can run the following query* to pull back the user’s SIP URI and their last login time:

USE LcsCDR
SELECT dbo.Users.UserUri, dbo.UserStatistics.LastLogInTime
FROM dbo.UserStatistics
JOIN dbo.Users ON dbo.Users.UserId = dbo.UserStatistics.UserId
ORDER BY UserUri

Which produces the following output:

The advantage to using the Monitoring Server to obtain this data is that unlike the information contained in the rtcdyn database, the information from the LcsCDR data will persist even when the user isn’t signed into Lync.

 

*These queries are provided for you to use at your own risk.  Please make sure you test before running in a production environment.

728x90
728x90

use rtc


declare @sipQuery nvarchar(250)

set @sipQuery = 'test1@contoso.com'


select FE.Fqdn,R.UserAtHost, * from FrontEnd FE

join RoutingGroupAssignment RGA

On FE.FrontEndId = RGA.FrontEndId

join ResourceDirectory RD

on RGA.RoutingGroupId = RD.RoutingGroupId

join Resource R

on RD.ResourceId = R.ResourceId

where R.UserAtHost = @sipQuery


Aggregated Presence stateDescription

3,000-4,499

Available

4,500-5,999

Available - Idle

6,000-7,499

Busy

7,500-8,999

Busy - Idle

9,000-11,999

Do Not Disturb

12,000-14,999

Be Right Back

15,000-17,999

Away

18,000+

Offline


참고

https://msdn.microsoft.com/en-us/library/bb878933.aspx

http://mikestacy.typepad.com/mike-stacys-blog/2009/08/are-you-really-away.htmlㄴ

728x90
728x90

use rtc

declare @sipQuery nvarchar(250)
set @sipQuery = 'sipusername%'

select Publisher, MIN(Status) as Status
from
(select Publisher, Status=
CASE
when Availability BETWEEN 0 AND 2999 then 'Not defined:'+Availability
when Availability BETWEEN 3000 AND 4499 then 'Available'
when Availability BETWEEN 4500 and 5999 then 'Available - Idle'
when Availability BETWEEN 6000 and 7499 then 'Busy'
when Availability BETWEEN 7500 and 8999 then 'Busy - Idle'
when Availability BETWEEN 9000 and 11999 then 'Do not Disturb'
when Availability BETWEEN 12000 and 14999 then 'Be right back'
when Availability BETWEEN 15000 and 17999 then 'Away'
when Availability > 18000 then 'Offline'
end
from
(
select Publisher,
substring(
substring(PublicationDocument,patIndex('%<availability>%',PublicationDocument)+14,50),0,
patIndex('%<availability>%',substring(PublicationDocument,patIndex('%<availability>%',PublicationDocument)+14,50))
) Availability
from
(select UserAtHost Publisher,ContainerNum,CONVERT(varchar(4000),convert(varbinary(4000),Data)) PublicationDocument
from rtcdyn.dbo.PublishedInstance tblPublishedInstance,
rtc.dbo.Resource tblResource
where tblPublishedInstance.PublisherId = tblResource.ResourceId) as PublishedDocuments
where LEN(replace(PublicationDocument,'aggregateState','')) < LEN(PublicationDocument)
and ContainerNum = 2
) as PublisherAndAvailability
where Publisher like @sipQuery
union
select UserAtHost Publisher, 'Offline-Not Registered Here' Status
from rtc.dbo.Resource
where UserAtHost like @sipQuery) as PublisherAndStatus
group by Publisher


참고

http://mikestacy.typepad.com/mike-stacys-blog/sql/

Container 테이블 설명

https://msdn.microsoft.com/en-us/library/bb879521.aspx

https://msdn.microsoft.com/en-us/library/office/dn454664.aspx

Access Control List Containers

Office Communications Server creates these reserved containers to provide access control functionality.

Container IDDescription

100

Public, Federated subscribers

200

Workplace subscribers

300

Team member subscribers

400

Personal subscribers

32000

Blocked subscribers


Special Containers

Office Communications Server defines special containers for receiving published data.

Container IDDescription

0

A container with an exclusive access scope.

1

Self-presence category data, which includes userPropertiesalertsrccOptionsuserInformation, and calendarData.

2

The server aggregates user, machine, phone and calendar states published to this container. The states are published to container 100, 200, or 400.

3

The server aggregates presence states in this container and publishes the aggregated computer and user states to container 300.


728x90

+ Recent posts