Veni, Vidi, Vici

Veni, Vidi, Vici


MUSINGS AND SOLUTIONS FOR MICROSOFT 365 AND AZURE

Greetings from New Hampshire, Where I’m Co-Authoring a Document

20170203_1.png Preview Image
As Marc said in his post on this experience, which of course he published before me, he and I needed to do some work on a Word document together today. We started by emailing, but almost immediately realized we should just share it on our OneDrive. I was in browser at the time, but have since continued to co-author it in Word on my desktop. I’m not going to lie, I’ve had problems with the co-authoring experience in the past, but was keeping an open mind since Marc and I recently “upgraded” (not sure that’s the right word) to the “First Release for Current Channel (Office Insider Slow)” version of Office 2016. I’m having challenges with authentication since that happened but otherwise I’m liking some of the new features. Anyway, cutting to the chase I wanted to add some more insight to Marc’s post regarding some differences I saw when using the desktop version of Word in this co-authoring experience. [Continue Reading]

Getting Results: Extending SharePoint with ADAL and the Microsoft Graph API - Part 3

20170118_GraphExample.png Preview Image
Introduction In Part 1, I discussed the background and setup information you would need to successfully embark on a client site widget for SharePoint that accesses the Microsoft Graph API (MSGraphAPI). In Part 2, we went in depth to the various ways of utilizing the adal.js and adal-angular.js libraries for authentication. Now, here in Part 3 we’re going to get right into the nuts and bolts of a real solution that does the following: [Continue Reading]

ADAL authorization: Extending SharePoint with the Microsoft Graph – Part 2

20170118_ADALLibs.png Preview Image
Introduction In Part 1 of this series I covered all the setup needed to start your Microsoft Graph API (MSGraphAPI) client side widget. In Part 2, we’re going to dive into the many ways to use adal.js and its counterpart adal-angular.js. I’ve included the same resources I included in Part 1, under the section for ADAL you’ll find a lot of references to Cloud Identity blog by Vittorio Bertocci who has blogged extensively on the library, explaining in depth the technical workings of it. I encourage you to read those posts I’ve included below to get a complete understanding of the library. Also, included in the references is a post about utilizing ADAL in the SharePoint Framework (SPFx). As is, ADAL was never meant to be used as part of a widget architecture as ADAL isn’t a singleton, so if you have multiple web parts on your page all referencing ADAL you’re going to have issues. The post Call the MSGraphAPI using OAuth from your web part (no longer available) gives you an extension that will help isolate ADAL so that you can utilize it as part of a more strongly developed widget pattern. Since my demo is just that, and since my solution will be the only one running on the page that uses the ADAL library I’m not going to address those modifications here. But, I encourage you do so if that is part of your use case. [Continue Reading]

Getting Started: Extending SharePoint with ADAL and the Microsoft Graph API – Part 1

20170209_AppProperties.png Preview Image
When Marc and I were at Ignite this past September, #SharePoint was the most tweeted hashtag. We heard a lot about the new SharePoint Framework (SPFx), which was clearly the focus for developers. But another oft-discussed technology topic centered on the expansion of the Microsoft Graph API (MSGraphAPI). It’s clearly going to be the API of choice going forward to access all Office 365 content, but its maturity is still early days. At Ignite, Microsoft announced the beta endpoints for accessing SharePoint through the Microsoft Graph API. Overall I think this is a good thing, as the API has significantly better adherence to the OData standard compared to the SharePoint REST services. That said, as users of the SharePoint REST services we’re very used to the simplicity of those calls and we literally pay no attention to authentication if we’re operating on SharePoint pages. The tokens we need are already made available right on the page, we just pluck them out, and so there’s little effort. [Continue Reading]

Use REST to create SharePoint Document Set (and set metadata)

A quick post today to augment what’s out there in the “Googleverse”. I needed to create a Document Set in client side code, and went out to find the appropriate calls to make that happen. To update the metadata on the folder you create (which is all a Document Set really is under the covers), you simply make an “almost” normal list item update call. So the following is the various “functions” you need and how to string them together to do this task. As you read through, I’ll point out in the code where other older posts on this topic steer you wrong. [Continue Reading]

Special Characters in REST ListItem Metadata

heximage.jpg Preview Image
I’m constantly trying to remember which way to encode content when making calls to the server while developing client side solutions for SharePoint. Usually it’s some form of JavaScript’s encodeURI()/encodeURIComponent() functions… but this latest one gave me a bit of trouble until I finally figured it out which encoding to use and, almost as important, when to apply it. When making RESTful calls to update or create data in a SharePoint list you must include the “__metadata” (two underscores followed by ‘metadata’) property in the information object you send on the data property of the call. If you have a list with the internal name “Clients” and your data property object is called “item” then you would do something like the following: [Continue Reading]

Code Creep: SharePoint "CDN" with Document Libraries

MajorVersion_User.png Preview Image
Centralizing your SharePoint client side code “Code Creep”… no it’s not the latest thriller movie out of Hollywood, although it probably could be. I’m referring to the sprawl of client side code files that are stored when implementing client side web parts or “widgets” in SharePoint. A common solution for implementing “widgets” in SharePoint is to store the files in a document library, linking to them with a CEWP that will then run and render your “widget”. This is an effective way to implement customization when you don’t have administrator access, or you’re running in SharePoint online, or you just prefer the flexibility of a client side development paradigm; as some of my colleagues in the SharePoint community like to say, “It isn’t code, it’s content.” However, depending on the complexities of your environment and your development staff, this kind of end run can cause maintenance issues at best, horror stories at worst. There are many ways to solve the code creep problem, from simple to incredibly complicated, and of course, as with everything there is no one-size-fits-all answer. Some guidance from my perspective centers on where your code will be implemented and how big your farm/tenant(s) are. I’ve created a matrix below that outlines my thoughts on the subject. [Continue Reading]

Sympraxis Development Process

devprocess.png Preview Image
Marc and I discussed in our August Sympraxis Newsletter starting a blog series to share what we’re learning while implementing a SharePoint client side development process. So this is my first post on the topic, and here’s a link to his first post… it’s interesting to see how different our perspectives on the process were. In all my previous experience I’ve either been in a team or in a regulated industry or both. All of these scenarios dictate that you have at least some process in place and in the case of the regulated pharma industry, rigorous processes in place. [Continue Reading]

The man with the “bacon covered donut” could not be ignored

maplebacondonut.jpg Preview Image
I recently attended a multi-day event at the Microsoft campus in Redmond, WA. Early in the morning and blurry-eyed from battling the time change, I found my way into the event room to see Marc D. Anderson in an aisle seat plugging away at his computer with a mouthwatering bacon covered donut sitting daintily on a paper napkin at his elbow… that, my friends, is a conversation starter! Sometimes in life, things are just obvious really quickly. I had met Marc years ago through our mutual friend Sadie Van Buren but really didn’t get to know him very well, as is the case with many developer types, I’m way more comfortable talking to my computer than I am talking to people… and I do, sadly, literally talk to my computer as many of my current and former colleagues can attest to. [Continue Reading]

Enter key gone bad

This morning I had an issue trying to implement a Phone Directory on a client’s home page. The UI incorporated a First Name and a Last Name input box and a “Go” button. But as we all know, users like to hit Enter, and we all want to try and support the best user experiences we can. However, SharePoint’s default implementation of the Enter key can sometimes put the page in edit mode… [Continue Reading]