2009-11-22

f-Laws of Management

I was going to copy and add my own, but the truth is you'd all be better served by going to the source of f-Laws and I don't have to plagiarize or quote.
f-Laws are a series of common management flaws that seems to permeate today's companies.
I encourage everyone who works with more than a couple of people to read the big book or even the FREE little book.


Example - Word for word copied from the Little book.

Russell & Herbert f-Law:

The more important the problem a manager asks consultants for help on, the less useful and more costly their solutions are likely to be.

Consultants begin their engagements by gathering very large amounts of data, much more than can be transformed into useful information. No wonder! Their fees are proportional to the amount of time they devote to a problem, not to the amount of good that they do.

The most successful consultants are the ones who are smart enough to see what managers want and give it to them after an extended effort, and do so in long, impressively formatted reports. They provide sanctions for a fee.

The principal finding obtained by all studies conducted by consultants, regardless of the issues involved, is the need for more study. The success of a consultant’s effort is not measured by the amount of good it does for the client, but the amount of good it does for the consultant.


Sally - Response:

It’s astonishing that, in these days of obsession with return in investment, consultants are not held to account more than they are. There are three reasons for this:


  1. Executives are seduced by data – the more they have, even if it’s useless, the more it makes them feel in control.
  2. The CEO or someone else very senior usually hires the expensive consultants. Who is going to challenge the CEO’s decision?
  3. Consultants set themselves up as experts. This provides the executive with another hiding place. “If the expert says so who am I to disagree”?

Consultants - unlike the rest of us - do indeed manage to escape being accountable. The higher their fee, the less accountable they become. The more complex and costly their solutions, the more unlikely it is that they’ll be challenged.

Who’s going to want to point out that some senior executive’s decision to hire consultants has been a huge waste of money? 


The best organizations, by the way, are more likely to use internal consultants, form employee problem-solving teams or hire customers and suppliers to solve problems for them.

2009-11-17

SharePoint 2010 beta first impressions.


Maybe it's my scifi interest, but I think SPF 2010 & SPS 2010 roll off the tongue nicer than WSSv3 & MOSS 2007.




    The email Microsoft sent me contained product keys for 2 versions:
  1. SharePoint Server for Internet Sites 2010

  2. SharePoint Server 2010


    My setup is all x64:
  1. VMWare Guess with 2.4GB RAM/ 80GB HDD

  2. Win2008R2 SE

  3. SQL 2008 + SP1

  4. SharePoint Server for Internet Sites 2010


After installing Win2008 and SQL2008, I launched the SP installer.

The package extracts and you're presented with an SQL2005 type menu with Prepare/Install/Other Info. I skipped the reading and went directly to "Install SharePoint Server" and it failed because IIS 6 Compatibility Prerequisite was missing.

This time I clicked "Install Software Prerequisites" and it installed quite a few more things.


Back to "Install SharePoint Server" and after a while it failed again:





Google'd KB970315, downloaded and installed the Hotfix.

Away we go again.



A few new things...

  • the setup asks for a pass phrase to secure the farm.

  • there's now a Wizard option to guide you through the Services configuration.


I select all options bar "Lotus Notes Connector"... enter a new account, and after a couple minutes the first error:


Errors occured.


The service application proxy "User Profile Service Application" could not be provisioned because of the following error: Unrecognized attribute 'allowInsecureTransport'. Note that attribute names are case-sensitive. (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebClients\Profile\client.config line 56)



Corelation Id: 95684294-0888-46dd-8242-df5860c5188e



Central Administration, its all new and it has pretty icons like a Control Panel.




Let's add some user accounts and start using it... the Shared Service Provider doesn't seem to exist anymore and in its place is the much more logical Service Applications Management screen.





User Profile Service Application is my guess for adding users.



I guess this was the error being reported before... I google'd "95684294-0888-46dd-8242-df5860c5188e", nothing, then tried "allowInsecureTransport" which lead me to MSDN Forum after reading through it I
tried replacing the attribute with enableUnsecuredResponse, that didn't work... I noticed other security nodes didn't have this attribute so I commented them all out and it worked after an IISReset.

More new things...

  • Review problems and solutions


  • JQuery type popups/functions everywhere


  • Ribbon menus everywhere


  • Theme Gallery; Now themes are CAB files with an .thmx extension



  • Solution Gallery with upload, woohoo... I guess you'll have to be more vigilant with assigning Site Collection Admins :)... browse Office.com uses Silverlight

  • SharePoint Designer Settings, now I don't have to blanket disable SPD access!


All in all SharePoint 2010 is more logically laid out and has a refreshing dynamic look.

I'll delve in to SP2010 more in the future.

2009-11-03

SharePoint List in SQL


I was recently tasked with Exporting a SharePoint list to Excel for users logging in using Forms Authentication.
I scratched my head for a minute and I came up with creating a Reporting Services report that queries the SP DB directly.

Issues: I wanted the query to be dynamic and use the exact same SP columns. So if a user adds a field or changes a column name I don't need to amend the SSRS report.

Solution: I created a Stored Proc, that takes 1 parameter (ListID). The proc gets the fields for the list then builds a query and executes it. The Stored Proc needs to reside on the same Content DB.

Code:


CREATE procedure [dbo].[usp_PrintList] (@ListId uniqueidentifier)
AS
BEGIN
  DECLARE @XMLFields TABLE (Row INT IDENTITY, Field XML);
  DECLARE @xFields XML; 
  SELECT @xFields = (SELECT cast(
      replace(cast(tp_Fields as varchar(max)),'<FieldRef','<Field') 
      as XML) as Fields
      FROM Lists 
      WHERE (tp_ID = @ListId))
 
  INSERT INTO  @XMLFields
    SELECT Tbl.xFlds.query('.') from @xFields.nodes('/Field') as Tbl(xFlds)
 
  DECLARE @sql VARCHAR(8000), @field XML, 
    @colname VARCHAR(30), @Type VARCHAR(30), @dispname VARCHAR(255);
  
  SET @sql = 'SELECT '
 
  DECLARE tmpCursor CURSOR FOR
    SELECT Field, 't1.'+ Field.value('(/Field/@ColName)[1]', 'varchar(max)') , 
      Field.value('(/Field/@Type)[1]', 'varchar(max)'), 
      ' as ['+ isnull(Field.value('(/Field/@DisplayName)[1]', 'varchar(max)'), 
      Field.value('(/Field/@Name)[1]', 'varchar(max)')) +'], '
    FROM @XMLFields
 
  OPEN tmpCursor
  FETCH NEXT FROM tmpCursor INTO @field, @colname, @Type, @dispname
    WHILE @@FETCH_STATUS = 0
    BEGIN
      IF(@colname IS NOT NULL)
      BEGIN  
 
        SET @sql = (CASE @Type
          WHEN 'Lookup' THEN 
            @sql + '(SELECT nvarchar1 FROM UserData WHERE tp_ListId = '''+ 
            (@field.value('(/Field/@List)[1]', 'varchar(max)')) +
            ''' AND tp_ID = '+ @colname +')' + @dispname    
          
          WHEN 'User' THEN 
            @sql + '(SELECT tp_Title FROM 
            UserInfo WHERE tp_ID = '+ @colname +')' + @dispname            
          
          ELSE @sql + @colname + @dispname
          END)
  
      END
      FETCH NEXT FROM tmpCursor INTO @field, @colname, @Type, @dispname
    END
  CLOSE tmpCursor
  DEALLOCATE tmpCursor  
   
  --strip off last comma
  SET @sql = SUBSTRING( RTRIM(@sql), 1, LEN(@sql) - 1 )
  SET @sql = @sql + ' FROM UserData t1 WHERE t1.tp_ListId = '''+ 
      CAST(@ListId AS VARCHAR(50)) +''' AND t1.tp_RowOrdinal = 0'
 
  PRINT @sql
  EXEC(@sql)
END

Limitations:

  1. It doesn't get the Display Name for field references (ie not customized field)

  2. It only looks at the Title of the lookup list/user, and then only on custom look up.

Example:


MS SQL Management Studio View




SharePoint View




Keywords: Export to spreadsheet, SQL field view, AllUserData

File link