The CRM Dashboard accelerator released displays Dashboards in its Workplace. However there is one issue with it, that being that it does not provide scrollbars to scroll through the page to view all the available charts on the screen.
In this blog we have describe how to add the scrollbar for this report page.
For this we need to do some changes in the “sitemap” file and add one custom page with iframe control.
Steps are:
1) Create the custom page (DBpage.aspx) with following code.
<html>
<head>
<title>Dashboard</title>
<style type="text/css">HTML { SCROLLBAR-FACE-COLOR: #ffffff; SCROLLBAR-HIGHLIGHT-COLOR: #6699cc; SCROLLBAR-SHADOW-COLOR: #6699cc; SCROLLBAR-ARROW-COLOR: #6699cc; SCROLLBAR-TRACK-COLOR: #e3efff }
</style>
<script type="text/javascript">
//function will set the height and width of the iframe
function calcHeightWidth()
{
//initialize variables
var main_height = null;
var main_width = null;
var height = null;
var width = null;
// for all except Explorer
if (self.innerHeight) {
main_height = self.innerHeight;
main_width = self.innerWidth;
// Explorer 6 Strict Mode
} else if (document.documentElement
&& document.documentElement.clientHeight) {
main_width = document.documentElement.clientWidth;
main_height = document.documentElement.clientHeight;
// other Explorers
} else if (document.body) {
main_height = document.body.clientHeight;
main_width = document.body.clientWidth;
}
//set final height and width
height = main_height + 'px';
width = main_width + 'px';
//change the height of the iframe
document.getElementById('dashboardframe').style.height=height;
document.getElementById('dashboardframe').style.width=width;
}
</script>
</head>
<body onload="calcHeightWidth();" onresize="calcHeightWidth();" leftmargin="0" topmargin="0" >
<form id="form1">
<div id="MainFrame" style="overflow:auto;">
<iframe id="dashboardframe" visible="true" frameborder="0" src="http://crm-srv-01/reportserver?%2fCRM+Accelerator+Dashboards%2fSales+Manager+Dashboard&rs:Command=Render,menu=no&rc:Parameters=False;" >
</iframe>
</div>
</form>
</body></html>
After creating page, add this page under ”/ISV/NewFolder” location in the CRM web root.
2) Change URL of Dashboard subarea to be:
//Here we set the location of custom page
<SubArea Id="Dashboard" Title="Dashboard" Url="/ISV/NewFolder/DBpage.aspx" Icon="/_imgs/bar_bottom_ico_reports.gif" />
3) Clear the browser history and do iisreset to apply the changes and see the result as shown in below screen shot.
Inogic is a hub of like minded professionals who believe in innovativeness and are committed to putting our time and efforts to R & D on Dynamics CRM.We endeavor to share some of our work on this blog by introducing Tips, Tricks and products from our labs.
Tuesday, March 2, 2010
Thursday, February 25, 2010
How to Sort CRM views by more than one attribute
Quite often there stems a need to have the CRM views sorted by more than one column being displayed. Say you would first like to sort accounts by Type followed by City and then by the account name.
Using the CRM view designer, we can only provide the sorting for one column.
You can however achieve this by using CRM shortcut key combination of Ctrl+Shift+Mouse Click on the selected columns of the view.
By default this view is sorted by Account Type.
Using the CRM view designer, we can only provide the sorting for one column.
You can however achieve this by using CRM shortcut key combination of Ctrl+Shift+Mouse Click on the selected columns of the view.
By default this view is sorted by Account Type.
The Sorting works in the sequence in which the columns are clicked.
Since we are looking for sorting by Type à City à Name
First click on Type column then City and in the end Name. This should then give you the following results.
Since we are looking for sorting by Type à City à Name
First click on Type column then City and in the end Name. This should then give you the following results.
Thursday, February 11, 2010
Experience with recovering a CRM database marked as SUSPECT
Unfortunately we had our CRM down because the CRM database was marked suspect in SQL. Had a tough time getting it back. Here we share our experience and the steps/commands that helped us get our system back up and running. These may not be the only way of fixing it and perhaps not everyone’s problem would be solved by following these but I hope some of the points below would perhaps get you closer to retrieving your data back.
- Stop the SQL server service.
- Go to Physical location of the suspected database and rename the database.
- Create new database of the same name to suspected database name.
- Remove the newly created database after this rename suspected database to original suspected database name
- Start the SQL server service.
- Open SQL server Management Studio and find “new Query”
- Click on new query , new command window will be open.(See below the screen)
- Select the master database.
- After that in command window type below the statements
o ALTER DATABASESET EMERGENCY
o ALTER DATABASESET SINGLE_USER
o DBCC CheckDB ('', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS
o ALTER DATABASESET MULTI_USER
Once these commands are successfully processed the database would be available. Note that the DBCC statement above may result in some data loss if any part of the data is corrupt. But if you do not have a SQL backup for you to restore then this is the only option you have…
- Stop the SQL server service.
- Go to Physical location of the suspected database and rename the database.
- Create new database of the same name to suspected database name.
- Remove the newly created database after this rename suspected database to original suspected database name
- Start the SQL server service.
- Open SQL server Management Studio and find “new Query”
- Click on new query , new command window will be open.(See below the screen)
- Select the master database.
- After that in command window type below the statements
o ALTER DATABASE
o ALTER DATABASE
o DBCC CheckDB ('
o ALTER DATABASE
Once these commands are successfully processed the database would be available. Note that the DBCC statement above may result in some data loss if any part of the data is corrupt. But if you do not have a SQL backup for you to restore then this is the only option you have…
-------------------------------------------------------
Posted by: Inogic
For more information/discussions (documents, sample code snippets, detailed work flow or diagrams),
Please be free to visit the following links or email us:
Web: http://www.inogic.com
Blog: http://inogic.blogspot.com
Email: news@inogic.com
-----------------------------------------------------
Posted by: Inogic
For more information/discussions (documents, sample code snippets, detailed work flow or diagrams),
Please be free to visit the following links or email us:
Web: http://www.inogic.com
Blog: http://inogic.blogspot.com
Email: news@inogic.com
-----------------------------------------------------
Tuesday, February 9, 2010
InoLink: QuickBooks - Dynamics CRM Integration Version 2.0 Released
We have come up with the next version of InoLink: QuickBooks - Dynamics CRM Integration
InoLink: QuickBooks is an integration link developed to integrate QuickBooks with Dynamics CRM. After detailed evaluation of the feedback received over a period of time we have come up with this version.
What’s new in this version?
1. The general look and feel has been vastly improved for seamless integration with Dynamics CRM.
2. Better user experience in terms of use of Ajax for user feedback to processes.
3. Additional feature added to the Promote Account functionality to support the Alternate Contact and multiple address feature of QuickBooks.
4. Ability to unlink existing linked accounts from Dynamics CRM to QuickBooks in case you want to no longer link the two records.
5. It now supports import of QuickBooks product types such as Inventory, Non-Inventory, Services, Other Charges, Inventory Assembly products.
6. Huge changes in the Sales Order/Invoice promote functionality to account for the discount and tax calculations.
7. Ability to associate discount with Discount type of Line items in QuickBooks so that they are taken over to QuickBooks correctly.
8. Once an account is linked to a customer in QuickBooks, ability to calculate tax of the order/invoice based on the Tax % in QuickBooks has been provided.
9. Closes the Sales Order in QuickBooks when an invoice associated with it has been promoted from CRM. This makes sure that promoting invoices from CRM does not leave the Sales Order in QB open.
For detailed information on the features of InoLink: QuickBooks Dynamics CRM Integration click here
InoLink: QuickBooks is an integration link developed to integrate QuickBooks with Dynamics CRM. After detailed evaluation of the feedback received over a period of time we have come up with this version.
What’s new in this version?
1. The general look and feel has been vastly improved for seamless integration with Dynamics CRM.
2. Better user experience in terms of use of Ajax for user feedback to processes.
3. Additional feature added to the Promote Account functionality to support the Alternate Contact and multiple address feature of QuickBooks.
4. Ability to unlink existing linked accounts from Dynamics CRM to QuickBooks in case you want to no longer link the two records.
5. It now supports import of QuickBooks product types such as Inventory, Non-Inventory, Services, Other Charges, Inventory Assembly products.
6. Huge changes in the Sales Order/Invoice promote functionality to account for the discount and tax calculations.
7. Ability to associate discount with Discount type of Line items in QuickBooks so that they are taken over to QuickBooks correctly.
8. Once an account is linked to a customer in QuickBooks, ability to calculate tax of the order/invoice based on the Tax % in QuickBooks has been provided.
9. Closes the Sales Order in QuickBooks when an invoice associated with it has been promoted from CRM. This makes sure that promoting invoices from CRM does not leave the Sales Order in QB open.
For detailed information on the features of InoLink: QuickBooks Dynamics CRM Integration click here
Thursday, February 4, 2010
Sharing access in Dynamics CRM
Dynamics CRM has the concept of record ownership. A record can only be owned by single user and not by a team or more than one users. Depending on the security roles defined it is possible to restrict a user to have access to only records owned by them.
However in most practical situation where people work in teams it would be required to allow a group of persons to have access to certain records in addition to the records owned by them. In such case you can use the concept of “Sharing” that is available in Dynamics CRM. Note when you share a record with a group you are only making the record accessible to them and for all other purposes the owner is still the original user and a single user at that.
To share records, first select the records you want to share. On the Actions toolbar, click More Actions, and then click Sharing. As shown in the below screenshot.
When you share a record, you can define the level of permission that you would like to provide the other users with whom you wish to share the record.
Now in the above screen a record has been shared with Brian giving him all permission to the record except delete. This enables Brian to be able to view this record in the Active Records view and also update the record or create activities for this record.
However Anton can only see the record in his active view. But when he open the record it will be available in read-only mode and he would not be able to make any changes to this record.
Programmatically the sharing is controlled by SecurityPrincipal object. To get a list of users/teams with which a record has been shared you will need to use the RetrieveSharedPrincipalsAndAccess message. This message needs to be provided with the TargetOwned Class. If you provide an instance of an account to this message. It will return an array of PrincipalAccess class that will list out all the users/teams and the level of access of each of these on the entity provided. This message can be excuted using the Execute method of the CRM service class.
Other messages to look out for are
GrantAccessRequest
ModifyAccessRequest
RetrievePrincipalAccessRequest
-------------------------------------------------------
Posted by: Inogic
For more information/discussions (documents, sample code snippets, detailed work flow or diagrams),
Please be free to visit the following links or email us:
Web: http://www.inogic.com
Blog: http://inogic.blogspot.com
Email: news@inogic.com
-----------------------------------------------------
However in most practical situation where people work in teams it would be required to allow a group of persons to have access to certain records in addition to the records owned by them. In such case you can use the concept of “Sharing” that is available in Dynamics CRM. Note when you share a record with a group you are only making the record accessible to them and for all other purposes the owner is still the original user and a single user at that.
To share records, first select the records you want to share. On the Actions toolbar, click More Actions, and then click Sharing. As shown in the below screenshot.
When you share a record, you can define the level of permission that you would like to provide the other users with whom you wish to share the record.
Now in the above screen a record has been shared with Brian giving him all permission to the record except delete. This enables Brian to be able to view this record in the Active Records view and also update the record or create activities for this record.
However Anton can only see the record in his active view. But when he open the record it will be available in read-only mode and he would not be able to make any changes to this record.
Programmatically the sharing is controlled by SecurityPrincipal object. To get a list of users/teams with which a record has been shared you will need to use the RetrieveSharedPrincipalsAndAccess message. This message needs to be provided with the TargetOwned Class. If you provide an instance of an account to this message. It will return an array of PrincipalAccess class that will list out all the users/teams and the level of access of each of these on the entity provided. This message can be excuted using the Execute method of the CRM service class.
Other messages to look out for are
GrantAccessRequest
ModifyAccessRequest
RetrievePrincipalAccessRequest
-------------------------------------------------------
Posted by: Inogic
For more information/discussions (documents, sample code snippets, detailed work flow or diagrams),
Please be free to visit the following links or email us:
Web: http://www.inogic.com
Blog: http://inogic.blogspot.com
Email: news@inogic.com
-----------------------------------------------------
Subscribe to:
Posts (Atom)