Through this blog, it is my effort to share experiences with the community and make the journey enjoyable.

Friday, September 11, 2009

Connectbeam - SharePoint Connector

Connectbeam, founded in December, 2005, is a leading provider of enterprise social software applications and the first company to integrate concepts of social bookmarking and tagging with those of social networking. Connectbeam's new Spotlight Connect for SharePoint provides SharePoint users with a single destination for discovering and sharing rich enterprise social bookmarking and tagging information. Spotlight Connect for SharePoint also extends and enhances the native collaboration and discovery capabilities of SharePoint Server 2007.

Spotlight Connect for SharePoint -

Spotlight Connect for SharePoint is deployed as a series of customizable SharePoint Web Parts, including:
• Social Search and Related Content
• Social Graphs
• Bookmarks
• Tags
• Groups
• Connections

Suggested Improvements -

SharePoint Document Library - Connectbeam integration

  • Incase user would like to share information in the document library at the enterprise level, option to publish the information to Connectbeam

  • SharePoint List (Announcements, Custom List etc. ) - Connectbeam integration

    In case users would like to share announcement or a part of it with Connectbeam groups or corresponding Enterprise, it would be a good functionality to have.

Share:

Thursday, September 10, 2009

Populating and Creating Business Entities from SharePoint List

Patterns and practices has released a new version of guidance for building collaborative applications.

One of the new functionality provided by the Microsoft group is very useful and generic, w.r.t creating and saving business entities. Concept is based on List based repositories by following below steps -

  1. Business entity class E.g. Customer
  2. Static class that contains the SharePoint field IDs for the list to be used.
  3. Repository class which creates instance of the ListItemFieldMapper class and adds mappings that associate the field IDs to the corresponding property of the business entity

    Please refer - http://msdn.microsoft.com/en-us/library/ee413898.aspx for more details

  4. After business entity and mapping classes are defines, generic functionality could be used to retrieve and save the business entity directly with SharePoint.

    Sample Code -

  • Creating collection for Customer Business Entity:

    public IList<Customer> GetAllCustomers()
    {
    // ...


    using (SPSite site = new SPSite(customerWebUrl))
    {
    using (SPWeb customerWeb = site.OpenWeb())
    {
    SPList customerList = customerWeb.Lists[Constants.CustomerListName];
    CAMLQueryBuilder camlQueryBuilder = new CAMLQueryBuilder();
    camlQueryBuilder.FilterByContentType(CustomerContentTypeName);
    SPListItemCollection items = customerList.GetItems(camlQueryBuilder.Build());

    IList<Customer> customers = new List<Customer>();
    foreach(SPListItem item in items)
    {
    Customer customer = listItemFieldMapper.CreateEntity(item);
    customers.Add(customer);
    }
    return customers;
    }
    }
    }

  • Save a Business Entity to a List

    public void AddCustomer(Customer customer)
    {
    using (SPSite site = new SPSite(customerWebUrl))
    {
    using (SPWeb customerWeb = site.OpenWeb())
    {
    SPList customerList = customerWeb.Lists[Constants.CustomerListName];
    SPListItem customerListItem = customerList.Items.Add();
    this.listItemFieldMapper.FillSPListItemFromEntity( customerListItem, customer);
    customerList.Update();
    }
    }
    }

Share:

Sunday, May 03, 2009

SharePoint List Association Manager

While starting on design of SharePoint Custom applications, one of the dilemma which comes - Whether to use SharePoint lists as DataStore or Use RDBMS for storing master and transaction data.

Advantages of SharePoint Lists -

  • Out of box User Interface, reduces development effort
  • Available UI Column types of text, multi line, drop down, radio button, date time etc.
  • Allow lookup columns to define relationships between lists.
  • Sorting and Paging
  • Different Views based on user needs
  • Multiple Records Data Entry
  • Email Alerts
  • Integration with Excel, Access etc.
  • Provides RSS Feeds

Implementing Database Entities as SharePoint Lists, allow users to perform CRUD operations and out-of-box UI with above features.

Limitation of SharePoint Lists for maintaining Database Entities -

  • As SharePoint manages the storage and retrieval of data, Application developers has no control over it, to optimize or tweak the operation.
  • Performance Issues of SharePoint lists : It is well known about SharePoint List performance issue. Refer - http://sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx?ID=162
  • Basic Database Features missing in SharePoint list - Unique Constraints, Foreign Key relationships between lists, Database Constraints etc.

SharePoint List Association Manager ( SLAM ) overcomes one of the limitation of defining relationships on SharePoint lists. In nutshell, it creates the Database Tables of Lists and Relationships in External Database. Uses SharePoint eventhandlers to update external database list and relationship tables. Association of lists is based on SLAM xml configuration files. External Database provides independent datastore for reporting, and provides performance gain.

Working with SLAM, there are few things, I found out ( based on my current understanding) -

Explaining by taking example of two SharePoint Lists 'Country' and 'City'. 'Country' has a single text column 'CountryCode'. 'City' has two columns - Text column 'CityName' and lookup column from 'Country' list.

  • No constraints on lists at SharePoint lists. It allows deletion of data from 'Country' list, even if we have relationship data in 'City' list.
  • Allows deletion of parent SharePoint list 'Country', even after relationship defined.
  • Duplicates the data between SharePoint list and External Database Tables.
  • Overhead of maintaining SLAM config, as we have already defined metadata for lists in SharePoint.
  • Performance Issues - Takes approx. 30 minutes to sync SharePoint lists having 20000 records. Concerns on implementations with Enterprise applications with large amount of data.

SLAM doesn't provide Database features of primary keys, constraints, triggers etc.

In my view, SharePoint lists should be mistaken as replacement for Relational Database Management System. For small amount of data and keeping SharePoint lists constraints, might be useful for smaller chunk of data.

Share:

Saturday, May 02, 2009

Agile Software Projects - Possible Reasons for failure

Agile's attractiveness with short-burst development cycles, sometimes overshadows the preconditions to rapid-development. The belief in agile is that it's quicker to refactor the product along the way than to try to define everything completely up front, which arguably is impossible.

Potential Reasons for Agile Software Projects failure, keeping Agile Principles in view -

  • Product owners non-commitment to being actively involved throughout the project

  • Not effective collaboration with business colleagues or customers

  • Requirements emerge and evolve, results into Scope changes, creates the risk of ever-lasting projects. Sometimes, No documentation, whatsoever.

  • Wasted Effort on deliverables that don't last

  • Less predictability, at the start of the project and during, about what the project is actually going to deliver.

  • Design flaws - Constant requirements change within short durations, and shorter delivery spans, doesn't allow scope to detailed design. Also, not being aware of high level requirements at the start, doesn't allow to have high level design understanding.

  • Testers needed throughout the project - To ensure quality, additional cost to the project for testing during regular short releases.

  • Development Team Burnout - Agile development is rather intense for developers. The need to really complete each feature 100% within each iteration, and the relentlessness of iterations, can be mentally quite tiring so it's important to find a sustainable pace for the team.
Share:

Friday, May 01, 2009

Oracle SharePoint - Integration Points : Opens new possibilities

Oracle Universal Content Management Integration with SharePoint using Web Parts
WebParts to use Oracle ECM as backend and SharePoint as frontend. The web parts also provide for the use of both a SharePoint content repository and a Content Server repository. Content items can be moved between the two systems. This allows consumers who are familiar with SharePoint to interact with the Content Server through a known interface, thus making it easier to contribute and search for content.
Two primary use cases exist for the combination of the Web Parts product and SharePoint:

  • Using SharePoint to collaborate on documents then ‘promoting’ them to a Content Server for storage or use on the enterprise system. This allows users to manage content in SharePoint, including in workflows, collaboration projects, and so forth, but use Content Server for storage and retention.
  • Using a SharePoint front end but storing the content behind SharePoint in a Universal Content Management (UCM) system. This allows users who are familiar with SharePoint to use that interface for many tasks.

SharePoint BDC to connect to Oracle Databases : Business Data Catalog is a feature in MOSS 2007, it provides you with an easy way to integrate line of business data in MOSS 2007, without any code. Following article provides details on creating and implementing BDC for Oracle Databases.

Oracle Universal Records Management Adapter for MOSS 2007 : It Communicates between Records Manager and SharePoint Database Server. The Adapter provides common retention functionality like identification, search and applying policies on the content items.

Oracle Fusion Middleware combining with SharePoint : Oracle Fusion Middleware includes a unique and broad set of capabilities that help IT organizations get control of SharePoint deployments while enhancing the content experience for end users. It help organizations with

  • Share content once the creation phase of the lifecycle is complete by publishing content to an enterprise content management (ECM) system for enterprise access and distribution
  • Comply with industry or government regulations and policies with centralized policy management across distributed SharePoint environments
  • Implement in-place records and retention management—including legal holds—across SharePoint instances
  • Archive content from SharePoint into a single, secure, online repository
    Securely search across multiple libraries and instances
  • Implement information security across and beyond SharePoint environments—including securing documents on laptops, flash drives, and within systems beyond the firewall

Integrate SharePoint content within enterprise and composite applications

Oracle Access Manager Integration with SharePoint : Oracle Access Manager provides a full range of identity management and security functions, including: Web-based single sign-on (SSO), user self-service and self-registration, user provisioning, reporting and auditing, policy management, dynamic groups, and delegated administration. Oracle Access Manager integrates with all leading directory servers, application servers, Web servers, and enterprise applications.
Once Oracle Access Manager has been integrated with SPPS, the Access System handles user authentication through an ISAPI filter for IIS and an ISAPI wild card extension, which enables single sign-on between Oracle Access Manager and SPPS. WSS handles resource request authorization for all SPPS resources.
Such integration enables authenticated users to enjoy SSO access not just to SPPS resources, but also Oracle Access Manager-protected resources, which can reside on the full range of Oracle Access Manager-supported platforms (such as Windows, Solaris, or Linux,) or application servers (such as WebLogic or WebSphere).

Oracle Database as Role and Membership Provider for SharePoint
ASP.NET 2.0 Membership provides a common user authentication and management framework. It also always to extend it by creating a custom Membership Provider when user information is stored in Oracle.
Benefit of ASP.NET 2.0 Membership - With Membership services, we are able to use pre-built user authentication and registration controls instead of writing them from scratch. The end result is less code to write for login, login status, user identity, user registration, and password recovery.
Reference : http://msdn.microsoft.com/en-us/library/aa479070.aspx

Oracle Virtual Directory : Integration with SharePoint :
Oracle Virtual Directory - Creating a secure application environment requires integration of existing user identity information. For some companies, that information is contained in databases. Others use LDAP directories or Windows Domains. For most, this information is scattered across multiple locations and multiple services. Oracle Virtual Directory provides Internet and industry-standard LDAP and XML views of existing enterprise identity information, without synchronizing or moving data from its native locations. This accelerates the deployment of applications and reduces costs by eliminating the need to constantly adapt those applications to a changing identity landscape as user populations are added, changed, or removed.
The benefits of SharePoint and Oracle Virtual Directory Integration are:

  • Allow a single SharePoint instance to use multiple Active Directory domains
  • Allow SharePoint to use identity information stored in non-Active Directory based identity stores including databases
  • Allow SharePoint to use identity information that is split between Active Directory and non-Active Directory data stores including databases
Share:

Search This Blog

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway. All posts are provided "AS IS" with no warranties, and confers no rights. In addition, my thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out of date posts to reflect my current thoughts and opinions.

Popular Posts

Total Pageviews