Friday, February 6, 2009

Microsoft CRM 4.0 Part - I

Businessunits:
Businessunits define work groups in any organization, each businessunit can have multiple users associated, having different access roles. We can also define child businessunits under each businessunit, by default when CRM is installed a default businessunit is created with the name of Organization. This is the parent businessunit, and cannot have a parent as well.

Child Businessunits:
We can also define child businessunits under each businessunit, child businessunits inherit access roles from parent businessunit, again any child business unit can have its own child businessunit. This model helps implement a real organization's heirarchy in the system.

What does Microsoft CRM offer to SME?
MSCRM is ideal for Small to Medium size organizations offering comprehensive features Sales, Services, Marketing & Reporting. It helps business users to access information in an efficient and quick manner. It supports customization of entities & featurs according to the business needs. Business processes can be implemented as workflows with less time to deploy and put to work.

Users and their ownership:
Each businessunit has its own set of users working in the organization, information inside organization belong to a specific user. This means that sale invoices creatred by a specific user are owned by the user itself and not explicity by user's businessunit. It is the user's ownership which implies logical ownership of sales invoices by user's business unit. If a user is moved to another business unit, any records associated to the user will automatically be owned by that business unit.

Ownership Importance:We can have a client which maintains two businessunits A and B, user X has been recently moved to businessunit B from A, what happened is all work performed by this user has been owned by business unit B. This is by design and can be a problem in a specific situation where it is needed to be addressed.

One solution can be to create a Default user to hold ownership of entities when a user is moved from one businessunit to another.

Write a plug-in or workflow which will transfer ownership of all entities to the default user on the event when business unit of a user is changed

Security and Access Levels:
Following security levels are available, None, User, Businessunit, Parent: Child Businessunit and Organization

None > Users will not have any access
User > User has access to only its own entities
Businessunit > User has access to entities inside his businessunit
Parent: Child Businessunit > User has access to entities in its own and child businessunits
Organization: User has access to all entities in whole organization even if a specific entity is in a parent businessunit
Security roles are used to maintain and apply security on user's type of access, level and entiy For example
Read, Create, Update, Delete is type of access,
Parent: Child Businessunit is level
Account, Contact, Lead are entities
Roles maintenance can be performed in Settings area which is nont available to non-adming users.

Custom Entities:
Custom entities are user defined with custom attributes, forms, views and relationships with other entities, Entity should not be created without entering proper description about the entity, this description is helpfull for others in future who deal with this entity, entity without description is just like code without comments. Descriptions avoid likely confusions as customizers can endup creating multiple attributes which serve the same purpose.

For each custom entity we define ownership, ownership can be user or organization:
User: Records for this entity can be owned by individual users. For example contact records are set to User
Organization: Records for this entity are used for reference by all Microsoft CRM users, and so are not owned by individual users. For example, product records are set to Organization.

Reference: http://blogs.infinite-x.net/2006/02/18/understanding-entity-ownership-in-mscrm-30/

Each custom entity has a primary attribute, by default its schemaname i.e, column name in db table is ‘Name’, we can modify the name of attribute at time of creating the entity, once entity is created the schemaname cannot be changed how ever we can change its display name.

Define areas where this entity will be displayed like sales, my work place, etc

Attributes of an Entity:
Each attribute has following properties, Name, Display Name, Type, Requirement level, searchable, IME mode, etc

These properties of attribute cannot be updated:
Name: this is the name by which the attribute is known in the CRM system, For custom attributes it is also prefixed with ‘new_’
Type: this is the data type of attribute like ‘nvarchar’

These properties of attribute can be updated:
Display Name: this is the name visible to users interacting with the entity like on forms, reports, etc
Requirement level: this is related to constraint of the attribute either it is a required field or not or is recommended
Searchable: to be able search on base of this attribute in your views or lookup screens
IME mode: how this field is displayed on form active, Inactive or disabled

Custom Entity Prefix and Postfix:
When a new custom entity is created, CRM creates metadata and two tables for this newly added entity one with postfix of ‘Base’ and other with ‘ExtensionBase’, both tables have prefix of ‘New_’

Reference: http://server/organization/sdk/list.aspx (for in-depth details of entities)

The postfix ‘Base’ indicates that this table contains core required attributes of CRM and postfix ‘ExtensionBase’ indicates any custom attributes added to this entity go in this table. All entities which are customizable will have two tables just like that, where all custom attributes go into the ‘ExtensionBase’ table.

There is also a tool available which provides extensive details of entities

Reference: Tool to view extensive details of CRM entities


Custom Relationship:
Relation ship between two entities can be one-to-many, many-to-one and many-to-many, some relations can be defined at time of creating the entity these are relation to note and activity entities.

“All custom relationships added are null able”

Database Query to view currently logged in user:
Below are core sql function used to join any SQL with a specific user, one provides id of current user where as other provides full name of currently logged in user, as CRM uses windows authentication mode of premises and active directory is required as well, any user accessing the CRM is a user of the organizations Windows domain

select suser_sid()
select suser_sname()

Differences in CRM 3.0 and CRM 4.0

1. Microsoft introduced multi tenant system in CRM 4.0, if an organization purchase Enterprise version of CRM 4.0, it can than create and manage multiple tenants that is multiple Organizations on single CRM hosting.
2. Earlier versions of CRM 4.0 did not have option to create many to many relation between entities, this caused some problem for organizations where this was a requirement, it is now available in CRM 4.0

No comments:

Post a Comment