Quantcast
Channel: Cameron Dwyer – Cameron Dwyer | Office 365, SharePoint, Outlook, OnePlace Solutions
Viewing all 114 articles
Browse latest View live

Issues launching Outlook add-ins directly to a SPA route using fragment URLs

$
0
0

Modern Single Page Applications (SPAs) run in the browser as a single HTML page and use JavaScript to dynamically load content and provide the functionality of the application without having to reload the entire browser window as the user is interacting with the application. To support navigating SPAs, a commonly used technique is to perform navigation (or routing as it is called in the Angular world) based on URL fragments.

The basic premise of how this works is that the URL that you see in the browser window always refers to the same HTML page hosting your SPA e.g. http://myserver/spa-app/index.html

As the user navigates around the application this is done using URL fragments (the bit after the #) e.g. http://myserver/spa-app/index.html#configurationpage or http://myserver/spa-app/index.html#customerspage

This allows the browser to not go back to the server to request a page refresh (because we are always on the same page http://myserver/spa-app/index.html) but the SPA can react to the change of URL by reading the Fragment of the URL and route the user to the correct area of the app. The browser history also keeps track of the Fragment URL so this can provide a nice navigation experience.

That was a very basic explanation and I suggest reading this good primer on Fragment URLs (or hashbangs as they are sometimes referred).

So this leads us to Outlook add-ins and the problem I’ve encountered. Lets illustrate this with an example so that the use case becomes clear.

Imagine we have a simple SPA that shows a To Do list. The main screen of the app (http://myserver/spa-app/index.html) just shows the To Do list. There is also a second screen in the app for creating new To Do items(http://myserver/spa-app/index.html#newitem).

In the Outlook add-in manifest you provide a URL to your page that Outlook will load up in response to the user activating your app. The Microsoft preferred way of triggering this in Outlook is via Commands that appear as buttons in the Outlook Ribbon (in the desktop version of Outlook). If we create such a Ribbon button and specify the URL of the main screen of the app (http://myserver/spa-app/index.html) everything works just fine. Within the app itself, it can navigate off to http://myserver/spa-app/index.html#newitem to show the screen to create a new item. But what if we want to provide Outlook Ribbon buttons that streamline the process and let the user go straight to creating a new to do item rather than first having to open the app, then navigate within the app to create the item? Having the main functions of you app accessible as Ribbon buttons in Outlook is a huge time saver for users.

So what happens when we try to use the new item URL Fragment behind a Ribbon button?

If we specify a URL of http://myserver/spa-app/index.html#newitem in the add-in manifest, the following is the URL that Outlook actually launches the add-in with:

http://myserver/spa-app/index.html?et=&_host_Info=Outlook|Web|1…_1480636166782|ocii1|https://outlook.office.com/owa/?realm=XYZ.com#&_serializer_version=1newitem&_xdm_Info=-133b2041_-3d735892_1480636166782|ocii1|https://outlook.office.com/owa/?realm=XYZ.com

 

Obviously this is going to wreak havoc with your SPA. The original URL Fragment #newitem looks to be encoded in the resulting URL as “&_serializer_version=1newitem” although how to reliably detect and extract this and then do the correct routing within your SPA is challenging!



Bug in Outlook add-in commands showing command label instead of the add-in title on first use in a session

$
0
0

It seems there is a bug with the Outlook add-in commands when using the add-in from Outlook Web Access.

When using the add-in command (ribbon button) to open a task pane to show your add-in the label of the command button is shown at the top of the add-in where the add-in title should be. If you close the add-in and use the command button subsequent times in a session, then the add-ins title is correctly displayed.

Refreshing the browser window and again trying to use the add-in with show the command button label again (but just the first time the add-in is used).

I have been able to reproduce this issue with the Command Demo add-in from the Office Dev site:

1. Clone from GitHub https://github.com/jasonjoh/command-demo

2. Run locally using gulp serve-static (as per instructions in the GitHub repo)

3. Deploy the add-in manifest (as per instructions in the GitHub repo)

On first use of the add-in in a session (or after refreshing the browser window) the add-in title uses the label of the command button. In the case below the button label of “Display all properties” is shown.

image

If you close the add-in and then click on the same command button subsequent times then the correct add-in title of “Add-in Command Demo” is displayed.

image

This bug only seems to affect OWA, Desktop Outlook 2016 consistently displays the correct add-in title as shown below.

image

It would also be nice if the header we displayed in Desktop Outlook was consistent with OWA. As you can see from the screenshots above OWA shows the add-in icon in the header whereas Desktop Outlook just has the title without an icon.

I’ve logged this bug on UserVoice, if it’s causing pain for you please vote it up!


Vote for our app in the Office 365 Hack Productivity competition!

$
0
0

image

 

Microsoft is currently running a Hack Productivity competition for creating apps that leverage Office 365 Add-ins and/or APIs to deliver an app that increases user productivity.

I’ve been working with the awesome dev team at OnePlace Solutions to cook up a modern Outlook Add-in that will run on any device and allow a user to quickly and easily save email and/or attachments from Outlook to SharePoint/Office 365 Groups.

We think it’s an awesome productivity app as it makes use of the “dead-time” you get during the day when you haven’t got time to do any heavy work but have your phone or tablet handy. This allows you to do those tasks like filing emails into your Project Management System in SharePoint while catching the train to work, or saving that updated document you’ve been sent into your Legal Matter Management System in SharePoint while waiting for your doctor’s appointment.

We are using all the cool technologies to make the magic happen. Running as a super fast Angular 2 Outlook Add-in and looking very slick thanks to the Office UI Fabric! We are utilizing the Microsoft Graph, SharePoint and Exchange services of Office 365 and hosting the app 100% on Microsoft’s Azure Cloud.

We didn’t just cobble together an app for the Hackathon, we built this app to be ready for the prime time and it will become a commercial product offering in the very near future. We have released the app into the Office Store as a preview where you can take a look at what we’ve built and try it out for yourself.

Please take a look and vote for our submission to the Hackathon

Get the OnePlaceMail for SharePoint Online preview app from the Office Store today.

 

OnePlaceMail for SharePoint Online – screenshot 1OnePlaceMail for SharePoint Online – screenshot 2OnePlaceMail for SharePoint Online – screenshot 3

 

Learn more about the app by visiting the OnePlace Solutions website

http://www.oneplacesolutions.com/oneplacemail-for-office365-sharepoint-online.html

image


Beware the Office.js Dialog API falling silent under IE11

$
0
0

Issue Description

I’ve been leveraging the Office.js Dialog API recently and found a scenario where I just couldn’t get it to behave properly. At the moment this appears to be either a bug or limitation of the Dialog API. I found that the calling MessageParent() from the dialog fails to trigger the registered callback method in the host add-in when running in IE11 (on both Win 7 and Win 8.1)

Following are the steps to reproduce the issue with the Dialog API under IE11 where the messageParent() method fails to trigger the corresponding event back in the host add-in.

 

Steps to Reproduce

To reproduce the issue I’ve taken the Dialog API example from dev.office.com and hosted in Azure.

https://github.com/OfficeDev/Office-Add-in-Dialog-API-Simple-Example

Then I updated the manifest to point to the location where I hosted it, and then tried to use it in the different environments (I made no code changes to the example).

For these repo steps I just opened Word Online in IE11 and side loaded the manifest. The issue also exists using Office Desktop on a machine with IE11 installed (but not Edge) as Office will then be trying to use IE11 and you get a similar issue.

On Windows 10 in Chrome or Edge (works as expected)

clip_image002

clip_image004

On IE11 on WIn 7 & Win 8.1 Fails to Communicate back to Parent Add-in

Now if I use the same manifest and try it from Win 8.1 IE11 the pop up dialog fails to send the message back to the parent add-in when you press a button.

clip_image006

If you close the dialog, the dialog close event method does get triggered back in the parent add-in (this is the same behaviour that we observed when developing our add-in).

clip_image007

clip_image008

I am aware of the documented issue of the Dialog API not working in mixed zones under IE (especially with difference in protected mode between the host page and the add-in/dialog URLs).

In the scenario above the host (Word Online) page is in the Internet Zone with Protected Mode off

clip_image009

And the add-in is also running in the Internet Zone with Protected Mode off

clip_image010


How to clear the Microsoft Outlook for Mac web browser cache and cookies

$
0
0

imageWhen working with Outlook for Mac the content of email messages are rendered in a web browser control that is specific to Outlook (it does not use Safari). So when you have a need to clear any cached data or cookies it is far from obvious how you should go about clearing this cache. I’m a newbie to Mac so maybe this is obvious to seasoned users! Here’s how I went about it.

  • Start the Finder application
  • Open the Go menu
  • You need to get to the hidden Library folder. To get the Library folder to show up under the go menu, hold down the option button on your keyboard
  • Now open the Library folder

image

  • Find the Containers folder under Library and expand it

image

  • You should be able to find a folder called com.Microsoft.OsfWebHost

image

 

  • To clear out the web browser cache I move the following to the trash:
    • com.Microsoft.OsfWebHost/Library/Caches/com.Microsoft.OsfWebHost (folder)
    • com.Microsoft.OsfWebHost/Library/Caches/Cookies/Cookies.binarycookies (file)

image

 

Restart Outlook and you should now have no cached files being used.


How to export multiple pages from OneNote to a single Word document

$
0
0

I needed to find a way to export a number of pages from a OneNote notebook into Word documents. The technique I used and will step through in this post was to:

  • Create a new OneNote section (temporarily in needed) to arrange the pages I wanted to export (one section per Word document I wanted)
  • Export the entire section into a Word (*.docx) file
  • Automatically fix up image sizing issues with a custom macro

image

Right-click on the section tab and select Export…

image

Change the export file type to be a Word document (*.docx)

image

This will export all pages from the OneNote section and append them all into one Word document. This is a pretty good result except for the pictures. In many cases the pictures are wider than the page width and look half missing.

image

The solution to quickly and easily address the image width problem in bulk is to create a Word macro to resize all images in a Word document that are too wide to fit on the page.

Here’s how we create the Word macro (this is in Outlook 2016)

The Developer toolbar needed for creating macros isn’t visible by default so to switch it on to File | Options | Customize Ribbon and ensure Developer is checked

image

You should now get the Developer toolbar appearing

image

Select Macros, give the new macro a name and select a scope for where to save the macro (this determines where it will be available later on).

image

You will now be dropped into the VB Macro Editor experience which looks nothing like Word! Don’t worry you just need to paste the following code in as shown

image

Here’s the macro code to copy/paste

Dim i As Long
With ActiveDocument
For i = 1 To .InlineShapes.Count
If PointsToCentimeters(.InlineShapes(i).Width) > 15 Then
With .InlineShapes(i)
.LockAspectRatio = msoTrue
.Width = CentimetersToPoints(15)
End With
End If
Next i
End With

The result should look like this, you can then save and close the macro editor window

image

Now back in Word, with your document open (with the oversized images) select Developer | Macros, select your new macro and click Run

image

Once the macro has completed all the images that were over 15cm in width will have been resized to fit on the page.

This assumes the pages are in portrait orientation and that the maximum width of an image should be 15cm

image


How to compare the MAPI property differences between Outlook emails

$
0
0

I was recently working on extracting mail from Outlook to an .msg file and later importing the .msg file back into Outlook. I was concerned that some of the non-obvious properties (there are a lot of non-visible MAPI properties stored on an email) would not be persisted or may change value in the process of the export/import. I thought this was going to be a daunting and time consuming process comparing the value of around 100 MAPI properties and playing spot the difference. Luckily the first thing I tried was the awesome OutlookSpy tool which I’ve found simply brilliant for assisting with Outlook development over the years. What I didn’t realise was that OutlookSpy has a build-in compare feature that will compare the MAPI properties of 2 mail items and highlight:

  • Properties missing/extra on the 2 objects being compared
  • Properties with different values on the on the 2 objects being compared
  • Properties with the same values on the on the 2 objects being compared

 

Steps compare the properties on 2 email messages using OutlookSpy

 

Select one of the emails to compare and select OutlookSpy | IMessage

cameron-dwyer-outlookspy-compare-01-IMessage

 

The IMessage window will appear showing all the MAPI properties on the item. From here select the Compare tab.

cameron-dwyer-outlookspy-compare-02-IMessageWindow

 

In order to compare this email against another email, the compare tab gives you a green area where you can drag and drop the PR_ENTRYID property from a different email message. So to do this leave the IMEssage window open on the compare tab.

cameron-dwyer-outlookspy-compare-03-CompareTab

 

Go and select the email you want to compare to in Outlook and select the OutlookSpy | IMessage button for this new email. You will be presented with the IMessage window and shown the MAPI properties for the new email. Locate the PR_ENTRYID MAPI property in the table (hint: click the column header to sort the table). Now drag and drop the PR_ENTRYID row from the table into the green drag/drop zone on the original IMessage window that you left open.

cameron-dwyer-outlookspy-compare-04-dragdrop-pr-entryid

 

Now the magic happens! The compare tab does a comparison of the 2 items and allows you to switch between properties with the same values, properties with different values, and missing or extra properties.

cameron-dwyer-outlookspy-compare-05-properties-same-on-both-email

 

cameron-dwyer-outlookspy-compare-06-properties-different-on-email


How to fix “The operation could not be completed” error adding references to Visual Studio 2017

$
0
0

The Issue

Using Visual Studio 2017 and attempting to add a reference to a project you receive an error stating “The operation could not be completed”.

cameron-dwyer-vs2017-add-reference-error-01-add-reference

cameron-dwyer-vs2017-add-reference-error-02-operation-could-not-complete

The Solution

It seems that to bring up the Add Reference dialog in Visual Studio 2017 the Microsoft.VisualStudio.Shell.Interop.11.0.dll needs to be regsitered in the GAC. You can follow these steps to register this assembly in the GAC:

Open the Develop Command Prompt for VS2017 (ensure you run the as administrator otherwise the GAC registration may fail)

cameron-dwyer-vs2017-add-reference-error-03-dev-command-prompt-as-admin

Change the current directory to the PublicAssemblies folder for your Visual Studio 2017 installation. Mine was:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies

Note: this path will be different for different versions of Visual Studio (e.g. you may find your path is C:\Program Files\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblies)

cameron-dwyer-vs2017-add-reference-error-04-public-assemblies

Run the following command to register the assembly in the GAC:

gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll

cameron-dwyer-vs2017-add-reference-error-05-add-to-gac

Now restart VS2017 and try to add a reference to your project again and you should see the Add Reference dialog appear.

cameron-dwyer-vs2017-add-reference-error-06-add-reference-dialog-working



How to Avoid Chrome Security Issues Developing Office Add-in Hosted on localhost

$
0
0

When developing add-ins for Office you are often serving the add-in from a local web server on a URL using the host name “localhost”. Office add-ins also require the web server to use SSL to serve the resources for the add-in. The Chrome security implementation will fire off a security error under most common development scenarios. This is when the domain of the SSL certificate does not match “localhost”.

You will see this problem manifest itself by causing your add-in to not start and show an error stating:

“Add-in Error  Something went wrong and we couldn’t start this add-in. Please try again later or contact your system administrator”

cameron-dwyer-chrome-debug-localhost-00b-add-in-error-couldnt-start

If you have the Developer Tools window open in Chrome you will see error messages getting output with the text:

“net::ERR_INSECURE_RESPONSE”

cameron-dwyer-chrome-debug-localhost-00a-net-err-insecure-response

There is a relatively easy workaround to this problem that you can implement on your development machine to allow Chrome to bypass this certificate check on URLs served from “localhost”.

Type the following into the Chrome browser URL bar:

chrome://flags/#allow-insecure-localhost

Enable the option:

“Allow invalid certificates for resources loaded from localhost. Mac, Windows, Linux, Chrome OS, Android

Allows requests to localhost over HTTPS even when an invalid certificate is presented.”

cameron-dwyer-chrome-debug-localhost-01-allow-insecure-localhost

After making this change you will need to restart Chrome.

cameron-dwyer-chrome-debug-localhost-02-relaunch-now


How to Debug Modern Office Add-ins on Devices (iPhone/iPad) using Firebug

$
0
0

firebug-debug-office-addins-ios-iphone-cameron-dwyerDebugging modern Office Add-ins with current tooling can be quite challenging. Although the technology of the add-ins you write is consistent and conforms to web standards (HTML, JavaScript, CSS), the way the add-in is hosted in the different Office clients makes it challenging to use debugging tools (as the add-in isn’t simply running in a web browser).

Debugging in Office Online (web browser versions of the Office products) is probably the simplest to use existing debug tools, and simply using F12 debug tools in IE, Edge, Chrome will give you access to the Console, DOM and inspection of HTML and CSS.

Desktop Office clients make it a bit harder since you can’t just start the F12 debugger tools because you are not in a full browser (like Edge or Chrome). Luckily Microsoft have provided a standalone version of the F12 tools (F12Chooser.exe) that you can use to attach to the running instance of the Desktop Office client.

https://dev.office.com/docs/add-ins/testing/debug-add-ins-using-f12-developer-tools-on-windows-10

Once you start talking about devices such as iPhones and iPads it begins to get even more difficult. Most documentation points you in the direction of Vorlon.JS which provides a good remote debugging experience, but involves a fair bit of setup, configuration and embedded scripts in your addin as well.

https://dev.office.com/docs/add-ins/testing/debug-office-add-ins-on-ipad-and-mac

Rather than go down the Vorlon.JS route, I’ve come up with the a technique which is more lightweight than the Vorlon.JS approach and instead uses Firebug Lite. Firebug Lite is an in-page debugging tool that can be added to a webpage by embedded JavaScript into your add-in. The example below adds a hyperlink to the page that will launch the Firebug debugger when clicked.

<a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');">Firebug Lite</a>

 

Add-firebug-debugging-link-to-office-addin-cameron-dwyer

 

This link now appears in the add-in and clicking on it starts the Firebug Lite debugger in-page. Due to the amount of screen space (especially on an iPhone) it’s going to be a fiddly trying to do extensive debugging using your finger. Having access to the JavaScript console is really valuable and it also shows the status of AJAX calls being made and any resulting errors.

 

 

Firebug Console (iPhone)

Debug-Office-Addin-iPhone-JavaScript-Console-Cameron-Dwyer

 

Firebug DOM explorer (iPhone)

Debug-Outlook-Addin-DOM-JavaScript-Inspect-Cameron-Dwyer

 

Firebug HTML Inspector (Desktop Outlook)

Debug-Office-Addin-Desktop-Office-Outlook-Firebug-Cameron-Dwyer


How to fix mouse cursor disappearing in Visual Studio & Visual Studio Code

$
0
0

This is a problem I have come across each time I build a new virtual development machine with Visual Studio on it. The problem has been around for a few years now and I always have to search around for the steps to fix it each time it catches me.

I’ve seen this issue in the following versions of Visual Studio and the resolution is the same and works for them all:

  • Visual Studio 2012
  • Visual Studio 2015
  • Visual Studio 2017
  • Visual Studio Code

 

The Problem

When using Visual Studio the mouse cursor flickers badly or totally disappears when the mouse pointer is in the code editing area of Visual Studio (as shown in the screenshot below).

01-visual-studio-missing-cursor-area-cameron-dwyer

Moving the mouse cursor outside of this area makes it visible again, and it seems that the mouse pointer is unaffected when using other applications and on the Windows desktop itself.

I’ve found that the problem is much more prevalent when access Visual Studio on another machine (e.g. virtual development machine) via remote desktop.

The Solution

Thankfully the solution is quick and simple:

  • Open Control Panel | Appearance and Personalization | Personalization | Change mouse pointers
  • On the Pointers tab of the dialog change the Scheme to Windows Black (system scheme)

02-visual-studio-dissapearing-mouse-cursor-windows-scheme-black-cameron-dwyer

That’s it, your cursor should now be back and stable.

 


Microsoft Ignite 2017 in Orlando – My top picks and tips

$
0
0

Microsoft’s premier technology conference Microsoft Ignite 2017 is quickly approaching and it’s set to be the largest Ignite conference yet (rumoured to be around 24,000 attendees).

OnePlace Solutions – Products that rock this world

I’m excited to be attending again with some of the awesome OnePlace Solutions team. OnePlace Solutions is again a sponsor and exhibitor at the conference so please come by and pay us a visit on the expo floor (booth 1724). We will be running live demos of our desktop product suite (a major release went out for this last week so you will be seeing brand new software) including OnePlaceMail, OnePlaceDocs, and OnePlaceLive.

In addition I’m super proud of the work we did earlier this year to launch OnePlaceMail for iPhone/iPad, and just last week we were a launch partner when Microsoft announced add-in availability for Outlook on Android.

opm-outlook-android-addin-officdev-512-475-cameron-dwyer

Fun & Giveaways – that are out of this world

Who doesn’t like building LEGO and winning prizes? Come and play our Lego game for your chance to win the LEGO® NASA Apollo Saturn V

microsoft-ignite-orlando-saturn-rocket-lego-cameron-dwyer

 

What’s at the Conference for Office Developers?

oneplace-solutions-logoHeaps, and heaps, and heaps. Trying to build a schedule in MyIgnite website is overwhelming with the shear number of sessions available BUT IT IS ALSO A MUST – don’t try to figure it out on the day, it will take a couple of hours to really look through the options and choose the right sessions for yourself. The conference centre is huge, so if you end up in the wrong session you could have a 30 minute walk to get to another session, not a situation you want to find yourself in. Here’s my picks for Office developers:

 

Microsoft Office 365 platform overview

Tristan Davis, Rob Howard

Learn about the latest that Office 365 has to offer developers and power users, from Microsoft Teams extensibility and the Microsoft Graph to Office add-ins and Office UI Fabric. We cover the full range of solution-building tools, from Microsoft PowerApps and Microsoft Flow to Visual Studio and Visual Studio Code. Get a demo-packed overview of the platform, and a guide to Office sessions you should see through the rest of the conference.

https://myignite.microsoft.com/sessions/55142?source=sessions

 

Make your app a native part of Office with Office Add-ins

Humberto Lezama

Microsoft Office Add-ins allow you to make your solution a native part of Office on every platform across desktop, web, and mobile applications. Learn how to build an Office Add-in, the new features we’ve recently launched and our future roadmap. This session covers how to enable native Office experiences using standard web developers tools, how your Add-in can run anywhere, and all the great distribution channels for publishing your app.

https://myignite.microsoft.com/sessions/54720?source=sessions

 

Building the modern SharePoint experience: Best practices from Microsoft for developing with SPFx

Chakkaradeep Chinnakonda Chandran, Waldek Mastykarz

With the SharePoint Framework, you can incorporate modern developer techniques to create fast, responsive components. Building on lessons from developing out-of-the-box components, in this session, we go under the hood to explore details of modern SharePoint client-side development tools to not only manage your developer environment but also give you an edge in building optimized and performant web parts and extensions. We also show how you can streamline deployment with SharePoint CDN facilities to strike the optimal mix of flexibility and performance for your projects.

https://myignite.microsoft.com/sessions/53866?source=sessions

 

Migrate your apps from legacy APIs to Microsoft Graph

Dan Kershaw, Jeff Sakowicz

Microsoft Graph is the single REST API endpoint for accessing your data in the Microsoft Cloud including from Azure Active Directory, Office 365, Intune, and more. In this session, learn about how Microsoft Graph can now enable you to create apps that were simply not possible before. Find out what is new with Microsoft Graph in addressing previous parity gaps with legacy endpoints, learn about the scenarios that you can build using Graph, and see how you can quickly migrate to using Graph.

https://myignite.microsoft.com/sessions/55419?source=sessions

 

Office development: Authentication demystified

Vittorio Bertocci

Tokens and Scopes and Protocols, Oh My! Come to this session to discover how easy it is to use the MSAL SDK to connect your applications and Office Add-ins to the Microsoft Graph, without any need to become a protocol expert. No matter what platform or dev stack you are targeting, you’ll be surprised by how little code it takes to authenticate users and take advantage of Microsoft’s rich cloud API. We cover a lot of great MSAL-focused tech, including MSAL.NET for UWP, Desktop and Xamarin, MSAL.NET for Agave plug-ins and MSAL JS. We also touch on MSAL for iOS and Android. It goes without saying – but we’ll say it anyway – that we also talk about Microsoft Graph!

https://myignite.microsoft.com/sessions/55110?source=sessions

 

Stay Updated and Hear the News as it Breaks

Follow @MS_Ignite on Twitter and use/follow the hashtag #MSIgnite to share your thoughts

Follow the 10 MVP “Community Reports”

Keep your eyes and ears open – news will be breaking all around you!

 

Enjoy Yourself and Have Fun

Take the opportunity to enjoy Universal for a private party (that doesn’t happen every day!)

See if any of the events from the Ultimate Events Party List take your fancy

Tweet your step count. I think I’m a chance of cracking 20,000 steps a day

 

I’ll be tweeting (@CameronDwyer) throughout the conference.

Hope to see you there.

 

microsoft-ignite-orlando-lego-astronauts-cameron-dwyer


How to see chat message time in Microsoft Teams app on iPhone

$
0
0

I use the Microsoft Teams desktop client a lot sitting at my desk day-to-day and it’s great to have it on my phone. It wasn’t until this week being in Orlando for Microsoft Ignite that I noticed the Teams app on the iPhone doesn’t show the time a message was sent. I hadn’t noticed this before but maybe that’s because I would see the messages coming through in real-time. Now I’m in another country and connectivity is whenever I can grab some Wi-Fi, the lack of time against the messages makes it very confusing. Hence messages such “I’ll meet you at xyz in 30 minutes” means absolutely nothing! Have I already missed the meet up?!

microsoft-teams-message-time-iphone-cameron-dwyer

Then I stumbled upon the fact that if you swipe from the right edge of the screen to the left (and hold it) the message times magically drag in against each message. Maybe this is obvious to some but to me a very hidden and cryptic UX.

microsoft-teams-message-time-chat2-iphone-cameron-dwyer


Microsoft Ignite 2017 Highlights for the Office & SharePoint Developer

$
0
0

What a massive week in Orlando for Office developers. So many sessions, so much new information, it really was a case of drinking from the fire hose!

Thankfully most sessions were recorded and are progressively being made available along with the relevant slide decks on https://myignite.microsoft.com/videos

If you only have time to watch one session my pick for the SharePoint/Office Developer would be Accelerate your digital transformation with SharePoint and OneDrive presented by Jeff Teper, Dan Holme, Omar Shahine, Naomi Moneypenny. This session was just non-stop announcements on what’s new in SharePoint, Office and OneDrive. Some of the announcements:

  • Office 2019 is coming (Office clients, SharePoint, Exchange, Skype for Business servers – all servers to be available on-prem) – preview due mid 2018
  • A SharePoint specific conference (backed by Microsoft) is coming back in 2018 – and yes it’s going to be in Las Vegas
  • SharePoint hub sites to group related sites together, share branding and navigation and provide rollup of some information
  • SharePoint site provisioning model to allow for scripted customizations during the provisioning process
  • SharePoint Company Theming and an online tool to help (https://aka.ms/spthemebuilder)
  • SharePoint File Preview webpart (supports over 270 file formats)
  • SharePoint Migration tool to move SharePoint content from on-prem to the the cloud (Office 365)
  • Improved external link sharing
  • OneDrive – deeper integration into Windows 10
  • Improved large list support
  • New version of the SharePoint mobile app

Going one level deeper into the Office/SharePoint developer world, here’s some of the news that came out regarding:

Microsoft Graph (Build smarter apps with Office using the Microsoft Graph (Yina Arenas))

  • Generally Available
    • SharePoint Lists
    • File Versions
    • People API
    • App-only support for OneDrive
    • Access to Outlook shared calendars, contacts and mail folders
  • In Preview
    • Graph Extensions for Azure Functions
    • Outlook Categories
    • Outlook Rules
    • Outlook Email Headers
    • Outlook Rooms

Office Add-ins (What’s new and what’s coming for Outlook add-ins (Wey Love, Harshit Kumur))

  • Generally Available
    • Outlook Add-ins for Android
    • Single sign-on API (Web clients)
    • Auto-open task pane
  • Preview
    • Single sign-on API for Outlook
    • Centralized Deployment for Outlook Add-ins
    • Adaptive card support in Outlook (OWA)

SharePoint Framework and Patterns and Practices

  • SharePoint Framework became available on-prem with SharePoint Server Feature pack 2 (this was released a couple of weeks before Ignite)
  • SharePoint Framework Extensions – custom snippets on every page (aka delegate controls) context buttons/actions, customized field rendering
  • Reusable controls and Office Fabric Core

One of the more complex areas of doing modern Office development is authentication and authorization (especially when connection back into Office 365 services). This story is becoming a lot simpler if you can go exclusively through the Graph API. Vittorio Bertocci did a very entertaining session (Office development: Authentication demystified) that really shows you an on-rails experience for how to accomplish this from many different technologies and context. It is well worth a watch and has the potential to save you a lot of time and head scratching. This area of Office development has changed drastically over the last couple of years and there is a lot of conflicting information on the web and much of it is out of date.

 

cameron-dwyer-msignite-2017-yina-arenas-graph

Yina Arenas

 

cameron-dwyer-msignite-2017-vittorio-bertocci-azure-active-directory-auth

Vittorio Bertocci

 

cameron-dwyer-msignite-2017-wey-love-outlook-extensibility

Wey Love


I’m talking modern Office add-in development at this months Sydney SharePoint User Group

$
0
0

cameron-dwyer-circleThe Transition to Modern Office Add-in Development

Microsoft SharePoint is developed by the same team responsible for the Microsoft Office desktop applications. There has always been a strong connection between these products. Up until recently, developers who wanted to integrate Word, Excel, PowerPoint with SharePoint would use the COM add-in model. But now Microsoft has a new Modern Office Add-in development model.

In this month’s session, Cameron Dwyer – CTO at OnePlace Solutions – will discuss the high level architecture of this modern add-in model, the new technologies and choices involved, transitioning developer skillsets, advantages / disadvantages of the modern model. We will mix in a bit of Azure, Angular, TypeScript, Office 365 APIs, Office UI Fabric, Authentication, and maybe some Applications Insights and DevOps.

OnePlace Solutions is a local success story. Based in Sydney, they have developed products using Microsoft Office COM add-ins.  They are one of the first companies globally to have launched add-ins based on the new model for the desktop, iPhone and Android platforms.

For more details on attending this free event in Sydney on 17 October

https://www.meetup.com/en-AU/Sydney-SharePoint-User-Group/events/242349531/



Sydney SharePoint User Group – The Transition to Modern Office Add-in Development

$
0
0

sharepoint-user-group-community-sydney-cameron-dwyerI had the pleasure this week of speaking at the Sydney SharePoint User Group on the topic of transitioning to the modern Office Add-in development model.

We discussed:

  • The existing COM/VSTO Office Add-in development model
  • The reasons and drivers for needing a new development model
  • What the modern Office Add-in development is and how it works
  • Benefits of the modern model
  • What this transition means for Office developers
  • A look at the typical modern add-in technology stack and discussing some of the options
  • The wider Office Developer Vision (Extending Office through add-ins + accessing Office 365 data via Graph)

Thanks to those who attended and as promised here’s a link to the slide deck from the nights presentation.

Transitioning to Modern Office Add-in Development (slide deck)

sharepoint-user-group-sydney-cameron-dwyer-office-add-in-dev


Newcastle Coders Group talk on Transitioning to Modern Office Add-in Development November 2017

Photos from the European SharePoint Conference 2017 (Dublin)

Microsoft MVP Award 2018-2019 Office Development

$
0
0

Cameron Dwyer MVP Office Development Award

Excited, proud, honoured, humbled, grateful, stupidly happy…. all emotions that hit me simultaneously as I opened the email that gave me the news that I had been presented the Microsoft Most Valuable Professional (MVP) Award for my work in Office Development.

I’ve been incredibly fortunate to work with some really awesome people both in the community and at Microsoft through my time at OnePlace Solutions. I love sharing knowledge and hearing what others go on to do with that knowledge. While I started this blog very nervously many years ago, it has been a very rewarding effort through which I’ve received a lot of feedback and gratitude. I’m honoured that so many people subscribe, read my blog and see value in it. A big thank you to all those that have given me support, feedback, advice or simply read one of my articles 🙂

MVP LogoThis award is given to exceptional technical community leaders who share their remarkable passion, real-world knowledge, and technical expertise with others through demonstration of exemplary commitment.

 

 

5 reasons why email is still king for business communication

$
0
0

messaging-collaboration-platforms-cameron-dwyer.png

The last few years have seen an explosion in the number of tools available for us to communicate not only at a consumer level, but also in the context of our workplace both internally within companies and externally between companies.

I primarily work with Microsoft technologies, but even within that small sphere the options are plentiful:

  • Email
  • Yammer
  • Microsoft Teams
  • Skype for Business
  • Skype
  • Office 365 Groups
  • LinkedIn

Outside of the Microsoft world it’s not uncommon to encounter these popular options as well:

  • Facebook
  • Slack
  • Google Hangouts
  • Twitter

I’m actually a fan and regular user of many of these other than email. I use Microsoft Teams internally quite heavily, along with Yammer for cross company communication and Twitter for more widespread public broadcast and consumption. I’m also not unknown for shooting off a quick message on Skype or sharing something or reaching out to someone on LinkedIn.

I think each of these messaging platforms has a particular area in which it shines but other areas that let it down (which is why many of us use multiple platforms). Much has been said about what platform to use for the different types of communication and what you are trying to achieve:

https://blogs.technet.microsoft.com/cloudyhappypeople/2017/09/28/now-it-makes-sense-microsofts-collaboration-story-in-a-single-slide/

https://www.avepoint.com/blog/strategy-blog/microsoft-teams-office-365-groups-sharepoint-yammer/

https://www.avepoint.com/blog/technical-blog/office-365-groups-vs-teams/

I’m still of the opinion that while email is by far the oldest of the communication/messaging platforms it is still the backbone of business communication and this is for some key reasons that I don’t see changing in a hurry (mainly due to commercial interests!)

1 – People want to feel in control

outlook-rules-stay-organised-cameron-dwyer.pngIts natural for people to want to be in control, to be in their comfort zone. If we take a mature rich email client such as Outlook, the user has many ways in which they can organise, arrange and maintain their communication that makes sense to them and allows them to feel in control. Since the email that resides in the users mailbox is not shared, the user has ownership (and hence a sense of control) over the email and is free to manage it without affecting others. Outlook has the following features that allow a user to gain control and stay on top of email communications:

  • Folders – Users can create a folder structure that makes sense to them for organising email. They are not locked in to only viewing messages in the order and “buckets” it’s presented to them in, which isn’t the case for many other platforms where it’s usually a case of one shared view that has to fit everyone.
  • Categories – Users are free to create and assign categories to emails to assist with later retrieval or to mark that they need to do something in response to the email
  • Followup actions with reminders – Emails can be flagged for followup at a specific date/time because often communication is requested something of us or requires a reply or some action in return.
  • Rules – Users can create and apply complex rules to assist with organising emails

In contrast, most other message system provide rigid ways of viewing messages and unless requests are dealt with in a short time frame, they are easily and quickly lost in the noise. The users have very limited options for organising the messages in a way that suits them.

2 – People want to protect themselves and their data

With email, the sending party and the receiving party both have a copy of the email that they can govern according to their information management policies. This becomes particularly important when that email contains information that needs to be treated as a record, or if important information is stored as an attachment.

The attachments on an email can be both an advantage to email and it’s Achilles heal. Too often people send around a document (that is a work in progress) and you end up with no version control and people working on multiple different copies of it. A much better scenario is to have the file stored in a central system (e.g. SharePoint or OneDrive) and share out a link to the file so everyone can work on the same file. Once the file is completed though, and especially if it is an important document or deliverable to an external company – that document is of high importance as a record to both parties. By sending the file via email both parties have their own copy to retain for their records. Imagine if you were issued with a project scope document which you agree to (which is stored in the sending companies Document Management system) – you view and read the document via a link into their system. Now it comes time to deliver the project and they fall short on delivering to the agreed scope. You go back to look at that project scope document only to find you no longer have access! Not a situation many businesses would allow themselves to get into. So while external sharing works during the collaboration process, I don’t think it would satisfy the document management or records management requirements of both sides involved.

3 – People want to get the job done, not think about which tool to use

social-media-mess-cameron-dwyer.pngYou can rely on anyone you want to communicate with having an email address. The same can’t be said for any of the other platforms. Unless you communicate with someone regularly, you probably have no idea what messaging platforms they use, and it’s a large burden to put on someone to force them to create an account and join up to a messaging platform or social network just so you can communicate with them.

Knowing that not everyone is going to be on the same messaging platform implicitly means that this is not going to scale and you are either going to have to use multiple messaging platforms or fall back to a common platform that everyone has at times – which is email.

4 – People want simplicity and their time back

scoail-notifications-overwhelming-cameron-dwyer.pngMost people I speak to would love to have more time in their day. They struggle to process all the information that is thrown in their direction and to stay on top of what they need to action and respond to. Take myself, I get messages and information coming at me from email, Yammer, LinkedIn, Teams, Facebook, Twitter (and I’m sure their are others). If I had all the time in the world I would proactively go to my email client, Yammer app, LinkedIn app, Teams app, Facebook app and Twitter app to check those unread notifications and unread messages in feeds. This works if you’ve got time to “do the rounds” constantly and respond immediately, but that’s rarely the reality. What I find happens with most people (myself included) is that for each of the messaging platforms I go into the settings and I get it to notify me of any direct messages by sending me an email, and maybe get it to send a summary email every day/week of the top things I’ve missed (if the platform supports this). Now I just have to monitor my email inbox and I’m not going to miss anything important (like a direct message to me) and I have a rich toolkit to set followup flags, categories and reminders. If I’ve got time then I might go to the individual apps and use their beautiful interfaces to stay on top of things, but the majority of the time I’m content that anything important will come to me in my inbox.

5 – People don’t want to be locked in

locked-in-cameron-dwyer.pngThis I feel is probably the biggest issue underpinning the success of the current wave of messaging platforms. They are backed by companies that want to lock you in to using their service. This makes sense, at the end of the day they are running a business! This means it is in their best interest to behave in the following way:

  • Once you have your data stored with them, make it hard for you to take it and leave
  • Closed to members only – they want you to get the people you are communicating with to “join” their platform thus trying to steal users from their competitors and win more market share
  • Don’t integrate with other messaging platforms – how great would it be if a Facebook user could send a message to a Twitter user or Teams user? One standard for messaging between platforms? Great I don’t have to join a heap of different providers and setup all these accounts, sounds wonderful; But what do these companies stand to make out of that? It’s not going to increase their active user count.

To the contrary, no company “owns” email. A lot of companies provide email services, but the email protocol is well known and these system will all happily talk to each other and we enjoy an email environment where we can send a message to someone else without having to consider the email provider they are using. It is usually possible to export email and take it with you should you want to change email providers or systems. This type of export or change of provider just doesn’t make sense in most modern messaging platforms.

For these reasons, if I were forced to only keep one messaging platform and had to throw away the others, email is the one that would stay.

I recently spoke with Jeremy Thake in an interview that discussed the place of email in the Microsoft ecosystem that discusses these topics and more.

Viewing all 114 articles
Browse latest View live