Friday, June 14, 2019

Plug-In outside producer in Stream Live Events

In a broadcast execution via Stream Live Events, the following roles are involved:
  • Organizer
  • Producer
  • Presenter
(source: Get started with Microsoft Teams Live Events). The person within the Organizer role schedules the live event, and requires the proper authorization in your tenant for that. But next the system design of Stream Live Events allows that for the production part you can delegate to outside your company infra. The plug-in interface for this is the unique RTMP(S) ingress endpoint address of the scheduled Live Event. This endpoint is accessible on the public internet. The producer can configure the encoder on the production / event location to stream as input of the Live Event for broadcasting within your Office 365 tenant. The ultimate production control remains with the authorized owner(s) of the Stream Live Event: to start the actual broadcasting once the received stream input is ok for sending to the audience, and stop the Live Event once the event / presenter is finished (and also when in unlikely case that the producer produces a live recording that is inappropriate or non-compliant with your business policy).

Wednesday, May 8, 2019

Opt-In Modern List Experience on Communication Site obstructs upgrade SPFx app via UI

An approach to upgrade a deployed 'App for SharePoint' is to open the site that contains the AppCatalog (either tenant, or site collection with own app catalog) in a browser, go to 'Site Contents', and double click the App. In the 'About' dialog it will then present the option to upgrade. When the site is in Modern List experience, this approach is hampered: also the 'Site Contents' view is then within Modern View; and the available options there for any App are limited to 'Monitor' and 'Remove'. Microsoft is aware of the issue, and for now advises to apply a workaround: in the Modern 'Site Contents' view, click in the lower-left corner on 'Return to classic SharePoint'. This results that on the fly the 'Site Contents' view is rendered in classic mode, and the approach to upgrade App are available for usage. However, it turns out this workaround is only available for Modern Team sites, but not for Modern Communication Sites. Direct cause is that Communication Sites by Microsoft Design do not have the 'Left Navigation' (see Modern SharePoint Sites navigation options). And by Microsoft Design flaw this lack of left navigation is propagated into application and listview pages, including 'Site Contents' (Communication Site - Left Navigation Missing in Lists / Libraries). This leaves as only workaround for Communication Site to support upgrade of (SPFx) Apps interactive through the SharePoint UI, is “Opt out of the Modern list and library experience” for that site; at least for the moment when you need to upgrade any of the (SPFx) Apps in the (site) app catalog.
Note that the non-UI approach of upgrade via PowerShell (Update-SPAppInstance)is not hampered by the Modern List Experience.

Tuesday, May 7, 2019

Beware: Co-Authoring in SharePoint stored Excel sheet conflicts with column-filtering

For the scenario that multiple persons must be enabled to simultaneous maintain their records in a shared data container, at first consideration the usage of Excel file stored in SharePoint Online appears a valid option. Thanks the Co-Authoring capability available in Excel Online and Excel Client. This setup may fit the usage scenario, unless the users want to make use of filtering in the Excel sheet to easily find the records one needs to maintain. The motivation that this breaks the scenario is that column-filtering is not limited to the operational view state within the clients, but is itself part of the saved state of the Excel file. This results that the filter applied by user A in his/her client context with the Excel file, via AutoSave almost immediately is propagated into the shared saved state of the Excel file, and next influences the application view state of user B that also has the sheet opened. This non-isolated behavior of applying a column filter kills the usability of the Excel viewing and editing in co-authoring mode. In case the data to manage is flat of structure, and without need for Excel macros, a better option is administer the data records in a SharePoint list, and educate the business to maintain their own records in that list in quick edit mode combined with column-filtering. Contrary to Excel editing, the full client context of working with a SharePoint list is isolated to only the list view; and not persistent in the data.
Note: this behavior is already requested for change on uservoice: Filtering Needs to Work in Co-Authoring. But apparent a difficult capability to deliver: the idea submission originates of 2017, the response by Microsoft development team is nearly 2 years later. However, that acknowledgement and moreover its recent date does give trust that Microsoft will now fix it in foreseeable time.

Friday, April 26, 2019

Weighing of customizing options for Questions & Feedback capability with Stream Live Events

In "Options considered for extending Stream Live Events with live chat/questions capability" I enumerated multiple options for enriching the Stream Live Events experience with Questions & Feedback capability. In below overview, I enlist pros and cons weighing of the diverse options.
OptionProsCons
Via Yammer
  • Existing / available IT building block within Office 365 suite;
  • Low-code solution: only a bit of JavaScript needed for correct visual embedding in the landings page;
  • Access can be limited to selected audience;
  • Live feed visible of questions, also the ones raised by others;
  • Possible to respond on questions / feedback of others;
  • Chat-like experience
  • Separated information container from the webcast;
  • Authorization to be done 2x (Stream and Yammer), with risk of inconsistency / out-sync
  • Not every webcast visitor is an active Yammer user;
  • On authorizing account to the Yammer channel, one receives a notification email; while the context is totally unclear, and the Yammer channel should not even be open for submitting questions & feedback;
  • Questions and Feedback of others are visible to all;
  • Yammer channel remains afterwards, Need to remove all access to avoid unwanted visits after the webcast;
  • Not simple to capture / archive the questions & feedback
Via MS Forms + MS Flow + SharePoint Online List;
Forms embedded on page via MS Forms webpart
  • Existing / available IT building blocks within Office 365 suite;
  • Fully No-Code solution;
  • Access limited to the webcast authorized audience;
  • Included in same data container as webcast, sufficient to authorize once;
  • Access after live event can be removed via SharePoint permission handling;
  • No need for additional Yammer accounts / affinity;
  • Possible to add classification in the questions, eg from dropdown select a topic area. In the capture list, possible to group on the topics;
  • Easy to get a dump of the feedback, eg in Excel; and then decide whether to delete the list or simple make it inaccessible;
  • Modern look, responsive behavior
  • No live feed for webcast visitors on total of submitted questions / feedback;
  • Limited styling capability;
  • Placeholder per question is always “Enter your answer” / not possible to change that;
  • The usage experience after submit input is aimed at “survey scenario” (“your response was submitted”);
Variant of above:
Forms embedded on page via iframe construct
  • Same list as above;
  • and in addition it is possible to preserve the style heading and hide the message at bottom
  • Same list as above, with exception of message at bottom;
  • After submit input, out-of-context the submitter is confronted with ‘promotional’ message that one can create your own form / survey. The user cannot relate this message.
SharePoint List + default / classic NewForm
  • Existing / available IT building block;
  • Fully No-Code solution;
  • Embedded NewForm can be embedded without LeftNavigation + Header in ‘dialog-mode’ (put “&IsDlg=1” on URL);
  • Access limited to the webcast authorized audience;
  • Included in same data container as webcast, sufficient to authorize once;
  • Access after live event can be removed via SharePoint permission handling;
  • No need for additional Yammer accounts / affinity;
  • Possible to add classification in the questions, eg from dropdown select a topic area. In the capture list, possible to group on the topics;
  • Easy to get a dump of the feedback, eg in Excel; and then decide whether to delete the list or simple make it inaccessible;
  • UI-look not optimized for user-experience of ‘Questions & Feedback’ capability;
    • Toolbar in top, including actions not relevant in this context
    • Cancel button in bottom; also irrelevant in this context
  • Width of NewForm is that large that it requires 2-column page layout ( 2:1 layout results in horizontal scrollbar); which results that the available screen estate for webcast is reduced, and that in the layout the webcast UI is not allowed more significance above the Questions & Feedback UI;
  • Customization of the default NewForm needed to only show the multiline ‘Question’ input field;
  • After submit of a new item, the iframe loads the list view iso returning to (empty) NewForm;
SharePoint List + customized NewForm via PowerApps
  • Existing / available IT building blocks within Office 365 suite;
  • Low-code solution: only a bit of JavaScript needed for correct visual embedding in the landings page;
  • Access limited to the webcast authorized audience;
  • Included in same data container as webcast, sufficient to authorize once;
  • Access after live event can be removed via SharePoint permission handling;
  • No need for additional Yammer accounts / affinity;
  • Possible to add classification in the questions, eg from dropdown select a topic area. In the capture list, possible to group on the topics;
  • Easy to get a dump of the feedback, eg in Excel; and then decide whether to delete the list or simple make it inaccessible;
  • Modern look, responsive behavior;
  • The canvas of PowerApps is positioned at the layout of Phone App, and cannot be reduced in height, even when the App itself does not need that height. Scrollbars can be avoided however by reserving the needed height in screen layout, “wasting” screen estate. In this context acceptable, as no other controls are included on the page and positioned below the Question & Feedback. However, the increased page height does result in unnecessary browser scrollbar on the right;
  • Embedded part shows toolbar in top, and not a submit button below the question/feedback input;
  • Embedded NewForm default shows the label ‘New item’;
  • After submit of a new item, the iframe loads the list view iso returning to (empty) NewForm
All of above drawbacks can be prevented, via a bit of custom code
Custom UI / control + SharePoint List
  • Access limited to the webcast authorized audience;
  • Included in same data container as webcast, sufficient to authorize once;
  • Access after live event can be removed via SharePoint permission handling;
  • No need for additional Yammer accounts / affinity;
  • Possible to add classification in the questions, eg from dropdown select a topic area. In the capture list, possible to group on the topics;
  • Easy to get a dump of the feedback, eg in Excel; and then decide whether to delete the list or simple make it inaccessible;
  • Modern look, responsive behavior;
  • Custom coded solution: Requires custom development, testing and deployment;
  • Deployment as control requires some additional preparation on SharePoint site (Site Collection App Catalog)
Standalone PowerApps + SharePoint List
  • Existing / available IT building blocks within Office 365 suite;
  • Low-code solution: PowerApps itself + embedding in SharePoint page;
  • No need for additional Yammer accounts / affinity;
  • Possible to add classification in the questions, eg from dropdown select a topic area. In the capture list, possible to group on the topics;
  • Easy to get a dump of the feedback, eg in Excel; and then decide whether to delete the list or simple make it inaccessible;
  • Modern look, responsive behavior;
  • PowerApp also available for Mobile
  • Separated information container from the webcast;
  • Authorization to be done 2x (Stream and PowerApps);
  • Webcast Questions & Feedback App is available on tenant level, not limited within the boundary / scope of the associated webcast event;
  • Webcast Questions & Feedback App on Mobile is separate from Stream Mobile App, user would have to switch between Apps to submit question/feedback;
Azure Bot
  • Proactive + automated responses on recurring questions and reported issues;
  • Self-learning knowledge base
  • Considerable design + development effort
  • Bots experience no natural fit for submitting questions and feedback

Sunday, April 7, 2019

Options considered for extending Stream Live Events with live chat/questions capability

With the recent GA of Stream Live Events, Microsoft delivers a low-entry option to easily setup company-internal webcasts. All you need in addition are on the webcast producing side: 1) recording equipment - camera + audio, and 2) an encoder solution to transmit the recording inputs into the Live Events endpoint. The camera + audio options vary from the onboard webcam + microphone of a laptop, USB-based externals, upto high-end studio-quality equipment. For Stream Live Events handling the sophistication on the producing input side does not make a difference, the inputted RTMP(S) signal is from input endpoint processed the same. Whether an organization also needs some additionals on the consumption side depends on the audience side plus the internal network capacity. Watching a Live Event instantiates an individual / unicast stream per event viewer. Under assumption that the company network is sufficient scaled for nowaday cloud solutions usage, it is feasile to simultanuous watch a 'LIVE' Stream event per network location upto a maximum of few hundreds. In case of bigger audience, Microsoft states that it is needed to reduce the network load via a video distribution approach through a SDN/eSDN solution.
In its first released version, Stream Live Events capabilities are focussed on the core streaming + playing aspects. Business demands on a webcast typical go beyond that. The biggest additional demand is for interaction between the webcast audience and the presenter. Thus a chat window in which individual attendees can submit their questions, and that the presenter can follow + respond on. It is on the roadmap of Stream Live Events to deliver this (note: Stream recent delivered 'quizzes/ polls' capability, but this is targetted at inserting in already recorded videos for a.o. training purposes; not for dynamic interaction with live streaming), but not out-of-the-box delivered nowadays. However, with Office 365 as underlying platform you have as event developer a feature-rich toolbox at hand in which you can deliver yourself a webcast experience in which viewers have the live stream and chatbox combined, via no-code or low-code approaches. The hosting platform of such landingspage is naturally SharePoint Online....; as every created Stream Group is effectively an Office 365 Group, it has an own SharePoint Modern Team Site provisioned. The persons authorized to this site is the same audience that are permitted to join the scheduled Live Event. Create in this site a new page to function as the webcast entrance, and select the '2:1 columns' layout. In the left column embed the Stream Live Event instance - one gets this from Stream via 'Share' and then pick the 'Embed' option. With this setup, all left is to extend with chatbox / questions input control. There you have multiple options. One is to utilize the rich capabilities of Yammer, and embed a Yammer channel on the page. This gives you immediate a 'chat-like' experience, in which one can enter questions, semi-live follow the inputs / chats of others, respond on inputs of others. This immediate visibility of all the responses of ones peers may be unwanted, e.g. due potential sensitivity. In that case an alternative setup is to capture the inputs in a SharePoint list in the site, and only grant the webcast facilitators the authorization to view all received inputs. The webcast attendees submit their questions and feedback via an input form embedded on the SharePoint page. For this on sublevel again multiple alternatives are available. You can embed the out-of-the-box NewForm of the list; customize the NewForm via PowerApps; a MS Forms instance that via MS Flow sends the input to SharePoint List; or build a custom control via SPFx or even as a chatbot via Azure Bot Service. Of these options all except for the latter 2 are no/low-code 'mash-up' compositions, that deliver on the needed job. The decision-weighing between them is mostly on the user-experience and branding, see screen impressions of the various options.

Saturday, March 23, 2019

Beware: the omnipresent of Office 365 Groups complicates Information Architecture

Pre Office 365, setting up your information architecture was so much simpler (to understand)...

So your organization has implemented Office 365 as office productivity suite, which provides to you the richness in its various services / tools to employ. Say as a business department I need:
  • A place to store documents ➔ create in SharePoint Online a Modern Site
  • A place to work and chat together ➔ create a MS Teams instance
  • A place to plan work ➔ create a plan in MS Planner
  • A place to store and expose department videos ➔ create in MS Stream a Stream Group
  • A shared mailbox ➔ create via Outlook an Office 365 Group
However, one of the result of these 5 create actions in different Office 365 Services is that you do not have one (1) SharePoint site to your exposure, but actually five (5)!
And all of these 5 Modern Sites are created alike: same structure in the site, layout; all a standard provisioned Modern Site
And also in Azure AD the same multiplication effect is visible, noticable as an Azure AD Group (actually: Office 365 Groups):
Lesson: you need to think upfront on your Information Architecture, and then setup your utilization of the Office 365 services that it matches. Beware that this governance is hard to achieve, as all the creation in Office 365 is via self-service made so easy...

Thursday, March 14, 2019

Beware: User Information List (UIL) acts as memory for PeoplePicker when need to renew Azure AD B2B guest account for changed email

In Azure AD B2B, guest accounts are provisioned and redeemed with as their unique external account identifier, the own external email address of the invited guests. In rare situation that the external email changes, the guest account situation needs to be synchronized with this external identity change. However, as the email address is the primary identifier, it is not possible to change this as attribute in the existing Azure AD guest account. One needs to create in the Azure AD of the inviting company a new guest account based on the new / modified external email address, and potentially can also delete the no longer valid old guest account. On the SharePoint Online side, in each site collection in which the guest needs access, the access must also be repeated for the new guest account. Something to be aware of in such situation is the relationship between SharePoint PeoplePicker and the hidden User Information List (UIL) in site collection. The PeoplePicker uses UIL as one of its entrances to try to resolve user information for looked-up user name. As of SharePoint 2013, whenever an account on individual basis is granted access to a SharePoint site collection, immediate an entry for that account is administrated in the UIL (in SharePoint 2010 and before, the addition in UIL was delayed until first access by the authorized account). The effect in the use case where guest account is renewed by deleting from and creating new, is that the PeoplePicker default will still resolve to the user entry in UIL that was created there when earlier the guest was authorized on the previous guest account. Resulting in an inconsistent situation: the guest is assigned a new Azure AD guest account, the former might even be deleted in Azure AD, but in SharePoint Online via UIL as memory the previous account is selected by PeoplePicker upon granting access. Effect is that the guest can successful logon with the renewed guest account against the Azure AD of inviting company, but in the next step this authenticated guest account is not granted access in the SharePoint Online site: "You need permission to access this site". The way to resolve this is to go as Site Collection Administrator (SCA) into the UIL through <site-url>/_layouts/15/people.aspx?MembershipGroupId=0 , select the entry that refers to the previous guest account, and in the 'Actions' menu select "Delete users from Site Collection". After this corrective management action, the PeoplePicker on looking up the guest (by name or email) will no longer find the stale entry in the UIL, and create a new one that corresponds correct with the renewed guest account. And the invited Azure AD guest is enabled to successful access the site via modified email address as his/her 'bring-your-own-identity'.