Wednesday, May 31, 2017

Consuming data from On-premises into Office 365

Office 365 is a great platform for any organization size. It provides you as the user access to all kinds of applications and services that can help and benefit your organization and business processes. One of the questions I get asked a lot is about consuming On-premises data from a line of business application up into Office 365.

read more


by via SharePoint Pro

Tuesday, May 30, 2017

IT/DEV Connections: Making you a better SharePoint Developer

Many years ago, in a previous role, I opted to join the consultancy team, specifically to work with a new product due to come out at some point in 2001. At the time, it was available to those that worked directly with Microsoft on projects. I was working at the Microsoft campus in Reading, UK, and for the project I was on got access to nightly builds which would become SharePoint Portal Server 2001, as that project expanded I got to do the same for SharePoint 2003 as well. I would install and test it, repeating that cycle almost daily.

read more


by via SharePoint Pro

Tuesday, May 23, 2017

SharePoint and Office 365: The New Beautiful Cookbook Series

Most of us are “meat and potatoes” people when it comes to the technology we use. We like what we know and we know what we like. (Yes, there are vegan “seitan and potatoes” people, vegetarian “sprouts and potatoes” people, pescatarian “cod and potatoes” people, etc. I’m not trying to leave anyone out.)

Every once in a while, though, someone hands us a new ingredient – something we’ve never seen before, something we’ve never cooked with.

Image from the Netflix show Chef’s Table S3E6 – Virgilio Martinez

That new ingredient becomes a part of our pantry, and we want to try to cook with it. We’ve probably heard how delicious it is or how it can make an ordinary dish taste amazing.

Sometimes, we get a whole new palette of ingredients. (Many of us love to watch cooking shows for just this reason: we see novel dishes and decide if we’d like to try them at home.)

Image from the Netflix show Chef’s Table S3E6 – Virgilio Martinez

We need to take a ton of time to figure out what the new ingredients are, how we can work with them, and what we can cook. If we don’t cook with the ingredients pretty often, then we lose the knowledge of how to use them, what ripeness is best.

Writing off something because it tastes bad in one context means we may miss a great use of the ingredient later – a ripe plum tastes so much better than an unripe one. Once someone has eaten an unripe plum, they may decide they hate plums.

But if we can overcome these hurdles and learn about the new ingredients, we can make some incredible dishes.

Image from the Netflix show Chef’s Table S3E6 – Virgilio Martinez

This is what I think we are going through with SharePoint and Office 365 right now. Microsoft is offering us an entirely new set of ingredients with which to make our stew.

Let me give you an example…

In my “meat and potatoes” way of looking at the world, which has been pretty consistent for the last ten years or so, even though SharePoint and my approaches have evolved, I might use this set of ingredients:

  • A Single Page Application (SPA) written with AngularJS or KnockoutJS – or even just plain old JavaScript
  • A dollop of values passed on the query string to a…
  • Standard list form, with a little JavaScript mixed in to pre-populate some columns in the form
  • A SharePoint Designer workflow to add notifications on top (Substitute Alerts if your local market doesn’t carry SharePoint Designer)

But there are new ingredients now. Instead we could whip something up with these:

  • A SharePoint Framework Web Part (still maybe written with AngularJS or KnockoutJS)
  • Creating list items using REST based on the values in our SPFx Web Part
  • Microsoft Flow to add in the notifications and any process
  • Stir in a pinch of PowerApps – until they are ready

That’s quite a shift. We’re being asked to think about cooking in a very different way. We’ve been through stages of evolution before – new cooking techniques like sous vide (Sandbox Solutions), gelification (Add-In Model, nee App Model), etc. – but this time it’s really different. We’re not even sure if we’re supposed to like everything we taste. Is it just the next wave of kale frenzy or is it an ingredient that will last?

At this point, Microsoft is asking us to dream big, and reach for the previously unimaginable. I think we need to try to do it.

Image from the Netflix show Chef’s Table S3E6 – Virgilio Martinez

Some of us will be able to cook up truly amazing solutions on the “modern” platform. Don’t be afraid to give it a taste.

Image from the Netflix show Chef’s Table S3E6 – Virgilio Martinez

In case you didn’t figure it out, this post was inspired by the Netflix show Chef’s Table S3E6, which profiles the Peruvian chef Virgilio Martinez. It’s an outstanding series, and this particular episode was stellar.


by Marc D Anderson via Marc D Anderson's Blog

Wednesday, May 17, 2017

The Ultimate Script to download Microsoft Build 2017 Videos AND slides!

Download Build 2017

With the amount of great sessions at Build 2017 this year, there is no way you could have attended all, and even if they are posted on Channel9, you might want to download them to be able to view them offline! That is why I created this PowerShell Script so everyone can easily download Microsoft Build Videos AND slides whether they were present at Build or not! Here are the features:

  • Downloads all the Microsoft Build 2017 Sessions and Slides and description in a text file
  • Groups them by folders
  • Makes sure no errors come up due to Illegal File names.
  • If you stop the script and restart in the middle, it will start where it left off and not from beginning
  • Filter by keywords in the session title!
  • Ability to choose from HD videos, or lower quality.

Download the script from here! Do not copy paste from below as sometimes WordPress messes up the PowerShell!

How to use:

First, make sure to change the $downloadlocation variable. By default it saves it all in C:\Build

To download all sessions just run the script! (1TB of content in High Definition)  EX:

.\ DownloadBuild2017Content.ps1

To download sessions based on a keyword use the keyword parameters, and divide keywords by a comma. Make sure to use quotes around the keywords! EX:

.\ DownloadBuild2017Content.ps1 -keyword "Graph,Bluetooth"

To download sessions based on the session code, use the session parameter and divide sessions by a comma. Make sure to use quotes around the session codes!

.\DownloadBuild2017Content.ps1 -session "P4116,P4118,C9R04"

Note: By default, the videos are downloaded in High Definition. Downloading all the Build Videos in HD takes a lot of hard drive space. You can change the script (comment lines 18 and 19, and uncomment 21/22) in order to download the lower quality version of the videos.

Follow me on Social Media and Share this article with your friends!


Leave a comment and don’t forget to like the Absolute SharePoint Blog Page   on Facebook and to follow me on Twitter here  for the latest news and technical articles on SharePoint.  I am also a Pluralsight author, and you can view all the courses I created on my author page.

Here is the source code:

#Script written by Vlad Catrinescu
#Visit my site http://ift.tt/1eCEHiK
#Twitter: @vladcatrinescu
#Originally Posted here: http://ift.tt/2rr9kz9

Param(
  [string]$keyword,[string]$session
)


######    Variables  #####

#Location - Preferably enter something not too long to not have filename problems! cut and paste them afterwards
$downloadlocation = "C:\Build2017"
#Ignite 2016 Videos RSS Feed
[Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath 
$rss = (new-object net.webclient)
$video1 = ([xml]$rss.downloadstring("http://ift.tt/2qsELM8"))
$video2 = ([xml]$rss.downloadstring("http://ift.tt/2rr3HRw")) 
#other qualities for the videos only. Uncomment below and delete the two previous lines to download Mid Quality videos
#$video1 = ([xml]$rss.downloadstring("http://ift.tt/2qsCfFA"))
#$video2 = ([xml]$rss.downloadstring("http://ift.tt/2rr3FJo"))
$slide1 = ([xml]$rss.downloadstring("http://ift.tt/2qsOWAb"))
$slide2 = ([xml]$rss.downloadstring("http://ift.tt/2rrjVKg"))



#SCRIPT/ Functions  Do not touch below this line :)#
if (-not (Test-Path $downloadlocation)) { 
                Write-Host "Folder $fpath dosen't exist. Creating it..."  
                New-Item $downloadlocation -type directory | Out-Null
        }
set-location $downloadlocation

function CleanFilename($filename)
{
    return $filename.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")
}

function DownloadSlides($filter,$videourl)
{
    try 
    {    
        $videourl.rss.channel.item | Where{($_.title -like “*$filter*”) -or ($_.link -like "*/$filter")} | 
        foreach {
                $code = $_.comments.split("/") | select -last 1    
        
                # Grab the URL for the PPTX file
                $urlpptx = New-Object System.Uri($_.enclosure.url)  
            $filepptx = $code + "-" + $_.creator + "-" + (CleanFileName($_.title))
                $filepptx = $filepptx.substring(0, [System.Math]::Min(120, $filepptx.Length))
                $filepptx = $filepptx.trim()
                $filepptx = $filepptx + ".pptx" 
                if ($code -ne "")
                {
                         $folder = $code + " - " + (CleanFileName($_.title))
                         $folder = $folder.substring(0, [System.Math]::Min(100, $folder.Length))
                         $folder = $folder.trim()
                }
                else
                {
                        $folder = "NoCodeSessions"
                }
        
                if (-not (Test-Path $folder)) { 
                        Write-Host "Folder $folder dosen't exist. Creating it..."  
                        New-Item $folder -type directory | Out-Null
                }

                # Make sure the PowerPoint file doesn't already exist
                if (!(test-path "$downloadlocation\$folder\$filepptx"))     
                {       
                        # Echo out the  file that's being downloaded
                        write-host "Downloading slides: $filepptx"
                        #$wc = (New-Object System.Net.WebClient)  

                        # Download the MP4 file
                        #$wc.DownloadFile($urlpptx, "$downloadlocation\$filepptx")
                Start-BitsTransfer $urlpptx "$downloadlocation\$filepptx" -DisplayName $filepptx
                        mv $filepptx $folder 

                }
            else
            {
                        write-host "Slides exist: $filepptx"
            }
            }

     }
    
    catch
    {
        $ErrorMessage = $_.Exception.Message
        Write-host "$ErrorMessage"
    }
}


function DownloadVideos($filter,$slideurl)
{
#download all the mp4
# Walk through each item in the feed 
$slideurl.rss.channel.item | Where{($_.title -like “*$filter*”) -or ($_.link -like "*/$filter*")} | foreach{   
        $code = $_.comments.split("/") | select -last 1    
        
        # Grab the URL for the MP4 file
        $url = New-Object System.Uri($_.enclosure.url)  
        
        # Create the local file name for the MP4 download
        $file = $code + "-" + $_.creator + "-" + (CleanFileName($_.title))
        $file = $file.substring(0, [System.Math]::Min(120, $file.Length))
        $file = $file.trim()
        $file = $file + ".mp4"  
        
        if ($code -ne "")
        {
                 $folder = $code + " - " + (CleanFileName($_.title))
                 $folder = $folder.substring(0, [System.Math]::Min(100, $folder.Length))
                 $folder = $folder.trim()
        }
        else
        {
                $folder = "NoCodeSessions"
        }
        
        if (-not (Test-Path $folder)) { 
                Write-Host "Folder $folder) dosen't exist. Creating it..."  
                New-Item $folder -type directory | Out-Null
        }
        
        
        
        # Make sure the MP4 file doesn't already exist

        if (!(test-path "$folder\$file"))     
        {       
                # Echo out the  file that's being downloaded
                write-host "Downloading video: $file"
                #$wc = (New-Object System.Net.WebClient)  

                # Download the MP4 file
                Start-BitsTransfer $url "$downloadlocation\$file" -DisplayName $file
                mv $file $folder
        }
    else
    {
                write-host "Video exists: $file"
    }

#text description from session
        $OutFile = New-Item -type file "$($downloadlocation)\$($Folder)\$($Code.trim()).txt" -Force  
    $Category = "" ; $Content = ""
    $_.category | foreach {$Category += $_ + ","}
    $Content = $_.title.trim() + "`r`n" + $_.creator + "`r`n" + $_.summary.trim() + "`r`n" + "`r`n" + $Category.Substring(0,$Category.Length -1)
   add-content $OutFile $Content
                
        }
}



if ($keyword)
{
    $keywords = $keyword.split(",")
    
    foreach ($k in $keywords)
    {
        $k.trim()
        Write-Host "You are now downloading the sessions with the keyword $k"
        DownloadSlides $k $slide1
        DownloadSlides $k $slide2
        DownloadVideos $k $video1
        DownloadVideos $k $video2
    }
}
elseif ($session)
{
    $sessions = $session.Split(",")
    
    foreach ($s in $sessions)
    {
        $s.trim()
        Write-Host "You are now downloading the session $s"
        DownloadSlides $s $slide1
        DownloadSlides $s $slide2
        DownloadVideos $s $video1
        DownloadVideos $s $video2
    }

}
else
{
    DownloadSlides " " $slide1
    DownloadSlides " " $slide2
    DownloadVideos " " $video1
    DownloadVideos " " $video2
}

 

The post The Ultimate Script to download Microsoft Build 2017 Videos AND slides! appeared first on Absolute SharePoint Blog by Vlad Catrinescu.


by Vlad Catrinescu via Absolute SharePoint Blog by Vlad Catrinescu

Let’s Capture Missing or Insufficient SharePoint REST Endpoints

Today I got an alert that the SharePoint UserVoice suggestion from Corey Roth (@coreyroth) entitled Add managed metadata term store operations to REST API got the coveted “Thinking About It” tag from the Product Group. I like to tweet out changes like this to let people know the Product Group is listening and acting on our feedback – beyond saying “That’s good feedback!” It’s not all wine and roses, though:

Thank you for your feedback! Just letting you know that we absolutely have this in our backlog, but unfortunately this currently is not included in our short term engineering tasks. We absolutely understand the request and seeing vote counts around this, will help to further prioritize this work for next sprints.

I got a couple of tweets back right away pointing out some other current holes in the REST APIs.

If you think there are other endpoints the REST APIs need or endpoints that don’t work well, please add them to the comments here. I’ll work them up into a list for the Product Group and let’s see what we can get moving! We’ll play by the rules and add the list to UserVoice, but I think all the individual suggestions get lost and it’s harder to see the bigger picture.

The list so far:

  • Managed Metadata (aka Term Sets or Taxonomy – please stop making up multiple names for things Microsoft!!!)
  • Recurring Events – I have a long post in the works explaining how I handle this with a combination of REST and SOAP (with SPServices), and it isn’t pretty
  • Recurring events via the Search endpoint (Derek Gusoff)
  • Publishing – PublishingPageContent, PublishingPageImage (@gautamsheth)
  • Starting a site workflow – StartWorkflowOnListItemBySubscriptionId & StartWorkflow are only for list items (@BradOrluk)
  • Editing/adding Property Bag values (@alexaterentiev)

by Marc D Anderson via Marc D Anderson's Blog

Tuesday, May 16, 2017

SharePoint Virtual Summit Wrap-up

Today was a great day for those of us that work within SharePoint. If you did not participate then you truly missed some great information about the future of SharePoint and Office 365. The event was similar to the May 4th event from last year, albeit completely virtual this time. 

read more


by via SharePoint Pro

Sunday, May 14, 2017

Microsoft Build 2017 - My Favorite Highlights and Announcements

Microsoft Build 2017 - My Favorite Highlights and Announcements

If you're in this sphere, I am pretty sure you've also been either attending on-site, virtually attending or at least heard about what Build 2017 from Microsoft had to offer last week.

With this post I simply want to emphasize on some of the features and announcements that Microsoft did recently that I really liked. There was a lot more happening, but these are my key takeaways. Enjoy.

Azure Cloud Shell

A while ago I tweeted about a nice way Microsoft implemented a feature-teaser in the Azure Portal:

Well, at Build 2017 they kept their promise and disclosed - and opened up - the functionality of the Azure Cloud Shell.

It offers a quick and easy way to communicate with Azure and run commands through the bash interface, which also has the Azure CLI and PowerShell cmdlets available right there at the fingertips.

Best of all? You're already signed in and authenticated, so no need for any of those things either. (Which should give you a slight chill down your spine, not to jump into production and accidentally delete all of your data clusters...)

Check it out here:
Azure Cloud Shell

Azure Snapshot Debugging

Microsoft Build 2017 - My Favorite Highlights and Announcements

Now this is a pretty cool thing. Take a snapshot of your production environment, then you debug the snapshot instead of debugging your production environment. Mind blown.

Read more:
Introducing the Snapshot Debugger preview for Azure

Production debugging your cloud has never been so simple - http://ift.tt/2rgdlHt

Session video: Snapshot debugging and profiling in Microsoft Azure: Next generation diagnostics for your in-production cloud apps

Azure Cosmos DB (formerly DocumentDB)

Microsoft Build 2017 - My Favorite Highlights and Announcements

This is the successor to DocumentDB, if you've tried that.
Azure Cosmos DB is a globally distributed, multi-model database which supports many models including key-value, documents, graphs, columns and a bunch of API's etc.

Learn more: Welcome to Azure Cosmos DB

Fluent Design System

Microsoft Build 2017 - My Favorite Highlights and Announcements

Fluent Design is a revamp of Microsoft Design Language 2 that will include guidelines for the designs and interactions used within software designed for all Windows 10 devices and platforms. The system is based on five key components: Light, Depth, Motion, Material, and Scale. - Source: http://ift.tt/2rgt3lW

Check it out: Microsoft Fluent Design System

OneDrive Files On-Demand

Microsoft Build 2017 - My Favorite Highlights and Announcements

One of the most popular UserVoice suggestions for OneDrive was submitted in July 15,2015. It has finally been heard and with the announcements at Build 2017, it appears we're finally getting selective sync or files on-demand.

Read the announcement: http://ift.tt/2pC1LEm

Azure Batch AI Training

Microsoft Build 2017 - My Favorite Highlights and Announcements

Azure Batch AI Training helps you experiment in parallel with your AI models using any framework and then train them at scale across clustered GPUs. Simply describe your job requirements and configuration to run, and we’ll handle the rest.

What can I say. I love things that scale, and I love building clusters of processing power - and making the applications better at the same time. If this is your type of thing, you should check out the Azure Batch AI Training. They're throwing it all into some Docker containers for easy virtualization and then off you go, because they also take care of any plumbing required.

In other words; Train your AI and Machine learning products and don't worry about any hardware - just do the fun stuff and Microsoft has your back on the rest!

Watch the Sessions for Free

In their continued awesome fashion, Microsoft is releasing most (if not all) recordings from the Build conference. They're available on Channel 9 for everyone to freely enjoy.

Check them out here:

http://ift.tt/2oYijLy


by Tobias Zimmergren via Zimmergren's thoughts on tech