Paul's profilePaul Galvin's SharePoint...BlogListsSkyDrive Tools Help

Blog


    November 18

    SharePoint Shop Talk Thursday 11/19, 12:30PM to 1:30 PM

    SharePoint Shop Talk continues with our 14th session tomorrow at 12:30PM EDT.

    This is a free ranging and open Q&A session free to everyone that wants to attend.  Dial in and ask questions or start a discussion on a topic of your choosing.

    This week we’re definitely going to talk about:

    • Best practices around search scopes, crawling content, schedules, etc.
    • Data view web part and “current user” difficulties (DVWP is a weekly favorite).
    • Someone wants to talk about “Why pay thousands for a marketing list” from a Shop Talk newcomer, “185165@video.wokr13.com”.  This one should be interesting.  Very interesting.

    I’ll also be performing a SharePoint magic trick you won’t want to miss!

    If you have any questions, fire them off to questions@sharepointshoptalk.com, leave a comment or buzz me on twitter (@pagalvin).

    Register here: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=dlnf750v8cqsstzx

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    November 16

    Announcing the Microsoft Enterprise Search User Group

    I’m very excited to announce that Natalya Voskresenskaya, my fellow SharePoint MVP and partner (with far less help from me than she deserved) is launching a new user group devoted to enterprise search based on Microsoft technology.  As a practical matter, this boils down to SP 2010 search and a lot of talk about FAST, especially in our first session.  Natalya and I have written a lot about FAST over the last year on our blogs (Natalya has more and better stuff than I!).

    Our first meeting is coming up in just a few weeks in New York at Microsoft’s newly renovated offices on 6th near Rock Center.  If you’re in New York on 12/9, you have no excuse not to make an appearance.  Likewise for you Jersey people.  Connecticut people can stay home (just kidding!). 

    NY/NJ/CT people should skip this paragraph.  We also plan to record the session and run a live web session so if you live outside the tri-state area, you should be able to tune in. 

    I’ll blog about this some more as this most auspicious day approaches but register now.  After you register, the long wait begins.  During that time, clear your schedule, break the news to your family and alert the media because you won’t want to miss Nate Treloar launch our group to the moon and beyond :)

    Find out more from our official site: http://www.sharepointgroups.org/enterprisesearch/default.aspx.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    November 11

    SharePoint Shop Talk Tomorrow (11/12) from 12:30PM to 1:3PM EDT

    The next SharePoint Shop Talk takes place tomorrow at 12:30 PM EDT.

    This is a free event to anyone that has a telephone.  A panel of SharePoint pro’s take questions and do their best to provide useful guidance and advice.  We regularly hijack audience members and make them answer questions and try to have a good time.

    Send your questions or topics to questions@sharepointshoptalk.com.

    Register here: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=sx9p9r6prwxp5mk9

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    November 04

    SharePoint Shop Talk for Thursday 11/05/09 @ 12:30PM EDT

    The next edition of SharePoint Shop Talk takes place Thursday, 11/05/09 at 12:30 PM EDT.

    Register here: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=gr5l4q66rv3f4xwj

    SharePoint Shop Talk is an open phone line, open Q&A to talk about all things SharePoint.

    If you have questions or topics that you’d like the panel to discuss, send them by email to questions@sharepointshoptalk.com or twitter them to me (pagalvin).

    I’m badly rushed for time this week, so I’ll leave it at that.  I usually like to preview some of the already-emailed questions.  This week, you’ll have to dial in to hear about it :)

    We hope to see you on line.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    November 03

    Comparing Dates in a Data View Web Part to Build a WSS KPI

    Note: this was first posted at www.endusersharepoint.com here: http://www.endusersharepoint.com/2009/11/02/comparing-dates-in-a-data-view-web-part-to-build-a-wss-kpi-in-sharepoint/.

    This is yet another blog post on comparing dates in XSL in a data view web part in SharePoint.

    This is my scenario:

    • I have a custom list.
    • The business purpose of the list is to support the idea of a new employee and his/her tasks to be completed within 7 days of starting the job.
    • They are in a “warning zone” after 4 days if they have not completed these tasks.
    • I want to create a simple dashboard that shows green when they have either completed the task or if they have more than 4 days to complete it.
    • I want the dashboard to show yellow if they are in the warning zone.
    • I want to to show red if they have not completed the task after the due date.

    I borrowed from this article at Marc Anderson’s blog (http://mdasblog.wordpress.com/2008/02/19/comparing-dates-in-sharepoint-using-xsl/) to get the comparison logic and this article at www.endusersharepoint.com for the basic ideas behind the dashboard (http://www.endusersharepoint.com/2008/12/09/visual-indicators-for-the-masses-kpis-in-wss/) written by Toni Frankola.

    You should read the supporting blogs, but the implementation goes like this:

    1. Create a content type (columns + CT)
    2. Create a custom list and associate it with the content type.
    3. Create a web part page.
    4. Add the custom list to the web part page.
    5. Open up the page in SPD.
    6. Convert the list to a DVWP.
    7. Modify the XSL to generate the dashboard bits.

    I have two dates: a warning date and a due date.  To compare the dates, my xsl does the following:

     
      <xsl:choose>
      
        <!-- When both handbook and policy are signed, we are green regardless of dates. -->
        <xsl:when test="@Employee_x0020_Handbook_x003F_ = 1 and @Security_x0020_Policies = 1">
          <img src="/_layouts/images/KPIDefault-0.GIF" alt="No problems"/>
           <a href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID={@ID}&amp;Source=/HumanResources/Shared Documents/New Hire Dashboard.aspx"> [Edit]</a>
        </xsl:when>
     
        <!-- Show amber indicator if we're past the warning date. -->
        <xsl:when test="ddwrt:FormatDateTime(string(ddwrt:Today()), 1033, 'yyyyMMdd') &gt;= ddwrt:FormatDateTime(string(@TaskDueDate), 1033, 'yyyyMMdd')">
          <img src="/_layouts/images/KPIDefault-2.GIF" alt="Overdue"/>
            <a style="border: 0px" href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID={@ID}&amp;Source=/HumanResources/Shared Documents/New Hire Dashboard.aspx"> [Edit]</a>
        </xsl:when>
     
        <!-- Show red indicator if we're passed the due date. -->
        <xsl:when test="ddwrt:FormatDateTime(string(ddwrt:Today()), 1033, 'yyyyMMdd') &gt;= ddwrt:FormatDateTime(string(@Warning_x0020_Date), 1033, 'yyyyMMdd')">
          <img src="/_layouts/images/KPIDefault-1.GIF" alt="Warning"/>        
          <a href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID={@ID}&amp;Source=/HumanResources/Shared Documents/New Hire Dashboard.aspx"> [Edit]</a>
        </xsl:when>
     
        <!-- If we get here, we're earlier than the warning date, so we're green. -->
        <xsl:otherwise>
          <img src="/_layouts/images/KPIDefault-0.GIF" alt="No problems"/>
           <a href="/HumanResources/Lists/New Employee Checklist/EditForm.aspx?ID={@ID}&amp;Source=/HumanResources/Shared Documents/New Hire Dashboard.aspx"> [Edit]</a>
        </xsl:otherwise>
      
      </xsl:choose>

     

    A few key points from above:

    • I tried to compare dates without using the ddwrt functionality and got nowhere.  I still don’t understand that.  They dates displayed correctly, but both “>” and “<” comparisons always failed.  In the end, ddwrt came to my rescue (thanks, again, Marc).
    • I’m also displaying an [Edit] link to the item.  I mainly did this so that I could easily test this out.  The link itself may be useful to someone trying to figure it out.
    • This is implemented in SharePoint online and works nicely.
    • The images I reference in the _layouts directory (/_layouts/images/KPI…) are available out of the box in my environment so they are probably available for you as well.

    Here’s a screen shot of what it looks like for me:

    image

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    October 28

    In Praise of jQuery Enhanced Search-As-You-Type (by Jan Tielens)

    I’m working on a BPOS demo (soon to be available up on Microsoft’s site) and I wanted to add a little pizzazz.  I’ve known about Jan Tielen’s efforts for quite a while and I thought it would be a great technique to add to the demo, so I did.  You can read about it here: http://weblogs.asp.net/jan/archive/2009/07/02/sharepoint-search-as-you-type-with-jquery.aspx.  It’s so simple to use it should probably be a crime (and maybe is somewhere).

    I add just two points to what he already created / wrote about:

    1. This does, in fact, work in a BPOS (SharePoint online) environment.
    2. To make it work without an annoying popup message prefix the reference to the jquery library with https instead of http, as in:
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

     

    Jan points out that you should probably move the library itself to your site.  Feeling a little lazy today, I decided to blog about it instead :)

    </end>

    This is another post in my on-going series on how to use jQuery with SharePoint.
    If you want to learn more about jQuery, I highly recommend: jQuery in Action by Bear Bibeault and Yehuda Katz.

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:

    October 27

    SharePoint Shop Talk Thursday 10/29 at 12:30 PM EDT

    The next SharePoint Shop Talk takes place this Thursday at 12:30PM EDT.

    We’ve taken two weeks off (due to SharePoint Conference last week) and as a result, we have a number of questions in queue, not to mention all kinds of cool stuff to talk about regarding SharePoint 2010.  All of the panel members attended SPC, so bring your SP 2010 questions to the call or email them to questions@sharepointshoptalk.com.

    Aside from a good part of the call set aside to talk about some SP 2010 goodness, we’ll also discuss:

    • Why SharePoint shows different navigation options under site settings (this varies based on features and site configuration)
    • Modifying versions.aspx – problems, difficulties doing so (I”m not surprised :) ).
    • Embedding RSS feeds into a site when the source is authenticated.
    • Using stsadm to manage logging.

    Register here: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=p663256djrrflfdw

    As usual, send any questions or discussion topics to questions@sharepointshoptalk.com, email me directly or twitter to @pagalvin.

    We hope to see you there!

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:

    Quick Hit: Reading InfoPath XML Directly From an SPListItem in SharePoint

    I’m been working on a project where I need to extract attachments from an InfoPath form.  There are some good resources for parsing InfoPath forms (which are just XML files, so it’s actually quite easy). 

    While I was building up the project, I started by downloading an InfoPath form and saving it to my local hard drive.  My c# code was reading directly from that instance.  However, the InfoPath forms are really living inside a SharePoint forms library.  I did a little half hearted searching to find out how to read it directly from the library and almost gave up, in which case I would have saved the form to a local temp directory and read it from there.  However, there’s no need to go through those hoops as you can read it directly from the library.  This little snippet shows how:

    /// Class definition stuff here, including:
    private SPFile mySharePointFile; /* Part of an SPList */
    // More code goes here and inside a method of the class we have:
    XmlTextReader textReader;
    textReader = new XmlTextReader(mySharePointFile.OpenBinaryStream());
    
    textReader.WhitespaceHandling = WhitespaceHandling.None;
    
    textReader.Read();
    
    // If the node has value
    
    while (textReader.Read())
    {
    
      … and so on and so forth …

     

    They key bit above is that we can read the InfoPath directly via the OpenBinaryStream() method call on the SPFile as a parameter to the constructor on XmlTextReader.  It works great.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:

    Quick and Easy: Send Email Using Gmail SMTP Server in .NET C#

    This isn’t exactly a new topic, but when I needed to do it, I found a lot of “why won’t this work for me” and not too many direct answers.  I hope someone finds this useful.

    The following bit of code will send an email using my own gmail account to do it, including attachments:

    using System.Net.Mail;
    using System.Net;
    NetworkCredential loginInfo = new NetworkCredential("[My Gmail ID]", "[My Gmail Password]");
    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("[M Gmail Id]@gmail.com");
    msg.To.Add(new MailAddress("paul.galvin@arcovis.com"));
    msg.Subject = "Test infopath dev subject";
    msg.Body = "<html><body><strong>A strong message.</strong></body></html>";
    msg.IsBodyHtml = true;
    
    foreach (string aFile in NIPFD.GetAttachmentNamesAndLocations())
    {
        msg.Attachments.Add(new Attachment(aFile));
    } // Adding attachments.
    
    SmtpClient client = new SmtpClient("smtp.gmail.com");
    client.EnableSsl = true;
    client.UseDefaultCredentials = false;
    client.Credentials = loginInfo;
    client.Port = 587;
    client.EnableSsl = true;
    client.Send(msg);

     

    A few key bits that slowed me down and other observations / notes:

    • The first line that creates the loginInfo object needs to use the gmail ID stripped of “@gmail.com”.  So, if my gmail email address is “sharepoint@gmail.com” and my password is “xyzzy” then the line would look like:

    NetworkCredential loginInfo = new NetworkCredential("sharepoint", "xyzzy");

    • My gmail account is set up to use SSL and that wasn’t a problem.
    • There is some conflicting information out there on what port to use.  I used port 587 and it worked fine for me.
    • In my case, I also needed to send attachments.  That NIPFD object has a method that knows where my attachments are.  It’s returning a fully path (e.g. “c:\temp\attachment1.jpg”.  In my test, I had two attachments and they both worked fine.

    I used visual studio 2008 to write this code.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags: ,,,
    October 20

    SharePoint Conference 2009 – Get Your Real Time Raw Data From Twitter

    I expect that nearly everyone knows this anyway, but I thought I’d toss out a quick note that there’s a tremendous amount of very interesting information available via twitter.  The hash tag #SPC09 seems to be the most popular.  Like always, there’s a lot of silliness and “in” jokes, but if you can get past that, check it out.  I do my best to respond to comments or questions directed to me and I know that a lot of others do as well, so it’s not just a one-way flow of information.

    New sessions start in just under two hours and continue up until about 3pm EDT this Thursday.  It will start to pick up then.

    Check out the twitter feed here: http://twitter.com/#search?q=%23spc09

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    October 16

    Programmatically Extracting Attachments From InfoPath Forms (Including Their Names!)

    I have an expense entry solution for a client that leverages InfoPath and workflow.  At one point during the approval process, I need to generate an email that has all of that good InfoPath data as well as the attachments themselves so that (sigh) someone can take that data and manually re-key it into an Oracle database application.

    It’s not very difficult to get at or parse the InfoPath form.  I didn’t know how to handle the attachments, however.  After an hour or two of poking around the Internets (an eternity!) I found this article: http://support.microsoft.com/kb/892730

    It provide some handy code to extract the attachment from a node in the form.  (You still need to find the node and all that, but that’s just XML parsing).

    I know that the attachment is base64-encoded and I originally went down the path of just extracting the the base64 data, decoding it and saving it.  However, I quickly realized I didn’t know how to get the file name itself until I found the aforementioned article.

    I had actually found that quite early, but I was put off by its split personality. On the one hand, the article *says* it’s good for InfoPath 2007.  Yet, the code and instructions are all about Visual Studio 2003 and references to InfoPath 2003.

    Bottom line, the code that article provided is working well for me (so far).  I can get my InfoPath form, I can parse it, I can find and decode the attachment and I know its name.  What more can one ask of one’s life?

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags: ,,

    If you’re worried that your SharePoint environment may be a tad unhealthy, let me help you fix that with a health check.

    October 08

    SharePoint Shop Talk Recap for 10-08-2009

    Today’s SharePoint Shop Talk covered its usual wide range of topics:

    • We discussed the issues around opening up parts of a SharePoint site collection to your trading partners.  It’s not the most complicated thing in the world, but when you start talking about out loud, you realize there are a lot of small individual things that need to be done to do this correctly.  You have to consider the firewall, licensing (your intranet SharePoint license may not be, and probably won’t be, sufficient), SharePoint configuration (AAM, extending web applications to zones that probably have HTTPS enabled), etc.  If anyone has a checklist of what to do and the sequence, I’d love to see it in comments.  This question wins the “Most Discussed Question” aware of the year (so far).
    • I got to ask a question about the image library functionality that generates those thumb nail images.  I speculated that an event receiver on the image library is generating the thumb nail.  I’m probably way off base, but it does seem like there’s an entirely separate image on the web server for the thumb nail itself.  Vamshi, a SharePoint Shop Talk regular, points out this blog entry: http://pathtosharepoint.wordpress.com/2009/08/23/picture-libraries-take-advantage-of-web-friendly-formats/.  That’s a pretty interesting post about images in SharePoint if you’re interested in it.
    • We discussed custom edit forms (that you create via SPD) and the fact that you lose the attachment functionality when you do that.  Laura Rogers has blogged on that subject here: http://sharepoint911.com/blogs/laura/archive/2009/09/10/fix-for-the-custom-form-attachments-issue.aspx

    This week, we introduced a new feature where we spent about 10 minutes demonstrating an interesting tip/trick in a SharePoint environment.  This week, we showed how to added a content editor web part (and actually any web part) to a newitem.aspx page.  In this case, the objective was to show some extensive online help for that newitem.aspx page.  This is also one of the usual starting points for integrating jQuery into your environment.  Next week, we do plan to show a jQuery tip/trick.  We hope to see you there. 

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    October 07

    SharePoint Shop Talk 10/08/08 at 12:30 PM EDT

    We’re hosting our next weekly SharePoint Shop Talk session tomorrow at 12:30 PM EDT.

    This is an open Q&A and general kibitzing session on all topics SharePoint related. 

    You can read various recaps of prior sessions here to get a sense of what we do on these calls here: http://paulgalvin.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3dPublic%2520Speaking

    Registration is up and ready right here: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=0z40kg9nb0t0842f

    Twitter your questions to me, @pagalvin.

    Email them to questions@sharepointshoptalk.com or just show up on the line and ask them out loud. 

    We hope to see you then!

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    October 06

    To Blog or Not to Blog – That is the Question (to Blog About)

    Note: This was originally posted to www.endusersharepoint.com.

    A few weeks ago I had the chance to speak at SharePoint Saturday in New York.  Once again, a tremendous event.   This time, I spoke about “learning SharePoint” – a very broad topic.  During the presentation (which you can get here), I talked about a variety of techniques for “learning” SharePoint, including stuff like book learning, class room training, creating your own VM and most importantly (to me), community participation.  One way to participate in the SharePoint community is via blogging.  Someone asked me about blogging in particular and asked my opinion on a few concerns he had that I’ve heard others mention before.  It’s been itching at the back of my head for a few weeks so in my usual fashion, I’m scratching that itch by blogging about it.

    Some people seem to think that there are so many quality bloggers out there on the scene today and that so many quality blog entries have been written that in a sense, there’s nothing new to write about.  Or, the “new” thing is so narrowly focused that it’s not going to be interesting to anyone.  I don’t agree with those sentiments or the underlying assumption about them.

    For starters, if you’re blogging because it’s part of your personal attempt at learning SharePoint well, it’s really irrelevant if someone has written on your topic or not.  One of the drivers behind community participation, whether it’s for personal learning or not, is that you need to get it right.  No one wants to put up some weak blog entry and look silly in front of the world.  In the course of getting it right, you’re going to think the subject through more carefully, etc.  Thus, you’re thinking, studying and considering this topic from all kinds of angles, left to right, up to down, inside and out (or at least you should be).  That’s a very valuable exercise.  In fact, it’s almost beside the point of pushing the “post” button by the time you finish writing it since you’ve already derived much of the benefit by now.  Of course, you do want to push the post button anyway for a variety of reasons, but I digress.  The bottom line is that blogging is a valuable learning exercise in and of itself, period.

    I also reject the “it’s already been done” argument.  So what if it was?  The terrible consequence is that people who are looking up your topic via bing will now find two or five or a dozen articles.  Who cares?  I always prefer to find several articles on the same topic when I go searching the tubes for stuff.   Different points of view, different writing styles, different approaches to the same problem – they all help me understand what I need.  In my opinion, the community is no where close to reaching a saturation point on good quality blog articles on any topic in the SharePoint world.

    So, blog away!  You won’t hear me complaining about it.  I guarantee it :)

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags: ,
    October 05

    Don’t Be a Bull in the China Shop

    A Brief History of SharePoint (From a Relative Newcomer’s Perspective)

    Note: This article was originally posted to www.endusersharepoint.com.  I forgot to post it to my own blog :)

    SharePoint has evolved a great deal since its early days as sort of an incubation technology at Microsoft --it’s evolved almost like a horror movie, where the mad scientist’s creation takes on a life of its own, breaking free of its creator’s expectations and rules.  The technical evolution is obvious – the WSS 3.0 object model is richer and more complex than WSS 2.0, which was itself an improvement over earlier versions.  The next version will no doubt show tremendous improvement over 3.0.  From an End User’s perspective, however, SharePoint’s evolution is even more significant.

    In the early days, SharePoint didn’t offer much to End Users.  They would have their usual functionality requirements, work with IT to define them well and implement a solution.  IT would use SharePoint to solve the problem.  The product wasn’t very accessible to End Users.  I’ve thought threw a few analogies, but I decided to stick Venn Diagrams to show what I mean.  When Microsoft first released SharePoint to the world as a commercial offering, it followed a relatively traditional pattern of End User <-> IT relationship.  A lot of End Users, communicating and working with a very small number of It people to deliver solutions that solve business problems:

    image

    The overall problem domain for which SharePoint is a suitable delivery platform is small (especially compared to today’s SharePoint.  End Users and IT worked in a more classic arrangement with IT: define requirements to IT, wait for IT do their work behind the curtain and take delivery of the final product.

    As SharePoint evolved to the 2.0 world (WSS 2.0 and SharePoint Portal Server), several things happened.  First, the “problem domain” increased in size.  By problem domain, I mean the kinds of business problems for which SharePoint could be a viable solution.  For instance, you wouldn’t think too hard about implementing a serious search solution in a SharePoint environment until SPS (and even then, it wasn’t as good as it needed to be).  At the same time, End Users have an unprecedented ability to not only define, but also implement their own solutions with little or no IT support. 

    The 3.0 platform (WSS and MOSS) maintained and increased that momentum.  The problem domain is enormous as compared to the 2.0 platform.  Virtually every department in a company, ranging from manufacturing health and safety departments to marketing, from sales to quality control – they can find a good use for SharePoint (and it’s not a case of mashing a round peg into a square hole).  At the same time, the platform empowers even more End Users to implement their own business solutions.  I try to capture that with this diagram:

    image

    This has proven to be both a potent and frustrating mixture.  The 3.0 platform turns previously stable roles on their heads.  Suddenly, End Users are effectively judge, jury and executioner business analyst, application architect and developer for their own business solutions.  This gets to the heart of the problem I’m writing about.  But before I dive into that, let’s consider the elephant in the room.

    Peering into the Crystal Ball

    How will SharePoint 2010 affect this pattern?  Will it be incremental or revolutionary?  Will more, fewer or about the same number of End users find themselves empowered to build solutions in SharePoint 2010?  Will SharePoint 2010’s problem domain expand even further or will it just refine and streamline what it already offers in WSS 3.0 / MOSS?

    There’s enough information “out there” to safely say that the general answer is:

    • The problem domain is going to dramatically expand. 
    • End Users will find themselves even more empowered than before.

    The Venn Diagram would be larger than this page and cause some IT Pros and CxO’s to reach for their Pepto. 

    I believe it’s going to be a tremendous opportunity for companies to do some truly transformational things. 

    No Bulls in My China Shop!

    This sounds great, but from my point of view as a SharePoint consultant and putting myself into the shoes of an IT manager, I see this vision.  I own a China shop with beautiful plates, crystal, etc (my SharePoint environment).  I’ve rented a space, I’ve purchased my inventory and laid it all out the way I like it.  I’m not quite ready to open, but in anticipation, I look at the door to see if my customers are lining up and I notice an actual bull out there.  I look more closely and I actually see two bulls and even a wolf.  Then I notice that there are some sheep.  Sheep are so bad, but are they maybe disguised wolves?  I don’t want bulls in my china shop!

    It gets worse!  When I rented the space, I couldn’t believe how nice it was.  Wide and open, terrific amenities, very reasonable price.  However, now I’m realizing that the wide open spaces and the huge door is just perfectly sized for a bull to come wandering in and lay waste to my china.

    I’m pushing this analogy too far, of course.  End Users are not bulls (most of them, anyway) and IT departments don’t (or surely should not) view their user community with that kind of suspicion.  However, there is this sort of perfect collision taking place already in the the 3.0 platform that I expect will only get worse in SP 2010.  SharePoint already empowers and encourages End Users to define and implement their own solutions.

    That’s great and all, but the fact is that it’s still a very technical product and still calls for the kind of vigorous business requirements analysis, design and general planning and management that technical projects require to be successful.  These are not the kind of skills that a lot of End Users have in their bag of tricks, especially when the focus is on a technical product like SharePoint. 

    I’ve given this a lot of thought over the last year or so and I don’t see any easy answer.  It really boils down to education and training.  I think that SP 2010 is going to change the game a bit and it’s going to play out differently and in slow motion as companies roll out their SP 2010 solutions over 2010 and beyond.  In order to succeed, End Users will need to transform themselves and get a little IT religion.  They’ll need to learn a little bit about proper requirements analysis.  They will need some design documentation that clearly identifies business process workflow, for instance.  They need to understand fundamental concepts like CRUD (create, update and delete), dev/test/qa/prod environments and how to use that infrastructure to properly deploy solutions that live a nice long time and bend (not break) in response to changes in an organization.

    In the coming weeks, I plan to try and provide some of my own new ideas, as well as link to the great work done by many other authors (on www.endusersharepoint.com and elsewhere) so that interested End Users can learn that old time IT religion.  Keep tuned.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags: ,
    October 04

    SharePoint Shop Talk Recap for Thursday 10/01/09

    I’ve noticed that people seem to be waiting until the last minute to register for SharePoint Shop Talk sessions.  Last Thursday, at about 11:45AM, we had nine people register, which is a very small number.  However, at one point, we had 18 or 20 people signed in, so at least nine people signed up for it 45 minutes or less before the call.  I’m not complaining, just observing.

    We had a full schedule of questions and discussion topics and couldn’t get to all of them.  As usual, we’ll pick up where we left off this coming Thursday.

    Here’s the recap:

    • Vamshi asked about building a WSS environment that has SP1 and not SP2.  You can download that configuration here:

      http://www.microsoft.com/downloads/details.aspx?FamilyId=4191A531-A2E9-45E4-B71E-5B0B17108BD2&displaylang=en.  And someone else suggested looking here: http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb400747.aspx.

    • We had a (welcome) surprise return visitor.  A few weeks previous, Blue had asked us a question that left everyone on the call a little sad because we couldn’t help.  His problem and solution are really fairly complicated, but it boils down to creating a data view web part with a range of filtered dates (not just one single filtered date, which is easier).  He may write up a blog entry on this and if does, I’ll link to it.  In the course of the discussion, he referred everyone to these two links:
    • Looping in SharePoint designer – can it be done?  The answer is “yes” in some narrow cirumstances.  However, to do it, you need to do some tricky stuff that is hard to conceptualize, hard to implement, hard to debug … it’s just plain hard.  The panel’s consensus – don’t do this if you can help it.  If you need looping, create custom actions or drop down into visual studio.  Of course, if you’re using SPD, you prob can’t easily drop down into VS, but it is what is is, sadly.
    • Speaking of sad, Nancy wins the “Make the Panel Sad” award by (futilely) asking about drag and drop from a data view web part.  The scenario is very interesting and if anyone has a clever solution, please let me know.  Here’s the problem: she has a DVWP that is doing some necessary filtering on a document library that returns back dozens or more documents.  This works great.  However, her users need to take those documents and burn them to CD.  This is doable using a windows explorer type view, but how to do it from DVWP?  We couldn’t think of a good answer.  Can you?
    • Laura Rogers, followed by Lori Gowan of www.endusersharepoint.com fame (and elsewhere) made us aware of the fact that attachments to InfoPath forms can be submitted via a web service to an image library in SharePoint.  Out of the box!  That is a very interesting fact with some very interesting implications.

    That’s pretty much it.  I probably missed something, but hopefully you get the gist of it.

    Even though I know you won’t actually sign up until noon, Thursday, here’s the registration link for the next session, Thursday 10/08 from 12:30 to 1:30 PM EDT: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=0z40kg9nb0t0842f

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    September 30

    SharePoint Shop Talk Thursday 10/01 @ 12:30 PM EDT (tomorrow!)

    SharePoint Shop Talk registration is up and ready for tomorrow.

    We have a few questions teed up that address some management issues (dev/test/prod and syncing up service packs), email notifications (how to select people to email based on metadata of a document) and some discussion around using InfoPath forms services in an FBA environment.

    As always, if you want to talk about a topic:

    You can read about past SharePoint Shop Talks on my blog here: http://paulgalvin.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3dPublic%2520Speaking

    Register for the session here: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=h6hm9ptg8zt7302t

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:

    Windows Live Spaces and Twitter Counter

    I was DM’d a message from twitter today and thought I’d blog the answer.

    The question is: “Hey Paul, quick one for you,how did you get the twitter counter into your live space as the script code is blocked when saved Thx”

    I did this by adding a custom html widget to my live spaces page and using the little code snippet:

    <a href="http://twittercounter.com/?username=pagalvin"   
       title="TwitterCounter for @pagalvin">   
       <img src="http://twittercounter.com/counter/?username=pagalvin"     
            width=88     
            height=26    
            style="border:none"       
            alt="TwitterCounter for @pagalvin">
    </a>
     
     

    This uses a version of the twitter counter widget interface that gets past the windows live censor thing that we all hate so much and wish would get a bad case of poison ivy.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags:
    September 29

    Managing Approval Groups with InfoPath in an FBA Environment

    I have an expense approval process that I need to implement using InfoPath in a forms based authentication (FBA) environment using forms services (web based InfoPath).

    There are two approval groups and the process works like this:

    • User fills out an expense report and submits it for approval.
    • That triggers an email to first level approver group.
    • First level approver reviews and approves or denies the report.
    • If first level person approves it, system notifies second level approver.

    On the InfoPath side of things, I have different sections that hide/appear based on whether the user is a member of one of those approval groups.

    In an FBA environment the username() function always returns blank, sadly.  What I’ve done is set up a a custom list called “Approval Groups”.

    I don’t add any additional columns to the list.

    When the form opens up, it has a rule like this:

    image

    The “set a field’s value” is here:

    image

    This is basically saying: Query the approval group custom list and filter that query by looking for any row where Title’s value = “NORDIC”.

    If that returns any value, then the current user is a member of that group.  I know it contains that value because the string length is greater than zero.

    Close the loop by securing the individual items in the Approval Group list.  At run-time, if the current user doesn’t have appropriate security access to that item then the query won’t return it, string-length will be zero and now you know the current user is not part of that group.  You can use that fact as needed in the form.

    This is a super brief write-up.  I’m pressed for time or I’d provide more detail.

    I don’t know how relevant it is that I’m in an FBA environment.  This would probably work well in a non-FBA environment but I can imagine cases where this would be useful.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags: ,
    September 25

    SharePoint Shop Talk Recap (09/24/09 edition)

    We finished our 8th SharePoint Shop Talk open Q&A session yesterday.  During that session, we covered the following topics:

    • How to send out a highly formatted email from a workflow created using SharePoint Designer.
    • Where to find information on the differences between SharePoint 2010 and especially Windows SharePoint Services 3.0 (the free version of SharePoint). 
    • We discussed jQuery maintenance and management.  More specifically, “where should the jQuery go?”  We had a great discussion around this topic and one interesting new ideas (to me) is the idea of a content delivery network.   This bing search pulls up a lot of interesting data on the subject: http://www.bing.com/search?q=microsoft+content+delivery+network&FORM=DLSDF7&pc=MDDS&src=IE-SearchBox
    • Someone mentioned that parts (or maybe even all) of the up-coming mega conference in Las Vegas in October will be broadcast over the internets.  Check out this site for more information: http://www.week3.org/Events/default.aspx
    • We talked about RSS.  That discussion covered a lot of ground.  There’s a CodePlex project that does better RSS than what you get out of the box and www.endusersharepoint.com has some good articles up by Laura Rogers on how to use DVWP to build really good RSS sessions.

    That about covers it.  People seem to be getting a lot of help from these so we’ll keep them going.

    In a burst of efficiency, I’ve already set up next week’s SharePoint Shop Talk session.  You can register here: https://www.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=h6hm9ptg8zt7302t

    If you want to participate, fire off an email to questions@sharepointshoptalk.com, hit me up on twitter (@pagalvin) or leave a comment here.

    </end>

    Subscribe to my blog.

    Follow me on Twitter at http://www.twitter.com/pagalvin

    Technorati Tags: