Saturday, February 22, 2014

eXtremecrm!!!!

Some of my favorite ISV's from extremecrm Barchelona:

Project Management ++
http://www.assistancesoftware.com/
Assistance PSA for Microsoft Dynamics CRM™ was developed for the new generation of information workers, who are always online and work wherever and whenever they wish. Can your organization facilitate that? Are you ready for the new generation of information workers? Assistance PSA is a completely integrated solution for contemporary information workers. Developed for the latest technology, the Microsoft Dynamics CRM platform.
Marketing:
http://www.clickdimensions.com/
(I also took a certification in this ISV addon!)
ClickDimensions is the top-rated, Microsoft-certified marketing automation solution for Microsoft Dynamics CRM. ClickDimensions is the easiest way to:
·         Empower your marketers to generate and qualify high-quality leads
·         Provide your sales team the ability to prioritize the best leads and opportunities
·         Allow your management team to measure everything
Providing email marketing, web tracking, lead scoring, campaign tracking, social discovery, form capture and more, ClickDimensions tracks your prospects from click to close. ClickDimensions helps you learn more about your prospects by showing you what interests them on your site and makes it easy to capture information about them through web forms once they are ready to share. We like to say that we add new dimensions of data to your Microsoft CRM.

External web interface to MS CRM (and soon SharePoint parts !? :P)
http://www.adxstudio.com/
Adxstudio Inc. is a leading provider of web portal and application life-cycle management solutions built for Microsoft Dynamics® CRM, SharePoint and .NET. We’re a Microsoft Gold Application Development and Gold Customer Relationship Management competency partner with over 50 solution and services professionals across Canada and the USA. Key products include Adxstudio Portals and the Adxstudio ALM Toolkit.

Professional services "verticals"
http://www.fieldone.com/ (Cload based)
Fieldone - State-of-the-art software - based on Dynamics CRM - addressing the complex challenges customers face in managing enterprise field service organizations.  Sky - the agile platform for intelligent enterprise field service management - provides the most comprehensive feature set, simplified integration, flexible deployment, and on-demand configuration driving rapid implementation and fast ROI.

http://www.wennsoft.com/ (On-prem only)
Connections across the organizations are key for those who want to better manage installation, maintenance and repair processes.  WennSoft delivers innovative field service solutions that streamline operations from sales to the field to accounting, arming customers with the insight they need to do their work more proactively, productively and profitably. www.wennsoft.com

Integration:
http://www.scribesoft.com/
Scribe is a global provider of solutions that easily bring customer data to anywhere it’s needed, whether your systems are cloud-based, on-premise, or a hybrid. Scribe’s products help our 13,000 customers and partners use their customer data to increase revenue, provide superior service, and create business value faster.

Mobile
http://www.resco.net/MobileCRM/
Resco is the creator of the market favorite Mobile CRM for Dynamics CRM. The app  – which gives users around-the-clock access to their data from anywhere – comes with a full offline mode, interactive maps, support of custom entities & many more benefits that make it the product people love to use.

ISV - web-store
http://www.crm-appstore.com/main
The CRM App Store is an online application store for Microsoft Dynamics CRM and contains complete vertical solutions, add-ons and accelerators/template solutions.
 The CRM App Store offers full “Click, Try, Buy” experience. Customers and prospects get an instant access to apps for a 30 day free trial so they can evaluate before they buy directly in the store.The CRM App Store is powered by Prodware with more than 30 ISV’s and 50 solutions.

Easier development/konfiguration
http://www.north52.com/
North52 provides the most comprehensive business process management software available for Microsoft Dynamics CRM. North52’s business rule (formulas) and scheduler engines are flexible enough to meet the most demanding business requirements. Formulas and schedules can be configured and deployed in minutes via customizations not coding saving you time and money.

http://www.wavextend.com/en
Intelligent and flexible customizability is the most important quality for business applications. WaveXtend extends the customization options of Microsoft Dynamics CRM.

WaveXtend supports Dynamics 4.0, 2011, 2013 and Online and offers database marketing and business rule configuration software for Dynamics CRM Partners and ISV’s.
Document creation / storage
http://www.xperido.com/
XperiDo is a server-side document creation solution for Microsoft Dynamics CRM. It lets you create documents in two clicks or through workflows, save as any format, store in SharePoint, create activities, attach and e-mail, print to network printers. Include fields of related entities without limitations and map them in your templates. Add conditions for insertion and formatting, loop and group, render to images, barcodes, QRcodes and much, much more. XperiDo can be installed on premises or used as a cloud service.

Sunday, February 2, 2014

SSIS + Microsoft CRM?

Hi and welcome back?

Do like the POWER of SSIS?

Do you like to migrate/create integrations in hours without writing a single line of .NET an still be able to use the Microsoft CRM API?

Then you will like the following SSIS components:

1. Kingswaysoft
This is my favorite for small/mid-size projects! Extremely easy to install, "no-brainer" components to use if you know SSIS. CHEAP and very nice option to use in POC's!
Gives you the basic components to create a good SSIS integration to MS CRM from any type of database and/or system!

Kingswaysoft have SSIS components to
- AX 2009/2012+
- MS CRM 4.0/2011/2013
- Salesforce

2. PragmaticWork: Task-factory
A SUPER tool if you need components for more then just Microsoft CRM! Gives you an option to choose between a few packages of components. Gives you advanced components to create a good SSIS integration to MS CRM from any type of database and/or system! Mid-size and Large SSIS solutions!

Kingswaysoft have SSIS components to
- MS CRM 2011/2013
- Salesforce
- SharePoint

I always miss the following components when using one of the other SSIS components on this site: 
 - Upsert Destination,
- Advanced Derived Column
- Terminator Destination

- Dimension Merge SCD Transform (formally Kimball SCD)

3. CrazyRocks!
Only used when testing Microsoft CRM SSIS components on the market. So I realy don't know too much about this component. Please update me :)

Hope you liked this post.. I'll soon make a few HOW TO with SSIS!

Best Regards

Inge-Andre Fredrikstad

Thursday, January 30, 2014

Managed VS Unmanaged Solutions!!!

Hi!

Are you also a little confused about the managed/unmaged solutions in Microsoft Dynamics CRM? Here's my little conclusions after a discussion on Microsoft CRM group @ Facebook:
 
My Conclusion/Guideline based on answers above: (MS CRM 2011/2013)


Managed:

If your are a ISV’s or making 3.partys components to multiple customers or are a implementation partner in a customer project with several (3+) involved partners – Managed is recommended.

Main reason why:
Easily and controlled update/deletion/install of solution with possibility to lock down parts of customization.

Main Concerns:
You will have to move the whole solution between environments, meaning ALL customizations HAVE to be ready for deployments at the same time. (No half completed customizations OR controlled half customizations not showed to customer)

Unmanaged:
If you are an implementation partner and doing customizations for single customers with max a few (2-3) other implementation partners and the solution should not be updated and distributed between several customers – Unmanaged in recommended.
Main reason why:
You have the flexibility to refresh development environment and move parts of customizations between environments.
Main Concern:
Require good practice when moving customizations between environments.


Tuesday, January 28, 2014

I'm going to CRM EXTREM - Stay tuned!

I'll post some news from the CRM extreme 9-12 feb. 2014

I'll also take a certification in Click Dimention, so Stay tuned to get some updates!

Inge-Andre

Monday, January 27, 2014

Picklist/Optionset OR lookup field CRM 2013

Hi!
Have you ever though about when to use a picklist/optionset, or might even a lookup?

There are many consultancy who are scared of creating too many entities in MS CRM projects. There are several times lookups to a entity with just a name might be better then using a picklist/option set!

A few senarios when you should think of this:

1. When you need the field to locked to certain options, but at the same time easy for super users to update/create new options.

2. When you are integrating two systems, and the master system have a dynamic value, but you want to be "semi"-locked and easy to seach for in MS CRM. (G.ex: A text field in ERP, integrated as a "list of records" in a specific entity in MS CRM. Makes it easier to search for a specific criteria)

3. When you are creating a "generic" solution/field where several options based on customers might bee needed.

4. When you have dependencies on a few fields on the same FORM it could be used.

5. When you want several fields to get information based on a single field. (g.Ex: You create a custom "opportunity line item" entity. On that entity you want to be able to sell 3 products, and based on the product chosen the opportunity linje should get "prize" and "product conditions". Why not create 2 custom enities ("Opporutiniy line item" AND "product") and store "prize" and "product conditions" on the product entity. Then you chose a product in the lookup (N:1) on "opportunity line item" you get "prize" and "product conditions" from the product enity.

+++

Think about it! Are you a "entity/lookup-scared" consultancy/developer!?

Friday, January 24, 2014

Tired of writing your own plugins?

Hi again!

http://www.north52.com/ as their "Formula Manager" solution is life saving for all "none"-developing consultants! It make you create "excel-like" formulas who act as a plugin!

It's suuuuper easy to learn, extremely timesaving, very good ROI for you small customers , and give you the power of creating plugins in minutes without coding!!

I've used it in several projects (On-prem and On-dem) and the best thing, IT'S FREE UP TO A TOTAL OF 10 PLUGINS!

Also remember to take a look at the other cool solutions they have!!

Happy Xrm'ing!!




Tuesday, January 21, 2014

How to Update salesstage with javascript based on "processbar" in MS CRM 2013

Hi all, it's been a loooong time since i last updated this blog.. But here's a new nice tip :)

Microsoft have not given us the easiest way of updating fields on FORMS based on the new processbars feature on FORMS, but here's one way to do it With Javscript.. Supported!

Should work on opportunities.. AFTER YOU INSERT YOUR GUID's FOR
1. Field "processid"
2. Field "stageid"
3. Change name of "salesstage"

(Needed in setSalesStage function)

/* Script Entry Point */
function OnCrmPageLoad() {
    var FormTypes =
    {
        Undefined: 0,
        Create: 1,
        Update: 2,
        ReadOnly: 3,
        Disabled: 4,
        QuickCreate: 5,
        BulkEdit: 6
    }
    runAlways();
    switch (Xrm.Page.ui.getFormType()) {
        case FormTypes.Create: OnNewFormLoad(); break;
        case FormTypes.Update: OnUpdateFormLoad(); break;
        case FormTypes.ReadOnly: OnReadOnlyFormLoad(); break;
        case FormTypes.Disabled: OnDisabledFormLoad(); break;
        case FormTypes.QuickCreate: OnQuickCreateFormLoad(); break;
        case FormTypes.BulkEdit: OnBulkEditFormLoad(); break;
        case FormTypes.Undefined: alert("Error"); break;
    }
}
/* Implement each Form Type you wish to address */
function runAlways() {
    onchange();
    Xrm.Page.data.entity.addOnSave(addToOnSave);
}
function OnNewFormLoad() {
    setSalesStage('new');
}
function OnUpdateFormLoad() {}
function OnReadOnlyFormLoad() { }
function OnDisabledFormLoad() { }
function OnQuickCreateFormLoad() { }
function OnBulkEditFormLoad() { }
/******************** OnChange and OnSave functions ***************************/
function onchange() {
    //Add all fields who should have OnChange triggers
    Xrm.Page.data.entity.attributes.get("prefix_fieldname").addOnChange(examplefunction);
}
function addToOnSave() {
 //Check to see if stageid has changed
    var attributes = Xrm.Page.data.entity.attributes.get();
    for (var i in attributes) {
        var attribute = attributes[i];
        if (attribute.getIsDirty()) {
            if (attribute.getName() == 'stageid') {
                //Update Probability field - send a "dummy parameter"
                setSalesStage('dummy');
            }
        }
    }
}
/*************** End OnChange and OnSave functions ***************************/
/* --------------- Private functions ---------------------*/
function examplefunction() {
//No Operation
}
function setSalesStage(check) {
 /*
 UNIKE FOR EACH PROSESS AND CRM ORGANIZATION
 Notes of GUID's steps in Prosess ID = 'bfc01b1c-9741-43b2-a016-3a41d91c234a' Display: "Solution Selling" on entity: opportunity
 10% - 85bdfa9d-f067-42d4-82c3-0e1fd09f2b19
 20% - 6a2020c4-7d10-28e3-1898-138b6c075259
 40% - ae0c9ae4-55eb-cd1c-44ab-872d4aca4338
 60% - 16b99584-143d-04ad-61c9-2b6a809e5608
 80% - 93e08965-2e2a-4674-0e57-ec88633a0940
 90% - 3a516491-d7cd-6cb1-a3e0-61be68c1857c
 */
    var prosessId = Xrm.Page.getAttribute("processid");
    var stageid = Xrm.Page.getAttribute("stageid");
    var prob = Xrm.Page.getAttribute("salesstage");

 //Check if new record
    if (check == 'new') {
  //sets first process name
        prob.setValue('10% - Qualification');
    }
 //Not a new record, then it's an existing record
    else {
        if (prosessId.getValue() == 'bfc01b1c-9741-43b2-a016-3a41d91c234a') {
            switch (stageid.getValue()) {
                case '85bdfa9d-f067-42d4-82c3-0e1fd09f2b19':
                    //setter sannsynlighet
                    prob.setValue('10% - Qualification');
                    break;
                case '6a2020c4-7d10-28e3-1898-138b6c075259':
                    prob.setValue('20% - Pain and Need');
                    break;
                case 'ae0c9ae4-55eb-cd1c-44ab-872d4aca4338':
                    prob.setValue('40% - Proof of Concept');
                    break;
                case '16b99584-143d-04ad-61c9-2b6a809e5608':
                    prob.setValue('60% - Closing');
                    break;
                case '93e08965-2e2a-4674-0e57-ec88633a0940':
                    prob.setValue('80% - Offering accepted');
                    break;
                case '3a516491-d7cd-6cb1-a3e0-61be68c1857c':
                    prob.setValue('90% - Contract signing');
                    break;
                default:
                    alert("An error has occured!");
            }
        }
    }
}
/* ------------ End Private functions------------------*/

Wednesday, September 5, 2012

How to open CRM FORMS and Web Resources correctly!?


Some CRM implementations require the use of custom Jscript to pop open a new entity form window or a window displaying an existing record in CRM. Previously, there was no “supported” way to do this, since we had to use the window.open Jscript object which relies on the use of the Document Object Model (DOM).

Update rollup 8 provides new SDK functions which CRM configurators can use to open CRM forms and web resources in a nice supported way.

The Old Way - Making the URL static with parameters:
Here is an example of how to pop open an existing Account using Jscript:

function popAccount() {
var accountId = "8FB2CCE4-20E4-E111-9700-00155D042F0D";
var url = Xrm.Page.context.getServerUrl() + "/main.aspx?etn=account&id=" + accountId + "&pagetype=entityrecord";
window.open(url);
}

Here is an example of how to pop open an HTML Web Resource using Jscript:

function popHTML() {
var url = Xrm.Page.context.getServerUrl() + "//WebResources/iaf_/html/test.html";
window.open(url);
}

Although these methods do work, they could potentially break as new rollups are applied to your system, or when CRM 2011 is available on multiple browsers.

The New way - New functions :)

function popAccount() {
var accountId = "8FB2CCE4-20E4-E111-9700-00155D042F0D";
Xrm.Utility.openEntityForm("account", accountId);
}

If we wanted to pop open a new Account form, we can exclude the ID parameter.
Here is an example of how to pop open an HTML Web Resource using Jscript:

function popWebResource() {
var webResourceName = "iaf_/html/test.html";
Xrm.Utility.openWebResource(webResourceName);
}

Please note this is only a few of New functions released in rollup 8 related to "Xrm.Utility"  :)

Happy Xrm'ing!

Source: http://blogs.msdn.com/b/crm/archive/2012/07/18/new-xrm-utility-functions-in-update-rollup-8-for-microsoft-dynamics-crm-2011-and-microsoft-dynamics-crm-online.aspx

Wednesday, May 30, 2012

The view: "Products in Parent Price List" is gone!?

This article talks about a parent look view which is never visible after the “Display search box in lookup diaglog” is checked while customizing Opportunity Product Entity in CRM 2011. There is an easy workaround to get back to old view.

How do I revert to old view?

If you’re thinking that you can just go and uncheck. No then that’s not a solution. We will need to revert through a customization tweak. The reason for this and by now CRM has reset the view id. Hence it shows a different view.
The following are steps to achieve that
  1. Go to Settings > Solutions
  2. Add new Solution and provide a valid name to it.
  3. Save the solution.
  4. Now add existing entity, “Opportunity Product”
  5. Export the solution as unmanaged
  6. Open the unmanaged solution in notepad and locate the following:
  7. Replace {8BA625B2-6A2A-4735-BAB2-0C74AE8442A4} with {BCC509EE-1444-4A95-AED2-128EFD85FFD5}
  8. Save the changes
  9. Zip the files and import the solution back to your environment
  10. Publish the customizations
  11. Refresh the CRM in your browser
  12. You will see the correct view.
Tip: The GUIDS in step 7 could be found in the DB or in the URL of a "clean CRM" dialog for opportunity lookup

Happy XRM'ing!

Friday, April 13, 2012

CRM2011 Setup and Upgrade Errors With Resolutions

When upgrading from CRM 4.0 to MS CRM 2011 you might bump into serveral issues, I've listed some of the most normal serarios :)

"Fragmented indexes were detected in the Microsoft Dynamics CRM database",
This might accure during the import of the organizations:

Resolution:
Re-index the organisation databases (A SQL script)

USE MyDatabase
GO
EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"
GO
EXEC sp_updatestats
GO

Updating statistics ensures that queries compile with up-to-date statistics

'System.ServiceModel.Channels.ReceivedFault' in Assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b73a53451934e545' is not marked as serializable
Error when testing Email router:

Resolution:
Add the account running the email router services to PrivUserGroup security group.

SQLSERVERAGENT (SQLSERVERAGENT) service is not running on the server ......


Resolution:
· Check if SQLSERVERAGENT service is running
· Open the port 445 for SQL Server


Microsoft.Crm.Web.Reporting.SrsReportViewer.SetExecutionCredentials(ServerReport reportObj) Cannot create a connection to data source 'MSCRM'. (rsErrorOpeningConnection)
The error message gets received when accessing the reports from any of the organizations:

Resolution:
· Add SSRS service account to privreporting group.
· Reinstall the reporting extension again using deployment account.

The process to resolve was as follows:

1. Uninstall the Reporting Extensions.
2. Go to the CONFIG DB (MSCRM_CONFIG) of CRM and update your organization's row in the Organization table to set the AreReportsPublished boolean field to FALSE.
3. Re-install the Reporting Extensions and they should publish the reports again.

Note: You will see the message about installation is republishing the reports again

Unknown labels in settings group

Resolution:
Follow the Microsoft article for resolution: http://support.microsoft.com/kb/2530358.

Happy XRM'ing!

Saturday, April 7, 2012

Startup script Onload AND Onsave! Basic's for every Jscript!

Tired of having XX web-resurces on a form? Well.. Now you can controll everything within one JS with only 1. trigger:
- OnChange
- Onload
- OnSave

as well as:
- For all form types: OnCreate, OnNewForm, onReadonly ++

Read more about this in my previous post: Best javascript startup script ever
/* Script Entry Point */
function OnCrmPageLoad() {
 var FormTypes =
 {
Undefined: 0,
Create: 1,
Update: 2,
ReadOnly: 3,
Disabled: 4,
QuickCreate: 5,
BulkEdit: 6
 }
 runAlways();
 switch (crmForm.FormType) {
 case FormTypes.Create: OnNewFormLoad(); break;
 case FormTypes.Update: OnUpdateFormLoad(); break;
 case FormTypes.ReadOnly: OnReadOnlyFormLoad(); break;
 case FormTypes.Disabled: OnDisabledFormLoad(); break;
 case FormTypes.QuickCreate: OnQuickCreateFormLoad(); break;
 case FormTypes.BulkEdit: OnBulkEditFormLoad(); break;
 case FormTypes.Undefined: alert("Error"); break;
 }
}
/* Implement each Form Type you wish to address */
function runAlways() {
 onchange();
 Xrm.Page.data.entity.addOnSave(addToOnSave);
}
function OnNewFormLoad() {
}
function OnUpdateFormLoad() {}
function OnReadOnlyFormLoad() { }
function OnDisabledFormLoad() { }
function OnQuickCreateFormLoad() { }
function OnBulkEditFormLoad() { }
/******************** OnChange and OnSave functions ***************************/
function onchange(){
 //Skriv inn alle felter som skal ha OnChange
 Xrm.Page.data.entity.attributes.get("prefix_field").addOnChange(Summering);
}
function addToOnSave() {
 var SAVE_MODE_SAVE = 1;
 var SAVE_MODE_SAVEANDCLOSE = 2;
 // Validate only if the user clicked "Save".
 switch (event.Mode){
 case SAVE_MODE_SAVE:
  //Do something for "save"
  if(/*write you check*/) {
   // Cancel the save operation.
   event.returnValue = false;
   return false;
  }
  break;
 case SAVE_MODE_SAVEANDCLOSE:
  //Do something for "Save and close"
  if(/*write you check*/) {
   // Because this is a "Save and Close",
   // just save the form.
   return true;
  }
  break;
 }
}
/*************** End OnChange and OnSave functions ***************************/
/* --------------- Private functions ---------------------*/
function Summering(){
alert("You are inside a function triggerd from a onChange");
}
/* ------------ End Private functions------------------*/

Tuesday, March 6, 2012

Creating a "Update Account Dialog"

Soon I'm going to publish a dialog that updates an account. with several information:
- Contacts and roles that are req for business regarding marketing, sales ++

Senario:
A company need to update all accounts with certain roles (g.ex IT responseble, CEO, Sales responseble) before a huge invitation is sendt thou CRM, and plan to give this task to the account owners (account responsebles).. They want a sort of easy way to remind the account responsebles to do this, and do it the fastest way posseble..



This video only dispaly an example, you could easly update this dialog gathering other kind of information!

Thursday, March 1, 2012

Nye muligheter med Microsoft Dynamics CRM 2011

Crayon Solutions har gleden av å invitere deg til frokostmøte 21. mars.
Page Cont
​​Her fÃ¥r du en oversikt over de viktigste nyhetene i Microsoft Dynamics CRM 2011 og hvilke muligheter og metode som finnes for oppgradering fra Microsoft Dynamics CRM 4.0.
Vi håper du har anledning til å delta, og vi gleder oss til å treffe deg! Inviter gjerne andre i din virksomhet som dette kan være relevant for.

Sted:
Lysaker Torg 45 i Microsoft sine lokaler.
Dato: Onsdag 21. mars
Tid: kl.09:00-11:00 (registrering og frokost fra kl. 08:30)



Thursday, February 23, 2012

A few new codeplex solution I can't live without!

http://mapsforcrm2011.codeplex.com/- The best solution for "integrating" bing maps into CRM! I love the latitude get function!

Silverlight Application to show multiple entity records on Bing map. Idea is to show records from any number of entities and provide user some additional capabilities(explained below). Also, the content displayed on the map is configurable.

http://crmvisualribbonedit.codeplex.com/
- I love it when it comes to hiding function from ribbon!

Visual Ribbon Editor is a tool for Microsoft Dynamics CRM 2011 that lets you edit CRM ribbons. This ribbon editor shows a preview of the CRM ribbon as you are editing it and allows you to easily modify the ribbon without needing to completely understand the underlying XML schema

http://crm2011autonumber.codeplex.com/
This is a solution for crm 2011 (hosted/on-premise) for autonumbering the configurated entity.
(For online use I pref: Auto-number-for-dynamics-crm-2011 from GAP)

Friday, January 20, 2012

Custom Report for CRM 2011 Online tips and tricks

Hi, it's time to look at tips and tricks for custom Reporting Services report for CRM 2011 online!
- In this case we'll use FetchXML to connect to the CRM data! :)

Requirements:
  • Microsoft SQL Server 2008 or 2008 R2 Business Intelligence Development Studio (BIDS) installed
  • Microsoft Dynamics CRM 2011 BIDS Fetch Extension installed
  • Microsoft Dynamics CRM 2011 Online account
All this is allready installed in movie! So please install before watching movie if you're going to follow my movie to learn..

A nice blog about installing + basic setup: FetchXML - BIDS install - CRM 2011

Please note the following limitations:
  • You cannot specify left outer joins – e.g. The following is not supported: “Select all Accounts who do not have a related Completed Appointment record”
  • You cannot specify group by / sum queries – e.g. The following is not supported: “Select Account Name, count(*), sum(est. value) from Account Group By Account Name” – You can only select the records in detail and then perform the aggregation in your report. But…
  • Fetch XML queries return a maximum of 5000 records.
In these movies you'll see the following:

Part 1:
- Explaining how to setup the authentification to server
- Explaining hoe to get the fetchXML from CRM that you need.
- Showing the wizard and telling a bit tricks and tips
Part 2:
- Explaining Datasets and data sources
- Showing how to create parameters
- Basic GUI for reports
Part 1: 

Part 2:

 
Hope you found this usefull! :)

Friday, January 13, 2012

Several Basic Javascripts part 2

Hi, more basic javascripts!! Yes, we love them and hate them! Please read Several Basic Javascripts Part 1 aswell!

Get value of lookup: Xrm.Page.getAttribute("prefix_fieldname").getValue()[0].name
- read method as: get array 0's name (or Id)

Set Value of lookup:
var idValue = "2B0CDF21-7C04-E011-8ABA-00155D011B05"; //GUID of record
var textValue = "Prisliste"; //Name of record
var typeValue = "Pricelevel"; //Schema name of record entity
Xrm.Page.getAttribute("prefix_fieldname").setValue([{id: idValue, name: textValue, entityType: typeValue}]);

Show/hide section: Xrm.Page.ui.tabs.get(1).sections.get("Section_name").setVisible(false)
Set visible values: true or false
Tab value: number (1) or "name"
Section value: "name_of_section"

Show/hide field: Xrm.Page.getControl("prefix_fieldname").setVisible(false)
Set values: true or false

Show/hide tab: Xrm.Page.ui.tabs.get(5).setVisible(false);
Set Values: true or false

Save: Xrm.Page.data.entity.save();
Optional params: "saveandclose" or "saveandnew"

Set Require lvl: Xrm.Page.getAttribute("prefix_fieldname").setRequiredLevel('required');

Get length of string:
var oField = Xrm.Page.getAttribute("prefix_fieldname").getValue();
alert(oField.length);

Substract content of string:
var oField = Xrm.Page.getAttribute("prefix_fieldname").getValue();
alert(oField.substr(0,7);

Ex: "Consultancy" --> after substract: "Consult"

Set Focus:
Xrm.Page.getControl("prefix_fieldname").setFocus(true);

Hope you found this usefull! :)

Monday, December 19, 2011

CRM 2011 Dialog guide

Hi, one of my favorite new features of CRM 2011 is Dialogs! This is more of a interactive workflow where the user gets guided thou a prosess.

To explain Dialogs, I've created a simple use-case: This is part 1 out of x !? ;)
I have a lot of leads and want to create a custom lead convert.
1. I want to check if the lead have a company allready in CRM as an account
2. I want to check if it exists two leads against same company
- + You could add more checks

So let's get dirty and create this dialog :)

First thing first:
Start by planning the keyelements you'll be needing in this Dialog.
1. We'll going to need two queries.
  • Find all Accounts that might be a duplicate.
  • Find all Leads that might be the same company.
2. The steps we're going to need are:
  • Build up Queries
  • Check the Queries
3. Have a basic thought of the logic under each step:
Build up Queries
  • Find all Accounts where: Accountname in Accounts entity equals/contains Company field in selected lead
  • Find all Leads where: Company field in selected lead equals/contains company field in other leads
Check the Queries
  • If  the query "Find all Accounts that might be a duplicate." contains more then zero records AND the query "Find all Leads that might be the same company." contains more then one recod. (Since we running dialog on one of them)
    • Promt user and ask what to do
  • Else if:
    • "Find all Accounts that might be a duplicate." contains more then zero records
      • Promt user and ask what to do
    • "Find all Leads that might be the same company." contains more then one record
      • Promt user and ask what to do
  • Default:
    • Promte user and tell no duplicates or other leads are found, ask what he wanna create:
      • Create Account: Yes/No
      • Create Contact: Yes/No
      • Create Opportunity Yes/No
    • if Create Account equals yes
      • Start Child Dialog "Create Account"
    • if Create Contact equals yes
      • Start Child Dialog "Create Contacs"
    • if Create Opportunity equals yes
      • Start Child Dialog "Create Opportunity"
The reason why it's important to have a basic drawing of these steps and if's are that it's hard/impossible to re-design the dialog when first started. (You can't re-design the logical hierarki)

Let's build this Dialog! I've created a videoguide as I'm to lazy typing down every detail and taking lots of screenshots :P

Part 1:
Creating the basics for the dialog:
(Note I'm doing one error! The IF ("Find all Leads that might be the same company." contains more then one record. I'll correct the error in next part!)
Part 2:
Creating the default action (Normal convert)
Part 3:
Creating the what will happen if "Find all Leads that might be the same company." contains more then one record
Part 4:
Creating the what will happen if "Find all Accounts that might be a duplicate." contains more then zero records

Part 5:
Creating the what will happen if "Find all Accounts that might be a duplicate." contains more then zero records AND the query "Find all Leads that might be the same company." contains more then one recod.
Good luck devoloping futher!!

Sunday, December 11, 2011

A few must have Tools for CRM 2011

Hi, I'm sorry is been a lot to do at work the past few weeks, so few updates :( But here comes a nice one, a list of nice tools for MS CRM 2011 with a short description:
http://pragmatoolkit.codeplex.com/
It provides easy user interface to create custom buttons and add to CRM Ribbon without having to manually modify the underlying XML files. It also takes care of creating the solution and publishing it back to MS CRM 2011.
http://jswebresourcemanager.codeplex.com/
JavaScript Web Resource Manager for Microsoft Dynamics CRM 2011 helps CRM developers to extract javascript web resources to disk, maintain them and import changes back to CRM database.
You will no longer have to perform mutliple clicks operation to update your js web resources
http://crm2011odatatool.codeplex.com/
The CRM 2011 OData Query Designer is a Silverlight 4 application that is packaged as a Managed CRM 2011 Solution. This tool allows you to build OData queries by selecting filter criteria, select attributes and order by attributes. The tool also allows you to Execute the query and view the ATOM and JSON data returned.
http://crm2011metabrowser.codeplex.com/
The CRM 2011 Metadata Browser is a Silverlight 4 application that is packaged as a Managed CRM 2011 Solution. This tool allows you to view metadata within CRM including Entities, Attributes and Relationships.
http://roleupdater.codeplex.com/
Role Updater for Microsoft Dynamics CRM 2011 makes it easier for CRM 2011 administrators and developers to add or remove privileges to multiple security roles in one operation.
You'll no longer have to open each security role and apply privileges one by one.
- This application is compatible with OnPremise, Online and Claims based authentication deployments

Hope these tools give you an early Chrismast vecation by saving you some time :)

Thursday, November 24, 2011

Several basic Javascript commands CRM 2011

Case switch:
var valueToSwitch = Xrm.Page.getAttribute("yourField").getValue();

switch(valueToSwitch)
{
case 0:
//what to do if value = 0
break;
case 1:
//what to do if value = 1
break;
case 2:
//what to do if value = 2
break;
}
 Catch error:
try {
//Code
}
catch (ex) {
var txt="You got the following error\n\n" + ex;
alert(txt);
}
Force submit (fields that are marked read only - make scripts able to write to them)
Xrm.Page.getAttribute("youField").setSubmitMode("always"); 
 Forminfo check:
function forminfo()
{
var items = Xrm.Page.ui.formSelector.items.get();
if (items.length > 1)
{
alert("Formtype: " + Xrm.Page.ui.getFormType());
alert("Form ID: " + Xrm.Page.ui.formSelector.getCurrentItem().getId());
alert("Formname: " + Xrm.Page.ui.formSelector.getCurrentItem().getLabel());
} 
else
{
alert("There is only one form item currently available.");
}
}
 Maximize window
window.top.moveTo(0,0);
window.top.resizeTo(screen.width, screen.height);
 Get name of selected picklist value
Xrm.Page.data.entity.attributes.get("crayon_fagomrde").getText();
 Start Dialog from Form (note tings to change)
var dialogId = "a13ad982-d812-40a0-ab67-f314cdabbd2b"; // This must be your Dialog ID
var returnValue = showModalDialog("/" + Xrm.Page.context.getOrgUniqueName() + "/cs/dialog/rundialog.aspx?DialogId=%7b" + dialogId + "%7d&EntityName=account&ObjectId=" + Xrm.Page.data.entity.getId());

//Optional:To save and close entity form as soon as the dialog is closed.
//Xrm.Page.data.entity.save("saveandclose"); 
 Set URL to Iframe
var url = http://www.crayon.com
Xrm.Page.getControl("IFRAME_iFrameName").setSrc(url); //("about:blank") if black
 This was some of the basic javascripts..

Hope it's usefull for you!

Thursday, November 17, 2011

66x48 Icons CRM 2011.. Yes? No?! Why?

Did you know that 66x48 icons in CRM 2011 isn't used? Could this be becourse of backwards compatibility when organizations are upgraded from Microsoft Dynamics CRM 4.0? Anyway, here's some details about Icons:

Types of Icons

The following table list is the types of entity icons you can update.

    Type Specifications Property
Icon in Web application
Displays when records for this entity are displayed in a grid.
  • 16x16px
  • Less than 10k
IconSmallName
Icon for Entity Detail Forms
The application incorrectly labels this as the Shortcut icon in Microsoft Dynamics CRM for Microsoft Office Outlook
  • 32x32px
  • Less than 10k
IconMediumName
This size icon is not used in Microsoft Dynamics CRM 2011. The application incorrectly labels this as the Icon in Entity forms.
  • 66x48px
  • Less than 10k
IconLargeName

PNG Web resources are recommended because they support transparency and good compression with a better color fidelity than GIF. GIF, JPG, & ICO formats are supported for backwards compatibility when organizations upgrade from Microsoft Dynamics CRM 4.0.

Illustration of where to upload Icons:
(Shows up when a entity is selected)


If you are using CRM 4.0 - Check out the Demonstration Tools - Contains a "Icon creation tool" I simply loved!

Get the great feeling of not have a customized CRM solution by adding Icons