What did you build last week?

%3CLINGO-SUB%20id%3D%22lingo-sub-2142431%22%20slang%3D%22en-US%22%3EWhat%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2142431%22%20slang%3D%22en-US%22%3E%3CP%3EI%20am%20super%20curious!%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWhat%20did%20you%20build%20last%20week%20in%20Microsoft%20365%3F%26nbsp%3B%20Which%20problem%20did%20you%20solve%3F%20Where%20did%20you%20get%20stuck%3F%20What%20did%20you%20use%3F%20Want%20to%20share%20something%3F%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EPlease%20reply%20below!%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jon-tyson-hhq1Lxtuwd8-unsplash.jpg%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F255475iFAFBF65805B72539%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jon-tyson-hhq1Lxtuwd8-unsplash.jpg%22%20alt%3D%22jon-tyson-hhq1Lxtuwd8-unsplash.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143157%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143157%22%20slang%3D%22en-US%22%3EI%20needed%20something%20to%20move%20a%20lot%20of%20emails%20from%20one%20folder%20to%20another.%20Started%20from%20building%20a%20flow.%20Ended%20up%20using%20CLI%20for%20Microsoft%20365%208)%3C%2Fimg%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143203%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143203%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F853365%22%20target%3D%22_blank%22%3E%40waldek%3C%2FA%3E%26nbsp%3Bsweet!%20So%20CLI%20is%20also%20a%20tool%20for%20individual%20productivity%3F%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143274%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143274%22%20slang%3D%22en-US%22%3ETotally!%20We%20have%20several%20commands%20that%20focus%20on%20things%20that%20are%20relevant%20to%20end-users%2C%20like%20creating%20tasks%2C%20moving%20emails%2C%20etc.%20If%20you%20need%20to%20do%20more%20than%20one%20of%20something%2C%20CLI%20is%20a%20great%20time-saver!%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143678%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143678%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F89985%22%20target%3D%22_blank%22%3E%40Luise%20Freese%3C%2FA%3E%26nbsp%3BFun%20with%20Power%20Apps%20and%20flows.%26nbsp%3B%20Using%20those%20two%20tools%20along%20with%20a%20set%20of%20SharePoint%20lists%2C%20you%20can%20really%20build%20complex%2C%20valuable%20solutions.%20(I%20know%20-%20some%20people%20say%20we%20should%20use%20Dataverse%2C%20but%20that's%20not%20realistic%20in%20many%20organizations).%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143700%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143700%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F83%22%20target%3D%22_blank%22%3E%40Marc%20Anderson%3C%2FA%3E%26nbsp%3Bas%20always%2C%20it%20depends.%20There%20are%20use%20cases%20for%20SharePoint%2C%20Dataverse%20and%20SQL%2C%20even%20for%20Excel.%20From%20a%20licensing%20perspective%2C%20Dataverse%20for%20Teams%20solves%20a%20lot%2C%20as%20its%20seeded%20in%20Microsoft%20365%20licenses.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThis%20is%20a%20nice%20post%20on%20how%20the%20decision%20on%20your%20backend%20impacts%20the%20performance%20of%20your%20app%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fpowerapps.microsoft.com%2Fen-us%2Fblog%2Fconsiderations-for-optimized-performance-in-power-apps%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EConsiderations%20for%20optimized%20performance%20in%20Power%20Apps%20%7C%20Microsoft%20Power%20Apps%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143719%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143719%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F89985%22%20target%3D%22_blank%22%3E%40Luise%20Freese%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI've%20been%20trying%20and%20failing%20with%20my%20team%20to%20figure%20out%20getting%20custom%20connectors%20into%20SPFx%20web%20parts%2C%20so%20I%20at%20least%20made%20some%20progress%20-%20whether%20it's%20down%20the%20right%20path%2C%20I%20do%20not%20know.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIn%20terms%20of%20actual%20success%2C%20thanks%20to%20the%20Power%20BI%20community%2C%20I%20figured%20out%20with%20an%20Exchange%20data%20connection%20how%20to%20map%20the%20duration%20of%20categorized%20meetings%20into%20a%20growth%20visualization%2C%20comparing%20month%20to%20month%2C%20after%20many%20weeks%20of%20trial%20and%20error!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143729%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143729%22%20slang%3D%22en-US%22%3ECool!%20Are%20the%20connectors%20that%20you%E2%80%99re%20working%20with%20in%20SPFx%20APIs%20that%20you%E2%80%99d%20like%20to%20use%3F%20Anything%20specific%20that%20you%E2%80%99re%20blocked%20with%3F%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2143779%22%20slang%3D%22en-US%22%3ERe%3A%20What%20did%20you%20build%20last%20week%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2143779%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F853365%22%20target%3D%22_blank%22%3E%40waldek%3C%2FA%3E%26nbsp%3BThe%20use%20case%20is%20building%20a%20dashboard%20with%20various%20SPFx%20web%20apps%20(maybe%20a%20pre-built%20grid%20like%20Kendo%20offers)%20connected%20to%20the%20client's%20various%20services%20-%20some%20more%20custom%2C%20and%20some%20more%20common%20like%20Confluence.%26nbsp%3B%20We%20have%20been%20trying%20to%20build%20custom%20connectors%20through%20PowerApps%20with%20schema%20defined%20with%20some%20guidance%20from%20the%20glorious%20SharePoint%20Cowboy%2C%20who%20said%20they%20looked%20right.%26nbsp%3B%20We%20aren't%20sure%20about%20authentication%2C%20because%20most%20of%20them%20aren't%20going%20to%20support%20OAuth%202.0%2C%20which%20the%20tutorials%20we%20are%20finding%20mostly%20involve%20authenticating%20through%20Azure%20and%20OAuth.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAs%20the%20JUNIOR%20junior%20working%20on%20the%20SPFx%20side%2C%20I'm%20trying%20to%20figure%20out%20what%20I'm%20pulling%20in%20since%20we%20don't%20have%20it%20all%20cemented%20on%20the%20connector%20side%2C%20and%20how%20to%20specifically%20map%20the%20schema%20to%20one%20of%20those%20pre-built%20grid%20view%20lists.%26nbsp%3B%20It%20seems%20like%20on%20some%20of%20the%20examples%20I%20was%20looking%20at%2C%20the%20data%20keeps%20pulling%20from%20a%20json%20file%20that's%20built%20into%20the%20web%20part%2C%20and%20I%20can't%20figure%20out%20how%20that%20would%20be%20updated%20live%20data.%3C%2FP%3E%3C%2FLINGO-BODY%3E
MVP

I am super curious!

 

What did you build last week in Microsoft 365?  Which problem did you solve? Where did you get stuck? What did you use? Want to share something? 

 

Please reply below- don't be shy =)jon-tyson-hhq1Lxtuwd8-unsplash.jpg

16 Replies
I needed something to move a lot of emails from one folder to another. Started from building a flow. Ended up using CLI for Microsoft 365 8)

@waldek sweet! So CLI is also a tool for individual productivity? 

Totally! We have several commands that focus on things that are relevant to end-users, like creating tasks, moving emails, etc. If you need to do more than one of something, CLI is a great time-saver!

@Luise Freese Fun with Power Apps and flows.  Using those two tools along with a set of SharePoint lists, you can really build complex, valuable solutions. (I know - some people say we should use Dataverse, but that's not realistic in many organizations).

@Marc Anderson as always, it depends. There are use cases for SharePoint, Dataverse and SQL, even for Excel. From a licensing perspective, Dataverse for Teams solves a lot, as its seeded in Microsoft 365 licenses. 

 

This is a nice post on how the decision on your backend impacts the performance of your app: Considerations for optimized performance in Power Apps | Microsoft Power Apps

 

 

@Luise Freese 

 

I've been trying and failing with my team to figure out getting custom connectors into SPFx web parts, so I at least made some progress - whether it's down the right path, I do not know.

 

In terms of actual success, thanks to the Power BI community, I figured out with an Exchange data connection how to map the duration of categorized meetings into a growth visualization, comparing month to month, after many weeks of trial and error!

Cool! Are the connectors that you’re working with in SPFx APIs that you’d like to use? Anything specific that you’re blocked with?

@waldek The use case is building a dashboard with various SPFx web apps (maybe a pre-built grid like Kendo offers) connected to the client's various services - some more custom, and some more common like Confluence.  We have been trying to build custom connectors through PowerApps with schema defined with some guidance from the glorious SharePoint Cowboy, who said they looked right.  We aren't sure about authentication, because most of them aren't going to support OAuth 2.0, which the tutorials we are finding mostly involve authenticating through Azure and OAuth. 

 

As the JUNIOR junior working on the SPFx side, I'm trying to figure out what I'm pulling in since we don't have it all cemented on the connector side, and how to specifically map the schema to one of those pre-built grid view lists.  It seems like on some of the examples I was looking at, the data keeps pulling from a json file that's built into the web part, and I can't figure out how that would be updated live data.

Connectors make a lot of sense if you plan to consume these APIs in Power Apps or flows. In the context of SPFx though, they don't add any value, because to use them, you'd need to build an HTTP-triggered flow that would expose the data as an API, which you already have. Instead, it would be easier to connect SPFx web parts directly to your API.

You mentioned that these APIs don't support OAuth. If this is the case, then building a proxy-API secured with AAD, which you could call from SPFx and which would relay calls to the API could help you.

@Luise FreeseI created the V2 of a SharePoint team site, including a mini knowledge base management system with metadata and document preview windows on hover and a Yammer communities catalog built with Microsoft Lists. I had to edit a lot of JSON card layout, but the result is pretty satisfying :smile:

@Feder365 this sounds awesome! If you want to learn more about JSON, you can head over here: Introduction to JSON - Microsoft Tech Community 

I recently build a document preview (dynamically) like this: 

 

Create a dynamic preview for documents in SharePoint – M365 Princess - How did you approach this? 

@Luise FreeseRegarding to the document preview, the solution wasn't a list nor a SharePoint page with webparts. Starting with a document library, I created an image column and used src: @thumbnail in JSON code (knowledge source here). This is the result:

 

Anteprima.png

 

@waldek I really appreciate your input - would you have a good tutorial on getting the proxy-API secured by AAD?  Part of our problem we keep running into is that it seems like all of the walkthroughs we find are doing something fundamentally different than what we are trying to accomplish, and of course we are getting different recommendations depending on who we ask without actually getting any data pulled through.

I totally understand your struggle. Like with everything unfortunately, there are multiple ways of doing things and often their effectives depends on an obscure detail.

Before I send you out to research something else, that might or might not work, what authentication model does your API support? Does it work with an API key or an app token that you need to add to every request either via query string or a header?

@waldek I greatly appreciate it!  We are working with 3 main types of APIs in this solution - one of them uses API tokens, one of them (Atlassian) says it prefers HTTP Basic and supports OAuth, but I believe it's OAuth 1 (it's on-prem), and the third is wide open because we just built it and if it gets locked down, it will be however we choose.

 

Last night we started looking at Azure Functions as an option since we are reaching out to everyone we can for advice, and that was one recommendation to use to take in the APIs and feed them right to SPFx.

@LindsayTShelton when looking at Azure Functions, please check out Proxies. They could offer you a lightweight way to pass requests between SharePoint Framework and your existing APIs extending them with the necessary information like API keys, tokens, etc.

 

When it comes to securing Azure Functions, the easiest way is by using the Authentication and Authorization settings and secure your Function with Azure AD.

 

SharePoint Framework has a built-in support accessing APIs secured with Azure AD.

 

One thing that I haven't checked, if configured proxies are subject to authentication and authorization settings. If they are, and proxies are sufficient for you to relay requests, they would be a great and robus solution that doesn't request any custom code on the API side.