Thursday, October 24, 2019

Swedish SQL Server User Group

Tonight I stepped out of my comfort zone and joined a meeting with the Swedish SQL Server User Group. About 40 people joined the meeting in central Stockholm and people from Göteborg, Malmö and Helsingborg joined online via Zoom (hmmm...)

The main reason for me listening to this is that my cousin’s cousin Magnus Ahlkvist presented at the meeting.

Databases,beard and beer - does it get better than this?

Title: RBAR bad. Sets good.
Presented by: Magnus Ahlkvist (@MagnusAhlkvist)

Session summary:
In this session, I will go over some way too common uses of RBAR (Row by Agonizing Row) processing and show different examples of how they can be replaced with a set based approach. We will look at performance comparisons and talk about code maintainability. Most of the examples are war stories from my 20 years working with databases. Unfortunately, many of the bad examples come from my own code. Fortunately, many of the good examples also comes from my own code, fixing the bad code.

My Notes:
RBAR stands for "Row By Agonizing Row" and means we did not do something in an optimal way. We should not deal with a database row-by-row rather by set-by-set.

RBAR by T-SQL loops

Don't do loops in T-SQL

Populating 1000 rows with weekdays using a loop took 812 ms with some example code.

Using Tally Tables and window functions the same operation (or result) took 505 ms.

Running all commands in one single transaction brought down the time to 16 ms.

RBAR by T-SQL functions

To split strings have been tricky with T-SQL, but in SQL Server 2016 a STRING_SPLIT function was added. T-SQL is not an optimal language to do string manipulations.

RBAR in optimization plans

The session was basically several demos of T-SQL code explaining how to optimize the code to make the queries run faster and more efficient. Even though I did not understand all the examples and all the code the presentation and demos seemed very appreciated by the audience present.

If you would like to look at the scripts in detail you can find them at Magnus blog.

Good job Magnus!

After the session we had a good time hanging with some hardcore DBA nerds telling jokes such as: In the nineties everyone was chatting on IRC - except Lotta who was using UTF-8 (it only makes sense in Swedish - but it was super funny!!!)

Wednesday, October 23, 2019

Microsoft Techdays 2019 - Skypexit with Mårten

The full title of this session was "Microsoft Teams replacing Skype for business, how to do a clean Skypexit."

 
Brexit is a big mess - we do not want to end up there with our Skype to Teams project.

Mårten held a similar presentation a year ago and the room overfilled, this year we have a bigger room and still we see a big interest in this topic given the number of people on this session. Maybe not surprising for a platform with over 13 million monthly users.

Skype for Business Online will be shut down on July 31, 2021.


Planning

  • Microsoft 365 governance is key, think about compliance and security.
  • Skype for business on-prem will remain for a long time, but it is no longer possible to order new SfB Online Tenants.


Modes

  • https://aka.ms/modes
  • Island mode is the default mode and puts the Skype client as the primary tool for incoming external chats, and the user will get two buttons for meetings in the Outlook client.
  • In Teams only mode the Teams client is the primary tool for incoming external chats and the users can only use the Teams meetings button in Outlook. The Skype client can remain installed on the computer in order for the user to join SfB meetings.


Interoperability SfB / Teams

  • Presence is synchronized between the two systems.
  • Only Skype clients can join Skype meetings and only Teams clients can join Teams meetings. The Meeting Migration Service will change SfB meetings to Teams meetings when a user is migrated.
  •  How communication works in the different modes between different clients in interoperability is complicated, but well documented here.
  • Interoperability will not get "better" than this, only Teams will get better and better in the future.
  • Screen sharing can be done via a Teams meeting - this feels like a workaround.  



Hard or Soft skype exit?

  • Soft - staying in Islands mode a long time.
  • Hard - switch to Teams only ASAP.
  • There is really no right or wrong way to do it, it depends on the organization at hand.


How to do it hands-on



Lessons learned

  • Changes in Office 365 can take up to 48 hours to kick in.
  • New functions in Teams are added ad-hoc, and are sometimes enabled by default.
  • Clean up the on-prem Active Directory before you synch it to Azure AD.
  • Contacts are handled differently in Teams compared to Skype.
  • Define an organization-wide chat and meetings culture.
  • Use certified devices, or meetings will not run smooth.
  • It often starts well with chat, meetings and files, but then it stops there, make sure to jumpstart the next phase which could be telephony, bots, first line workers.
  • Teams are more than an IT-project, IT is just one part of it.
  • Run a user adoption program.
  • Define project success criteria.
  • Monitor user adoption and usage.


Islands mode or not Islands mode?
If you ask me - Rip off that band-aid fast and hard! :-)


Tools to help you (move to Teams Only)

Wednesday, October 16, 2019

European Teams User Group Virtual Summit - Oktoberfest!


Today I joined the Oktoberfest or Teams Virtual Summit arranged by the European Teams User Group. A great community driven event held totally on-line in Microsoft Teams. Take a look at twitter under #teamsfest for some buzz about the event.

The event had three tracks so three sessions where running at the same time all day. For all the recordings of the day look at the YouTube page of the European Teams User Group.

Oktoberfest is all about Teams (and beer)


I managed to catch the following presentations during the day:


Title: Getting the best experience with Microsoft Teams meeting rooms
Presented by: Craig Chiffers (@cchiffers)

Session summary:
Room meeting technology has come a long way since the days of whiteboards, projectors and star phones. Today’s technology allows us to connect in more ways, but has also bombarded us with technological challenges which come at a cost. How do you simplify the meeting experience when current meeting setup times averages 15 minutes and normally involve assistance from IT support? In this session, we’ll delve into how Teams supports the best meeting room experience from the ground up, regardless of whether you’re using a laptop, mobile or purpose-built in-room technology. We’ll cover the life-cycle of a meeting, from initial creation, to joining Teams meetings, finding available meeting rooms on the fly as well as upcoming Teams meeting room technologies we’ll see in the near future. After attending you’ll leave this session with a greater understanding of how Teams meetings work, how to select the best Teams Meeting Room equipment for your environment, how to utilise your existing in room technology investments with Teams and how to drive Teams meetings adoption.

My Notes:
Meetings - a love or hate relationship, whatever we feel we do spend a lot of time in meetings.

  • Since 2000 time spent in meetings has increased 10% each year
  • On average meetings last between 31 and 60 minutes
  • 73% of meetings involve 2-4 people
  • Only 37% of meetings have clear agendas
  • >92% of people multitask in meetings
  • The average meeting setup time is 15 minutes

Issues with meeting rooms: Flipcharts, whiteboards, WiFi connection, connection to projector / TV, etc.

Research have shown that simply enabling video during a meeting increases attentiveness.

A poor device experience = A poor Teams experience, so please use a device made for Microsoft Teams.

A Teams room system is purpose-built devices to work with Teams, designed to be user-friendly, simple and intuitive.

There are (at least) three companies building bridges between Teams meetings and Cisco / Polycom meetings, Pexip, Poly and BjueJeans.

Other nice features of Teams meetings were discussed and demoed.



Title: 5 tips to make you better at Microsoft Teams
Presented by: Amanda Sterner (@amandassterner)

Session summary:
On the 31st of July 2021, it’s happening, Skype for Business is being retired and Microsoft Teams will be left as the hub for teamwork. During this session I will give 5 tips to make you even better at using Microsoft Teams. These tips are both for those of you that are experienced users but also for those of you that are still using Skype for Business a little bit more then you wished for.

My Notes:
Skype for Business being retired (or die) on 31 July 2021, it is replaced by Microsoft Teams - The hub for Teamwork - a simple way to reach all your daily tasks.

  1. Bring the good parts from SfB - Persistent Chat, Contacts, Calling, Meetings, Status Message.
  2. Set your notifications. Do an active choice, use quiet hours in the mobile client.
  3. Set some rules for your team. Use subjects, @mention the team only if needed, learn how to reply.
  4. Working in several tenants. Use several profiles via the browser. Try Franz
  5. Become better at searching, use search operators (AND / OR / * / etc)


Title: Making Teams the Hub for Work: The Graph API in Practice
Presented by: Vesa Nopanen (@vesanopanen)

Session summary:
Join this session to see in demos how Graph API can be used create new teams and manage existing ones. Do you have a company PowerApps or an application that you would like to add to existing teams? How about copying documents to the team? What you can do with messages? How to centrally create Teams that are Hubs for Work in your organization? Graph API has a lot of potential to manage teams, in this demo-rich session I will spark the inspiration and give you ideas how you could start working on your organization’s Teams.

My Notes:
Graph API exposes APIs and libraries to access services & data and can been seen as an endpoint to Teams.

We got a demo (or a code review) of how to create a Team complete with tabs and apps using Graph API. Also, how to add files and messages to an existing Team, tasks to planner, a OneNote in a tab, a PowerApp in a tab, Yammer tabs, a welcome message to a channel, a GIF to a channel.

It is also possible to add hidden messages to a conversation in Teams - at least for now - is it a bug or a feature?

It is not possible to move a message from one channel / team to another. It is possible to read it and pipe it out in another channel, but not with the original user as the sender. A better way to accomplish this would be to grab all messages in the conversation and put it in a OneNote, then dump the one note in the "new" channel.

Use Graph explorer to figure out what is possible with Graph API.




Title: Is Teams ready to be the one stop shop for all your telephony and video needs?
Presented by: Mårten Hellebro (@martenhellebro)

Session summary:
Microsoft Teams is replacing Skype, that’s a fact. But is Teams ready to be the one-stop-shop for all your telephony and video needs? Spoiler alert; Yes, it is. In this session, we will take a close look into the telephony and video interoperability capabilities of Microsoft Teams. How the PBX can be replaced, and all video conferencing needs can be met, all in Teams.

My Notes:
Is Teams Voice ready for your organization? Yes.

  • How can we dial out of Teams?
    With Direct Routing or Calling Plans (available in 11 countries).
  • Can we dial in to meetings?
    Yes, via audio conferencing.
  • Can we monitor the call quality in Teams?
    Yes, with the Call Quality Dashboard.
  • Are there any PBX-like call features in Teams?
    Yes, Auto Attendant, Call Queues, Group Call Pickup, Delegation, Call forwarding, Simultaneous ring, Call groups, Hold, Music on Hold and Voicemail.
  • How can we configure our voice mail settings?
    Go to, http://aka.ms/vmsettings
  • Can we use a switchboard operator in Teams?
    Yes, products using beta APIs are already available.
  • Are there desk phones available for Teams?
    Yes, available at http://aka.ms/teamsdevices

Is Teams Video ready for your organization? Yes, Teams Room system, devices, gateways to other VTC systems are available.



Title: Managing and Reporting on Teams with Graph API
Presented by: Lee Ford (@lee_ford)

Session summary:
An overview session on how Graph API can be used to manage (create, change, delete) and report on Teams. These methods can then be used as part of scripts, Flows or applications.

My Notes:
Graph API is a RESTful API for Microsoft 365 and Azure AD which makes it possible to interact with Exchange, OneDrive, SharePoint, Teams, Users, Groups, EMS. Graph API needs to authenticate to Office 365 and can do this via a user or by using application authentication.

We got a demo and a code review of how to authenticate with Graph API and create a Team, create a channel, upload a file, downloading files, deleting a Team and listing the size of the site collections used by the Teams.

We also got a demo of Lee's nice Teams backup tool.

Saturday, October 12, 2019

A Microsoft Teams telephone booth

A telephone booth, telephone kiosk, telephone call box, telephone box or public call box is a small structure furnished with a payphone and designed for a telephone user's convenience. Such an installation is currently present in the lobby of Microsoft's Swedish subsidiary office in Akalla outside of Stockholm. In the 1980s Sweden had 44,000 of these booths scattered all over the country, but then the mobile phone became affordable for common people and the number of telephone booths started to decline. The first booth was installed in Stockholm in 1890, but by the year 2015 the last telephone booths in Sweden had been decommissioned.

All these booths were originally put in place and maintained by the Royal Swedish Televerket, who also had one of the coolest company logos of all time.

Televerket's logo aka "The Crab"

Nowadays the Swedish state have sold Televerket and it has transformed into the public Telia company.

So, what about the anachronistic installation at the Microsoft office?

It is actually a booth retrofitted by Telia and equipped with Microsoft Teams telephony that is currently available from Telia. The top part of the booth is green = available in the photo above, and when someone gets on the Microsoft Teams phone in the booth the top part will shift to red = busy. Also, the glass windows will be changed to frosted for greater privacy when in a call. The booth is built to get people to test telephony through Microsoft Teams and it also illustrates the connection between old style communications and modern solutions.

If you want to test the booth IRL (AFK) there is an opportunity at the Swedish TechDays which will be held in Kista on October 22-24.

An article in Swedish about the booth is found here: Gammal telefonkiosk ska demonstrera modern telefoni

Monday, October 7, 2019

PowerShell for Teams Management

I am primarily writing this article for myself as a cheat-sheet on how to get connected with PowerShell in order to manage Microsoft Teams.



Open PowerShell with "Run as Administrator" and type (or copy) the following commands.

$adminUPN="admin@M365x086920.onmicrosoft.com"

$userCredential = Get-Credential -UserName $adminUPN -Message "Type the password."


Now a prompt / window will pop-up and you can enter the password for the admin user specified above. Change this username to the Admin account you are using in Office 365 of course. Next run the commands

Install-Module MicrosoftTeams

Connect-MicrosoftTeams -AccountId $adminUPN


At this stage you are connected to the Teams PowerShell part of Office 365, you can now use commands such as

Get-Command -Module MicrosoftTeams

Get-Team


However, if you now try to use a command containing *cs* such as

Get-CsTeamsMeetingPolicy

You will get the message "The term 'get-csTeamsmeetingpolicy' is not recognized as the name of a cmdlet, function, script file, or operable program." because all *cs* commands are part of the legacy Skype for Business Online PowerShell interface. To connect to SfB Online PowerShell use the following commands

$sfbSession = New-CsOnlineSession -Credential $userCredential

Import-PSSession $sfbSession


If you again get the message "The term 'New-CsOnlineSession' is not recognized as the name of a cmdlet, function, script file, or operable program." you need to download and install the Skype for Business Online, Windows PowerShell Module and also close the current PowerShell window, open a new one and continue from there. Now

Get-CsTeamsMeetingPolicy

will work. Next, connect to SharePoint Online using the command

Connect-SPOService -Url https://M365x086920-admin.sharepoint.com -Credential $userCredential

Again, if you get the message "The term 'Connect-SPOService' is not recognized as the name of a cmdlet, function, script file, or operable program." you need to download and install the SharePoint Online Management Shell and also close the current PowerShell window, open a new one and continue from there. Now commands such as

Get-Command -Module Microsoft.Online.SharePoint.PowerShell

Get-SPOSite


will work as well. At this point you can even use Ståle Hansens great oneliner if you are moving users from Skype for business to Microsoft Teams.

Get-CsOnlineUser admin@M365x086920.onmicrosoft.com | Format-List UserPrincipalName, DisplayName, SipAddress, Enabled, TeamsUpgradeEffectiveMode, EnterpriseVoiceEnabled, HostedVoiceMail, City, UsageLocation, DialPlan, TenantDialPlan, OnlineVoiceRoutingPolicy, LineURI, OnPremLineURI, OnlineDialinConferencingPolicy, TeamsVideoInteropServicePolicy, TeamsCallingPolicy, HostingProvider, InterpretedUserType, VoicePolicy


For more information, please take a look at: