in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

OBA, SharePoint and Aghy [MVP]

  • Announcements: ISPA and SharePoint Magazine

     Yesterday was a great day, with two really important announcements:

    Other interesting things are coming...

  • SharePoint Best Practices Conference: My presentation

    The agenda has been uploaded, so I can write about my SharePoint Best Practices Conference presentation. The title is: Reinvigorate the Business Client - Best Practices for Extending your OBA over your Imagination (DEV307)

    OK, but what about my presentation? Of course, main topic are OBA and OCRT.Exactly, I'll show a complex case study and demo: best practices about governing and planning a really complex system with several LOB Systems integrated with OBAs. How to, and how not to.

    On the client side: Office 2007 applications (for example Word), Windows Mobile and of course Internet Explorer for SharePoint sites. Between MOSS 2007 and the clients there is our writable LINQ provider, LINQ4SP. Behind MOSS there are SQL Server Reporting Services (SSRS), SQL Server Data Services (SSDS), and Microsoft CRM as LOB Systems.

    Of course, the other focus will be on OCRT: I'll show some custom OBA components, and use them by OCRT.


    To be continued...

  • SharePoint Infrastructure Updates

    SharePoint Infrastructure Updates has been published a few hours ago. These are more than a simple hotfix or SP1, they bring a lot of functional additions as well. For example, we have a brand new search UI and administration page:

     

    Similarly, we can find Content Deployment updates, performance upgrades, etc. You can find the full info in the Product Group's Blog.

  • SharePoint Best Practices Conference

     

    The SharePoint Best Practices Conference will be organized in Washington D.C., 15-17 September, 2008. I'm really proud to say: I'm one of the presenters! This morning I've received a mail to my Inbox: "Your Session has been Selected for the SharePoint Best Practices Conference"

    My session's Title: Reinvigorate the Business Client - Best Practices for Extending your OBA over your Imagination

     

  • LINQ4SP News

    We have a new LINQ4SP version uploaded to our site. This new file doesn't contain new features, but has been extended until 1 Sept 2008.

  • VSeWSS 2008 1.2

    VSeWSS 1.2 is here! The new version is avaliable for VS 2008, so let's start to use!

     

    Visual Studio 2008 Project Templates
    • Web Part
    • Team Site Definition
    • Blank Site Definition
    • List Definition
    • Empty SharePoint Project

    Visual Studio 2008 Item Templates (items that can be added into an existing project)

    • Web Part
    • Custom Field
    • List Definition (with optional Event Receiver)
    • Content Type (with optional Event Receiver
    • Module
    • List Instance
    • List Event Handler
    • Template


  • Important: LINQ4SP site moved!

    Because of a problem with our hoster, the LINQ4SP download has moved to a new URL. Please, if you are interested, follow this link and get updated.

    Sorry for the inconvience.
     

  • Case Study: Insurance Contract Management - Part I.

    We have an insurance customer, who required a contracr repository. WSS 3.0 fits on their base requirements, but they had some special needs as well: First of all, at the end of contracts' lifecycle, after signing them, we have to save several attachments, for example scanned copies or some appendixes. In one word, every contracts contain a main document and some attached documents, so we need document libraries with ability to attach files to documents. The second special need is a custom field, which manages the contract elements' permissions.

    Document library with ability to attach files

    In WSS 3.0 we don't have any out-of-the-box feature to manage attachments in document libraries, so we have a little trick. Our steps were the followings:

    • Create the base document library, which stores the contracts.
    • Create a secondary document library, which will store the attachments. This library have to contain a lookup column to the base document library - we store here a reference to the bace contract for every attachment.
    • Insert special commands to base library's element menu with a little javascript added to a Content Editor webpart on AllItems.aspx: one for Add new attachment, and the other one for View attachments:
      <script language="javascript">
      // Add a custom menu items into the menu
      function Custom_AddDocLibMenuItems(m, ctx)
      {
      var strDisplayText = "Add new Attachment";
      var strAction = "window.open('http://myserver/insurance/Attachments/Forms/Upload.aspx?&RelatedDocumentID="+currentItemID+"');";
      var strImagePath = "/_layouts/images/attach.gif";
      // Add our new menu item
      CAMOpt(m, strDisplayText, strAction, strImagePath);

      var strDisplayText2 = "View Attachments";
      var strAction2 = "window.open('http://myserver/insurance/Attachments/Forms/AttachmentForContract.aspx?&ID="+currentItemID+"');";
      var strImagePath2 = "/_layouts/images/attach.gif";
      // Add our new menu item
      CAMOpt(m, strDisplayText2, strAction2, strImagePath2);


      // add a separator to the menu
      CAMSep(m);

      // false means that the standard menu items should also rendered
      return false;

      }
      </script>
    • In the attachment library we have a lookup column to the base document library, so we have to set a default value to the base contract. This contract's ID is passed by ID parametet.
    • That's all :) The AttachmentForContract.aspx is a custom list of contracts filtered by ID parameter. If the user click to View attachments menu, he/she will be redirected to this page, and he/she can see the attachments for base contract passed by ID parameter.

     

    In the next part, I'll show you how you can develop a custom field, which is responsible for rights management on a list item or a document.

     

     

  • LINQ4SP - Delete a list item

    OK, let's play with LINQ4SP again.

    You can download Beta1, write a simple query, create a new list item and lookup fields. In the next part I'll show you how to delete an item from a list:

            [TestMethod]
    public void DeleteCreatedItems()
    {
    using (AwContext context = new AwContext())
    {
    var q = from subCategory in context.ProductSubcategory
    where subCategory.Title == "new sub category"
    select subCategory;

    foreach (ProductSubcategory psubcat in q) psubcat.DeleteOnSubmit();


    var p = from product in context.Product
    where product.ProductNumber == "AA" ||
    product.ProductNumber == "Double test" ||
    product.ProductNumber == "Date test"
    select product;
    foreach (Product prod in p) prod.DeleteOnSubmit();

    var z = from pc in context.ProductCategory
    where pc.Title == "new product category"
    select pc;
    foreach (ProductCategory prodcat in z) prodcat.DeleteOnSubmit();

    context.Submit();
    }
    }
  • LINQ4SP Beta1 is here!

    I'm really happy to announce: beta1 release of LINQ4SP is available, and can be downloaded. If you are interested, you can find the install kit and Release Notes on this URL..
    If you have tried it or just generally have some thougths please feel free to comment here or e-mail me at molnar.agnes{at}lmsolutions.hu

    If you find any bugs, and would like to report it to the developers, here is the issue tracker of the project: bugs.lmsolutions.hu - after opening site select project LINQ4SP.

    As this will be a commercial product in the near future, active testers will be rewarded if they decide to buy our solution later on.

  • LINQ4SP - How to create a new item with a lookup to another list?

    Well, how do you like our solution to query a list or insert a new item to a list by LINQ4SP? What do you think about it?

    What would you tell, if I show you a newer interesting thing? Are you ready? - OK, today surprise is how to insert a lookup reference to another list. See this short demo, or check a piece of code here:

                    // Create a new Category
                    ProductCategory pc = new ProductCategory()
                    {
                        Title = "new product category",
                    };

                    // Create a new Sub-Category item
                    ProductSubcategory pcat = new ProductSubcategory()
                    {
                        Title = "new sub category",
                        ProductCategory = pc
            // <<-- WOW! This is a lookup to Categories...
                    };

                    // Submit our new Sub-Category
                    context.ProductCategory.InsertInSubmit(pc);
                    context.ProductSubcategory.InsertOnSubmit(pcat);
                    context.Submit();

    So, how do you like it?...
  • LINQ4SP - Create new list item

    Well, we can query our SharePoint lists with LINQ4SP, that's great.

    But what about data manipulation? Can we create, modifiy or delete items as well? My answer is: yes, we can! We are able to create new item, modify or delete items with LINQ4SP!

    First of all, let's see an item creation: we'll insert a new Product item to our Products list. This list is migrated from AdwentureWorks database, with some other tables. We don't need the whole AdwentureWorks database for our demos, so we migrate only a few tables, as you can see on the following schema. One special thing is, that we don't have ProductVendor list, but it't just represented by a multi-lookup field between Vendor and Product lists (of course, with no additional fields).

     

    So, in this demo I'll show you how to insert a new Product into the SharePoint list. Are you ready? Click here for video... 

  • LINQ4SP - Simple Query

    In the last demo I showed you are able to generate the context and business classes with the LINQ4SP code generator.

    This time I would like to go through and easy query generation and some basic filtering.

    First we generated the context from a SharePoint list and created a test project. This is, where the current video starts...

    More to come, stay tuned ! 

  • Architect Academy in Hungary

    Microsoft Hungary will start a new, intensive training series  for architects and senior developers. The main goal is to give a wide and deep architectural knowledge for participants.

    The Architect Academy's main topics are:

     

    • development methods and tools
    • design patterns
    • development tools: application lifecycle management (ALM), TFS+VSTS+EPM
    • application platform: .NET, WCF/WF/WPF/CS
    • application platform: DSI
    • application platform: application integration, ESB/ISB
    • application Platform: SharePoint, OBA
    • application platform: business intelligence (BI)
    • user experience (UX)

     

    I'm one of the trainers - maybe you are not surprised, if I tell you: my topics are SharePoint and OBA: Is SharePoint a development platform? What benefits do you have during SharePoint developments? What about Workflow, InfoPath Forms Services, BDC, etc. - and of course, what is OBA? Where is its place in our project, how can it help our customers' work?

    I think it will be a really useful and exciting training-series - if you are interested, register here.

  • LINQ4SP - Code Generator

    As we're planning to release LINQ4SP Beta1 at the end of this week, let's start to show some pieces of it!

    First of all, I'll show you how you can browse your site's content, and select what you want to use in the generated code. You can select lists, columns, lookups, etc. After finishing the selection, you can open and use the source file. If you want to see, how does it work, click here for a short demo.
     

  • Announcing LINQ4SP

    If you are a SharePoint developer, most probably you have heard about the LINQ to SharePoint project on CodePlex. You may have also tried it several times. Our company did that too, but after deeper investigations we decided to create our own LINQ implementation, LINQ4SP. Why?
    Here you can find our reasons:
    • Our architecture is built on design patterns and has a clean and easy maintainable structure. We make use of the visitor pattern by evaluating the LINQ expressions as is the case in other LINQ implementations. This reduces the code, simplifies the structure and creates an easy extendable solution.
    • Our code generator operates SPWeb based, not SPSite based, so it’s not limited to the lists on the root web of every site collection.
    • We make use of internal names instead of the display names, which makes it possible to alter the list definitions and wording as the end users whish, it will not crash the applications developed with this library.
    • Support for all built in column types of SharePoint 2007 and plan to add support for custom fields too.
    • This solution will be well and thoroughly tested, supported and further developed, because it’s already used in our everyday work in our running implementation projects.
    • Our implementation has support for list item creation, altering and deletion.
    • Our implementation has support for content types both in the code generator and in the query syntax. It’s possible to query list based on the assigned content types.
      • Support for content type inheritance. This means: for example, you have content type A and B, where both inherit from C. If you have a list, where you only attach A and B to, you will still be able to query the list based on the common content type C.
      • Support for special content types:
        • Folders
        • Documents
    • Our implementation comes with an operation based context based (a separate context for every session)      

    You can find a detailed feature-by-feature comparison in the following table.

     

    So we are proud to announce the upcoming beta1 release of our LINQ4SP library. Are you interested?

    Stay tuned! 

  • Announcement: OBA Composition Reference Toolkit 2.0

    Good news: the OBA Composition Reference Toolkit 2.0 is ready to use!

    Version 2.0 (V2) of the OBA Composition Reference Toolkit evolves the Version 1.0 release of the Toolkit to add information technology (IT) administration capabilities, a prescriptively secure user experience for OBA composition, and incremental deployment of OBAs. The V2 release also provides support for installing the OBA Composer on a client computer that is running the Windows Vista operating system and connecting to a remote computer that is running Office SharePoint Server. The release provides support for many new, out-of-the-box components, too, which cover scenarios that pertain to Expense Reporting, Purchase Requisition Management, Financial Services, and Health & Life Sciences solutions.

    The V2 release also includes the source code (framework, tools, and sample components) of the OBA Composition Reference Toolkit to enable independent software vendors (ISVs) and solution integrators to extend and repurpose the Toolkit to suit their individual needs.

    In the next days I'll update my OCRT server, install the client to my Vista - and of course, start to create my own components :)

    If you are interested, you can find more information about OCRT 2.0 in these documents:

     

    To be continued...

  • OBA Composition Reference Toolkit 2.0

    I have really good news: the OBA Composition Reference Toolkit version 2.0 is coming soon, in the first half of May. This release will extend the functionality of the V1: it'll contain security handling, incremental provisioning, and we'll be able to install the Composer client to Windows Vista, and let the server on a remote SharePoint server. Moreover, we'll able to use a lot of new components for HR recuriting, Expense Reporting, Purchase Requisition Management, Financial Services, Health & Life Sciences.

    But if we think as a developer, here is the most important thing: the full source code of the OBA Composition Reference Toolkit will be available for us, for free! We'll have codes, documentation and all. So we'll be able not just to write our own components integrated to the Composer, but to extend the Composer's functionality as well, regarding to our or customers' needs. Wow!...

  • Generate documents with OBA

    In the OBA demo Part 1 and Part 2 I presented how we can easily deploy and provision OBA components with OBA Composer. In this post, I'll show you an example developed by our team which creates some documents from LOB System data.

    Now let's see a general user need: we'd like to generate several documents from data stored in several LOB Systems: contracts, specifications, training materials, etc. These document types have common parts, but we need custom information as well. We have some other important requirements too:

    • The data source have to be transparent for the end users
    • Let's use our existing client softwares
    • Minimize (or avoid, if it's possible) the LOB Systems' modification
    With help of my developer team we made a little demo OBA, which hasd the following layers:
    • On the client side we have a VSTO Word Add-in (the Word 2007's UI is well known by end-users, so they are really happy with it)
    • The VSTO Add-in communicates with the other layers via a WCF (Windows Communication Framework) layer.
    • At the bottom we have SharePoint lists and libraries as data sources, we store in them everything in this version.
    • Between the WCF and SharePoint we have a layer called LINQ4SP. This layer developed by us contains custom components for SharePoint. The goal of this module is to make the development process more productive and less complicated. We're planning to make a public version of this component in April 2008.

     

    Well, now let's see how does this component work. First the user pick up a Section type (i.e. Contracts), then he/she can select a section (chapter) from this type. The VSTO Add-in reads the section's document from the SharePoint library via several layers.

    But generally the documents live with included dynamic property fields. In this example we put customer info into documents (company name, address, tax number, account number, contact, etc.) - of course, we can have different data sources (SQL, SAP, Oracle etc. or Web Services), not only SharePoint lists.

    We can insert the customer data into my document via embedded property fields easily, and the pre-defined sections contain these property fields as well. When the user selects a customer and contact, all the information will be inserted or updated in the document.

     

    OK, but how can we use this OBA? In our company, we use it for generate training materials, contracts and several project documents. Of course, we make some further development as well, so if you read my blog, you'll be informed about our new components and developments.

    Posted Apr 21 2008, 03:05 PM by Agnes Molnar with 2 comment(s)
    Filed under:
  • OBA demo - Part 2

    In the OBA demo Part 1 we could see how we can build component-based applications by OBA Composition Reference Toolkit. But these are only the base things - these are really important, as in a building, but we can't move in yet. We're really happy to have it ready, it's an important step to our goals - so let's go away! Well, in the following demo I'll present you how we can build the next phases of our OBAs, what kind of possibilities we have, and what are the limitations.

    So, let's see some interesting possibilities in the OBA Composition Reference Toolkit's currect version. For example, if we'd like to add further components to our existing OBA, we have more possibilities. First, we can choose a component from the filterable list (see OBA demo - Part 1).

    Second, we have a chance to search for some related, compatible componets to our existing components (Related Components). We can do this, because we can define some interfaces to our OBAs, so they can communicate with others.

    (Click on the picture for the short demo.)

    That's good. But in this version we have a small trouble with this method. We create an OBA with related SharePoint site, then upload some content or make some customization. After that we'd like to add a new component, with a new Provisioning - we can do that, but all of the former contents will be lost! The OBA Composer will overwrite the full site. It could be really cumbersome. But here is a good news: we'll have a new version soon with incremental provisioning!...

    Our house has its walls already. Let's go forward...

  • MVP Summit 2008

    Welcome from Seattle - I'm just arrived this afternoon to participate on MVP Summit 2008. Actually here is night, but I have a jet leg (9 hours difference to Hungary) - I hope, I can reduce it soon.

    I think, it'll be a great event to learn a lot of things, and meet a lot of interesting people (first of all, other SP MVPs). I can't wait Monday! :)
     

  • OBA Composition Reference Toolkit VPC

     

    Yes! Yes! YESSSSSSSSSSS! It's downloadable!

     

    The VPC Image is downloadable for everyone, which contains the OBA Composition Reference Toolkit presented by me several times in Hungary (Hungarian Architecture Forum, Visual Studio 2008 Launch, etc.). The OBA Composer is downloadable for several weeks, but needs a really complitated server environment. The newly accessible virtual environment is a really big help for us - could you imagine that?

     

    The fully installed VPC can be downloaded from http://connect.microsoft.com. After log in, you can sign to the "OBA Reference Architecture Packs" connect program. Here you can download  the VPC image, and you can find some details about it as well (for example user credentials).

     

    The documentation of OBA Composition Reference Toolkit, hands on lab, etc.  are downloadable from related MSDN site.

     

    And finally: we're waiting for the next version of this toolkit to the second half of April. In that release we will find a real client-server Composer application, incremental provisioning feature, OBA Services in the SSP, and other powerful and interesting things.

     

  • WSS 3.0 --> MOSS 2007 migration

    One of our customers had WSS 3.0, and just decided to upgrade it to MOSS 2007. The installation was successfully finished by their own operational team, and they was waiting for us to migrate the sites and other contents. OK, it's a really average task, but here is the trick: we had to keep the GUID of all documents and list items because of a custom feature. (All documents and list items are identified by GUID in this feature.)

    Well, how to start a task like this? - Of course, planning. What we have to migrate: sites, lists, documents, features, custom settings and custom requirements. One of there custom requirements is the GUID-issue: how can we guarantee the proper working after migration?

    Ok, let's migrate the database. Copy the content database from WSS to MOSS database server, and let the MOSS to "eat" it. I'll write it in a professional language as well, but here is an other issue: we faced that the operational team installed a Hungarian MOSS, but the WSS is an English one...

    No problem, the Language Pack can make a wonder for us: let's install an English Language Pack to the Hungarian MOSS (it's not the first time to do that), and let's start the migration:

    1. Stop the WSS Services, and detach the WSS_Content database.
    2. Copy the MDF and LDF files to the new database server (if it's needed).
    3. Attach the database on the new server.
    4. If the WSS have to work on, attach back the saved database to the WSS's DB server, and start the WSS services.
    5. Go to the MOSS Central Administration, and create a new Web Application. Give a custom name to your WebApp's content database, for example WSS_Content_Temp.
    6. Add the WSS_Content database to the Web Application with this command:
      stsadm.exe -o addcontentdb -url http://<server>:<port> -databasename <content database> -databaseserver <DB Server name>
    7. Now we have a Web Application, which has two content databases: the old WSS_Content with our sites, and the new, empty one: WSS_Content_Temp. Go to the Central Admin > Application Management > Content Databases, and delete the empty WSS_Content_Temp database.
    8. Install and activate the required features

    That's all! We're ready to use the old contents and features on the new MOSS server. We have the original GUIDs, the original Created By and Last Modified By fields for all list items and documents - the full process was transparent for users, except the new URL, and the new features and functions came with MOSS...


  • Most Valuable Professional

     I'm really happy and proud of writing these words: I have been awarded SharePoint Server MVP from April 1, 2008.

     I'd like to say thank you to all my friends and colleagues, who was helping me to achieve this award.

     I'd like to say thank you to YOU, all readers of my blog as well: thank you for all feedbacks, comments and e-mails.

     I promise, I'll continue...

  • Announcement: MOSS 2007 and Community Server 2008 integration

    A very new announcement: the Telligent Community Server 2008 and Microsoft Office SharePoint Server 2007 will be really rich integrated. MOSS 2007 and Community Server work together to connect people, processes, and information to form a robust social networking solution. By positioning Community Server next to your existing SharePoint application, you unlock several key integration points:

    • Fully Integrated Experience
    • Enterprise Grade Blogging
    • Feature Rich Forums
    • Social Streams
    • Rich, detailed Reporting
    You can find more informations here.

     

More Posts Next page »

Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts