<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8113781268101811836</id><updated>2018-10-29T10:20:13.503+01:00</updated><category term="SharePoint 2007"/><category term="SharePoint 2013"/><category term="SharePoint API"/><category term="Azure"/><category term="PowerShell"/><category term="SharePoint Online"/><category term="Visual Studio 2008"/><category term="Office365"/><category term="Team Services"/><category term="SharePoint 2010"/><category term="SharePoint Errors"/><category term="SharePoint Package"/><category term="ADFS"/><category term="GAC"/><category term="IIS7"/><category term="Infopath 2007"/><category term="OneDrive"/><category term="Visual Studio 2010"/><category term="Visual Studio 2012"/><category term="Visual Studio 2015"/><category term="Windows 7"/><category term="Windows Server 2008"/><category term="Windows Server 2012"/><category term="Workflow"/><title type='text'>SharePoint (almost) Logic</title><subtitle type='html'>My technical Blog for SharePoint and Office 365.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-8662017350193755277</id><published>2018-09-07T14:59:00.001+02:00</published><updated>2018-09-07T14:59:30.676+02:00</updated><title type='text'>Provision images in a communication site&#39;s style library with PowerShell</title><content type='html'>&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt;  &lt;meta charset=&quot;utf-8&quot;&gt;  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;  &lt;title&gt;Provision images in a communication site&amp;#x27;s style library with PowerShell&lt;/title&gt;  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackedit.io/style.css&quot; /&gt;&lt;/head&gt; &lt;body class=&quot;stackedit&quot;&gt;  &lt;div class=&quot;stackedit__html&quot;&gt;&lt;p&gt;To programmatically provision an image to the Style Library folder of a SharePoint Online modern communication site the trick is that you must first enable customizations on the site collection or else you will get an “Access Denied” error.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Import-Module &quot;Microsoft.Online.SharePoint.PowerShell&quot;&lt;br /&gt;Connect-SPOService -Url &quot;https://contoso-admin.sharepoint.com&quot; -Credential $Credentials&lt;br /&gt;Set-SpoSite -Identity &quot;https://contoso.sharepoint.com/sites/thesite&quot; -DenyAddAndCustomizePages $false&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then use PnP PowerShell to upload the file:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Import-Module SharePointPnPPowerShellOnline&lt;br /&gt;$assetsFolderPath = &quot;Style Library/myfolder&quot;&lt;br /&gt;Add-PnPFile -Folder $assetsFolderPath -Path &quot;.\myimage.png&quot;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/body&gt; &lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/8662017350193755277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=8662017350193755277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/8662017350193755277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/8662017350193755277'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2018/09/provision-images-in-communication-sites.html' title='Provision images in a communication site&#39;s style library with PowerShell'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-6020282942352077832</id><published>2018-08-21T01:13:00.000+02:00</published><updated>2018-08-21T01:13:40.833+02:00</updated><title type='text'>Replace vscode terminal with cmder</title><content type='html'>If you’re using &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;vscode&lt;/a&gt;&amp;nbsp;on windows and use command line quite a lot you probably already like the convenient &lt;a href=&quot;https://code.visualstudio.com/docs/editor/integrated-terminal&quot;&gt;integrated terminal&lt;/a&gt;. If like me you happen to also use git command lines frequently you probably already use an alternative terminal such as &lt;a href=&quot;http://cmder.net/&quot;&gt;Cmder&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-P846FkVlAtg/W3tGRmB_P_I/AAAAAAAAKMg/v6htZeyVsYEDcGacRoDrT8InOHAluv2WQCHMYCw/s1600-h/image%255B21%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;432&quot; src=&quot;https://lh3.googleusercontent.com/-8iHNdb03q6A/W3tGTSvpHAI/AAAAAAAAKMo/zttlG1INZuIE70Z1IKKwV2AHnbLjvacIgCHMYCw/image_thumb%255B11%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One cool thing with vscode is that you can actually replace the default terminal that happens to be the well known &lt;em&gt;cmd.exe&lt;/em&gt; whom has no git integration. &lt;br /&gt;If you try to directly add the path to cmder in your user settings &lt;code&gt;&quot;terminal.integrated.shell.windows&quot;: &quot;C:\\Program Files\\cmder_mini\\Cmder.exe&quot;&lt;/code&gt; you will end with a behaviour where cmder opens in a new window.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To correctly use cmder with vscode first go to the folder where you’ve installer cmder (in my case it’s &lt;em&gt;C:\Program Files\cmder_mini&lt;/em&gt;) and create a file named &lt;code&gt;vscode.bat&lt;/code&gt;.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-lVH76bVt_j0/W3tGV6_21gI/AAAAAAAAKMs/4hwHKn4y8lwPAyhugZN-Nm3jo7Ao3FoKgCHMYCw/s1600-h/image%255B22%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;348&quot; src=&quot;https://lh3.googleusercontent.com/-xExnZfpJJt0/W3tGXhV1PrI/AAAAAAAAKMw/RyuyPSBqCnwctvbzR1K9a7JwvqDX5a3bwCHMYCw/image_thumb%255B12%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this file paste the following code (replace the &lt;em&gt;CMDER_ROOT&lt;/em&gt; path with your path to your cmder folder)  :&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot; language-sh&quot;&gt;&lt;code class=&quot;prism  language-sh&quot;&gt;@echo off&lt;br /&gt;SET CMDER_ROOT=C:\Program Files\cmder_mini&lt;br /&gt;&quot;%CMDER_ROOT%\vendor\init.bat&quot;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now open vscode and hit &lt;code&gt;F1&lt;/code&gt; and type “&lt;strong&gt;user settings&lt;/strong&gt;”.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-EZ8FdooZhtM/W3tFHnFpTpI/AAAAAAAAKLw/yIMIjQri3oE-DoYhny9IR8VRdcPPS3n4QCHMYCw/s1600-h/image%255B12%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;159&quot; src=&quot;https://lh3.googleusercontent.com/-wJ0Pu0ZdlvM/W3tFIe2_gZI/AAAAAAAAKL0/uM4Ng1y-U0sNiXrOoEnhdz6JGkga_QKiACHMYCw/image_thumb%255B6%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;1028&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Append the following to your JSON user settings (adjust path to the &lt;em&gt;.bat&lt;/em&gt; file if needed):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&quot;terminal.integrated.shell.windows&quot;: &quot;C:\\WINDOWS\\sysnative\\cmd.exe&quot;,&lt;br /&gt;&quot;terminal.integrated.shellArgs.windows&quot;: [&quot;/K&quot;, &quot;C:\\Program Files\\cmder_mini\\vscode.bat&quot;],&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/--DsnDTjioFY/W3tFKV81_5I/AAAAAAAAKL4/va1Il0Dz6gQdagcdglRZF3Pmx3KDCMVFgCHMYCw/s1600-h/image%255B16%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;410&quot; src=&quot;https://lh3.googleusercontent.com/-RGB7tdCAR6s/W3tFMKC3bkI/AAAAAAAAKL8/Sl-ksbX3hOoYa8BgiZWu2wtfId7QsscyACHMYCw/image_thumb%255B8%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;1028&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Restart vscode, you should now have cmder embedded in vscode.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-vegyJu1dqFo/W3tFNd_8MFI/AAAAAAAAKMA/G0n7288t3qsIC7Y8xCoIQNiplruIEx3ugCHMYCw/s1600-h/image%255B20%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;772&quot; src=&quot;https://lh3.googleusercontent.com/-oDJapq5DKs4/W3tFOuWbeSI/AAAAAAAAKME/uB-6oiPILDgTLpVSDjzqH5piy3XZElWcgCHMYCw/image_thumb%255B10%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;969&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/6020282942352077832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=6020282942352077832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6020282942352077832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6020282942352077832'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2018/08/replace-vscode-terminal-with-cmder.html' title='Replace vscode terminal with cmder'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-8iHNdb03q6A/W3tGTSvpHAI/AAAAAAAAKMo/zttlG1INZuIE70Z1IKKwV2AHnbLjvacIgCHMYCw/s72-c/image_thumb%255B11%255D?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-5835008626983925027</id><published>2018-07-13T10:17:00.002+02:00</published><updated>2018-07-13T10:17:44.098+02:00</updated><title type='text'>PSConfig Upgrade commands by SharePoint Server Version</title><content type='html'>&lt;p&gt;Following official doc the given PSConfig command to upgrade local SharePoint Server has evolved, this is just a memo&lt;/p&gt;&lt;h3 id=&quot;sharepoint-server-2016&quot;&gt;SharePoint Server 2016&lt;/h3&gt;&lt;pre class=&quot; language-sh&quot;&gt;&lt;code class=&quot;prism  language-sh&quot;&gt;PSConfig.exe -cmd upgrade -inplace b2b -wait -cmd applicationcontent -install -cmd installfeatures -cmd secureresources&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/sharepoint/upgrade-and-update/install-a-software-update&quot;&gt;https://docs.microsoft.com/en-us/sharepoint/upgrade-and-update/install-a-software-update&lt;/a&gt;&lt;/p&gt;&lt;h3 id=&quot;sharepoint-server-20132010&quot;&gt;SharePoint Server 2013/2010&lt;/h3&gt;&lt;pre class=&quot; language-sh&quot;&gt;&lt;code class=&quot;prism  language-sh&quot;&gt;PSConfig.exe -cmd upgrade -inplace b2b -wait&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; </content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/5835008626983925027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=5835008626983925027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/5835008626983925027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/5835008626983925027'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2018/07/psconfig-upgrade-commands-by-sharepoint_13.html' title='PSConfig Upgrade commands by SharePoint Server Version'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-2325513683149404448</id><published>2018-01-03T16:42:00.001+01:00</published><updated>2018-01-03T17:08:03.683+01:00</updated><title type='text'>Change SQL Server Collation on an Azure VM</title><content type='html'>&lt;p&gt;Microsoft Azure has a very nice set of VM templates to have you going fast when provisioning new machines including pre-configured SQL Servers.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-O7y8JdpJ6DU/Wkz_BhH7QeI/AAAAAAAAKCI/X1uFQrfvJqAiJrrSkYea9y9oCjmlGy0wACHMYCw/s1600-h/image%255B5%255D&quot;&gt;&lt;img width=&quot;1028&quot; height=&quot;696&quot; title=&quot;image&quot; style=&quot;display: inline; background-image: none;&quot; alt=&quot;image&quot; src=&quot;https://lh3.googleusercontent.com/-nYeD0Qnl5dw/Wkz_CRSdBOI/AAAAAAAAKCM/fteykHppUxMhyB3zoKY4MffUKp8_BtNIQCHMYCw/image_thumb%255B3%255D?imgmax=800&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Unfortunately those SQL Server templates come with the default “SQL_Latin1_General_CP1_CI_AS” collation when created.&lt;/p&gt;&lt;p&gt;If you’re used to building SharePoint Server infrastructures you probably know that SharePoint will require using “Latin1General_CI_AS_KS_WS”, so in order to use the stock VM template you must change the collation.&lt;/p&gt;&lt;p&gt;Chance is that this operation is pretty simple according to documentation &lt;a title=&quot;https://docs.microsoft.com/en-us/sql/relational-databases/collations/set-or-change-the-server-collation&quot; href=&quot;https://docs.microsoft.com/en-us/sql/relational-databases/collations/set-or-change-the-server-collation&quot;&gt;https://docs.microsoft.com/en-us/sql/relational-databases/collations/set-or-change-the-server-collation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;On Azure SQL Server VM Templates the setup media can be found en the “C:\” drive, on my SQL 2016 example it is under “C:\SQLServerFull\”.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-9zJc_7qFRAM/Wkz_DFasFDI/AAAAAAAAKCQ/ji3qrbBN47wEbVzp_C266Rmvo2cycuHfACHMYCw/s1600-h/image%255B13%255D&quot;&gt;&lt;img width=&quot;644&quot; height=&quot;379&quot; title=&quot;image&quot; style=&quot;display: inline; background-image: none;&quot; alt=&quot;image&quot; src=&quot;https://lh3.googleusercontent.com/-CnZ-uguVl7M/Wkz_D5KkTqI/AAAAAAAAKCU/uwR_-ZJjFS090qYWYF58iHtrvA9JEMZxwCHMYCw/image_thumb%255B7%255D?imgmax=800&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Here are the steps:&lt;/p&gt;&lt;p&gt;(Remember that if you have existing data you’ll have to backup before proceeding)&lt;/p&gt;&lt;p&gt;1) Loggon to the server with the SQL admin account, in my case I use the local admin account “sqladmin” that was created with my fresh VM&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;2) Open a command promp and navigate to the sql installation media “C:\SQLServerFull\”&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;2) Run the following command&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt; &lt;pre class=&quot;prettyprint&quot;&gt;Setup /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLCOLLATION=Latin1General_CI_AS_KS_WS /SQLSYSADMINACCOUNTS=sqladmin&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-4WvLsLuC1wo/Wkz_EjIZWKI/AAAAAAAAKCY/WRCWgcxZrgI4qw4t-JztKpVrvmkwjWxCACHMYCw/s1600-h/image%255B9%255D&quot;&gt;&lt;img width=&quot;2232&quot; height=&quot;270&quot; title=&quot;image&quot; style=&quot;display: inline; background-image: none;&quot; alt=&quot;image&quot; src=&quot;https://lh3.googleusercontent.com/-1aYcqORfzoc/Wkz_GIVvMNI/AAAAAAAAKCc/rO5xqBoJQy0iOC6M1mx2Q8j88tvde0o8QCHMYCw/image_thumb%255B5%255D?imgmax=800&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;And “Voilà” it’s done:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-IqhAoMXmdAE/Wkz_3xjfoII/AAAAAAAAKCk/ERL5fSTr4zEb5341Od4ENC93-_1tWA5JACHMYCw/s1600-h/image%255B17%255D&quot;&gt;&lt;img width=&quot;851&quot; height=&quot;772&quot; title=&quot;image&quot; style=&quot;display: inline; background-image: none;&quot; alt=&quot;image&quot; src=&quot;https://lh3.googleusercontent.com/-sXMxI24Bt_E/Wkz_4tw-oyI/AAAAAAAAKCo/-gPL6JfHORg4NQSNmCO_Im97UfmsIOBVwCHMYCw/image_thumb%255B9%255D?imgmax=800&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/2325513683149404448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=2325513683149404448' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2325513683149404448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2325513683149404448'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2018/01/change-sql-server-collation-on-azure-vm.html' title='Change SQL Server Collation on an Azure VM'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-nYeD0Qnl5dw/Wkz_CRSdBOI/AAAAAAAAKCM/fteykHppUxMhyB3zoKY4MffUKp8_BtNIQCHMYCw/s72-c/image_thumb%255B3%255D?imgmax=800" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-2527587999129508805</id><published>2017-06-05T12:08:00.000+02:00</published><updated>2017-06-05T12:08:09.477+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ADFS"/><category scheme="http://www.blogger.com/atom/ns#" term="Azure"/><category scheme="http://www.blogger.com/atom/ns#" term="Office365"/><title type='text'>Remove Office365/Azure domain Federation when ADFS is down</title><content type='html'>Panic on board ADFS is down ! Power outage in the datacenter on a public holiday and no one can connect to cloud services OMG !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How to remove federation when ADFS is down ?&lt;br /&gt;This will be a rather slow process but it’s possible, the only prerequist is &lt;u&gt;to have Password Hash sync enabled&lt;/u&gt; on AADConnect.&lt;br /&gt;&lt;br /&gt;First open the Azure Powershell prompt and connect with a &lt;u&gt;cloud only&lt;/u&gt; account (or an account that is not federated) that has global admin priviledges.&lt;br /&gt;Use the “Connect-MsolService”.&lt;br /&gt;&lt;br /&gt;Next check existing domains with “Get-MsolDomain”, your domain should be marked as “Federated”.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-6b1ssWqeRdM/WTUsdi3FvhI/AAAAAAAAJ6s/Cbz8D90vRa0MHO8r5-Vek5R9jDSpJV3cgCHM/s1600-h/image%255B4%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;277&quot; src=&quot;https://lh3.googleusercontent.com/-FcAhTaBw_sY/WTUseRFNqrI/AAAAAAAAJ6w/PXWw4oJx5FoJIE_YWHisbXOokWd5xaK9gCHM/image_thumb%255B2%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;805&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then you need two things, set authentication to Managed and convert existing accounts to Managed.&lt;br /&gt;To set authentification use “Set-MsolDomainAuthentication -DomainName &quot;mydomain.com&quot; -Authentication Managed”, you can check behind that value has changed with “Get-MsolDomain”.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-mbjJ5-vX_xY/WTUsfBCInkI/AAAAAAAAJ60/BgzmQgbSXycHi0ANsbjjDU31DmuxbCj-gCHM/s1600-h/image%255B12%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;325&quot; src=&quot;https://lh3.googleusercontent.com/-fevmKWl-Jes/WTUsfoxfyOI/AAAAAAAAJ64/EtFlWkqZyC4Oe60PeE5Hd4InFhZ1EYECgCHM/image_thumb%255B6%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;1708&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok so to force convertion of existing account you get to use “Convert-MsolDomainToStandard” but unfortunately it won’t because ADFS is down and this command needs it… (grrrrrr).&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-drEQa5NcI7I/WTUsgrM7h8I/AAAAAAAAJ68/0BkxyYut2AYGSFGUTM7knzVy02JHg_A1wCHM/s1600-h/image%255B8%255D&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;339&quot; src=&quot;https://lh3.googleusercontent.com/-Laq6vlgULB0/WTUshphUfRI/AAAAAAAAJ7A/MYcBQa7LpyUUSu5mBzGFuIbyK-O4jxh3wCHM/image_thumb%255B4%255D?imgmax=800&quot; style=&quot;background-image: none; display: inline;&quot; title=&quot;image&quot; width=&quot;1844&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At this stage if you try to connect with a domain account you still get redirected to the outaged ADFS server because user account is not converte yet.&lt;br /&gt;What I found out is that if you leave it as is accounts will get converted automatically by a background job but it can take several hours, it’s slow but in the end users get converted without the need of having the ADFS running.&lt;br /&gt;&lt;br /&gt;If you’re in deep sh*t and really need to switch to Managed this is the way to go, at least it’s work for me.&lt;br /&gt;If you have an other solution please comment &lt;img alt=&quot;Smile&quot; class=&quot;wlEmoticon wlEmoticon-smile&quot; src=&quot;https://lh3.googleusercontent.com/-A6ROPQF7u_0/WTUsiLn9vII/AAAAAAAAJ7E/n9xXX2QxgE87MtNwXlLyItHpYCwton88QCHM/wlEmoticon-smile%255B2%255D?imgmax=800&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/2527587999129508805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=2527587999129508805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2527587999129508805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2527587999129508805'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2017/06/remove-office365azure-domain-federation.html' title='Remove Office365/Azure domain Federation when ADFS is down'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-FcAhTaBw_sY/WTUseRFNqrI/AAAAAAAAJ6w/PXWw4oJx5FoJIE_YWHisbXOokWd5xaK9gCHM/s72-c/image_thumb%255B2%255D?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-5784897383914259623</id><published>2017-03-31T16:22:00.000+02:00</published><updated>2017-03-31T16:22:30.956+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Azure"/><category scheme="http://www.blogger.com/atom/ns#" term="Office365"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Team Services"/><title type='text'>SharePoint Online Continuous Delivery with Visual Studio Team Services (part 3)</title><content type='html'>Link to part 1/3: &lt;a href=&quot;https://sharepointologic.blogspot.fr/2017/01/sharepoint-online-continuous-delivery_17.html&quot;&gt;https://sharepointologic.blogspot.fr/2017/01/sharepoint-online-continuous-delivery_17.html&lt;/a&gt;&lt;br /&gt;Link to part 2/3: &lt;a href=&quot;https://sharepointologic.blogspot.fr/2017/01/sharepoint-online-continuous-delivery_17.html&quot; title=&quot;https://sharepointologic.blogspot.fr/2017/02/sharepoint-online-continuous-delivery.html&quot;&gt;https://sharepointologic.blogspot.fr/2017/02/sharepoint-online-continuous-delivery.html&lt;/a&gt;&lt;br /&gt;In this post I&#39;ll focus on how to configure Visual Studio Team Services to enable automatic deployment.&lt;br /&gt;&lt;br /&gt;Now that source code and deployment agent are ready (see post 1 &amp;amp; 2) we can proceed&amp;nbsp; configuring the deploy pipeline.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Making the Build Definition&lt;/h2&gt;First you need to create a Build Definition in order to create an Artefact with your source code. Go ahead and go to &quot;Build &amp;amp; Release &amp;gt; Builds&quot;.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/--DGogIV0B8o/WN5Nmuo7OQI/AAAAAAAAJ1U/X668hTC9kqY/s1600-h/image%25255B29%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://lh3.googleusercontent.com/-WV4PDd_KAck/WN5NnUdYmmI/AAAAAAAAJ1Y/vgnPhoFVi24/image_thumb%25255B25%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;252&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select create a new build definition and just select the &quot;Visual Studio&quot; template and hit Next.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-Vv-P1i0Pb2o/WN5lAZE-vKI/AAAAAAAAJ2A/4Wnoc5THWA0/s1600-h/image%25255B58%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;383&quot; src=&quot;https://lh3.googleusercontent.com/-bF5o4qvhw2o/WN5lBZnX0fI/AAAAAAAAJ2E/1uuP1RxO-Ow/image_thumb%25255B38%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You should get to this:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-UNxujHOvnVM/WN5NrV7G8YI/AAAAAAAAJ1k/ZAYUVeuKNpI/s1600-h/image%25255B53%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;382&quot; src=&quot;https://lh3.googleusercontent.com/-CAT0o4qXWGg/WN5NsKqNj8I/AAAAAAAAJ1o/dyrH1E2Gwbk/image_thumb%25255B35%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To make it simple just remove tasks for : NuGet, Buil solution, Test and Publish. You should be left with the following:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-x0QWgHhUKAg/WN5lCksaAfI/AAAAAAAAJ2I/wFHo52LQkbs/s1600-h/image%25255B57%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;315&quot; src=&quot;https://lh3.googleusercontent.com/-iZhDuWVw170/WN5lDt_5tjI/AAAAAAAAJ2M/kFQWJIgHGiM/image_thumb%25255B37%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Edit the &quot;Copy Files&quot; task and set Contents to &quot;**&quot; to select all files.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-3ksTTPE68EU/WN5lEo4bCgI/AAAAAAAAJ2Q/BEyheBNOJsY/s1600-h/image%25255B87%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-fak957uLq58/WN5lFdGi93I/AAAAAAAAJ2U/c1aGQfNsWNg/image_thumb%25255B57%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;532&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then go to &quot;Options&quot; and select &quot;Default&quot; in the &quot;Default agent queue&quot; menu. This will make the job run on our custom Agent (see blog post 2/3)&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-4ctYBwTSmj4/WN5lGOY35hI/AAAAAAAAJ2Y/hIiVxTvpDC8/s1600-h/image%25255B117%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;174&quot; src=&quot;https://lh3.googleusercontent.com/-V9UIpOOKFnM/WN5lHv--hAI/AAAAAAAAJ2c/XiConx39A-M/image_thumb%25255B73%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then click &quot;Save &amp;amp; queue&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/--7YYMnIWE9c/WN5lIf4pL-I/AAAAAAAAJ2g/wL80ZoeOZrk/s1600-h/image%25255B75%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://lh3.googleusercontent.com/-DNDp2ZHQjPk/WN5lJQq8rxI/AAAAAAAAJ2k/wRoCcfxDlLs/image_thumb%25255B51%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agent queue should be on &quot;Default&quot;, then click &quot;Queue&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-o24o6m0k6I4/WN5lKPSrM0I/AAAAAAAAJ2o/2DKLyoLtwEA/s1600-h/image%25255B121%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-ihXxpOnvvU0/WN5lK-WnVlI/AAAAAAAAJ2s/jXVPtF9ixSA/image_thumb%25255B75%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;552&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Build should complete and source copied in the Artefact:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-kx9WXkewcLM/WN5lL0m9RrI/AAAAAAAAJ2w/L__xTLkfY1g/s1600-h/image%25255B92%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;381&quot; src=&quot;https://lh3.googleusercontent.com/-v1mAnv-d9nA/WN5lM3kSnaI/AAAAAAAAJ20/pw-Dk9lcgOE/image_thumb%25255B60%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can check the content of the Artefact using the dedicated tab after build success:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-hG9w0w5i1t0/WN5lN5fJfbI/AAAAAAAAJ24/VgOQYdbYQDk/s1600-h/image%25255B97%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://lh3.googleusercontent.com/-UhK_Uic7q2c/WN5lOgbuzKI/AAAAAAAAJ28/Eo6InwRDDfQ/image_thumb%25255B63%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;405&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Make Release Definition&lt;/h2&gt;Now that the Artefact is generated we can make the Release Definition that will handle deployment to target environments.&lt;br /&gt;Go to the Release Tab and click &quot;+ New Definition&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-5UOOEkSUJaE/WN5lPnOCirI/AAAAAAAAJ3A/7Yl1893kQ_o/s1600-h/image%25255B101%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;371&quot; src=&quot;https://lh3.googleusercontent.com/-IeS69a14Ly0/WN5lQgxD1SI/AAAAAAAAJ3E/MbsIv67ayAc/image_thumb%25255B65%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select the &quot;Empty&quot; template&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-4oiuGNgqJVg/WN5lR8JNWMI/AAAAAAAAJ3I/xdh2yPHbr7g/s1600-h/image%25255B105%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-4at2aiVhBOE/WN5lSvJG58I/AAAAAAAAJ3M/Yruh2NC-Io4/image_thumb%25255B67%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;439&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select the Build Definition created previously. If you need to automate deployment process to start after build check &quot;Continuous deployment&quot; else you can change this setting later.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/--x8Kaj5T0yE/WN5lTZVhmoI/AAAAAAAAJ3Q/LiJE47_iF6M/s1600-h/image%25255B109%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-HJ_d41gPx1Y/WN5lUVvNPyI/AAAAAAAAJ3U/XtVizlNgRhs/image_thumb%25255B69%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;434&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will be brought to this screen&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-Lr-jKXfoKiU/WN5lVLQeUaI/AAAAAAAAJ3Y/9JK9ekaGkis/s1600-h/image%25255B113%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://lh3.googleusercontent.com/-Eu2s0HHFSN0/WN5lWAbSI0I/AAAAAAAAJ3c/DE7wbUGZuvM/image_thumb%25255B71%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click &quot;Run on agent&quot; link&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-SNE8TsQ89D8/WN5lW__cDPI/AAAAAAAAJ3g/LlD74-WZhJg/s1600-h/image%25255B136%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;128&quot; src=&quot;https://lh3.googleusercontent.com/-lkiNBMXPPhA/WN5lXhAN7EI/AAAAAAAAJ3k/I3XyGqioEQc/image_thumb%25255B82%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And set Deploymnent queue to &quot;Default&quot; (to select our custom agent)&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-6joPJWEgj8M/WN5lYiR_IpI/AAAAAAAAJ3o/iZzQJP9U2-g/s1600-h/image%25255B140%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;304&quot; src=&quot;https://lh3.googleusercontent.com/-eaXIVodRQDc/WN5lZe7LcfI/AAAAAAAAJ3s/8rxk1Lk8_U0/image_thumb%25255B84%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then click &quot;Add tasks&quot; and select &quot;PowerShell&quot; under &quot;Utility&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-59dKtT3VwIg/WN5ladWF9WI/AAAAAAAAJ3w/cQJkJnJNOsc/s1600-h/image%25255B129%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-JQlI33Ng08U/WN5lbK84kSI/AAAAAAAAJ30/2PkZ5LITMOA/image_thumb%25255B79%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;471&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For script path select the &quot;prov.ps1&quot; file from the sources:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-YdS_G_0U4no/WN5lcMyB7PI/AAAAAAAAJ34/PUk5HR1rdss/s1600-h/image%25255B133%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;361&quot; src=&quot;https://lh3.googleusercontent.com/-BbbeO5bi2g4/WN5lczX6bqI/AAAAAAAAJ38/d_eafz9uG8Y/image_thumb%25255B81%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then with the environment menu select &quot;Configure variables…&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-WDqcQR1o_yc/WN5ldlV4NKI/AAAAAAAAJ4A/Ip8zjKFYaPg/s1600-h/image%25255B154%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;74&quot; src=&quot;https://lh3.googleusercontent.com/-ZbpKmDWeQg0/WN5leoGL7ZI/AAAAAAAAJ4E/ohPHxJJ2nzk/image_thumb%25255B90%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you remind post 1 we had prepared these lines in the script:&lt;br /&gt;&lt;pre class=&quot;class=&quot; prettyprint=&quot;&quot;&gt;# Get site url&lt;br /&gt;set-variable -scope Global -name siteUrl -value $env:siteUrl&lt;br /&gt;&lt;br /&gt;# Get credentials&lt;br /&gt;$password = $env:deploypassword | ConvertTo-SecureString -asPlainText -Force&lt;br /&gt;$username = $env:deployusername&lt;br /&gt;$cred = New-Object System.Management.Automation.PSCredential($username,$password)&lt;/pre&gt;&lt;br /&gt;So add variables accordingly and click OK:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-6UoWXC3O21k/WN5lfJK-mMI/AAAAAAAAJ4I/IALwLHtBnTw/s1600-h/image%25255B162%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://lh3.googleusercontent.com/-huBvc5FO4ak/WN5lf48_D6I/AAAAAAAAJ4M/18AanYk0XjA/image_thumb%25255B94%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then with the environment menu Clone as much as needed&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-GDXwBVVfXcQ/WN5lgx5jWtI/AAAAAAAAJ4Q/JXfN7m2sN8I/s1600-h/image%25255B143%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://lh3.googleusercontent.com/-lCTzgfttn_E/WN5lh3mbOBI/AAAAAAAAJ4U/iTpO4hQGNss/image_thumb%25255B85%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You should end with this:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-4XtALfdi46k/WN5liivbUvI/AAAAAAAAJ4Y/jpPTBqtPi9s/s1600-h/image%25255B125%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;340&quot; src=&quot;https://lh3.googleusercontent.com/-Q8A685oYnQI/WN5ljnlthHI/AAAAAAAAJ4c/3XyYdrqYYhA/image_thumb%25255B77%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The last step required is setting up variables for each environment. Go to &quot;Variables&quot; tab then select &quot;Environment variables&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-GnZFoFtPE2g/WN5lkTheNsI/AAAAAAAAJ4g/nDfbx5eyk-I/s1600-h/image%25255B147%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;93&quot; src=&quot;https://lh3.googleusercontent.com/-WqDSF3tNIuk/WN5llOYKJRI/AAAAAAAAJ4k/Oc3ctX0UbN8/image_thumb%25255B87%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Complete UAT and PRD values. This is what enables using the same &quot;prov.ps1&quot; script for multiple environments:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-cOFkuMZWbUQ/WN5ll4bp1GI/AAAAAAAAJ4o/Vomz7qHlgBY/s1600-h/image%25255B151%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;197&quot; src=&quot;https://lh3.googleusercontent.com/-OnS51fZsFhg/WN5lmmUEXwI/AAAAAAAAJ4s/-DxVdxW-vKM/image_thumb%25255B89%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now save the definition and test it with &quot;Create Release&quot;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-3dwbDwV5-fQ/WN5lned4rBI/AAAAAAAAJ4w/0bTp2XaQmTk/s1600-h/image%25255B166%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;149&quot; src=&quot;https://lh3.googleusercontent.com/-pmLZrqYKod4/WN5ln3UlhPI/AAAAAAAAJ40/ew1Zsh-AX80/image_thumb%25255B96%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;262&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From here you should have a functional basic deployment pipeline for your SharePoint Online Sites and you can start playing DevOps style &lt;img alt=&quot;Smile&quot; class=&quot;wlEmoticon wlEmoticon-smile&quot; src=&quot;https://lh3.googleusercontent.com/-ESx7XxgxD3c/WN5loozkIqI/AAAAAAAAJ44/7VqF9oy_7Dg/wlEmoticon-smile%25255B2%25255D.png?imgmax=800&quot; style=&quot;border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-xBV-cb34VoU/WN5ly4yEWKI/AAAAAAAAJ48/t39-ll4Sk2s/s1600-h/image%25255B171%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;291&quot; src=&quot;https://lh3.googleusercontent.com/-80n_U4HPFb0/WN5lz18zkvI/AAAAAAAAJ5A/o_zHb1hfK8o/image_thumb%25255B99%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/5784897383914259623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=5784897383914259623' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/5784897383914259623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/5784897383914259623'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2017/03/sharepoint-online-continuous-delivery.html' title='SharePoint Online Continuous Delivery with Visual Studio Team Services (part 3)'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-WV4PDd_KAck/WN5NnUdYmmI/AAAAAAAAJ1Y/vgnPhoFVi24/s72-c/image_thumb%25255B25%25255D.png?imgmax=800" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-7570670103046538189</id><published>2017-02-07T00:57:00.000+01:00</published><updated>2017-03-31T16:23:38.421+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Azure"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Team Services"/><title type='text'>SharePoint Online Continuous Delivery with Visual Studio Team Services (part 2)</title><content type='html'>This post is about setting-up a continuous delivery pipeline for SharePoint Online with Visual Studio Team Services.&lt;br /&gt;&lt;br /&gt;Link to part 1/3: &lt;a href=&quot;https://sharepointologic.blogspot.fr/2017/01/sharepoint-online-continuous-delivery_17.html&quot; title=&quot;https://sharepointologic.blogspot.fr/2017/01/sharepoint-online-continuous-delivery_17.html&quot;&gt;https://sharepointologic.blogspot.fr/2017/01/sharepoint-online-continuous-delivery_17.html&lt;/a&gt;&lt;br /&gt;Link to part 3/3: &lt;a href=&quot;https://sharepointologic.blogspot.fr/2017/03/sharepoint-online-continuous-delivery.html&quot;&gt;https://sharepointologic.blogspot.fr/2017/03/sharepoint-online-continuous-delivery.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As seen in step one, I used the PowerShell&#39;s &quot;SharePointPnPPowerShellOnline&quot; extension to write a script to upload files to my SharePoint Online site. Unfortunately it cannot be installed on the hosted Team Services Agent so the easiest way here is to setup a private agent. In this post I will show how to setup a private Team Service Agent using a virtual machine hosted on Azure.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Preparing a virtual machine with Azure&lt;/h2&gt;Note : I choosed to use Azure but you can reproduce this what ever you want as long as it has internet access to connect to Team Services.&lt;br /&gt;&lt;br /&gt;Create a DevTest Lab (I plan to use the auto start and shutdown to match work hours).&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-2aDChf0G-1A/WJj4gB_Mo8I/AAAAAAAAJso/5Dgqv3CUmC4/s1600-h/image%25255B15%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-z1Q9CyaC910/WJj4hO8K34I/AAAAAAAAJss/S8jxTe-pCvE/image_thumb%25255B11%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;340&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the lab add a new machine&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-1kzzPy8pSvg/WJj8yWF4tfI/AAAAAAAAJs4/mp3vO9kJ-8M/s1600-h/image%25255B19%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;311&quot; src=&quot;https://lh3.googleusercontent.com/-nkbVDjqsyOM/WJj8zbDUUcI/AAAAAAAAJs8/tFYU1hCBQ6o/image_thumb%25255B13%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the settings I used, template Visual Studio Community 2015 on Windows 2012 R2, size A2_v2 and artefact 7-zip.&lt;br /&gt;Note : there is an artefact to automatically setup de TS Agent, but I didn&#39;t manage to get it to work so I&#39;ll do it manually.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-X63w4OZcVVg/WJj80Q_gcoI/AAAAAAAAJtA/FMhztha7yOo/s1600-h/image%25255B26%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;772&quot; src=&quot;https://lh3.googleusercontent.com/-EaHjn8Hs6rM/WJj81ZExRuI/AAAAAAAAJtE/r2_KAW7ZuyI/image_thumb%25255B18%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;841&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once the machine is created connect to it. Then open a browser and go to your Team Services. Go to &quot;Agent Pools&quot; in the settings and click &quot;Download agent&quot;.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-AIXzMFagFjM/WJkBfM5rDGI/AAAAAAAAJtU/jgT5duyeUfw/s1600-h/image%25255B30%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;165&quot; src=&quot;https://lh3.googleusercontent.com/-hNGlM1CFBsI/WJkBf3rT5JI/AAAAAAAAJtY/yxAaO-0n0ng/image_thumb%25255B20%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Then follow the instructions to download the bits.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-qmaZdq7G3tw/WJkBgzx6iVI/AAAAAAAAJtc/6z0yj2KCP7w/s1600-h/image%25255B34%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;484&quot; src=&quot;https://lh3.googleusercontent.com/-pp6-4qsPQlg/WJkBh24ommI/AAAAAAAAJtg/bfaMMB2BxTw/image_thumb%25255B22%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;452&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To setup the agent you will need a personal access token (PAT), to generate one go to your profil under &quot;Security&quot;.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-set0Pei176M/WJkBi3J_bMI/AAAAAAAAJtk/hJZOjQelh2U/s1600-h/image%25255B39%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://lh3.googleusercontent.com/-Pu92C-3aA_M/WJkBjrlwRLI/AAAAAAAAJto/F0H1_PKoBw4/image_thumb%25255B25%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;241&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Once created copy the token value for later use.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-0xPjowzUgyQ/WJkC5zb657I/AAAAAAAAJt0/PoMJ3v1sz6Y/s1600-h/image%25255B45%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;299&quot; src=&quot;https://lh3.googleusercontent.com/-1jkTn8pEbzM/WJkC6xXDycI/AAAAAAAAJt4/RYOvy77FG64/image_thumb%25255B29%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;1028&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once the agent download is complete unzip it and open a command prompt to the unzipped folder. Run &quot;config.cmd&quot;.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-gGRGlIrcSGg/WJkKekuy8vI/AAAAAAAAJuY/sQ3RHi1z2G0/s1600-h/image%25255B60%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;364&quot; src=&quot;https://lh3.googleusercontent.com/-rmvqv1X4UDw/WJkKfwui8RI/AAAAAAAAJuc/zs1E2mvf8Zg/image_thumb%25255B38%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Provide the URL to your team services account. When asked for &quot;PAT&quot; paste the token generated earlier.&lt;br /&gt;When asked for &quot;run agent as a service&quot; say yes. For the rest you can use default values exept for the service account, provide the machine administrator account &lt;u&gt;don&#39;t use&lt;/u&gt; the &quot;NT AUTHORITY\Network Service&quot; or the agent will remain Offline for Team Services.&lt;br /&gt;&lt;br /&gt;If this works you should have the agent listed in the default pool:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-h8nfuGvSszU/WJkKgxxAnKI/AAAAAAAAJug/A3rsYGT2K_s/s1600-h/image%25255B59%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://lh3.googleusercontent.com/-eZqvmS98bdE/WJkKh6me_cI/AAAAAAAAJuk/l0a-6O62y5w/image_thumb%25255B37%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Installing the SharePointPnPPowerShellOnline extension&lt;/h2&gt;On the agent open a PowerShell windows as administrator and run :&lt;br /&gt;&lt;pre&gt;Install-Module SharePointPnPPowerShellOnline -AllowClobber&lt;/pre&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-Q2CzLTMFISk/WJkMc9R7s3I/AAAAAAAAJuw/2kzKgNGI-3o/s1600-h/image%25255B64%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;147&quot; src=&quot;https://lh3.googleusercontent.com/-j7NVKLviTW0/WJkMeS7K8fI/AAAAAAAAJu0/0iOqIBQOdyI/image_thumb%25255B40%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;For more details about install go to the official page : &lt;a href=&quot;https://github.com/SharePoint/PnP-PowerShell&quot; title=&quot;https://github.com/SharePoint/PnP-PowerShell&quot;&gt;https://github.com/SharePoint/PnP-PowerShell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok it&#39;s all I have time for right now, in the next post I&#39;ll show how to setup Team Services Build &amp;amp; Release definitions to take advantage of the deployement pnp script.</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/7570670103046538189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=7570670103046538189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/7570670103046538189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/7570670103046538189'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2017/02/sharepoint-online-continuous-delivery.html' title='SharePoint Online Continuous Delivery with Visual Studio Team Services (part 2)'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-z1Q9CyaC910/WJj4hO8K34I/AAAAAAAAJss/S8jxTe-pCvE/s72-c/image_thumb%25255B11%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-31517668420523785</id><published>2017-01-17T00:14:00.000+01:00</published><updated>2017-03-31T16:23:29.324+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Team Services"/><title type='text'>SharePoint Online Continuous Delivery with Visual Studio Team Services (part 1)</title><content type='html'>It&#39;s time for full cloud DevOps with Office365, Team Services and Azure! &lt;br /&gt;In this guide I will cover how to setup a continuous delivery for SharePoint Online from ground up using Visual Studio Team Services (former Visual Studio Online).&lt;br /&gt;&lt;br /&gt;I&#39;m about to cover several topics in order to get to the point, to simplify the writing (and maybe the reading) I will split this into several parts. I will come back and update links as posts are made.&lt;br /&gt;&lt;br /&gt;Link to post 2/3 : &lt;a href=&quot;https://sharepointologic.blogspot.fr/2017/02/sharepoint-online-continuous-delivery.html&quot;&gt;https://sharepointologic.blogspot.fr/2017/02/sharepoint-online-continuous-delivery.html&lt;/a&gt;&lt;br /&gt;Link to post 3/3 : &lt;a href=&quot;https://sharepointologic.blogspot.fr/2017/03/sharepoint-online-continuous-delivery.html&quot;&gt;https://sharepointologic.blogspot.fr/2017/03/sharepoint-online-continuous-delivery.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The context of all this&lt;/h3&gt;In order to give you a better view I&#39;ll try and build this guide on a real world use case. &lt;br /&gt;I&#39;m making a custom portal with SharePoint Online, this is the &quot;traditional&quot; target release pipeline I want to achieve to try and maintain quality over successive releases:&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-NKYONfAdbb4/WH1eXWWI3BI/AAAAAAAAJpY/x8AkEIJ5VH4/s1600-h/image%25255B6%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; src=&quot;https://lh3.googleusercontent.com/-A2zIcTh6TYc/WH1eYOyTpsI/AAAAAAAAJpc/S6RSOysr8RM/image_thumb%25255B4%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;579&quot; /&gt;&lt;/a&gt; &lt;br /&gt;Nothing crazy here, the devs and the project manager use the integration (INT) platform for integrity check and the customer will proceed with testing on the UAT.&lt;br /&gt;I have several developers, they each have a developer site collection:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://%3Ctenant%3E.sharepoint.com/sites/dev-a&quot;&gt;https://&amp;lt;tenant&amp;gt;.sharepoint.com/sites/dev-a&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://%3Ctenant%3E.sharepoint.com/sites/dev-b&quot;&gt;https://&amp;lt;tenant&amp;gt;.sharepoint.com/sites/dev-b&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://%3Ctenant%3E.sharepoint.com/sites/dev-c&quot;&gt;https://&amp;lt;tenant&amp;gt;.sharepoint.com/sites/dev-c&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The integration has it&#39;s own site collection : &lt;a href=&quot;https://%3Ctenant%3E.sharepoint.com/sites/int-portal&quot;&gt;https://&amp;lt;tenant&amp;gt;.sharepoint.com/sites/int-portal&lt;/a&gt;&lt;br /&gt;So does the &quot;User Acceptance and Testing&quot; site : &lt;a href=&quot;https://%3Ctenant%3E.sharepoint.com/sites/uat-portal&quot;&gt;https://&amp;lt;tenant&amp;gt;.sharepoint.com/sites/uat-portal&lt;/a&gt;&lt;br /&gt;And production (you get the idea).&lt;br /&gt;The workflow involves devs building on their onw site. Then the source code is used build a release that is deployed to INT to check for broken code, merge issues and deployment flaws. Once this is cleared the release is deployed to UAT for testers to proceed with validation of business requirements and bug hunting. After UAT testing if the release meets expectations, it can be deployed to production.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Wait this is SharePoint Online, I come from on-premises how do I &quot;package&quot; ?&lt;/h3&gt;Well one solution is to use the guidance from SharePoint Patterns &amp;amp; Practice (&lt;a href=&quot;https://github.com/SharePoint/PnP&quot; title=&quot;https://github.com/SharePoint/PnP&quot;&gt;https://github.com/SharePoint/PnP&lt;/a&gt;).&lt;br /&gt;PnP offers PowerShell Commands (&lt;a href=&quot;https://github.com/SharePoint/PnP-PowerShell&quot; title=&quot;https://github.com/SharePoint/PnP-PowerShell&quot;&gt;https://github.com/SharePoint/PnP-PowerShell&lt;/a&gt;), it&#39;s flexible and offers a very cool way of provisioning stuff to SharePoint and specially the &quot;PnP Provisioning Schema&quot; (&lt;a href=&quot;https://github.com/OfficeDev/PnP-provisioning-schema&quot; title=&quot;https://github.com/OfficeDev/PnP-provisioning-schema&quot;&gt;https://github.com/OfficeDev/PnP-provisioning-schema&lt;/a&gt;) that will sound very familiar to what was done with XML modules with onpremises full trust wsp packages.&lt;br /&gt;The basics are making a hierarchy of folders and files to upload and a main powershell script. &lt;u&gt;This is your &quot;release package&quot;.&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Making a SPO &quot;package&quot; with PnP&lt;/h3&gt;I will demonstrate a very simple example here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enable publishing features  &lt;/li&gt;&lt;li&gt;Upload a masterpage file  &lt;/li&gt;&lt;li&gt;Upload a css file  &lt;/li&gt;&lt;li&gt;Upload an image file  &lt;/li&gt;&lt;li&gt;Define my masterpage to be used on the site &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ok so first create a new folder that will be the root of our solution. Then make a subfolder that will contain your assets (masterpage, css, image), mine will be &quot;_catalogs&quot; to match SP structure. Copy html, css and jpg file in the appropriate sub folders.&lt;br /&gt;Then make an xml file and use PnP Provisioning schema to do the step described.&lt;br /&gt;&lt;br /&gt;provtemplate.xml :&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;pnp:Provisioning xmlns:pnp=&quot;http://schemas.dev.office.com/PnP/2016/05/ProvisioningSchema&quot;&lt;br /&gt;                  xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&amp;gt;&lt;br /&gt;  &amp;lt;!-- All the schema contents --&amp;gt;&lt;br /&gt;  &amp;lt;pnp:Preferences Generator=&quot;Djavan ROA&quot; /&amp;gt;&lt;br /&gt;  &amp;lt;pnp:Templates&amp;gt;&lt;br /&gt;    &amp;lt;pnp:ProvisioningTemplate ID=&quot;DRO-TEMPLATE-1&quot; Version=&quot;1&quot; DisplayName=&quot;DROTEMPLATE&quot;&amp;gt;&lt;br /&gt;      &amp;lt;pnp:WebSettings SiteLogo=&quot;&quot; AlternateCSS=&quot;&quot; MasterPageUrl=&quot;{masterpagecatalog}/seattle.master&quot; CustomMasterPageUrl=&quot;{masterpagecatalog}/dro/mymasterpage.master&quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;pnp:Features&amp;gt;&lt;br /&gt;        &amp;lt;pnp:SiteFeatures&amp;gt;&lt;br /&gt;          &amp;lt;pnp:Feature ID=&quot;f6924d36-2fa8-4f0b-b16d-06b7250180fa&quot; Description=&quot;SharePoint Server Publishing Infrastructure&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/pnp:SiteFeatures&amp;gt;&lt;br /&gt;        &amp;lt;pnp:WebFeatures&amp;gt;&lt;br /&gt;          &amp;lt;pnp:Feature ID=&quot;94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb&quot; Description=&quot;SharePoint Server Publishing&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/pnp:WebFeatures&amp;gt;&lt;br /&gt;      &amp;lt;/pnp:Features&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;pnp:Files&amp;gt;&lt;br /&gt;        &amp;lt;!--Masterpage--&amp;gt;&lt;br /&gt;        &amp;lt;pnp:File Src=&quot;_catalogs\masterpage\dro\mymasterpage.html&quot; Folder=&quot;{masterpagecatalog}/dro&quot; Overwrite=&quot;true&quot; Level=&quot;Published&quot;&amp;gt;&lt;br /&gt;          &amp;lt;pnp:Properties&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Property Key=&quot;ContentTypeId&quot; Value=&quot;{contenttypeid:Html Master Page}&quot; /&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Property Key=&quot;HtmlDesignFromMaster&quot; Value=&quot;{masterpagecatalog}/dro/mymasterpage.html, https://drodemo365.sharepoint.com{site}{masterpagecatalog}/dro/mymasterpage.html&quot; /&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Property Key=&quot;HtmlDesignAssociated&quot; Value=&quot;True&quot; /&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Property Key=&quot;HtmlDesignStatusAndPreview&quot; Value=&quot;{masterpagecatalog}/dro/mymasterpage.html, Conversion successful.&quot; /&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Property Key=&quot;BSN&quot; Value=&quot;Microsoft.SharePoint.Client.FieldLookupValue&quot; /&amp;gt;&lt;br /&gt;          &amp;lt;/pnp:Properties&amp;gt;&lt;br /&gt;        &amp;lt;/pnp:File&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;!--CSS--&amp;gt;&lt;br /&gt;        &amp;lt;pnp:File Src=&quot;_catalogs\masterpage\dro\css\styles.css&quot; Folder=&quot;{masterpagecatalog}/dro/css&quot; Overwrite=&quot;true&quot; Level=&quot;Published&quot;&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Properties&amp;gt;&lt;br /&gt;                &amp;lt;pnp:Property Key=&quot;ContentTypeId&quot; Value=&quot;{contenttypeid:Design File}&quot; /&amp;gt;&lt;br /&gt;            &amp;lt;/pnp:Properties&amp;gt;&lt;br /&gt;        &amp;lt;/pnp:File&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;!--Images--&amp;gt;&lt;br /&gt;        &amp;lt;pnp:File Src=&quot;_catalogs\masterpage\dro\img\logo.jpg&quot; Folder=&quot;{masterpagecatalog}/dro/img&quot; Overwrite=&quot;true&quot; Level=&quot;Published&quot;&amp;gt;&lt;br /&gt;            &amp;lt;pnp:Properties&amp;gt;&lt;br /&gt;                &amp;lt;pnp:Property Key=&quot;ContentTypeId&quot; Value=&quot;{contenttypeid:Design File}&quot; /&amp;gt;&lt;br /&gt;            &amp;lt;/pnp:Properties&amp;gt;&lt;br /&gt;        &amp;lt;/pnp:File&amp;gt;&lt;br /&gt;        &lt;br /&gt;      &amp;lt;/pnp:Files&amp;gt;&lt;br /&gt;    &amp;lt;/pnp:ProvisioningTemplate&amp;gt;&lt;br /&gt;  &amp;lt;/pnp:Templates&amp;gt;&lt;br /&gt;&amp;lt;/pnp:Provisioning&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then make a script file &quot;prov.ps1&quot;, note that I used environment vars this will be required by Team Services Release later.&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;Import-Module SharePointPnPPowerShellOnline&lt;br /&gt;&lt;br /&gt;# Get site url&lt;br /&gt;set-variable -scope Global -name siteUrl -value $env:siteUrl&lt;br /&gt;&lt;br /&gt;# Get credentials&lt;br /&gt;$password = $env:deploypassword | ConvertTo-SecureString -asPlainText -Force&lt;br /&gt;$username = $env:deployusername&lt;br /&gt;$cred = New-Object System.Management.Automation.PSCredential($username,$password)&lt;br /&gt;&lt;br /&gt;# cd to root script folder&lt;br /&gt;cd $PSScriptRoot&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;##&lt;br /&gt;# Root site collection&lt;br /&gt;##&lt;br /&gt;Write-Host &quot;&amp;gt; Connect to site collection root&quot; $siteUrl&lt;br /&gt;Connect-PnPOnline –Url $siteUrl -Credentials $cred&lt;br /&gt;&lt;br /&gt;# Provisioning&lt;br /&gt;Write-Host &quot;&amp;gt; Provisioning&quot;&lt;br /&gt;Apply-PnPProvisioningTemplate -Path .\provtemplate.xml&lt;/pre&gt;The resulting structure should look like this:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;.&lt;br /&gt;|-- _catalogs&lt;br /&gt;|   |-- masterpage&lt;br /&gt;|       |-- dro&lt;br /&gt;|           |-- css&lt;br /&gt;|           |   |-- styles.css&lt;br /&gt;|           |&lt;br /&gt;|           |-- img&lt;br /&gt;|           |   |-- logo.jpg&lt;br /&gt;|           |&lt;br /&gt;|           |-- mymasterpage.html&lt;br /&gt;|&lt;br /&gt;|-- prov.ps1&lt;br /&gt;|-- provtemplate.xml&lt;br /&gt;&lt;/pre&gt;Now upload all this to Team Services source control.&lt;br /&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-QyxMMCYXdcQ/WMsQZYE4SBI/AAAAAAAAJ0c/ewcerlHIqwQ/s1600-h/image%25255B5%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;209&quot; src=&quot;https://lh3.googleusercontent.com/-XUI2uBjDAcY/WMsQakeeufI/AAAAAAAAJ0g/5RzynZ3ZXz8/image_thumb%25255B2%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;644&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It&#39;s all for now, in part 2 I&#39;ll show how to setup a custom Team Service Agent, stay tuned.</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/31517668420523785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=31517668420523785' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/31517668420523785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/31517668420523785'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2017/01/sharepoint-online-continuous-delivery_17.html' title='SharePoint Online Continuous Delivery with Visual Studio Team Services (part 1)'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-A2zIcTh6TYc/WH1eYOyTpsI/AAAAAAAAJpc/S6RSOysr8RM/s72-c/image_thumb%25255B4%25255D.png?imgmax=800" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-3417348168631766599</id><published>2016-12-04T11:21:00.001+01:00</published><updated>2016-12-04T11:21:34.489+01:00</updated><title type='text'>How to get internet access on a internal network in Hyper-V</title><content type='html'>In this article I will explain how to setup the network and Hyper-V to give internet access to a lan of virtual machines my way.&lt;br /&gt;&lt;br /&gt;Why am I doing this? On my daily developpeur laptop I have Hyper-V installed with at least two virtual machines running in the same subnet:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DEV-DC : Active Directory, DNS, Certificate Authority&amp;nbsp;+ other domain related...&lt;/li&gt;&lt;li&gt;DEV-SP2013 : My SharePoint developer environnement with Visual Studio&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;My goal is to give them internet access using my host as a gateway and still have the subnet working even if I&#39;m offline.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Both machines are in the &quot;*.dev.lab&quot; domain. To simulate something close to an enterprise network DEV-SP2013 uses domaine accounts and the DNS service from DEV-DC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So in order to logon to DEV-SP2013 the AD must be on the same network. In Hyper-V you have multiple options to achieve this:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;External network : &lt;/b&gt;Will require a physical adapter effectively connected to a network (wifi or ethernet), else VMs won&#39;t see each other. Plus both VMs virtual adapters will have to be set to DHCP to get an IP on the physical adapter&#39;s network, this means troubles to use DEV-DC&#39;s DNS.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Private network : &lt;/b&gt;VMs will see each other but no internet access possible through the host.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Internal network : &lt;/b&gt;This will create a vLan network between VM&#39;s and the host machine. The host machine will have a virtual adapter on the vLan that will appear like a physical adapter in Windows.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes, &quot;Internal Network&quot; is the way to go, you get a vLan between machines and you get to control connexion with external networks by routing through the host machine.&lt;br /&gt;For this I use &quot;Internet Sharing&quot; and set the vLan to use the default network IP range assign automatically when you enable sharing (192.168.137.0/24).&lt;br /&gt;&lt;br /&gt;To enable internet Sharing from the host Windows:&lt;br /&gt;Go to network adapters and right clic the adapter that has access to Internet and select properties (I my case I will use my wifi card).&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-zseM3d0Ba_A/WEPoJ3q-zmI/AAAAAAAAJm8/ncVlMs4ON78WOfwQjKbMkU3fEvZC4sb0ACLcB/s1600/Screenshot%2B-%2B04_12_2016%2B%252C%2B10_54_52.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://4.bp.blogspot.com/-zseM3d0Ba_A/WEPoJ3q-zmI/AAAAAAAAJm8/ncVlMs4ON78WOfwQjKbMkU3fEvZC4sb0ACLcB/s320/Screenshot%2B-%2B04_12_2016%2B%252C%2B10_54_52.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Select the &quot;Share&quot; tab and check allow sharing. If you have multiple adapters select the target you want to share to (the hyperv vLan), the target will automatically have it&#39;s IP assigner to 192.168.137.1&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/--ZuNAfiGGaE/WEPotsynN8I/AAAAAAAAJnA/0YbQFFVTD1cm2Dp5EwHrVBUxfS1e9ZewwCLcB/s1600/Screenshot%2B-%2B04_12_2016%2B%252C%2B10_56_53.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://2.bp.blogspot.com/--ZuNAfiGGaE/WEPotsynN8I/AAAAAAAAJnA/0YbQFFVTD1cm2Dp5EwHrVBUxfS1e9ZewwCLcB/s320/Screenshot%2B-%2B04_12_2016%2B%252C%2B10_56_53.png&quot; width=&quot;298&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Next you need to configure VMs adapters with fixed IPs to go through the adapter:&lt;br /&gt;IP:192.168.137.XXX (the fixed ip)&lt;br /&gt;Mask: 255.255.255.0&lt;br /&gt;Gateway: 192.168.137.1&lt;br /&gt;&lt;br /&gt;In order to use the DNS service on DEV-DC my setup goes like this:&lt;br /&gt;&lt;b&gt;DEV-DC&lt;/b&gt;&lt;br /&gt;IP:192.168.137.2&lt;br /&gt;Mask: 255.255.255.0&lt;br /&gt;Gateway: 192.168.137.1&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DEV-SP2013&lt;/b&gt;&lt;br /&gt;IP:192.168.137.100&lt;br /&gt;Mask: 255.255.255.0&lt;br /&gt;Gateway: 192.168.137.1&lt;br /&gt;Primary DNS: 192.168.137.2&lt;br /&gt;&lt;br /&gt;Final step, setup the DNS service of DEV-DC to forward unknown DNS queries (for internet).&lt;br /&gt;Open the &quot;DNS Manager&quot; and right clic the domain node and clic properties:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-AnR0pj2aZVc/WEPsyOEr6FI/AAAAAAAAJnM/5BUwuoywrC0FpsGQTNKSoynycgSVakxBgCLcB/s1600/Screenshot%2B-%2B04_12_2016%2B%252C%2B11_15_15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://4.bp.blogspot.com/-AnR0pj2aZVc/WEPsyOEr6FI/AAAAAAAAJnM/5BUwuoywrC0FpsGQTNKSoynycgSVakxBgCLcB/s320/Screenshot%2B-%2B04_12_2016%2B%252C%2B11_15_15.png&quot; width=&quot;310&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Go to the &quot;Forwarders&quot; tab and add &quot;8.8.8.8&quot; (Google&#39;s public DNS):&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-5nP4nKc-GH0/WEPtTJL_HOI/AAAAAAAAJnQ/ypeHRDsiJ4AKdA0oUkedpbRVoUk8U4HgwCLcB/s1600/Screenshot%2B-%2B04_12_2016%2B%252C%2B11_17_08.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://1.bp.blogspot.com/-5nP4nKc-GH0/WEPtTJL_HOI/AAAAAAAAJnQ/ypeHRDsiJ4AKdA0oUkedpbRVoUk8U4HgwCLcB/s400/Screenshot%2B-%2B04_12_2016%2B%252C%2B11_17_08.png&quot; width=&quot;345&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Then restart the DNS service:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-fx_zBiPTNMM/WEPtla7qvbI/AAAAAAAAJnU/N6wR9k9BQo8pVYe1VQV3rG0AsRNptomwgCLcB/s1600/Screenshot%2B-%2B04_12_2016%2B%252C%2B11_18_53.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://3.bp.blogspot.com/-fx_zBiPTNMM/WEPtla7qvbI/AAAAAAAAJnU/N6wR9k9BQo8pVYe1VQV3rG0AsRNptomwgCLcB/s320/Screenshot%2B-%2B04_12_2016%2B%252C%2B11_18_53.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Conclusion, from you have a functional vLan that will work no matter if you are on a physical network or not. Plus as soon as the physical network gives you access to internet the vLan will also have access.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/3417348168631766599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=3417348168631766599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/3417348168631766599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/3417348168631766599'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2016/12/how-to-get-internet-access-on-internal.html' title='How to get internet access on a internal network in Hyper-V'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-zseM3d0Ba_A/WEPoJ3q-zmI/AAAAAAAAJm8/ncVlMs4ON78WOfwQjKbMkU3fEvZC4sb0ACLcB/s72-c/Screenshot%2B-%2B04_12_2016%2B%252C%2B10_54_52.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-6582403571772949526</id><published>2016-11-30T12:47:00.002+01:00</published><updated>2016-12-04T10:35:26.630+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Online"/><title type='text'>SharePoint Design Manager and special chars</title><content type='html'>In SharePoint you have the option to design masterpages and page layouts un a traditional HTML file. These tools comme with the &quot;Design Manager&quot; available on a publishing site with SharePoint Server 2013 and SharePoint Online.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-c9hQ-QGzCc0/WD63A3_aGmI/AAAAAAAAJic/Y1_wpInTwMMBJxqG31l8C98feB2f7YM6QCLcB/s1600/menu.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;302&quot; src=&quot;https://2.bp.blogspot.com/-c9hQ-QGzCc0/WD63A3_aGmI/AAAAAAAAJic/Y1_wpInTwMMBJxqG31l8C98feB2f7YM6QCLcB/s320/menu.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;What this does is basically generate the &quot;.master&quot; and &quot;.aspx&quot; files from &quot;.html&quot; files.&lt;br /&gt;&lt;br /&gt;This enables web designers with no knowledge of ASP.NET tags to &quot;safely&quot; integrate with their favorite editor, directly in SharePoint using a mapped network drive to the masterpage gallery. All technical tags are converted to html comments.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-d13NMH0SKpQ/WD65ccgj-iI/AAAAAAAAJis/XJ9kTPuhyYYiQ9q3xQJ36YFfBShpsoD-gCLcB/s1600/Screenshot%2B-%2B30_11_2016%2B%252C%2B12_29_48.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://4.bp.blogspot.com/-d13NMH0SKpQ/WD65ccgj-iI/AAAAAAAAJis/XJ9kTPuhyYYiQ9q3xQJ36YFfBShpsoD-gCLcB/s320/Screenshot%2B-%2B30_11_2016%2B%252C%2B12_29_48.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Trouble is when working with special chars such as éàèù, text in the html &quot;pagelayout&quot; is not converted properly when rendering on the site. This is due to the encoding not properly copied from the masterpage html file to the pagelayout html file on generation.&lt;br /&gt;&lt;br /&gt;To solve this on page layouts, you need to add the tag &quot;&lt;b&gt;&amp;lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;&lt;/b&gt;&quot; in the &quot;PlaceHolderAdditionalPageHead&quot; section. This is a SharePoint tag so it will be commented (around line 30). This is how it should look after:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;    &amp;lt;!--MS:&amp;lt;asp:ContentPlaceHolder id=&quot;PlaceHolderAdditionalPageHead&quot; runat=&quot;server&quot;&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;&lt;br /&gt;        &amp;lt;!--CS: Start Edit Mode Panel Snippet--&amp;gt;&lt;br /&gt;        &amp;lt;!--SPM:&amp;lt;%@Register Tagprefix=&quot;SharePoint&quot; Namespace=&quot;Microsoft.SharePoint.WebControls&quot; Assembly=&quot;Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;%&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--SPM:&amp;lt;%@Register Tagprefix=&quot;Publishing&quot; Namespace=&quot;Microsoft.SharePoint.Publishing.WebControls&quot; Assembly=&quot;Microsoft.SharePoint.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;%&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--MS:&amp;lt;Publishing:EditModePanel runat=&quot;server&quot; id=&quot;editmodestyles&quot;&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--MS:&amp;lt;SharePoint:CssRegistration name=&quot;&amp;amp;#60;% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/editmode15.css %&amp;amp;#62;&quot; After=&quot;&amp;amp;#60;% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %&amp;amp;#62;&quot; runat=&quot;server&quot;&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--ME:&amp;lt;/SharePoint:CssRegistration&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--ME:&amp;lt;/Publishing:EditModePanel&amp;gt;--&amp;gt;&lt;br /&gt;        &amp;lt;!--CE: End Edit Mode Panel Snippet--&amp;gt;&lt;br /&gt;    &amp;lt;!--ME:&amp;lt;/asp:ContentPlaceHolder&amp;gt;--&amp;gt;&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/6582403571772949526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=6582403571772949526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6582403571772949526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6582403571772949526'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2016/11/sharepoint-design-manager-and-special.html' title='SharePoint Design Manager and special chars'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-c9hQ-QGzCc0/WD63A3_aGmI/AAAAAAAAJic/Y1_wpInTwMMBJxqG31l8C98feB2f7YM6QCLcB/s72-c/menu.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-6855685110107423987</id><published>2016-08-12T00:28:00.003+02:00</published><updated>2016-08-12T00:28:41.203+02:00</updated><title type='text'>PageLayout unghosted after provisionning</title><content type='html'>I was recently working on integrating a PageLayout deployed to SharePoint through a wsp and I came across a weird behaviour...&lt;br /&gt;&lt;br /&gt;Usually to speed things up I like to just deploy an almost raw PageLayout to the masterpage gallery and go ahead and edit directly the deployed file from the SharePoint hive (&quot;C:\Program Files\Common Files\microsoft shared\Web Server Extensions\&lt;version&gt;\TEMPLATE\FEATURES\&lt;myfeature&gt;\mypagelayout.aspx&quot;). Then when I&#39;m satisfied I just report the changes to my Visual Studio project and push to source control.&lt;/myfeature&gt;&lt;/version&gt;&lt;br /&gt;&lt;br /&gt;For this to work you must rely on file ghosting. For those of you who don&#39;t know basically when the file in a SharePoint document library is ghosted it is actually a pointer for a file stored in the hive of the front end SharePoint server. When it&#39;s unghosted it points to a file stored in the database.&lt;br /&gt;Unghosting occurs when you edit the file from the SharePoint instance or if you make changes with SharePoint Designer.&lt;br /&gt;To sum it all, provision a file through wsp then edit it from the hive and you will immediately see the changes reflect in your site by hitting F5 (no redploying of the wsp nor issreset). By doing so you save a tremendous amount of time integrating your HTML/CSS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So here&#39;s what happend, deploying my aspx through a wsp as usual with Visual Studio 2015, I figured out Microsoft has changed something in the page layout template that will provision the page in an unghosted state no matter what...&lt;br /&gt;At the end of the &lt;page&gt; tag on top of the file you will find this:&lt;/page&gt;&lt;br /&gt;&lt;page ...=&quot;&quot; b=&quot;&quot;&gt;meta:webpartpageexpansion=&quot;full&quot; meta:progid=&quot;SharePoint.WebPartPage.Document&quot;&lt;/page&gt;&lt;br /&gt;&amp;gt;&lt;br /&gt;Remove this in order to get the previous behaviour.&lt;br /&gt;Peace!</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/6855685110107423987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=6855685110107423987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6855685110107423987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6855685110107423987'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2016/08/pagelayout-unghosted-after-provisionning.html' title='PageLayout unghosted after provisionning'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-4387590761376180817</id><published>2016-04-30T23:10:00.000+02:00</published><updated>2016-05-04T00:55:35.417+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Azure"/><title type='text'> Express setup of a FTP server on Azure virtual machine</title><content type='html'>Here&#39;s a quick guide to setup a passive FTP Server with Windows Server 2012 R2 on a virtual machine hosted on Microsoft Azure with the &quot;Ressource Manager&quot; deployment model.&lt;br /&gt;&lt;br /&gt;To stay simple I will not use SSL.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 1 : Install the FTP service on Windows Server 2012 R2&lt;/h2&gt;Open a powershell window and enter the following commands:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Install-WindowsFeature Web-Server –includeallsubfeature&lt;br /&gt;Install-WindowsFeature Web-FTP-Server –includeallsubfeature&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-pWWt3oiH2aM/VyUf7B4CzgI/AAAAAAAAJME/a5JJP1_l1hoy-dAqxS949rNCjbAwbZb7wCLcB/s1600/Screenshot%2B-%2B30_04_2016%2B%252C%2B21_56_07.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;107&quot; src=&quot;https://1.bp.blogspot.com/-pWWt3oiH2aM/VyUf7B4CzgI/AAAAAAAAJME/a5JJP1_l1hoy-dAqxS949rNCjbAwbZb7wCLcB/s640/Screenshot%2B-%2B30_04_2016%2B%252C%2B21_56_07.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This will install IIS service, FTP service and management tools.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 2 : Publish the FTP site&lt;/h2&gt;To start using the FTP service you must publish it.&lt;br /&gt;&lt;br /&gt;Run &quot;inetmgr&quot; to open &quot;Internet Information Services (IIS) Manager&quot;:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-ILxbZhg1JlY/VyUgyskAj0I/AAAAAAAAJMM/agnBFUGvIaEyRBx0r3p1U1WXjJEgdQV1QCLcB/s1600/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_16_02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;256&quot; src=&quot;https://1.bp.blogspot.com/-ILxbZhg1JlY/VyUgyskAj0I/AAAAAAAAJMM/agnBFUGvIaEyRBx0r3p1U1WXjJEgdQV1QCLcB/s400/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_16_02.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Go to &quot;Sites&quot; the right clic the default web site and select &quot;Add FTP Publishing...&quot;:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-nvcF8MvGSi0/VyUii0FcCfI/AAAAAAAAJMY/-hXGSfy2WVUs4l8EbrWq_fw6AkYYZx8oACLcB/s1600/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_20_09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://1.bp.blogspot.com/-nvcF8MvGSi0/VyUii0FcCfI/AAAAAAAAJMY/-hXGSfy2WVUs4l8EbrWq_fw6AkYYZx8oACLcB/s640/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_20_09.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Select &quot;No SSL&quot;:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-nGFQqikXHP8/VyUr5ghXS7I/AAAAAAAAJNs/XyvZYL7F0HcrvIqqT5OXedb86m1Pz7-4wCLcB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_04_00.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://4.bp.blogspot.com/-nGFQqikXHP8/VyUr5ghXS7I/AAAAAAAAJNs/XyvZYL7F0HcrvIqqT5OXedb86m1Pz7-4wCLcB/s320/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_04_00.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Check &quot;Basic&quot;, set access to &quot;All users&quot; and check permissions:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-Z7m4-hynY_c/VyUqXRf3nOI/AAAAAAAAJNc/t7Drx0lw_vERsKhPjKB9dFsCT2RiDoDKACLcB/s1600/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_57_23.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://3.bp.blogspot.com/-Z7m4-hynY_c/VyUqXRf3nOI/AAAAAAAAJNc/t7Drx0lw_vERsKhPjKB9dFsCT2RiDoDKACLcB/s320/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_57_23.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Publishing is done.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-GKlQbtSuns4/VyUnVHX6KiI/AAAAAAAAJNA/XdOljQgvfw8EFx0QkuBFpN6xkIC9Vr9vwCLcB/s1600/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_44_32.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;108&quot; src=&quot;https://3.bp.blogspot.com/-GKlQbtSuns4/VyUnVHX6KiI/AAAAAAAAJNA/XdOljQgvfw8EFx0QkuBFpN6xkIC9Vr9vwCLcB/s320/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_44_32.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;From the Azure portal get the IP of the running virtual machine:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;IMPORTANT : if you stop your VM and reboot it later you&#39;ll have to update the IP used for next setting&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-a3LNG-rpQ1E/VyUko6xHIpI/AAAAAAAAJMk/4d-SsqhT8uA92GYKIXMhfpMA4Jmg83C2ACLcB/s1600/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_26_09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://1.bp.blogspot.com/-a3LNG-rpQ1E/VyUko6xHIpI/AAAAAAAAJMk/4d-SsqhT8uA92GYKIXMhfpMA4Jmg83C2ACLcB/s400/Screenshot%2B-%2B30_04_2016%2B%252C%2B23_26_09.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;On inetmgr select the server (not the default site) then &quot;FTP Firewall Support&quot;:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-G5qr__0ikJo/VyUvQxJI_NI/AAAAAAAAJOM/tOWWl3aQSCUqT6dKMMEdbnblYiN1HqQSwCLcB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_17_52.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;340&quot; src=&quot;https://4.bp.blogspot.com/-G5qr__0ikJo/VyUvQxJI_NI/AAAAAAAAJOM/tOWWl3aQSCUqT6dKMMEdbnblYiN1HqQSwCLcB/s640/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_17_52.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Provide the IP retrieved from the Azure portal, set data channel port range to &quot;1035-1040&quot; and apply:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-3sBwPDsnMZg/VyUv924KtpI/AAAAAAAAJOU/xkr98rPIuLcy_J2KPRljBfS9-eu2MvXzwCLcB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_20_41.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://3.bp.blogspot.com/-3sBwPDsnMZg/VyUv924KtpI/AAAAAAAAJOU/xkr98rPIuLcy_J2KPRljBfS9-eu2MvXzwCLcB/s640/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_20_41.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;clear: both;&quot;&gt;Step 3 : Open windows firewall&lt;/h2&gt;&lt;div&gt;Open a powershell window and enter:&lt;/div&gt;&lt;pre&gt;&lt;code&gt;netsh advfirewall set global StatefulFtp enable&lt;/code&gt;&lt;/pre&gt;Then you need to restart the FTP service for all changes to apply: &lt;br /&gt;&lt;pre&gt;&lt;code&gt;net stop msftpsvc&lt;br /&gt;net start msftpsvc&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-LOzsWNt6MrU/VyU14AzmMCI/AAAAAAAAJO4/Hi7okTTPPJ8IIQymFw_wboIipUKVfHtcwCKgB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_46_36.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://3.bp.blogspot.com/-LOzsWNt6MrU/VyU14AzmMCI/AAAAAAAAJO4/Hi7okTTPPJ8IIQymFw_wboIipUKVfHtcwCKgB/s640/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_46_36.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 4 : Set inbound security rules in Azure&amp;nbsp;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;In the Azure portal go to the corresponding &quot;Network Security Group&quot;, in the settings go to &quot;Inboud security rules&quot;:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-gopN6IA7nZ8/VyUzH_aIaLI/AAAAAAAAJOk/S9dBJPL4y1M1s1mfv9Ny65VoOc6mNh5ewCKgB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_27_28.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; src=&quot;https://3.bp.blogspot.com/-gopN6IA7nZ8/VyUzH_aIaLI/AAAAAAAAJOk/S9dBJPL4y1M1s1mfv9Ny65VoOc6mNh5ewCKgB/s640/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_27_28.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Add two rules, one for port 21, and one for port range 1035-1040:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-VgN6hirR5aM/VyUz3OIalEI/AAAAAAAAJOo/AzB-Wem_S8YbAMEVuSHewcBwv3CaWDwfQCLcB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_32_25.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;328&quot; src=&quot;https://2.bp.blogspot.com/-VgN6hirR5aM/VyUz3OIalEI/AAAAAAAAJOo/AzB-Wem_S8YbAMEVuSHewcBwv3CaWDwfQCLcB/s640/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_32_25.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;clear: both; text-align: left;&quot;&gt;Step 5: Test the connection&lt;/h2&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;On your computer use a FTP client such as FileZilla, use the VM&#39;s IP and login/password used to open remote desktop (RDP):&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-qeXEI29W1qc/VyU3CxAoyYI/AAAAAAAAJPA/DdNgMW35fR8AnMC3fDWb8IT21fYTca9ZwCLcB/s1600/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_50_08.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;262&quot; src=&quot;https://1.bp.blogspot.com/-qeXEI29W1qc/VyU3CxAoyYI/AAAAAAAAJPA/DdNgMW35fR8AnMC3fDWb8IT21fYTca9ZwCLcB/s640/Screenshot%2B-%2B01_05_2016%2B%252C%2B00_50_08.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;You&#39;re done :)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/4387590761376180817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=4387590761376180817' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/4387590761376180817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/4387590761376180817'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2016/04/express-setup-of-ftp-server-on-azure.html' title=' Express setup of a FTP server on Azure virtual machine'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-pWWt3oiH2aM/VyUf7B4CzgI/AAAAAAAAJME/a5JJP1_l1hoy-dAqxS949rNCjbAwbZb7wCLcB/s72-c/Screenshot%2B-%2B30_04_2016%2B%252C%2B21_56_07.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-1875718041752957315</id><published>2016-04-05T12:14:00.000+02:00</published><updated>2016-04-05T12:14:54.741+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GAC"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2015"/><title type='text'>Visual Studio 2015 deploy to GAC</title><content type='html'>With the latest Visual Studio 2015 I miss not having CKS tools with its useful &quot;Deploy to GAC&quot; menu right next to the build option.&lt;br /&gt;&lt;br /&gt;As a workaround I&#39;ve used gacutil.exe on post-build event command line to copy my assembly to the GAC.&lt;br /&gt;&lt;br /&gt;Add this line in the box to target CLR4 (SharePoint 2013):&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&quot;%ProgramFiles%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe&quot; /i &quot;$(TargetPath)&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-scvhl0arupU/VwOPFv3QCGI/AAAAAAAAJKs/FrKAzcIxlYA0uz8f_s3HJmRM6W_gnualg/s1600/clr4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;379&quot; src=&quot;https://4.bp.blogspot.com/-scvhl0arupU/VwOPFv3QCGI/AAAAAAAAJKs/FrKAzcIxlYA0uz8f_s3HJmRM6W_gnualg/s640/clr4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/1875718041752957315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=1875718041752957315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/1875718041752957315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/1875718041752957315'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2016/04/visual-studio-2015-deploy-to-gac.html' title='Visual Studio 2015 deploy to GAC'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-scvhl0arupU/VwOPFv3QCGI/AAAAAAAAJKs/FrKAzcIxlYA0uz8f_s3HJmRM6W_gnualg/s72-c/clr4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-6484008705403753153</id><published>2016-02-27T11:14:00.000+01:00</published><updated>2016-02-27T11:16:19.019+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Office365"/><category scheme="http://www.blogger.com/atom/ns#" term="OneDrive"/><title type='text'>OneDrive for Business Next Gen Sync Client - My troubleshooting experience</title><content type='html'>Microsoft has released the Next Gen Sync Client for OneDrive for Business (the &quot;OneDrive.exe&quot; to replace the &quot;groove.exe&quot; client). So&amp;nbsp;I decided to&amp;nbsp;give it a try and to follow the article&amp;nbsp;to do the transition :&amp;nbsp;&lt;a href=&quot;https://support.office.com/en-us/article/Transition-from-the-existing-OneDrive-for-Business-sync-client-4100df3a-0c96-464f-b0a8-c20de34da6fa?ui=en-US&amp;amp;rs=en-US&amp;amp;ad=US&quot;&gt;https://support.office.com/en-us/article/Transition-from-the-existing-OneDrive-for-Business-sync-client-4100df3a-0c96-464f-b0a8-c20de34da6fa?ui=en-US&amp;amp;rs=en-US&amp;amp;ad=US&lt;/a&gt;&lt;br /&gt;The new client is in fact the same client as the one used by Windows 10 to sync the &quot;Personnal&quot; OneDrive.&lt;br /&gt;&lt;br /&gt;Basically the transition consist to unsync the old groove.exe&amp;nbsp;client, unlock a menu in the OneDrive.exe client with registery editing, connect with a company account (O365)&amp;nbsp;and voilà.&lt;br /&gt;&lt;br /&gt;I have run thru the guide and got stuck at the step where I had to connect with my company account by clicking the &quot;Add Business account&quot; button on this menu (sorry my screenshots&amp;nbsp;are in french):&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-GR6uw73ExfA/VtFoUqhKH9I/AAAAAAAAJIQ/0ZyDNsa7fhc/s1600/odaddaccount.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;291&quot; src=&quot;https://4.bp.blogspot.com/-GR6uw73ExfA/VtFoUqhKH9I/AAAAAAAAJIQ/0ZyDNsa7fhc/s320/odaddaccount.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Then I got to the famous login page:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-KacTG1kG4JY/VtFpoIBWoDI/AAAAAAAAJIc/wJGUiaAbW0k/s1600/oglogin.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; src=&quot;https://1.bp.blogspot.com/-KacTG1kG4JY/VtFpoIBWoDI/AAAAAAAAJIc/wJGUiaAbW0k/s320/oglogin.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Logged in with my company account (lets call it djavan@company.com), was redirected to our federated authentication page then finished loggin. The wizard would spin for a second and immediately throw this error:&lt;/div&gt;&lt;span style=&quot;background-color: white; color: #333333; display: inline; float: none; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&quot;There was a problem connecting to OneDrive. Check your Internet connection and then try again.&quot;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;No matter what I try I didn&#39;t manage to pass this step.&lt;br /&gt;I decided to try with an other account &quot;test@company.com&quot; and it worked!&lt;br /&gt;So I deduced it was something related to my account.&lt;br /&gt;&lt;br /&gt;This is how I fixed my problem.&lt;br /&gt;A reminded having a problem with my Office365 account by the past that required manually deleting my account from Azure AD and resync it from our onpremises AD.&lt;br /&gt;Consequence was that it created a new OneDrive for my account appending a &quot;1&quot; at the end of the URL:&lt;br /&gt;https://company-my.sharepoint.com/personal/djavan_company_com/&lt;br /&gt;https://company-my.sharepoint.com/personal/djavan_company_com1/&lt;br /&gt;&lt;br /&gt;After the 30 grâce period the first OneDrive was automatically deleted and I ended using the OneDrive with the &quot;1&quot;.&lt;br /&gt;&lt;br /&gt;I decided to switch back to the previous URL by going to the SharePoint profiles admin page https://company-admin.sharepoint.com/_layouts/15/tenantprofileadmin/manageuserprofileserviceapplication.aspx And search for my profile and edit it:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-pdH5Uc3fWMI/VtFvDP66RzI/AAAAAAAAJIs/eWsNf-bIIrc/s1600/odsearch.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;344&quot; src=&quot;https://1.bp.blogspot.com/-pdH5Uc3fWMI/VtFvDP66RzI/AAAAAAAAJIs/eWsNf-bIIrc/s640/odsearch.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;NOTE: before changing the setting I did a backup of my OneDrive files as I&#39;ll have to add them in the new OneDrive that will be created.&lt;br /&gt;&lt;br /&gt;On this page I removed the &quot;1&quot; if the URL of my personal site then saved the changes:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-5hu_RaX6qBw/VtFx62KqyWI/AAAAAAAAJI4/CHKw00KggDA/s1600/odprofil.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;332&quot; src=&quot;https://3.bp.blogspot.com/-5hu_RaX6qBw/VtFx62KqyWI/AAAAAAAAJI4/CHKw00KggDA/s400/odprofil.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;From here I navigated with the menu to my OneDrive, I got redirected to the new URL (without the &quot;1&quot;) and proceeded initializing this freshly created OneDrive site.&lt;br /&gt;Once it was all done I tried to add my company account to the new OneDrive client and succeeded :) I think the new client does not support yet connecting to a OneDrive site if it&#39;s not using the default URL. &lt;br /&gt;&lt;br /&gt;Additional info:&lt;br /&gt;This was done on the 27/02/2016 with an Office365 E3 plan.&lt;br /&gt;OneDrive Client Build was 17.3.6301.0127 on Windows 10 Pro 1511 (10586.104).&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #333333; display: inline; float: none; font-family: &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;color: black; font-family: &amp;quot;times new roman&amp;quot;; font-size: small; line-height: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/6484008705403753153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=6484008705403753153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6484008705403753153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6484008705403753153'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2016/02/onedrive-for-business-next-gen-sync.html' title='OneDrive for Business Next Gen Sync Client - My troubleshooting experience'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-GR6uw73ExfA/VtFoUqhKH9I/AAAAAAAAJIQ/0ZyDNsa7fhc/s72-c/odaddaccount.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-2029847676757302885</id><published>2014-02-03T13:16:00.000+01:00</published><updated>2014-02-03T13:22:43.045+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>Managed metadata service not working</title><content type='html'>I had the   Managed metadata service (Termstore) down on one of the servers in the farm with the followin message in the ULS, shortly after applying a fresh Cumulative update on SharePoint 2013 platform.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;02/03/2014 12:32:56.09&amp;nbsp;w3wp.exe (0x1D78)&amp;nbsp;0x21A0&amp;nbsp;SharePoint Server&amp;nbsp;Taxonomy&amp;nbsp;ca3r&amp;nbsp;Monitorable&amp;nbsp;Error encountered in background cache check System.Security.SecurityException: Requested registry access is not allowed.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Taxonomy.MetadataWebServiceApplication.GetMOSSInstallPath()... etc etc etc...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So after a lot of googling I found using Process Monitor (&lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&quot;&gt;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&lt;/a&gt;) that the Application pool account was trying to read the windows registry and failed with an acces denied.&lt;br /&gt;&lt;br /&gt;I managed to fix it by using this command (&lt;a href=&quot;http://technet.microsoft.com/en-us/library/ee513047(v=office.14).aspx&quot;&gt;http://technet.microsoft.com/en-us/library/ee513047(v=office.14).aspx&lt;/a&gt;):&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;psconfig -cmd secureresources&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/2029847676757302885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=2029847676757302885' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2029847676757302885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2029847676757302885'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2014/02/managed-metadata-service-not-working.html' title='Managed metadata service not working'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-2203204417070162158</id><published>2014-01-15T18:19:00.000+01:00</published><updated>2014-01-15T18:19:03.071+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>SharePoint 2013 slow page request (over 6 seconds)</title><content type='html'>After applying the October 2013 Cumulative Update on a production farm users started to complain about slow page loads. The farm is composed of 2 front ends, 1 search and the SQL.&lt;br /&gt;After further investigating it appeared that all page request had a &amp;gt;6 second &quot;lag&quot; before loading.&lt;br /&gt;&lt;br /&gt;The problem was due to the Distributed Cache service timeout that is set to 6000m. Something must of gone wrong while applying the CU that broke the Distributed Cache configuration.&lt;br /&gt;&lt;br /&gt;The solution was delete the distributed cache service then rebuild it.&lt;br /&gt;These links where very helpful:&lt;br /&gt;&lt;a href=&quot;http://blog.blksthl.com/2013/11/27/managing-the-distributed-cache-service-in-sharepoint-2013/&quot;&gt;http://blog.blksthl.com/2013/11/27/managing-the-distributed-cache-service-in-sharepoint-2013/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.blksthl.com/2013/05/15/sharepoint-2013-page-loads-takes-a-very-long-time/&quot;&gt;http://blog.blksthl.com/2013/05/15/sharepoint-2013-page-loads-takes-a-very-long-time/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://microsofttouch.fr/default/b/vincent/archive/2012/12/22/service-de-cache-distribu-233-de-sharepoint-2013-spdistributedcacheservice-comment-ne-pas-se-manger.aspx&quot;&gt;http://microsofttouch.fr/default/b/vincent/archive/2012/12/22/service-de-cache-distribu-233-de-sharepoint-2013-spdistributedcacheservice-comment-ne-pas-se-manger.aspx&lt;/a&gt;&amp;nbsp;(in french)</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/2203204417070162158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=2203204417070162158' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2203204417070162158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2203204417070162158'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2014/01/sharepoint-2013-slow-page-request-over.html' title='SharePoint 2013 slow page request (over 6 seconds)'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-4063550273681018685</id><published>2014-01-13T12:54:00.002+01:00</published><updated>2014-01-13T13:40:28.504+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>Speed up SharePoint 2013 Cumulative update installation</title><content type='html'>Hi,&lt;br /&gt;Installing SharePoint Cumulative update can be very slow, I mean painfully slow (after 1h waiting the damed thing only shows 40%).&lt;br /&gt;While googling I found &lt;a href=&quot;http://blogs.msdn.com/b/russmax/archive/2013/04/01/why-sharepoint-2013-cumulative-update-takes-5-hours-to-install.aspx&quot; target=&quot;_blank&quot;&gt;this post&lt;/a&gt;&amp;nbsp;from Russ Maxwell, the script he provided reduced my full CU install to 15min.&lt;br /&gt;&lt;br /&gt;Copy this script in the same folder as the &quot;exe&quot; file of the cumulative update and run it in PowerShell, see Russ&#39;s post for more details :)&lt;br /&gt;Remember to run &quot;psconfig -cmd upgrade -inplace b2b -wait&quot; after installing the CU.&lt;br /&gt;At the end you may have to manually restart IIS Application pools. &lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;Add-PSSnapin &quot;Microsoft.SharePoint.PowerShell&quot; -ErrorAction SilentlyContinue&lt;br /&gt;&lt;br /&gt;&lt;# ============================================================== &lt;br /&gt;  // &lt;br /&gt;  // Microsoft provides programming examples for illustration only, &lt;br /&gt;  // without warranty either expressed or implied, including, but not &lt;br /&gt;// limited to, the implied warranties of merchantability and/or &lt;br /&gt;  // fitness for a particular purpose. &lt;br /&gt;  // &lt;br /&gt;  // This sample assumes that you are familiar with the programming &lt;br /&gt;  // language being demonstrated and the tools used to create and debug &lt;br /&gt;  // procedures. Microsoft support professionals can help explain the &lt;br /&gt;  // functionality of a particular procedure, but they will not modify &lt;br /&gt;  // these examples to provide added functionality or construct &lt;br /&gt;  // procedures to meet your specific needs. If you have limited &lt;br /&gt;  // programming experience, you may want to contact a Microsoft &lt;br /&gt;  // Certified Partner or the Microsoft fee-based consulting line at &lt;br /&gt;  //  (800) 936-5200 . &lt;br /&gt;  // &lt;br /&gt;  // For more information about Microsoft Certified Partners, please &lt;br /&gt;  // visit the following Microsoft Web site: &lt;br /&gt;  // https://partner.microsoft.com/global/30000104 &lt;br /&gt;  // &lt;br /&gt;  // Author: Russ Maxwell (russmax@microsoft.com) &lt;br /&gt;  // &lt;br /&gt;  // ---------------------------------------------------------- #&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;########################### &lt;br /&gt;##Ensure Patch is Present## &lt;br /&gt;########################### &lt;br /&gt;$patchfile = Get-ChildItem | where{$_.Extension -eq &quot;.exe&quot;} &lt;br /&gt;if($patchfile -eq $null) &lt;br /&gt;{ &lt;br /&gt;  Write-Host &quot;Unable to retrieve the file.  Exiting Script&quot; -ForegroundColor Red &lt;br /&gt;  Return &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;######################## &lt;br /&gt;##Stop Search Services## &lt;br /&gt;######################## &lt;br /&gt;##Checking Search services## &lt;br /&gt;$srchctr = 1 &lt;br /&gt;$srch4srvctr = 1 &lt;br /&gt;$srch5srvctr = 1&lt;br /&gt;&lt;br /&gt;$srv4 = get-service &quot;OSearch15&quot; &lt;br /&gt;$srv5 = get-service &quot;SPSearchHostController&quot;&lt;br /&gt;&lt;br /&gt;If(($srv4.status -eq &quot;Running&quot;) -or ($srv5.status-eq &quot;Running&quot;)) &lt;br /&gt;  { &lt;br /&gt;    Write-Host &quot;Choose 1 to Pause Search Service Application&quot; -ForegroundColor Cyan &lt;br /&gt;    Write-Host &quot;Choose 2 to leave Search Service Application running&quot; -ForegroundColor Cyan &lt;br /&gt;    $searchappresult = Read-Host &quot;Press 1 or 2 and hit enter&quot;  &lt;br /&gt;    Write-Host &lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;   if($searchappresult -eq 1) &lt;br /&gt;    { &lt;br /&gt;        $srchctr = 2 &lt;br /&gt;        Write-Host &quot;Pausing the Search Service Application&quot; -foregroundcolor yellow &lt;br /&gt;        Write-Host &quot;This could take a few minutes&quot; -ForegroundColor Yellow &lt;br /&gt;        $ssa = get-spenterprisesearchserviceapplication &lt;br /&gt;        $ssa.pause() &lt;br /&gt;    } &lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;    elseif($searchappresult -eq 2) &lt;br /&gt;    { &lt;br /&gt;        Write-Host &quot;Continuing without pausing the Search Service Application&quot; &lt;br /&gt;    } &lt;br /&gt;    else &lt;br /&gt;    { &lt;br /&gt;        Write-Host &quot;Run the script again and choose option 1 or 2&quot; -ForegroundColor Red &lt;br /&gt;        Write-Host &quot;Exiting Script&quot; -ForegroundColor Red &lt;br /&gt;        Return &lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;Write-Host &quot;Stopping Search Services if they are running&quot; -foregroundcolor yellow &lt;br /&gt;if($srv4.status -eq &quot;Running&quot;) &lt;br /&gt;  { &lt;br /&gt;    $srch4srvctr = 2 &lt;br /&gt;    set-service -Name &quot;OSearch15&quot; -startuptype Disabled &lt;br /&gt;    $srv4.stop() &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;if($srv5.status -eq &quot;Running&quot;) &lt;br /&gt;  { &lt;br /&gt;    $srch5srvctr = 2 &lt;br /&gt;    Set-service &quot;SPSearchHostController&quot; -startuptype Disabled &lt;br /&gt;    $srv5.stop() &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;do &lt;br /&gt;  { &lt;br /&gt;    $srv6 = get-service &quot;SPSearchHostController&quot; &lt;br /&gt;    if($srv6.status -eq &quot;Stopped&quot;) &lt;br /&gt;    { &lt;br /&gt;        $yes = 1 &lt;br /&gt;    } &lt;br /&gt;    Start-Sleep -seconds 10 &lt;br /&gt;  } &lt;br /&gt;  until ($yes -eq 1)&lt;br /&gt;&lt;br /&gt;Write-Host &quot;Search Services are stopped&quot; -foregroundcolor Green &lt;br /&gt;Write-Host&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;####################### &lt;br /&gt;##Stop Other Services## &lt;br /&gt;####################### &lt;br /&gt;Set-Service -Name &quot;IISADMIN&quot; -startuptype Disabled &lt;br /&gt;Set-Service -Name &quot;SPTimerV4&quot; -startuptype Disabled &lt;br /&gt;Write-Host &quot;Gracefully stopping IIS W3WP Processes&quot; -foregroundcolor yellow &lt;br /&gt;Write-Host &lt;br /&gt;iisreset -stop -noforce &lt;br /&gt;Write-Host &quot;Stopping Services&quot; -foregroundcolor yellow &lt;br /&gt;Write-Host&lt;br /&gt;&lt;br /&gt;$srv2 = get-service &quot;SPTimerV4&quot; &lt;br /&gt;  if($srv2.status -eq &quot;Running&quot;) &lt;br /&gt;  {$srv2.stop()}&lt;br /&gt;&lt;br /&gt;Write-Host &quot;Services are Stopped&quot; -ForegroundColor Green &lt;br /&gt;Write-Host &lt;br /&gt;Write-Host&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;################## &lt;br /&gt;##Start patching## &lt;br /&gt;################## &lt;br /&gt;Write-Host &quot;Patching now keep this PowerShell window open&quot; -ForegroundColor Magenta &lt;br /&gt;Write-Host &lt;br /&gt;$starttime = Get-Date&lt;br /&gt;&lt;br /&gt;$filename = $patchfile.basename &lt;br /&gt;$arg = &quot;/passive&quot;&lt;br /&gt;&lt;br /&gt;Start-Process $filename $arg&lt;br /&gt;&lt;br /&gt;Start-Sleep -seconds 20 &lt;br /&gt;$proc = get-process $filename &lt;br /&gt;$proc.WaitForExit()&lt;br /&gt;&lt;br /&gt;$finishtime = get-date &lt;br /&gt;Write-Host &lt;br /&gt;Write-Host &quot;Patch installation complete&quot; -foregroundcolor green &lt;br /&gt;Write-Host&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;################## &lt;br /&gt;##Start Services## &lt;br /&gt;################## &lt;br /&gt;Write-Host &quot;Starting Services Backup&quot; -foregroundcolor yellow &lt;br /&gt;Set-Service -Name &quot;SPTimerV4&quot; -startuptype Automatic &lt;br /&gt;Set-Service -Name &quot;IISADMIN&quot; -startuptype Automatic&lt;br /&gt;&lt;br /&gt;##Grabbing local server and starting services## &lt;br /&gt;$servername = hostname &lt;br /&gt;$server = get-spserver $servername&lt;br /&gt;&lt;br /&gt;$srv2 = get-service &quot;SPTimerV4&quot; &lt;br /&gt;$srv2.start() &lt;br /&gt;$srv3 = get-service &quot;IISADMIN&quot; &lt;br /&gt;$srv3.start() &lt;br /&gt;$srv4 = get-service &quot;OSearch15&quot; &lt;br /&gt;$srv5 = get-service &quot;SPSearchHostController&quot;&lt;br /&gt;&lt;br /&gt;###Ensuring Search Services were stopped by script before Starting&quot; &lt;br /&gt;if($srch4srvctr -eq 2) &lt;br /&gt;{ &lt;br /&gt;    set-service -Name &quot;OSearch15&quot; -startuptype Automatic &lt;br /&gt;    $srv4.start() &lt;br /&gt;} &lt;br /&gt;if($srch5srvctr -eq 2) &lt;br /&gt;{ &lt;br /&gt;    Set-service &quot;SPSearchHostController&quot; -startuptype Automatic &lt;br /&gt;    $srv5.start() &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;###Resuming Search Service Application if paused### &lt;br /&gt;if($srchctr -eq 2) &lt;br /&gt;{ &lt;br /&gt;    Write-Host &quot;Resuming the Search Service Application&quot; -foregroundcolor yellow &lt;br /&gt;    $ssa = get-spenterprisesearchserviceapplication &lt;br /&gt;    $ssa.resume() &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Write-Host &quot;Services are Started&quot; -foregroundcolor green &lt;br /&gt;Write-Host &lt;br /&gt;Write-Host &lt;br /&gt;Write-Host &quot;Script Duration&quot; -foregroundcolor yellow &lt;br /&gt;Write-Host &quot;Started: &quot; $starttime -foregroundcolor yellow &lt;br /&gt;Write-Host &quot;Finished: &quot; $finishtime -foregroundcolor yellow &lt;br /&gt;Write-Host &quot;Script Complete&quot; &lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/4063550273681018685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=4063550273681018685' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/4063550273681018685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/4063550273681018685'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2014/01/speed-up-sharepoint-2013-cumulative.html' title='Speed up SharePoint 2013 Cumulative update installation'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-6324240232667649418</id><published>2013-11-07T12:05:00.001+01:00</published><updated>2014-01-13T15:13:16.368+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>User permission not working after migrating SharePoint 2010 sites to SharePoint 2013</title><content type='html'>After migrating a SharePoint 2010 site to a new SharePoint 2013 platform (that is connected to the same Active Directory) using the &quot;Mount-SPContentDatabase&quot; command, users were unable to login.&lt;br /&gt;&lt;br /&gt;Solution: You need to convert the users to Claims authentication! (&lt;a href=&quot;http://bartwullems.blogspot.fr/2013/05/users-cant-login-after-migrating-to.html&quot; target=&quot;_blank&quot;&gt;Thx so much bart&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Once again our good friend PowerShell will do the job:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$wa = get-SPWebApplication http://mywebapp&lt;br /&gt;Convert-SPWebApplication -Identity $wa -To Claims –RetainPermissions&lt;br /&gt;$wa.MigrateUsers($true)&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/6324240232667649418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=6324240232667649418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6324240232667649418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/6324240232667649418'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2013/11/user-permission-not-working-after.html' title='User permission not working after migrating SharePoint 2010 sites to SharePoint 2013'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-8936855228748497444</id><published>2013-09-23T12:02:00.000+02:00</published><updated>2013-11-27T00:03:54.497+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Errors"/><title type='text'>XSD error while adding a user to a SharePoint 2010 group</title><content type='html'>Got the following Runtime Unexpected in the ULS while trying to add a user to a SharePoint Group: &lt;br /&gt;&lt;pre&gt;System.InvalidOperationException: Namespace prefix &#39;xsd&#39; is not defined.   &lt;br /&gt; at System.Xml.Serialization.XmlSerializationReader.ToXmlQualifiedName(String value, Boolean decodeName)    &lt;br /&gt; at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDictionaryEntryArray.Read1_Object(Boolean isNullable, Boolean checkType)    &lt;br /&gt; at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDictionaryEntryArray.Read2_DictionaryEntry(Boolean checkType)    &lt;br /&gt; at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDictionaryEntryArray.Read3_ArrayOfDictionaryEntry()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Turned out that it was a compatibility issue with Internet Explorer 10. Switching to IE8 engine solved the problem.</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/8936855228748497444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=8936855228748497444' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/8936855228748497444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/8936855228748497444'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2013/09/xsd-error-while-adding-user-to.html' title='XSD error while adding a user to a SharePoint 2010 group'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-5143864726341419931</id><published>2013-08-12T11:08:00.000+02:00</published><updated>2013-11-26T23:57:58.065+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2008"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2012"/><title type='text'>Disable Windows UAC with PowerShell</title><content type='html'>One line PS script to disable Windows UAC hassling on a development environment.&lt;br /&gt;No longer need to &quot;Run as administrator&quot; on everything :)  &lt;pre class=&quot;prettyprint&quot;&gt;Set-ItemProperty -Path &quot;HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System&quot; -Name &quot;EnableLUA&quot; -Value &quot;0&quot;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/5143864726341419931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=5143864726341419931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/5143864726341419931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/5143864726341419931'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2013/08/disable-windows-uac-with-powershell.html' title='Disable Windows UAC with PowerShell'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-344747460138643919</id><published>2013-04-29T18:20:00.000+02:00</published><updated>2015-04-15T11:15:19.504+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint API"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2012"/><title type='text'>Branding SharePoint 2013 My Sites with Feature Stapling</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Here is a quick guide for branding SharePoint 2013 My Sites using Feature Stapling.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-gFoiB9jOW2E/UX6J4BTTi-I/AAAAAAAAAcE/F1eTpYo-mqQ/s1600/Screenshot+-+29_04_2013+,+16_54_51.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-gFoiB9jOW2E/UX6J4BTTi-I/AAAAAAAAAcE/F1eTpYo-mqQ/s320/Screenshot+-+29_04_2013+,+16_54_51.png&quot; height=&quot;220&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Create a new Sharepoint Solution.&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-cygc7FGjSvc/UX6KftLOQwI/AAAAAAAAAcM/c8I3Lj6CvKk/s1600/Screenshot+-+29_04_2013+,+16_57_31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-cygc7FGjSvc/UX6KftLOQwI/AAAAAAAAAcM/c8I3Lj6CvKk/s320/Screenshot+-+29_04_2013+,+16_57_31.png&quot; height=&quot;254&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Select &quot;Farm solution&quot; then provide the correct URL to your MySite Host (in my case I&#39;m using &quot;/my&quot;) then click Finish.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 : Provisioning the custom masterpage&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-RGorTX6RXsE/UX6MkKIADwI/AAAAAAAAAcw/A9BXLd1crzQ/s1600/Screenshot+-+29_04_2013+,+17_06_13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-RGorTX6RXsE/UX6MkKIADwI/AAAAAAAAAcw/A9BXLd1crzQ/s320/Screenshot+-+29_04_2013+,+17_06_13.png&quot; height=&quot;220&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Add a new Module to the projet.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-ZNFyQ1p2Pns/UX6NzcTtdLI/AAAAAAAAAc8/Wps0Fu8Kh0w/s1600/Screenshot+-+29_04_2013+,+17_11_35.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-ZNFyQ1p2Pns/UX6NzcTtdLI/AAAAAAAAAc8/Wps0Fu8Kh0w/s1600/Screenshot+-+29_04_2013+,+17_11_35.png&quot; /&gt;&lt;/a&gt;As&amp;nbsp;a starting point just copy the original my sites masterpage from&amp;nbsp;&quot;\15\TEMPLATE\FEATURES\MySiteMaster\mysite15.master&quot; into the project and rename it &quot;CustomMySite.master&quot; and integrate your HTML/CSS design to it. EDIT : if you are adding a new file (css, png, jpg,...) that you are referencing in the master consider using the LAYOUTS folder to keep url reference simple. Alternatively you can use a provisioning feature to store it in a library instance on the site but this method can be unsafe as the url may be inconsistent and therefore will require to unghost the masterpage to edit the html.&lt;/div&gt;&lt;br /&gt;Edit the Elements.xml and copy this:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;Elements xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot;&amp;gt;&lt;br /&gt;  &amp;lt;Module Name=&quot;ML_MasterPages&quot; List=&quot;116&quot; Url=&quot;_catalogs/masterpage&quot; Path=&quot;ML_MasterPages&quot; RootWebOnly=&quot;TRUE&quot;&amp;gt;&lt;br /&gt;    &amp;lt;File Url=&quot;CustomMySite.master&quot; Type=&quot;GhostableInLibrary&quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/Module&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-oUwZ3qP9CyU/UX6PvYL_9TI/AAAAAAAAAdQ/URwgWI5-U-g/s1600/Screenshot+-+29_04_2013+,+17_19_32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-oUwZ3qP9CyU/UX6PvYL_9TI/AAAAAAAAAdQ/URwgWI5-U-g/s320/Screenshot+-+29_04_2013+,+17_19_32.png&quot; height=&quot;168&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;You&#39;ll have to&amp;nbsp;add the module to the feature you will create in step 2.&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Step 2 : Applying the custom masterpage to the site&lt;/strong&gt;&lt;br /&gt;We&#39;ll use an event receiver to apply the new master.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-WuOFdMzfQbY/UX6LaS2XI2I/AAAAAAAAAcY/2SPZgul8uJs/s1600/Screenshot+-+29_04_2013+,+17_00_55.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-WuOFdMzfQbY/UX6LaS2XI2I/AAAAAAAAAcY/2SPZgul8uJs/s320/Screenshot+-+29_04_2013+,+17_00_55.png&quot; height=&quot;212&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Add a new Feature with scope &quot;Site&quot; and name it &quot;Site_ApplyCustomMasterPage&quot;;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-LYZkr1lwTMU/UX6LqgwLllI/AAAAAAAAAcg/Rgu4Mip8OgY/s1600/Screenshot+-+29_04_2013+,+17_02_26.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-LYZkr1lwTMU/UX6LqgwLllI/AAAAAAAAAcg/Rgu4Mip8OgY/s320/Screenshot+-+29_04_2013+,+17_02_26.png&quot; height=&quot;123&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Add an event receiver to the feature.&lt;/div&gt;&lt;br /&gt;Add the following code:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;namespace ClientName.MySitesBranding.Features.Site_ApplyCustomMasterPage&lt;br /&gt;{&lt;br /&gt;    using Microsoft.SharePoint;&lt;br /&gt;    using Microsoft.SharePoint.Utilities;&lt;br /&gt;    using System;&lt;br /&gt;    using System.Runtime.InteropServices;&lt;br /&gt;    using System.Security.Permissions;&lt;br /&gt;&lt;br /&gt;    [Guid(&quot;{your Guid}&quot;)]&lt;br /&gt;    public class Site_ApplyCustomMasterPageEventReceiver : SPFeatureReceiver&lt;br /&gt;    {&lt;br /&gt;        public override void FeatureActivated(SPFeatureReceiverProperties properties)&lt;br /&gt;        {&lt;br /&gt;            SPSite siteCollection = (SPSite)properties.Feature.Parent;&lt;br /&gt;            string masterUrl = SPUrlUtility.CombineUrl(siteCollection.ServerRelativeUrl, &quot;_catalogs/masterpage/CustomMySite.master&quot;);&lt;br /&gt;&lt;br /&gt;            foreach (SPWeb web in siteCollection.AllWebs)&lt;br /&gt;            {&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    web.MasterUrl = masterUrl;&lt;br /&gt;                    web.CustomMasterUrl = masterUrl;&lt;br /&gt;                    web.Update();&lt;br /&gt;                }&lt;br /&gt;                catch&lt;br /&gt;                {&lt;br /&gt;                    if (web != null)&lt;br /&gt;                        web.Dispose();&lt;br /&gt;&lt;br /&gt;                    throw;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                if (web != null)&lt;br /&gt;                    web.Dispose();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)&lt;br /&gt;        {&lt;br /&gt;            SPSite siteCollection = (SPSite)properties.Feature.Parent;&lt;br /&gt;            string masterUrl = SPUrlUtility.CombineUrl(siteCollection.ServerRelativeUrl, &quot;_catalogs/masterpage/mysite15.master&quot;);&lt;br /&gt;&lt;br /&gt;            foreach (SPWeb web in siteCollection.AllWebs)&lt;br /&gt;            {&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    web.MasterUrl = masterUrl;&lt;br /&gt;                    web.CustomMasterUrl = masterUrl;&lt;br /&gt;                    web.Update();&lt;br /&gt;                }&lt;br /&gt;                catch&lt;br /&gt;                {&lt;br /&gt;                    if (web != null)&lt;br /&gt;                        web.Dispose();&lt;br /&gt;&lt;br /&gt;                    throw;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                if (web != null)&lt;br /&gt;                    web.Dispose();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Step 3 : Stapling the &quot;apply mastepage&quot; feature to the personal site template&lt;/strong&gt;&lt;br /&gt;This action will hook your feature to any &lt;u&gt;new&lt;/u&gt; personal site that will be created after staple is effective. If you need to apply the branding to existing personal write a PowerShell script that activates the feature for each &quot;/my/personal/xxx&quot;&amp;nbsp;:)&lt;br /&gt;NOTE : As the MySiteHost (the &quot;/my&quot; root url) will usually already exist on the customer&#39;s target platform when they create their &quot;User Profile Application Service&quot; you&#39;ll have to manually activate the &quot;ApplyCustomMasterPage&quot; feature on that site collection (or think PowerShell if needed)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-k5H9NZOiBwI/UX6UftBLRKI/AAAAAAAAAdg/EDf_aKCTk1I/s1600/Screenshot+-+29_04_2013+,+17_40_09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-k5H9NZOiBwI/UX6UftBLRKI/AAAAAAAAAdg/EDf_aKCTk1I/s1600/Screenshot+-+29_04_2013+,+17_40_09.png&quot; /&gt;&lt;/a&gt;Create a new Feature with scope &quot;Farm&quot; and name it &quot;Farm_MySiteStapler&quot;.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-o_1BWyKH5hQ/UX6VBzkCz4I/AAAAAAAAAdo/tPnMeEVYNjI/s1600/Screenshot+-+29_04_2013+,+17_42_11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-o_1BWyKH5hQ/UX6VBzkCz4I/AAAAAAAAAdo/tPnMeEVYNjI/s320/Screenshot+-+29_04_2013+,+17_42_11.png&quot; height=&quot;220&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Then create a new empty Element name it &quot;ML_ApplyCustomMasterPageStapler&quot;.&lt;/div&gt;&lt;br /&gt;Add the followin code&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;Elements xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot;&amp;gt;&lt;br /&gt;  &amp;lt;FeatureSiteTemplateAssociation Id=&quot;{the Guid of the Site_ApplyCustomMasterPage feature}&quot; TemplateName=&quot;SPSPERS#2&quot; /&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style=&quot;color: red;&quot;&gt;Note that in SharePoint 2013 the Template to staple is &quot;&lt;strong&gt;SPSPERS#2&lt;/strong&gt;&quot; whereas in SharePoint 2010 you had to staple &quot;&lt;strong&gt;SPSPERS#0&lt;/strong&gt;&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-M1wUu0dyBfI/UX6VZS3E2eI/AAAAAAAAAdw/aUeoa3UAE40/s1600/Screenshot+-+29_04_2013+,+17_44_02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-M1wUu0dyBfI/UX6VZS3E2eI/AAAAAAAAAdw/aUeoa3UAE40/s320/Screenshot+-+29_04_2013+,+17_44_02.png&quot; height=&quot;101&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Add the module to the Stapler feature.&lt;/div&gt;&lt;br /&gt;Your projet should look like this:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-yrP6yyUGp7o/UX6Vm3F9qUI/AAAAAAAAAd4/jedO8VeBhqQ/s1600/Screenshot+-+29_04_2013+,+17_44_56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-yrP6yyUGp7o/UX6Vm3F9qUI/AAAAAAAAAd4/jedO8VeBhqQ/s320/Screenshot+-+29_04_2013+,+17_44_56.png&quot; height=&quot;320&quot; width=&quot;246&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;At this point the branding will actually work for the root sites, if you wish to apply template&amp;nbsp;to any subsite that will be created (such as Blogs,...) you need to follow step 4 to hook the WebProvisioned event.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step&amp;nbsp;4 : Applying the masterpage to any subsite created under the my site&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-FEgyAg-bVvY/UX6YpnIKJOI/AAAAAAAAAeI/I56Y1VsloqA/s1600/Screenshot+-+29_04_2013+,+17_57_51.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-FEgyAg-bVvY/UX6YpnIKJOI/AAAAAAAAAeI/I56Y1VsloqA/s320/Screenshot+-+29_04_2013+,+17_57_51.png&quot; height=&quot;221&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Add a new Event receiver &quot;ER_MySite_ElementsWebProvisioned&quot;.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-p5eZmAElkEE/UX6Y9k_2heI/AAAAAAAAAeQ/pQJE_e07mwk/s1600/Screenshot+-+29_04_2013+,+17_59_14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-p5eZmAElkEE/UX6Y9k_2heI/AAAAAAAAAeQ/pQJE_e07mwk/s320/Screenshot+-+29_04_2013+,+17_59_14.png&quot; height=&quot;252&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Selected the web event &quot;a site was provisioned&quot;.&lt;/div&gt;&lt;br /&gt;Then enter the following code:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;namespace ClientName.MySitesBranding.Receivers.ER_MySite_ElementsWebProvisioned&lt;br /&gt;{&lt;br /&gt;    using System;&lt;br /&gt;    using Microsoft.SharePoint;&lt;br /&gt;&lt;br /&gt;    public class ER_MySite_ElementsWebProvisioned : SPWebEventReceiver&lt;br /&gt;    {&lt;br /&gt;        public override void WebProvisioned(SPWebEventProperties properties)&lt;br /&gt;        {&lt;br /&gt;            SPWeb web = properties.Web;&lt;br /&gt;            SPWeb rootWeb = web.Site.RootWeb;&lt;br /&gt;            web.MasterUrl = rootWeb.MasterUrl;&lt;br /&gt;            web.CustomMasterUrl = rootWeb.CustomMasterUrl;&lt;br /&gt;            web.Update();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-jDx8aKiX0y4/UX6aEppdiyI/AAAAAAAAAec/68xIEDgAK3g/s1600/Screenshot+-+29_04_2013+,+18_04_01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-jDx8aKiX0y4/UX6aEppdiyI/AAAAAAAAAec/68xIEDgAK3g/s320/Screenshot+-+29_04_2013+,+18_04_01.png&quot; height=&quot;120&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Now add the Event receiver to the &quot;Site_ApplyCustomMasterPage&quot; feature.&lt;/div&gt;&lt;br /&gt;Your project should look like this: &lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-svupt72ueHE/UX6aXGxOqTI/AAAAAAAAAek/k6INMrTv_Sc/s1600/Screenshot+-+29_04_2013+,+18_05_09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-svupt72ueHE/UX6aXGxOqTI/AAAAAAAAAek/k6INMrTv_Sc/s320/Screenshot+-+29_04_2013+,+18_05_09.png&quot; height=&quot;320&quot; width=&quot;205&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Deploy your solution, activate the Farm feature and connect with a &lt;span style=&quot;font-weight:bold;color:red;&quot;&gt;new user&lt;/span&gt; to his MySite check that the new master is applied. (alternative is to delete your current MySite and connect to the site to force automatic&amp;nbsp;re-creation)&lt;br /&gt;Your done :)&lt;br /&gt;&lt;br /&gt;Edit: These are clues on how to solve common problems&lt;br /&gt;* &quot;The newsfeed and about me pages are styled, but looking at the urls these are all default screens and don&#39;t belong the personal mysites of individuals. Pages like blogs and apps have /personal/*username*/ in the url and these are not being properly styled as part 4 should be doing.&quot;&lt;br /&gt;=&amp;gt; This means that the stapler feature is not working (step 3). Check the &quot;Farm_MySiteStapler&quot; feature, it should be in charge of activating the &quot;Site_ApplyCustomMasterPage&quot; feature for each new personal site created. If the personal site already exists you should run a PowerShell activation for each of them as they didn&#39;t initialised with the stapled feature.&lt;br /&gt;Try Mat&#39;s code it should do the trick (Thx Mat):&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;Get-SPSite http://{your-server-name}/my/personal/* | ForEach { $_.URL } | ForEach { Enable-SPFeature -Identity {your-solution-name}_Site_ApplyCustomMasterPage -URL $_ }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;* &quot;My custom masterpage gets applied to the About me and the Newsfeed but not the blog, tasks and apps pages.&quot;&lt;br /&gt;=&amp;gt;This means the event receiver &quot;ER_MySite_ElementsWebProvisioned&quot; is not working. Check that the ER is in your feature. You can use SharePoint Manager (http://spm.codeplex.com/) to see the EventReceivers collection of the SPSite object or through PowerShell&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$site = Get-SPSite http://mydevsite/my/personal/djavanroa&lt;br /&gt;$site.EventReceivers&lt;/pre&gt;&lt;br /&gt;Our custom ER should be listed. </content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/344747460138643919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=344747460138643919' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/344747460138643919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/344747460138643919'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2013/04/branding-sharepoint-2013-my-sites-with.html' title='Branding SharePoint 2013 My Sites with Feature Stapling'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-gFoiB9jOW2E/UX6J4BTTi-I/AAAAAAAAAcE/F1eTpYo-mqQ/s72-c/Screenshot+-+29_04_2013+,+16_54_51.png" height="72" width="72"/><thr:total>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-1787157326020397216</id><published>2012-12-12T12:50:00.002+01:00</published><updated>2013-02-15T12:23:54.613+01:00</updated><title type='text'>Playing with SharePoint ECMAScript object model and browser&#39;s javascript console</title><content type='html'>Trying to debug SharePoint ECMAScript from Chrome or IE javascript console but you&#39;re just getting null objects and errors ?&lt;br /&gt;&lt;br /&gt;In Chrome getting this message?&lt;br /&gt;&lt;span style=&quot;background-color: white; color: red; font-family: Consolas, &#39;Lucida Console&#39;, monospace; font-size: 12px; line-height: 13px;&quot;&gt;Error: The property or field has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Internet Explorer getting this:&lt;br /&gt;&lt;span style=&quot;color: red; font-family: Courier New, Courier, monospace;&quot;&gt;The property or field has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Try this code as starting point:&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;var ctx = SP.ClientContext.get_current();&lt;br /&gt;var web = ctx.get_web();&lt;br /&gt;ctx.load(web);&lt;br /&gt;ctx.executeQueryAsync();&lt;br /&gt;alert(web.get_title());&lt;br /&gt;&lt;/pre&gt;Have a nice day ;)</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/1787157326020397216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=1787157326020397216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/1787157326020397216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/1787157326020397216'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2012/12/playing-with-sharepoint-ecma-client.html' title='Playing with SharePoint ECMAScript object model and browser&#39;s javascript console'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-8034982645051608498</id><published>2012-06-12T16:32:00.003+02:00</published><updated>2013-11-27T00:03:06.765+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint API"/><title type='text'>SharePoint internal field IDs</title><content type='html'>Because I always spend 20 kitten* minutes trying to remember the name of this kitten* object !&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Microsoft.SharePoint.SPBuiltInFieldId&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.spbuiltinfieldid_fields(v=office.12)&quot;&gt;http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.spbuiltinfieldid_fields(v=office.12)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This object has a constant with the GUID for each internal field in SharePoint.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;*: Guild Wars 2 beta forums are altering my language :)&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/8034982645051608498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=8034982645051608498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/8034982645051608498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/8034982645051608498'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2012/06/sharepoint-internal-field-ids.html' title='SharePoint internal field IDs'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-2025572839841457248</id><published>2012-02-21T15:02:00.001+01:00</published><updated>2013-02-15T12:26:57.546+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><title type='text'>Create a SiteCollection based on a WebTemplate from PowerShell</title><content type='html'>Hey! With SharePoint 2010 there is this cool new way of creating sites know as &quot;WebTemplate&quot;. (see more about this here:&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms434313.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/ms434313.aspx&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;The thing is that as the &quot;template&quot; is only used at initialisation time then it is seen as created from the base template. So question: if I need to create the site from PowerShell what shall I specify as &quot;-template&quot; ?&lt;br /&gt;&lt;br /&gt;The full&amp;nbsp;command&amp;nbsp;will be:&lt;br /&gt;New-SPSite -Url $site_url -OwnerAlias $owner -Template &quot;{Parent_Feature_GUID}#WebTemplate_Name&quot;&lt;br /&gt;&lt;br /&gt;IMPORTANT NOTE : If you have other WebTemplates enabled for creation from this WebTemplate that are based on native site definitions and if you have an OS with a different culture than the installed SharePoint the creation will fail.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;I have a Win7 fr-FR with SharePoint 2010 en-US installed.&lt;br /&gt;I created a WebTemplate for the root site based on &quot;CMSPUBLISHING#0&quot;, then I created an other WebTemplate for the sub site that is also based on &quot;CMSPUBLISHING#0&quot;.&lt;br /&gt;I have a feature in the root site that enables the sub site template creation.&lt;br /&gt;When I tried creating the site with the New-SPSite command it failed with the following message:&lt;br /&gt;&lt;pre&gt;The SPWebTemplate named CMSPUBLISHING#0 cannot be found. The SPWebTemplate matching the BaseTemplateName and BaseConfigurationID of the WebTemplate declared by feature {GUID} could not be found.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Thanks to&amp;nbsp;&lt;a href=&quot;http://vintentou.wordpress.com/2010/08/23/error-during-creating-of-site-from-custom-web-template/&quot; target=&quot;_blank&quot;&gt;this guy&lt;/a&gt;, I managed to figure out it was due to a culture problem whereas SharePoint was pointing to &quot;...\TEMPLATE\1036\...&quot; in stead of &quot;...\TEMPLATE\1033\...&quot; to find the CMSPUBLISHING template.&lt;br /&gt;&lt;br /&gt;Easiest solution found: Execute the command within a en-US (1033) culture context !&lt;br /&gt;Here it is (credits for the Using-Culture &lt;a href=&quot;http://blogs.msdn.com/b/monad/archive/2005/11/30/498432.aspx&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$site_url = &quot;http://mysitecollection&quot;;&lt;br /&gt;$owner = &quot;me&quot;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function Using-Culture (&lt;br /&gt;  [System.Globalization.CultureInfo]&lt;br /&gt;  $culture = (throw &quot;USAGE: Using-Culture -Culture culture -Script {...}&quot;),&lt;br /&gt;  [ScriptBlock]&lt;br /&gt;  $script = (throw &quot;USAGE: Using-Culture -Culture culture -Script {...}&quot;))&lt;br /&gt;{&lt;br /&gt;    $OldCulture = [Threading.Thread]::CurrentThread.CurrentCulture&lt;br /&gt;    $OldUICulture = [Threading.Thread]::CurrentThread.CurrentUICulture    &lt;br /&gt;    try {        &lt;br /&gt;        [Threading.Thread]::CurrentThread.CurrentCulture = $culture        &lt;br /&gt;        [Threading.Thread]::CurrentThread.CurrentUICulture = $culture        &lt;br /&gt;        Invoke-Command $script    &lt;br /&gt;    }    &lt;br /&gt;    finally {        &lt;br /&gt;        [Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture        &lt;br /&gt;        [Threading.Thread]::CurrentThread.CurrentUICulture = $OldUICulture    &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Remove-SPSite -Identity $site_url -GradualDelete -Confirm:$False;&lt;br /&gt;&lt;br /&gt;$culture = [System.Globalization.CultureInfo]::GetCultureInfo(1033);&lt;br /&gt;&lt;br /&gt;Using-Culture -culture $culture -script { &lt;br /&gt;    New-SPSite -Url $site_url -OwnerAlias $owner -Template &quot;{FEATURE_GUID}#WebTemplateName&quot;;&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/2025572839841457248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=2025572839841457248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2025572839841457248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/2025572839841457248'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2012/02/create-sitecollection-based-on.html' title='Create a SiteCollection based on a WebTemplate from PowerShell'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8113781268101811836.post-186824140067335997</id><published>2010-11-23T14:46:00.030+01:00</published><updated>2013-11-26T23:59:09.058+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint API"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflow"/><title type='text'>Programmatically approve a SharePoint workflow task</title><content type='html'>I know they are several samples available out there, but here is a merge the best parts I found.&lt;br /&gt;&lt;br /&gt;This example will show how to notify a sharepoint workflow to move to next step.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Context&lt;/b&gt;&lt;br /&gt;I&#39;m creating a custom workflow. I need to notify the wf from outside the process (list event, console app,etc...).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Workflow&lt;/b&gt;&lt;br /&gt;The basic is to create a &quot;fake&quot; task and monitor the OnTaskChange event, then programmatically approve the task from outside the process.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_Sf5CuLtmQqw/TOvPDawa9fI/AAAAAAAAARA/ko8_KhwQOno/s1600/wfgraph.JPG&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5542751424038499826&quot; src=&quot;http://1.bp.blogspot.com/_Sf5CuLtmQqw/TOvPDawa9fI/AAAAAAAAARA/ko8_KhwQOno/s400/wfgraph.JPG&quot; style=&quot;height: 400px; width: 200px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The wf example is pretty simple: create a task, wait for changes then log a message in the workflow history.&lt;br /&gt;&lt;br /&gt;Bind the CorrelationToken of the CreateTask1 to a new token on that will be exclusive for this task. Apply the same token to the OnTaskChanged1.&lt;br /&gt;&lt;br /&gt;The while loop could be omitted in this example, I left it to suggest that you can add a validation at this point using the while condition.&lt;br /&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;prettyprint&quot;&gt;private void createTask1_MethodInvoking(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;  var ct = sender as CreateTask;&lt;br /&gt;  ct.TaskId = Guid.NewGuid();&lt;br /&gt;  var spTaskProperties = new Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties();&lt;br /&gt;  spTaskProperties.Title = String.Format(&quot;{0} Step1&quot;, this.workflowProperties.Item.Name);&lt;br /&gt;  ct.TaskProperties = spTaskProperties;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No need to bind the OnTaskChanged Invoked event.&lt;br /&gt;The CreateTask1_MethodInvoking provides the minimal infos to create the task, note that the AssignedTo property is left blank.&lt;br /&gt;&lt;br /&gt;NOTE: In the feature that deployed the workflow I didn&#39;t specify an infopath form.&lt;br /&gt;Therefore if you manually go to the workflow task list and click on the task you will get a message telling you that no xsn form is associated, nothing to worry about we&#39;ll do it through code :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notifying the workflow&lt;/b&gt;&lt;br /&gt;In this example I chose to fire next step of the workflow from a console application.&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;  using (var site = new SPSite(&quot;http://[site_url]&quot;))&lt;br /&gt;  {&lt;br /&gt;    using (var web = site.OpenWeb())&lt;br /&gt;    {&lt;br /&gt;      // retreive the list where the workflow is running&lt;br /&gt;      var list = web.Lists[&quot;myList&quot;]; &lt;br /&gt;&lt;br /&gt;      // find the item with the task to complete (for the example my item&#39;s ID is 1)&lt;br /&gt;      var item = list.Items.Cast&amp;lt;SPListItem&amp;gt;().First(c =&amp;gt; c.ID == 1);&lt;br /&gt;      &lt;br /&gt;      // find the latest active workflow&lt;br /&gt;      var wfs = site.WorkflowManager.GetItemActiveWorkflows(item).Cast&amp;lt;SPWorkflow&amp;gt;();&lt;br /&gt;      var wfID = wfs.OrderByDescending(c =&amp;gt; c.Created).First();&lt;br /&gt;&lt;br /&gt;      // fetch workflow tasks&lt;br /&gt;      var wfTasks = item.Tasks;&lt;br /&gt;      &lt;br /&gt;      // find the correct task&lt;br /&gt;      var task = (SPListItem)wfTasks.Cast&amp;lt;SPWorkflowTask&amp;gt;().First(&lt;br /&gt;        c =&amp;gt; c.WorkflowId.Equals(wfID.InstanceId)&lt;br /&gt;        &amp;amp;&amp;amp; c.Title.Contains(&quot;Step1&quot;));&lt;br /&gt;&lt;br /&gt;      // build a hashtable with the values to be changed to mark the task as complete&lt;br /&gt;      var ht = new Hashtable();&lt;br /&gt;      ht[SPBuiltInFieldId.Completed] = true;&lt;br /&gt;      ht[SPBuiltInFieldId.PercentComplete] = 1;&lt;br /&gt;      string taskStatus = SPResource.GetString(new CultureInfo((int)task.Web.Language, false), &quot;WorkflowTaskStatusComplete&quot;, new object[0]);&lt;br /&gt;      ht[SPBuiltInFieldId.TaskStatus] = taskStatus;&lt;br /&gt;&lt;br /&gt;      // alter the task using a trick to prevent task lock issue&lt;br /&gt;      AlterTask(task, ht, true, 5, 100);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static bool AlterTask(SPListItem task, Hashtable htData, bool fSynchronous, int attempts, int millisecondsTimeout)&lt;br /&gt;{&lt;br /&gt;  // check this link for more details: http://geek.hubkey.com/2007/09/locked-workflow.html&lt;br /&gt;&lt;br /&gt;  if ((int)task[SPBuiltInFieldId.WorkflowVersion] != 1)&lt;br /&gt;  {&lt;br /&gt;    SPList parentList = task.ParentList.ParentWeb.Lists[new Guid(task[SPBuiltInFieldId.WorkflowListId].ToString())];&lt;br /&gt;    SPListItem parentItem = parentList.Items.GetItemById((int)task[SPBuiltInFieldId.WorkflowItemId]);&lt;br /&gt;    for (int i = 0; i &amp;lt; attempts; i++)&lt;br /&gt;    {&lt;br /&gt;      SPWorkflow workflow = parentItem.Workflows[new Guid(task[SPBuiltInFieldId.WorkflowInstanceID].ToString())];&lt;br /&gt;      if (!workflow.IsLocked)&lt;br /&gt;      {&lt;br /&gt;        task[SPBuiltInFieldId.WorkflowVersion] = 1;&lt;br /&gt;        task.SystemUpdate();&lt;br /&gt;        break;&lt;br /&gt;      }&lt;br /&gt;      if (i != attempts - 1)&lt;br /&gt;        Thread.Sleep(millisecondsTimeout);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  return SPWorkflowTask.AlterTask(task, htData, fSynchronous);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And voila!</content><link rel='replies' type='application/atom+xml' href='http://sharepointologic.blogspot.com/feeds/186824140067335997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8113781268101811836&amp;postID=186824140067335997' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/186824140067335997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8113781268101811836/posts/default/186824140067335997'/><link rel='alternate' type='text/html' href='http://sharepointologic.blogspot.com/2010/11/programmatically-approve-sharepoint.html' title='Programmatically approve a SharePoint workflow task'/><author><name>Djavan ROA</name><uri>https://plus.google.com/110383739784523392090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-GaCRj9URESQ/AAAAAAAAAAI/AAAAAAAAKHo/BtS4DhWxtlk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Sf5CuLtmQqw/TOvPDawa9fI/AAAAAAAAARA/ko8_KhwQOno/s72-c/wfgraph.JPG" height="72" width="72"/><thr:total>5</thr:total></entry></feed>