Skip to main content

How to Prevent Closing an Opportunity

If you ever need to execute some logic when a user clicks "Close Opportunity" from the Opportunity form, then a good technique is to wrap CRM's native close javascript function with some custom javascript.

The following javascript should be ran onload of the form.

First we will declare our function that will return a boolean based on whether the user can close the Opportunity or not.

canCloseOpp = function()
     var canClose = false;

     // validate if you can close the opp or not

     return canClose; 
Then we find the "Close Opportunity" button by id and if it exists 
we will change the action property which will get executed when
the user clicks the button.  We will first call our custom function 
to see if the user can close the opportunity.  If it returns true we 
will call "complete" which is CRM's native function to close an 
opportunity.  If it returns false we will display an alert explaining
why the Opportunity can't be closed. 
var btnClose = document.getElementById('_MIcomplete');
if (btnClose)
   btnClose.action = 
      "if (canCloseOpp()) { complete(); }" +
      "else { alert('Opportunity can not be closed.'); }";


Popular posts from this blog

Announcing the New Dynamics 365 Toolbot Chrome Extension!

Today I am excited to announce the new Dynamics 365 Toolbot! This new Chrome Extension will allow you to perform commands that will help you with your development or administrative tasks. The extension can be found here -

Note: Currently, due to the APIs being used, it only works on v9+.

First, navigate to the link above using Chrome and install the extension. Then, head to your Dynamics 365 environment and open a record. From there, click the little blue robot icon in the toolbar of Chrome which will pop open the Toolbot.

Click the text box and a list of commands will display. You can select or type any of the commands and hit Submit to execute them. Some commands require you to replace the default token with the desired request.

For example, select or type "display id" and click Submit and the Toolbot will display the current record's ID.

The majority of the commands should …

Dynamics 365 ToolBot: Auto-populate the form

Today I released a new command for the Dynamics 365 ToolBot that I am really excited about! If you're not sure what the Dynamics 365 ToolBot is, it is a new Chrome extension that I released recently that allows you to quickly execute helpful commands for administrators, developers and testers.

This new command, called "Fill Form", will automatically populate all the fields on the form with random data. As a developer, I always need test data and I am the worst at coming up with fake data to use. With this command, you can navigate to any record, open the ToolBot, type "Fill Form" and your record will instantly be populated with random data so you can quickly save the record and proceed with your testing.

A few things to note about this command:
It attempts to detect contact fields (based on the field name) such as first name, last name, email, phone and address and populate those fields with realistic fake dataAny other field will generate random data based on t…

Introducing the new WYSIWYG model-driven form designer

Microsoft recently announce their new WYSIWYG model-driven form designer.  See here for more details.

Initially looking at this, this designer seems pretty amazing and will resolve a lot of the pain points identified with using the classic Dynamics 365 form designer, such as:

Allowing makers to see how the form would look to end users as they configureEnhanced fields pane with searching and filtering capabilities on the leftAn always available properties pane allowing makers to configure components of the form without having pop-ups appearA tree view to quickly navigate forms fields and controlsThe ability to switch between form factors / sizes to see how the form will look on different devicesSave and publish via a single button

To use the new form designer, you must click on either Edit form (preview) or Add Form -> Main form (preview) from PowerApps.
Note that this is currently out only in public preview, and therefore consider this a very early version of something exciting to c…