Category: Office 365

Did you know … you can send audio messages in the Teams mobile client?

There are times when typing on your mobile device isn’t a problem, but there are a lot of scenarios where it is easier to talk than type (especially for those of us up North cold enough Fahrenheit or Celsius doesn’t matter!). You can now record an audio message in both individual and channel conversations.

In the message composition dialogue, look in the lower right-hand corner and find a microphone icon. To record a message, hold the microphone icon and speak. You’ll see a banner indicating that your message is recording. Release the microphone icon to stop recording.

Click the ‘play’ icon to review your audio message and click the little paper aeroplane to send it.

The audio message is can be played from any Teams client – mobile, web, or desktop.


Did you know … you can schedule a meeting in a Teams channel?

I’ve previously provided information on scheduling a private meeting in Teams and a shortcut to schedule a meeting from within a chat. Private meetings are great for discussing topics that need to be private, but a team can be more engaged with a project when planning and implementation discussions are visible and inspectable.

Instead of inviting participants to a private meeting, schedule the meeting in a channel and members can attend your meeting and see what happened during the meeting. Channel meetings will appear as a thread in the channel discussion, and any chat messages sent during the meeting can be read by Team members.

If the shared notebook was used to take meeting notes, or a recording of the meeting was made, links to those items will be displayed in the meeting thread. Avatars for each attendee appear in the bottom right-hand corner of the meeting thread. Because the meeting information is readily available in the channel discussion, these meeting are a great way of keeping everyone “in the loop” and engaged.

To schedule a channel meeting, click the drop-down for “Select a channel to meet in”, expand a Team name, and select the appropriate channel.

Meetings appear in the channel, and participants can click to join the meeting directly from the channel post.

As the meeting organizer, I see the meeting in my Teams meetings section and my Outlook calendar.

However, other channel members to not see channel meetings in their Teams meetings section or Outlook calendar.

*Not* displaying the meeting to all channel members is an intentional decision – Microsoft originally displayed all channel meetings in everyone’s calendar. It caused a lot of confusion because people weren’t sure if they needed to attend the meeting or not. Not displaying the meeting can cause problems too – I glance at my calendar to plan my day and don’t know about your meeting until the reminder pops up ten minutes before the meeting starts. If you need specific Team members to attend your meeting, enter their names in the “Invite People” section.

Individuals listed as attendees will see the meeting in their calendar. Other team members can join if they have interest and availability, but the required participants can see the meeting and plan on attending.

When a channel discussion becomes involved and it would be easier to talk, you can start an ad hoc meeting in a channel. Click the “Meet now” icon under the new conversation box. Attendees can join the meeting from the channel thread, and meeting information is posted to the thread just like with a scheduled channel meeting.


Do you know … what that Team is?

While you can join public teams, or you may have been provided an access code to join a private team, most of the time someone adds you to their Teams space. If you’re lucky, the name they gave the Team is an answer unto itself. If you’re not lucky, they named it “Engineering” and you work with eight different engineering groups. A description is included when creating a Team, but how do you read that description? At the bottom of your Teams listing, click on the little gear.

You will see a summary of your Team memberships – along with the description.

If you’re still not sure, ask the Team owner. Click the not-quite-a-hamburger menu across from the Team and select “Manage Team”.

You’ll see the Team owners. Hover your mouse over a name, and you can quickly send the person a chat message.

Tip for Team Owners: In addition to providing a brief team description, you can add a Wiki tab to your Teams space with more information on how the Team and its channels should be used — if you’ve got a “Watercooler Discussion” channel for off-topic commentary, or if a channel receives posts from an RSS feed or another connector, you can convey that information to Team members in a Wiki tab.


Did you know … you can use Teams as a support channel?

To be honest, I wasn’t sure this was true until we tried it. But my group is promoting Teams usage within the company, so it made sense to try using Teams as a tool for users to engage support. I don’t mean technically work – anything where someone can report an issue & someone else can read/respond to the issue can be used as a support channel! Smoke signals and carrier pigeons would technically work. I mean ‘you can use Teams as a support channel without subjecting yourself to rampant chaos, long wait times, and irritated participants.’

What did we do? Some employees transitioned to a new company under the Earthlink CSMB divestiture. While the individuals would be terminated in PeopleSoft (i.e. we’re not going to keep paying them), they needed to retain access to many Windstream systems during a transition period. Since terminating an employee in PeopleSoft automatically terminates their Active Directory and LDAP accounts (a great thing from a security perspective), these individuals needed to be changed to temporary IDs (n99 accounts). Coordinating account changes for fifty people is an undertaking, and the actual conversions were spread across a full day. After their account is converted, each individual needs to perform a series of steps to get their computer and applications functioning with their new ID. And problems occur.

I built a Teams space for the transitioning employees and support staff who would be assisting with the account conversions. End-user documentation and the schedule of whose account is being converted when was stored in the Teams space. On the account conversion day, we had a HD Meeting bridge open and used a Teams channel for issue reporting.

What happened? Well, first I’ll tell you what didn’t happen. The Teams channel didn’t become a confusing mess of issue reports that became onerous to manage. Now I’m not saying I want to replace ITSM with a bunch of public Teams spaces you can join when you’ve got an issue … but in a limited and controlled environment, Teams was a great supplement that allowed us to better support the transitioning individuals.

People who had never used Teams before didn’t find it difficult (although they also had the bridge-line as a backup) – they used the URL, signed in, and were quickly able to chat with the support team.

When issues were reported, support staff could quickly reply to indicate they were looking at the issue. And unlike a bridge call, three people can easily type at the same time. As a support person, I clicked the little bookmark to ‘save’ an issue on which I was working.

Typing /saved into the command bar at the top of my Teams client

Provided quick access to threads on which I was working. When multiple issues are reported to a bridge line, I find myself with a Notepad document with who and what.

When the problem was a misunderstanding of or a gap in the documentation, I was able to update the end user documentation directly in Teams. These updates were immediately available to users.

Individual chat and screen sharing within Teams – without having to ask someone how to spell their name three times – was an enormous help in walking users through reconfiguration tasks. Where I’ve used Skype for this before, telling someone who I am so they could chat or share their screen with me was time consuming. And I had to tell a LOT of people.

In Teams, you can use the “meet now” button at the bottom of the channel discussion to start an ad hoc meeting that anyone can join.

Or hover your mouse over the individual’s avatar on their post and click the “Chat” icon to start an individual chat.

From within the individual chat, the individual needing assistance could use the sharing control to share their screen.

And they could even give keyboard/mouse control to support staff.

But the best thing about using Teams as a support channel? Participants read channel posts, followed previously-provided instructions, and sorted their own problem.

And in the days following the account conversion? I left the Teams space open for anyone who encountered a problem. Leaving the Team open means support staff can keep an eye on the channel without dedicating a lot of time to waiting to see if problems arise.

The one thing that would have made the experience even better – pinning posts to the top of the channel. It would have been great to pin the three process updates where everyone could find them instead of relying on participants to read through the entire channel history.


Did you know … you can Quick Edit SharePoint lists by default?

Web forms are fine for one-off data entry, but the default SharePoint list view is inefficient for bulk item updates. Since you can create your own list views, and you can set your view as the list default … you can have lists open in the Quick Edit view.

Click the not-quite-a-hamburger menu between the list name and “List”, then select “Settings

Scroll down to the “Views” section and click “Create view”

Select “Datasheet View” as the basis for your new view

Give the view a descriptive name. You might not want to set the view as the default just yet – create it, verify it looks good, then set it as the default. Or, like me, you might be a combination of impatient and confident 😊 Either way, select to create a public view.

Check off the columns you want to include, uncheck any that you don’t need.

Select how you want your list sorted – I am sorting by the record creation time, but you can sort and sub-sort by whatever columns make sense for your data.

You can also filter items displayed in your view – my example is order entry, so maybe a ship date column is superfluous for data entry and programmatically populated by some order fulfillment process. Or you can leave the data unfiltered. Scroll down and click “OK” to save your view.

If you didn’t make your view the default, click the drop-down by the view name and select your view to test it. Return to the list settings and click on your view name to edit it and set it as the default view.

Now that my datasheet style view is the default, my list opens in the “Quick edit”, and I can update lots of records.



Did you know … the Android Teams app has a dark theme?

Microsoft published an updated Teams app in the Play Store on 14 February 2019. While the update includes ubiquitous “bug fixes and performance updates”, there is a noticeable functional change too: a dark theme has been added. Tap the hamburger menu to access the “Settings” menu. Select “General” and slide the “Dark Theme” slider to the right.

The app will restart and use the new theme.


Did you know … you can mark a Teams post unread?

One of the first settings I tweak when I get a new computer – before setting up my printers, grabbing FireFox from the Software Center, or setting up Putty sessions to our hosts is to STOP Microsoft Outlook from marking a message read every time I click on it. Yes, you can add a delay – mark it read if the message has been displayed for 10 seconds. But if I’ve really read a message, I either reply to it (which marks it as read) or delete it. On the few occasions where I want to stash the message without replying, I can mark it read myself!

Teams is different than Outlook … I cannot just delete someone’s post because I’ve read it.

The channel is bolded again to indicate there are unread posts.

And the ‘last read’ marker is moved prior to the message.

Currently (13 February 2019), marking a post unread in a channel discussion does not make it show up when you filter your activity feed for unread messages. If you mark the message as unread within the Activity Feed, though, the item will appear in the “Unread Messages” filtered view.


Did you know … you can link SharePoint Lists?

There is a lot of nicely self-contained data – I track usage and membership stats to track adoption and predict future capacity needs, and a single list contains everything I need to know. But sometimes it’s not possible to keep complete records in a single table – two different processes update the information, and there is a need to isolate access to the more confidential information. As an example, I have a process that updates employee e-mail addresses in PeopleSoft. I don’t have any reason to read employee evaluations or payroll information. Even where it is possible, it can be inefficient. Data duplication can be eliminated by keeping the information in separate tables.

In a relational database, this is called normalization. Instead of maintaining a single table with orders where the customer’s name, address, contact person, phone number, etc are stored on every single order … you create a table with order-specific data (what did they order, how many, how much did it cost) and include a single column for customer number. Another table has the customer number and their contact information. If the customer moves their office, you don’t have to go through and update hundreds of orders – just go into the customer table and update their record. All orders will use the new address. To retrieve an amalgamated record, use JOIN in the query (or create a view using a JOIN query).

You can do something similar with SharePoint lists. As an example, I will use lists with customer contact information and a list with orders. First, we need a list with customer information. Add an index for the column that will be used to find the customer record – in this case, it is CustomerID. Click on “Indexed columns”.

Click “Create a new index”

Select the column to index and click “Create”

You now have an index – something to speed up searching your list for CustomerID.

We’ll also need a list with customer orders. Create all of the columns that aren’t populated by lookup *or* the field on which the lookup occurs. Then Add lookup column using “Add Column” and selecting “More”

Name it & select “lookup” as the data type.

Some of the column settings will depend on your particular use case. Requiring data: are there going to be orders where the site isn’t known yet? Should the values be unique (in this case, no, since I hope my customers return and place a second order!).

From the “Get information from” drop-down, select the table that stores the associated information. The page will reload; from the “In this column” drop-down select the value you want to store in this lookup column – what information is being cross-referenced? Here, it’s the customer ID number. Then check all of the columns you want to populate based on the lookup field. Here, I’m pulling in the customer’s name and mailing address details.

I specifically configure this table’s records not to be deleted if the record gets pulled from the lookup table. Again, this will depend on your use case. Hit OK to create the column.

When creating a new record, you won’t even see the columns we’ve checked above – there will be a drop-down where you can select the data on which the lists are correlated.

When you save the record, the remaining columns display information from the customer information table.

What if you don’t want a drop-down with ten thousand customer numbers? (A perfectly reasonable request – I’ve loaded a few thousand customers in my list and there’s no way I want to scroll through all of those numbers and hope to get the right one).

You can turn the drop-down list into a searchable drop-down by using PowerApps to customize the input form. Click the not-quite-a-hamburger menu between the list name and “List” and select “Settings”

On the settings page, select “Form settings”

Click the “Customize in PowerApps” hyperlink.

Wait a minute as the new app is built.

In the right-hand tool bar, find the “Fields” section and click “Edit”.

On the menu that flies out to the left, click on “Add fields”

Select the fields for the input form and click “Add”

The drop-down box in PowerApps is searchable

In the ribbon bar, select “File”

Click “Save” to save the app

When the app has saved, click “Publish to SharePoint”

You will see a warning that publishing the app to SharePoint makes it visible to anyone who uses your list. Click to continue publishing the app to SharePoint.

Verify that the app is published successfully.

Click “Back to SharePoint” to return to your list.

In the list settings, verify that the custom form is selected for your list.

On the data entry card, you will see that the drop-down is now searchable.

When you type some text into the drop-down, you will see a filtered list of options.

** This works provided the list against which the lookup is performed (in this example, my customer list) contains 5,000 or fewer records. If you see an error like this, then you’ve exceeded 5,000 records in the lookup table.

There are a few options – the generally recommendation from Microsoft is to break the list into multiple lists. This may mean breaking the data into different, unrelated lists. Or it may mean establishing a parent/child list relationship (e.g. a customer list that has multiple entries per customer reflecting their various offices could be a parent list of customers and a list for each customer reflecting their sites). You may be able to use a view, filtered to a subset of records, for data entry. Writing a custom web input form and using the SharePoint REST API to read and write data would allow you to populate the searchable drop-down with data retrieved from the lookup target (in this case my customer table) – as the column is indexed, the threshold should not be exceeded as you search.


Did you know … your Team can have 5,000 members?

Microsoft updated the Microsoft Teams Limits and Specifications documentation, an Teams can now have 5,000 members. That’s a LOT of people! Are there special considerations when managing a large Teams space? Yes!

Even in a smaller team, it is a good idea to document the purpose of the Teams space and how it should be used. Is there a channel into which members are encouraged to post interesting information they happen across even if said information is not directly work related? Can members create new channels; and, if not, how are new channels requested? When managing a large Team, it is vital that everyone understand the purpose for each channel and what types of discussion are appropriate.

Because you cannot currently pin a post to the top of a channel, I have used the General channel’s Wiki tab to convey this information. You can rename the Wiki tab – a good idea if it will be more than a blank page! Click the drop-down by “Wiki” and select “Rename”.

Type a new name and click “Save”.

Update the Wiki page with information about your Team.

The first real problem in creating a large team is picking 1,739 names and adding them to your team. Instead of manually adding individual members, you can generate a code that can be used to join your team. This code can be e-mailed to those who should join – or to managers for distribution to their staff. Click the not-quite-a-hamburger menu next to your Team name and select “Manage Team”

Click on the “Settings” tab, expand the “Team code” section, and copy the code.

Click on the “Members” tab – that “Search for members” dialogue is very useful if you want to remove a specific member from a very large team.

There are other settings that can reduce chaos in large Teams spaces. Click the “Settings” tab. Expand the “Member permissions” section. If thousands of people can create channels, you can quickly reach the 200-channel limit in a Teams space. By restricting channel creation and deletion to Team owners, you can exert more control over the Teams space design. You can even prevent non-owners from posting to the General channel. I do not allow members to modify tabs or connectors – again, controlling what the space looks like and avoiding accidental deletions.

It is beneficial to allow Owners to delete all messages – if a post is inappropriate or contains information that should not be shared with the large group, it can be quickly removed.

Scroll down and expand the “@mentions” section – since at-mentions generate notifications to a huge number of people, you may not want to allow members to at-mention the team or channel.

You may want to restrict “fun stuff” as well – a few gifs or memes can be funny, eight hundred … not so much 😊


Did you know … you can schedule a meeting from a Teams chat?

Clicking around in a UI (or even using shortcut keys to navigate elsewhere) can make you lose focus – but it would be overwhelming to see your calendar, all channel activity, shared files, calendar, and Planner overview in the same view. Fortunately, there are shortcuts in Teams that allow you to perform quick actions without leaving your current screen.

There are discussions that are well suited to IM-like interfaces – I frequently bring up a side-channel chat for conference calls to run ideas by my group before announcing it to others or to get clarification about a topic without interrupting the flow of discussion. When participants span time zones, asynchronous communication allows everyone to participate in the discussion. But there are times when it’s just easier to talk. If everyone is available, you can launch an audio or video meeting right from the upper right-hand corner of the chat.

That doesn’t work if everyone’s not available to talk. While you can schedule a meeting in the Meetings panel, that means leaving your current conversation. Fortunately, you can also schedule a meeting from the chat pane. Under the new message box, click the little calendar icon.

And schedule a meeting – attendees are pre-populated with chat participants, but you can add and remove participants as needed.