The whole is greater than... > You are not Alone
A Best Practice - What never to name a SharePoint site
This is a lighthearted post with a serious undertone.  Kind of like the Cialis commercials.  This is most definitely a SharePoint best practice.
 
What is in a name?  And how does this relate to SharePoint?
 
I am very proud of the name my parents gave me.  I inherited Peter from my Uncle who I loved.  And how long do oranizations labor over what to call their intranets, site collections, and sometimes even sub sites? 
 
Think about it, how many times have we developers labored over what to call variables in our programs.  I don't think I am dissing anyone reading this (all two of us) when I say we are not the most creative lot when it comes to naming conventions.
 
So the heart of my best practice:  The other day I was doing some testing at a client and was working with their collaboration engineer.  A fantastic lady with a "different" sense of humor.  Kind of like mine.
 
I told her I needed a site collection for testing and to ensure that I am a just a visitor (I can't create one at this enterprise client but she can).  She very creatively named the site after my first name.  No problem.
 
A few hours later while testing I realized I needed contributor rights.  So I went up to her desk to ensure it got done quickly rather than IM.
 
She quickly went to site actions, showing me how quick she was going to do this for me, then site settings, and then people and groups....are you following...
 
Looking at the quick launch, she turned beet red and then started laughing.  Quickly seeing what she was laughing about, embarrassed and deflated (sorry about my vernacular choice here), I walked away.
 
Moral of the story:  Never, Ever, name a site Peter.
FBA Anonymous Issue – Part II

After figuring out Part I, I felt pretty good and maybe a tad overconfident. I told my customer we were now ready to release the information to the world.

A few days later a small test group was doing some testing and the results put me back into place.

Once again, Public users could get to security trimmed data! How?????

I went immediately in our external site and check security, everything looked good.

I then went to check the Anonymous setting I told you about in Part I.

clip_image002

When I got out there, the "Settings" was missing. Gone. Not there. I checked on several lists, libraries, and even subsites. It was gone. How?

Let me explain our environment. We have the inside, which all users are NTLM authenticated. We have the external site, to which data is content deployed, and this is Anonymous and FBA. We have a group which manages architecture – Central Administration. Then there is a group for development and site creation / delivery. That is me. I do not have access to Central Administration.

I went to our Architecture group and we looked at the setting for FBA Externally. It looked good.  Below is a sample of the screen we looked at.

clip_image004

Enable anonymous access was checked.

Then we looked at the Windows side of the equation:

The Enable anonymous access was NOT checked. Someone had unchecked it thinking logically. This was the NTLM side and we don't need anonymous access. But this was the external box.

We did a quick test, enabling the checkbox under Windows. The Anonymous settings was back!

Moral of the story: On an external box with FBA configured, enable the checkbox for anonymous under the windows screen. It does matter.

FBA Anonymous Issue – Part 1

Problem

 

At my current client we have an internal site and a publicly available external site.  On our external site we also have FBA enabled and configured so that some of the content is locked down and only available through FBA Authentication.

 

We are not deploying security through content deployment, so I explicitly set security on the external site.  We use the CQWP to rollup the information to landing pages so that the Public will see only a subset of what a FBA authenticated user will see.

 

Security trimming is working fine externally.  However, in our testing our users kept getting to the content.  It wasn't secure. 

 

Security was set up, shouldn't that protect our information????  The CQWP was working and I could see security trimming working.  I checked security and it was set up correctly.   What was I missing?  Very frustrating when you believe it will work out of the box.

 

Resolution

 

What it turned out to be was a setting that is enabled by default when Anonymous is enabled.  On every list, library, and subsite, there is a setting called Anonymous Access.  For lists and libraries, when you navigate to the object, click permissions on object and you will get the following screen:

 

 

The next screen presented is for subsites:

 

Or the following for lists:

 

 

Either way, the default is Enabled for Anonymous users to view the site.

 

The key here is:  This setting supersedes the security you put on the list, library, or subsite.  However it does not supersede item level security.

 

Stayed tuned for Part II – Frustration Mounts

 

 

How to Create Article Comments
Check out this post from me on Microsoft's Get the Point website.
 
 
 
JQuery and the Content Editor Web Part

My name is Peter Serzo and I work as a consultant for Trillium Teamologies in Michigan.  Two weeks ago I did a session on the Content Editor Web Part (CEWP) and JQuery at the SharePoint Best Practices Conference in San Diego.  I have become a big fan of JQuery after seeing the potential of this technology. 

There are two ways to approach the technology:  Information Worker or Developer.  I chose IW for the BP Conference because I wanted to introduce the topic and show folks what they can do with JQuery out of the box.  As you will see from this post you can write very little code and get robust functionality.

Two items to know about JQuery right from the start:  It is open source JavaScript and it is the JavaScript library that Microsoft supports now and going into the future.  What this means to us is that there is a vibrant community working on solutions that you can use in SharePoint today and if there is any issue with this code, even though it is open source and therefore written by someone else, Microsoft will support it.  That is a powerful combination and adds another critical resource to your SharePoint solutions.

Be Proactive - Top 5 reasons to use JQuery

5.  Community – JQuery has a large community that is growing – blog.jquery.com.  JQuery is three years old and just between December 2008 and Jan 2009 (when version 1.3 was released) there has been a 30% uptick in daily visitors to the site and nearly one million downloads of this release (Google).  

4.  Documentation – Excellent and extensive documentation – docs.jquery.com.  Some of the references you can find are:  JQuery introduction, API Reference, how to author plugins, and how to get support from the JQuery team.

3.  Lightweight JavaScript – the production library for JQuery is approximately 18kb.  Currently it is at version 1.3.1 and is tended to by a team of world class programmers headed by the creator John Resig.  The lightweight size makes it very efficient.

2.  Plugin Support – plugins.jquery.com.  This is where I am very excited about the potential that JQuery brings to the SharePoint table.  Imagine web parts built by third party vendors (stay with me) and Microsoft supports all their code.  I know, it sounds impossible but this is very close to what plugins give to your installations.  Plugins encompass everything from image rotators to menus, to forms, the list goes on and on.

1.  Microsoft Support – Refer to Scott Gunthrie’s blog 9/28/2008.  I never said support was free and how far will Microsoft go to support plugins is a question without an answer right now.  However, Visual Studio 2010 will have JQuery support integrated into the product.  If you wish to do this with VS 2008, Scott has a blog on how to do this.  The important part of movement is that Microsoft is further embracing open source and not going off and creating their own JavaScript library.  Perusing John Resig’s blog, I noticed that he is beefing up JQuery to support IE 8. 

Now that we know why to use it, let’s see how to use it.

First things First

In order to utilize JQuery you are going to have to download the latest version of the library off the JQuery site (http://docs.jquery.com/Downloading_jQuery).  You can also get it off Google.

We now have to load it somewhere for our CEWP to reference.  We could debate the merits of putting a reference in the 12 hive or a document library.   I am a proponent of the document library approach for a few reasons.  The biggest two reasons are ‘store’ and maintainability.  By using a document library with versioning on I know that I can have multiple versions of the JQuery library.  The JQuery team is constantly updating their library.  Of course when I load a new version of this library I have to regression test.  Rolling back is simple and painless if there are any issues.  The library approach also lends itself to maintainability.  I can have multiple versions of the code in one place, be assured that it is saved in my database, and take comfort in the knowledge that when I perform an update from Microsoft, my libraries will not be overwritten. 

I set up one library with two folders at the site collection level.  The library is called Javascript and the two folders are jquery and utilities.  The jquery folder contains the download of the compressed JQuery library.  The utilities folder contains any plugins that are used on the site or utilities that you write.

One other item, rename the downloaded jquery library from jquery-1.3.1.min.js (or whatever your version says) to jquery.js.  Save the versioning information in metadata, but now your references are much easier to write and understand.

Now that we have the plumbing in place let’s see how SharePoint and JQuery work together with a plugin.

Synergize

1.        For the purposes of this posting I am choosing the lightBox plugin found here (http://leandrovieira.com/projects/jquery/lightbox/).  LightBox is cool web 2.0 looking technology that many have been exposed to so it provides credence to our jquery example.

Extract the zip file and put the contents into the utilities folder as shown below:

Being really efficient, you can create a metadata tag called Plugin and designate this as lightBox.  Also, notice that there are two JavaScript files – one is compressed, the other is not.  Keeping the non-compressed file makes debugging (if you have to do it) much easier.

2.       Have several pictures you can reference in a picture gallery on your site.

3.       Insert the CEWP onto your page.

4.       Click on Source Editor and create the HTML (view source from where this was downloaded).  Be sure to reference the following correctly for your installation:

    <script type="text/javascript" src="http://portal.moss.local/javascript/jquery/jquery.js"></script>

    <script type="text/javascript" src="http://portal.moss.local/javascript/utilities/jquery.lightbox-0.5.js"></script>

    <link rel="stylesheet" type="text/css" href="http://portal.moss.local/javascript/utilities/jquery.lightbox-0.5.css" media="screen" />

5.       The last item I want to point out in the HTML is the secret sauce:

    <script type="text/javascript">

                $(function() {$('#gallery a').lightBox({fixedNavigation:true});});

    </script>

 

One line of jquery code to get the example working!

 

Hovering over the picture, choose one and the following picture takes focus:

 

If you take a look at the rest of the HTML, it can also be streamlined.  For example, there is still CSS and explicit references to the pictures.  This can be extracted to make our CEWP even leaner.  With SharePoint and page downloads, it is all about efficiency.

You now have a working example of JQuery.

 

Win-Win

I want to leave you with a few things to think about as you finish reading this.  Begin with Plugins.  As you have seen it is quick and somewhat painless to get up and running.

JQuery and SharePoint are a doable sell to your clients or boss.  I don’t want to use the term easy because when approaching open source and browsers management gets understandably queasy.  However, when you explain the benefits using some of the items I have pointed out, most clients will see the return.   I have even framed this post with Stephen Covey references.   Use them!

JQuery is NOT contained to the CEWP.  This is where I started.  You can use it all over your site.  To see more examples of JQuery, please check out my site (which contains my blog) at www.sharepointusermagic.com.  On the home page I have a JQuery image rotator.  How many times has your boss or client asked for that!  I implemented it with a plugin and less than 5 lines of JQuery code. 

In the coming weeks, I will be doing more blog posts on this subject in three areas:  IW and plugins, show you JQuery how’s and why’s on aspx pages and then I will go deeper into the developer side of the equation.

Finally, a big thank you to Joel for coming to my session in sunny SD and affording me the opportunity to guest on his blog (by the way he gives a great Keynote).

 

San Diego in Feb 09 - SharePoint Best Practice Conference

Being in this business 20+ years, I can say I have attended a few conferences.  This conference is truly something special.  From the accommodations to the speakers, to the attendees, to the topic.  SharePoint Best Practices.

We go to a lot of conferences where we are shown how to do something.  An extremely smart person sits on stage, dazzles us with his/her technical brilliance, and we go wow.  How do we replicate that?  We forget the what’s and why’s instead taken by the how of technology.  The speaker becomes a type of ‘god’ that we all look up to and try to emulate when we get home.

Not this conference.  This conference is about clarity, direction, and confidence.  The speakers here are not on display to write code, but to show why they are doing it, how they come about their decisions, and engage the audience.  Every speaker is approachable and wants to help.  With a track for every discipline, it is refreshing.

I attended as many sessions as I could but I would like to point out three:

1.       Joel Oleson’s Keynote.  He kicked off the conference on the right note.  Engaging and entertaining, Joel openly shared his experiences with SharePoint.  It is clear to see that he is a thinker on the product as a platform, the people who are using it, and the folks who are supporting it.  His blog reflects this and it is clear to see his evolution in this space.  As the product expands and matures, so must we.  His keynote reflected this and set the tone.

2.       Ruven Gotz.  Ruven did an amazing session on mind mapping for Information Architects.  It is always a pleasure to watch someone who knows what they are doing.  What I loved is that he spoke about his topic without one powerpoint slide.  Very Effective!  He succeeded in getting his point across.

3.       Paul Culmsee.  There are not many times in a work life when one of those aha moments come and you meet someone who is of like mind.  Paul is that someone.  Paul is pushing the envelope of SharePoint and how to make it effective for all.  He did an extremely effective session called ‘How to avoid SharePoint becoming a wicked problem’.  After explaining the term wicked in context Paul showed us how to utilize a tool to shape our SharePoint deployments before it becomes a wicked problem.  His references to information outside of the SharePoint world was nicely woven into the fabric of MOSS 2007.  The effect is to illuminate how to plan your deployments properly.

I can’t say it enough, SharePoint will succeed long term because it is a platform.  As such, we need to think about the product in a broader sense.  Terms like IBIS, mind mapping, Agile, the stuff Joel writes about, the way Bogue, Bleeker, Curry, and English speak about topics. 

I am being grossly unfair to the many presenters.  These were just a few of the sessions and folks that touched me.

Audit log Security Settings
The audit log security settings report that is run from site settings->Audit Reports->Security Settings presents an xml file that can be output into excel.  The information in the report is cryptic in a couple of couple of columns - SiteID and Event Data. 
 
 

Resolution(s):

This information is pulled from the Content DB.

Column: Event Data

Purpose:  EventData shows who the action was taken upon (user) and what group the user belonged to.

The user is found in the UserInfo table.  This field is tp_ID.

The groupid is found in the Groups table.  The field is ID.

Column: SiteID

Purpose:  This is the site collection id.

The SiteID is found in the Web table.  The field is SiteID.

Immediate Alerts
I was putting together a demo for a customer and a critical key to this presentation was the ability to see alert notification in the email of several users.
 
After running through my demo a few times, the frequency with which the email was getting the alerts was embarassingly slow.  My presentation was choppy.
 
I had Tony Woolf check out my exchange server and a thanks goes out to him for working this through.
 
The timer job: job-immediate-alerts
 
Use the following command to speed up the job:
 
stsadm.exe -o setproperty -url http://yourserver -pn job-immediate-alerts -pv "every 1 minutes"
 
The presentation was saved and flowed flawlessly.
 
 
Detroit SharePoint User Group
Tomorrow night is the first meeting of the new Detroit SharePoint User Group.  I am pretty excited and wanted to document some of the challenges (great word, my bosses have used this since I started working) I have encountered and how I currently have met them.
 
1.  A User Group is a great idea but a lot of work.  Not that I didn't think it was a lot of work but it has eaten up more of my time than I thought.  Things such as:
    • Getting sponsors
    • Putting together the flyers
    • Planning the event and getting a speaker
    • Location
    • Postcards
    • Getting people to register and come
    • Putting together the agenda
    • Getting Microsoft on board

2.  Just because it is a Micrososft User group DON'T assume their participation.  This has been an uphill battle.  I believe they are about to come on board because of the customer list I have assembled.  At first they were hot to trot and then their interest waned - no returned phone calls or emails.  It will happen, they just have to see the commitment is real.

3.  Network, Network, Network.  From sponsors to people coming, to the how-to set up a user group, network.  People will be interested, you need to network.  Make phone calls, visit companies, talk it up with customers.  This is what makes it successful.

4.  Be committed to the idea.  I could have said - believe in the product.  I do believe in the SharePoint product.  It is tremendous out of the box, it is a great infrastructure tool, it can bring an organization together - streamline, and bring a measurable ROI.  If you have this level of passion, you will see the idea through fruition.

5.  Be ready to spend some of your own money.  I know, this is not popular - but John Grisham sold his own books out of the back of his car before he became popular.  So it is when starting a user group.  I have paid for mailings, flyers, the website, not to mention my time.

6.  Participate in other user groups.  When embarking on this endeavor I started attending the SQL Group, the ASP.Net group and

These are some of my thoughts.  I am interested to hear from others who have done the same thing or who have feedback.

The customer that brings you down
Thankfully, only a few times in my career have I had a customer who actually made me feel down.  Really down.  Unfortunately, that happened recently. 
 
In order to cope with that, I reviewed my career and went back to the beginning...
 
Many years ago I was an Oldsmobile Customer Service Rep working for EDS.  My first job out of college.
 
The job consisted of taking calls from angry Oldsmobile owners and trying to make them a satisfied customer.  This is akin to blocking Brian Urlacher and sending him back to the line with a smile on his face.  I won't touch that.
 
There is a lifecycle of emotions and growth you have to work in this type of job.  At any point there are divergent paths one could take.  Thankfully, I was in the job for only 1.5 years.
 
In hindsight, this job prepared me to be a consultant.  When I started the job, I was just out of college extremely excited to be working for EDS.  I cared and wanted to make a difference for these owners. 
 
A few months in of taking upwards of 30 calls a day and I was miserable.  The customers were miserable.  A few more months and I had build up my tolerance and learned how to control my voice and emotions. I didn't care anymore.  Take a call and move on.
 
They weren't attacking me personally - sometimes.  Toward the end I had learned to care again.  I learned I could help the majority of customer and then there were a few that I could only help so much. 
 
I saw that customers, our clients, have to want to help themselves.
 
It was my job on the other end of that phone to persuade the client that they were empowered to resolve the situation.  I supplied the tools.  Granted, sometime the tool was money and that is all empowering.
 
I still find that my job today as I meet a great many persons and personalities.  It is about empowering the customer and showing them how to use the tools I support.  When they feel that I have done that, they are satisfied.
 
Sometimes, you have that one customer that does not want to hear you, to listen, to agree, to learn.  That is when you have to look within yourself and question, "Did I empower them?"  "Did I listen?"  "Did I give it 100%?"
 
If you can answer yes to these and other questions, you can look in the mirror and feel good about the job you have done.
 
On the phone, this consisted of letting the customer know that you appreciated them contacting Oldsmobile, letting them know what you did try to do for them, and leaving the door open.  Professional, calm, and confident.
 
In closing, if you are feeling down, look in that mirror and ask yourself the hard questions.  Answer them, if even only to yourself, and be confident.  That customer who LOVES the work you do is probably the next one.