Lightning Tools Blog

SharePoint Tools, Web Parts and Discussions

Lightning Conductor Web Part Review

Andy Burns has written a nice review of the Lightning Conductor Web Part and does a comparison of other roll-up web parts and techniques available to you in SharePoint.

You can see his review of the LCWP here:

http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/

And the overall conclusion and review of each option here:

http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/

Announcing the BDC Alert Manager

It's always an exciting and stressful time launching a new product. Exciting because you are eager to get feedback, but stressful as you want to make sure the first time someone uses it their system doesn't crash!

Well this time we're launching the BDC Alert Manager Beta 1.0. This is a free download that's available to everybody. Many people have contacted us and asked for a solution for sending email alerts around Line of Business data and this is the first iteration. Expect the RTM of the product within the next 2 - 3 weeks, plus a bunch of news on other functionality we already have in mind - and we hope to get from you guys.

You can download beta 1.0 and watch a screen cast of the Alert Manager in action here:

http://www.lightningtools.com/bdc-alert-manager/default.aspx

We'd love your feedback and ideas, please mail them over to sales@lightningtools.com

<Nick/>

Revamped LCWP

Those of you who may have tried the Lightning Conductor Web Part a few months back, should maybe download the latest edition.  Those of you who haven't tried it should!  The Web Part is an easy to use Roll Up web part that rolls up across multiple Site Collections.  If you have experienced Microsoft's Content By Query Web Part, this is similar but easier to configure, and has that added advantage where it isn't limited to just the one site collection.

Those of you who don't want to get dirty with XSL, will find the new Grid View very simple.  Just select the columns you wish to see from the lists or Content types, choose your grouping and sorting options, and then click apply.  To acheive similar results in the CQWP will take around half a day for the experienced XSL developer.

For those who like getting dirty in XSL! Well, we cater for you also.  We in fact offer three views: The 'Default View' which looks just like the list itself, The 'Grid View' where you select and customize using point and click, or the 'XSL View' where we have got you started with two XSL files, but allow you to add more.

<Brett/>

See BDC in DC!

Brett Lonsdale will be presenting two sessions on the Business Data Catalog in September at the SharePoint Best Practices Conference in Washington DC this September.  The talks consist of an Introduction to the Business Data Catalog providing you with information and demonstrations on how the Business Data Catalog can help you.  We will be configuring the Application Definition File, setting up the Web Parts, Search and using the Business data in Lists & Libraries.  The second session will be focusing on developing solutions around BDC using the BDC API to develop custom web parts and solutions that display Business Data.  Both talks will incorporate the best practices when using and configuring BDC.

Lightning Tools Ltd will also have a booth where you will be invited to come and talk to us, try out BDC Meta Man and our suite of SharePoint Web Parts, ask questions, and get advanced information on our future tools.

For more information on the conference you can visit the SharePoint Best Practices Conference web site here: http://www.sharepointbestpractices.com/

<Brett />

 

Filtering around DateTime values in BDC

We get asked about filtering around datetime fields quite a lot so decided the best thing to do was to create a wiki page entry on it....check it out here:

http://support.lighteningtools.com/default.asp?W55

SharePoint Silverlight Forum - looking for a few beta testers

After a ton of work to fix the breaking changes represented by Silverlight 2.0 beta 2 we've got the SharePoint Silverlight forums in a state where people can give them a try. As well as bugs we'd like to get, we're also after more general feedback and ideas on what to improve. A couple of notes before you ask to be a tester:

1, This should NOT be tried on a LIVE system, dev or testing only! :-)

2, The forums are in general feature complete for an initial release but there is still a lot of work to be done on them.

3, You'll need to do a little bit of manual configuration (editing web.config etc - hence dev/testing environments only)

 

Having said that we do think the forums are very cool. If you'd like to give them a go drop me an email at nick@lightningtools.com

<Nick/>

BDC Mapper Web Part - new release

We've just released a new version of the BDC Mapper Web Part. This release has two new important bits of functionality:

1, Plot best estimate

We obviously rely on the accuracy of the virtual earth control to plot addresses and sometimes VE isn't going to know your particular location. If this happens for your locations you can now tick a checkbox for 'Plot best estimate'. This will attempt to plot all addresses with Address, City, Country. If it can't find the location with these three values it will just try City and Country. Finally if it can't find those it will just plot against the country value.

Obviously this method is not ideal for everyone which is why we have made it an option that can be selected in the web part properties toolbar.

2, Some new icons.

From feedback we realized that the pushpins weren't for for everyone, a couple of people mentioned they were too large. We've also now included some flag icons that are a lot smaller and therefore take up a lot less space.

3, Map no longer moves when plotting

The map will no longer navigate around when plotting points. If you had a lot of locations to plot, this navigating around.

Customers who already have access to the BDC Mapper can get it from the downloads page. If you want to download a trial of the BDC Mapper you can get it from this page:

http://www.lightningtools.com/pages/bdc-mapper-web-part.aspx

Any feedback or comments please let us know!
<Nick/>

Lightning Tools at TechEd IT Pro Week

Last week we got some great feedback from users of our products, and also people that saw our product(s) demonstrated.  Information is available at TechEd this week at the Binary Wave stand in the Exhibitor Hall.  Eric Schupps will be able to talk to you about our product(s).  Brett Lonsdale will also be attending on Friday should you wish to meet up for a discussion.

<brett/>

Unable to connect to Instance Name - “NT AUTHORITY\ANONYMOUS LOGIN” is denied.

Getting a POC of the BDC working on a single server is a doddle, however when moving to a multiple server environment many people suffer from the dreaded Double Hop issue. We've created a support wiki entry about it, and what to do about it....

http://support.lighteningtools.com/default.asp?W53

 

Any details you think we've missed?

<Nick />

We are at TechEd Orlando..

Brett Lonsdale (Lightning Tools Developer & Co-Owner) will be available at Microsoft TechEd this week for anyone who wishes to discuss BDC or BDC Meta Man or any of our Web Parts.  If you wish to meet up, and see a demonstration of our products, or just grab a coffee & chat, please let me know by emailing me on brett@lightningtools.com.  We can then arrange a meeting place. 

 

SharePoint Silverlight Forums

We wanted to give you a quick demo of something we've been working on for a little while now. SharePoint Silverlight Forums. The best way to see them is from a screencast so please watch the link below:

SharePoint Silverlight Forums Screencast

 

We'd really like your feedback and ideas on this, plus how you can envisage forums in general being improved by the opportunity Silverlight brings along.

We're a little while away from a beta release, but keep your eyes on this blog as we'll be recruiting participants soon!

<Nick />

WCF web services and the Business Data Catalog (BDC)

The general message from Microsoft has been that the Business Data Catalog does not support WCF web services, however while at the MVP summit recently I found out that basicHttp web services would work. I'd suspected this for a while, but due to the message from MS never really looked into WCF further.

So first of all we had to ensure the BDC did work ok with WCF basicHttp web services - check!

Then we had to get BDC Meta Man to generate the application definition files for these web services - check!

Now what we need to do for you is give you a guide on how to create WCF web services for the Business Data Catalog and then integrate them in to MOSS using BDC Meta Man!

Building the web services

We're using Visual Studio 2008 to build our WCF web service. You can get a 90 day trial of VS 2008 here. Because we're working on a SharePoint server we need to manually create an IIS web site to host our WCF service first. You can do this by completing the following steps

1, Open IIS admin screen (administration tools -> IIS)

2, Right click on the Web Sites folder and choose New WebSite

3, Create your web site in IIS as you would do any normal one. Give it a host name, or a unique port - either way remember it.

4, Once the IIS web site has been created open up VS 2008, and choose to create a new Web Site.

5, From the project templates choose the WCF Service template, select HTTP as the location, and enter in the url of the web site we just created above in IIS.

6, Click OK and it'll go and create our project for us in the specified web site. You'll see the below project structure in your Solution Explorer

image

The example we are going to do is to return some product information, so lets rename IService.cs and Service to IProductService.cs and ProductService.cs. I'm not going to go into details about WCF, interfaces and other bits, if you want to learn more I suggest you get hold of this particular book:

Programming WCF Services (recommended by Dmitry!). I have this particular book.

In IProduct.cs we can clean out the existing OperationContract's and the DataContract. Firstly we are going to define our own DataContract, this is going to be a class that we use to describe the data that we are going to return. Here's my DataContract:

[DataContract]
public class Product
{
    private int _ProductId;
    [DataMember]
    public int ProductId
    {
        get { return _ProductId; }
        set
        {
            _ProductId = value;
        }
    }

    private string _ProductName;
    [DataMember]
    public string ProductName
    {
        get { return _ProductName; }
        set
        {
            _ProductName = value;
        }
    }

    private int _StockAmount;
    [DataMember]
    public int StockAmount
    {
        get { return _StockAmount; }
        set
        {
            _StockAmount = value;
        }
    }

    private int _SalePrice;
    [DataMember]
    public int SalePrice
    {
        get { return _SalePrice; }
        set
        {
            _SalePrice = value;
        }
    }
}

Now we need to change our interface class to setup the methods we want our endpoints to provide functionality of. If the interface hasn't been renamed from IService, simply rename it to IProductService, then we want to define our OperationContracts as so:

[ServiceContract]
public interface IProductService
{

    [OperationContract]
    List<Product> GetProducts();

    [OperationContract]
    Product GetProductById(int Id);

    [OperationContract]
    List<int> GetProductIds();
}

For anybody who has developed a web service before to use with the BDC this will look pretty familiar. What we need to do is have a web method for each of the BDC method types. Therefore:

GetProducts - this will be our Finder method. Any filters we would want to use would need to be defined as input parameters for the method.

GetProductById - this is our SpecificFinder method. Pass in the id of a product, and we get the full product information back.

GetProductIds - this is our IdEnumerator method. It simply returns a list of the product ids available. This method is only ever used by search so if you do not want to crawl this entity you do not need to worry about creating this method.

Now we have created our Interface, we actually need to build the methods that are going implement them. Open up ProductService.cs. You may need to change the name of this class to ProductService if VS 2008 hasn't automatically done it for you, and also change the Interface it is going to implement to IProductService. You can also clear out the code that was automatically put in the class for you. We need to implement our three methods in this class, that is GetProducts, GetProductById, and GetProductIds. You would usually do some data access to SQL or something along those lines and return the data, but to save space we are going to hard code some objects. Here is what our ProductService class should look like:

public class ProductService : IProductService
{
    public List<Product> GetProducts()
    {
        List<Product> products = new List<Product>();

        // this is where we would do our data access...
        Product product = new Product();
        product.ProductId = 1;
        product.ProductName = "Red Car";
        product.SalePrice = 6000;
        product.StockAmount = 2;

        // add the product to our collection...
        products.Add(product);

        return products;
    }

    public Product GetProductById(int productId)
    {
        Product product = new Product();

        // this is where we would do our data access...
        product.ProductId = 1;
        product.ProductName = "Red Car";
        product.SalePrice = 6000;
        product.StockAmount = 2;

        return product;
    }

    public List<int> GetProductIds()
    {
        List<int> productids = new List<int>();

        // this is where we would run a query to get all the ids we want to index...
        productids.Add(1);

        return productids;
    }

}

That is our c# code written. Now we need to make an edit to web.config. Here we are defining all our WCF endpoints and the interfaces they must implement. You'll find the line

<service name="Service" behaviorConfiguration="ServiceBehavior">
                <!-- Service Endpoints -->
                <endpoint address="" binding="wsHttpBinding" contract="IService">

We need to change this to

<service name="ProductService" behaviorConfiguration="ServiceBehavior">
                <!-- Service Endpoints -->
                <endpoint address="" binding="basicHttpBinding" contract="IProductService">

There are 3 things we need to change, the service name, the binding type and the contract. The service name and contract represent the changes we made in our class names, the binding -> BDC will only support basicHttpBinding, which generally is equivalent to .NET 2.0 asmx web services.

One final change, double click on service.svc. This is your actual web service page that you can browse to. Here again we need to go from

<%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>

to

<%@ ServiceHost Language="C#" Debug="true" Service="ProductService" CodeBehind="~/App_Code/ProductService.cs" %>

Which again just reflects the changes we made to our class names.

Press F5 to build your WCF project and navigate to your service.svc page. Hopefully you should see something like below:

image

We can take the url for the wsdl file from this page, select and copy it to the clip board.

Now we need to generate our application definition file for our WCF web service, open BDC Meta Man (make sure you are using 3.0.0.4 or above) and connect to a web service

image

In the Data Source screen paste in the url to your WSDL location, and ensure you have the WCF Web Service checkbox ticked.

Now what we need to do is exactly the same as a normal web service, drag and drop your web methods on to the design surface to configure your entities. I'm not going to repeat those steps here, but you can read how to do it and watch a screencast from here:

http://support.lighteningtools.com/default.asp?W4

The only step that is different is when you go to add your SpecificFinder method. You will see that although you have created an input parameter of ID, the WCF web service adds another parameter automatically called IDSpecified. According to this blog post here adding the extra boolean parameter, per parameter you manually create, increases interoperability - but to me it just seems to confuse everything!

Either way you do not need to worry about IDSpecified, just configure the ID column as an BDC identifier parameter as you would with any ASP.NET 2.0 web service, we take care of the rest for you! :)

And that's it....once you have configured your entity you can generate your application definition file, import it to MOSS 2007 and get using it as you would do any other BDC data source - magic eh?!

 

The one thing we are working on now is association methods for WCF web services, currently you can only create basic standalone entites. We'll have this sorted for the next version though so keep watching.

If you have any comments on this blog post or the information contained in it please use the comments. We will eventually turn it into a Knowledge Base article so now if you change to let us know if you do not understand anything!!!

<Nick />

Lightning Conductor Web Part – Re-Strikes!

The Lightning Conductor Web Part has undergone some work and bug fixes, and now contains some new features. With help from our customers and consumers testing the Trial solution, we were able to identify several ways of improving the web part. Since this web part is so popular, please keep your suggestions coming for a version 2.

We realised that not everyone wants to get their hands dirty with XSL to do things like hide headers. So using the SPGridView class we have designed a configurable view where you select the columns, change the sort order, change the grouping, and specify the link column.

The selection pane can be seen below:

image

We also fixed a bug with the Filter, the [Me] keyword and the Date Formatting.

One new feature is to specify your own error message should there be 0 items to roll up.

image

If you haven’t done already, you can get a trial of the web part from here:

http://www.lightningtools.com/pages/lightning-conductor-web-part.aspx

<Brett/>

BDC Meta Man 3.0.0.4

We released a new version of BDC Meta Man on Wednesday this week, version 3.0.0.4

The main bits of functionality added are:

- support for WCF basicHttp web services
- Access 2007 support
- Ability to create associations to entities created as 'blank entities'

The WCF support is definitely the most exciting! I'm writing a blog post as we speak to walk you through creating a WCF web service and get it working the the BDC. Get subscribed to the RSS feed to get alerted when it goes up!

<Nick />

Create, Update BDC Data in a SharePoint List Style Web Part

We are currently developing a new web part that will enable users to manipulate data through a SharePoint Style List. You will be able to input new data, and change data via a grid view web part. We feel that many users don’t just want a read only list of data presented to them in SharePoint, but a more flexible way of updating data also. In some respects this is going to be very similar to that of a SharePoint List, using the same style toolbar to create new rows, and using the same Settings button on the toolbar to change the look and feel of the Grid such as Adding/Removing Columns, changing the sort criteria, add grouping levels, and so on. Users can expect to get their hands on the new web part around mid to late June. Take a look below at how this web part is coming along:
This view is the default view, and you can see that users will find it seamless to use after getting used to SharePoint Lists. It has a similar toolbar, and an easy way to edit data inside the grid.
Via the easy to use toolbar, you can choose which sort order you would like to apply, similar to that of switching views in a SharePoint List:
The Web Part is also very simple to configure. Once you have a BDC Application Definition File uploaded, all you need to do, is configure the LobSystem, LobSystem Instance, and the Entity within the Shared Properties of the Web Part.
We will keep you updated with the Web Parts progression. In the meantime, feel free to email us with any suggestions that you may like to see in the Web Part. Also, if you have five minutes spare! Help us name the web part.
 <Brett />

New BDC Meta Man wiki articles

As I mentioned in the previous post we're doing lots of work now to create more wiki articles to help explain many business data catalog and BDC Meta Man uses. Here are a few of the updates we've added over the last week or so:

Creating associations between web service entities

Adding a filter to an entity - this is one we've been meaning to get done for ages.

Using web services and custom actions

Using SQL Query Wizzard to construct complex entities

 

Hope you find these useful, what are we missing information on?

<Nick />

How best to support you?

Writing code is only part of the process of creating tools and web parts that have good functionality. For the tools and web parts to actually be classed as useful, there also needs to be the other things such as support and documentation. We took a decision very early on with BDC Meta Man not to write reams and reams of documentation, and out efforts would be better put into creating screencasts. We thought screencasts were the quickest way to get people up and going with BDC Meta Man and the BDC in general. We've had some great comments on the screencasts and how useful they are, but some people still love to read .

So we've been putting in a big effort to create some written text to go along side the screencasts we have already produced. You can find all our screencasts and expanding documents in our knowledge base:

http://www.lightningtools.com/support.aspx

Which is also where you can get to our free support forums. If there are any topics you feel are missing urgently (or even non-urgently) please do let us know.

So how do you prefer your support information to be published? Screencast or text?

Welcome

Hello everybody, welcome to the Lightning Tools blog. We know this should have been setup ages ago - but you know the saying? "Better Late than Never!"

We have our email newsletter that we send out once a month or so to let you know about new products and new releases, but once a month is such a long period of time! We have interim releases, new ideas and new products we want to discuss with you all the time and a blog is a great way to do this!

So please subscribe to the RSS feed, leave comments and get involved!