Show specific entities in Activity Party List Lookup in D365 Activity entity

Out-of-the-box, D365 Activity Party List field, say, Appointment’s Required/Optional Attendees fields lets you choose among multiple Activity Party enabled entities when you want to select records. And perhaps you don’t even want users to select what’s not relevant.

default

Let’s look at how we can show only the required entities in the selection list.

Before that, if you want to check how you can enable custom entities for the Activity Party, you can refer this post of mine – Enable entity for Party List selection in Appointment

Hide entities from the Activity Party List field

This can be achieved by writing a simple JS code and calling it onLoad of the Appointment form where the Party List field exists.

  1. Let’s say you only want to show the entities Lead and Contact in the Required Attendees Party List field
  2. Here’s the JS code that goes on the onLoad function of the Appointment form
    // JavaScript source code
    oAppointmentFormCustomization =
    {
    filterRequiredAttendees: function () {
    Xrm.Page.getAttribute("requiredattendees").setLookupTypes(["lead","contact"]);
    }
    };

     

  3. And call the method filterRequiredAttendees onLoad as below
    onLoad
  4. The Appointment’s Required Attendees field will show only the entities you provided in the setLookupTypes([“lead”,”contact”]);
    filtered

Hope this helps!

Delete Async Plugin Logs if plugin succeeds, save D365 storage space

Let’s see how we can efficiently manage D365 storage without bloating the storage with data that you might not need.

In my opinion, we don’t really need to know that the background process was successful or not, we typically care for what failed.

So, from an Asynchronous plugin standpoint, the logs in D365 is registered in the System Jobs and they create a ton of System Events if you are Importing data in D365 and your Async process is on the create of such records.

sysjobs

Check your Async plugin step

  1. Now, you can preserve this storage space by choosing to Delete the Async plugin logs.
  2. In the screenshot below, you can see an option to ‘Delete AsyncOperation is StatusCode = Successful
    deletelog

In this case, the System Jobs for the will not be created, thus, saving you valuable storage space if your plugin is run frequently.

Hope this helps.

Enable entity for Party List selection in Appointment

Out-of-the-box, you have fixed set of entities enabled for Party List fields in Appointment entity. Of which, you can select to be either in Required or Optional fields on Appointments.

But, what if you want to enable a custom entity for the same? You can do that was well.

Enable Entity for Sending Email

  1. In your custom entity, you can turn on Sending Email option on the entity level and the entity will be enabled for Party List.sendingemails
  2. And Publish your customization.
    Now, when you select the Required/Optional field in Appointment, Look for More Records
    lookForMoreRecords.png
  3. Select the Look For option to expose available entities
    expandlookfor
  4. And look for the custom entity you created i.e. Office Representatives my this case.
    selectentity
  5. And select the record you want
    jamieg
  6. And the custom entity record will be added to the Party List field
    addedtolist

The reason your see them enabled is because Email Address (emailaddress) field has been created for the entity i.e. the entity is now Email enabled.

Hope this helps!

Using ‘Clone a Patch’ & ‘Clone Solution’ in D365 Solutions

Doing incremental deployments from Sandbox to Production is a part of every other D365 implementation.

And when do this, typically, you just create a new solution for every single time you move things over. This creates a lot of mess and leaves your Solutions in unorganized dump!

Let’s see how we can stay organized by using Clone a Patch and Clone Solution to keep things synced and clean

Clone a Patch

Clone a Patch should be used when you don’t want parent dependencies in the solution all over again unless you want to change them. So, always use this when you want to add newer things to a previously existing solution.

  1. I have created MainSolution_1 as my main solution, the first time I started my customization. I added only 1 field, called Target Sale for demonstration purpose.
    mainsolution
  2. Now, let’s say I deployed it over, the next time I want to add some more functionality to the existing solution I deployed, I should not create another solution.
  3. Rather, I’ll use Clone a Patch as shown below.
    cloneapatch
  4. In Clone a Patch, I’ll keep the Display name same and the version number is configurable up to the last 2 sub-versions.
    clonepatchproperties
  5. So this is how my Patched solution will look.
    preparedclone
  6. In this solution, I’ll add another field called as Min Target To Achieve and deploy it over to Production, maybe.
    patchcontents

Clone Solution

Clone a Solution is used when you have a main solution and several patches. Clone a Solution will roll up everything into a new “parent” solution and remove every other solution of which you cloned including the source solution.

  1. I’m select MainSolution_1, the first main solution I had created with the field Target Sale field. And then I chose to Clone Solution.
    clonesolution
  2. Similar to Clone a Patch, I have now the version control over the first 2 version numbers and since it is the first Clone, the final numbers are 0.0. I named it MainSolution_1_Cloned.
    clonesolutionproperties
  3. It takes a few moments to Clone everything.
    inprogress
  4. Now, I have cloned the solution and the resultant solution has all the components from the Main Solution as well as from the Patch solution summed into 1 final solution.
    cloned
  5. Also, notice that all the other solutions including the MainSolution_1 from which I cloned this solution is deleted.
    cleanedsolutionsarea

Thereby, you have a clean Solutions area with all sorted work.
Hope this helps. 😊

Use Learning Path for your D365 v9.x Organization – Part 3 | Guided Tasks

After 2 posts to trying to summarize Learning Paths, here we are to Guided Tasks which conclude this series. We will see D365’s early adopters can get acquainted with processes in your organization and getting them to know the system.

To check the other 2 posts – Please follow the below posts

  1. Setup – Use Learning Path for your D365 v9.x Organization – Part 1 | Setup
  2. Sidebar –Use Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

Configuring Guided Tasks

  1. Assuming you are already in Learning Path > Content Library. Select Guided Task.
    guidedTask
  2. Fill out the properties of the Guided Task like the name and how you want it to behave.
    guidedTaskProperties
  3. One you save, you get a Flow Editor where you can add 4 different types of Guided Task modal.
    flowEditor
  4. So, these 4 types of modals are available. Here’s what each of them do –
    1. Step with Next Button – Simple instruction in Text or Video and a Next Button
    2. Step with User action – Will make you click the button/action it is pinned to. And only then move forward.
    3. User Action with Next Button – This is a combination of A and B above. You can either select the action or skip to next step.
    4. Learning Step – It is like a tip and comes with a Button that can open another Learning Path Published item. Like, Sidebar in my case.
      stepTypes
  5. When you drag either of the above onto the screen, the D365 screen is highlighted with areas where you can drop it and it gets pinned to that item.
    skeleton
  6. On each of the types of modals, you get to either enter Text or add a Video.
    contentTypes
  7. For Learning Step modal, you get to also configure what will open when user clicks Learn More.
    learnMoreEditor
  8. In my case, I’ve opened the existing Sidebar from Part 2 of the blog series.
    sideBar

Finally, my track looks like this –

track

Previewing and Publishing

  1. Once you are done editing, Save your changes and Check In your changes.
    confirmCheckin
  2. Once you proceed, you’ll be asked in the same way as Sidebar to specify which all environments you want to publish this to.
    envSelect
  3. On publishing, you’ll see this notification.
    published

Seeing Guided Tasks Work

    1. Step with Next Button.
      stepWithNextButton
    2. Step with User Action (Notice that it doesn’t have a Next button but is asking you to click on the Gear Icon)
      userAction
    3. User Action with Next button, either of which will take you to the next step.
      nextUserButton
    4. Learning Step (Clicking on Learn More will open the Sidebar on the right hand side)
      learningStep
    5. Sidebar showed up on clicking Learn More from Step 4 above.
      LearnMoreSidebar

Hereby, I conclude Learning Task. I tried to keep it as short as possible. But then, lots of screenshots.

To summarize, you can read previous blogs in this series
1. Setup – Use Learning Path for your D365 v9.x Organization – Part 1 | Setup
2. Sidebar – Use Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

Hope this gets you through Learning Path quickly! 🙂

 

D365 Ribbon Button shortcut to open a Document in SharePoint Online

I’ve come across a request where someone wanted quick access to a policy document which is commonly used by all CRM users. Documents like – a Policy Document, Terms Of Service, or absolutely a common User Guide!

Users find it tedious to remember and navigate to SharePoint to get hold of the same document frequently. So I thought, why not have a simple button to open the document in a new tab? Pretty easy. Here’s how we do it.

Ribbon Workbench

So, we use Ribbon Workbench to add a shortcut button to an entity’s form where if users feel they should look at the document while they’re working on the record, they can easily do so by just clicking it.

  1. Create a button on, say, Account entity form.
    createButton
  2. Use URL Action in Command to enter the SharePoint link to the document.
    ribbonAction
  3. Ensure what type of access you want for the document. Presumed that only people within the Organization should be able to use it.
    docAccess
  4. Use Copy Link feature to get rid of the % from the direct link and use the link in the URL Action and publish changes
    copyLinkButton
  5. Copy the link.
    copyTheLink
  6. And paste it in the URL Action property of the button
    pasteLink
  7. Make sure you select the Command you created and add it to the button as shown below, and maybe also a nice icon too!
    commandButtonJoin
  8. Finally, Publish changes.

Accessing the Document

Now, since you have published the button, we are ready to test.

  1. Go to Account for and click the button.
    clickButton
  2. It will take you to the document whose link you put it in the new tab (or whatever preference you had set for opening the link).
    openDocument

Pretty simple use case. 😊