Monthly Archives: December 2016

VIDEO – code JS todo CRUD on Breeze & SQL Express (part 1 of 2)

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:

 

 

In a future video, I’ll show how this application can then be deployed to Office 365 and SQL Azure to leverage Microsoft’s cloud hosting.

Enjoy!  shades_smile

 

 

Diagram

 

Video

Live code JS todo CRUD on Breeze & SQL Express from Jeff Jones on Vimeo.

 

References

Insane MOVE – ShareGate Turbo

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.

 

SNAGHTMLc9de96

 

Technical Features

  • 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!  shades_smile

 

 

Diagram

 

image

 

Source Code

 

Screenshots

 

image

 

image

 

image

 

image

 

image

What’s in that patch? December 2016

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.    shades_smile_thumb_thumb_thumb_thumb[2]

 

Download

What’s in that patch – Dec 2016.PDF

FIXED – AzurePlugin was not able to get Tenant Info from configuration server (CSSA)

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!

 

Central Admin

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 )

 

Verbose ULS

Get-SPLogLevel |? {$_.Area -like "SharePoint Server Search"} | Set-SPLogLevel -TraceSeverity VerboseEx
New-SPLogFile

ULS Log

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) ***   

 

Resolution

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.

2016-12-12_8-46-00

 

2)  Command Line

NETSH WINHTTP SHOW PROXY

NETSH WINHTTP SET PROXY PROXY-SERVER=”myproxy:8080” BYPASS-LIST=”*.company.com;<local>”

image

 

3)  Dot Net Global [machine.config]

Run notepad

Open “C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config”

Add following XML code

<system.net>
<defaultProxy>
<proxy usesystemdefault=”false” proxyaddress=”http://myproxy:8080” bypassonlocal=”true” />
</defaultProxy>
</system.net>

 

image

 

Notes

  • Completed the “Hybrid Onedrive” click once application to create “ACS” and “SPO” service application proxies before Hybrid Search CSSA onboarding.   https://configure.office.com/

References

2728.image_0ACB058C

Return to Top ▲Return to Top ▲