Following my Search Troubleshooting session that was rated as the #1, I talked with Nenad Trajkovski, Microsoft Project Server MVP who was rated #2. We decided to
do a session together, and this is how the idea of Ms Search and Mr Project was born. The idea was to show how we can
get basic Project Server concepts (tasks, risks, etc.) and make available them to search in SharePoint.
This kind of integration is very important, not only with Project Server, but with any kind of backend systems. Organizations have a lot of different systems, each
storing different information, and your enterprise needs all of them. You have a lot of content (maybe you don’t even know about some of it!) at disparate
locations, and it can be structured and unstructured data, as well. For example, you have documents, emails, CRM entries, project tasks and risks, database entries, etc.
With search-based integration, you can create dashboards like Customer Management or Project Dashboard, but you can also view your open task aggregated
from SharePoint and Project Server.
In Project Server, you can create projects that include resources, tasks, risks, etc. Everything is stored in databases, and Project Server also has its own portal
built on (what a surprise!), SharePoint technologies. The portal can be on-premises or in Office365.
Figure 1: Microsoft Project portal
The Project Server portal has its own Search solution that is a kind of basic Search. This can be customized on the UI, but you don’t have real
enterprise search features. For example, you cannot crawl any other content sources, and therefore you cannot integrate your Project Server data into your
enterprise data. Figure 2 shows the Search UI.
Figure 2: Search UI
If your Project Server is on premises and in the same domain as your SharePoint farm (or if you have two-way trust between the two domains), one of the
easiest ways might be to crawl the Project portal content as a remote SharePoint site.
For this, the only thing you have to do is create a content source with your Project Server portal’s URL as the Start Address, as you see in Figure 3:
Figure 3: Content Source
We also have to configure the content access account by creating a Crawl Rule for this site, as Figure 4 shows:
Figure 4: Adding a Crawl rule
With this option, you’ll have the Project Server items integrated into your SharePoint Search result set, with the full functionality (refiners, hover panel,
etc.), as you can see inFigure 6.
Figure 6: Integrated results
Federating Project Server Search
Federation as a feature is not new. It has been available since Microsoft Office SharePoint Server (MOSS) 2007.
SP2: You can use any OpenSearch 1.0/1.1 remote index to get results from. For example, you can use Project Server’s own index and can provide the items
If you search for [Agnes], the result can contain my tasks directly from the Project Server’s index, as you see in Figure 7.
Figure 7: Search results including Project Server index
In SharePoint 2013, you can get this functionality by creating a Result Source. If your Project Server is on premises, the configuration of Result Sources
is kind of obvious.
If you have Project Server online (in Office 365), configuration of the Result Source requires more attention as you have to configure the two-way-trust
between your on-premises SharePoint farm and your Project Server Online with SSO directory synchronization, etc.
But be aware: Although federation is a very good option in hybrid environments, it also has some limitations. For example, federated results cannot
be aggregated with other results. On the screenshot below, the main result set and “MS Project Tasks for ‘Agnes’” cannot be merged together. Also, if
you have more federated locations defined, each one will be displayed separately.
Business Connectivity Services
The next and last option to get connected to Project Server data is by using Business Connectivity Services (BCS). BCS enables us to use any of the following methods to connect to third-party systems:
- Direct database access
- Web Service
- oData Service
Although, from a Search perspective, only reading the data is important, BCS can provide complete interaction with the proper connection definitions and
configuration. We can even write back to the data source (for example, modifying an entry). Of course, creating a read-only connection is possible, and for
Search it’s enough.
Obviously, this method works on-premises only, as we have to know the connection information to the databases.
With this method, we can get connected directly to the Project Server report databases. Here are the steps for configuration:
- Create a Business Data Connectivity Service Application in SharePoint 2013.
- Create an External Content Type, pointing to the Project Server reporting databases with SharePoint Designer. As a side effect, you’ll be able to create External Lists in SharePoint, which enables you to integrate your Project Server tasks, risks, etc., into the
SharePoint User Experience, as you see in Figure 8.
Figure 8: Integrating Project Server tasks, risks, etc.
3. Next, you have to create a content source for the External Content Type, defined above.
Figure 9: Create a content source for the Externals Content Type
Once the content source is done, you have to create a Crawl Rule to define the Crawler Account--if the Default Content Access Account doesn’t have
full-read access on the Project Server database.
Finally, do a Full Crawl.
Check the results on the Search result set, which is shown if Figure 10. They might be unattractive for now, but they should be there!
Figure 10: Check the results
If you can see the Project Server tasks in the result set, then you are ready with the initial configuration. Now, let’s make it user friendly, nice and
The user experience is very important in Search. As you can see above, despite having the data indexed, it probably won't be helpful for the end users
without some configuration and massaging.
First of all, let's look at the properties of your Project items. As you can see in Figure 10 above, the Title is very unappealing by default. In addition, you might want to improve some other properties, such as
Assigned To or Due Date. To configure these, you have to modify the Search Schema in SharePoint 2013. For example, for title, you have to add a new
mapping to TaskName, as this is the name of this field in the Project database.
After modifying the Search Schema, you need one more Full Crawl to include the modified values in the index. Once the Full Crawl is done, the UI will be a
bit more user friendly showing the Task Name values in the result set, as Figure 11 shows.
Figure 11: User-friendly UI
You might be also interested in promoting Project Server tasks if someone is searching for tasks in SharePoint. This can be very useful if you use
Project Server heavily, and you do heavy task management there. With a Query Rule, the result can be something like what you see in Figure 12.
Figure 12: Project Server tasks
Of course, with the same Search-Driven logic, you can even create a My Tasks dashboard where you aggregate the SharePoint tasks and the Project Server
tasks into the same UI. This provides a good overview for the users about their current tasks, what’s in late, what’s upcoming, etc.
The next thing, once you have the proper metadata ready, is the Hover Panel that is displayed when the user hovers the mouse over a search result, as shown in Figure 13. On this
panel, you can display more details. For example, you can add Duration, Percentage Completed, Assigned To, Due Date, Description, etc. by using the following steps.
1. Create a Result Type for the Project Tasks, a new one for Risks, etc.
2. Create a custom Display Template for these Result types and add the appropriate metadata, which was created and prepared the previous steps.
Figure 13: Adding further details
Finally, let me show you one more integration option. With the features described above, you can also integrate People Search results with Project Server
items. (Of course, additional types of data joins are also available, depending on your business environment. For example, in Customer Search with the related
project status information, etc.) In Figure 14 below, you can see my user in People Search with her open Project Server tasks integrated to the Hover
Panel. For this, I modified the People Result Type’s Hover Panel Display Template.
Figure 14: Integrating People Search
Putting it all together
As you can see, there are several options for integrating Project Server data into SharePoint Server 2013 Search. This article, provides an overview of the
- Crawling the Project Server portal
- Federating Project Server portal search
- Using Business Connectivity Services to get the data directly from the Project Server database
These methods can be useful for accessing other systems and databases, as well.
If you hit the limitations with these or need more customization, there’s one more, advanced option. You can develop a Custom Search Connector, on the top
of the SharePoint 2013 Search APIs .