Resolving your SharePoint issues on-line!
Boris Kapitanovic - Kepy
- Boris@Sharepoint-Architect.com
SharePoint Architect, Consultant and Project & Service Manager
Sunday, September 09, 2007
Microsoft Enterprise Content Management (ECM) Team Blog
e.g.
Branding
http://blogs.msdn.com/ecm/archive/tags/branding/default.aspx
Taxonomy
http://blogs.msdn.com/ecm/archive/tags/Taxonomy/default.aspx
Workflow
http://blogs.msdn.com/ecm/archive/tags/Workflow/default.aspx
MOSS & WSS 2007 Branding basics
Additional Resources
For more information, see the following resources:
Site Directory in MOSS 2007 via a custom Search Scope
In a Microsoft Office SharePoint Server (MOSS) 2007, you will likely need to provide your users a list of sites you host. There are a few ways to do this.
First, you can leverage the out-of-the-box Site Directory template, coupled with a few settings in Central Admin to force users to select one or two categories, that can be a good solution, specially if you don't have too many sites and you can afford to have someone overseeing the directory. For a very large number of sites, that might not work. Also, there is chance someone will miscategorize sites and you'll likely need someone to approve all site listings.
Another way to do it is to leverage the out-of-the-box site membership feature you get with the profile services (or "my sites"). MOSS does a pretty good job of keeping track (via the Profile database and a timer job) of all the sites each user is a member of. There are a few issues there as well and this will not work if you have a multi-farm deployment since there is no synching of profile information between farms (unless you write code for that yourself). There's also the issue of the timer job that updates the profile database being unable to figure out you're a member of the site if you're not explicitly in the members list (as opposed to being in an active directory group that is in the member list).
A third way of finding this kind of information is using Search. This is likely the best option for very large implementations that include multiple farms and many thousands of sites. In a situation like that you will likely need to implement search properly anyway and you can just leverage that. You could even create a custom search results page to format the output in a more adequate way and you will only see a site if you have access to it. To put this in place, however, you need to provide a way to search only for sites. There's no property or search modifier to do that for you on the search box itself, but you can implement this using a special search scope.
Creating a scope that includes just sites is not really hard. All you need to do is go to the Search Settings page in the Shared Services Provider administration page and create a new scope with a corresponding rule. You can do something similar to the out-of-the-box scope for "People", with a rule based on the Content Class of the item. The Content Class for people, for instance, is "urn:content-class:SPSPeople".
The hard part is to find out what string to use in the content class for sites. The information is actually out there, but it's somewhat hidden in an MSDN article at http://msdn2.microsoft.com/en-gb/library/ms975759.aspx. The correct string for sites is “STS_Web” (strangely enough, it’s not “urn:content-class-STS_Web”, just “STS_Web”). With that info at hand and using the "People" scope as an example, you should be able to create a scope that includes only sites, nothing else.
For the record, here are all the different strings you can use with the ContentClass:
- Search Query: urn:content-class:SPSSearchQuery
- News Listing: urn:content-class:SPSListing:News
- People: urn:content-class:SPSPeople
- Category: urn:content-classes:SPSCategory
- Listing: urn:content-classes:SPSListing
- Person Listing: urn:content-classes:SPSPersonListing
- Text Listing: urn:content-classes:SPSTextListing
- Site Listing: urn:content-classes:SPSSiteListing
- Site Registry Listing: urn:content-classes:SPSSiteRegistry
- Site: STS_Web
- List: STS_List
- List Item: STS_ListItem
- Events: STS_List_Events
- Tasks: STS_List_Tasks
- Announcements: STS_List_Announcements
- Discussions: STS_List_DiscussionBoard
- Contacts: STS_List_Contacts
- Links: STS_List_Links
- Document Library: STS_List_DocumentLibrary
- Document Library Items: STS_ListItem_DocumentLibrary
- Picture Library: STS_List_PictureLibrary
- Picture Library Items: STS_ListItem_PictureLibrary
SharePoint – Workflow / SharePoint Designer vs. Visual Studio
SharePoint – Workflow / SharePoint Designer vs. Visual StudioJust a shor comparison table between SharePoint Designer tool and VS
|
Saturday, September 08, 2007
Deploy multiple language versions of the 2007 Office system
The language-neutral design of the 2007 Microsoft Office system helps to simplify the deployment of Office products in multiple languages. Instead of creating a series of installations, you allow Setup to coordinate a single installation of multiple language versions.
All language-specific components for a particular language are contained in a Single Language Pack (SLP). Each language pack includes language-specific folders for all 2007 Office release products available in that language. Folders are identified by a language tag appended to the folder name. For a complete list of language tags, see Language identifiers in the 2007 Office system
if(typeof(IsPrinterFriendly) != "undefined")
{
var l = "/Office/en-us/library/f5fee727-df49-4ef7-b073-dd6c08dfecfa1033.mspx";
var nl;
var c = l.charAt(0);
var o = document.getElementById("EZD");
switch (c){
case "/":
nl=(" [http://" + document.domain + l + "]");
break
case "#":
nl=("");
break
default:
nl=" [" + l + "]"
}
if(o != null) o.innerHTML = nl;
}
.
You copy all the language packs you need to a network installation point that contains at least one complete Office product. By default, Setup installs Office in the language that each user is most likely to need.
To deploy a default language version of Office to every client
1.
Create a network installation point for your primary Office 2007 product by copying all the files and folders from source media to a shared network location.
2.
Copy all the files and folders from the source media for each language pack to the same network location, and when prompted to overwrite duplicate files, click No.
3.
Use the Office Customization Tool to configure the installation to match your organization's requirements.
Because the majority of customizations apply to the core product, you do not typically need to customize each language separately. Setup applies your customizations during the installation regardless of the language being installed.
4.
On the Setup command line, specify the Config.xml file for the primary Office product you are deploying.
For example, the following command line installs Microsoft Office Standard 2007 in any language:
\\server\share\Office12\setup.exe /config \\server\share\Office12\Standard.WW\Config.xml
where Office12 is the root of the network installation point.
5.
Run Setup from the root of the network installation point.
Setup installs only the language-specific elements that are needed for the Office product you are installing. Setup does not install the entire language pack unless you deploy the language pack as a separate product.
Note:
Because Setup recognizes each language pack as a separate product, be sure to specify the Config.xml for the primary Office suite or application you are deploying.
When the network installation point contains multiple language packs, Setup detects that there is more than one available language. By default, Setup installs Office in the language that matches the Windows user locale set on each user's computer. If there is no exact match, Setup uses the closest match.
If there is no close match, Setup prompts the user to select a language. If you are installing Office quietly and Setup does not find an acceptable language match between the user locale and available Office languages, the installation fails. If you do not know whether all user locales in your organization match an available Office languages, specify the language to install in Config.xml.
Note:
Language packs that are acquired through a volume license agreement do not require a unique product key; only one volume license key is required for the entire installation.
You can override default Setup behavior and install more than one language on a single computer or specify exactly which languages to install regardless of user locale. For more information, see Customize a multilanguage deployment of the 2007 Office system
if(typeof(IsPrinterFriendly) != "undefined")
{
var l = "/Office/en-us/library/9b5b2d78-66a7-4b0d-bbf1-788036e230e21033.mspx";
var nl;
var c = l.charAt(0);
var o = document.getElementById("EUF");
switch (c){
case "/":
nl=(" [http://" + document.domain + l + "]");
break
case "#":
nl=("");
break
default:
nl=" [" + l + "]"
}
if(o != null) o.innerHTML = nl;
}
.
How to Create a Database Connection by using the Business Data Catalog Definition Editor
Jo-Anne West, Microsoft Corporation
August 2007
Applies to: Microsoft Office SharePoint Server 2007
Introduction to the Business Data Catalog Definition Editor
Adding an LOB System
Testing the AdventureWorksDW LOB System Connection
Testing the Entity Associations
Exporting the LOB System Instance Metadata
Importing the Application Definition File into the Shared Services Provider
Modifying an Existing Application Definition by using the Business Data Catalog Definition Editor
Next Steps
Conclusion
Additional Resources
Introduction to the Business Data Catalog Definition Editor
The Business Data Catalog in Microsoft Office SharePoint Server 2007 exposes and incorporates line-of-business (LOB) data into other baseline portal functionality, such as lists and Enterprise Search. To incorporate this data into your portal site, and make it available to the Enterprise Search crawler, you must build an application definition file, which is an XML file that identifies where the data is stored (either in a database, or as a Web service) and what format the data is stored in (for example, what the data types and primary keys are).
Before you begin, you must install the following:
Microsoft Office SharePoint Server 2007, Enterprise Edition.
Microsoft SQL Server 2005 with the AdventureWorksDW database installed.
Microsoft Business Data Catalog Definition Editor. This tool is part of the Microsoft Office SharePoint Server 2007 SDK 1.2 download (released August 2007).
Begin by adding a LOB system for the AdventureWorksDW sample database for Microsoft SQL Server 2005.
On the Start menu, click Microsoft Business Data Application Definition Editor.
In the tool, click Add LOB System.
In the Add LOB System window, click Connect to Database.
Select SqlServer for Connection Type.
For Connection String, enter the following text.
Copy Code
Replace
Drag the following tables to the Design Surface:
Product
ProductCategory
ProductSubcategory
Reseller
Figure 3. Add tables.
Click OK.
To test the connection to the LOB system
In the Metadata Objects pane, expand the AdventureWorksDW node, and then expand the Entities node.
Expand the Methods node
Expand the FindAll_DimProducts node, and then expand the Instances node.
Right-click FindAll_DimProduct_Instance, and then click Execute.
Figure 4. Execute FindAll_DimProduct_Instance method.
In the Execute FindAll_DimProduct_Instance window, click Next, and verify that the values from the ProductKey field of the DimProducts table are displayed in the Results window. Click Next to page through the results.
Make note of one of the ProductKey values for the next step. For this walkthrough, we use the ProductKey value 212.
Right-click Find_DimProduct_Instance, and then click Execute.
Figure 6. Execute Find_DimProduct_Instance method.
In the Value field, enter the 212, and then click Execute.
If the DimProduct table contains any fields that will not display correctly, you might receive a message similar to the following:
Figure 7. Execute Find_DimProduct_Instance message.
Click OK to close the message and continue.
Testing the Entity Associations
Now you will test the entity associations for the LOB system.
To test the entity associations
In the DimProducts node, expand the Methods node, and then expand the FK_DimProduct_DimProductSubcategory node.
Expand the Instances node.
Right-click FK_DimProduct_DimProductSubcategory_Instance, and then click Execute to open the Execute FK_DimProduct_DimProductSubcategory_Instance window.
Figure 9. Execute DimProductSubcategory Instance method.
Click the Search button or click anywhere in the Value field to open the Select Entity Instance window.
Figure 10. Execute DimProductSubcategory Instance window.
Select FindAll_DimProductSubcategory_Instance, and then click Next to display the first page of results.
Figure 11. Select FindAll_DimProductSubcategory_Instance.
Select the row for the record from the DimProductSubcategory table you want to retrieve the associations for, and then click OK. If the record is not displayed in the first set of results, click Next to page through the results. For this example, select the record with the ProductSubcategoryKey 31.
Figure 12. Execute DimProductSubcategory_Instance window.
In the Execute FK_DimProduct_DimProductSubcategory_Instance window, click Execute to display all the records from the DimProduct table where the ProductSubcategoryKey field matches 31.
If results are returned, the associations are configured correctly.
Exporting the LOB System Instance Metadata
After you confirm that the connection for the LOB system and with the entities, associations, and methods, are configured correctly within the Business Data Catalog Definition Editor, you are ready to export the LOB system instance metadata to an application definition file.
Select the AdventureWorksDW node in the Metadata Objects window, and then click Export.
Figure 13. Export AdventureWorks LOB System.
Save the file as AdventureWorks2005.xml.
Next, you import the application definition file into the Shared Services Provider (SSP).
To import the application definition file into the SSP
To start the SharePoint 3.0 Central Administration Web page, click Start, and then point to All Programs. Point to Microsoft Office Server, and then click SharePoint 3.0 Central Administration.
In the left navigation pane, click the name of your SSP.
In the Business Data Catalog section, click Import application definition.
In the Import Application Definition page that opens, browse to AdventureWorks2005.xml, select the file, and then click Open.
Click Import.
Click Browse, locate the file, and double-click it.
Leave all other application definition settings with their default values, and then click Import.
Modifying an Existing Application Definition by using the Business Data Catalog Definition Editor
You can also modify the metadata in an existing application definition file by importing it into the Business Data Catalog Definition Editor. If you are modifying the application definition for an existing application in the Business Data Catalog, you must export the metadata file for the application definition from the SSP first.
If you are modifying the application definition for an existing application in the Business Data Catalog, you must first either delete the original application in the Business Data Catalog or update the application version number before you import the application definition file.
To start the SharePoint 3.0 Central Administration Web page, click Start, and then point to All Programs. Point to Microsoft Office Server, and then click SharePoint 3.0 Central Administration.
In the Business Data Catalog section, click View applications.
In the Applications list, click the application name.
Click Export Application Definition to open the Export Application Definition page.
Click Export, and then click Save.
On the Start menu, click Microsoft Business Data Catalog Application Definition Editor.
Click Import.
Browse to the location of the application definition file, select it, and then click Open.
After the LOB system is loaded into the Business Data Catalog Definition Editor, you can make several changes to the LOB system instance, such as:
Connection string
Authentication mode
Add or remove entities
After completing these tasks, you can configure Enterprise Search to crawl this content so that your users can search business data. For information about how to configure Enterprise Search, see Walkthrough: Configuring Search for the AdventureWorks Business Data Application Sample. For details about how you can customize the Search user interface this scenario, see Walkthrough: Add a Tab and Custom Search Page with Enterprise Search Web Parts to the Search Center.
The Business Data Catalog in Microsoft Office SharePoint Server 2007 enables you to integrate LOB data that is hosted outside of the portal site into elements such as lists and Enterprise Search within Office SharePoint Server 2007. The Business Data Catalog requires a definition file with metadata that defines the connection to the external data source and identifies the data type that is being retrieved from the data source.
Additional Resources
Walkthrough: Add a Tab and Custom Search Page with Enterprise Search Web Parts to the Search Center
Welcome to the Microsoft Office SharePoint Server 2007 (Beta) SDK
Business Data Catalog Information Center
SQL Server 2005 Samples and Sample Databases
MOSS 2007 and SPS 2003/SPS 2001 migration tools public release
I just got a note that the following migration tools for Microsoft Office SharePoint Server 2007 (MOSS) and Microsoft SharePoint Portal Server 2003 (SPS) have been released via CodePlex:
SharePoint 2003 Data Extraction Tool: http://www.codeplex.com/SPMigration/Release/ProjectReleases.aspx?ReleaseId=6766
SharePoint Importer: http://www.codeplex.com/SPMigration/Release/ProjectReleases.aspx?ReleaseId=6763
SharePoint 2001 Data Extractor: http://www.codeplex.com/SPMigration/Release/ProjectReleases.aspx?ReleaseId=6764
Check out the project's homepage at http://www.codeplex.com/SPMigration/.
Posted: Wednesday, August 29, 2007 2:13 PM by jro
Filed under: migration, MOSS 2007
Implementing single sign-on (SSO) with MOSS 2007
I needed to build up MOSS 2007 portal that would integrate some of the existing Line Of Business (LOB) applications. We also needed to use SSO, because some of the applications weren't AD-enabled. To use SSO, you can create your own custom web part and connect to the SSO services through there.
Enabling SSO
To enable SSO, you need to start the Microsoft Single Sign-On Service in the Services-tool of Windows. You can also do this on the command-line with "net start ssosrv". Keep in mind the service needs to run under an account that has access to the SQL hosting your SSO database.
For demonstrational purposes you can use administrator, otherwise create a dedicated account.
Next, go to MOSS Central Admin at http://localhost:port/, where port is whatever you specified when installing MOSS. Select Operations-tab, and navigate to Manage settings for single sign-on. If you get this error:
Failed to connect to Microsoft Single Sign-on Service. To configure, please ensure the service is running.
It means your SSO service is not running. Go and doublecheck the settings on that. Then, select Manage server settings, and fill out the fields. Default values are normally ok for those fields that have been prepopulated. Click OK - the database and settings for your SSO service should now be created.
Configuring applications for SSO
Now that you have SSO running, you need to configure which applications are going to take advantage of it. Go to Manage settings for enterprise application definitions (http://localhost:port/_admin/sso/ManageApps.aspx) and click New Item. Enter a display name, application name and contact email address. The important thing here is to enter an application name that is easy to remember and describes the integrated application, such as "Asp3Tools" or "FinanceApp". Fill out rest of the fields as you see fit.
If you're wondering what the five fields under logon account information are for, you can use those to send a maximum of 5 custom fields to your LOB application upon user authentication. Normally you'd use 2, one for username and one for password. MOSS uses these field names and settings to render the authentication form dynamically for you, when logging into the the LOB application for the first time (via SSO).
Creating skeleton web part for SSO
Now that you've successfully configured SSO for MOSS, it's time to create your web part. I'll provide the basic RenderContents() -method for you that walks through the basic step when using SSO:
protected override void RenderContents(HtmlTextWriter output) { string[] rgGetCredentialData = null;
try {
Credentials.GetCredentials(1, "AppName", ref rgGetCredentialData);
ISsoProvider provider = SsoProviderFactory.GetSsoProvider(); SsoCredentials creds = provider.GetCredentials("AppName"); creds.Evidence = new System.Security.SecureString[2];
try { // your implementation of accessing the LOB app } catch (Exception e) { // catch exceptions
}
}
catch (SingleSignonException ssoex) { if (SSOReturnCodes.SSO_E_CREDS_NOT_FOUND == ssoex.LastErrorCode) { string strSSOLogonFormUrl = SingleSignonLocator.GetCredentialEntryUrl("AppName"); output.Write("Click here to save your credentials for the Enterprise Application."); }
}
You can do a HttpWebRequest to your application, parse the HttpWebResponse and render out your application. The important thing is to use the correct application name (AppName) and catch the SSO_E_CREDS_NOT_FOUND exception for first time users. MOSS will then create the initial authentication page for you, hiding possible other authentication pages you have in your LOB system.
Posted: Thursday, May 03, 2007 1:00 PM by jro
Filed under: lob, line of business, integration, sso, moss