Tag Archives: SharePoint

FIXED – Unable to search item by ID (Your search returned no results)

Recently I resolved an on-premise search issue where typing an ID number into the list view “Find an item” bar gave zero results.   The list definitely had matching data and search full crawl was completed.

The fix was to update “ListitemID” to be searchable on the Search Service Application (SSA), click “Re-Index” button under List Settings, and wait for the next incremental crawl.  Cheers!  shades_smile

Symptom

  • Type keyword in “Find an item”
  • Error display “Your search returned no results”

SNAGHTML7ce66d

Resolution

  • Open Central Admin
  • Open Search Service Application
  • Open “Search Schema” and type “ListItemID”
  • Check the box [X] for “Searchable”
  • Navigate to team site with user content
  • Open “List Settings > Advanced settings”
  • Click button “Reindex List”
  • Wait for incremental search
  • Now works OK

SNAGHTML7da344

image

Reference

How to Register for NEW SharePoint Admin Center

Open the link http://aka.ms/joinadminpreview to submit an opt-in request to Microsoft with Tenant URL and Contact email.

Learn more about the NEW SharePoint Admin Center at Introducing the new SharePoint Admin Center

Thank you to @wonderlaura for Power Hour which included this URL in audio. https://www.youtube.com/watch?v=UQBGaW-101A

image

image

Application for the SharePoint Admin Center early preview program

Important (10/18/2017): The current early preview program for the new SharePoint Admin Center that was presented at Ignite 2017 is now closed. You can still use this form to apply for future early preview opportunities. We will contact you via email and invite you to our private Yammer group when we start enrolling people again in the future.
Required

1. Tenant URL (Example: contoso.sharepoint.com)
This is the tenant you will want to receive the early SharePoint Admin Center preview on. Please provide one form entry per tenant.

Enter your answer

2. Contact email (Example: Bob.Smith@contoso.com)
This contact email will be invited to our private Yammer group once you’ve been accepted in the program. For multiple emails, please separate with “;”

FIXED – Search Host Controller won’t start 1067 / 6482 HTTP endpoint

There are many common causes for Search Host Controller stuck on starting (won’t start).   I have a new cause to add to the community body of knowledge.  TCP port 808 being used by another process can cause SharePoint 2016 Search Host Controller Windows Service to fail to start.  Strange cause, I know.  Maybe this post helps another SP admin avoid hours of endless troubleshooting.

Cheers!  shades_smile

Symptom

  • Search Application Topology > Unable to retrieve topology component health states. This may be because the admin component is not up and running.
  • Windows Services > Error 1067: The process terminated unexpectedly.
  • EventLog > You have tried to create a channel to a service that does not support .Net Framing. It is possible that you are encountering an HTTP endpoint.
  • ULS > Unexpected
  • WcfService: Got CommunicationException out when trying to open the HostController servicehost. Shutting down process.  – threadId: 14 – exception: System.ServiceModel.AddressAlreadyInUseException:
    The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the service failed to listen.   

Cause

  • IIS Website is actively listening on TCP port 808
  • Search Host Controller requires this port and cannot start.

Resolution

  • Modify IIS Website to listen on a different port number.
  • Search Host Controller service will now start.

Screenshots

image

image

image

image

image

image

image

image

Error

Application Server Administration job failed for service instance Microsoft.Office.Server.Search.Administration.SearchServiceInstance (435e7b39-2949-4f35-ab03-2ad382f84d4f).

Reason: You have tried to create a channel to a service that does not support .Net Framing. It is possible that you are encountering an HTTP endpoint.

Technical Support Details:
System.ServiceModel.ProtocolException: You have tried to create a channel to a service that does not support .Net Framing. It is possible that you are encountering an HTTP endpoint. —> System.IO.InvalidDataException: Expected record type ‘PreambleAck’, found ’72’.
    — End of inner exception stack trace —

Server stack trace:
    at System.ServiceModel.Channels.FramingDecoder.ValidatePreambleAck(FramingRecordType foundType)
    at System.ServiceModel.Channels.ClientDuplexDecoder.Decode(Byte[] bytes, Int32 offset, Int32 size)
    at System.ServiceModel.Channels.ConnectionUpgradeHelper.ValidateUpgradeResponse(Byte[] buffer, Int32 count, ClientFramingDecoder decoder)
    at System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
    at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
    at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
    at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.Synchronize()
    at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)

WcfService: Got CommunicationException out when trying to open the HostController servicehost. Shutting down process.  – threadId: 14 – exception: System.ServiceModel.AddressAlreadyInUseException:
The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the service failed to listen.   

at System.ServiceModel.Channels.SharedConnectionListener.SharedListenerProxy.Register()   
  at System.ServiceModel.Channels.SharedConnectionListener.SharedListenerProxy.Open(Boolean isReconnecting)   
  at System.ServiceModel.Channels.SharedConnectionListener.StartListen(Boolean isReconnecting)   
  at System.ServiceModel.Channels.SharedTcpTransportManager.OnOpenInternal(Int32 queueId, Guid token)   
  at System.ServiceModel.Channels.SharedTcpTransportManager.OnOpen()   
  at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)   
  at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)   
  at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout)   
  at System.ServiceModel.Channels.ConnectionOrientedTransportChannelListener.OnOpen(TimeSpan timeout)   
  at System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(TimeSpan timeout)   
  at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)   
  at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)   
  at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)   
  at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)   
  at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)   
  at Microsoft.Ceres.HostController.WcfServer.WcfService.StartServiceEndpoint()

References

Office 365 missing Datasheet – Use Access ACCDB

For bulk editing of SharePoint list data, we used to have Datasheet (ActiveX control) in the old MOSS 2007 / SP2010 days.   SP2013 gave us Quick Edit (JavaScript based) with compatibility across multiple browsers and works well for simple edits.

However, sometimes we want a more robust bulk edit.  Sort, filter, keyboard navigation, copy/paste, and more full features.   MS Access can help with the “External Data” feature.

Now we can make changes to SPList with MS Access for a faster advanced user experience than Quick Edit in the browser.

Cheers!  shades_smile

Steps

  1. Open MS Access
  2. Create new database
  3. Click “External Data”
  4. More: SharePoint List
  5. Type in your site URL:  https://tenant.sharepoint.com/sites/team
  6. Link to the Data Source
  7. Next
  8. Select the list
  9. OK

Screenshots

clip_image001

image

image

image

References

Office 365 – Hybrid Team Site Redirect AAM

Migrating team sites to Office 365?  Worried about broken links?  Check this out.

Recently I found a helpful STSADM trick that provides HTTP redirection for hybrid SharePoint farms moving team sites into the Office 365 cloud.   As we migrate sites and remove from the source farm on-premise users will see 404 Page Not Found when open old URLs.

However, we can use STSADM to provide a “<RedirectUrl>” Alternate Access Mapping (AAM) property on the source SharePoint Web Application (http://portal/*) which redirects user traffic to a destination Office 365 Tenant (ex:  https://tenant.sharepoint.com/*)

If you are gradually moving team sites into the cloud with third party tools (ShareGate, Metalogix, DocAve, etc.) this trick is invaluable to preserve a smooth user experience where old links will seamlessly redirect to Office 365 team sites in the cloud.  Cheers!  shades_smile

Diagram

image

Commands

Enable AAM Redirect

stsadm -o addzoneurl -url http://portal -urlzone Default -zonemappedurl http
://portal -redirectionurl https://tenant.sharepoint.com

Verify AAM Redirect

stsadm -o enumalternatedomains -url http://portal

Screenshots

image

image

Video

References

VIDEO – Angular CLI – SPCRUD Todo List in SharePoint Content Editor (part 2 of 2)

Continued part 2 of earlier video at https://www.spjeff.com/2017/05/31/angular-cli-todo-list-in-sharepoint-content-editor/

Here we add “spcrud.ts” library with CRUD methods to save JSON data over REST api into SharePoint Lists.
SPCRUD is a Typescript library with methods to easily interact with SharePoint APIs by providing management of Digest Token, HTTP headers, and URL formatting. As developers we interact with simple TypeScript methods that have input validation which in turn execute the correct underlying HTTP call.

Cheers!  shades_smile

Source Code

Video

Angular 2 CLI – SPCRUD Todo List in SharePoint Content Editor (Part 2 of 2) from Jeff Jones on Vimeo.

VIDEO – Angular CLI – Todo List in SharePoint Content Editor

Angular 2 (“Angular”) brings many improvements over Angular 1 (“AngularJS”).  The CLI tools (Command Line Interface) help streamline operations so we can develop professional applications with ease including unit testing, bundling, minification, live preview, webpack, distribution, and more.

The below demo shows how to create a new application, run tests, add features, and deploy to SharePoint Pages hosted in a Content Editor Web Part.  The CLI tools boost developer productivity while holding up quality control.

Check out the live coding video below, hosted on both Vimeo and YouTube.

Leave a comment if you found it helpful.  Cheers!  shades_smile

Video

Screenshots

image

image

image

image

image

Source Code

Steps

  1. MD TODO
  2. NG NEW TODO
  3. CD TODO
  4. NG SERVE
  5. NG HELP BUILD
  6. NG BUILD -PROD -AOT -D http://portal/sites/todo/SiteAssets/todo -W
  7. Upload all files from local /dist/ to SharePoint /SiteAssets/todo/
  8. Right click “index.html” in SharePoint to copy absolute URL
  9. Edit Page, add Content Editor Web Part (CEWP)
  10. Modify CEWP and provide URL for display
  11. Enjoy!

References

Errors Fixed

https://stackoverflow.com/questions/40386883/sharepoint-angular-2-app-using-cli-webpack

For Angular2 to load correctly on a SharePoint page we must comment out the line “import ‘core-js/es6/string’;” from “polyfills.ts” to avoid conflict with Microsoft Script Resource AXD code already included.

  • Uncaught g {__zone_symbol__error: Error: Sys.ParameterCountException: Parameter count mismatch.
  • polyfills.3737621….bundle.js:1 Uncaught
  • ScriptResource.axd?d=BguhdZbE6Lg8ptBp5skwRENGckVM6n4sP4jY4eLX78z7DZzuMbkeH4dwMKG-9qqtKy6_9p0QSjbOTX…:494 Uncaught

MySite – Export user Quick Links to CSV

When migrating from MySite on-premise to OneDrive in the cloud, Quick Links are not included by third party utilities (i.e. ShareGate).  However, with PowerShell we can export the original raw CSV data and provide a list of links to end users.  They can bookmark or add to Office 365.

Cheers!  shades_smile

 

Code

# User login parameter
$userLogin = "johndoe"
$mySiteWebApp = Get-SPWebApplication |? {$_.Name -like "*MySite*"}
# Connect to MySite
$site = Get-SPSite $mySiteWebApp.Url
$context = Get-SPServiceContext $site
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context);
# Lookup user profile in UPS
$userProfile = $profileManager.GetUserProfile($env:USERDNSDOMAIN + $userLogin);
# Display on console
$userProfile
$userProfile.QuickLinks.GetItems() | Select Title, Url
# Export to CSV file
$userProfile.QuickLinks.GetItems() | Select Title, Url | Export-Csv "C:\temp\$($userLogin)-FollowedLinks.csv" –NoTypeInformation -Force

 

Screenshot

image

 

image

Clone Content Database – SQL Copy + Generate SPSite GUID

Tried of waiting for Backup-SPSite / Restore-SPSite?  Me too.  Why not clone the SQL content database with SQL backup and restore?  

 

Well, SharePoint requires every Site Collection on a given to have a unique GUID.  When we clone a SQL content database and attempt Mount-SPContentDatabase an error comes up that the GUID already exists on the local farm.  No bueno.

Why not generate and replace the GUID?   In theory, we can UDPATE the SQL database internally with fresh new GUID numbers and SharePoint would recognize as new site collections.  No conflict.  That is exactly what the PowerShell below does.  By walking the schema, finding “SiteID” and “tp_SiteID” columns, and replacing the old GUID with a new GUID.

The larger the site collection, the better this works on time savings.  SQL internally can backup and restore a database much faster than waiting for Backup-SPSite/Restore-SPSite to export/import binary data across the wire to the SharePoint front end file system.

In the example below you can see a brand new team site created with GUID “82dad5a8-aa6e-4480-a10e-16cd2597c18b” in a dedicated SQL content database, taken offline, updated with PowerShell to replace old GUID with new GUID “0f59c302-92ea-4fac-b32b-799f3dd41264” and then successfully consumed again.

 

  • NOTE – You still need a unique URL, so be sure to run Mount-SPContentDatabase against a secondary web application.
  • NOTE – This is completely unsupported.  Use at your own risk.   Worked well on Dev and Test environments for me.

 

PowerShell Source Code

 

Context Diagram

image

Screenshots

image

image

image

image

image

image

image

image

image

 

 

References

SharePoint as a Service (SPaaS)

SharePoint is often treated as a final SAAS product to perform Microsoft native functions only.  Management can be reluctant to engage customization and development for the perceived cost. 

However, what is the cost of lacking a needed business tool?  Lost productivity and opportunity?  

What is the cost to create native SP features?   Make a blank IIS website?  Then create your own search, audit, permission interface, file store, REST endpoint, etc.?

 

Today is the best time ever to be a developer.  Many services and many tools.   Agile design can be applied to leverage 90% native platform with 10% custom code to spin up helpful business applications with low cost.   Micro services, REST api, and JavaScript frameworks provide the building blocks.   Developers are challenged to learn these new tools.  Ones that do can help deliver business value faster than ever.

 

Remember, SharePoint is a service– not the final product.  shades_smile

 

Features

  • Authentication – User context.  Password management, new account creation, integrated single sign-on.
  • Permissions – Groups, roles, custom permission levels,
  • Tables & Files – Storage of flat database (rows, columns, validated input, query) and binary files (folder, files)
  • Notification – Alert on data changes.  Daily and weekly summary.  Custom email body with Workflow.
  • Search – Index content, word parsing, custom results display, full REST api.
  • Audit – Regulatory compliance.  Reports, export, filter, and granular detail.
  • … and many more

 

Diagram

image

 

References

Return to Top ▲Return to Top ▲