Category: Technology

Did you know … you can search chats, files, and people in Microsoft Teams?

One drawback to retaining all of your chat and team discussion content is that there’s a LOT of content … which makes it challenging to find a specific discussion or comment. Luckily, Teams data is easily searched. At the top of your Teams application (or website), there is a long gray bar. Click in it and type a word or phrase to begin searching. Using multiple words will find conversations containing both words, to find a phrase place the phrase “in quotes”. Hit enter.

You’ll see messages that contain the words or phrase – notice this includes both chat messages and channel discussions. Each search result has a reference letting you know where the discussion is located, and you can click on the item to switch to the chat or channel discussion.

If your search returns too many results, click on the little funnel – you can refine your search results with a filter – a specific individual, a time frame.

In addition to searching chat messages, you can search files. Just click on “Files” and you’ll see files with names or content that contain your search terms. Again, you can see where the file is located, and you can click on the file to preview the file.

Click on “People” and you’ll find, well, people who work here. This is a name search – you cannot search for “stats” and see people with whom you’ve had discussions about statistics. Search for a last name, a first name, or a name in “last, first” format.

If you click on a person, you’ll see the conversations you have had with them, as well as any shared files, an org chart for their position in the company, and their channel posts for the past two weeks (‘Activity’).

If you haven’t chatted with them before, you can start a new conversation too.

Ugh! MFA

I am trying to use Microsoft Graph to read/write an Excel spreadsheet stored in SharePoint. It’s an ugly process to start with — they don’t exactly make it easy to find the right ID numbers so you can reference the spreadsheet in the first place, but I finally got the proper URL. And then I tried to do the password-based token authentication.

{“error”:”invalid_grant”,”error_description”:”AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: b43d1973-c253-4889-8756-354e5bd77200\r\nCorrelation ID: 9cf94602-9d72-4790-8dcc-6cf0471058f9\r\nTimestamp: 2019-01-08 00:01:47Z”,”error_codes”:[70002,50126],”timestamp”:”2019-01-08 00:01:47Z”,”trace_id”:”b43d1973-c253-4889-8756-354e5bd77200″,”correlation_id”:”9cf94602-9d72-4790-8dcc-6cf0471058f9″}

Hint: the password isn’t wrong. I’ve seen a lot of comments online about this meaning the secret is wrong — which seemed reasonable, since I’m not seeing any auth traffic against the user account. But if you put in a known bad secret, there is a different invalid secret error.

{“error”:”invalid_client”,”error_description”:”AADSTS70002: Error validating credentials. AADSTS50012: Invalid client secret is provided.\r\nTrace ID: 59f4c7c8-73ab-4adb-bf15-10250a190d00\r\nCorrelation ID: 0a95810c-19e2-4fc6-a7be-c0ca7235d824\r\nTimestamp: 2019-01-08 00:00:37Z”,”error_codes”:[70002,50012],”timestamp”:”2019-01-08 00:00:37Z”,”trace_id”:”59f4c7c8-73ab-4adb-bf15-10250a190d00″,”correlation_id”:”0a95810c-19e2-4fc6-a7be-c0ca7235d824″}

But we use MFA … and I’ve got no way to perform the MFA validation. Sigh!

Did you know … Microsoft Word can generate random text for you?

As I’ve been writing these “Did you know” blog posts, I’ve needed sample data to demonstrate how a function works. In Excel, that’s easy enough as there are RAND() and RANDBETWEEN(iLow,iHigh) functions. But how do you get sample text in Word? I used to just paste in part of a public domain work (as a cultural aside – the twenty years of copyright protection added under the Sonny Bono Copyright Term Extension Act are up this year, so the list of public domain works is expanding again). But what if you don’t have the original Anglo-Saxon Beowulf laying around?

Microsoft Word has a rand() function too – type =rand(#Paragraphs,#Sentences)

The example here generates two paragraphs that are five sentences each.

Hit enter – the formula is replaced with random text.

(This works in PowerPoint too). If you want some different text, try the lorem(#) function — the number in the parenthesis is the number of paragraphs — that uses the lorem ipsum paragraph as the content source.

Preventing Unauthenticated Binds in Active Directory

There is finally a Windows server-side solution to prevent “unauthenticated bind” requests (detailed in LDAP RFC 4513 section 5.1.2 with a note regarding the subsequent security considerations in section 6.3.1) from allowing unauthorized users to successfully authenticate.

It has always been possible to handle in code (i.e. verify that username and password are both non-null prior to communicating with the directory server) and is my personal preference as a developer cannot predict how individual directory services will be configured.

But for the third-party apps that don’t prevent unauthenticated binds, a setting to disallow unauthenticated bind operations to Active Directory was added in Windows 2019 — in your Configuration partition, open the properties of CN=Directory Service, CN=Windows NT, CN=Services, CN=Configuration — find the msDS-Other-Settings attribute, and add a new entry DenyUnauthenticatedBind=1

Did you know … you can name ranges in Excel to make formulae clearer?

Formulae in Excel aren’t always easy to decode – even a relatively simple formula, like the volume of a right rectangular pyramid below, can be a little cryptic with the A2 type cell identifiers.

You can name ranges and use range names to make a formula easier to understand. Highlight a data set – in this case, I am highlighting the “length” values – column A. On the “Formulas” ribbon bar, click on “Define Name” (you don’t need to hit the inverted caret on the right of the button – just click the ‘define name’ text).

Supply a name for the range – in this case, I am calling it “Base_Length” (range names need to start with a letter or underscore and cannot contain spaces). Click OK to save the range name. Repeat this operation with all of the other data groups – in my case, I named Column B “Base_Width” and Column C “Height”.

Use the name instead of the cell identifier – as you type your formula, the range names matching your typed text will appear.

It is now a lot clearer what this formula means – base length times base width time height all divided by three. Which is the formula to calculate the volume of a right rectangular pyramid.

The calculated answer is the same either way – but this makes it easier to figure out what exactly you were computing when you open the spreadsheet again in six months 😊 (Or share the spreadsheet with others).

Did you know … you can tell who is speaking during a Teams meeting?

There are times when it is easy to tell who is speaking – there aren’t a lot of women in my group, so “the female voice” is usually me. My friend Richard is generally the only person with a New Zealand accent on any call (although someone who didn’t grow up in a Commonwealth country may have trouble distinguishing him from the guy from Australia). And after you work with someone for a while, you learn the voice and lexical nuances of colleagues. The rest of the time? I end up pausing the conversation to check who it was that volunteered to serve as my tester and clarify who is going to be getting back to me next week. In a Teams meeting, though, you can quickly tell who is speaking – and respond with a much friendlier “thanks, Jim, for offering to help”.

When you join a Teams meeting, you’ll see up to four large tiles with meeting participants. If there are more than five participants (you don’t show up on your own view!), the remaining people will be represented by smaller images in the lower right-hand corner of the screen.

When someone is speaking, their tile will be highlighted in a purply-blue and a brighter highlight circumscribes their image.

The four large tiles represent the most recent speakers, so you will notice who is in these four tiles change throughout the call. And, yeah, it’s possible for more than one person to be talking at a time – you’ll have multiple highlighted tiles.

There is another place to view who is speaking. On the right-hand column, click to enter the participant pane.

The current speaker will be bolded.

Bonus Features: Sometimes I’ll start a large call and have trouble getting everyone’s attention to start the call. In the participant pane, you can click “Mute all” to mute all participants. N.B. Any participant can do this – so don’t test it in the middle of a real discussion!

And just like meetings through the PSTN system or other web-meeting platforms, you’ll get the occasional person typing without hitting mute. Or speaking to someone who popped into their office. Or experiencing feedback on the connection. In Teams, it’s easier to identify who is causing a disruption – they are going to be highlighted as speaking.

Once you’ve identified the source of the noise, click the not-quite-a-hamburger-button next to their name and select “Mute participant”.

Did you know … you can save documents directly to Microsoft Teams?

You can create a document in a Teams file space (from “New”, select the document type); but, if you want to use a custom template (or if you just didn’t think of it and started the document on your computer), you can also save an Office 365 document to Microsoft Teams.

For the Teams file space to appear in the save dialogue, you’ll need to be following the SharePoint repository that underpins the file space. From the Files, select “Open in SharePoint”.

In the upper right-hand corner, click “Not following” to follow the site.

The change may not be reflected immediately on your computer – if your Teams space does not show up yet, wait an hour or two. Select “Save as” from the Files ribbon bar.

Click on “Sites – Windstream Communication”. The Teams space you followed will show up in the SharePoint sites list. Click on the team name.

Then select “Documents”

From there, you will see the name of each channel. Select the appropriate one, then navigate to the location you want to store your document. Give the document a name and click “Save”

The document will be saved directly to your Teams space.

Did you know … there are ways to split data in Excel?

Applications can generate data in formats that aren’t quite useful – glomming multiple fields together to make something unusable. And asking people to type information can yield inconsistent results – is my name Lisa Rushworth, Lisa J Rushworth, or just Lisa? Excel has several functions that allow you to produce consistent, usable data (without copy/pasting or deleting things!)

Flash Fill

Flash Fill will try to figure it out for you. Add an empty column (or more) and manually type one or two values. On the “Data” ribbon bar, select “Flash Fill” and Excel will use the data you’ve entered into the row to figure out what should go in the rest of the row.

The guesses aren’t 100% accurate – especially if your information is not consistent – but it’s a lot easier to delete the handful of things that are obviously not zip codes …

Than to work out a formula that extracts the same information

Text to columns

Text to columns uses the fixed-length file and delimited file import wizard on a column of data – essentially treating that column as a file to be imported. In this example, a DateTime value is provided in a way that Excel only sees it as a string. And, frankly, I am not interested on the exact hundredth of a second the event occurred. What I really want to do is group these creation dates by day, so all I need is the date component.

If you want to retain all the data, you’ll need to insert empty columns to the right – otherwise the data being split out can overwrite existing data. In my case, I only want to keep one of the new columns.

Highlight the column that holds your data. On the “Data” ribbon, select “Text to columns”

Select if the column should be split based on a fixed width definition or a delimiter and click ‘Next’

Indicate the proper delimiter – in this case, I need to use ‘Other’ and enter the letter T. A preview of the split data will appear below – make sure it looks reasonable. Click “Next”.

For each new row, you can specify a data type. Or leave the type set to “General” and Excel will try to figure it out.

If you do not need to retain the data, select “Do not import this column (skip)”. Click “Finish” to split your column.

Voilà – I’ve got a usable date value.

Notice, though, I have lost my original data. If you want to retain the original data, create a copy of the column. In this example, I want to know how many e-mail addresses use each domain, but I want to have the e-mail addresses in a recognizable and usable format too.

Text to columns will still replace the values from the selected column. But the copy will contain the original text.

You can even use Text to columns to sort out odd data that doesn’t actually get split into multiple columns. In this example, negative values have the minus sign after the number … which isn’t actually a negative number and isn’t usable in calculations.

Pick a delimiter that doesn’t appear in your data, and you’ll only have one column. When selecting the data format, click “Advanced”

Make sure the “Trailing minus for negative numbers” checkbox is checked and click OK.

And we’ve got negative numbers

Right, Left, Mid, and Search Functions:

You can also use the Search function in conjunction with Right, Left, and Mid to extract components of column data. In this example, we have first and last names. Since there are a few middle initials in there, we cannot just split on the space character.

These formulae aren’t perfect – Mary Ann will have ‘Mary’ as a first name – but

Working out where to start the text extraction and the number of characters to extract can get complex. I’ll usually include the Substitute function to simplify things a little – the zip code, in this case, is whatever is left over after we find the city and state.

Producing columns with the city, state, and zip code from the ‘Location’ column.

Using LDP To Browse Active Directory

One of the RSAT tools, ldp.exe, can be quite useful if you are trying to interact with Active Directory via LDAP but don’t know anything about the domain.

From “Connection”, chose “Connect”. Most domain controllers have A records registered for the domain name, so you can connect to the domain name.

Active Directory generally prohibits anonymous read, so you’ll need to bind to the directory. From “Connection”, chose “Bind”. If your computer is logged into the domain, you can select “Bind as currently logged on user”. If not, select “Bind with credentials” — in addition to the fully qualified DN of an account, AD allows you to bind with both userPrincipalName and sAMAccountName. userPrincipalName is userid@<domain.name> and sAMAccountName is domain\userid.

Now that you’ve logged into the domain, you can select “View” and “Tree”. If you leave the BaseDN blank, LDP will find the root of the directory partition.


Voila, you’ll see your domain. You can click around, or right-click the root of the domain and select “Search”. Look for something generic like “(&(objectClass=person))” to find user accounts. You’ll be able to see what attributes are used for what data.

Additionally, at the top of the window, you’ll see the hostname of the domain controller you are using and the root base DN for the domain.

Did you know … you can lock “Format Painter” on?

How many times have you clicked a second time expecting to “paint” your format only to realize the format painter is a one-click deal-e-o. Well, it’s not — you just have to know the trick to ‘locking’ it on. Double click the format painter button — now you can paint as many things with the format as you like.