25 marca 2020

Podstawy automatyzacji w Office 365 dla EDU

Kontynuując omawianie tematów poruszanych na grupach dyskusyjnych dotyczących pytań i problemów związanych z wdrażaniem Office 365 w Edukacji, chciałem tym razem poruszyć temat automatyzacji niektórych zadań przy pomocy Powershella. Temat przygotowania swojego komputera do zarządzania środowiskiem Office 365 poruszałem na tym blogu już kilkakrotnie, więc żeby się nie powtarzać zachęcam do lektury tych artykułów:
Oczywiście moduły się zmieniają, pojawiają się nowe (np. całkowicie odświerzony moduł dla Exchange Online), inne wychodzą z użycia. Warto więc co jakiś czas sprawdzać nowości w tym zakresie czy chociażby co jakiś czas uruchomić komendę update-module.
Kilka typowych wyzwań, przed którym staje administrator szkolnej instancji Office 365 to:
  1. Zakładanie użytkowników i przypisywanie im licencji
  2. Resetowanie haseł użytkownikom.
  3. Tworzenie zespołów Teams.
  4.  Przypisywanie użytkownikom polityk.
Przedstawię tu kilka przykładów, dla powyższych zagadnień:

1. Zakładanie użytkowników i przypisywanie im licencji

Jak założyć wielu użytkowników, np wszystkich nauczycieli lub wszystkich uczniów? Najlepiej byłoby (ze względu na stan epidemii i konieczność wdrożenia w jak najkrótszym czasie) utworzyć dla nich konta skryptem i dodatkowo wysłać im loginy i hasła początkowe na już znany adres. Po pierwsze potrzebujemy plik csv, z listą użytkowników. Warto pamiętać, że powershell domyślnie akceptuje "," jako znak przystankowy, a dla polskich ustawień regionalnych Microsoft Excel najczęściej tworzy taki plik z polami rozdzielonymi ";" - jest to zaznaczone w przykładowym skrypcie. Żeby konto miało od razu przypisaną licencję, dobrze jest to również załatwić w naszym skrypcie. W pierwszej kolejności potrzebujemy się zalogować do naszej instancji Office 365 (tzw. tenanta) i sprawdzić identyfikatory licencji (niestety w każdej instancji jest dodatkowo doklejany id tenanta, czy mamy taką zbitkę - konsagedu:STANDARDWOFFPACK_STUDENT. W tym wypadku konsagedu jest identyfkatorem mojej testowej organizacji Office 365 (jak widać na obrazku).






Jaką wartość wpisać do skryptu sprawdzamy komendą Get-MsolAccountSku. Standardowo powinniśmy mieć przypisaną do naszej organizacji licencję A1 dla nauczycieli i A1 dla uczniów (chyba że aktywowaliśmy inne licencje np. do testów). Oczywiście licencje możemy przypisać później, po utworzeniu grup dla poszczególnych klas i nauczycieli. Przypisanie licencji do grup jest realizowane bardzo prosto w portalu administracyjnym Azure AD w zakładce licencje.
Następnie listę nauczycieli/uczniów wyeksportowaną z zewnętrznego źródła importujemy z pliku csv. Plik powinniśmy uzupełnić o kolumnę UserPrincipalName (nie może być w niej polskich znaków), czyli nazwę logowania użytkownika do naszej organizacji Office. Ze względu na RODO dla uczniów nie powinno to być ImieNazwisko, ponieważ w połączeniu ze szkolną domeną stanowi już dane osobowe. Może to być np. identyfikator z dziennika elektronicznego. Jeżeli chcemy wysłać informacje mailem to musimy również wypełnić kolumnę email, która będzie przypisywana do pola Alternatywny Email w Azure AD. Warto również pamiętać, że jeżeli chcemy wysyłać maile ze skryptu, to musimy się uwierzytelnić i użyć portu 587. Skrypt będzie wyglądał np. tak:

# Podajemy poświadczenia administracyjne i łączymy się z chmurą
$cred = get-credential
Connect-MsolService -Credential $cred

# podajemy nazwę licencji dla ucznia
$StudentsLicense = 'konsagedu:STANDARDWOFFPACK_STUDENT'

# importujemy listę uczniów z pliku csv w postaci
# UserPrincipalName;DisplayName;Imie;Nazwisko;email;telefon
# Musimy wskazać znak rozdzielający, jeżeli plik csv ma kolumny rozdzielone
# innym znakiem niż ,

$AllOffice365Students = Import-CSV D:\Scripts\naglowek.csv -Delimiter ";"

# dla każdego wiersza z pliku csv wykonujemy akcję
foreach ($Student in $AllOffice365Students) {
    # tworzymy nowe konto w usłudze Office 365
    $O365student = New-MsolUser -UserPrincipalName $Student.UserPrincipalName `
         -AlternateEmailAddresses $Student.email -DisplayName $Student.DisplayName `
         -FirstName $Student.Imie -LastName $Student.Nazwisko -mobilePhone $Student.telefon `
         -UsageLocation PL -PreferredLanguage PL-pl -PasswordNeverExpires $true `
         -StrongPasswordRequired $true
    # przypisujemy licencję
    Set-MsolUserLicense -UserPrincipalName $Student.UserPrincipalName `
         -AddLicenses $Studentslicense

    # pobieramy dane po utworzeniu konta
    $mail = $Student.email
    $pwd = $O365student.Password
    $stu = $Student.UserPrincipalName
    $body = "Utworzono konto w systemie Office 365 o nazwie $stu Haslo tymczasowe: $Pwd"
    # wysyłamy maila z hasłem na alternatywny adres uzytkownika
    Send-MailMessage  -SmtpServer smtp.office365.com -usessl -Credential $cred `
          -Port 587 -To "$mail" -From "admin@konsagedu.onmicrosoft.com" `
          -Subject "Office 365 - nowe konto" -Body $body -Encoding UTF8 -BodyAsHtml
}
Kod skryptu dostępny na moim githubie.
Id licencji i konto administratora  oczywiście w skrypcie jest powiązanie z moją organizacją testową. Uwaga. Jeżeli dla administratora włączyliśmy uwierzytelnianie wieloskładnikowe (MFA), to do wysłania maila musimy użyć hasła aplikacyjnego, a nie tego, którym się normalnie logujemy. UWAGA: od początku marca domyślnie organizacje Office 365 mają włączone tzw. domyślne ustawienia zabezpieczeń, które wymuszają MFA. Jeżeli uznamy, że jest to dla uczniów i nauczycieli zbyt uciążliwe możemy to wyłączyć w portalu administracyjnym Azure AD.

2. Resetowanie haseł użytkownikom

W przypadku sytuacji, gdy musimy zresetować hasło grupie użytkowników, możemy postąpić bardzo podobnie - zaimportować listę użytkowników z pliku csv, tym razem wystarczy nam nazwa użytkownika czyli UserPrincipalName i alternatywny adres mailowy. Czyli postępujemy podobnie:

# Podajemy poświadczenia administracyjne i łączymy się z chmurą
$cred = get-credential
Connect-MsolService -Credential $cred

$Pwd = 123zxcASD
# importujemy listę uczniów z pliku csv w postaci
# UPN,email

$AllOffice365Students = Import-CSV D:\Scripts\naglowek.csv

# dla każdego wiersza z pliku csv wykonujemy akcję
foreach ($Student in $AllOffice365Students) {
    Set-MsolUserPassword -UserPrincipalName $Student.UPN -NewPassword $Pwd `
      -ForceChangePassword $True

    # pobieramy dane po utworzeniu konta
    $mail = $Student.email
    $stu = $Student.UPN
    $body = "Zresetowano haslo w systemie Office 365. Haslo tymczasowe: $Pwd"

    # wysyłamy maila z hasłem na alternatywny adres uzytkownika
    Send-MailMessage  -SmtpServer smtp.office365.com -usessl -Credential $cred `
-Port 587 -To "$mail" -From "admin@konsagedu.onmicrosoft.com" `
-Subject "Office 365 - zmiana hasla" -Body $body -BodyAsHtml
}
Kod skryptu dostepny na moim githubie.

3. Tworzenie zespołów Teams

Jeżeli chodzi o zakładanie zespołów w Teams. to już niedługo będzie to można zrobić z użyciem modułu MicrosoftTeams, jednak jak na razie cmdlet New-Team nie obsługuje atrybutu Template, który pozwala nam wybrać szablon klasy lub personelu. Teraz możemy to zrobić z użyciem Graph API. Przykładowy skrypt udostępnili koledzy na githubie grupy Microsoft 365  User Group Poland - https://github.com/Microsoft-365-User-Group-Poland/Skrypty

4. Przypisywanie użytkownikom polityk

Wiele ustawień zarówno bezpieczeństwa jak i funkcjonalnych można przypisać wielu użytkownikom Office 365 poprzez utworzenie i przypisanie odpowiednik polityk (określanych również jako polisy). Przypisywanie użytkownikom wszystkich przydatnych polityk to temat na osobny artykuł - w zależności od obszaru funkcjonalnego, dla którego polityki mają być przypisywane, to konfigurujemy je z użyciem różnych modułów:

  • polityki związane z hasłami - moduł AzureAD.
  • polityki związane ze skrzynką pocztową - moduł Exchange Online (lub nowy moduł ExchangeOnlineManagement).
  • polityki dotyczące Teams - moduł MicrosoftTeams (chociaż niektóre polityki są konfigurowane w module Skype for Business Online), etc.
Myślę, że ciekawym przypadkiem przypisywania polityk może być ograniczanie uprawnień uczniom w Teams, poprzez tzw. Policy Packages, czyli pakiety polityk. Jak sama nazwa wskazuje, pakiet polityk opisuje grupę zasad zarówno dla komunikacji w ramach chatów, spotkań, używania aplikacji, połączeń głosowych - słowem wszystkich obszarów współpracy w ramach aplikacji Micosoft Teams. W celu zaaplikowania pakietu dla wszystkich uczniów w jednym kroku, musimy odfiltrować konta z przypisaną licencją ucznia.
W tym celu dla odmiany użyję modułu AzureAD. Wyświetlę licencje dostępne w moim tenancie EDU i odfiltruję użytkowników z przypisaną taką licencją. Id licencji sprawdzę komendą get-AzureAdSubscribedSku:





Mając ID mogę użyć filtra przygotowanego z jego pomocą
$students = Get-AzureADUser -All $true | Where-Object {($_.assignedLicenses).SkuId `
  -contains "314c4481-f395-4525-be8b-2ec4bb1e9d91"}.
Teraz jeszcze tylko sprawdzę, jakie pakiety polis są dostępne w moim tenancie












I można już uruchomić w pętli przypisanie odpowiedniej paczki (np. dla licealistów będzie to Education_SecondaryStudent).
foreach ($student in $students) {Grant-CsUserPolicyPackage -Identity $student.UserPrincipalName `
   -PackageName Education_SecondaryStudent }

Taką samą pętlą możemy sprawdzić, czy polisy package został przypisany poprawnie:
foreach ($student in $students) {Get-CsUserPolicyPackage -Identity $student.UserPrincipalName }
Oczywiście ustawienia polis w ramach pakietów możemy modyfikować bądź też tworzyć własne.
UPDATE:
W dokumentacji Microsoft Teams dla EDU pojawił się rozbudowany artykuł z przykładami przypisywania polis, odpinania polis i powiązanych operacji. Warto przeczytać jako uzupełnienie tego artykułu.

22 marca 2020

Czy zakładając Office 365 dla zdalnego nauczania trzeba przełączyć pocztę?

Kolejne pytanie, jakie pojawia się na grupach dyskusyjnych w kontekście zdalnego nauczania, to kwestia poczty elektronicznej. Uruchamiając usługę Office 365, automatycznie mamy prawo do korzystania z usługi Exchange Online, która integruje się z innymi usługami Office 365. Domyślnie, jeżeli nie wskażemy własnej domeny pocztowej, skrzynki są zakładane w domenie takiej, jak nazwa naszego tenanta, np. szkola.onmicrosoft.com.
Czy te skrzynki są nam potrzebne? Organizując spotkania w Teams możemy użyć aplikacji Outlook do zapraszania na spotkania/lekcje (po zainstalowaniu klienta Teams na komputerze, w Outlooku pojawia się specjalny dodatek). Warto również pamiętać o RODO. Tworząc skrzynki dla nauczycieli i uczniów ograniczamy przesyłanie materiałów do obrębu tej samej usługi, możemy również oznaczać dokumenty zawierające treści wrażliwe, a nawet weryfikować dostęp do tych dokumentów. Sam o tym mówiłem jakiś czas temu na prezentacji, dostępnej na Youtube. Warto pamiętać, że zakładając skrzynki pocztowe dla uczniów, żeby być w zgodzie z RODO adres pocztowy ucznia nie powinien być zbudowany z jego imienia i nazwiska, ale lepiej użyć jest identyfikatora z dziennika elektronicznego (jest on unikalny w danej szkole).
Kolejną kwestią jest fakt, że nie wszystkie placówki oświatowe mają spójnie systemy poczty elektronicznej dla wszystkich pracowników, cześć używa do komunikacji systemy elektronicznego dziennika jak np. Librus czy Vulcan. Mając usługę Office 365 można tą sytuację zmienić, zwłaszcza, że skrzynki tworzone są z limitem 50GB (a w płatnych planach A3 i A5 może być nawet więcej).
Zupełnie innym tematem jest migracja z obecnego systemu pocztowego. Chociaż kreatory są coraz lepsze i bardziej przyjazne dla użytkownika, to w zależności od typu używanego systemu migracja może być zadaniem czasami nawet bardzo skomplikowanym. Jest on dobrze udokumentowany na stronach Microsoft, np. tutaj - https://docs.microsoft.com/en-us/exchange/mailbox-migration/mailbox-migration. Realizując migracje Exchange przez ostatnie 20 lat również często wspominałem o tych zagadnieniach na tym blogu, spotkaniach PEPUG czy też konferencjach. Warto pytać na forach dyskusyjnych, w związku z obecną sytuacją wiele osób bezpłatnie pomaga szkołom przy takich zadaniach.

20 marca 2020

Jak zablokować możliwość wyłączania mikrofonu organizatorowi spotkania w Teams?

Żeby nie przekształcić jednego posta w książkę postanowiłem rozbić kolejne zagadnienia na oddzielne posty. Jednym z pytań, na które ostatnio się często natykam jest kwestia blokowania mikrofonu przez uczestników spotkania, co oczywiście nie powinno mieć miejsca, ale w nauczaniu na odległość może się zdarzyć.
Jak temu zapobiegać? Odpowiedź jest bardzo prosta, chociaż realizacja nie tak oczywista. Po prostu organizator musi zdefiniować opcje danego spotkania, wskazując, że tylko organizator jest prezenterem (ewentualnie konkretne wskazane osoby). W trakcie spotkania organizator może zawsze zmienić dla konkretnego uczestnika rolę na prezentera. Jak ustawić opcje spotkania? Tworząc nowe spotkanie Teams odpowiedź nie jest wcale taka oczywista. W przypadku dodatku do Outlooka, kiedy tworzymy nowe spotkanie, przycisk Opcje spotkania jest dostępny, jednak kiedy tworzymy spotkanie w kalendarzu klienta desktopowego Teams lub klienta webowego nadal takiej opcji nie ma. Dopiero kiedy utworzymy spotkanie i klikniemy w jego właściwości, zobaczymy na prawo od strefy czasowej pozycję "Opcje spotkania", jak widać na poniższym rysunku. Po wybraniu tej opcji otworzy nam się w przeglądarce (również dla klienta desktopowego) strona, na której możemy ustawić/zmienić dwie opcje spotkania - "Kto może ominąć poczekalnię" oraz "Kto może prezentować". Domyślnie wszyscy uczestnicy spotkania mogą prezentować, mogą równocześnie wyłączać mikrofon innym uczestnikom spotkania. Osoby o statusie uczestnika mogą wyłączać mikrofon tylko sobie.



























18 marca 2020

Marcowe poprawki dla Exchange

Kolejny kwartał mija i pojawiła się planowo następna partia aktualizacji dla Exchange, ogłoszona na blogu zespołu produktowego. Jak zwykle tylko dwie ostatnie wersje Exchange zostały uwzględnione w cyklicznych poprawkach:
Aktualizacja dla Exchange 2019 rozwiązuje problem z wyszukiwaniem online na podstawie fragmentów słów, poprawia skrypt do włączenia MCDB oraz optymalizuje kalkulator planowania Exchange 2019. Jeżeli aktualizujemy Exchange z wersji co najmniej CU2, to nie musimy aktualizować lasu AD. W przeciwnym przypadku jest taka konieczność, wykonujemy więc komendę setup /preparead. Dodatkowo należy pamiętać o odpowiedniej wersji .Net Framework (4.8) i Visual C++ Runtime 2012.
W przypadku CU16 dla Exchange 2016 zmian jest mniej, ale warunki instalacji są podobne. Jeżeli aktualizujemy z wersji wcześniejszej niż CU13, to również powinniśmy wykonać setup /preparead. Również wymagany jest .Net Framework 4.8 i Visual C++ Runtime 2013.
Dodam jeszcze, że oba pakiety Cumulative Updates zawierają krytyczne poprawki bezpieczeństwa, o których pisałem kilka tygodni temu.

15 marca 2020

Praca zdalna w czasie kryzysu

Co najmniej od kilku dni cała Polska a nawet świat w dużym stopniu przeszedł na pracę zdalną. Ja też kolejne kilka (albo i więcej) dni spędzę w domowym biurze. Przy okazji śledzę i uczestniczę w wielu dyskusjach na temat możliwości pracy zdalnej, a zwłaszcza nauczania na odległość. Dla mnie odpowiedź jest oczywista - od wielu lat wdrażam i używam Skype for Business i Microsoft Teams, ale wiele osób ma wątpliwości, jakie rozwiązanie wybrać i czy będzie ono spełniać wszystkie wymogi funkcjonalne. Wiele pytań dotyczących Office 365 i Microsoft Teams powtarzanych jest na wielu forach i grupach dyskusyjnych, więc stwierdziłem, że może warto podsumować te pytania i rozwiąć przy okazji kilka mitów.
Pytanie 1. Jakie bezpłatne narzędzie zapewni efektywne nauczanie na odległość?
Jak dla mnie najlepszym wyborem jest Microsoft Teams. Microsoft przypomina o bezpłatnym pakiecie Office 365 dla Edukacji, podając jednocześnie instrukcję jak szybko uruchomić subskrypcję edukacyjną - http://aka.ms/zdalnanauka. Plan edukacyjny A1 co prawda nie zawiera pełnego pakietu narzędzi biurowych, ale jest w nim OneNote w wersji przystosowanej do współpracy w ramach klas i oczywiście Microsoft Teams.
Pytanie 2. Ile trwa uruchomienie Office 365 dla Edukacji i jakie warunki trzeba spełniać?
Wystarczy zarejestrować się w witrynie Office 365 dla Edukacji http://aka.ms/Office365edupl, zgodnie z instrukcją opublikowaną w odpowiedzi na pytanie 1, wypełnić profil organizacji, a następnie wysłać z portalu administracyjnego usługi wniosek do pomocy technicznej, wpisując w treści informację - weryfikacja szkoły oraz link do strony internetowej. Weryfikacja powinna zostać wykonana w 48 godzin.
















Po zweryfikowaniu można dodać pełną wersję licencji dla nauczycieli i dla uczniów, jednak od razu po zarejestrowaniu usługi automatycznie przypisywane są licencje A1 w wersji ewaluacyjnej na 6 miesięcy. Tak że możemy konfigurować usługi nie czekając na zakończenie weryfikacji.
















Kto może skorzystać z tej oferty? Szkoły i uczelnie wyższe, zarówno państwowe i prywatne, biblioteki i muzea publiczne, biura administracyjne instytucji edukacyjnych. Więcej informacji można znaleźć na stronie licencji grupowych Microsoft.
Pytanie 3. Jak skonfigurować i używać Microsoft Teams?
Dobrym początkiem jest na pewno portal Zdalna Nauka, wymieniony w odpowiedzi 1. Ponadto dobry poradnik konfiguracyjny przygotowali koledzy z polskiego biura Microsoft - Uruchomienie Teams.
Pytanie 4. Dla nauczycieli Teams działa, a dla uczniów nie, kedy zacznie?
Problem wynika z małej zaszłości historycznej - dla nauczycieli jest włączony domyślnie (w planach komercyjnych domyślnie dla wszystkich pracowników), a dla uczniów nie. Żeby to poprawić, należy w starej wersji portalu administracyjnego wejść w ustawienia i dla typu licencji/użytkownika "Education - Student" włączyć usługę (obraz poniżej). Łatwo to przeoczyć, bo domyślnie konsola pokazuje ustawienia dla nauczyciela - "Education - Faculty and Staff"





















Pytanie 5. Kto może wziąć udział w spotkaniu Microsoft Teams?
W zasadzie każdy, kto dostanie zaproszenie, jeżeli zabezpieczenia naszej organizacji tego nie zablokują. Administrator organizacji może nawet pozwalać na prezentowanie treści anonimowym uczestnikom spotkania. Mając zaproszenie na spotkanie (a w zasadzie link do spotkania), wystarczy nam przeglądarka - najlepiej Chrome lub nowy Edge, wykorzystujący silnik Chromium, co pozwoli nam wykorzystać optymalnie dostępne opcje, np. integrację audio/video. Przy dołączeniu pierwszy raz do spotkania Teams, przeglądarka spyta nas o prawo do użycia mikrofonu i kamery, a potem będziemy mogli uczestniczyć w spotkaniu. Używając innych przeglądarek, możemy mieć problemy z niektórymi funkcjami.

Odpowiedzi na kolejne pytania będę uzupełniał na bieżąco. Jeżeli odpowiedź będzie dłuższa, pojawi się jako oddzielny post.
Jak zablokować możliwość wyłączania mikrofonu organizatorowi spotkania w Teams?

02 marca 2020

Poprawki bezpieczeństwa dla Exchange Server

Chociaż od dnia publikacji najnowszych poprawek bezpieczeństwa dla Exchange Server minęło już kilkanaście dni, zorientowałem się właśnie, że nie opublikowałem informacji o nich na blogu, dlatego też nadrabiam zaległości. Poprawki adresują podatności, opisane w biuletynach bezpieczeństwa:
  • CVE-2020-0692: Microsoft Exchange Server Elevation of Privilege Vulnerability
  • CVE-2020-0688: Microsoft Exchange Memory Corruption Vulnerability
  • KB4540267 MSExchangeDelivery.exe or EdgeTransport.exe crashes in Exchange Server 2013 and Exchange Server 2010

O ile pierwsze z zagrożeń dotyczy wersji systemu począwszy od Exchange 2013, to dwa kolejne mogą umożliwiać również przejęcie kontroli nad systemami w wersji Exchange 2010. W ten sposób powstał RU30 dla Exchange 2010 SP3. Warto przeczytać powyższe artykuły, żeby przekonać się, że na czym polegają poszczególne zagrożenia. Poniżej lista aktualizacji:
Wersja Exchange

Build
Artykuł KB
Lokalizacja poprawki
Exchange 2019 CU4
15.2.529.8
Exchange 2019 CU3
15.2.464.11
Exchange 2016 CU15
15.1.1913.7
Exchange 2016 CU14
15.1.1847.7
Exchange 2013 CU23
15.0.1497.6
Exchange 2010 SP3 RU30
14.3.452.0

Warto pamiętać, że aktualizacje obejmują tylko dwie ostatnie wersje CU, zarówno dla Exchange 2016 jak i 2019 (dla Exchange 2013 tylko ostatnią). Należy więc dobrze sprawdzić, jaką wersję poprawki powinniśmy pobrać.

01 marca 2020

Ułatwienia w migracji skrzynek - DCS

Każdy administrator Exchange, zarówno on-premises, jak i online, od czasu do czasu spotyka się z zadaniem migracyjnym - przeniesienie skrzynki do innej bazy czy też z lokalnego serwera do chmury jest stosunkowo prostym zadaniem, jednak żeby nie zakończyło się niepowodzeniem, należało w zadaniu migracyjnym ustawić wartość 'Bad Item Limit' na odpowiednio wysoką wartość (ja przeważnie używam 50). Działanie to miało umożliwić poprawne wykonanie migracji pomimo natrafienia na pewną ilość (nie większą niż wskazany limit) uszkodzonych elementów w skrzynce użytkownika. Po zakończeniu migracji mogliśmy zweryfikować log dla takiej skrzynki i sprawdzić, jakiego rodzaju elementy nie zostały zmigrowane. Jednak przy każdym zadaniu migracyjnym należało o tym pamiętać (pojawienie się nawet jednego elementu powodowało "wywalenie się" migracji), co bywało nieco uciążliwe, zwłaszcza dla osób z mniejszym doświadczeniem. Pod koniec zeszłego roku Microsoft wprowadził alternatywny mechanizm w Exchange Online o nazwie Data Consistency Score (DCS). Na podstawie znalezionych w trakcie migracji uszkodzonych elementów, raport pomigracyjny określa wynik migracji jako Perfect, Good, Investigate lub Poor. Migracja oznaczona jako Investigate wymaga dodatkowej akceptacji przez administratora (przez portal lub Powershell), oczywiście po weryfikacji, jakie problemy pojawiły się w trakcie. Migracja oznaczona jako Poor, nie może być zakończona bez eskalacji do supportu usługi. DCS zastępuje również użycie opcji -LargeItemLimit, co czasami bywa niezbędne przy użytkownikach z niestandardowymi wymaganiami.
Oczywiście, jeżeli użyjemy parametr -BadItemLimit definiując moverequest dla chmury, to nasz wybór będzie miał preferencję nad DCS, ale domyślny tryb migracyjny korzysta z nowego mechanizmu scoringu. Docelowo zarówno -BadItemLimit jak i -LargeItemLimit zostaną całkowicie zastąpione mechanizmem DCS. Więc informacji o Data Consistency Score można znaleźć w dokumentacji producenta.

28 lutego 2020

Zmiany w zabezpieczeniach Exchange Server

Część firm wykorzystujących Exchange Online z niepokojem czeka na jesień, kiedy to 13 października, zgodnie z zapowiedziami zespołu produktowego Exchange, w celu zwiększenia bezpieczeństwa zostanie wyłączone uwierzytelnienie podstawowe dla wielu usług - EWS, POP, IMAP, a także ActiveSync i Remote Powershell (uszczegółowienie listy usług, dla których zostanie wyłączone uwierzytelnianie podstawowe opublikowano we wrześniu ubiegłego roku). Dla wielu administratorów to niezłe trzęsienie ziemi, bo przecież jesteśmy przyzwyczajeni, że usługi te towarzyszą nam od dekad. Zespół produktowy wskazuje jednak, jak możemy zapobiec problemom, używając aplikacji, które wykorzystują nowocześniejsze mechanizmy uwierzytelnienia - w szczególności bazujące na OAuth i Modern Authentication. Zresztą tendencja do wyłączania słabszych mechanizmów zabezpieczeń nie dotyczy tylko Exchange ale również np. Google i współpracujących z nim klientów (Thunderbird od wersji 38 może wykorzystywać OAuth2 do uwierzytelniania np. POP w serwisie Google). Teraz na liście nadchodzących aktualizacji w Office 365 znalazło się wprowadzenie mechanizmów Oauth dla protokołów POP i IMAP (chociaż np. w usłudze konsumenckiej Outlook.com IMAP korzysta z OAuth już od pewnego czasu). Zespół produktowy Exchange własnie opublikował kolejny artykuł na swoim blogu, opisujący wprowadzane zmiany oraz jak zabezpieczyć się przed ewentualnymi problemami.
Po pierwsze możemy sprawdzać w portalu administracyjnym Azure AD, czy w naszym tenancie zachodzi uwierzytelnianie starszymi metodami - informacje te możemy znaleźć w oknie Sign-In Events, dodatkowo wymuszając prezentację aplikacji używanych przez użytkowników, jak widać na poniższym rysunku (niektóre domyślne kolumny schowałem dla czytelności widoku).









Eksportując wyniki w formacie JSON, możemy w Excelu zweryfikować informacje o użytkownikach/systemach, którzy wykorzystują uwierzytelnianie Basic (już niebawem raporty w pormacie csv również będą zawierały niezbędne informacje). Pamiętajmy jednak o tym, że Modern Auth jest dostępne w Outlookach od wersji 2013, podobnie w klientach mobilnych od dłuższego czasu. Aktualizując aplikacje pocztowe oraz mechanizmy dostępu administracyjnego (np. modułów powershell, używanych do zarządzania usługami) unikniemy problemów po wyłączeniu słabych mechanizmów zabezpieczeń.

26 stycznia 2020

Response Groups Service - agenci widma

Jedną z ciekawszych funkcjonalności dla połączeń głosowych, istniejących w Skype for Business (która zresztą była dostępna już w OCS) jest Response Group Service. W RGS definiowane są kolejki, do których przypisujemy grupy agentów, do których kierowane są rozmowy. Niestety, wyłączenie użytkownika w SfB nie usuwa agenta z grupy (jest w niej zapisywany adres SIP URI agenta), co oczywiście może powodować problemy, przy próbie zestawienia rozmowy z takim kontem. Podobnie można wyłączyć użytkownikowi Enterprise Voice, jednak to również nie usuwa agenta z grupy, co również będzie powodowało nieoczekiwane problemy w działaniu usługi.
Jak możemy zweryfikować, czy w naszych grupach agentów znajdują się niepoprawne obiekty? Ciekawy artykuł i skrypt do wykrywania takich agentów zombie udostępnił na swoim blogu Greig Sheridan. Pomysł oparł na zweryfikowaniu istnienia zdarzeń typu Warning o numerach 31137 lub 31137 w Event Logu.  Zdarzenia te ostrzegają właśnie o znalezieniu agenta z wyłączonym EV lub nieistniejącego w AD. W zależności od użytego przełącznika możemy wykonać raport lub od razu usunąć niepoprawnych agentów.
Jednak przy dużej ilości serwerów Front End w organizacji, weryfikacja logów na wszystkich serwerach może nie być specjalnie efektywna. Alternatywnie można wykorzystać inną metodę weryfikacji agentów. Jedną z metod jest odpytanie serwera backend SQL, gdzie w bazie rgsconfig jest tabela z listą agentów, w której możemy sprawdzić status EV agenta, poniższą komendą:
SELECT *
  FROM [rgsconfig].[dbo].[Agents]
  Where EnterpriseVoiceEnabled = 0
Możemy również użyć skryptu, który będzie sprawdzał właściwości poszczególnych agentów, poprzez sprawdzenie w pętli członków grup agentów (cmdlet Get-CsRgsAgentGroup). Ja napisałem sobie do tego funkcję:
function checkRGSpool {
    param (
        [string]$poolname
    $agentgroups = Get-CsRgsAgentGroup | Where-Object OwnerPool -eq $poolname
    ForEach ($agentgr in $agentgroups) {
        $groupname = $agentgr.Name
        write-host "Processing $groupname"
        if ($agentgr.AgentsByUri.count -gt 0) {
            $agents = $agentgr.AgentsByUri
            foreach ($agent in $agents) {
                $agent = $Agent.tostring()
                # write-host "Agent $agent"
                Try {
                    $currentagent = get-csuser $agent -ErrorAction Stop
                }
                Catch [Exception] {
                    write-host "Ghost agent found: $agent" -ForegroundColor Yellow
                }
                $agentlist += $agent
            }
        }
        else {
            write-host "$groupname has no Agents" -ForegroundColor Yellow
        }
    }
}

Możemy oczywiście funkcję rozbudować również o weryfikację statusu EV, ale to w kolejnej iteracji.

31 grudnia 2019

Kończy się dekada

Za chwilę zacznie się rok 2020 - można dyskutować, czy to ostatni rok tej dekady, czy pierwszy kolejnej.  W IT liczenie zaczyna się od 0, a po szaleństwie roku 2000 (kto to jeszcze pamięta?), jakoś trudno mi liczyć inaczej. Zwłaszcza, że i mi za parę dni przekręci się licznik. Ale teraz pora na małe podsumowanie roku. W ostatnim roku mniej mnie było widać na konferencjach i spotkaniach meetupowych, ale starałem się nie wypaść z obiegu. Więcej czasu poświęciłem na aktualizację certyfikatów Microsoftowych (tylko cztery, ale i tak więcej niż w dwu poprzednich latach razem licząc), chociaż oczywiście nie wszyscy uważają, że potwierdzanie wiedzy certyfikatami jest istotne. Jednak chcąc pozostać aktywnym trenerem MCT, muszę mieć aktualne certyfikacje z technologii, które znam i lubię. O zmianach w ścieżkach certyfikacyjnych pisałem niedawno, warto śledzić nowości w tym obszarze i dostosować się do nowych możliwości.
Udało mi się również przeczytać trochę książek - jak zwykle dużo kryminałów i fantasy, jednak staram się czerpać inspirację od kolegów z branży - kilka lat temu Tomek Onyszko swoim postem na blogu zachęcił mnie do bliższego kontaktu z serwisem Goodreads. Oprócz zapisywania informacji o książkach, które się przeczytało, a których tytuły czasami mogą umknąć (pamięć mam dobrą ale coraz krótszą), można tam inspirować się tym co czytają znajomi i ich recenzjami - dzięki Gutek. Jest podobny serwis w Polsce - lubimyczytac.pl, jednak niestety nie można na nim znaleźć części tytułów, dostępnych np. w serwisie Audible. Można jednak w tym serwisie porównać ceny danego tytułu w polskich księgarniach, a różnice czasami są spore. Więc osoba czytająca polskie tytuły powinna również śledzić ten serwis. Pełną listę książek, które przeczytałem w 2019 roku można znaleźć na moim profilu Goodreads - które z nich były najciekawsze? Trudny wybór. Na pewno ciekawe były książki Olgi Tokarczuk, które przeczytałem w ostatnich tygodniach. Wstrząsnęła mną książka "Ganbare! Warsztaty umierania" Katarzyny Boni - reportaże z Japonii, z obszarów zniszczonych przez Tsunami i katastrofę elektrowni w Fukushimie. Bardzo ciekawa była również książka "Dlaczego śpimy. Odkrywanie potęgi snu i marzeń sennych" Matthiew Walkera. Trochę mniej przeczytałem i przesłuchałem niż w zeszłym roku, ale z drugiej strony cieszę się, że zamiast tracić 2 godziny dziennie (albo i więcej) na dojazdy do biura teraz jest to tylko 40-50 minut.
Co przyniesie Nowy Rok? Co uda się zrealizować? Czas pokaże. Mam kilka pomysłów, o których będę donosił, gdy tylko ich realizacja się skrystalizuje.
Teraz wszystkim życzę spełnienia planów i dużo radości w roku 2020.


20 grudnia 2019

Grudniowe poprawki do Exchange

Kolejny kwartał się kończy, więc zespół produktowy Exchange publikuje kolejne paczki Cumulative Updates.
Co nowego możemy znaleźć w powyższych aktualizacjach? Pełna lista usuniętych błedów dostępna jest w powyższych artykułach, natomiast warto wspomnieć o modyfikacji Address Book Policies, która rozwiązuje problem, opisany w KB4532747, który dotyczy niepoprawnego działania ABP, w przypadku otwarcia w Outlooku skrzynki innego konta, przez użytkownika, kótry sam skrzynki nie posiada.
Warto również wspomnieć o aktualizacji kalkulatora do projektowania Exchange 2019 (wersja 10.3). oraz konieczności wdrożenia .Net Frameworka 4.8 jako wymagania wstępnego. Oczywiście jeżeli nie aktualizowaliśmy Exchange dłużej niż pół roku, to warto sprawdzić, z jaką wersją Frameworka nasz Exchange jest zgodny. Jeżeli wykonujemy aktualizację w środowisku wielodomenowym z wersji starszej niż CU 13 (w przypadku Exchange 2016) lub CU2 w przypadku Exchange 2019, to dodatkowo musimy również wymusić przygotowanie AD i domeny, ponieważ w przeciwnym wypadku instalacja zakończy się błędem.
W przypadku środowisk hybrydowych dodatkowo należy pamiętać o ewentualnych problemach ze wsparciem technicznym, jeżeli takiej aktualizacji nie zrobimy. Microsoft wspiera tylko N-1 wersję Exchange (odpowiednio 2016 CU14 i CU15 oraz Exchange 2019 CU3 i CU4).

24 listopada 2019

Nowości w certyfikatach technicznych Microsoft

Jedną z nowości ogłoszonych na zakończonej kilkanaście dni temu konferencji Microsoft Ignite było 8 egzaminów certyfikacyjnych Microsoft:


Na pewno dla wielu osób, zajmujących się Dynamics 365, Power Apps czy programowaniem, to ciekawa opcja, jednak w ciągu ostatniego roku tych zmian było znacznie więcej. Już na poprzedniej konferencji Ignite Microsoft ogłosił zmianę ścieżek certyfikacyjnych z produktowych na powiązanych z rolami i stworzył portal szkoleniowy Learn, na którym powstają ścieżki certyfikacyjne.  Jak twierdził Heraklit z Efezu "Jedyną stałą rzeczą w życiu jest zmiana", więc osoby z różnych względów zdające egzaminy certyfikacyjne Microsoft muszą dostosowywać się do zmian w programach certyfikacyjnych. Nieco gorzej jest z percepcją klientów, którzy z trudem orientują się w zachodzących zmianach.
Od 20 lat (akurat w grudniu mija rocznica mojego pierwszego egzaminu MCP) uczestniczę w programie certyfikacyjnym Microsoft. Najpierw były to ścieżki inżynierskie (Microsoft Certified System Engineer), później Microsoft Certfied IT Professional, następnie ponownie powrócił skrót MCSE, ale już jako Microsoft Certified Solution Expert. Nowe ścieżki "role-based" są dostępne od stycznia i jak widać są rozwijane.

Łatwo w nich zauważyć spolaryzowanie na najpopularniejsze obszary produktowe - Azure, Dynamics 365, Microsoft 365 i Power Platform. Oczywiście nie każdy musi zdobywać nowe certyfikaty, ale chcąc być aktywnym trenerem w obszarach, które znam i lubię, muszę być na to gotowy. Przygotowując się do odnowienia certyfikacji administracyjnej z Azure (dwa lata temu zdałem egzamin 533 z Implementacji Infrastruktury Azure). dużo korzystałem z nowego portalu Learn przygotowując się do egzaminu AZ-103 Microsoft Azure Administrator i odkryłem, że moduły szkoleniowe zawierają ciekawe ćwiczenia online i naprawdę można z nich uzyskać sporo przydatnych informacji. Szukając informacji o konkretnym egzaminie, możemy znaleźć informacje, które ścieżki szkoleniowe są pomocne w przygotowaniu do danego egzaminu.
Do portalu Learn mają być również przeniesione w najbliższym czasie informacje o aktualnych certyfikacjach, zastępując dotychczasową witrynę MCP.

08 października 2019

Czym jest SEFAUTIL?

Od kilku miesięcy dosyć często korzystam z SEFAUTIL i zdałem sobie sprawę, z tego, że wielu administratorów Skype for Business (przynajmniej w Polsce, gdzie Enterprise Voice nie jest zbyt często wdrażaną funkcjonalnością SfB) nie kojarzy tej nazwy lub nie miało okazji użyć tego narzędzia. Zacznę więc może od początku.
Kiedy zaczynamy używać Skype for Business jako systemu telefonicznego, często zachodzi potrzeba wykonania dodatkowych operacji, związanych z pracą w grupie - przekierowania rozmowy, wskazania delegata, który może dzwonić w naszym imieniu czy też uruchomienia funkcjonalności dzwonienia grupowego. Wszystkie te opcje użytkownik może skonfigurować samodzielnie, korzystając z opcji klienta Skype for Business na swoim komputerze, jak widać na poniższym obrazku.
















Jednak gdy użytkownik jest nieobecny, a istnieje potrzeba wykonania takiej operacji, czy administrator może wyręczyć użytkownika? Odpowiedź jest prosta - może.
Żaby pomóc administratorowi w tych czynnościach, grupa produktowa już dla wersji Lync 2010 umieściła w zestawie narzędzi Resource Kit specjalne narzędze - SEFAUTIL, którego nazwa jest oczywiście skrótem i pochodzi od określenia Secondary Extension Feature Activation.
Niestety, narzędzie to działa w linii komend i wymaga dodatkowych przygotowań serwera, na którym chcemy je uruchomić - https://blogs.msdn.microsoft.com/ramblingsfromthefield/2014/11/14/using-sefautil-to-manage-users-delegates/. Nie jest to więc wygodne ani w żaden sposób powiązane z innymi czynności administracyjnymi, realizowanymi z powłoki PowerShell. Żeby np. sprawdzić ustawienia użytkownika, czy ma włączone równoczesne dzwonienie musimy wykonać (wskazując pulę serwerową, do której rejestruje się użytkownik) komendę:
.\SEFAUtil.exe /server:sfbpool.pepug.net adam.abacki@pepug.org
W odpowiedzi dostaniemy informację:
User Aor: sip:adam.abacki@pepug.org
Display Name: Adam Abacki
UM Enabled: True
Simulring enabled: True
Simul_Ringing to: sip:+48xxxxxxxxx@pepug.org;user=phone
User Ring time: 00:00:20

Call Forward No Answer to: sip:+48xxxxxxxxx@pepug.org;user=phone

Żeby usprawnić życie administratora kilka lat temu MVP Matt Landis i jego firma przygotowały narzędzie SEFAUTIL Server, które możemy zainstalować w naszym środowisku z poziomu Powershell, a co więcej wywoływać je zdalnie, korzystając z powershell remoting. Ta sama komenda będzie wyglądała w tym przypadku następująco:
Invoke-Command -ComputerName serv1.pepug.net -ScriptBlock { Get-CsUserForwarding sip:bolek.babacki@pepug.org }
Odpowiedź będzie nieco bogatsza i co ważne, będzie realizowana z poziomu powershell
PSComputerName                       : serv1.pepug.net
RunspaceId                           : 977d2548-53e2-4b5a-bbd7-19a89ab5033e
ApplyOnlyDuringWorkHoursFromCalendar : False
BlockCallsEnabled                    : False
Breakthrough                         : {}
CallForwardingEnabled                : False
CallForwardTo                        : {}
CallForwardToTargetsEnabled          : False
CategoryName                         : routing
ControlledDevice                     : {}
DelegateRingEnabled                  : False
Delegates                            : {}
FirstDelegate                        :
FirstDelegateWaitTime                : 00:00:00
ForwardAudioAppInvitesEnabled        : False
SimultaneousRing                     : {}
SimultaneousRingEnabled              : False
SkipPrimaryEnabled                   : False
Team                                 : {}
TeamOrOtherDelegatesWaitTime         : 00:00:20
TeamRingEnabled                      : False
UserOnlyWaitTime                     : 00:00:20
UserWaitTimebeforeTeamOrDelegates    : 00:00:00
VoiceEscalation                      : {}
Po wielu latach próśb zespół produktowy w końcu zawarł cmdlety z grupy SEFAUTIL w pakiecie CU1 dla Skype for Business 2019, co znacząco upraszcza konfigurację i pozwala nam sprawdzić i ustawić w imieniu użytkownika niezbędne opcje bez konieczności instalowania dodatkowych narzędzi. Teraz żeby sprawdzić ustawienia użytkownika wystarczy wykonać komendę:
Get-CsUserCallForwardingSettings -Identity sip:Adam.Abacki@pepug.org

18 września 2019

Aktualizacje dla Exchange

Ostatnie dni były bogate w informacje, dotyczące aktualizacji i zmian w systemie Exchange. Najpierw Microsoft udostępnił poprawki bezpieczeństwa, łatające zagrożenia opisane w artykułach:


Poprawki zostały wydane dla dwóch poprzednich wersji CU w wersjach Exchange 2016 (CU 12 i CU13) oraz Exchange 2019 (CU1 i CU2).
Jednak kto nie zrobił od razu instalacji poprawek, powinien raczej spojrzeć na nowe wydanie aktualizacji zbiorczych dla tych systemów, które poza dziurami bezpieczeństwa rozwiązują również inne problemy funkcjonalne. Pakiety te nie rozszerzają schematu AD i nie wprowadzają nowych funkcjonalności, jednak warto przeczytać artykuły opisujące poprawki, bo listy usuniętych błędów są całkiem długie. Warto pamiętać również, że organizacje hybrydowe muszą mieć zainstalowaną wersję nie starszą niż poprzednia aktualizacji (N-1). Poniżej więcej szczegółów:
Kolejna aktualizacja, o której warto wspomnieć, to ogłoszone 16 września przedłużenie wsparcia technicznego na Exchange 2010 do 13 października 2020 roku. Część firm, która rozpoczęła migrację do nowszych wersji lub do chmury i z różnych powodów harmonogram migracji nie kończył się przez 14 stycznia odetchnie z ulgą. Jednak nie oznacza to oczywiście, że powinny odkładać migrację na przyszły rok. W styczniu kończy się również wsparcie na platformę Windows Server 2008R2, więc w wielu przypadkach Exchange będzie wspierany trochę dłużej, ale już jego platforma systemowa nie.

03 września 2019

Kolejna aktualizacja dla Skype for Business 2015

Dopiero miesiąc temu ukazała się paczka poprawek CU10 dla Skype for Business 2015, o czym pisałem ostatnio, a już Microsoft opublikował kolejną aktualizację, ze względu na zgłaszane przez niektórych użytkowników problemy, dotyczące problemów z transferowaniem rozmów zewnętrznych na telefonach Polycom VVX oraz rozłączania konferencji po 30 minutach ze względu na nieprawidłowe odświeżanie licznika wygasania sesji. Paczkę poprawek, oznaczoną jako CU10 HF1 można pobrać bezpośrednio ze strony pobrań Microsoftu, więcej informacji w artykule zbiorczym opisującym kolejne poprawki dla Skype for Business 2015.

05 sierpnia 2019

Aktualizacje dla Skype for Business

Minęła już połowa wakacji, wróciłem z urlopu, ale zespół produktowy Skype for Business nie próżnuje. W ostatnich dniach pojawił się pakiet aktualizacji CU10 dla Skype for Business 2015, a nieco wcześniej (podczas mojego urlopu) długo oczekiwany pakiet CU1 dla Skype for Business 2019. O ile Skype for Business 2015 aktualizowany jest regularnie (CU 8 w grudniu, CU8/HF1 w marcu i CU9 w maju - w tym artykule zaktualizowana lista poprawek), to w przypadku Skype'a 2019 pierwsza aktualizacja, ale za to pełna nowych funkcjonalności. Co można znaleźć w tych aktualizacjach?
Skype for Business 2015 CU10 usprawnia LBR i bezpieczeństwo systemu, rozwiązuje również sporo problemów zgłoszonych w ostatnich miesiącach, :
  • 4510852 UCWA client is disconnected because w3wp.exe crashes when using clarity connect in Skype for Business Server 2015
  • 4510851 SCOM SQL alerts are created every hour on SQL Secondary Replica server if "Always On" for Monitoring Server is set in Skype for Business Server 2015
  • 4510850 Skype for Business on Mac user’s latest photo can’t be seen until signing in to a Windows client in Skype for Business Server 2015
  • 4511313 “Too many outstanding requests for a single user” error occurs on Front-End servers in Skype for Business Server 2015
  • 4510847 Rate My Call on UCWA clients still shows after installing the January 2019 Cumulative Update for Skype for Business Server 2015
  • 4510846  “InstallDatabaseInternalFailure: An internal error has occurred…” error when installing new databases in Skype for Business Server 2015
  • 4507230 Support LBR and branch site voice resiliency conflicting requirements in Skype for Business Server 2015
  • 4459114 The installed local XDS database version doesn't match the expected version in Skype for Business Server 2015
  • 4507232 Resuming a PSTN call that was put on hold results in one-way audio in Skype for Business Server 2015
  • 4510845 UCWA Event ID 20002, 20003, and 20033 occurs after you install the July 2018 cumulative update for Skype for Business Server 2015
  • 4510844 Can’t find the response group agent that’s synced from an existing distribution list in Skype for Business Server 2015
  • 4510843 Forwarding a missed call from Shared Line Appearance fails in Skype for Business Server 2015
  • 4507228 No notifications from UCMA conference subscriptions after a network disconnection in Skype for Business Server 2015
  • 4510842 Form-based authentication still works after you disable external basic authentication in Skype for Business Server 2015
  • 4510841 Skype for Business 2015 Mediation Server doesn’t respect the codec prioritization for outgoing PSTN calls
  • 4510840 Error ID 28042 and UCMA sign-in fails in Skype for Business Server 2015
  • 4510839 Skype for Business still rings if a PSTN call is ended before it's answered by an online user in Skype for Business Server 2015
  • 4510855 Can’t edit interactive RGS workflows via the web interface in Skype for Business Server 2015
  • 4507233 Enterprise users can't request control of an anonymous user’s shared screen in Skype for Business Server 2015
  • 4510856 User can’t create Skype meeting for a delegator via Skype for Business on Mac if they’re homed in different pools in Skype for Business Server 2015
  • 4512879 UCWA client can’t make a P2P call or join a conference when EnableExternalAccessCheck is True and EnableOutsideAccess is False in Skype for Business Server 2015
  • 4503584 “The Audio/Video Conferencing Server has failed to create a conference” error (ID 32005) occurs on Audio/Video Conferencing Server in Skype for Business Server 2015
Na CU1 dla Skype for Business 2019 czekaliśmy bardzo długo. Jeszcze w zeszłym roku Microsoft zapowiedział kilka istotnych usprawnień, takich jak zastąpienie w Control Panelu Silverlighta przez HTML 5 oraz wprowadzenie cmdletów dostępnych w SEFAUtil (więcej o SEFAUtil w oddzielnym artykule). Podobnie jak w przypadku CU10 dla SfB 2015 pakiet usprawnia również Location Based Routing oraz naprawia błędy znalezione w ostatnich miesiącach w Skype for Business 2019. Istalacja pakietu jest realizowana dokładnie tak samo jak w wersji 2015, więcej szczegółów w artykule KB, poniżej lista poprawek:
  • 4458678 Skype for Business VbSS application sharing doesn't work for UCMA based Contact Center in Skype for Business Server 2019
  • 4503615 Can't escalate a peer-to-peer call to a conference if VbSS is used in screen sharing in Skype for Business on Mac
  • 4503617 Skype for Business UCWA clients can't be distinguished on CDR report if connection is internal or external in Skype for Business Server 2019
  • 4503618 Updated job title isn't displayed in the Skype for Business for Mac or mobile client in Skype for Business Server 2019
  • 4503619 Support for sending custom client policy entries to UCWA clients in Skype for Business Server 2019
  • 4503621 "Call was not completed or has ended" error when you make a call with a federated user in Skype for Business Server 2019
  • 4470530 Can't make an outbound emergency call by using Skype for Business on Mac if LBR is enabled
  • 4503623 Can’t call Exchange UM Subscriber Access or Auto Attendant if the contact object is homed on a Skype for Business Server 2019 pool
  • 4487819 Intranet URI is still filtered even if IgnoreLocal is set to True in Set-CsImFilterConfiguration in Skype for Business Server 2019
  • 3141120 Call transfer from a PSTN call to a federated user fails in Skype for Business Server 2019
  • 4512994 PSTN phone is in holding until a Skype for Business user joins even if AllowAnonymousPstnActivation is True in Skype for Business Server 2019
  • 4488056 UCMA calls still fail after one Front End server in the pool goes down for a while in Skype for Business Server 2019
Warto również wspomnieć o zaktualizowanych narzędziach Skype for Business Server 2019 Debugging Tools - Snooper ma nowy build, jednak Microsoft nie opublikował informacji jakie zmiany zostałe wprowadzone. Zostały  również zaktualizowane materiały na temat parametrów KHI, zarówno dla Skype for Business 2015/2019 jak i Lync Server 2013.