3
votes

I want to configure Dynamics CRM 2011 online so that it shows a specific dashboard by default for a specific user role. Is this possible through some setting or by writing customization code using a plugin or javascript?

For example if John the CEO logs in - he should see the annual revenue dashboard, if a sales person logs in they see the leads dashboard. The dashboards are public dashboards and not personal dashboards.

1

1 Answers

5
votes

If you have the on-premise version, probably the fastest way to do this is to access the database table UserSettingsBase and update the DefaultDashboardId column to the guid of the dashboard you want each user to have. (Edit - just realized you're using CRM Online, so this is not applicable.)

You can accomplish the same in the API framework by instantiating the UserSettings entity for each user, finding each user's appropriate roleid, and updating the DefaultDashboardID property of the UserSettings entity. An example is below.

using (OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(new Uri("Your CRM Server"), null, null, null))
{
    _serviceProxy.EnableProxyTypes();
    using (OrganizationServiceContext osc = new OrganizationServiceContext(_serviceProxy))
    {
        var usersSettings = from u in osc.CreateQuery<SystemUser>()
                            join ur in osc.CreateQuery<SystemUserRoles>() on u.SystemUserId.Value equals ur.SystemUserId.Value
                            join r in osc.CreateQuery<Role>() on ur.RoleId.Value equals r.RoleId.Value
                            select new
                            {
                                id = u.SystemUserId.Value
                                , roleName = r.Name
                            };

        foreach (var users in usersSettings)
        {
            UserSettings us = new UserSettings();
            us.SystemUserId = users.id;
            switch (users.roleName)
            {
                case "CEO":
                    us.DefaultDashboardId = Guid.Parse("2E3D0841-FA6D-DF11-986C-00155D2E3002"); //the appropriate dashboardid
                    break;
                //case "Sales Person"
                //case "..."
                //default: ...
            }
            _serviceProxy.Update(us);
        }
    }
}