D365 Solutions History – Keep track of your deployments

As you might have observed, newer updates to D365 are bringing out vital features which were much needed in Dynamics 365 are finally rolling out.

One such feature is Solution History!

As you can see in your SiteMap, you’ll see Solutions History has been added
sitemap

It gives you a summary what solutions were imported, exported or deleted.

summary

Where does this come from?

If you look at the Default Solution, this is coming from Virtual Entity Data Provider
dataprovider

Availability

My observation is that this is available for organizations from 9.1.0.1471 onward.

version

If you want to learn more about my Cloning and patching Solution, check my blog here – Using ‘Clone a Patch’ & ‘Clone Solution’ in D365 Solutions

 

Hope this helps.

Advertisements

Quickly use Email Signatures in D365

You can use Email Signature in D365 Emails as well. Here’s a quick tip on it to quickly create a Signature and use it.

As I write this blog, this feature is not yet available in the Unified Interface yet.

Create a Signature

  1. Navigate to Settings > Templates > Email Signatures
    insertsignaturefeature

  2. And create a New Signature as below
    newemailsignature
  3. Now, I save and close.
    emailsignaturesaved

Insert and use Signature

Now, when you write a new Email or this email in D356, you can select the signature as below –

  1. Select Insert Signature while working on the email
    insertinemail
  2. Select the Signature and click Select.
    selectsignature
  3. And the Signature appears.
    finalsignature

That was easy. 🙂

Create a New Record button for Activity Type entity using Ribbon Workbench: D365

Problem

Typically, when you create a new Activity type of entity and you want a Create button for the same, it just appears in the Other Activities fly-out button and not on the Main ribbon in Activities to be specific.

currentProblem

And you can’t simply drag it out in the Ribbon Workbench since it is a dynamic button.

dynamicMenu

So, in this blog, I’ll create a button to open a new Create record form for my Activity type of entity called Assignment.

Customization

  1. Create a new Solution in your D365 environment and only add Activity entity into it.
    createSolution
  2. Load this solution into Ribbon Workbench and on the Main ribbon, add a button and give it a Name and Icon
    Note: Since there was no space in the Activity Ribbon, I had to sacrifice on of the least used Activities I had.
    sacrificeButton
  3. On that, I created a new Command and provided the below parameters –
    commandParameters
    Make sure you enter the name of your entity in String Parameter shown above correctly, in my case, it is new_assignment.
  4. Attach this Command to the Button
    mapButton
  5. Now Publish and check.

Create Assignment Button in Action

Now, when I go to Activities, I see my button called Assignments

buttonAppears

 

And when I click it, it open the full form for the Assignment entity

newForm

Hope this was quick!

D365 Quick Tip: Rather Uninstall Plugin Profiler from the D365 Solutions

Often, I get annoyed when I finish debugging the plugin and want to uninstall the Plugin Profiler from the Plugin Registration Tool so that users can quickly go ahead and test out the fix, it takes longer in the tool for the Profiler to be uninstall.

uninstallFromTool

And if at times, there are bandwidth issues, the uninstall just times out giving you this error.

error

Solutions in D365

Same thing is available in your organization’s Solution as well.

Select it and Delete it. It happens in less time.
uninstallFromSolutions
confirm

As a test, I simply closed the browser window and solution was deleted later when I logged back in. Since it happens on the server.

Hope this quick tip saves a few minutes. 😊

D365 Quick Tip: Est. Revenue calculations on Opportunity

Here’s a quick tip! Either let the system calculate the revenue of the Opportunity based on the Product Line Items or you can enter yourself or add your own custom logic to it.

So, there is a field on the Opportunity entity of type TwoOptions – ‘isRevenueSystemCalculated

And, as self-explanatory as its name, it will let you either set your own Revenue calculations or pull it from the Opportunity Line Details

field

You can either put this field on the form to switch while working or use custom logic (or use Default Value) to be set and keep it hidden from the user as per you requirements.

For the purpose of this blog, I’ve kept it on the form.

System Calculated

When you select System Calculated, the Est. Revenue field is locked and the Revenue is calculated from the Product Line Items.
systemCalculated

User Provided

When you select User Provided, the Est. Revenue field is unlocked and the Est. Revenue is open to enter data into it.
userProvided

Pretty straight-forward! 😊

Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

While working with BPF fields using JavaScript, there can be instances where you might want to keep the field locked in a certain stage but unlocked in another stage. And using Xrm.Page.getControl(controlName) or for v9 – getFormContext.getControl(controlName) should differentiate between the 2 fields?

Let’s see what we need to do here.

Scenario

  1. Let’s say I want the users to enter Customer Need data in Develop Stage.
    unlockedField
  2. But, just view what data is present in Propose Stage shown below, not modify it. (I’ve just renamed the field to Summarize Customer Need instead)
    lockedFields

JavaScript Usage to access the Control

  1. Now, since the Summarize Customer Need field is the second time, using getFormContext.getControl(“header_process_customerneed”) will be fetched to disable the first field only i.e. Customer Need in Develop stage.
    unlockedField
  2. To access Summarize Customer Need, you need to append “_1” to the control name for the second occurrence. And _2 and so on for further occurrences.
    Here’s the sample code which I used to access Summarize Customer Need to access the second occurrence of the field and use setDisabled(true) to lock it –
    code3. And that way, you’ll be able to access Summarize Customer Need control and do your desired operation (like even make it hidden or visible depending on your scenario) –
    lockedFields
    Hope this helps!