in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

echef

From the cluttered (and clustered) brain of Josef Nielsen... A great place for Food, Friends, and... uh... SharePoint of course!

November 2007 - Posts

  • A document repository by any other name is still... well... just a list...

    So this is not so much technical as it is theoretical, but for requests I've gotten, here is a brief on SharePoint Lists. 

    Everything in SharePoint (WSS, MOSS, MSS, etc) is a list.  This goes from a document lirbary to a publishing web part page library to a custom list, to the galleries that hold master pages and web parts, to the very site security that allows people to access or not access your content.  This is done in a very OO method, where all of these items inherit basic list functionality.  Many of these also add additional functionality through the SharePoint object model. 

    A simple example is the custom list.  This is a list that starts out as just the basic require modified and modified by columns, along with a "name" column. You can add to this just about anything you can think of, either through the standard field types (text, multi-line text, hyper-link, file, etc.) or through site columns.  If you haven't experimented with site columns, check them out...  They are quite cool and give you the ability to create a field that is completely reusable.  I usually make a meta-data or "tag" site column on all my sites, to make it easy to add tagging or meta-data searches to my lists.  Ted Pattison actually has a few great resources available for download, like this screencast on Site Columns.

    You can also extend existing list templates, like the task or document library lists. Go to any list and select Settings, List (or Library) Settings.  You'll get a similar screen each time, listing general settings and permissions options, as well as a list of Columns and Views. This is where you can modify or add (or remove) columns.  You can use this to add additional options to your list, like meta-data.  If you have a task list, you can add fields for things like estimated cost, or project codes. If you have a calendar, you can add a column for classification or category.  This changes the built-in templates for lists from limited examples, to jumping-off points for customized anything-you-wants.

    Another example of this is the security list.  This is a list of individuals and their access for your site.  You can see some of the system-level activities (and a few screen shots) of in a previous post of mine about the behavior of My SharePoint Sites.  The gist of this is that if you go to the user information page of a root site collection (that's the "people" section of the people and groups admin pages), you can actually select "List Settings" just like any other list, and see the settings for the user list.  You can, in fact, even add columns to the user list, such as meta data or notes.  This could also include mapping extension information for programmatic user cross-matching to alternate data sources by user identity.

    Another things that is great is that the list object in SharePoint inherits the ability to have a workflow attached to it.  That means that it is not just document library that benifit, as they are commonly thought of as the target when we talk about workflows.  You can even attach workflows to the user security lists.

    Also, all lists of any sort can be saved as templates (stp files) with or without content in your template gallery (which, by the way, is another list).  This automatically adds that custom list to the appropriate category on the "create" page.  For those willing to adventure a bit farther in to the mirk, there is Content Types.  You can find a great post on the concept behind Content Types (I like to call it the Content Type is to Lists post) at John Holiday's blog.

    So what does this all mean?  I'll say it again... Everything in SharePoint is a list.  Understand that and what it implies to the platform, and you take a big jump forward in understanding how you can make SharePoint do whatever it is you want it to. 

  • Excel Calculation Services (ECS) Invalid Handle error

    Just had this happen to me while testing out a new IIS Build script...
     
    When firing up the ECS on a new farm, if you get the following "Handle is Invalid" error:
     
    System.Security.Cryptography.CryptographicException: The handle is invalid.

       at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
       at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
    ... and so on ...
     
    You need to set permissions as follows:
     
    "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys"
     
    Add Local Administrators - Full
    Add NETWORK SERVICE - Read
     
    Then try firing up ECS...

    I got this error in the Event Log (Applicaiton) as an Office SharePoint Server error with EventID of 6482 (MOSS Shared Services).  Not sure if this is always this ID or not.  It is accompanied by a 7034 event (Topology) telling you to try it again (which obviously wouldn't work with the fix first).
     

  • Getting Search Crawl Details from the DB

    Ok, so I must be on a roll... Here's another glorious script that goes directly to the SharePoint DB's... Don't tell Bill!  As usual, this is not recommended by MS, etc., etc., etc.  This one is to get result sets of your Crawl Details.  It will show each attempt to start/stop/delete a crawl, what it's current status is, when it was requested, started, and finished.  Handy for monitoring your Search crawling with home grown tools ;)

     --Begin Script

    /*
    CrawlLogDetails.sql
    Written by
    Josef Nielsen
    Nov. 2007

    Displays MOSS Crawl Details (Type, status, and times)
    Point this script at your Search DB (ie. SharedServices_Search_DB)
    */

    BEGIN

    -- Create temp tables for System values
    CREATE TABLE [#CrawlStatus](
    [CrawlStatusName] VARCHAR(35),
    [CrawlStatusID] INT
    )

    CREATE TABLE [#CrawlType](
    [CrawlTypeName] VARCHAR(25),
    [CrawlTypeID] INT
    )

    -- Populate Crawl Status System Values
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_ACQUIRED', 1)
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_INSERTSTARTPAGE', 2)
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STARTCHECK', 3 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_START', 4)
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_FORBID',  5)
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_UPDATE_SEED', 6 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_QUERY_DONE', 7 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_DELETEUNVISITEDITEMS', 8 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_PAUSE', 9 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_RESUME', 10)
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_DONE', 11 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_UPDATE_STOP', 12 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_STOP', 13 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_STATUS_RESET',  14)
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_START_DELETE', 15 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_DELETE_CS', 16 )
    INSERT INTO [#CrawlStatus] VALUES ('CRAWL_DELETE_SA', 17 )

    -- Populate Crawl Type System Values
    INSERT INTO [#CrawlType] VALUES ('CRAWLTYPE_FULL', 1 )
    INSERT INTO [#CrawlType] VALUES ('CRAWLTYPE_INCREMENTAL', 2 )
    INSERT INTO [#CrawlType] VALUES ('CRAWLTYPE_DELETE', 6 )

    -- Join MSCrawlHistory to SCrawlHostList and our two temp tables
    SELECT    [CrawlID]
            ,[HostName]
            ,[CrawlTypeName]
            ,[CrawlStatusName]
            ,[RequestTime]
            ,[StartTime]
            ,[EndTime]
      FROM [SharedServices1_Search_DB].[dbo].[MSSCrawlHistory]
      LEFT JOIN [dbo].[MSSCrawlHostList] ON [ProjectID] = [HostID]
      LEFT JOIN [#CrawlStatus] ON [Status] = [CrawlStatusID]
      LEFT JOIN [#CrawlType] ON [CrawlType] = [CrawlTypeID]
      WHERE 1 = 1

      -- Uncomment and use this conditional to filter the results to just one Web App
      --AND [HostName] = 'MySharePointSiteName'
      ORDER BY [RequestTime] DESC

    END

    -- Do a little clean up and get rid of those pesky temp tables
    DROP TABLE [#CrawlStatus]
    DROP TABLE [#CrawlType]

     --End Script

  • Details and manual monitoring of the Content DBs

    So our Ad-Hoc environment started growing a bit faster than we had originally anticipated.  We knew we would have some disparity between site's content size, so we set our content DB max site limits a bit lower than normal (hey, we have 50 of them, so we thought we'd be safe).  The thought was that way we could help balance the sizing by adjusting the max counts on the DB's to reflect the physical size based on content. 

    It quickly became way to much of a pain to manually collate the size details with the site details based on content DB...  So heres a little script I wrote up (ok, modified from my original Site Details script) that pulls all the goodness you could want about a content DB direct from the DB itself... <Insert canned warnings about how MS does not recommend querying the DB directly here>

     

    /*
    ContentDBReport.sql
    written by Josef Nielsen
    October 2007 

    NOTE: You must create a linked server if you use multiple SQL server to house you content DBs
    */ 
     

    BEGIN
    DECLARE
    @ts1 varchar(1000), @ConfigDB VARCHAR(128) 

    -- Set your Config DB Name here if it is different
    SET
    @ConfigDB = 'SharePoint_Config'

    -- This creates a temp table to hold the list of content DBs referenced by the Config DB
    CREATE TABLE [#TempDbList]
    (

    DBname VARCHAR(128),
    DBInstance VARCHAR(128),
    DBServer VARCHAR(128),
    MaxSites INT,
    WarnSites INT
    )

    -- Populate the temp table with content DBs
    SET @ts1 = 'INSERT INTO #TempDbList
    SELECT [DbName].[Name] AS ''DatabaseName'',
    [Instance].[Name] AS ''DatabaseInstance'',
    [Server].[Name] AS ''DatabaseServer'',
    CONVERT(XML, [DbName].[properties]).value (''(/object/sFld/text())[1]'', ''int'') AS ''MaxSites'',
    CONVERT(XML, [DbName].[properties]).value (''(/object/sFld/text())[2]'', ''int'') AS ''WarnSites''
    FROM '
    +'['+@ConfigDB+']'+'.[dbo].[Objects] AS [DbName]
    LEFT JOIN '
    +'['+@ConfigDB+']'+'.[dbo].[Objects] AS [Instance]
    ON [DbName].[ParentId] = [Instance].[ID]
    LEFT JOIN '
    +'['+@ConfigDB+']'+'.[dbo].[Objects] AS [Server]
    ON [Instance].[ParentId] = [Server].[Id]
    WHERE [DbName].[Properties] LIKE ''%SPContentDatabase%''
    AND [DbName].[Properties] NOT LIKE ''%WebApplication%'''

    EXEC (@ts1)

    DECLARE @ts2 VARCHAR(1000)

    --This creates a temp table to hold the end results of the Site Collection lists from all Content DBs
    CREATE TABLE [#TempContentDbList]
    (
    WebApp
    VARCHAR(128),
    DBServer VARCHAR(128),
    DBName
    VARCHAR(128),
    DBSites
    int,
    DBWarnSites
    int,
    DBMaxSites
    int,
    DBSize float
    )

    -- Create a cursor to walk through each content DB
    DECLARE DB_cursor CURSOR
    FOR
    SELECT [DBServer], [DBInstance], [DBName], [MaxSites], [WarnSites]
    FROM [#TempDbList] 

    OPEN DB_Cursor

    -- Declare Variables to populate by Cursor
    DECLARE @vDBServer VARCHAR(128)
    DECLARE
    @vDBInstance VARCHAR(128)
    DECLARE @vDBName VARCHAR(128)
    DECLARE @vMaxSites INT
    DECLARE
    @vWarnSites INT
    DECLARE
    @DBv1 VARCHAR(5000) 

    FETCH NEXT FROM DB_cursor INTO @vDBServer, @vDBInstance, @vDBName, @vMaxSites, @vWarnSites
    WHILE @@FETCH_STATUS = 0
    BEGIN  

    -- Add a backslash for DBServers that are not default instances
    DECLARE @slash VARCHAR(5)
    IF @vDBInstance = ''
    SET @slash = ''
    ELSE
    SET @slash = '\'

    -- Script to insert Content DB details to the temp site summery table
    SET @DBv1 = 'INSERT INTO [#TempContentDbList]
    SELECT [ConfigObjects].[Name] AS ''WebApp'',
    (SELECT '''
    + @vDBServer+@slash+@vDBInstance + ''') AS ''SQL Server'',
    (SELECT '''
    + @vDBName + ''') AS ''Content DB Name'',
    (SELECT COUNT([Webs].[Title])) AS ''Current Site Count'',
    (SELECT '
    + CONVERT(VARCHAR(20), @vMaxSites) + ') AS ''Max Site Count'',
    (SELECT '
    + CONVERT(VARCHAR(50),@vWarnSites) + ') AS ''Site Size'',
    (SELECT round(sum(convert(float,[size])*8/1024),2) AS ''DB Size in MB''
    FROM
    [sys].[master_files]
    WHERE
    [state] = 0
    AND [data_space_id] = 1
    AND db_name([database_id]) = '''
    + @vDBName + '''
    GROUP BY [database_id]) AS ''Site Size''
    FROM
    ['
    +@vDBServer+@slash+@vDBInstance+'].['+@vDBName+'].[dbo].[sites] AS [Sites] WITH (NOLOCK)
    LEFT JOIN ['
    +@vDBServer+@slash+@vDBInstance+'].['+@vDBName+'].[dbo].[webs] AS [Webs] WITH (NOLOCK) ON [Webs].[siteID] = [Sites].[Id]
    LEFT JOIN '
    +'['+@ConfigDB+']'+'.[dbo].[SiteMap] AS [ConfigSiteMap] WITH (NOLOCK) ON [ConfigSiteMap].[Id] = [Sites].[Id]
    LEFT JOIN '
    +'['+@ConfigDB+']'+'.[dbo].[Objects] AS [ConfigObjects] WITH (NOLOCK) ON [ConfigSiteMap].[ApplicationID] = [ConfigObjects].[Id]
    WHERE
    [Webs].[ParentWebId] IS NULL
    GROUP BY [ConfigObjects].[Name]'
     

    EXEC (@DBv1)

    FETCH NEXT FROM DB_cursor INTO @vDBServer, @vDBInstance, @vDBName, @vMaxSites, @vWarnSites

    END

    CLOSE DB_cursor
    DEALLOCATE DB_Cursor

    END

    -- Cursor is closed and released, and now we select the results of the scan
    SELECT * FROM #TempContentDbList ORDER BY [WebApp], [DBName]

    GO

    -- Clean up to get rid of those temp tables
    DROP TABLE [#TempDbList]
    DROP TABLE [#TempContentDbList]

     

     

  • SharePoint Connections - The Real Day 3

    Well, today was already scheduled to be a short day, but between a VPC failure (seems to be a common theme... a few presenters also has this issue) and some issues back in the office, it looks like I'll probably miss the rest of the day.  It solves one challenge... Which presentation to go to at the end. 

    Unfortunately, whoever scheduled the presentations set 3 or 4 really good presenters and topics all against each other, so the choice was tough...  I was leaning toward either Dustin's Data Part Deep Dive, or AC's Internet WCM, but Neil Iversen had a really good looking topic (MOSS PowerShell) that he teased us with earlier in his Advanced Features presentation, and Veli-Matti Vanamo had one that looked tempting called Branding your site with Site Definitions and Features. 

    I did get a chance to catch Todd Baginski's BDC presentation though, as well as Neil Iversen's SharePoint Mobile presentation.  Here's my notes for both:

    When using the BDC, you cannot authenticate with FBA.  This will cause issues with the BDC - Todd mentioned that he thought he remebers hearing/reading someone say they found a way around this, but couldn't find it later.  Also, when you index the BDC and rows are pulled for a search query, the action hyperlinked to the search result is the "default" action created by the system when you created the BDC Application.  You can modify the default to have the behavior you'd like on search results. 

    There are two commonly used tools out there today for working with the BDC to get away from hand typing all the XML for an Application Definition file.  The BDCMetaMan (Which Todd used to be a part of before SharePoint Experts) and the MS BDC Tool, aka "Microsoft Business Data Catalog Definition Editor", which can be downloaded as a part of the August 2007 MOSS SDK.

    There are a couple of major differences in usage and result between the BDC and it's OOB web parts and SPD and the Data View web part.  These are primarily that the BDC is very simple (when using a tool for the App Def file), fast to generate results, ghosted (or uncustomized) for performance and simplicity.  It can be customized using custom written Web Apps or through custom XSL, but these take away from the two biggest benefits, simplicity and speed.  The Data View wep part on the other hand is not quite a simple or fast (unless you're Dustin on one of those demos... Man, he flies through that!), but is worlds more customizable, can hook to more than just a web service or database, is unghosted (or customized), and generally offers much more control.

    I took a chance on Neil Iversen's SharePoint Mobile presentation, as it is not a very popular topic generally speaking, but I heard Neil speak earlier on Features, and thought he did a good job, and I don't know much beyond the OOB mobile options that are in SharePoint, so I gave it a shot.  The audience was fairly small, but Neil took it in stride and gave a good presentation, rich in demos.  Here are a few notes I got from his presentation:

    All SharePoint Site Templates map to one of two mobile templates, except for the central admin tremplates (and SSP) and the Meeting Site templates.  All others use the general Mobile template, or for Blog and Wiki sites, the Blog Mobile Template.  the Mobile files that map to the "/m" in the URL of a mobile site are held in the layouts\mobile folder in "12".  ASP.Net web controls are mapped to ASP.Net Mobile controls, which in many cases is similar, in other is compltely different, such as the date picker.  In a regular site this is a calender pop-up picker, but on a mobile site, this is just a text box.  Another example is the multiple upload interface.  In a regular site it is virtually unlimited, but on a mobile site it is limited to 3 files.

    The SDK contains some good detail on changing some of the templates for mobile, as well as the mobile restriction parameters, such as how many characters to show on a line before displaying the "...".  These settings can easily be changed with a feature.  Neil said he would post some samples of this on his blog in a few days,  I also noticed during his presentation that he is definately a DOS/Notepad kind of guy... Don't see many of those anymore without a penguin on thier shirts ;) 

    He also mentioned that occassionally, mobile sites have cache issues that prevent them from showing some of the new changes (template and parameters) even after an IIS Reset.  He recommended using the "Fiddler" tool from Microsoft to monitor and possible flush the cache if you experience this issue.

    Overall, there was a lot of good stuff this year, but I have to agree with Eric Shupps on his observations of the conference (Day 1, Day 2, Day 3).  1) The wireless was pretty darn lousy.  Very spotty, and sporadic with performance. 2) What is the deal with the Vendor Hall?  It kept being closed then opened, then closed the opened, them closed for good before the conference was even over!  Hopefully the 42 comment cards I filled out with that info gets in the hands of the right people :) 

     

  • SharePoint Connections - The Real Day 2

    I started off by trying out Veli-Matti Vanamo's Introduction to Web Part Development presentation.  He was actually a substitute for his co-worker, Emer McKenna.  The majority of the content was from their new book to be released in Dec, Microsoft SharePoint 2007 Technologies: Planning, Design and Implementation.

    While the majority of the presentation was slide deck, there was still some good information to be had there.  A few notes from this session I took were as follows:

    Web part management is almost identical between SharePoint and ASP.Net 2.0.  The two primary differences are that in SharePoint, you can add the Microsoft.SharePoint.dll reference to get additional functionality, and when using SharePoint, the webpartmanager is overridden by the spwebpartmanager, to apply SharePoint specific details to the rendering.

    There are three acceptable types of web parts:

    1. The ASP.Net 2.0 Web part, which uses the System.Web.dll for it's inheritance, and is compatibility with both ASP.Net Web Part Zones, and SharePoint/WSS 3.0 Web Part Zones.  These web parts are usually labeled with a .webpart extension.
    2. The WSS 2.0 web part, which uses the Microsoft.SharePoint.dll library for its inheritance, and is a deprecated method for creating web parts.  The compatibility is still there for moving web parts from WSS 2.0 to WSS 3.0.  These web parts have a .dwp extension.
    3. The Hybrid web part, which uses both the above mentioned dll libraries for inheritance, and is specific to WSS 3.0/MOSS.  This allows for all the new ASP.Net 2.0 functionality, and provides access to the personalization objects, as well as the SharePoint Object model.  This is also required for creating asynchronous functionality in a web part.

    There are three opportunities to execute code prior to the generally used "body" of a web part , which is the Render() method.  These are (in order): OnInit(), OnLoad(), and OnPreRender().  They can all be overridden to allow pre-execution code to be run.

    The Visual Studio SDK (2005) contains a great tool for retrieveing Stong Names for assemblies, called sn.exe.  The usage is sn.exe -t mylibrary.dll, and the returned value is just the strong name of the library.

    There are three things needed to debug web parts.  1) You must elevate your privileges above WSS_Minimal, as it does not allow debugging.  2) Set Debug = true in the Web.config.  3) Set CustomErrors = off in the Web.config.

    The interesting thing I noticed was that the more slide deck there was in presentations, the more notes I took.  The more example/demo work that was done (and the more engaging a speaker was) the less notes I took. :)  My biggest wish (and comment on all my comment cards) is that there was a way to Webinar record the presentations, and pass those out, rather than just a slide deck.  A lot more value there , I think.

    The next presentation I went to was Todd Baginski's SharePoint Object Model demo.  I got an opportunity to hang out with Todd for a bit at Andrew Connell's after hours party on Tuesday, and he's a great guy.  Comes across as very approachable and down to earth, yet is quite a smart guy.  This showed in his presentation too.

    His presentation was really almost 100% demo... In fact I don't even remember what was on the slide or two he showed us early on, except maybe the title of his demo.  He used most of his time showing us various methods that expose and allow manipulation of SharePoint objects.  He's written a great little app called the MOSS 2007 Toolkit that he promised he'd hand out by USB to anyone who wanted a copy.  After about 15 minutes of the demo, he asked how many people were going to want a copy of the code, and a couple hundred hands went up.  He paused for a minute then decided that his poor USB key would probably get worn out from all those laptops, and announced that he'd make it available on his blog site soon (including the source code) instead.  UPDATE: He posted it this morning and it can be downloaded from here. (11/8/07//jn)

    It is basically a winform app that you run on a SharePoint server that connects to the object model and allows you to both see and modify various settings and objects.  At a high level (there were TONS of actions and vies for each of these), these are the main areas the tool covers, and he showed:

    • Site Metadata
    • Site Details
    • Create/Delete a Site
    • Modify Top or Quick Navigation Bars
    • Modify USers and Groups
    • Add/Remove/Modify List items (including Document Libraries)

    The funny part was that after ending with a few minutes for questions, a gaggle of guys surrounded Todd, and even when he was packing up so Dustin could set up Mac (yes, he presented from a Mac), he was still surrounded.  As he left the auditorium, he was followed by an entourage of guys still asking questions.  Definitely a popular presentation.

    After that, I couldn't resist hanging around for Dustin Miller's SharePoint Designer, it's for Developers Too presentation.  This is very similar to the infamous "The Wave" presentation he gave at TechEd this year.  I was waiting to see if he'd go in to his pre-session warm up and get the crowd on their feet, but he had a bit of technical difficulty getting setup (he claims it was NOT the Mac), and didn't bother with it, although there was one guy up front who decided to do the wave anyways... A wave of 1 is not very impressive :)

    Dustin is a very engaging speaker who never losses an opportunity to drop in a joke or a bad pun.  I think I counted at least three Ghostbusters quotes during the hour plus that his demo ran.  He also is always full of great advice on how to get things done, like how to get away with taking a nap in your office.  Apparently the trick is to drop a bunch of papers on the floor first, then rest you head in you arm over the edge of your desk.  That way if someone walks in, you can wake up and say "Oh, I was just picking up these papers".  Never a dull moment in this session :)

    Seriously though, Dustin used the Data Viewer web part to show just how easy and powerful both it and SharePoint Designer could be.  He showed some list linking, which was fairly straight forward.  He then got in to some fun stuff... He grabbed the URL from a Google news search result and create a link to it from the web page in SPD, pushing values from the data viewer web part in to the web call parameters (specifically the "q" parameter) for Google to allow you to push a field value straight out to Google news for a search, dynamically.

    He then showed a more complex example of the same thing, by deconstructing the results URL for Yahoo Weather, and showing how we could utilize it in SDP and push values out to it, returning an RSS feed result and displaying it exactly how we want to in a data viewer web part, without any manual XSLT work.  He even included a weather image from the feed.  Cool stuff.

    He also showed how in todays high security, paranoid world, as a responsible technology expert, you must always click "yes" on those annoying security pop-ups "Are you sure you want to..." and "Warning...".  Definitely engaging.  I'll have to see if I can make it to his Data Viewer Deep dive... It's at the same time as about 3 other good one's I'd like to hit, so we'll see.

    This ended up being a lot longer than I had anticipated, but then it is a whole days worth of information, jammed on to one blog entry ;)   

  • SharePoint Connections - The Real Day 1...

    Well, thus ends the first "real" day of Connections 2007...  Lots of good warm-up stuff to get everybody on-deck for tomarrow and the begining of some of the deeper dive sessions...  Here's a couple notes I got from the conference:

    Tom Rizzo gave a couple good presentations today, and pointed out a number of little known tidbits, resources, and a news announcement (with demo).  First, the tidbits:

    Annonymous access being enabled will disable the ability to set item-level permissions in a list.  I didn't know this.  This is appearently by design, as there were a number of complexities in the security model, or at least that is the assumption presented. 

    Another great bit is that apparently the ISA guys played really nice with the OWA guys from Exchange 2007, and as a result, internal SharePoint sites that are linked/embedded in an email message can  can be passed through ISA from the Internet when ISA is configured properly.  That is, without any proxy or vpn.

    Next, the resources:

    Tom gave some examples of public facing Internet sites on SharePoint...  The first few are well know examples everyone points to... The last few, not as much.

    • Hawaiian Air
    • Glu Mobile
    • TV Guide - While this looks like MOSS, it is actually an AJAX front end to a MOSS back-end.
    • Migros - A good example of localization for a site (foreign)
    • Viacom/MTV - with a redirector to hide the "pages" from the URL, and a flash plug-in in the middle of the page

    Additionally, I gleened the following resources from Tom's presentation...

    • MS included a BDC editor in the August SDK for MOSS 2007.  I missed this one, so I'll have to check it out.
    • The SharePoint Learning Kit has excellent resources for assembling End User Training, and follows the SCORM training methodologies.
    • The End User Training Blog at Microsoft has been available for a bit over a month now. 

    Lawrence Liu also had a few gems to share, as well as reiterating some of ones given earlier by Tom:

    • Adding fields from a custom content type to a document library will cause files opened (or created) to show the "Document Properties" toolbar with the appropriate MOSS fields in Word or Excell 2007.
    • Many people know about the Calendar and Task 2-way syncronization with Outlook, but many people overlook the contact and discussion forum 2-way sync that also exists.  The document lirary 1-way (read-only) view was supposed to be 2-way, but appearently there we issues around conflict resolution and the quality of this syncing that kept the 2-way version out of the release... Might be back on the table in the next version :)
    • For those that did not know, Lawrence is a huge FaceBook and OpenSocial fan... Not so big on MySpace... In fact he scolded those who admitted to having them :)  See Lawrences FaceBook Profile here.
    • The MS Fanastic 40 can be downloaded at http://www.microsoft.com/sharepoint/templates.mspx

    Tom also announced (after leading a blurry eyed Vegas crowd that was still desperate for more coffee/caffeinated pop/<insert stimulant of your choice here>) Microsoft Search Server 2008 (MSS), and its Express counterpart, which are in Beta now, and will ship in 1Q08.  basically a rewrapped MOSS for Search, with a better admin console, and best of all... wait for it... Federated Search.  Cool stuff... uses the OpenSearch Standard Amazon helped set.  Good news for use MOSS users too... There will be an upgrade pack to add the new features in to Full MOSS... downside is, it will not be released until probably 2Q08.

    I also had a fun time at Andrew Connell's after-hours get together...  It was cool getting to put some faces to the voices I've talked to and the names I've read...

    The rest of the day was a blur, as I met way too many vendors in a row, and forgot to bring my notebook to any other sessions.  I now have approximately 2 1/2 tree's worth of vendor handouts in my hotel room, covering half the couch and two chairs.  If I get a spare week or two, I'll read through all the pamphlets and post something about the good ones (I must be a masochist).

    I'm also now the proud owner of 5 demo CD's, 4 logo-covered pens (2 of which don't seem to work), 3 sticky note pads, 2 T-shirts that don't fit,  and a backpack that doesn't fit my laptop or the ream and a half of papers I collected...  Hmmm... Reminds me of Christmas...  Well, my kids will be happy...  Look what daddy got you from Vegas!

    Roll on tomorrow! High-lights I'm looking forward to are Dustin's SPD for Developers (we'll see if he can get a wave out of everyone before lunch), and it's a toss-up whether I'll hit Todd's SSO in the real-world or Andrew's Building Publishing Sites with WCM... only time will tell! :) 


Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts