The End of the Free SharePoint Saturday Events?

This weekend I had the pleasure to present two sessions at SharePoint Saturday Charlotte at the University of Charlotte. This was my first time outside the airport and I really enjoyed the people & atmosphere of the city. Unfortunately some travel issues prevented me from finding much time to really see the city or mingle with other speaker, but I still had a nice time.

My first session of the day was “Integrating O365 & Salesforce.com using Microsoft PowerApps & Flow” which was very lightly attended. I’m not sure if it was because the keynote ran over it’s allotted time or that rooms were on different floors, but I was surprised that more folks weren’t interested in connecting Salesforce & O365. Regardless of number of attendees, I think the talk itself went pretty well and it gave me one more dry run before I record it for Collab365. My second session, “Modern SharePoint Development Workflow using Node, Bower, Yeoman and more!” had quite a few more attendees but still not the same crowd that I’ve recently seen in Boston, New York, or even Pittsburgh. When I spoke with the organizers it sounded like they had over a 60% no-show rate which is just slightly higher than the average 50% rate that most events see.

As an organizer, I know these events take a tremendous amount of planning from securing a venue, to lining up speakers, coordinating food, to making sure that sponsors are all set with their logistics. Estimating breakfast & lunch as got to the best most difficult & wasteful part of coordinating a SharePoint Saturday. No matter what you do it’s inevitable that there is going to be too much food. As an organizer you always want to ensure that people are properly hydrated, fed, and taken care of. If you have 200 people register for your event, it can be stressful to not purchase food for the worst case scenario (200) attendees. Typically I try to factor in 25% no-show even though I know it is going to be higher. As an organizer there is no worse feeling that running out of food, even for a free event. As an organizer of a smaller user group – the amount of leftover food we had at least year’s SharePoint Saturday event could have paid for half the user group meetings this year.

I think the initial charter for SharePoint Saturday which was to provide a platform for learning with no boundaries (i.e.; free to all attendees) was quite noble. However, after attending dozens of SharePoint Saturdays I can’t turn my eye to the inevitable waste that is associated with the events. From food, t-shirts, handouts, and swag, it can be alarming how much is leftover after an event. I think one of the problems with the free events is that registrants do not always associate a value to the event. When it’s free, there’s nothing lost if they don’t attend. But, if there was a nominal fee – then they would have made that investment and perhaps they would think twice about not attending. I don’t think a charge somewhere between $5-10 would create that much of a barrier to entry.

When speaking with the teams that organize the Cloud Saturday event (which is paid) in Chicago & Atlanta – they typically see a 90% attendance which is phenomenal. With sponsorship money becoming more difficult to secure, I wouldn’t be surprised to see more events change to the nominal charge model. If anything it also helps to alleviate some of the stress of obtaining sponsorship money when many ISV’s are beginning to withdraw from participating in some of these community events.

Advertisements

Leveraging Microsoft Flow to Capture #YammerWins for Knowledge Management

First off – I want to give credit to Naomi Moneypenny for the idea of tagging threads in Yammer with #YammerWin. (Or at least I believe it was her) I think that’s a brilliant idea and helps to demonstrate that you would use a product like Yammer for more than just water cooler gossip. When I started to think about the job though of trolling Yammer for #YammerWins it occurred to me that it’s kind of a copy & paste intensive process. There’s also no quick way of getting a count of how many #YammerWins you have, etc. Sure you can click the #YammerWin hashtag in your group and then see all the different threads which certainly works but it’s not super organized.

I’m a consultant and development is what we tend to do – but to be honest, I don’t have the warm & fuzzies about doing custom development on top of Yammer. T

So then Microsoft Flow came along and I got a really cool idea. What if I could build a Flow that would do the data collection for me and then store it in a SharePoint list? Once it’s in a list I can do anything from kicking off workflows, to building mini-reports for management, etc. Talk about a #MicrosoftFlowWin

So I did & here’s what my Flow looks like:

YammerWin

  1. The trigger is when a new item is created in a Group (point at a Yammer Group)
  2. I include a condition, if the Message Text contains #yammerwin
  3. If yes, it creates an item in a SharePoint list

My SharePoint list has a few extra columns (MessageText, URL, and CreatedAt) and I map the following attributes from the Yammer post so that I can see the message text, when it was created, and the URL to the actual object.

YammerWin2

Once that’s all set I let the flow fire and when someone in the group sends a message which includes #YammerWin, the Flow picks it up and creates an item in SharePont:

YammerWinSharePoint

As many of you know – once the item is in SharePont, you can do anything! You can build custom reports to show management, have a workflow that assigns this to one of your Knowledge Management librarians for curation, etc. The URL also allows your librarian to go ahead and view the thread for context should the message text not contain all the information that they would need to help build the knowledge management record.

For those building Knowledge Management Portals in SharePoint – this is a really great way to start to capture your #YammerWins in a structured fashion.

Cheers to Naomi for the idea, and to the Microsoft Flow team for building the technology!

Well done! #MicrosoftFlowWin!

Quick Tip for creating a view of empty folders in your document library

Without stepping into the holy war of folders vs. metadata I would like to share a quick tip for how to get rid of those pesky empty folders in your document libraries by creating a view which shows you all the folders which don’t have any child items in them. Note this only seems to work for root folders and not subfolders. I’m still trying to come up with a clever way to identify those subfolders as well.

Create a view like normal but under the filter section, you’ll want to set the following condition to be true:

1. Folder Child Count is equal to 0
2. Content Type is equal to folder

. image

Click apply and boom – you have a view of your current document library with just folders that are empty!

image

For big libraries you might want to show more than 30 items by default so you can delete all those empty folders in one shot.

Hope that helps, and happy SharePointing!

Microsoft Flow & Salesforce.com Integration

This afternoon I had a quick call with a fellow community leader Adam Levitan who works for Metalogix. We were recording a podcast which will hopefully air later this fall during the Collab365 Conference. We got onto the topic of the future of collaboration and I said that Microsoft is absolutely hitting a home run with their Flow service. For those of you who aren’t familiar with it, Microsoft Flow is a workflow automation solution which allows you to tie systems together through activities. While SharePoint does an amazing job of allowing users to automate business processes, Flow takes it a giant step forward.

One of the use cases that I’m very interested in is the ability to integrate the Office 365 Platform with Salesforce.com. Although I’m a big supporter of Microsoft technologies, many of my clients have decided to go with Salesforce.com instead of Dynamics or the new Dynamics 365 for their CRM platforms. One of the challenges with Salesforce is that the recurring subscription costs are expensive when you start trying to license all the users that may play some role within the sales cycle. The purpose of this post definitely isn’t to cover all the features of Salesforce or the many different clouds they have (Sales, Service, Health, etc.) but rather to focus on the future where you can tie cloud services together and build some really powerful solutions.

To illustrate what I mean, I’m going to walk through building a very simple “Flow” which mirrors a business scenario I’ve personally encountered. So I work for Slalom Consulting and we sponsor many community events like SharePoint & SQL Saturdays, various tech conferences, etc. Typically these sponsorships include a booth where we send a recruiter, sometimes a sales executive, but most of the time just members of that particular Practice / Vertical, etc. During these conferences there often times are potential leads generated based on discussions that happen at the booths, and the usually our folks capture a business card or just take down the person’s information. At the end of the event the team goes back to the office the next week and either sends the spreadsheet, or transposes that information from Excel into the CRM system for the sales team to go work. You might be saying to yourself “there has to be a better way” – and indeed there is!

What if you could generate those Leads from an Excel table and have it imported directly into CRM? Wouldn’t that be cool? Well guess what, that’s exactly what we are going to do.

First, let’s login to our Office 365 tenant which has Microsoft Flow enabled (as of this blog post it is still considered to be a Preview service). And we’re going to search up at the top for available templates to create our Flow from:

image

Let’s pick the Create Salesforce Leads from a Excel table template:

image

From here a new page will be displayed giving an overview of the template we selected:

image

Click the big “Use this template” button to bring up the connection configuration screen. We’re going to need to create connections for both the Excel file which will have the table of sales leads, and the connection to our Salesforce.com instance.

image

First click on the “Create” button for the connection to the Excel file.which will bring up a list of list of choices for where the Excel file can sit. Notice there are also non-Microsoft services such as Dropbox, Box, and even SFTP! For the purposes of this walk-through we are going to pick the OneDrive for Business but feel free to select the data source that best meets your requirements.

image

It will prompt you for credentials for your OneDrive For Business account after clicking the Sign In button:

image

So in truthful blogging, I’m going to tell you that it threw an error:

AzureResourceManagerErrors

I waited a bit, cleared out some of my old connections under my profile and then tried again and this time it made the connection.

Next, I created my connection to my Developer Salesforce instance: I logged into Salesforce.com:

image

Next, I allowed PowerApps access to my Salesforce tenant:

image

Of course I clicked, Allow and then continue on the main page to bring up the workflow canvas:

image

So working from the top, the very first thing you can do is setup recurrence for how often the flow will run. As of this time, this is still just a Preview service and there hasn’t been any real discussion on licensing or pricing. Like any service there are most certainly going to be service levels – ie; being able to guarantee computing power to run the job, amount of data perhaps to be processes, and likely some other elements that I haven’t even dreamed up yet – but you can rest assured that there’s a team at Microsoft figuring out how to price this service. Smile

For demo purposes, I am just going to have it recur every 15 minutes. So clicking the little ellipses in the corner of the recurrece box brings up the advanced options where I can set that information:

image 

Before proceeding to the next step I’m going to create a sample Excel file with the following column headers:

First Name
Last Name
Company
Phone
Email

image

Click OK and the following Table will be generated:

image

Last, I’m going to save my file as SPSLeads.xlsx and drop it on my OneDrive for Business. Back to the flow I go to the Get rows section of my flow and click the folder expand button on the right, and find my SPSLeads.xlsx file:

image

Next, I select the table which I left as the Excel default of Table1:

image

Next we dig into the Create Object section of the flow which is really the “Create Lead” functionality in Saleforce. This is where you can map the different columns to the fields in a Salesforce Lead Object. I went with the bare minimum of what is required to generate the lead, but there are other fields such as Street and Zipcode that can also be captured and added to the record.

image

Some of the fields can also be defaulted which is what I am going to do for the Lead Source since these leads are being captured at my fictional SharePoint Saturday Connecticut event:

image

Last, I’m going to have it Delete the row after creating the lead in Salesforce, essentially following the same path of picking the Excel file on my OneDrive and Table1 as my table name:

image

Finally I’m going to give this Flow a name:and then click the Create Flow button and let Microsoft Flow work its magic!

image

I’ll click the Done button and then see that I’m all set:

image

When I go to the My Flows, I’ll now see that there’s the Flow I just created:

image

Next, I’ll click on the little information icon to see that my flow is actually running:

image

In reality though – it takes a bit for my Flow to run. I suspect it’s because I both didn’t set a start time and that I also put a recurrence of every 15 minutes. This is definitely still a Preview service so there will probably be a bit more polishing up of the user interface before it goes live.

Then I looked at my Flow to find out that it had errors:

Flow-Error2

Then when I went to edit the Flow I found myself in the spinning page of doom:

image

So then I decided to back it all out and pop my file up on my Dropbox. I created the service exactly the same way and it picked up the file no problems at all!

image

After allowing the Flow to run, I logged into Salesforce.com and noticed that the following leads were generated:

image

I then popped open Spoopy Matfess (my amazing dog) and low and behold all the lead data came over:

image

Then I logged into my Dropbox accoutn and opened my file and noticed that it had been touched by PowerApps:

image

I’m a little curious as to why it would leave that last record with the _PowerAppsId_ at the end, but maybe that is just part of the beta. I would expect that it would leave the table cleared out and then allow for users to continue adding new leads as they come in throughout the day.

So the big question is why did my original attempts using OneDrive for Business fail? I could be wrong but there might be something with my profile since I’ve got multiple profiles, multiple O365 accounts, etc. Now, I did create the connection to OneDrive and authenticated successfully to Azure AD and it was also able to find the Excel workbook and the table. However, when it came time for the job to actually run, it threw some connectivity errors. I also could have possibly hit some ironically timed Azure issue.

Regardless though, flipping over to Dropbox and seeing it run successfully should hopefully give you some ideas as to what’s possible with Microsoft Flow. You can have users working in systems that they are familiar with such as OneDrive, SharePoint, etc. – and then have the output of their work feed into downstream systems.

SharePoint Saturday NYC – Slides, Github & More

First off, a huge thanks to all those that came out to my session, sorry for the packed room! SharePoint Saturday New York is one of my favorite events, and I loved all the great conversations.

Paul Tavares took an awesome panoramic picture from my room, I couldn’t believe how many folks showed up to talk about Modern SharePoint Development.

cooqzveviaepvpd

Here are the slides SharePoint Modern Web Development

Also here’s the Github project – https://github.com/JaredMatfess/modernspdev

 

The New SharePoint Framework Meets Corporate IT

As a consultant there are times where I am slightly disconnected from the “Corporate World”, which is honestly part of the draw. As consultants technology is the great enabler for providing clients with software & services in order to help them realize their business goals. So as a consultant we tend to gravitate towards both trends & solutions that help us provide more value in a shorter amount of time. Demonstrating value is what helps us to build relationships which in turn often times leads to repeat business – rinse, lather, repeat. However, in the Corporate World life is filled with words like standards, policies, approved lists, governance, compliance, legal, etc.

I have recently resumed working for one of my favorite clients at a large Insurance company in our area, which entails the usual badge, laptop, parking pass in order to comply with the contractual agreement between my company and theirs. One of the interesting points to note is that in order for me to perform development work, I actually need to use their equipment to access their environment. This is a rather large SharePoint business application that I had previously built which is a combination of code (all client side) and configuration with SharePoint 2013 workflows. During my previous engagement I had actually been given local administrative rights on my machine which allowed me to load software like Visual Studio Code in order to perform my job.

Fast forward to this engagement, I’m without Administrative Rights on my machine and my two text editors of choice are Notepad or SharePoint Designer. I walk down to their Tech Express counter to see about having them install Visual Studio Code on my machine and they empathize but explain that their new policies prohibit the installation of any software that hasn’t already been packaged by their Engineering group. When I inquire about that process it basically entailed a multi-step review by Legal, Compliance, Software Engineering, etc. Typical turnaround time is a couple of weeks which likely isn’t helpful when the work needs to be done in the next week or so. I thank the Tech and proceed back to my desk where I submit a request for Administrative Rights on my machine thinking at least if I can get that, I’ll load the software myself and be done with the work hopefully before their security group catches on.

My request is routed to a governance approver who expresses concerns at both my status as a non-employee but also my request (setup developer laptop is my vague request). We speak more about it and I learn that not only is the technician correct about the software process but he also proceeds to inform me about the extra attention that is placed on Open Source software. He explains that the EULA agreements can be confusing and sometimes publishers make distinctions between personal & corporate use which can have implications on who owns the intellectual property. We talk about the way development is going with open source technology such as NodeJS, Bower, Gulp, and installing Node packages to help streamline development and I’m met with the realities of Corporate IT. The main priority for Corporate organizations is to protect the company – functions like Legal, Human Resources, and event Information Technology have the initial marching orders to protect the company. Just because development trends are moving towards open source technology – big corporations are afraid of this from a support & licensing perspective. From a security perspective they also do not like things such as local web servers and folks having persistent administrative rights to load the newest packages from Github onto their machines.

So where am I going with all this? So for today’s SharePoint Development there area really a few choices:

1) Configuration with mostly out of the box functionality and perhaps customization using SharePoint Designer. (workflows, maybe a little jQuery here and there)

2) Client side development where you’re hopefully installing some sort of text editor like VS Code, Brackets, etc to write a combination of HTML & JavaScript. If you are able, you might include things like NodeJS, Gulp, Bower, etc to automate portions of your development life cycle.

3) Visual Studio (heavy) development – either server side code, sandbox solutions, Add-in model, or maybe even client side development since it does support that as well. 🙂

What I see as an interesting problem which will impacts both SharePoint as well as Web Developers in these large organizations is the trend towards NodeJS, Gulp, Yeoman, and whatever other Node modules/apps become popular. Loading these into the global scope can require administrative rights which is often times not given out. Furthermore to make it more difficult, you’re not just asking to have Visual Studio Professional loaded on your machine. With just Visual Studio, Enterprises can provide temporary admin rights or use policies to allow you to just run Visual Studio as an Administrator. There’s also the very clear licensing agreement between Microsoft & “Large Corporation”.

But the there is the argument that we are talking about “web development” and not really SharePoint development which I agree to. But if you think about it – web development is kind of that grey area because from what I have seen, most large organizations treat their external websites much differently than their corporate Intranets. The Internet site represents the company, the brand, & services both customers & potential candidates alike. Many times agencies are brought in to help with these from the design perspective and/or development resources are brought on to “build it”. In those situations the developers likely fall into the same category as me – the consultant types which bring our own equipment with no barrier to entry. SharePoint is on the corporate intranet, inside the firewall, maybe sometimes in O365. Microsoft touts the #’s of organization’s in the Cloud but for me most of my main clients are on-premises.

I’m not saying that I am against the new “SharePoint Framework” what I’m saying is, I think there’s going to be a market to cater to (being large enterprises) where perhaps there’s a less automated way – or better yet a more contained set of tooling for those developers. To scoff and say that large enterprises need to work towards embracing the way things are going is difficult as well. Going back to my earlier point, most of those departments (HR, Legal, IT, etc) are there to protect the company.

I don’t have the perfect solution but I can tell you that I’m curious to see how this unfolds.