Sandbox Solutions removed from SharePoint Online–Here’s the fix for your Visual Studio developed WSPs to get them to activate

Today, Microsoft removed the ability to activate sandbox solutions with code in them.  That’s cool, we’ve all known for a couple years that coded sandbox solutions were going away and there’s a post on the office dev blog describing the change,  What wasn’t talked about was the fact that any time someone created a no code sandbox solution in visual studio, an assembly was automatically generated which will block it from being deployed as of today! 

This feel like a huge deal when you’re trying to deploy an update and things aren’t working, but the fix is pretty easy.  Lets walk it through:

 

First, you’ll see the issue preventing you from activating your solution. 

image

There are two different ways to solve this problem depending on if you still have access to the source code and visual studio.  If you do, you can update the project property Include Assembly In Package to false as shown in https://support.microsoft.com/en-us/kb/3183084

 

If you don’t want to rebuild your package in visual studio, follow the steps below to remove the assembly from the sandbox solution.

 

Click on the name of the .wsp file to download it to your computer.  We need to open it up and remove the dll from inside.

Once you’ve downloaded it, rename the .wsp to a .cab file. If you double click it now to open it with explorer you’ll see that dll file inside.

image

 

After extracting to the file system we have 2 changes we need to make.

  1. Delete the DLL
  2. Update the manifest

So in windows explorer lets just delete the dll.

image

 

Right click on the manifest.xml file and open it in the editor you love most.  I chose code here.  Then delete the entire Assemblies section of the file and save it.

image

image

 

Next we need to recreate our cab file.  I like using a free app called IZArch that will give you a GUI instead of using makecab.  Just create a new archive and give it a file name ending in .CAB

image

 

Add your files, close IZArch and find the CAB file with windows explorer.  Just rename it back to .WSP and you’re ready to upload it to SharePoint

image

 

As you can see below, the .WSP with no dll activates just fine and everyone is happy.

 

image

 

 

 

 

 

 

 

 

 

 

 

Update Flow passwords easily!

“Passwords are like underwear, don’t show them to strangers and change them regularly.” said an old friend of mine.  Most companies have a standard password change policy where every 60-90 days everyone needs to change their active directory passwords.

Unfortunately inside Microsoft flow, I hadn’t found a super easy way to update the stored token for the services i connect to after changing my password.

image

When you open up the design surface to take a look at your flows, it will show you what service you are connected to, but your only option in the Flow ux is to change the connection.  In fact when things stopped working after a password change, that’s exactly what i did.  I created a new connection which got me up and running and sent a frown that a better story was needed to handle password changes.

image

 

Today, While poking around the web ux for PowerApps i noticed a wonderful Manage Connections tab on the left navigation bar.

In fact I had error messages next to the two connections that still stored my expired credentials.

Super easy to hit the Key icon and walk through your sign-in flow to update the stored tokens and everything is happy.

image

 

Get started automating your world with Microsoft Flow knowing that when your password expires it’s super easy to change it over in PowerApps.

I built out a few PowerApps demos this week as well so expect some more posts on PowerApps shortly.

Using Microsoft Flow to automate things in SharePoint – Part 1, approving stuff

If you haven’t had a chance to play with it yet, Microsoft Flow is one of the most exciting new technologies spinning up in the Office 365 space.  Unlike workflow in SharePoint it’s designed from the ground up for orchestrating things across systems rather than just basic human approvals in SharePoint.   Flow is in preview right now and my guess is that general availability isn’t going to happen till closer to the end of the year, but it’s such an exciting and transformational technology that in some cases i’m using in production right now.

 

 

 

There are many articles about what flow is and really basic intro stuff, so i wanted to instead focus on some usecases and why i really love what i’m seeing so far.  For anyone who has used SharePoint workflow in the past, the idea of assigning a task that a user had to open up, then have them navigate to the related list item or document to see what they are approving was never an outstanding user experiance.  When having users do this from a mobile device, it’s even worse because i need to pop a browser, login, and then hack around on a tiny little screen.

I had a use case where i needed to have users request permission for specific document libraries and couldn’t use the out of the box sharepoint capability because the site owners were not the approvers.  Instead every library had an approver and i needed a way to get those approvals and dynamicly apply the permissions.

One of the new activities you can perform with Flow is called Send Approval Email.  As you can see below, it’s easy to wire up fields from a sharepoint list item when that item is created and combine them with some narative to craft your subject, recipients, body, and your choices that a user will be shown.

image

 

Unlike a traditional task form that forces me to open a browser, this new approval experiance is designed from the ground up to mobile friendly with just an email with the buttons that you design in the user options field.  When a user clicks the button, the response is recorded, the user gets a confirmation page and the flow moves on.  What’s amazing is that when this seems like a really little thing, super simple mobile approval has a huge impact on the user experiance and the rate at which things get approved.

 

image

 

In the next post i’ll dig a little deeper into the rest of the activities i’m using in this flow and the powershell i’m using to actually apply the permissions to sharepoint once the flow is approved.

Storing password information securely in PowerShell Scripts

When folks are getting started with PowerShell logging into Office 365, often one will user Get-Credential to force PowerShell to prompt for a username and password.  That credential is then passed into operations such as logging into Office 365 or using the SharePoint PNP PowerShell modules.

When it comes time to automate these operations, I’ve seen far too many folks just hardcode a username and password in the script.  From my perspective, not the best idea from a security standpoint.  This simple script will allow you to securely capture your password and store it securely in a file on your system.  I would strongly suggest using NTLM permissions to lock access to the password file to only the user account your script will be running as.

 

Hope you find this useful:

 

SetPassword.ps1
$baseFilePath = “e:\PowerShell\”
$filePath =  $baseFilePath + “password.txt”

(Get-Credential).Password | ConvertFrom-SecureString | Out-File $filePath

 

Get Password Function

Function Get-StoredCredential
{
param( [string]$UserName, [string]$BasePath)

 

$File = $baseFilePath + “password.txt”
$FileContent = Get-Content $File
return New-Object -TypeName System.Management.Automation.PSCredential ` -ArgumentList $UserName, ($FileContent | ConvertTo-SecureString)
}

Update site collection quotas in SharePoint Online with PowerShell

Many articles have been posted about how to do this onprem, but i was looking around last week and didn’t see anyone sharing the technique to do this in SharePoint Online.

Every site collection in  SharePoint Online can be configured with a quota, but how do you know which ones are running out of space.  This script will let you automatically resize any that are running out of space by finding all site collections that are using 75% of their quota and doubling the site of the current quota.  This may not be the right numbers for your environment but i hope this sample gets you on off and running quickly.

 

#you’ll need the msonline service module to connecto to spo
import-module MSOnline

Resize.ps1

#import common functions
. “C:\mypath\functions.ps1”
#### configuration information

$baseFilePath = “C:\mypath\”

$tenantName = “mytenant

$userName = “my upn goes here

# this uses a custom function in the functions.ps1 files
$msolcred = Get-StoredCredential -UserName $userName -BasePath $baseFilePath

# this uses a custom function in the functions.ps1 files
$adminSite = Get-AdminSiteUrl $tenantName
Connect-SPOService –Url $adminSite  -credential $msolcred

# this will get all sites and limit to only those that are 75% of the way to their quota
$sites = Microsoft.Online.SharePoint.PowerShell\Get-SPOSite  -Limit ALL -Detailed |Where {($_.StorageUsageCurrent / $_.StorageQuota) -gt .75} |  Select URL, StorageQuota, StorageUsageCurrent, StorageQuotaWarningLevel, StorageQuotaType, Status
foreach($site in $sites){

Write-Output (“Site: ” + $site.Url + ” Usage:” + $site.StorageUsageCurrent + ” Quota:” + $site.StorageQuota + ” Warning Level:” + $site.StorageQuotaWarningLevel)

        # this will set the quota to double it’s current size, feel free to tweak to your needs
Microsoft.Online.SharePoint.PowerShell\Set-SPOSite -Identity $site.Url -StorageQuota ($site.StorageQuota*2)

}

 

Functions.ps1

Function Get-StoredCredential
{
param( [string]$UserName, [string]$BasePath)

 

$File = $baseFilePath + “password.txt”
$FileContent = Get-Content $File
return New-Object -TypeName System.Management.Automation.PSCredential ` -ArgumentList $UserName, ($FileContent | ConvertTo-SecureString)
}
Function Get-AdminSiteUrl
{
param([string]$TenantName)

return “https://” + $tenantName + “-admin.sharepoint.com”
}

Slides from SPTechCon Boston Sessions Now Available

Thanks to everyone who made SPTechCon this year so much fun!  Really well put together event and the feedback I’ve heard from people at the event was really incredible!

 

I wanted to share out a couple slide decks from my presentations:

 

“Your Intranet, Your Way” explores all the options available today to build a custom intranet on Office 365

Next Generation Collaboration with Team Sites, Groups, and Planner” explores what’s new in collaboartion and the business drivers behind the changes

 

I’d love your feedback on these sessions and hope to see you at the next show!

 

dave

 

245-sptc-bost15-speakerbadge_51b72e8f-5272-4912-a745-eb3d5fa9769f_4a09334c

SharePoint Apps Apps Apps : SharePoint, Outlook Groups, and OneDrive

Folks who have seen me speak about Office 365 Groups know what a big fan I am of the new Microsoft cloud first, mobile first strategy.  For years, all my documents were locked up behind a VPN client that killed my battery life when run on my phone and a web user experiance that was conceived long before the the consumerization of IT.

Office 365 Groups and the Outlook Groups App for iOS changed all that.  Office 365 Groups are a brilliant example of what might happen if a security group, a distribution list, and a SharePoint team site got together.  My project teams were always in the loop when i emailed a customer because i simply added the group to the email and knew that everyone on the team today or in the future would be able to follow what was happening on the project.  Planner let me organize the tasks for my team, PowerBI let me share data that was relevant to the team, OneNote kept all my project notes easily accessible, and files as it was called gave me a document library on a private site collection to store my project artifacts.  However, the document library was branded as OneDrive and lacked a number of the enterprise features such as metadata and content types that make SharePoint great.  The SharePoint experiance also lacked any support for lists, or the ability to have more than one library.

On May 4th Microsoft shared a bit of the vision and roadmap for SharePoint including that every Office 365 Group would get a real team site and new team sites can be associated with an Office 365 Group.

It may not seem like a huge deal, but this really changes the game in a huge way as users of SharePoint sites can take advantage all the services across Office 365 and maintain a common definition of who that team is really composed of.  For example, I can share a file from my OneDrive with Group created for a specific project.  In addition to some great web based user interface and native support inside Outlook 2016, Groups have a native iOS application called Outlook Groups that provides me access to conversations, files, members, and my onenote.  With the release of the new SharePoint mobile app and the coming soon integration of team sites and office 365 groups I was excited to explore how groups are supported within the new SharePoint mobile app.

 

IMG_7135

Let’s start with what’s I really love about the new SharePoint mobile app.

Persistent Login

For those who have been attempting to use SharePoint from the web, the persistent login is the first huge win.  Not entering my super secret password with all sorts of crazy characters on my phone is a big deal.

Relevant Suggestions on Sites

I spent this afternoon doing a session at SPTechCon on Office 365 Groups and Office Graph and I did a number of demo’s with a group named engineering.  I bounced back and forth between a few groups, but the majority of my demos were hosted inside Engineering.  When logging into the app whatever new signals Microsoft is watching in the Office Graph to determine relevant sites to present to me really worked well.  The engineering group is right there on the top.  Earlier in the day before doing the demos it wasn’t there but the search did exactly what you’d expect and found it easily.

 

IMG_7136

Activity Feed

This is something I’ve missed since our buddies at NewsGator disapeared around the release of SharePoint 2013.  Not a ton of data for me, but love the concept of being able to see at a glance what’s popular and what’s fresh on a particular site.

 

Enterprise Search

Easily search for Sites, Files, People, and Recomendation from the Graph.

Some stuff I’d love to see evolve a bit

IMG_7137

Integration between Activity and Conversations

Today Microsoft has not yet rolled out groups for each team site so this would be hard to do but I hope these two areas can evolve and maybe merge together at some point in the future.  Conversations in a way represent what’s happening on the team in terms of people communication about the project and activility captures the more interaction based history of what’s happening on a site.    I’d love to see these merge over time.

To make this a litle bit more challenging, clicking on conversations today opens the Outlook Groups App and shifts my context away from the SharePoint app.  Again, this is an area I’d love to see become a more integrated slick experiance.

 

IMG_7138 IMG_7139

Files

For me this is a really big one.  Inside a group (or team site) there is no way to directly get to your files.  Instead you see a list of recent files, popular files, and a link to the OneDrive app if you’d like to be able to browse all your files.  Once you click the OneDrive link you’ll get the OneDrive application which will open, authenicate, and evenutally load up the files in your document library.

Lists

Really neat that i can see all my lists from a mobile device but when you click to edit an item, at this point you get a nice coming soon message.  I’m not sure if this is just a lower priority for the app or if this may somehow tie into powerapps, but either way clearly an area that is still going to need additional love.

Integration

At this end of the day, this is where the fact that the Outlook Groups app has existed for a year really shows.  In a single pane it’s dead simple to navigate between my conversation history, my calendar events, and my files and folders.  All without needing to launch other apps or wait for additional logins.  As the Files compoent inside Groups matures into a full team site I really hope this level of polish and integration comes into the SharePoint app as well.

IMG_7140IMG_7141IMG_7142

Closing Thoughts

The future of SharePoint is really incredible right now.  We have a mobile SharePoint app that makes it dead simple to get to the sites we use everyday from a mobile device.  There is work to be done to realize the great potential of this new app, but we need to acknowlege that Microsoft is working fast and giving us access to see and help influence and shape the product earlier then ever before.  I look forward to many more great things shipping in the next few months and seeing the levels of polish and integration continue to improve.

If you’re a power user or someone who helps manage change in your organization I’d recomend grabbing a copy to play with and get a glance into the future.  If you prefer a more stable complete product, i’d stay with Outlook Groups for now but keep an eye on the SharePoint mobile app as it evolves.