Importing Search Configurations with SharePoint Apps

Posted Wednesday, April 3, 2013 11:21 AM by CoreyRoth

The Office Developer Tools team snuck a new feature into the RTM version of the tools for Visual Studio 2012.  This new feature allows you to deploy apps and actually alter the search schema on the host web.  That’s right.  You can deploy an app and it will directly change the search configuration on the host.  They just released documentation on it a while back, but as usual, I wanted to share my experiences.  That and I know you all like screenshots.

What does this feature actually do?  Well let’s back up a bit.  If you remember back from my post, Search is Everywhere, I mentioned the we now had the ability to export and import search settings.  This works at the SSA, site collection, and site level and allows you to move everything from result sources to managed properties from one environment to another.  This is big as it lets you finally promote search settings between environments and maintain a true SDLC when it comes to search.  Why do we care about search configuration with apps?  Well this allows the developer to package up search settings in Visual Studio 2012 and then move them to production without having to do manual steps or use PowerShell.  This also means you could include search settings in an app that you would put in the Office Store.  It certainly opens up possibilities.

To test this out, go to your source site collection and customize your search settings.  In my example, I created a custom result source and some managed properties on our source site.  In my example, I actually did this on an on-premises installation of SharePoint 2013. 

SearchConfigurationResultSourceSite1

This particular result source does nothing exciting.  It simply limits the search to documents, but it serves as a good example.  I’ve also created a managed property mapped to the Author crawled property.  You may already know about this part, but I am showing it for a reason.

SearchConfigurationManagedPropertySite1

Now, I am going to export my search settings of my site collection, by going to Site Settings –> Search –> Configuration Export.

SiteCollectionSearchSettingsExport

At this point, I could manually import the search settings using Configuration Import on another site collection.  However, we want to do this from an app.  Let’s get started in Visual Studio 2012.  Start by creating a new SharePoint-hosted app.  Once it is created, add an item to the project and choose Search Configuration.

VS2012SearchConfigurationSPI

The next step will ask for the path to your configuration XML file that you exported.

VS2012SearchConfigurationImportSettings

At this point the process is done.  It will show you an XML editor with the contents of your search configuration.  According to the MSDN documentation, you then need to edit it and set the DeployToParent element to true

SearchConfigurationDeployToParentTrue

We then need to grant permissions to access the Site Collection.  To do this, open AppManifest.xml and then click on Permissions.  On this tab, add a scope of Site Collection and set the value to Full Control

VS2012SearchConfigurationAppManifestPermissions

At this point, we are are ready to deploy.  In my example, I am taking my search configuration and deploying it to an Office 365 SharePoint Online tenant.  When the app deployment completes, you’ll be prompted if you want to trust the app.  Trust it and then you should see your app start page.

VS2012SearchConfigurationDeploymentTrust

At this point, you are just going to see you default app start page.  There is nothing visible in the application.  Go to the Developer Site (or the site collection you deployed to) and go to the Site Settings.  Then look at the Result Sources.  If everything worked correctly, you should now see your new result source there.

SearchConfigurationResultSourceDeployed

It was successfully deployed.  Now what about the managed property?  Unfortunately, it is no where to be found.  If you go back to Visual Studio and look at your XML, you’ll notice that your managed property definition is no where to be found there either.  If you check the source file before you imported it though, you’ll see the definition.  After I noticed this particular behavior, I reached out on Twitter and @chakkaradeep reached out to me and told me that managed properties aren’t supported in this deployment model.  That made me kind of sad because that’s what I want to deploy the most.  I’m sure there is a technical reason though that he’ll explain to me sometime though.  You can still deploy managed properties via Configuration Import though which is still a great added feature of SharePoint 2013.

You might be curious if the result source is removed when you uninstall the app.  It turns out that the changes are indeed removed when you uninstall.

SearchConfigurationResultSourceRemoved

Aside from the managed properties not being available, this is still a pretty cool feature and it has me thinking about some new things I can do that I didn’t think were possible before.  I’m pretty excited to work with it more.

Comments

# Link: Importing Search Configurations with SharePoint Apps | @SPSamer

Pingback from  Link: Importing Search Configurations with SharePoint Apps | @SPSamer

# Importing Search Configurations with SharePoint...

Friday, April 19, 2013 12:29 PM by Importing Search Configurations with SharePoint...

Pingback from  Importing Search Configurations with SharePoint...

# re: Importing Search Configurations with SharePoint Apps

Tuesday, April 30, 2013 4:42 PM by Scot Hillier

This did not work for me using a host-named site collection (HNSC). When I switched to a "standard" site collection, the deployment worked fine.

# re: Importing Search Configurations with SharePoint Apps

Wednesday, May 1, 2013 9:25 AM by CoreyRoth

@Scot That's interesting.  Let me try it myself.

# re: Importing Search Configurations with SharePoint Apps

Thursday, June 8, 2017 3:11 AM by Daneil

If I deploy the change through the apps, will it deploy to all the site? can I specific which site to deploy for testing?

Leave a Comment

(required) 
(required) 
(optional)
(required)