jump to navigation

Gov 2.0 Resources from Microsoft October 23, 2009

Posted by willhlaw in Gov 2.0, SPC09.
Tags: , , , , ,

These resources are from Dean Halstead’s presentation at the 2009 SharePoint Conference in Las Vegas and from his presentation slides. I wrote an overview of his presentation on a blog post entitled SharePoint as Gov 2.0 and Enterprise Web Platform: From SPC09 Las Vegas. Dean Halstead (Twitter.com/DeanHalstead) is a Collaboration Architect at Microsoft.


On-Line Samples


SharePoint as Gov 2.0 and Enterprise Web Platform: From SPC09 Las Vegas October 22, 2009

Posted by willhlaw in Gov 2.0, SPC09.
Tags: , , , , , , , , ,

This is the last session at the 2009 SharePoint Conference in Las Vegas. The presenter is Dean Halstead (Twitter.com/DeanHalstead), a Collaboration Architect at Microsoft.

[Update] A version of Dean’s presentation has been found here.


  • Understand how to leverage solutions and approaches that are being used throughout Government (Gov 2.0) to improve social networking and address common challenges in your organization or company.
  • Pillars of Transparency
    • Accountability
    • Participation
    • Transparency

Gov 2.0

  • As you deal with web 2.0 type content and new media in your org, you may need an information policy applied to the content such as Sarbanes-Oxley or Freedom of Information Act, etc.
  • Recovery.Gov is built on SharePoint
    • Shows an overview video and information on Best Practices on how to implement 2007.
    • Talks quickly about a No-Code solution for clicking on video links and have the video appear in a DVWP that was built using SharePoint Designer. When the presenter said this, I looked up and saw a URL parameter, ID=5. Thus, the DVWP was just filtering on the list that has the YouTube script that was probably copied directly from YouTube’s embed code section.
  • Contextual Social Networking
    • A trend towards social networking fatigue. Too much personal information along with new enterprise social tools and information.
    • With contextual social networking, the system can automatically tell the user that others are working on something similar as you upload a document or name a document with certain tags.
  • Gov 2.0 Common Feature Challenges
    • Internal/Extgernal integration
    • Internal micro-blogging (Twitter / Facebook)
    • Social Network Analysis
    • Geospatial integration
    • Data, data, data, podcasting, and communities.
  • Gov 2.0 Kit
    • Enhanced version is being released on Codeplex today! First time audience clapped.
    • Enhanced MySite for Microsoft SharePoint™ RC1 – October 22, 2009. 
    • Easy to install tools. They are MSI installs and activated features.
    • Demo of the Gov 2.0 kit
      • My Peeps
        • An internal, behind the firewall twitter.
        • To follow and monitor people
        • There is a little T and F icon to allow you to update your status internally and externally to the public Twitter and Facebook accounts.
        • Auditing is built into the kit. On the My Peeps dashboard, the little T and F icons show up next to each tweet, so that others know where else it was posted to
        • When you follow someone, it is a request and requires approval by the followed person.
        • The current solution does not have spelling or grammar check.
      • My Home
        • Is a Facebook like profile page.
        • It has Updates to see actions such as “John Posted notes.doc on Shared Documents”.
      • Twitter webpart
        • Pulls personal feeds into the SharePoint portal.
    • ICE
      • A Codeplex project that is a Silverlight control that can be embedded in SharePoint.
      • It shows not only people, but object relationships in a link map. Very cool!
    • Jackbe Mashup tools.
      • Helps to make data transparent and thread it throughout the org.
      • Presto by Jackbe is a mashup tool. A data modeler or expert business decision maker can create a model and combine information from SharePoint and CRM (etc).
      • End users can then take those data models and drop them into SharePoint pages as Webparts.
      • The Mashup Webparts can even communicate with each other using web part connections.

Gov 2.0 Common Policy Challenges

  • PII (Personally Identifiable Information)
    • How do you find PII and secure it?
      • Use FAST search and Concept Search to find data and automatically turn it into a PII document which is secured differently and can even be RMS (Rights Management Server) and digitally protected. It allows you to put rights onto the document and encrypt it. Permissions to open the document must be given.
      • The organization will be able manually or automatically categorize (based on Policy rules) to discover the data and delete it or protect it.
  • Endorsement of Information
    • Community Moderated
    • Organizational Moderation (Twitter, Facebook, and Public site)
      • Having a moderator is a drain on the orginizations
      • Apps for America (a context put on by Gov 2.0 Summit) finalist had a community based moderation solution.
    • Public Affairs Workflow for release (Blogs, Wikis, Documents, etc)
  • Culture Wars
    • Conflict Areas
      • Old Guard vs. Generation Y and 2.0
      • Sign-to-Noise, definition of “Real Work”, Privacy, and Control Corporate Messaging
    • Impact
      • Social Networking initiatives being stifled
      • Low Adoption/Classes, Slowed Idea Generation, Lower Employee Satisfaction, Institutional Knowledge Bleed
  • Other challenges
    • Information Spillage
    • Security Concerns
    • Trusted and Authoritative Source
    • Identity Management
    • Governance
    • Accessibility (Section 508/WCAG)
    • On-premise hosting
    • Silos of Information
    • Integration and Interoperability
  • Resources

    As solutions and best practices are rolled out in Recovery.gov, these solutions will spread to other Government agencies. I personally think that social network tools will greatly improve the knowledge transfer within the enterprise and government.

SharePoint Designer 2010 – Building Composite Apps: From SPC09 Las Vegas October 21, 2009

Posted by willhlaw in jQuery, SharePoint, Sharepoint Designer, SPC09.
Tags: , , , , ,
1 comment so far

I am here at the SharePoint Conference 2010 (SPC09) at Las Vegas. There were not a plethora of interesting sessions this afternoon, so I stuck to what I have been good at; live blogging on SharePoint Designer 2010. See my other blog posts:

Here are the interesting points from the session.

LINQ and REST in Sharepoint 2010: Live from SPC09 Las Vegas October 21, 2009

Posted by willhlaw in SharePoint, SPC09.
Tags: , , ,

LINQ and REST in Sharepoint 2010.

I am blogging live from the Sharepoint 2010 Conference in Las Vegas. This is a session on LINQ and REST web services. I have only written about the highlights.

Overview of new architectural features when dealing with querying lists in SharePoint 2010

  • Query Throttling
    • Site collection administrator can put a limit (i.e. 5000) on the query block.
    • Developer can override the querythrottlingblock to retrieve more items from the server.
    • This prevents end users from swamping the server.
  • Resource Throttling
    • Pagination plays a distinct role so that the data is filtered on the server, not on the client side anymore. First time audience clapped.
  • Allows list options to be setup so that child references are setup for delete through. This means that if the parent is deleted, then the children go into the Recycle Bin as well. Other options prevent the user from deleting a parent item that has child items.
  • Demo is in the Javascript Client Object Model
    • If you can do it in javascript, you can do it in the client.
    • The Javascript OM requires you to be more explicit with every step.
    • Custom page is called /_layouts/data/clientom.aspx
    • Uses the Yahoo YUI library script files.
    • Example had a var viewXML which was a predefined CAML query with {1} to act as placeholders for variable replacements later.


  • REST-style ListData.svc web service
  • Work with data via (Representational State Transfer)
  • SharePoint list data
  • Other data sources as well
    • Excel and Azure cloud
  • Powered by ADO.NET Dadta Services “Astoria”
    • REST Protocols: Atom, AtomPub, and RSS
  • Syntax:
    • /_vti_bin/ListData.svc/{Entity}[({identifier})]/[{Property}]
  • Example to get budget hours for Project $4:
    • /_vti_bin/ListData.svc/Projects(4)/BudgetHours
  • Example to get Projects for Clients in Chicago:
    • /_vti_bin/ListData.svc//Projects?$filter=Client/City eq ‘Chicago’
  • Example to get a Project and its related Client:
    • /_vti_bin/ListData.svc/Projects?$expand=Client
    • Shows me parent that is associated with this XML
  • QueryString parameters for REST
    • $filter
    • $expand
    • $orderby
    • $skip
    • $top
    • $metadata (will bring back all the XML metadata about the object. Think of it like WSDL for your REST call)
    • You can stack these parameters
  • Demo, manipulating REST data.
    • Javscript Client Object Model does not allow XSS (cross site) scripting so you must use relative URLs.
      • Tip: To guard against CSRF (Cross Site Reference Forgery) attacks using JSON, the array or JSON object in a response is always wrapped by a single JSON object with a singler member named “d” whose value includes the array or object representing the entity or entities being returned.”
      • http://msdn.microsoft.com/en-us/library/cc907912.aspx
    • Tip: IE8 -> Internet Options -> Feed and Web Slice Settings -> uncheck Turn on feed reading view in order to view XML in the browser.
    • Code snippet from example demo using Rest in javascript.
      • function PostData(url,data, callback)
        • var wRequest = new sys.Net.WebRequest()
        • wRequest.set_url(url)
        • wRequest.get_headers()
        • wRequest.set_httpverb()

LINQ to SharePoint

  • Strongly-typed access to List Data on Server
  • Entity based programming on the server
    • SPMetal Code Generation Utility (command line utility can be used for automatic builds)
    • LINQ Queries
    • Strong Types
  • Translates LINQ queries into CAML queries
  • Can be used in
    • Web Parts, Event Receivers, Sandboxed code
    • Sample: Orginal LINQ query

      From p in dadta.Projects


      p.Cleint.City – “Chicago”

      select new {

      Name = p.tTiel,

      clientName = p.Client.Title,

      Budget = p.BudgetHours


    • Sample in CAML was shown and it looked ridiculous to code out. Everybody clapped because LINQ is SO much easier.
  • Demo, accessing relational SharePoint data using LINQ to SharePoint.
    • This example is on coded on the server
    • The first demo was rebuilt using the ASP.NET treeview rather than the YUIi treeview.
    • There is a property in the SPConfListDataContext called log.
    • Of course, with a server side solution in Visual Studio 2010, you can set a breakpoint in the code and break to it once that code is reached after a button press, for example, on the web page. Remember, in 2010, there are sandboxed solutions to help develop solutions before deploying to production.
    • The LINQ query is simple and ends up generating CAML query in the background.

Data Access Technologies

  • SharePoint 2010 List Data model
    • You should be using the Server OM and LINQ to SharePoint when you are developing on the server.
    • You should be using the Client OM and REST when running the code on a remote computer.
    • REST and LINQ are not giving you SharePoint objects. It is only giving you XML. You should use one of the Object Models.
    • If you want to work with relationships between items, REST and LINQ are much easier to use than the OM.
    • OM and REST can benefit from the Callback Calling Pattern. Remember in the Javascript Client Object Model, the .executeQuery(successCallBack, failureCallBack).
  • Managed Client OMs vs. Javascript Client OM
    • Full URL Context vs Server-relative Context Only
    • String Collection vs String[] Array
    • Null, infinity vs. Nan, positive/negative infinity
    • Explicit FBA support vs Context FBA support
    • Create, Update, Commit vs Create, Commit, Update
    • No FormsDigest Required vs Needs <SharePoint:FormsDigest>
    • Standard Server OM Identity vs No RoleDefinitionBindingCollection Identity
    • SPWeb Locale for Comparisons vs Invariant Culture for Comparisons.

This was a very detailed presentation with a lot of code talk-throughs. There are many details to follow up on. My post here only acts as a quick overview of the session and certainly not a definitive guide. The session slides will be posted after the Conference and I will update this blog post with links once they are.

Enterprise Mashups with SharePoint Designer 2010, Bing map services, and Restful web services: From SPC09 Las Vegas October 21, 2009

Posted by willhlaw in jQuery, SharePoint, Sharepoint Designer, SPC09.
Tags: , , , , ,

Enterprise Mashups with SharePoint Designer 2010, Bing map services, and Restful web services

This is an overview during a live presentation at SPC09, the biggest SharePoint Conference of the year, possibly ever. The session is quite good. There were good examples of the different web parts and interaction in Shareponit Desinger 2010, bringing in RSS feeds from Twitter and MSN Weather, stylesheets to turn a list into a Bing map, and the underlying code to render the pushpins. Great job Microsoft.

[Update] The jPoint team is creating a Bing script solution. Check back later this evening to get the hyperlink to the example!

[Update #2] The jPoint team, within hours, has created the Bing solution at http://sharejPoint.com/examples.

[Update #3] Hector Ruiz has blogged about Experimenting with jPoint and Bing Maps here.

Demo 1, connecting with recruits using Twitter and MSN Weather

  • In SharePoint Designer 2010 (SPD2010), data sources can be RSS, Rest, Server Scripts. That is how Twitter and MSN Weather were added as data sources. From each website, the RSS feed URL was grabbed.
    • Twitter’s feed is /show.xml?…
  • RecruitDetails.aspx
    • MSN Weather feed was added into a new ASPX page as a DataFormWebPart by selecting Data View -> MSN Weather.
    • Twitter feed was using Twitter’s API, which is not reliable, and it did not work. But presenter prepared the audience for this failure.
    • For MSN Weather DFWP, a web connection was created to get parameters from the query string.
    • After establishing the TwitterID as a query string parameter, the presenter tried to drag in the Twitter DFWP again. It worked!
    • An XsltListViewWebPart that is hooked up to a recruiter’s list is connected to the Twitter web part.
  • RecruitMap.aspx
    • Recruits list is added to the page without any formatting.
    • The recruit list is added again to the page. Hmmm…where are they going with this?
    • The presenter turns the second webpart, an XsltListViewWebPart, and adds a reference to an XSL stylesheet called g11.xsl. This stylesheet magically turns the XLVWP into a Bing map! Pretty cool, but I’d like to see that g11.xsl! This gets the audience’s first clappter!
    • Wow, they go into the XSL stylesheet. There is a little bit of javascript to send the addresses to the map services. Actually, they have code placeholders, so I have no idea how much work was involved. I have done this with Google Maps, OpenLayers, and Google Earth Enterprise (which has a slightly different API than Google Maps public, which is always a slight pain).

Demo 2, rentals mashup

  • Same pattern is going to be followed as the first demo, by starting with creating a RentalDetails.aspx page.
  • RentalDetails.aspx
    • First step is to go into code and define the layouts
    • Presenter pops over to view the list. It is standard information about a rental unit (bedrooms, baths, etc)
    • Back to the code view in SP2010, a rentals-gallery div and rentals-detail div is created.
    • To show just one list item, change the DataFormWebPart of the rentals list to only show 1 item, a nice way to style a detailed view.
    • The attachment column is at the top of the list. These attachments are going to be pictures attached to each rental item. Since this will be useful later, it is tagged in the content by typing “@Marker” in the field next to the label “Attachment” for the DFWP.
    • The DFWP control inserts a table with id of idAttachmentTable which will be used later to show the pictures.
    • A filter is added to only show the rental item whose “title = Title” where Title is a query string parameter.
    • The page refresh did not filter properly. Somebody in the audience helped the presenter out by telling him he made the variable a server variable rather than a query string param.
    • The page still did not filter properly. It is still showing the first item in alphabetical order. The presenter tried to pull the file from a saved location, but that did not seem to work. So now, he is rebuilding the solution from scratch. This rebuild is fast! Uh-oh. Still a problem. Somehow, it is just magically NOT working. So, the presenter pulls up a totally new “backup” page so that the demo can move on.
    • This brd.aspx page uses jQuery to show an image slide show. That’s what I’m talking about. I see several people in the audience skoot to the edge of their seats.
    • In the brd.aspx page, he references a local jquery.min.js and a jquery.slideshow.js as well as a jquery.slidshow.css file.
    • Within the page itself, there is some more custom script that clones the idAttachmentTable and prepends the rentals-gallery.
    • Then, $(“#rentals-gallery”).slideshow() creates the slideshow with parameters dictating the speed and location of the images. He glanced over these details because the code will be provided “later”. I have always wondered how much later and how will we be notified? Well, once I find out, I will update each pertinent blog entry on my site.
  • To create the map, _spBodyOnLoadfunctionNames.push(“Initialize”)
  • And several variables to define; var mapDivId, mapZoom, mapListName, mapPinTitle, maplistQueryFields (columns from list), maptargetDetailsPage=”brd.aspx”, mapTargetDetailsPageParam, mapTargetDetailsPageValue = mapPinTitle;
  • Functions include:
    • mapGetItemaddress(i)
    • mapGettemHTML(i)
    • Initialize -> this calls mapInitialize() and then spGetData();
    • mapListQuery() -> builds the fields in CAML query.
    • mapInitialize()
      • mapTheMap = new VEMap(mapDivId);
      • maptheMap.LoadMap();
      • mapResetCenterCalculation();
    • spGetData()
      • This function uses the Javascript Client Object Model. Again, the presenter touts the consistency across client side models (.NET, Silverlight, and Javascript). For more information on the Client Object Model, see my blog post.
      • A context is created and then ctx.get_web().get_lists().getByTitle(mapListName);
      • Then, a CAML query is created.
      • After some more setup calls, then ctx.executeQueryAsync(mapAsyncQueryWorks(mapListItems))
        • He starts talking about javascript closures. Wow, this is the first time I’ve HEARD someone talk about closure, as opposed to just writing about it. However, he skims over this topic and really does not explain it. Too bad. I thought he would be able to educate the audience since closures is a really tough topic for people to grasp.
      • mapAsyncQueryWorks(mapListItems)
      • mapCallback(title, photo_url, shareHTML)
        • A VEShape is created for the pushpin and latlong location.

Roadblocks to Mashups in the Enterprise

  • Technical roadblocks
    • Security, authorization, authentication
    • Identity Management
    • Single Sign-On
    • Credential propagation
    • Data trustworthiness -> Research has shown when users see data on a map (or in a report), they believe it to be TRUE.
    • Web services readiness
  • Management roadblocks
    • Web services changes
    • Data source dependencies
    • Mashup lifecycle
    • Component lifecycle
    • Policy Management and Governance
    • Privacy
    • Compliance

That’s it. The session ended with an apology for the failed demo, but a reminder that they had a backup ready. Unfortunately, there was no time for questions. If you find my live blogging useful, let me know. Also, add my blog as a feed as I will update it once I find out when the code samples are available.

Building Applications with InfoPath and SharePoint Designer 2010: From SPC09 Las Vegas October 20, 2009

Posted by willhlaw in InfoPath, SharePoint, Sharepoint Designer, SPC09.
Tags: , , ,

Live from Las Vegas at Mandalay Bay. I am at the SharePoint Conference 2009 and listening to a presentation on InfoPath and SharePoint Designer 2010. I will tend to use IP2010 and SPD2010 for short. I type fast, but not that fast to keep up with some of these fast talking presenters who apparently are very expert on the subjects. Presenters are Roberto Taboada and Darvish Shadravan from Microsoft.

My top 3 features for InfoPath 2010 are listed at the bottom of this post.

InfoPath 2010 and SharePoint Designer 2010

  • Overview
    • IP2010 for capturing the right information
    • SPD2010 to get the information into the right hands
    • Introducing the Procurement Application
    • Review the Key app components
    • Demo, building the application – highlight new IP2010 features and best practices
    • Q & A
  • Presenters are stressing that it is a 300 level session so we need to follow along closely. (keyboard may need to quiet down a little.)
  • Demo, Procurement app for BlueYonderAirliens
  • From user perspective, a user needs a new laptop.
    • User fills out a form from the webpage. It is a pretty good looking form. Audience laughs because justification for new laptop is “Office party + beer + spill = broken machine J“.
    • A data connection uses an external list, not a SharePoint list.
    • New product details are selected via connected cascading dropdowns
    • Form is submitted and the request is updated on the web portal.
    • A workflow assigns an ID to the request and routes it to an approver.
  • Now, from approver’s point of view
    • A Portal for approver’s have list of tasks from workflow assignments in upper-left. Master-detail with details on the right.
    • Details view has hyperlink to the form. Ok, nice UI. No brainer.
    • Once request is approved, it turns green on the detail view.
    • A custom action in the workflow generates a word document that is an order form to place the order. To implement this, the SDK is used. XML is taken out of the IP2010 form and is used to generate the word document.
    • Word document looks good. It even includes a + expando when the mouse hovered over the details paragraph. Hmm…wonder what action that does.
    • Bad joke, Darvish calls Roberto, “Tub of water”. Nobody laughs.
    • An excel web part is used to see insight and stats on orders.
    • Another web part, shows aggregate view of grouped number of requests by user.
    • Then, approver goes into the form and updates a comment with, “I don’t think so dude.” Hmm…some laughed. These guys are making this fun, but not too fun, obviously.
  • Back to Roberto with a come-back joke. Not worth explaining.
    • End user would get a rejected e-mail from the approver’s rejection activing a workflow.
    • From the end user’s requests portal, end user can see a Visio generated workflow of where his requests currently stand. Pretty neat!
  • That was the demo, now to talk about the components. Everybody clapped after realizing it was the end of the demo.
    • Line of Business Data.
      • Store product & category info in external lists.
    • InfoPath Form
      • Combine product info & user input.
      • Create requests in form library
    • Approval Workflow
      • Create tasks in task list
      • Assemble order form in doc library.
    • Requester & Approval Portal
      • Start & manage requests
      • Track status with Excel & list Web Parts.
    • They will package and deliver code to the public. Several clappter. Is that even a word?
  • Details on each component
    • Line of business data
      • Form is themed to fit with portal
      • Product key is read only
      • External content type provides the secondary data connection for the product subcategories.
      • Final piece is actual Products list.
      • SharePoint Designer is used to manage the external data source, which is a database table, which drives the product data.
    • InfoPath Form
      • Shows that rules are MUCH easier to manage in IP2010. Great job InfoPath team!
      • If it is a new form, it can be detected because ID will be blank. If it has an ID, then the other section is shown.
      • A people picker control can be dropped onto the form and does not have to be configured further. Much clappter and even a few “woohoos”. Alright! This session is fun.
      • Request total cost is calculated automatically. Nothing too fancy here.
      • The Needed By: field is a date picker, but it has some validation with an error tip. It is actually a rule. Nothing that new here.
      • Under rules, you can see the conditions and actions in the task pane. Very cool.
      • Best Practices Tip: Do not load the data until you need it. So, load on demand.
      • Until a user selects a sub category, or product type, the data is not pulled in. When it is selected, Sharepoint is queried and then the data is pulled in for the drop down. Presenter thinks user expects a delay for this sort of action? Click on a dropdown and wait to see a medium sized list? Possibly some users, but not in the public space.
      • Best Practices Tip: If user does not need any extra buttons after submitting a form, then provide a blank view where the user’s only option is to go back to the portal.
      • On submittal, a rule simply sends the user to the “go to Submit Confirmation” view. Ok, this could easily be done with a custom button in previous versions.
      • A third primary view for the Form is the rejection form, where the end user can only read the form, and declarative logic in the form determines which stoplight image is shown (i.e. red light for rejection, green for approved)
        • The declarative logic basically shows one of three sections so the form is designed with three separate sections that have the green, yellow, and red stoplight image. The status properties determines which section to show. Ok, again, simply done in previous versions.
    • Workflow
      • Approver has a dropdown on the form along with the comments section. The dropdown selections have pre-built workflows for each.
      • SharePoint Designer 2010 is used to manage each workflows, i.e. Approval workflow, Feedback workflow, etc.
      • Workflows can be applied to more than one list or library. This comment generated a lot of clappter. Guy behind me even says, “Nice”.
      • Document ID is generated for every document in a site collection. So, in the forms solution, a prefix can be prepended to each document ID and the filename is same as document ID. A redirect service allows you to find a document based on document ID.
      • There are multiple layers in the workflow. An action in one workflow can trigger another workflow sequentially. So, in SP2010 workflow view, you can “drill down” into the underlying workflow details.
      • Buttons at bottom of form are branded and color coded so that user does not execute the wrong action.
      • The list of options for rejecting a form are actually pulled from SharePoint.
      • Last piece of workflow is assembling the Word document
        • From SPD2010 Workflow, an action is inserted with a custom action “Assemble Word Document” Anyone else in the site collection creating a workflow can use this custom action.
        • Custom action has some parameters to choose using the GUI. Very slick.
        • Parameters are required to determine which template to use to generate the document and location of where to store the document.
        • They will publish this custom action publicly as well.
        • Code for custom action is shown in Visual Studio 2010 and is only a few functions using OpenXML SDK.
    • Portal
      • Master page is modified to strip some UI elements that are distracting for the solution.
      • Master page includes a link to the form URL. The link to the form has a Source parameter so that the form knows where to go after it is submitted.
      • To create the master detail view between task list (remember, it was in upper left) and task details (upper right), was simply using web part connections -> send row of data to method.
  • Application Deployment and Portability
    • Data connections in InfoPath forms are now relative URLs, they are not hard coded. Yes. Finally! Almost everybody clapped!
    • Can package applications as reusable templates (WSP).


Top 3 Features of InfoPath 2010

  1. Built-in controls i.e. People Picker
  2. Filtering supported in the browser i.e. A drop down list on a secondary data source can be filtered based on another field in the form and the form in the browser now respects the filter.
  3. Rules. The rules now has a new task pane so it will be MUCH easier to configure and manage rules.


If you are reading this and find it helpful, let me know. Send me a comment please. Thanks.

Working with the new Client Object Model: From SPC09 Las Vegas October 20, 2009

Posted by willhlaw in jQuery, SharePoint, Sharepoint Designer, SPC09.
Tags: , , , ,

Live from Las Vegas at Mandalay Bay. I am at the SharePoint Conference 2009 and listening to a presentation on the new SharePoint 2010 Client Object Model. Presenter was Paul Stubbs from Microsoft.

Client Object Model

  • Simple API to Add, Retrieve, Update and Manage Date in Shareponit.
  • 1st goal – consistency
    • Between client and server API
    • As well as between the three different clients, Client side (.NET), Silverlight, and Javascript.
  • 2nd goal – efficiency
    • In use of server resources
    • In use of network resources
    • Uses a SQL model. Batch up client calls, call server, server processes query, server turns results as a result set
    • Only return data the exact data that I need. i.e. When calling a list, only retrieve data for the specific columns that are needed.
  • Code example
    • Today:
      • SPWeb site = SPContext.Current.Web;
      • String title = site.Title;
      • Site.Title = title + ” and Client OM”;
      • Site.AllowUnssafeUpdates = true;
      • Site.Update();
    • Now with Client Object Model:
      • ClientContext = clientContext = new ClientContext(http://intranet.contoso.com);
      • Web site = clientContext.Web;
      • clientContext.Loadsite);
      • clientContext.ExecuteQuery(); //synchronous call
      • site.Title += ” and Client OM”;
      • site.Update((); //second call because as a rule, can’t use a property to set the value of another property.
      • clientContext.ExecuteQuery();
    • Another example:
      • Web site;
      • ClientContext ctx;
      • Void MainPage_Loaded(object sender, RoutedEventArgs e)
      • { contexzt = new ClientContext(http://mysite);
      • Site = context.Web;
      • Context.Load(site);
      • //Call the Sharepoint Server
      • Context.ExecuteQueryAsync(succeededCB, failedCB);}
    • Javascript example:
      • _spBodyOnLoadfunctionNames.push(“Initialize”);
      • Var site;
      • Var Context;
      • Function Initialize()
      • { contexst = SP{.Clientcontext.get_current();
      • Site = Context.get_web();
      • Context.load(site, “Title”);
      • //Call the Sharepoint Server
      • Context.executeQueryAsync(Suceeded, Failed);}
  • Retrieve Data
    • Context.Load(object, params LinqExpre3ssion)
      • Fills out the objects in the context; in-place
      • ‘method syntax’ linq only
  • Context.Loadquery(iQueryable)
    • Use linq query to return custom objects
    • Not filled into the client context
    • Both ‘query syntax’ and ‘method syntax’ linq
  • Query Syntax
    • More natural Linq query that is familiar
    • Var query = from list in clientContext.Web.Lists where list.Title != null select list;
  • Method Syntax
    • More technical
    • clientContext.Load(oList, list => list.Fields.Where( field => field.hidden === false && field.Filterable == true));
    • Harder, but more powerful.
  • How does this all work? How to access data with Client OM?
    • A new service called Client.svc is a proxy to WCF service.
    • When .ExecuteQuery occurs, block of XML gets sent to server, it unwinds it, and returns JSON object to client.
    • Use fiddler to see the payload to understand how it works, but once you do, can ignore the traffic details.
  • Demo 1, change site title “Hello World”:
    • Shows an example of client.svc runtime being used in a windows application to change the title of a site.
  • Client Object Model using .NET is synchronous, but Silverlight and Javascript are asynchronous.
  • Demo 2, a WPF example:
    • Purpose is to fill a list box with a List of Lists.
    • There are some namespace collisions when building the WPF app.
    • So, you must write: Using SP = Microsoft.Sharepoint.Client again to prevent namespace conflict.
    • Object model will turn query syntax into method syntax before sending it to the server. Remember, query syntax is easier to write.
  • Demo 3, showing .NET CLR in Word
    • Drop .NET controls on the canvas onto the design surface within Visual Studio.
    • Purpose is to fill a task pane (Action Pane, uses ElementHost control because it needs to be Winforms based) on the right-hand side of customer data.
    • Also showing grabbing fields from a list.
  • Demo 4, javascript and jQuery
    • In visual studio, starting a new OMJavascriptApplication
    • <SharePoint:scriptLink> name=”sp.js”. -> Name of javascript client object model
    • <script src = js/jquery-ui-1.7.1.custom.min.js and other jquery files. Presenter mentions that trontastic is a great css to use. I have to check it out.
    • Bui8lding a dynamic jQuery Accoridion on the page by setting a div id=”accordion”
    • Has a separate MyJScode.js file
      • Inside the file, uses _spBodyOnLoadfunction to push Initialize function with familiar code that gets context, etc.
      • LoadListBox is pure jQuery code to populate listbox with a change event.
      • Var listEnumerator = lists.getenumerator();
      • While listEnumerator.moveNext()) {
      • }
      • Then listbox1.append using standard jquery.
      • BuildTable(ListName) is pure jQuery code.
    • Purpose of example is to show List of Lists inside the accordion! Really cool. This caused the audience to clap for the first time in the entire demo!
  • Javascript Client OM
    • Javascript files are in the 14 bin folder on the server.
    • There is a debug version (SP.debug.js)
    • SP.Core.js and SP.Core.debug.js
    • SP.Runtime.js (SP.Runtime.debug.js)
    • Debug versions are only slighter larger.
  • Next demo, Silverlight example
    • In visual studio, starting a new OMSilverlightApplication in Visual Studio
    • Starts with a simple grid with listbox
    • Using SP = Microsoft.Sharepoint.Client again to prevent namespace conflict.
    • Can build using standard Silverlight code to run in browser or inline, which I think means stand alone on the client machine.
    • It is easy to go from WPF code to Silverlight using this.Dispatcher.BeginInvoke and using a lambda expression.
      • i.e. this.Dispatcher.BeginInvoke ( ()=> {messageBox.Show(string.Forma(“failed – msg”); })
    • There are lot of steps to publish the Silverlightproject. Seems like several options for outputting the project. Grant it, I am not familiar with Silverlight at all.
    • (uh-oh, big clapping from next session over!) Yeah Microsoft.
    • When deploying Silverlight app to Sharepoint, a Silverlight.xap file is published to a Silverlight folder located at
    • The project does not exist on the SharePoint server, it is deployed as a sandbox solution.
    • In site settings -> solutions -> OMSilverlightApplicatinoDeploy exists for a site collection administrator to deploy.
    • Since deployment option was checked to allow Silverlight webapp to be installed on client, you can right-click the Silverlight listbox app, and can install the app on the client!
    • (This got the second clap of the session from the audience!)
  • No reason to deploy in WPF (if you are not doing full trust or 3D). To have updates, click once, security, and to have offline capability, build apps in Silverlight!    
  • #SPC09Buzzword for this session, “Super Powerful. Super Powerful”
  • Silverlight CLR Client OM
    • Located in 14 bin on server.
    • Microsoft.SharePoiht.Client.Silverlight (262KB)
    • Microsoft.SharePoint.Client.Silverlight.Runtime (138KB)
  • Q & A
    • I asked what recommended methods does Microsoft have for deloying jQuery and script libraries to Sharepoint Pages. There was no real recommendation other than including it in masterpage globablly or referencing it in a single .aspx file, but Scott was the second time I heard to talk with Mike Amerland.

InfoPath and Forms Server 2010 Features: From SPC09 Las Vegas October 19, 2009

Posted by willhlaw in InfoPath, SharePoint, Sharepoint Designer, SPC09.
Tags: , , ,

InfoPath and Forms Server 2010 Features

There were two presenters for this session in the basement of Mandalay Bay. They were young engineers from Microsoft, but they did an outstanding job although there were a few technical glitches.

Demo 1 – Customizing Sharepoint List Forms

InfoPath 2010 can now be used to customize SharePoint 2010 list forms.

Since we are in Las Vegas, the presenter bet that she could customize an InfoPath form and bring it up on a webpage from Forms Server in under 1 min. She actually did it by adding an image to the top row in less than 30 seconds. It was a quite impressive since I know the pain it has been to deploy InfoPath forms to Forms Server 2007.

When creating a rule, the Formula Builder has an updated UI and the presenter talked about it having more powerful combinatorial type functions that did nto exist before. Unfortunately, she did not go into deeper detail.

If a form is opened up from SharePoint in InfoPath, the quick publish option allows a quick save back to SharePoint without any extra prompts.

End users will not even realize a form is actually an InfoPath form getting served up by Forms Server 2010 and the user may just think it is just a fancier SharePoint Form.

The demo continued with similar features that we are all used to since InfoPath 2003 like secondary data sources and filters on these lists.

Benefits of customizing SharePoint List Forms and overview of First demo.

  • Information workers solve own problems, freeing up IT
  • Layout form using pre-built tables
  • Use rules to conditionally format, validate data & show/hide sections
  • Bring in data from SharePoint Lists
  • Take offline in SharePoint Workspace
  • Examples shown included Project Contact List, issue Tracking List, Feedback Form, and Event Sign-up.

Demo 2 – Creating Mashups with Form Web Parts

The Second demo started with showing a live image being pulled in to show the current weather conditions and a Map It button which was simply a rule-based hyperlink that pointed to, you guess it, Bing.

The form web part was connected via web part connections to another list. Thus, when the recruiting trip was selected from a particular recruiting list item, the form web part showed the corresponding form that showed the weather and Map It hyperlink for that particular trip’s destination.

InfoPath forms can now be packaged as solution packages in order to move a Forms solution from development to pre-production to production. ISV’s can also now create a Form solution and send it as a solution package to their clients. For portable solutions, the links need to be absolute, and InfoPath and Forms Server is able to deal with that.

Benefits of creating mashups with Form Web Parts and overview of Demo 2

  • Information Workers & IT have tools to create mashups
  • Connect InfoPath web part to other Webparts; Excel, Silverlight, List etc.
  • Customize form in InfoPath
  • Design web part page in browser or SharePoint Designer
  • Package as reusable templates (WSP)
  • Examples included Mortgage Calculator (with Excel) and the recruiter Master-detail (with List)

Demo 3 – Office Business Applications

A cascading dropdown was created pulling information from SQL Server. When form is submitted, workflow kicks off e-mails to Supervisor and another group. However, the details were kept from the audience and reserved for session later in the week.

SharePoint Designer is the no-code center point for OBA (Office Business Applications). Designer can even kick off a Forms solution.

Benefits of office business applications and overview of Demo 3

  • Manage OBA in SharePoint Designer: Workflow, Pages & InfoPath Forms
  • Store data in SharePoint or external systems, BCS (Business Connectivity Services)
  • Add sandboxed code to InfoPath form
  • Package as reusable templates (WSPs)
  • Examples include Procurement, Expense Reports, Orders, Onboarding, Service Requests, Helpdesk

Q & A

I asked if Forms Server 2010 and the Form web part will allow rich AJAX and javascript functionality. The answer was yes and no. Yes in that they have improved the AJAX that the form executes within the context of the form on the page so that cross-browser compatibility and performance have been enhanced. The second and more important part of the question, unfortunately, was a No. They were not sure (and I think it would have been a pretty big deal) that javascript on a page that has a form on it would be able to easily access the fields on the form, to get, set, and perform other tweaks on it.

Sharepoint Designer 2010 Features: From SPC09 Las Vegas October 19, 2009

Posted by willhlaw in SharePoint, Sharepoint Designer, SPC09.
Tags: , ,

Sharepoint Designer 2010 Features

Live from Las Vegas at Mandalay Bay. I am at the SharePoint Conference 2009 and listening to Asifrehmani’s presentation on SharePoint Designer 2010. Here are the features he talked about.

  • New Site Collection permissions for managing pages with SPD and detaching from site template / materpage (Was called ghosting in 2003 and then called Customizing in 2007). New Site Collection permissions for managing pages with SPD and detaching from site template / materpage (was called unghosting in 2003 and then called customizing in 2007).
  • Can create list or document library from within Designer.
  • Can change list schema (create, edit, delete list columns) from within Designer
  • To show a list on another page, rather than dropping in a webpart for that list, SharePoint Designer has Site Pages.
    • Can edit file in Normal mode or Advanced mode. To not have the page break in Chrome, for example, edit in Normal mode.
  • Within Designer, can manipulate site permissions much easier than via web.
  • Site Assets is a new concept to hold CSS and other resources for custom pages.
  • Rest web services can be connected to in Designer.

XsltListViewWebpart – New DVWP and ListViewWebpart

  • XsltListViewWebpart is different from DataViewWebpart because it only shows list information. DVWP could show any information.
    • Ability to format item in boxed view based on filters with new built-in parameters.
    • Data View was used as the example of putting the list information onto a newly created Site Page.
      • XsltListViewWebpart – new webpart. Created when Data View was dropped onto the page.
      • It combines the best of ListViewWebpart and DVWP.
      • Will remain as one of the most powerful Webparts in SharePoint.
  • DataFormWebpart pulls list information up as XML and uses XSLT to transform it. It works very much like DVWP. When manipulating XSLT via Designer, Insert Formula screen has more intelligent preview of what data markup currently looks like.

Business connectivity Services is new BDC (Business Data Catalog)

  • Pulls LOB data and pushes into SharePoint.
  • Easier to configure connections as external content types.
  • From Central SharePoint Administration, can manage ECT (External Content Type).


  • Reusable List Workflows as well as Site Workflows.
  • In workflow wizard, can choose which content types to have workflow applied.
  • Starting to consolidate Designer Workflow terminology with BizTalk. i.e. Activity. Declarative Rules.
  • Email activity has rich text editor and String Builder built in that has intelligent lookup using Data Source/Item selectors.
  • (Finally. No longer will developers waste time fixing HTML within a simple window for workflow e-mail.)
  • In the workflow steps, start typing and it will auto-lookup acceptable activities. i.e. start typing “emai” and press enter it will bring in Email activity.
  • Favorite example at SPC09 so far – >(Better example of auto-complete. Start typing “ass” and press enter to bring in assignment activity. Nice one @asifrehmani)

Site Templates

Backward Compatibility

Unfortunately, Microsoft fell short here. SharePoint Designer 2010 and most other SharePoint 2010 products will only work with the SharePoint 2010 runtime. Steve Ballmer himself declared that they would have liked to have made it backward compatible, but they had to make the tough decision of drastically changing the runtime moving forward.