Welcome to my blog on all things SharePoint. I have a range of articles that will interest you if you've made it as far as visiting my blog. I was awarded as an SharePoint MVP by Microsoft in July 2010. I currently live in New York and am an Enterprise Architect at AvePoint Inc.. I co founded www.NothingButSharePoint.com with Mark Miller in 2010.

MVP AwardJeremy Thake Profile Photo

Whitepapers

NBSP

Check out my articles on NothingButSharePoint.com

Solution Development in SharePoint 2007

This series was inspired by the chatter amongst SharePoint blogs on the best ways to approach customisations in SharePoint using Solutions.

Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8

Leveraging the SharePoint Platform

This series was inspired by a discussion had with Andrew Coates at a Perth SharePoint User Group meeting. This then turned into a 6 part series on Arno Nell's SharePointMagazine.net web site.

Initial post - Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6

Webcasts

I have recorded various web casts that I present at User Groups or just on a specific topic by request:
How ASP.NET Developers can leverage SharePoint webcast
SPSource Webcast: Reverse engineer Lists to ListTemplates and much more
SharePoint Development with Unit Testing webcast
Perth SharePoint UG Web Cast on approaches to deploying artefacts (SPSource)
More...


Podcasts

I have been interviewed about Leveraging the SharePoint Platform by the SharePoint Pod Show: listen here .

RSS Feed Feed your read!

Archives

January 2012 (5)
September 2011 (2)
August 2011 (1)
July 2011 (3)
June 2011 (7)
May 2011 (3)
April 2011 (3)
March 2011 (3)
February 2011 (2)
January 2011 (1)
December 2010 (4)
September 2010 (4)
July 2010 (5)
June 2010 (4)
May 2010 (6)
April 2010 (7)
March 2010 (5)
February 2010 (7)
January 2010 (3)
December 2009 (1)
November 2009 (6)
October 2009 (9)
September 2009 (7)
August 2009 (6)
July 2009 (13)
June 2009 (4)
May 2009 (12)
April 2009 (4)
March 2009 (4)
February 2009 (13)
January 2009 (4)
December 2008 (4)
November 2008 (11)
October 2008 (16)
September 2008 (4)
August 2008 (5)
July 2008 (4)
June 2008 (8)
May 2008 (5)
April 2008 (9)
March 2008 (5)
February 2008 (6)
January 2008 (1)
November 2007 (11)
October 2007 (8)
September 2007 (24)
August 2007 (5)
July 2007 (2)
May 2007 (1)
April 2007 (1)
March 2007 (1)
February 2007 (3)
January 2007 (4)
November 2006 (7)
October 2006 (7)
September 2006 (18)
August 2006 (14)
June 2006 (3)
May 2006 (8)
April 2006 (4)
March 2006 (38)
February 2006 (30)
January 2006 (2)
December 2005 (3)
November 2005 (28)
May 2005 (1)
April 2005 (5)
March 2005 (1)
November 2004 (1)
August 2004 (11)
July 2004 (1)
Failed to render control: An error occurred during a call to extension function 'createMonthUrl'. See InnerException for a complete description of the error.

Links

Tag Cloud

Ajax, Apple, DotNetNuke, Enterprise Content Management, Error Resolution, Gadgets, General, Governance, Microsoft .Net Development, Mobile, SharePoint, Sharepoint Business Forms, Sharepoint Business Intelligence, Sharepoint Collaboration, SharePoint Development, Sharepoint Enterprise Content Management, Sharepoint Enterprise Search, Sharepoint Portal, US Migration, Web 2.0, Workflow
Apr 232008

SharePoint 2007 SSP User Profile Import Connections Limitations

The organisation I am working for at the moment has an Active Directory set up of Users and Contacts.

Running a ldifde query to output all Users and Contacts (below) provides me a list of 936 items.

ldifde -f usersindomain.csv -r "(&(objectCategory=Person)(|(objectClass=User)(objectClass=Contact)))"

If I use this query within the Import Connection in the SSP in Central Administration .

image

When I start a full import I only receive 894 user profiles.

image

This coincides with if I run, although I only get 892.

ldifde -f usersindomain.csv -r "(&(objectCategory=Person)(objectClass=User))"

So it looks like it is just ignoring the Contact's. Running:

ldifde -f usersindomain.csv -r "(&(objectCategory=Person)(objectClass=User))"

...returns 44 items. 892 + 44 = 936 which makes sense, but who are the other 2 User Profiles being imported?

Looking at the User Profile Crawl Log I receive errors:

image

So basically it appears that it cannot support this objectClass.

This is a shame because I am really pushing our organisation to use Out of the Box functionality as much as possible for various reasons. Customising this would require managing the Contacts in Active Directory using the API and maintaining that they stay in sync with the the User Profiles Repository within SharePoint. This means designing, developing, testing and maintaining yet another application on top of the SharePoint platform.

My understanding of Business Data Catalogue (BDC) functionality is that it can only extend on a base subset of profile data. So you can crawl in from Active Directory the Users and if there are properties stored about that User in another repository outside of Active Directory, you can match using an identifier and update the property in the User Profile.
It cannot create "Users" that exist in the secondary repository mapped by BDC that are not in Active Directory, it's purely an extension.

If anyone knows a solution for this please feel free to message me on Facebook.

Published: 4/23/2008  6:37 PM | 0  Comments | 0  Links to this post

Apr 222008

The description for Event ID ( 27745 ) in Source ( Windows SharePoint Services 3 ) cannot be found

Got a beauty of an error on our Production farm every few seconds:

image

Event Type:        Error

Event Source:        Windows SharePoint Services 3

Event Category:        General

Event ID:        27745

Date:                23/04/2008

Time:                9:23:24 AM

User:                N/A

Computer:        CENTRALADMINSERVER

Description:

The description for Event ID ( 27745 ) in Source ( Windows SharePoint Services 3 ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: #50071: Unable to connect to the database SharePoint_Config on DATABASESERVERNAME\SQL01. Check the database connection information and make sure that the database server is running..

Also noticed that IIS Manager wasn't working correctly and sites weren't running on that server which is our Central Admistration Application Server for the farm...the Queen Bee!

image

Resolution

Restarting IIS on the Queen Bee server also seemed to kick start IIS back into action.

Thanks to Mickey for this one, basically restarting the Windows Services listed here fixes the event log errors:

  • Distributed Transaction Coordinator
  • Windows SharePoint Services Administration
  • Windows SharePoint Services Search
  • Windows SharePoint Services Timer
  • Windows SharePoint Services Tracing
Published: 4/22/2008  7:10 PM | 0  Comments | 0  Links to this post

Apr 172008

Errors when deploying Software Updates for Office SharePoint Server 2007

These errors are mentioned on the Deploy Software Updates for Office SharePoint Server 2007 right down the bottom.

The Error

clip_image001

Finding Cause

Look in the linked log and search for 'ERR' matching case.

04/16/2008 16:37:17 6 ERR Failed to upgrade SharePoint Products and Technologies.

Failed to upgrade SharePoint Products and Technologies. Further information regarding this failure can be found at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS\Upgrade.log.

An exception of type Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException was thrown. Additional exception information: Failed to upgrade SharePoint Products and Technologies.

Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException: Exception of type 'Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException' was thrown.

at Microsoft.SharePoint.PostSetupConfiguration.UpgradeTask.Run()

at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

Looking at the log it I searched for 'ERROR' matching case:

[SPWebServerSequence] [ERROR] [4/16/2008 4:37:10 PM]: The access control list on C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\template\layouts\web.config could not be modified because the path could not be located in the file system.

The Resolution

Copy

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\template\layouts\web.config file from Central APP Server to each APP and WFE server in same location

The Error

clip_image002

Finding Cause

Look in the linked log and search for 'ERR' matching case.

04/16/2008 16:53:34 8 ERR Exception: Microsoft.SharePoint.Administration.SPUpdatedConcurrencyException: An update conflict has occurred, and you must re-try this action. The object SPFarm Name=SharePoint_Config is being updated by CPMINING\SVC_MOSS_TST, in the OWSTIMER process, on machine PER1MOS02TST. View the tracing log for more information about the conflict.

at Microsoft.SharePoint.Administration.SPConfigurationDatabase.StoreObject(SPPersistedObject obj, Boolean storeClassIfNecessary, Boolean ensure)

at Microsoft.SharePoint.Administration.SPConfigurationDatabase.PutObject(SPPersistedObject obj, Boolean ensure)

at Microsoft.SharePoint.Administration.SPPersistedObject.Update()

at Microsoft.SharePoint.Administration.SPFarm.Update()

at Microsoft.SharePoint.PostSetupConfiguration.UpgradeTask.Run()

at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

The Resolution

Just rerun the wizard and it seems to work.

Published: 4/17/2008  12:18 AM | 0  Comments | 0  Links to this post

Apr 172008

Apr 152008

Shared Services Provider: The operation completed successfully...but didn't

I was configuring a User Profiles and Properties Import Connection today and kicked off a Full Crawl.

image

As you can see from the above screen it states 'The operation completed successfully'...but it did not obviously crawl my entire domain as there are only 4 user profiles.

image

I viewed the Import logs and found this error 'The profile import default access account is set to use the default content access account which has not been specified'. Kudos to the Microsoft team for putting a log error in with a resolution. But surely the it should have failed the Import job.

Granted, it says Last log error, which in this screen shot appears to be spsimport://<guid>, but I'm not sure where that is coming from as I only have one Import Connection which is the spsimport://cpmining one.

To fix this error I went into 'Configure Profile Import' and set the 'Default Access Account' by specifying a service account in the domain that has Read access to Active Directory. Also, in the actual 'Import Connection' I had to set the 'Authentication Information' with the same account also.

Published: 4/15/2008  5:54 PM | 0  Comments | 0  Links to this post

Apr 152008

Shared Services Provider: Access Denied

I had an interesting error yesterday regarding access to the 'User profiles and properties' page in the Shared Services Administration stating the generic "Access Denied" SharePoint site access denied.

clip_image001[9]

Now my first approach was to look who was the Site Collection Administrator, which was ... yes you guessed it me! And I can access the front page of the Shared Services Provider Page e.g. http://<servername>/ssp/admin/default.aspx.

clip_image001

A little help from my friend Google led me to visit the 'Personalization services permissions' sub page within the User Profiles and My Sites section of the front page. From here I could add permissions to users and groups for various areas of the SSP.

It would have been really nice for the Access Denied error to state that rather than not having permission to the Site that it was permissions on a particular function within SSP which can be set on the 'Personalization services permissions' page...hopefully that'll make it into vNext!

clip_image001[5]

clip_image001[7]

For reference here is the TechNet article on Configuring Personalization permissions in the SSP.

I'm sure this error will come again and I won't possibly be able to remember all of the intricacies of SharePoint so I'm blogging it here!

Published: 4/15/2008  5:21 PM | 0  Comments | 0  Links to this post

Apr 102008

InfoPath Error on Resubmission

I've been using the UDCX files for my Data Connections in my InfoPath form and for the Form Submit Action it came up with an error if I resubmitted the form:

A value in the form may be used to specify the file name. If you know the value in the form that specifies the file name, revise it and try again. Otherwise, contact the author of the form template.

At first I didn't know where to start but then I realised that I hadn't checked the option in the setup when I converted it to a udcx file.

image

if you're not using udcx files you can simply tick the tick box and it'll fix your error.

Basically I found the xml in the udcx file and changed it and for everyone's reference its. The element can be found at:

<udc:FolderName AllowOverwrite="0" />

and just change it to:

<udc:FolderName AllowOverwrite="1" />

 

So a full sample file looks like:

<?xml version="1.0" encoding="UTF-8"?>
<?MicrosoftWindowsSharePointServices ContentTypeID="0x010100B4CBD48E029A4ad8B62CB0E41868F2B0"?>
<udc:DataSource MajorVersion="2" MinorVersion="0" xmlns:udc="http://schemas.microsoft.com/office/infopath/2006/udc">
    <udc:Name>Main submit</udc:Name>
    <udc:Description>Format: UDC V2; Connection Type: SharePointLibrary; Purpose: WriteOnly; Generated by Microsoft Office InfoPath 2007</udc:Description>
    <udc:Type MajorVersion="2" MinorVersion="0" Type="SharePointLibrary">
        <udc:SubType MajorVersion="0" MinorVersion="0" Type=""/>
    </udc:Type>
    <udc:ConnectionInfo Purpose="WriteOnly" AltDataSource="">
        <udc:WsdlUrl/>
        <udc:SelectCommand>
            <udc:ListId/>
            <udc:WebUrl/>
            <udc:ConnectionString/>
            <udc:ServiceUrl UseFormsServiceProxy="false"/>
            <udc:SoapAction/>
            <udc:Query/>
        </udc:SelectCommand>
        <udc:UpdateCommand>
            <udc:ServiceUrl UseFormsServiceProxy="false"/>
            <udc:SoapAction/>
            <udc:Submit/>
            <udc:FileName>Specify a filename or formula</udc:FileName>
            <udc:FolderName AllowOverwrite="1">http://testurl/</udc:FolderName>
        </udc:UpdateCommand>
        <!--udc:Authentication><udc:SSO AppId='' CredentialType='' /></udc:Authentication-->
    </udc:ConnectionInfo>
</udc:DataSource>

Published: 4/10/2008  7:36 PM | 0  Comments | 0  Links to this post

Apr 102008

Solution Deployment stuck on "Deploying"

I found a post on the MSDN forums because I have the same problem and it recommended the SP1 upgrade to fix the Day Light Savings issue which we have here in Perth Australia. The Day Light Savings actually finished last week before we could get all our ducks in line to test the SP1 patch on our Test Servers and I really couldn't wait for our SharePoint SP1 rollout to happen and needed a solution out. Anyway, turns out the issue was still there after Day Light Savings ended.

I had blogged about this before here.

I noticed initially that the Windows SharePoint Services Timer was not running when I ran the add solution and deploy solution, so I started it. But it didn't seem to pick up the Jobs. I've tried execadmsvcjobs to force it and it doesn't pick it up. The Jobs are in the Job Definitions as "One-Time" and their is a Last Run time in there also which correlates with when I fired off the stsadm commands. It looks like it's just holding onto the Jobs for some reason.

I tried various things around Cancelling the deployment, which executes properly. But then when I try and retract the solution, it too gets a Job set up and gets stuck also, which means the Solution gets stuck at Retracting! Deleting the Job Timer Definition for some reasons resolves it from saying Deploying or Retracting.

I took a further look at this and basically it was because all the servers in the farms Windows SharePoint Services Timer had stopped! I remote connected to them all and started them and ran execadmsvcjobs and it all seemed to fix itself up.

Published: 4/10/2008  5:42 PM | 0  Comments | 0  Links to this post

Apr 092008

The Pain of Deploying InfoPath Programmatically

I've been doing a lot of work around Governance of SharePoint within our organisation and have been hitting brick walls with regards to InfoPath. Especially with regards to Environmental differences when using Forms with Data Sources.

I've found lots of articles pushing Data Connection Libraries with .udcx files which is fine to a point but this is the best one. With this being the best explanation of the ins and outs of the actual file. This one starts to explain the environment thing but fails to deliver on the issues outlined below. Plenty more on my Diigo collection.

Where it works

Where this works well is when you have a udcx file that points to a SharePoint list e.g. http://dev/test/dcl/test.udcx would have an element pointing to http://dev/test/lists/ContractList/.

You can deploy this file to the same location on each environment and select that the link in the InfoPath form be relative to a particular server name e.g. having the http://dev/test/dcl/test.udcx and http://staging/test/dcl/test.udcx will work with the same InfoPath form.

You would have to modify each .udcx file to point to it's appropriate SharePoint List e.g. http://staging/test/dcl/test.udcx would have point to http://staging/test/lists/ContractList/. This is far easier than having to open up InfoPath Client to modify this and also can be programmatically written and uploaded to the Data Connection Library as part of a Solution package (post with code coming!).
This is useful so that you don't have to store multiple versions of one form for each environment, or tinker with the form Data Connections when deploying it...especially if you want Server Administrators doing this.

Where it isn't cool

Note this is not relative to where the InfoPath form is being hosted from! So if you have another Web created on your server where you want it to use it's own .udcx files e.g. the udcx files are configured to point at SharePoint Lists within itself such as http://dev/test/subweb/dcl/test.udcx you would need to modify the Data Connection in the InfoPath form itself. So it's not that flexible!
A good scenario for this is if you have a form where you want to reuse it's functionality but have each instance posting to a different SharePoint List without having to have different InfoPath form versions for each instance.

The Central Administration maintained Data Connection files is another place to put these, but again, if you wanted different SharePoint List Connections in each, you'd need separate instances of each and therefore you'd have to modify the InfoPath forms to point to the correct instance!

What would be nice

It would be great if the InfoPath form was intelligent enough to know which SharePoint List fired off a "New Form" action and then post it back to itself and relative to this List look for a Data Connection Library. But we can all dream! This guy has the same dream! Maybe the Data Connections can be set in Code Behind on the InfoPath forms, but again that's more headache and you start thinking why we don't just use ASPX forms to do this stuff!

Published: 4/9/2008  2:32 AM | 0  Comments | 0  Links to this post