Live coding walk through of a locally hosted “Todo List” CRUD application with Breeze WebAPI 2.2 middle tier and SQL Express relational database storage. This baseline allows developers to be more productive locally with fast feedback loops. Iterate code changes, reload test, and repeat. This technology stack can create sophist acted business application with input validation, advanced data schema, workflows, and more bringing in the latest web innovations from NPM and NodeJS.
Custom HTTP header was added for extra security as an application “client secret” which is required for the WebAPI middle tier to respond to HTTP traffic. Missing HTTP header will respond with “null” and not execute any Dot Net code.
In this video I used several components and want to share links for each:
ShareGate offers “insane mode” which uploads to Azure blob storage for fast cloud migration to Office 365 (https://en.share-gate.com/sharepoint-migration/insane-mode). It’s an excellent program for copying SharePoint sites. However, I wanted to research ways to run that even faster by leveraging parallel processing and came up with “Insane MOVE.”
Multiple SharePoint servers with ShareGate installed
CSV input with source & destination URLS
Powershell “Insane MOVE.ps1” runs on any 1 server in the farm
Detects servers with ShareGate installed
Create Task Scheduler jobs on each server
Create “worker0.ps1” file on each server to run one copy job
Secure string for passwords (varied for each server)
Automatic queue to start new jobs as current ones complete
Status report to CSV with ShareGate session ID#, errors, warnings, and error detail XML (if applicable)
LOG for both “Insane MOVE” centrally and each remote worker
The diagram below explains the concept. With multiple servers, ShareGate installed on each, and adequate hardware, we can execute “Copy-Site” PowerShell in parallel. With 4 or more concurrent “Copy-Site” workers we’re now able to process multiple copy operations simultaneously for a faster overall migration timeline. PowerShell will automatically queue up the next source/destination URLs from the input CSV and monitor worker status to kick off a new copy as soon as a prior completes.
Cruise control for ShareGate! Less effort to easily manage bulk copy operations. We now have “Insane MOVE” for “Insane Mode.”
Please give the script a try and leave a comment here or GitHub. Cheers!
NOTE – PDF format updated to include both SharePoint 2013 and 2016 notes.
Ever wondered what fixes are inside of a given CU? Please see attached PDF with full detail. I wanted a new format for easy reading. Show management and make the business case for why downtime should be taken to apply CUs. Also posted at http://sharepointupdates.com/
If you found this helpful, please leave a comment.
While enabling the CSSA (Cloud Search Service Application) I came across this error during first full crawl after successfully completing the on-boarding steps outlined at https://blogs.msdn.microsoft.com/spses/2015/09/15/cloud-hybrid-search-service-application/ with PowerShell scripts. The Azure plugin was unable to crawl on-premise content. Root cause was proxy server configuration, which needs to be consistent across three places. Hope this helps!
An unexpected error occurred in the Azure plugin. This item will be retried in the next incremental crawl. ( AzureException AzurePlugin was not able to get Tenant Info from configuration server; SearchID = B056F137-1C77-4792-B402-256B615DBE82 )
By running PowerShell commands “Set-SPLogLevel” and “New-SPLogFile” I was able to get verbose URL for the CSSA crawl process. Here are the entries showing inability to communicate over the proxy server to the Internet.
12/08/2016 15:36:31.55 mssearch.exe (0x195C) 0x0B18 SharePoint Server Search Crawler:Azure Plugin amn0f High AzureServiceProxy::GetCerts caught AggregateException: The ServicePointManager does not support proxies with the myproxy scheme.
12/08/2016 15:36:31.55 mssearch.exe (0x195C) 0x0B18 SharePoint Server Search Crawler:Azure Plugin amn0g High AzureServiceProxy::GetCerts: Failed to get encryption certificates from cert server https://tenant.sharepoint.com for realm 67d7b889-884d-4c2a-a8d8-3ff81f37b497, documents will be send unencrypted (if unecrypted submit is allowed)
12/08/2016 15:36:31.55 mssearch.exe (0x195C) 0x0B18 SharePoint Server Search Crawler:Azure Plugin amn0h High AzureServiceProxy::GetAzureTenantInfo caught AggregateException: The ServicePointManager does not support proxies with the myproxy scheme., unable to get EndpointAddress, submit is blocked
12/08/2016 15:36:31.55 mssearch.exe (0x195C) 0x0B18 SharePoint Server Search Crawler:Azure Plugin amn0i High AzureServiceProxy caught Exception: *** Microsoft.Office.Server.Search.AzureSearchService.AzureException: AzurePlugin was not able to get Tenant Info from configuration server at Microsoft.Office.Server.Search.AzureSearchService.AzureServiceProxy.GetAzureTenantInfo(String portalURL, String realm, String& returnPropertyValue, String propertyName) at Microsoft.Office.Server.Search.AzureSearchService.AzureServiceProxy.SubmitDocuments(String azureServiceLocation, String authRealm, String SPOServiceTenantID, String SearchContentService_ContentFarmId, String portalURL, String testId, String encryptionCert, Boolean allowUnencryptedSubmit, sSubmitDocument documents, sDocumentResult& results, sAzureRequestInfo& RequestInfo) ***
Proxy server settings need to be confirmed in three places. The crawler was attempting to use “myproxy:8080” DNS names when it actually needs URL format “http://myproxy:8080”
1) Internet Explorer
Tools > Options > Connections > LAN Settings
Provide either PAC URL (proxy auto config) or proxy server DNS name.
2) Command Line
NETSH WINHTTP SHOW PROXY
NETSH WINHTTP SET PROXY PROXY-SERVER=”myproxy:8080” BYPASS-LIST=”*.company.com;<local>”
3) Dot Net Global [machine.config]