Search This Blog

Wednesday, July 02, 2008

Microsoft - Master Data Management

 

At last there is activity on the MDM side of things from Microsoft. I have been following industry news and Microsoft news on Strature acquisition by Microsoft since mid 2007. Finally there is a dedicated site for this (Master Data Management).

However there are few questions on how +EDM will be utilised within the Microsoft Business Applications suite (MS CRM, Axapta, Navision etc). +EDM originally focused on hierarchy management and business intelligence. I have not seen any literature which project +EDM with pre-built data models such as its competitor products (IBM WCC, IBM WPC, Seibel UCM and the likes)

 

1) Does Microsoft present and industry specific data model through +EDM?

2) If Microsoft presents the industry specific data models, do they relate back to their own products or be product neural?

3) Will there be a product or Guidance specifically around meta-data management (because Master Data and Meta Data are the two pillars that are required for SOA)?

Also note that MDM is not mentioned on Microsoft SOA web site like it competitors

Thursday, May 29, 2008

Solution Architecture - Scalability & Availability.

Scalability and Availability are two non-functional requirements that I could never reject or push-back to the business. It is critical that a business application is available to all intended users/audience at the agreed service levels. Although this is not a SLA discussion it is important to mention SLAs. SLA usually define your Scalability and Availability aspects. Getting back to our original discussion about how to scale, here are few pointer that we usually look to:

 

  1. Business Functions that Support the day-to-day business transactions.
  2. Infrastructure Functions that indirectly support business functions. These are typically re-usable components.
  3. Caching Aspects
  4. Distributed transactions

Without going to deep into the issue, here is the link on how Ebay manages these issues:

Scalability Best Practices

Tuesday, March 18, 2008

Brading a website

It's too long since this blog post was updated. In fact the claim blog was helpful, you know what I mean.
Recently I was at a Portal Demonstration of a large organization. As usual, technology was presented in the best possible way. All kudos to the presenter. However, during the Q&A session one of the gentlemen said:
"Brading is easy, it is about pictures and colors. What is more difficult is the customer experience".
Hmmmm. I have a purticular problem with this statement. I didn't make a fuss about the statement, at the same time I could not sleep well with out writing it out here. And do not deny that Customer Experience is hard to create,but do not accept that one is tougher than the other. Both are complement each other.
First of all, what is branding?
Well I will jump a head and talk about Corporate Branding rather than just branding as "branding" can take various forms and for our discussion Corporate Branding is more relevant.
Below is the Wikipedia version of the definition:
Corporate branding is the practice of using a company's name as a product brand name. It is an attempt to leverage corporate brand equity to create product brand recognition. It is a type of family branding or umbrella brand. Disney, for example, includes the word "Disney" in the name of many of its products; among many other examples are IBM, Pepsi, and Coca-Cola.
On the other hand there is Product:
According to Marketing Guru, Peter Kotler, A product is anything that can be offered to a market for attention, acquisition, use or consumption that might satisfy a want or need.
Products are offered to a market through a multple channels. Off late website/online channels have picked the customers' view. Especially services that need not have personal contact, for example, credit cards services, mortgage self service etc. Since the intrusion of WWW into customer self servicing arena, there has been a lot of talk about website brading (Portals have replaced the web sites only recently even though the Portal technoogy has been around for a while).
Again lets take a quick look what a product is made off. Apologies for a marketing lecture here, but it is essential for this discussion. A product has three levels
Core Product: is at the centre of the product and is the core benefit obtained when the product is purchased.
Eg: Credit Card product, credit limit.
Actual Product: is built around the core product, and has up to five characteristics: quality level, features, styling, brand name and packaging
Eg: Card Plastic, Logo of Visa/Master Card/Amex etc and the issuing bank.
Augmented Product: consists of additional services and benefits around the core and actual product.
Eg: Verified By visa, by the way our online Self service (using Portals for consistent look and feel).
Now, getting back to our original dicussion around the gentleman's statement, the augmentation of the product is for a better customer experience, in our case, the Portal (for what ever it is used for) is the augmented product. Hence, atleast with my marketing concepts, brading is not all about colors and pictures, it could be about:
a name, a term, a sign, symbol or desing, or a combination of these intended to identify the products or services of one seller or group of sellers and to differentiate them from those of competitors.
- Peter Kotler.
And finally before wrapping up, "Through brand a company communicates its strategy, its values, its offerings and its uniqueness.. both internally and externally.
Hence, branding is higher level beast in the product feature/benefits box and is difficult to create and maintain in the minds of consumers. Customer experience should help improve the brand value and the brading in general.

Thursday, April 06, 2006

Injecting state into child work items

Have you ever wondered how to inject state from a parent work item to child. Here is a good way of doing it. Mariano has a blog post.

I thought it is good because you need not worry about rewriting the same code over and again and it overcomes the issue with state bag of the child work item not being initialized.

Good one Mariano.

Monday, March 27, 2006

Unit testing CAB applications

Recently I have investigated and started using the Microsoft Composite Appliction Block. Found it interesting in the first place. However, there are quite a few things missing from it. First and foremost the help with the CAB is not good enough. Not to miss, there has been some commitment from the GotDotNet project portal. Still a lot needs to be done. It took me a while to figure out how to Unit test these modules. More about simple things like using MDI Workspaces, Window Workspaces etc. It really tough if these things are not documented.

I thought of posting a bit of code to develop Unit testable work item. Let us call this UnitTestWorkItem. The following class can act as a root work item to which you can add other work items, views, services etc.


public class UnitTestWorkItem : WorkItem
{
public UnitTestWorkItem()
{
InitializeRootWorkItem(CreateBuilder());

Services.AddNew();
Services.AddNew();
}

public Builder Builder
{
get { return InnerBuilder; }
}

public IReadWriteLocator Locator
{
get { return InnerLocator; }
}


private Builder CreateBuilder()
{
Builder builder = new Builder();

builder.Strategies.AddNew(BuilderStage.Initialization);
builder.Strategies.AddNew(BuilderStage.Initialization);
builder.Strategies.AddNew(BuilderStage.Initialization);
builder.Strategies.AddNew(BuilderStage.Initialization);
builder.Strategies.AddNew(BuilderStage.Initialization);
builder.Strategies.AddNew(BuilderStage.PostInitialization);

builder.Policies.SetDefault(new ObjectBuiltNotificationPolicy());
builder.Policies.SetDefault(new SingletonPolicy(true));

return builder;
}
}



The above code will create the necesasry infrastructure to create the foundation to unit test your CAB applications. Here is a peice of sample code that instatiate a WorkItem and then gets it ready to test.

private CreateBankTellerView target;
private UnitTestWorkItem rootWorkItem;
private TellerWorkItem WiTeller;

rootWorkItem = new UnitTestWorkItem ();
WiTeller= rootWorkItem.WorkItems.AddNew();
WiTeller.Services.AddNew();
target = WiCust.SmartParts.AddNew();

The above code create the views, services and work items that need testing. However, to pass values to it and invoke some events you need to do a lot more. But here is the trick, I have used the VS.NET 2005 testing project that generate the accessor class for you. And that makes it easy to test the views.

CreateBankTellerViewAccessor accessor = new CreateBankTellerView(target);
accessor.txtFirstName = "John";

accessor.btnSave_Click(null,null);

In the above code line is firing the button click event. This is a good starting point to unit test CAB apps.

See you untill my next post. You can find similar code from the GotDotNet project portal. The code above has been adapted from the same site.