While running some SharePoint Online -PowerShell commandlets, or connecting to a SharePoint Online site from your app, you get a following (or similar) error about your SharePoint Online credentials being unauthorized for something you should definitely be authorized to do:
Cannot contact web site'https://<tenant>-admin.sharepoint.com/'orthe web site does notsupport SharePoint Online credentials.The response status code is'Unauthorized'.
And that’s not all – by digging into the full error message, you find the underlying internal error:
Access denied.Before opening files inthislocation,you must first browse to the web site and select the option to login automatically.
However, when you open your browser, you can actually log in without a hitch. If that’s the case, this might be a weird internal error in SharePoint Online – doesn’t matter, there’s a hazy and weird, but simple fix! Continue reading
When trying to use some functionality, that relies on Unified Groups, you’re getting errors in the console, similar to this: “Unified Groups aren’t supported.” In truth, this most likely means, that Unified Groups (that’s the internal/technical name for Office 365 Groups) is not enabled for this particular user. That breaks a bunch of different features for them, since the Graph API for Groups of course won’t work. This post describes one way to fix this issue!
Using Azure Functions and Cognitive Services Text API to enrich a Flow that fills Metadata for new items in a Modern SharePoint Team Site. That’s, in a nutshell, the solution I submitted to a recent online hackathon. Quite a mouthful, isn’t it? The whole solution (and a public vote, if you’re interested!) is available here: https://devpost.com/software/resolving-managed-metadata-madness-in-sharepoint – this blog post will describe the solution and the reasoning behind it.
Some time ago my manager asked me to take a few weeks off, since I had accrued quite a lot of overtime during the hectic months working for Valo. I got bored quite quickly, so I was pretty happy to encounter an online hackathon organized by Devpost. I wasn’t aware of them beforehand, but they seemed to have hosted quite a few interesting hackathons before, so I thought I’d also take part into a hackathon they were just hosting: “Work smarter, not harder with Office 365.”
I’m not a huge fan of hackathons, but the topic was too good to miss, so I submitted a solution I’d been thinking about implementing, but didn’t have a good enough reason to implement it for customers.
Description of the issue
So, which issue am I aiming to solve? Let’s see…
The amount of data is surging (~90% of the data in the world has been created in the last 2 years)
To ensure that data in organizations is useful, you need to make sure, that your users find it easily!
A great “Enterprise-y” solution has been metadata tagging!
However, users generally hate doing that manually
Automatic solutions are either cumbersome to maintain, expensive to develop, or both
Many required metadata fields will cause users to migrate to shadow IT solutions (like DropBox) – or not use any collaboration solutions at all!
Fig. 1: Resolving Managed Metadata Madness in SharePoint – in one Flow!
Using Azure Functions and Cognitive Services Text API to enrich a Flow that fills Metadata for new items in a Modern SharePoint Team Site. Cool solution with fun new tools!
We’ll be using Modern Team Sites in SharePoint for document storage. That enables effortless collaboration in the cloud!
SharePoint’s Search is decent, but thorough metadata tagging makes it a lot more useful.
Using Azure Cognitive Services we can fill the metadata fields automatically – without any user interaction at all!
Users can find the content, and hence will be happy! 🙂
So essentially, what happens is, that this Flow automates metadata tagging for SharePoint Online. Like in the graph (Fig. 1), these are roughly the steps:
User uploads a document
This fires a Flow attached to Document Library
The Flow will call the Azure Function that’ll do the heavy lifting
An Azure Function will run, extract text, and analyze it using Azure Cognitive Services
The Azure Function will then write the info back to SharePoint Online
Finally, notifies admin of the execution and the creator of the file.
Localization and targeting of content in multilingual SharePoint installations is always an issue. SharePoint offers a multitude of ways profile content based on user language (or other properties), but none of the solutions are fool proof. This post describes how to fetch only localized results from SharePoint Search index, which solves at least some of the issues.
SharePoint Search index can be used in quite a few different ways. Probably the most typical way is by searching on SharePoint, or using webparts like Content Search or Content Results. However, one can also build custom functionality, custom client-side liftups, webjobs, single-page applications, mobile applications and a ton of other things that fetch data from SharePoint search index. However, on multilingual tenants, results are, by default, not localized at all. That means, that typically everyone will get the highest-ranking results back, despite them being in the wrong language. And that’s one of the many, many ways to annoy your users!
Office 365 Planner is a neat tool for task management. However, when you, for whatever use case, need to form urls that point you towards a single task (or a bucket, or a plan for that matter), you might run into trouble with how the url is formed. Custom domains actually make it a bit complicated, but luckily there’s a workaround!
Description of the issue
If you have multiple domains in your Azure AD, your Planner might end up using your custom domain in its urls. However, if you need to develop some multi-tenant code, that works with any tenant and whatever weird custom domains, you’d have to actually either create another user-supplied property (for the custom domain), or develop some creative extra code to fetch the domains from somewhere… Since the Graph API for Planner certainly does NOT return that!
No worries – you don’t actually need to develop any complicated or smart code. It’s actually WAY easier than that! Continue reading