Boston Code Camp 2017 Re-cap

I had a really great time presenting “Connecting Salesforce & Office 365 using Microsoft PowerApps & Flow”. For once the demo gods were kind to me as a I demonstrated creating leads from an Excel document, and generating Salesforce Tasks that get created in a SharePoint list, etc.

For those looking for slides – you can grab them here: Microsoft Flow O365 Salesforce

I also had a really great time joining some of my fellow Microsoft MVP’s on Betsy Weber’s panel for “How to become an MVP.” All in all a great event – kudos to the organizers, volunteers, speakers, and attendees that made it happen. Hopefully I’ll have the opportunity to present again next year.

Advertisements

Opting out of Microsoft Office 365 changes aka off by default

I love Office 365. I want to put that right out there, because I mean it. The innovation that Microsoft keeps on pumping into the service continues to raise the bar for enabling collaboration. At my last company we were years away from moving to Office 365 and now that I’m at Slalom, we’re all in! It’s fantastic!

However, I do not like how new features & functions are being introduced to organizations – and by that I mean “on by default”. Case in point, there’s been a bit of noise on Twitter for the past two days about a change rolling in that will automatically provision an O365 Group for a manager and their direct reports: https://support.office.com/en-us/article/Automatic-creation-of-Direct-Reports-groups-in-Outlook-f43455ed-81a6-4588-8299-08caa62abedd?ui=en-US&rs=en-US&ad=UShttps://support.office.com/en-us/article/Automatic-creation-of-Direct-Reports-groups-in-Outlook-f43455ed-81a6-4588-8299-08caa62abedd?ui=en-US&rs=en-US&ad=US

Example of Twitter madness: (I blame Joanne Klein! LOL!)
2017-03-21_19-03-37

On the surface that might sound like a decent idea for some organizations – take my own team for instance. When my role changed and I became a supervisor I created a private Office 365 group for my team to collaborate. However, it was a conscience decision to meet a need that I had to collaborate with my team. I’m the only supervisor in our office that has their own Office 365 Group as the others aren’t quite ready to move there yet. I am picking on groups but there has been a lot of new features that are automatically added to tenants. I will concede that there certainly is the ability with a PowerShell command to disable that feature, but is that really the best user experience?

I’m a firm believer that the real value of Office 365 is realized with planning, communications, a bit of hand holding, and then some more communications. The “on by default” certainly presents opportunities where one could get “slipped by the goalie” and then there’s the apologizing as you have to back out that change and communicate to your customers that it’s just Microsoft being Microsoft and rolling stuff out. It’s not a good user experience, it’s uncomfortable to roll back changes that organizations are not prepared to support, and it leaves a bad impression of how Microsoft is managing the service. The reality too is what’s a good idea and right timing for an organization might not be applicable to another.

I think the counter-argument to rolling in new features as off by default is that there are some corporations that will “never” turn on the new stuff. The reality is, those could very well be the same organizations that immediately turn off the new functionality already. I would also say that shame on the admin that doesn’t enable Teams in their tenant, or whatever new service gets developed over the next 6 months.

My compromise would be this – why not set your preference at the tenant level?

I did a nice little mock-up to help show where that setting might go.

features

Again, I’m not knocking this particular change but I do believe it’s not a one size fits all.

I think enabling administrators to set their environment in a way that best meets the needs of their organization is the best approach for introducing new change. Happy collaborating!

UPDATE:

I submitted a user voice based on this blog post to help get the right attention:

https://office365.uservoice.com/forums/273493-office-365-admin/suggestions/18730039-allow-tenant-admins-to-control-new-features-being

Just say yes to InfoPath! (with caveats)

It feels like every week I see a thread with someone relatively new to SharePoint asking about the viability of InfoPath for business forms development. The responses to these questions commonly fall into these buckets:

  1. InfoPath is the devil
  2. InfoPath is currently deprecated, end of life in 2026
  3. PowerApps is the future
  4. Just buy a 3rd party product like K2, Nintex, etc. etc. etc.

While there is merit to all of these responses, I feel for the folks engaging in these conversations because many times the answers that they are provided do not really help to address the core issue of what to do now.

I want to break down each of these common responses and provide some of my commentary.

1. InfoPath is the devil
This is perhaps my favorite response as it provides little advisement other than that the person providing feedback is not enamored with the technology. When you look at an organization’s investment in both Microsoft Office and SharePoint technologies, business forms have been a part of the equation. One of the major selling points for SharePoint 2007 and beyond has been the ability to help automate and standardize business processes using the built-in workflow engine. While compared to today’s technical standards, InfoPath is certainly not in alignment – I’m not sure this is a proper response to a user requesting help. At it’s core InfoPath helps to develop user friendly forms which it has been doing quite nicely for a long time now.

2. InfoPath is currently deprecated
I absolutely agree with this statement that the product team has confirmed that there is an end of life date for the technology. InfoPath is no different than most products in that there is a date where it will eventually be replaced by newer technology (in this case most likely PowerApps as I will get to next). So at the core this statement is cautionary towards the individual considering investing in creating forms that in ~9 years the technology will no longer be supported.

3. PowerApps is the future
When I first saw PowerApps, I knew Microsoft was positioning it to be the InfoPath form replacement. However, I would say that as of today (2/18/2017) there is not complete feature parity nor is PowerApps as user-friendly as InfoPath. I am in no way saying do not consider PowerApps – if the features & functionality made available are in alignment with your business need then go for it. However, if you are on-premises without an O365 Hybrid implementation, then PowerApps will not work for you.

4. Just buy a 3rd Party Product
Having come from a large organization, I feel the pain of trying to advise senior management to purchase software especially after making a large investment like SharePoint. If your organization is flush with cash then maybe this isn’t such a big deal, but I would imagine that this isn’t always the case. It is not always as simple as “Jane recommends buying K2, let’s just do that.”

What should you do now?
Having provided some commentary on the typical options here are my recommendations for addressing the need for business forms technology & using InfoPath assuming that the four options from above are not helpful.

  1. Build your form using InfoPath – I’ll wait a second for the tomatoes to hit me in the face. But honestly, waiting for the perfect alignment of technology capabilities & what you have available is foolish. As an employee of your company you have an obligation to help drive business forward. Streamlining processes and removing error-prone tasks is how you help demonstrate real value to your organization. If you are trying to decide between doing nothing/waiting or building your business form in InfoPath – you should absolutely build that form!
  2. Document your solution – Addressing the issue that InfoPath is not going to be around forever, you need to be mindful and document any of the business rules in your form. At some point your form will be migrate to a different platform/technology and having your business rules documented will be essential for ensuring the success of that migration. In addition, should you move on from your current role it helps to enable the person will inherit your solution to be able to make updates/changes as appropriate.
  3. Inventory your InfoPath forms – Speaking to the future road map of the product at some point your organization will move those forms to a different technology. Inventorying your forms is a great idea for a couple of reasons:
    • You’re starting to get your arms around the value your business is realizing from process automation. Senior leadership tends to understand technology in terms of business impact & return on investment so having this information is valuable.
    • You will be able to report on the quantity of forms in your environment which combined with the previous bullet will help either support an investment in a 3rd Party product or some other replacement technology.
  4. Schedule quarterly reviews with appropriate stakeholders – Once you have built that inventory of forms/business solutions it is a really great idea to review them with a body of stakeholders. I suggest quarterly but it could vary based on your organization. The point is to spread awareness of the technology adoption in addition to helping build the business case to support the ongoing maintenance & support of these solutions. This doesn’t include just helping to build a justification to purchase a 3rd party but it might also mean allocating the appropriate amount of headcount to help manage these business solutions. More often than not I have encountered small SharePoint teams inundated with support requests but no way of providing any sort of metrics around the environment beyond site collection counts & data storage. Understanding the business applications within your environment is essential to communicating the business value and justifying additional investment.

So essentially if you boil down everything I have written my TLDR is go forward and build InfoPath forms, but be mindful of the Product road map as you build your own internal business process automation road map.

Presenting at Boston Code Camp 2017

I’m very excited to be speaking at my very first Code Camp on March 25th at the Microsoft Sales & Technology Center in Burlington. My session is titled: Connecting Salesforce.com & Office 365 using Microsoft Flow & PowerApps which hopefully is pretty straightforward for what I plan on covering. I am a huge fan of Microsoft Flow and am very excited to have the opportunity to “spread the gospel” of some of the amazing possibilities with this service.

I have always been a little hesitant to speak at Code Camp since I self-identify as being somewhere between a no-code developer and an actual developer. Most of the presenters are hardcore developers and I would be afraid of putting my audience off by not spending my session in Visual Studio. However, I am hoping my topic will resonate with attendees as I’m starting to see lots of organizations move towards Office 365 and there’s a mix of Salesforce.com & Dynamics 365 from a CRM perspective. I am also seeing a surge in data orchestration tools such as IFTT, Microsoft Flow, Zapier, etc. which is a good conversation to have especially when it comes to integrating with custom LOB applications which will require RESTFUL interfaces to enable these tools.

So here’s to an awesome event, and check out the website for more details!
https://www.bostoncodecamp.com/CC27

Is Microsoft Flow the replacement for SharePoint Workflows?

I recently had the privilege to co-present a session on Microsoft Flow & PowerApps at the Microsoft Beyond US Roadshow in Hartford. I am a huge fan of Microsoft Flow and have done several sessions on showing how you can orchestrate data across Dropbox, OneDrive, SharePoint & Salesforce with clicks & not code. One of the attendees in my session asked a very common question that I thought would make a good short blog post: “Is Flow the replacement for SharePoint Workflows?”.

Over the past few years I have built dozens of business applications leveraging the SharePoint platform to route requests through approval processes, provided metrics for turnaround time on requests, and automated non-value added steps. These solutions undoubtedly would leverage the SharePoint workflow engine for sending e-mails, assigning tasks, etc. Since Microsoft introduced the Workflow Manager in SharePoint 2013, there has not been any additional enhancements to their workflow engine. Compounded with the fact that SharePoint 2016 did not include an updated version of SharePoint 2016 it would make sense to assume that Flow is the replacement for SharePoint Workflows.

However, I would argue that Microsoft Flow is really positioned as the next generation of business process management applications vs an outright replacement to SharePoint Workflows. From a feature parity perspective not all of the SharePoint Workflow actions are available in Flow (yet they seem to be added all the time). At the time of this blog there aren’t the basic string manipulation actions, or copy items (also not available in 2013 but are in 2010), content approval/publishing, check-in/check-out, and wait for field changes in list items. There is also the caveat that in order to access on-premises data that you would need to setup a Gateway in order to make it accessible to Microsoft’s cloud.

Microsoft Flow provides much more capability than SharePoint does which might initially frighten some Enterprise customers. While there is a lot of value in being able to orchestrate data across both line of business & public clouds there definitely needs to be some up front planning to ensure that you do not jeopardize the integrity of your company’s data. For example it is absolutely possible to develop a Flow to copy files from your OneDrive for Business to your personal DropBox.

Finally, from a licensing perspective Microsoft Flow is a pay by the drink kind of service (technically pay by the Flow run). There’s a bit of  math but essentially you are allocated an allotment of Flow runs per user in your Office 365 tenant based on your plan. Be sure to check out Microsoft’s Flow Pricing page for up to the minute guidance. Whereas with SharePoint Workflows it’s essentially as many workflow runs as what your infrastructure can support.

So getting back to the original question – is Microsoft Flow the direct replacement for SharePoint Workflows? In my opinion – No. Microsoft Flow is the evolution of business process management allowing you to build elegant solutions which have the ability to orchestrate data across various line of business applications leveraging “clicks” and not code. Combined with PowerApps as your mobile/responsive front-end the barrier to creating enterprise applications has absolutely been lowered to where you no longer need a team of developers to create basic applications.

Hope this helps & happy Flow-ing.

 

 

Creating Google Charts with the SharePoint Search API

Recently I had a client ask me to build them some lightweight BI reports because their enterprise team was too consumed with other priorities. I started to think about pulling in a 3rd party JavaScript charting library since they mostly wanted to report against 1-2 columns of a list. However one of the challenges I faced was this library had close to 10,000 items and there would be views which would contain more than 5,000 items.So instead of leveraging the lists endpoint for the REST API, I decided to get the data via the Search API which would overcome that 5,000 item limit.

Since I can’t disclose client data, I mocked up the same solution using data I found on the CT State Data site. I created a new list from the CSV and let it go until I hit over 30,000 list items:

state-listitems

The list had a few interesting columns – Agency, Department, Job Title, Compensation Type, & Amount.

state-listdata

I thought it might be interesting to build a quick report for how my tax dollars were being spent by agency. Since I would be leveraging Search for pulling in the data, I first needed to map a crawled property to a managed property. I picked one of the out of the box managed properties and mapped it to OWS_Agency:

state-managedproperty

After a few hours the managed property became available as part of the Search index.

Next, was the easy part – I added a Content Editor Webpart to a page and pointed it at an HTML file which would pull together the solution.

The complete details of the HTML file can be found below but I just want to highlight a couple of the important parts.

1. When I get data from the Search API I specify that I want ContentTypes of type Item (would support custom as well) and then say I want to pull back RefinableString102 as part of the refiners set so I can see how many items per State agency
/_api/search/query?querytext=’ContentType=Item’&refiners=’RefinableString102′

The refiners work the exact same was using the Search REST API as they do when you perform an actual SharePoint Search – it returns results that match the criteria you specify. One of the bonus features is by saying you want to pull back refiners, you immediately get a summary of the different values for that refiner. So for our instance, I’m able to report on all the different state agencies by using the RefinableString102 refiner. Within that, it found 67 different agencies and then gave me the count of how many expenditures there are per agency.

In a production environment, you would probably want to also limit the query to only return results from that particular site collection or site, but the purpose of this blog post is to hopefully give you a very easy to follow along with example.

2. When I make the AJAX call the JSON returned back is in a complicated hierarchy. I took a screenshot so you can see the structure:

state-xdata

xData.d.query.PrimaryQueryResult.RefinementResults.Refiners.results[0].Entries.results[0].RefinementCount gives me access to 3999 which is how many expenditures were issued to the Board of Regents agency.

RefinementName – the agency name from the data set
RefinementValue – the number of items that are set to that particular agency

3. Because I’m creating the table from data returned from the Search API – I needed to initiate a new DataTable for Google Charts and then iterate over my JSON data to fill in the cells.I told it how many rows I would have (the length of the results) and then I used a for loop to fill in the table values.

4. I set the title of the chart of “State Budget” but creating an Options object.

5. I then create a new variable called chart which initiates the google.visualization.ScatterChart function and pass it the div on the page where you want to render the chart.

Here’s what the Google chart looks like with all the state data loaded:

state-googlechart

Full HTML file on Github

state-html-file.PNG

 

6 Things You Can Do If You’re Not Attending Microsoft Ignite

If you’re an IT Professional there is a pretty good chance that you have heard that Microsoft’s Ignite event is this week down at Atlanta. Ignite is the consolidation of various other Microsoft conferences such as TechEd, SharePoint Conference, etc. For those of you who are attending, there are plenty of “what to expect” blog posts which give you the usual tips of stay hydrated, wear comfortable shoes, bring battery packs, business cards, etc. However, there aren’t too many posts out there for those who aren’t able to attend.

This year I’m not able to attend Ignite but I have a small checklist of things I plan on doing to ensure that I stay up to speed with all the announcements.

Stream the keynote & select sessions – so like most big conferences, Ignite’s keynote is going to be streaming on Channel 9. Last year at Ignite SharePoint/O365 were barely even mentioned, but with the return of Jeff Teper I have a strong feeling that things might be different this year. There are also select sessions each day which will be available for streaming. Be sure to check out http://ignite.microsoft.com & Channel9 for links to those sessions.

Follow the #MSIgnite hashtag on Twitter – there are over 18,000 people heading down to Atlanta to attend Ignite and you can be sure that there are going to be tweets both official from Microsoft & unofficial from the attendees. Following the #MSIgnite has tag is a surefire way to get quick micro updates from attendees and companies.

Watch sessions on Channel 9 – for the past few years Microsoft has been posting session recordings on Channel 9 about 24 hours later which often times spurs the debate of why attend in-person when all the session are uploaded the next day. Of course the direct product team interaction, networking activities, and being able to ask your questions after the session are all some of the common examples. But for those who aren’t able to attend in-person, getting access to session recordings is truly amazing.

Attend Ignite recap at you local User Groups – I run a local user group and each year after the major Microsoft/SharePoint conference we always ask someone that attended to provide a recap of some of the highlights. Many user groups are moving their scheduling to Meetup, so that would definitely be a good place to start if you’re not sure what user groups are in your area.

Be on the lookout for “After Ignite” events – in case your local user group doesn’t host an “Ignite recap” session, oftentimes Microsoft will host these events in a few select cities. Talk to your local Microsoft rep after Ignite to find out if there’s going to be an “After Ignite” nearby.

Follow these folks on Twitter – finally, if you are completely overwhelmed by following the #MSIgnite hashtag there are a few folks attending which often times provide their own amateur journalist recaps of the day/event (in no particular order):

Nik Patel – fellow Slalomite, fastest fingers in the mid-west
Naomi Moneypenny – presenting like 5 sessions at Ignite, absolutely brilliant
Benjamin Niaulin – Mr. ShareGate, Tweets a lot and includes pictures
Jeff Teper – Mr. SharePoint (enough said)

So there you have it – hopefully this is helpful for any fellow “remote attendees” that want to stay up to date on the latest from the Ignite conference but aren’t able to make it this year!