Friday, April 25, 2008

Watch this: Design a document review workflow solution

If your looking for videos on SharePoint Designer workflows then you will have to check this out. There are 14 videos that walk you through the steps of building a HUGE no-code application. You can see all the videos here:

Watch the videos

This series of videos presents an end-to-end scenario, starting with the necessary site components and ending with saving the solution as a site template so that you can reuse it. Along the way, see how to design several secondary workflows and learn how to use a wide range of workflow lookups.

Thursday, April 17, 2008

TechEd 2008

TechEd 2008 will be held in Orlando, Fl. This year TechEd is divided into two weeks. The first week is for developers and is held June 2, 2008 - June 6, 2008. That week I will be providing assistance in two areas. The HOL (Hands on Labs) and the Developer Community Lounge. I am also schedule to give two presentations on developing Web Parts for WSS 3.0.

OFC15-ILL - ASP.NET 2.0 Interoperability with Windows SharePoint Services 3.0: Web Parts.

The following week will be for the IT Professional group. I will be in HOLs as well as Study Hall helping people get ready for their SharePoint certifications.

Friday, April 11, 2008

Roadmap to SharePoint Server 2007 training

The following link is a great resource for your SharePoint training.

With rich audio and visual components, training courses are a great way to become faster, smarter, and more effective at working with SharePoint Server 2007. The following link covers training on these areas:

Document library training
Calendar training
Slide library training
Workflow training

More Training

Download MOSS VHD

Get the VHD.


This download enables you evaluate Microsoft Office SharePoint Server 2007. Microsoft Office SharePoint Server 2007 is an integrated suite of server capabilities that can help improve organizational effectiveness by providing comprehensive content management and enterprise search, accelerating shared business processes, and facilitating information-sharing across boundaries for better business insight. Office SharePoint Server 2007 supports all intranet, extranet, and Web applications across an enterprise within one integrated platform, instead of relying on separate fragmented systems. Additionally, this collaboration and content management server provides IT professionals and developers with the platform and tools they need for server administration, application extensibility, and interoperability.

This fully functional pre-configured VHD provides you a trial software will automatically expire after 30 days.
This is a preconfigured virtual machine contained within the Virtual Hard Disk (VHD) format. Virtual Server 2005 R2 is required to run this VHD. Please refer to the system requirements section for more details.

Get the VHD.

Good, Better, Best ...

Get the document here.

How does your version of office match up to SharePoint? Microsoft has put together a white paper that describes how different versions of Office programs work together with the 2003 and 2007 versions of SharePoint technologies. Although an overview of the integration features of Microsoft Office 2000 versus Microsoft Office XP with Microsoft Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007 is provided, the paper’s focus is on the integration features of the Office 2003 Editions versions the 2007 Office Suites with the 2007 SharePoint Products and Technologies.

The increasing levels of functional capabilities have been deemed “fair” for Office 2000, “good” for Office XP, “better” for the Office 2003 Editions, and “best” for the 2007 Office Suites in terms of how they work together with SharePoint.

A detailed comparison of how the Office 2003 Editions versus the 2007 Office Suites, namely, Microsoft Office Professional Plus 2007 and Microsoft Office Enterprise 2007, work with Windows SharePoint Services 3.0 and Office SharePoint Server 2007 will be provided.

The paper concludes that in order to realize the best user experience with Office and SharePoint integration features, the client programs must be upgraded to a 2007 Microsoft Office Suite, namely, Office Professional Plus 2007 or Office Enterprise 2007 and the server technologies must be upgraded to either Windows SharePoint Services 3.0 or Office SharePoint Server 2007.

Get the document here.

Tuesday, April 8, 2008

Enhancing Your BDC with BI

I am currently developing an enterprise solution that is using MOSS 2007 and Commerce Server. I was given the task of creating a SharePoint Search site that would gather the data from Commerce Server and tie it to corresponding data in SharePoint and return the information in Search and use XSLT to display the data from both sources into one entry.

At first thought, I wanted to create a Search Results web part that grabbed the data from a Commerce Server BDC and would look up the remainder information in SharePoint using CAML. I started to design the solution and realized I was attacking the task from the wrong end. The question was, “Why do I want to pull data based off of results?” The answer was simple, “I don’t”. I decided to go back to the drawing board. The solution was to use Business Intelligence to get what I needed.
So what are the steps to accomplish that you ask? It’s not as difficult as it may sound.

My particular task required me to pull data from Commerce Server and tie it to data already in SharePoint. The first thing I did was locate the data in SharePoint I needed. This is where you open Microsoft SQL Server Management Studio and find your SharePoint sites content database. All of the data I was looking for was actually found in one location: the AllUserData table.



The next task was to find the catalog data in Commerce Server. This was located in the product catalog. This is located in the ‘StarterSite_productcatalog’ if you are using the Commerce Server Starter Site.



The next task was to determine exactly which fields where actually nessecary to complete the task. The Commerce Server table had all the pricing and description data and the SharePoint site had all of the page links and pictures. After I determined which columns where needed, I created a new table in the Commerce Server database [SPBDC_CatalogProducts]. This table is going to be my BDC source.
Next, I opened up SQL Server Business Intelligence Development Studio. The UI is the same as Visual Studio. Create a new project using the ‘Integration Services Project’ template.

Now add an ‘Execute SQL Task’ to the Control Flow form. The function of this task is to remove any data that exists in the SPBDC_CatalogProducts table. (We created this a few steps back)

Now add a ‘Data Flow Task’ object and double click it. This will open the Data Flow tab. Here is where the real action takes place. I then created two separate connections. One to SharePoint and one to Commerce Server. Right click in the ‘Connection Managers’ are and select the appropriate data sources. Since both of mine where SQL Server, I selected “New ADO.NET Connection …”.
Drop on two DataReader Source controls, a Merge Join Control, and a SQL Server Destination control. Click on ‘Connection Managers’ and select the correct option in the drop down.

On the Component Properties tab fill in the SQLCommand property for your particular datasource.



The Column Mappings tab should show two tables, one with Available External Columns and the other with the Available Output Columns.
On the final tab (Input and output Properties) we will need to set the sort order. Click DataReader Output and find the ‘IsSorted’ property. Set this to True. Now expand the Output columns folder and find the column name that you will be joining on. Set the SortKeyPosition to 1.



Once this is done, do the same for the other DataReader Source. The table structures do not have to match between the two readers.

Once both sources are complete, drag the green arrows to the Merge Join. Now double click the Merge Join. This will bring up the Editor. Select the correct Join Type. Since I only want to show data if it exists on both sides, I picked ‘Inner Join’.

Select the ‘Join Key’ on both sides. Examine each row and check which ones you want in the new table. Click OK.
Now drag the green arrow from ‘Merge Join’ to SQL Server Destination. You should end up with something like the picture below.



Click back on Control Flow. Drag the green arrow from the script to the Data Flow Task. You are now ready to execute your program. Hit the green Execute arrow [Play button] and watch your objects turn colors. If everything worked according to plan, the objects will complete with a green color. If any errors are encountered, you will see red.





Now open up the final table and review your table. You can now set up a SharePoint BDC to search the newly aggregated data.

To see how to create a BDC for Search click Here

Saturday, April 5, 2008

Current Number of Sites is 0

A colleague of mine ran into an issue the other day that I thought I would share. He was working on provisioning the next iteration of our SharePoint project and created a backup of the content databases using SQL Server. He then proceeded to remove the previous content database and wanted to attach the new backed up version.

He first attempted to use the commandline stsadm to attach the database. When we launched the site he received a 401 error. We looked at the Central Administration site and found that the ‘current number of sites’ for the application was 0. After several removes and attaches we discovered that the application error log had the following issue:

Primary key violation on SQL Server instance 'db' in database 'SharePoint_Config'. Additional error information from SQL Server is included below.
Violation of PRIMARY KEY constraint 'PK_SiteMap'. Cannot insert duplicate key in object 'SiteMap'.


Open up your restored database and configuration database in SQL Server. Then find the sites table in the restored database and located the ID of the site.



Now open up the configuration database and find the SiteMap table. Located the row with the same site ID and then delete it. You should now be able to attach the restored database without issue.

Wednesday, April 2, 2008

Watchout!!! Reinstantiate SPQuery

The SPQuery class represents a query in a list view. There is a caution when using it. You cannot reuse the SPQuery object in SharePoint 2007. If you intend to loop through a collection and use the data to query SharePoint, you will need to re-instantiate the object inside the loop. If you don’t you will find that it keeps a reference to the first Query property you set it to. This isn’t obvious!! If you step through the code, it appears to pick up the new property. However, the GetItems count never changes.

foreach (DataRow myRow in workingTable.Rows)
{
string findID = myRow["CategoryID"].ToString();
SPQuery query = new SPQuery();
string myCaml = string.Format("{0}",findID);
query.Query = myCaml;
SPList pagesList = web.GetList("/Pages");
SPListItemCollection items = pagesList.GetItems(query);
SPListItem categoryItem = null;
string navigationURL = "";
if (items.Count > 0)
{
categoryItem = items[0];
navigationURL = "~/" + categoryItem.Url.ToString();
}
}

Access Denied by BDC

So your all excited because you just set up your BDC and it's time to crawl the data. You start your full crawl and check your error logs and see 'BDC The parameter is incorrect. (Access denied by BDC.) '

First you will want to check the log files. The log files for SharePoint are located in C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS.

Sort the files by Date Modified and open the latest one. There's a good chance that you see something simular to ...

Access Denied for User 'Domain\userName'. Securable MethodInstancewith Name 'dbo.[SQLTABLENAME]SpecificFinder' has ACL that contains: User 'Domain\userName' with Rights 'Execute, Edit, SetPermissions, UseInBusinessDataInLists, SelectableInClients' Stack Trace: at Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DataClass.ExecuteInternal(LobSystemInstance lobSystemInstance, LobSystem lobSystem, MethodInstance methodInstanceToExecute, Method methodToExecute, ParameterCollection inputParameters, Object[]& overrideArgs) at Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.ExecuteInternal(LobSystemInstance lobSystemInstance, LobSystem lobSystem, MethodInstance methodInstanceToExecute, Method methodToExecute, ParameterCollection inputParameters, Objec...

The Default content access account that is located in your 'Configure Search Settings' doesn't have the correct permissions. There is a good chance that the password has either expired or someone has changed it recently.

Click on the user name on the Configure Serach Settings and make sure the user you enter has enough rights to access the content.

Note: Specify an account to use as the default account when crawling content. This account must have read access to the content being crawled. To avoid crawling unpublished versions of documents, ensure that this account is not an administrator on the target server.