Commerce Server Blog

Build world class ecommerce applications using Microsoft Commerce Server
  •  
  • Home
  • About
  • Advertise
  • Copyright Policy
  • Disclaimer

Commerce Server Estimation

ravikanth | November 28, 2009

This blog is continuation to my previous blog – Ecommerce Estimation. In this blog we will discuss how can we break up the modules into components and come up with a ball park estimation figure. Estimations are based on expert judgment and this blog will provide an approach to follow

There are many ways of estimation and few of them are

1. Analogous estimation : This is done on variety of project parameters (like budget, scope, cost, etc) and measure of scale. This is typically a form of expert judgment and mostly reliable if previous project is similar to current project. If you are doing retail ecommerce project for second time, then you may opt this methodology.

2. Use case based model: This technique is used to do estimation based on application use cases complexity (simple, average or complex). The main disadvantage of this approach is that it doesn’t cover all non-functional requirements and most of current projects doesn’t cover all possible use cases. I recommend to go with use case model approach to come up with test effort estimation.

3. Top down estimation: This model gives senior management to control for decision making. Many companies have their own estimation tools and these calculations are derived from previous projects metrics. Note: With this estimation effort variance can come up to 100%, that means an effort estimation of 100 hrs in top-down estimate may go up to 200 hours in actual.

4. Bottom up estimation: This estimation model will give us the ability to get more refine estimate for particular component of work. Here, we will break a task into components and estimate the effort required for the tiny components and cumulating of all components gives overall project estimation. These estimates will be almost equal to actual and may go up to +/- 20% variance.

Lets discuss how can we do commerce server bottom up estimations. Commerce server development mainly contains front end (FE), Components (like pipeline, API access, etc), schema creation, etc. To develop the estimation we have to follow below approach.

  1. Develop factors for the application (mostly you can get them from your previous project or develop new if they don’t exist)
  2. Divide the application into modules/tasks/components.
  3. Define inventory street – to map components to factors and complexities. 
  4. Calculate build and other estimations.

1. Defining Factors: Here are some factors and figures shown are in hours.

Factor Name Description VS S M C VC
ASP.NET to develop & unit test (UT) ASP.NET page 4 8 16 24 30
ASP.NET Component to develop & unit test ASP.NET page with patterns (like MVP, MVC, etc) 8 16 24 32 40
Win forms to develop & unit test win forms 4 8 12 16 20
Business Logic to develop & UT business logic or work flow 4 8 12 16 20
Business entities to develop business entities required for the application 2 4 6 8 10
Data access to develop data access components. 4 8 12 16 24
Interface to develop application interface (web services) to external applications 4 8 12 16 24
Tables To develop tables required for the application 2 4 8 16 32
Stored procedures(SP) To develop stored procedure required for the application (blind rule – 1 table = 4 SP) 2 4 8 16 32
Batch/Service programming to develop & unit test batch or service programming 4 8 16 24 32
Error Handling To develop error handling framework in to the application 16 32 64 80 128
Validation Framework To develop validation framework in to the application 16 32 64 80 128
Caching Framework To develop caching framework in to the application 16 32 64 80 128
Encryption framework To develop encryption framework in to the application 16 32 64 80 128

* Very Simple (VS), Simple (S), Medium (M), Complex ( C), Very Complex (VC)

2. Define Components : I feel this is totally expert task and a novice person can do mistakes. You should have a vision on the entire application and how it works. The goal here not only break up modules into components but also list down the assumptions you made or risks you foresee. For example, If you feel some thing you are not aware or you made an assumption for your estimate (like the third party web services will be ready by before you start developing x component). The accurate estimation comes if you close all risks and assumptions.

3. Build Inventory sheet:  Now let’s bring components, factors & its weights in one sheet. This sheet can be used by the client or SME from your company to validate your estimation. Note: A component can have multiple factors.

Module Task Component Description Factor VS S M C VC Notes
M1 T1 C1 web page ASP.NET 1   2     XXX
        Business Logic       1   YYY

4. Calculate Efforts: Once the inventory is completed – it is simple formula to calculate the efforts required to develop that component. In the example above ASP.NET effort is calculated as 1 * 4 (S) + 2* 16 (M), that comes to 36 hours. At the end of the exercise you will get build efforts but project life cycle contains other phases like plan, analysis, design, test, deploy, project management,etc. I recommend to calculate these phase efforts based on build efforts and this rule may not be applicable for app. packaging projects (like CRM, etc). You have to refer to company metrics to come to exact figures and generally I recommend following calculations

Phase % of Build
Plan

10

Analysis (more external systems integration exists)

20

Design (more external systems integration exists)

75

Build

100

Test & Fix (it will be more if we are going with performance, usability, security testing)

100

Deploy

15

Program Management

15

You may come to tentative figure in your initial round of estimation and this figure will refine once it get reviewed by other SME or whenever the assumption is cleared. Don’t forget to add contingency at the top of the estimate. You might be thinking what is different from .NET applications and the answer is there is not difference in the methodology but the difference is in factors and their weights. Hope you might of gained some knowledge on this topic and If you have any questions or suggestions, drop me an email – kanth @ ravikanth.net.

Comments
2 Comments »
Categories
Commerce Server 2009, Ideas, commerce server 2007
Tags
commerce server Estimation, Estimation
Comments rss Comments rss
Trackback Trackback

Integrating Commerce Server Profiles with External Data Sources

ravikanth | November 19, 2009

Commerce server profile system is very flexible to allow developers to map the properties to different data sources (active directory and sql server) and this configuration change is totally isolated to calling function and commerce server takes responsibility of pushing/getting the data from multiple sources when any operation is performed. In current ecommerce world, is this functionality enough? then the answer is NO as current ecommerce applications are running on different platforms like SharePoint or silver light and integrated with ERP systems (like SAP or Dynamics Axapta).

On 18th November, Microsoft has released a white paper which provides integration scenario on following items with operation sequence components examples.

  • User profile information shared between Commerce Server and Microsoft Office SharePoint Server (MOSS).
  • User profile information shared between Commerce Server and SAP.

You can read & explore more on this whitepaper by downloading it from Microsoft site and the url is
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ce5629ad-2473-4c25-8f89-91c8530cd764

Comments
No Comments »
Categories
Commerce Server 2009, Ideas
Comments rss Comments rss
Trackback Trackback

Commerce Server 2009 November VPC ready for download

ravikanth | November 15, 2009

This week Microsoft has released commerce server 2009 VPC and you can able to download it from connect website. This VPC is same as CS2009 September VPC but expiry date update and some minor changes to marketing material. To download this VPC, you have to fill a survey. Once you submit the survey (by providing all details), it will take 1-2 business days to get your copy and it can be seen from downloads folder. No e-mail notification will be sent to you confirming its availability. So, what are you waiting for – click on the link below and download your copy.

https://connect.microsoft.com/content/content.aspx?ContentID=14602&SiteID=643

Note: This VPC will expire on Feb.12th 2009.

Comments
No Comments »
Categories
What's New
Comments rss Comments rss
Trackback Trackback

Troubleshoot: Error message when you open a Commerce Server 2009 Web site that is integrated into SharePoint when the SQL Server and the Commerce Server are installed on different computers: "Server Error in ‘/’ Application

ravikanth | November 13, 2009

This issue will come when deploying the application in a two-tier configuration, when MOSS/Commerce Server and SQL Server are installed on different computers.  With the two-tier configuration, if you are required to use Kerberos authentication and to specifically grant client user access to the Commerce Server SQL databases.  This configuration was triggering problems when integrating with the FAST SharePoint Connector for indexing the site.

Without the Hot fix, the authentication scenario in place is the “double-hop” authentication issue, where the client user identity needs to be delegated from the Web server to the SQL server (to access the databases).  Therefore Kerberos authentication is required because NTLM cannot delegate the user.  After installing the Hot fix, you can able to successfully access the site with NTLM authentication, and the site uses IIS Application Pool identity to access the commerce server SQL databases.  This is important because using Kerberos authentication is a good practice and desirable for security and performance reasons. Thanks Roger for pointing to this hot fix.

The hot fix is available in MS support site and click below link to download it.

http://support.microsoft.com/default.aspx/kb/975603

Comments
No Comments »
Categories
Troubleshoot
Comments rss Comments rss
Trackback Trackback

Retrieve Products using Commerce Server Foundation

ravikanth | November 10, 2009

Commerce serer 2007 exposes different API for different purpose but the main disadvantage is that it doesn’t give flexibility to develop ecommerce applications for multiple devices (channels – mobiles, kiosk, etc). To overcome this problem Microsoft has wrapped a new API model (multi-channel foundation) on top on existing commerce server runtime API. It exposes a set of models, known as commerce entities (such as products and baskets – similar to .NET entities) to represent the conceptual view of e-commerce. To know more about this, you can refer to following urls.

http://microsoftblog.co.in/commerceserver/how-i-learnt-commerce-server-foundation/

http://msdn.microsoft.com/en-us/library/dd327929.aspx

In this post, I am trying to fetch products under a category using commerce server foundation. The method takes three parameters – catalog name, category name and user id and returns all products in the form of datatable.

public  DataTable GetChildProducts(string CatalogName, string parentCategory, string userId)
{
CommerceRequestContext requestContext = new CommerceRequestContext();
requestContext.Channel = "Default";
requestContext.UserId = userId;
requestContext.RequestId = Guid.NewGuid().ToString();
requestContext.UserLocale = "en-US";
requestContext.UserUILocale = "en-US";

// Create a Operation Service Agent
OperationServiceAgent operationService = new OperationServiceAgent();

// Define DataTable
DataTabl productsDataTable =new DataTable();

// Query for a Product
CommerceQuery<CommerceEntity> queryBuilder = new CommerceQuery<CommerceEntity>("Category");
queryBuilder.SearchCriteria.Model.Id = parentCategory;
queryBuilder.Model.Properties.Add("Id");
queryBuilder.Model.Properties.Add("DisplayName");
queryBuilder.Model.Properties.Add("ListPrice");
queryBuilder.Model.Properties.Add("Description");

// Add more properties here….
queryBuilder.SearchCriteria.Model.Properties["CatalogId"] = CatalogName;

// Add Related Query Operation for Canonical Categories
{
CommerceQueryRelatedItem<CommerceEntity> childProduct = new CommerceQueryRelatedItem<CommerceEntity>("ChildProducts", "Product");
childProduct.Model.Properties.Add("Id");
childProduct.Model.Properties.Add("DisplayName");
childProduct.Model.Properties.Add("ListPrice");
childProduct.Model.Properties.Add("Description");
queryBuilder.RelatedOperations.Add(childProduct);
}

CommerceResponse response = operationService.ProcessRequest(requestContext , queryBuilder.ToRequest());

// Handle Responses
CommerceQueryOperationResponse queryBuilderResponse = (CommerceQueryOperationResponse)response.OperationResponses[0];
productsDataTable.Rows.Clear();
if (queryBuilderResponse.CommerceEntities.Count > 0)
{
CommerceEntity category = queryBuilderResponse.CommerceEntities[0];
//Iterate over Child products
if (category.GetPropertyValue("ChildProducts") != null)
{
foreach (CommerceRelationship childProduct in (CommerceRelationshipList)category.GetPropertyValue("ChildProducts"))
{      
            CommerceEntity product = childProduct.Target;
             DataRow newProductRow = productsDataTable.NewRow();
             newProductRow["id"] = product.Id;
             newProductRow["DisplayName"] = product.GetPropertyValue("DisplayName");
             newProductRow["Description"] = product.GetPropertyValue("Description");
             newProductRow["Price"] = product.GetPropertyValue("ListPrice");
             productsDataTable.Rows.Add(newProductRow);
}
}
}
return productsDataTable;
}

Comments
No Comments »
Categories
What's New
Comments rss Comments rss
Trackback Trackback

« Previous Entries

Sign up for Newsletter


Categories

Quiz

  • Catalog Quiz for Beginners
  • Profile Quiz for Beginners
  • Quiz 1 for Advance Users
  • Quiz for Beginners

Recent Posts

  • Configuration Error: Could not load type ‘Microsoft.Commerce.Providers.SharePointCommerceOrderModule from assembly because the parent type is sealed
  • How commerce server Site Terms are stored
  • Troubleshoot: An unexpected error has occurred.
  • Design consideration for developing commerce server catalog system
  • Troubleshoot: AuthManager(CommerceServer): Error reading Commerce Server administration database
  • Account Creation Approval Process
  • Troubleshoot: Unauthorized exception when the new user tries to access MyAccount page
  • Microsoft Commerce Server 2009 code name "R2" – January 2010 Community Technical Preview
  • Merchant Access to Catalog Manager
  • Commerce Server 2009 December VPC ready for download

Archives

  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008

Tags

add discounts add images to profile Advantages of commerce server approve discounts authentication auto login process automatic user creation basket Brand Management business tools campaign management Catalog catalog import Category CategoryConfiguration cc_number checkout commerce 7 commerce server commerce server 2002 commerce server 2007 commerce server 2007 Display Types Commerce Server SP2 discounts ecommerce Estimation inventory Kanth Koppala marketing system migration error Mojave Product profile profile subsystem property metadata purchase order quick checkout Ravi Ravi Kanth site cache refresh starter site tools transactions error Variant
(c) 2009 Commerce Server Blog. All rights Reserved. Articles cannot be reproduced without permission from the author.Write to me at kanth@ravikanth.net if you have any comments, questions, suggestions about this site or would like to send us a tip
About Us | Terms of Use | Disclaimer | Advertise .