Power Plattform Archives -

Category Archives: Power Plattform

All-in-One Guide to C# Plugin Data Types: Working with Strings, Currency, Lookups, and More

In Dynamics 365 and Power Platform, C# plugins play a crucial role in extending the functionality of your applications. One of the key aspect’s developers need to grasp is how to handle various data types effectively. This guide will walk you through the most commonly used data types in C# plugins, including strings, currency, lookups, option sets, and more. Introduction to C# Plugins C# plugins are custom business logic that you can implement in Dynamics 365 to execute in response to specific events, like creating, updating, or deleting records. They allow you to manipulate data and interact with the system in powerful ways. Understanding how to work with different data types is essential for writing effective plugins. Retrieving Entities Before you can manipulate data types, you first need to retrieve the entity record you want to work with. Here’s how you can do that: public void Execute(IServiceProvider serviceProvider){IPluginExecutionContext context =(IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); // Retrieve entity by IDEntity entity = service.Retrieve(“entity_logical_name”, context.PrimaryEntityId, new ColumnSet(true));}   Working with Different Data Types String The most common data types are strings. They can represent text values. Getting a String Value: string name = entity.GetAttributeValue<string>(“string_attribute_name”); Setting a String Value: entity[“string_attribute_name”] = “New String Value”; Currency Currency is represented by the Money type in Dynamics 365. Getting a Currency Value: Money amount = entity.GetAttributeValue<Money>(“currency_attribute_name”);decimal currencyValue = amount?.Value ?? 0; Setting a Currency Value: entity[“currency_attribute_name”] = new Money(150.00m); // Set to 150.00 Lookups Lookup fields refer to related entities. They are represented by the EntityReference type. Getting a Lookup Value: EntityReference lookup = entity.GetAttributeValue<EntityReference>(“lookup_attribute_name”); if (lookup != null) {     Guid lookupId = lookup.Id;     string lookupName = lookup.Name; // Requires another retrieve call to get the name} Setting a Lookup Value: entity[“lookup_attribute_name”] = new EntityReference(“related_entity_logical_name”, lookupId); Option Sets (Picklists) Option sets are used to represent a list of choices. They are represented by the OptionSetValue type. Getting an Option Set Value: OptionSetValue optionSetValue = entity.GetAttributeValue<OptionSetValue>(“optionset_attribute_name”); int selectedValue = optionSetValue?.Value ?? 0; Setting an Option Set Value: entity[“optionset_attribute_name”] = new OptionSetValue(1); // Assuming 1 is a valid option Multiselect Option Set Multiselect option sets allow multiple selections from a list. Getting a Value: IEnumerable<OptionSetValue> multiSelectOptions = entity.GetAttributeValue<IEnumerable<OptionSetValue>>(“multiselect_optionset”); Setting a Value: entity[“multiselect_optionset”] = new List<OptionSetValue> {     new OptionSetValue(1),     new OptionSetValue(2) }; // Assuming 1 and 2 are valid options Boolean Values or Two Options Boolean fields represent true/false values. Getting a Boolean Value: bool? isActive = entity.GetAttributeValue<bool?>(“boolean_attribute_name”); Setting a Boolean Value: entity[“boolean_attribute_name”] = true; // or false Getting a Boolean Value: OptionSetValue twoOptionsValue = entity.GetAttributeValue<OptionSetValue>(“two_options_attribute”); bool isSelected = twoOptionsValue?.Value == 1; // Assuming 1 is ‘Yes’ Setting a Boolean Value: entity[“two_options_attribute”] = new OptionSetValue(1); // Set to ‘Yes’ DateTime DateTime fields are used for date and time information. Getting a DateTime Value: DateTime? createdOn = entity.GetAttributeValue<DateTime?>(“datetime_attribute_name”); Setting a DateTime Value: entity[“datetime_attribute_name”] = DateTime.UtcNow; // Set to current date and time Image Image fields store binary data like photos or documents. Getting an Image: var image = entity.GetAttributeValue<EntityImage>(“image_attribute”);byte[] imageData = image?.ImageData; // Assuming you handle the image type properly Whole Number Whole numbers are represented as int. Getting a Value: int wholeNumber = entity.GetAttributeValue<int>(“whole_number_attribute”); Setting a Value: entity[“whole_number_attribute”] = 42; Floating Point Number Floating point numbers allow for decimal values. Getting a Value: float floatingPointNumber = entity.GetAttributeValue<float>(“floating_point_attribute”); Setting a Value: entity[“floating_point_attribute”] = 3.14f; Decimal Number Decimal fields store precise decimal values. Getting a Value: decimal decimalNumber = entity.GetAttributeValue<decimal>(“decimal_number_attribute”); Setting a Value: entity[“decimal_number_attribute”] = 123.45m; Setting Data Types After retrieving the desired values and possibly making changes, you need to update the entity. This is done using the Update method. service.Update(entity);    Some Additional Data Types you Might Encounter in Dynamics 365 C# Plugins such as : 1. Guid Getting a Value: Guid uniqueId = entity.GetAttributeValue<Guid>(“unique_attribute”); Setting a Value: entity[“unique_attribute”] = new Guid(“d3c1d9c8-7438-44b5-91b1-f40241b0f84d”); 2. Composite Fields Getting a Value: string city = entity.GetAttributeValue<string>(“address1_city”); string state = entity.GetAttributeValue<string>(“address1_stateorprovince”); Setting a Value: entity[“address1_city”] = “Seattle”;entity[“address1_stateorprovince”] = “WA”; 3. Unique Identifier (Primary Key) Getting a Value: Guid entityId = entity.Id; Setting a Value: Entity newEntity = new Entity(“entity_logical_name”) {     Id = Guid.NewGuid() }; 4. PartyList (Used in Activities) Getting a Value: string city = entity.GetAttributeValue<string>(“address1_city”); EntityCollection partyList = entity.GetAttributeValue<EntityCollection>(“to”); foreach (Entity party in partyList.Entities) {     EntityReference partyRef = party.GetAttributeValue<EntityReference>(“partyid”);     // Do something with partyRef }   Setting a Value: Entity party = new Entity(“activityparty”); party[“partyid”] = new EntityReference(“contact”, new Guid(“c3e4b159-64af-4c3d-b894-6d62007dbe79”));   EntityCollection partyList = new EntityCollection(new List<Entity> { party }); entity[“to”] = partyList; Conclusion Handling various data types in Dynamics 365 plugins is critical for creating robust and adaptable solutions. Knowing how to work with fields such as text, currencies, lookups, option sets, and others enables you to manage data more precisely and conduct custom activities in our CRM. With these examples, you now have the ability to retrieve and set values for a variety of common data types, making it easy to create plugins that match our organization’s requirements. As you gain experience, you’ll notice that handling data in plugins becomes easier, allowing you to focus on developing smart and effective solutions. We hope you found this article useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com

Share Story :

Integrating Azure Logic Apps with Common Data Service

Integrating Azure Logic Apps with the Common Data Service (CDS) opens up a world of possibilities for automating business processes and enhancing productivity within your organization. This blog will guide you through the steps to set up this integration, explaining the benefits and practical applications along the way. Azure Logic Apps is a powerful cloud-based service that allows you to automate workflows and integrate apps, data, and services across organizations. The Common Data Service, now known as Dataverse, provides a secure and scalable data storage solution that supports integration with various Microsoft and third-party applications. By integrating these two services, you can streamline data flow and automate complex workflows with ease. Prerequisites Before you begin, ensure you have the following: – An active Azure subscription. – Access to the Common Data Service (Dataverse) environment. – Necessary permissions to create and manage Logic Apps and CDS. Log in to the Azure Portal: Go to Azure Portal. Create a New Logic App: – Search for “Logic Apps” in the search bar. – Click on “Add” to create a new Logic App. – Fill in the required details (name, resource group) and click “Create”. Add a CDS Connector: – Once the Logic App is created, open the Workflow and Add one. – Click on “When a row is added” under Common Data Service triggers. – Sign in to your CDS environment and grant the necessary permissions. Configure the Trigger: – Select the relevant entity – Accounts and specify the trigger conditions – When a row is added. – Accordingly, when a record is added then create a Contact Record. – Save the Logic App Testing Out: Scenario – Create a new account in your Dynamics 365 / Power App. After a few moments, refresh and we see the contact has been created and assigned to the new Account. – So, we know our Logic App has run. Now let’s look at it in the Azure portal. Under Metrics, we see the Logic App has run. Why Integrate Azure Logic Apps with Common Data Service? We hope you found this article useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com

Share Story :

Remove Hover from Primary Navigation Bar Power App Portal

I had a requirement from a client to remove the hover from the header navigation on the customer portal. Here is how we do it, if we inspect, we can see that this is handled by a style element “.navbar-inverse .navbar-nav > li > a:hover“ Now if we removed the background colour here is how it looks. Now let’s make these changes in the code, edit your portal and open the portal in the Power Apps gallery and go to themes. Search for the style element and comment or remove the background colour. Hope this helps!

Share Story :

Here’s how to Install Power Apps for Windows (Preview) and use Model-Driven and Canvas Apps

Hi Everyone,Awaited moment is here, we finally have Power Apps designated application for Windows. Currently its in Preview so use only for testing as of now until its pushed globally. Here’s the steps to download and use Power Apps for Windows Step 1: Go to Microsoft Store and search “Power Apps” Step 2: Install the application. Step 3: In order to run this application, we need to check WebView2 Runtime version on our device. It should be version 99.0 or later. To check this, go to Settings > Apps > Apps & features. Search for WebView and verify that you have version 99.0 or later installed. For those who don’t have this, follow below steps. To install WebView2 Runtime, download the WebView2 Runtime. Download version 99.0 or later. Installing an earlier version may cause Power Apps to crash. Under Evergreen Bootstrapper, select Download. Go over the license terms and privacy statement and then select Accept and Download. When the download is complete, then run the MicroEdgeWebview2Setup.exe. Step 4: Open and sign-in with your ID Step 5: After logging in, you will find list of Model and Canvas Apps that are shared to you or you having access by security roles. The screen will show all Apps from all the environments present in you tenant. You can also see other model-driven apps if you enable Show non-production apps in settings under Model Apps. That’s all about installing Power Apps on Windows. Find the Microsoft Documentation for Installing – Microsoft Docs Find the Usage of Power Apps Windows – Microsoft Docs List of known issues – Microsoft Docs Hope this was informative and helped you.

Share Story :

How to create Dynamic Option-set/List based on value from other fields in Canvas PowerApps

Hi Everyone, Consider a scenario where we want to filter out a dropdown/combo-box choice field based on value in other field or dropdown.Since we cannot use scripts in Canvas App, here’s how we can show specific choice based on multiple values For this example, I’ve considered a bunch of basic items belonging to Fruits, Vegetables and Dairy products. For example purpose I’ll be creating a collection of values to representation. This step will be avoided for choices field within a table/entity.Below is the ‘Master Record’ of collection. Step 1: Create an indexed collection. (referring to MasterList in this example) Step 2: Let’s say we would like to classify the Master List into 3 categories (Fruits, Vegetables and Dairy). In this example, I’ll be using a dropdown list for which the main dropdown field is required to filter data. I’ll be adding a hidden button, containing the following code Based on the above code,Type 1 refers to “Fruits”, Type 2 refers to “Vegetables” and Type 3 refers to “Dairy” Step 3: Added dropdown which will hold classification values. Step 4: The main dropdown choice field which will be filtered based on categories mentioned by above dropdown. That’s it. We have successfully implemented the dynamic choice list as per values dependent on other field. Hope this helps you.

Share Story :

Quick Tip – Duplicate Fields from a Table to another Table

Hello,Consider a scenario where we need to have a table (entity) which is a replica of other table or you need some fields replicated into another table. This tool will save a lot of precious time. Let’s say I have a table called ‘Scoping’ and I want fields from that data replicated into another table called ‘ScopingClone’. Steps you’ll take to do this in a time-efficient manner. Step 1: Create a new Table/Entity. (In my case, I created ScopingClone) Step 2: Navigate to XrmToolBox and install ‘Clone Field Definitions‘, connect to your environment and open the tool. As you can see, the fields that I selected are successfully cloned. I hope you found this blog useful.

Share Story :

Quick Tip: How to get a quick Pop-up on a control which holds a detailed information than its size on screen in PowerApps

Hi Everyone, Isn’t it annoying that you have a text field in your Canvas App which holds a huge information to fit in a small space?There’s a quick solution which you can use to show a mini pop-up by an out-of-the-box feature. Let’s consider an example of where we have a paragraph in a text field then we have output is to be displayed with a limited height and width on the screen. Fig 1: This is a TextInput control where we have a detailed information.Fig 2: This is a normal label/text field control which has limited height and width. (Especially in scenarios like gallery records)Fig 3: This is a ComboBox control with DisplayMode set to View and the DefaultSelectedItems property is set as [TextInput.Text]We can see that when having more data, we can click more and see the entire information. Hope this quick tip helped you in your scenario.

Share Story :

Create attachments in SharePoint when email arrives

Use case – we wanted to retrieve attachment when new email arrives in outlook and create same file in SharePoint Let see how we can achieve this! Step 1 – Flow triggers on when a new email arrives trigger from Outlook connection. Step 2 – Retrieve attachments and Create file in SharePoint. Add step create file from SharePoint connection. In Create file, Add site address, Folder path, File name, File Content. Here file Content is the Attachment content from Trigger and File Name should be Attachment name. Save the flow and try. Hope this helps!

Share Story :

Date Time Action in Desktop Flow

Introduction: In this blog we will check the Date Time Actions of Desktop Flow. Get Current Date Time As the name suggests this action will get the current date and time of the selected Time Zone. Add to Date Time You can select the variable that contains date or type in the date and then choose  no of days/sec/months/ years that you want to add. Output: Subtract Dates This action will give the difference between two dates in sec/mins/hours/days. Note: We can Add Date Time in Months and Years but subtract does not allow the same.

Share Story :

Post an MS Form response to MS Teams Channel using Cloud Flows

In this blog, we will learn how to quickly design a simple Cloud Flow to post a message in MS Teams Channel when a user submits a response using MS Form. Step 1: Create an MS Form to get the responses from the targeted user. Go to https://forms.office.com/ and click on New Form to create an MS Form. Now, We will create MS Form that will take the Name, Age, Gender, Service ratting and comment which is optional as feedback. Step 2: Create a Team and Channel to post the responses Here, I am creating an Admin Team (Type — Private Team) that will be used by Management Team for organization. Now, we will add the “Feedback Responses” channel to post responses in Admin Team. Step 3: Create an Org Level Team that will be used by all team member to submit the responses (Optional — You can share the form via email or posted it on the website) Now, we will add the MS Form tab in the newly created “Feedback Form” channel so that team members can submit responses directly from MS Teams. After the channel is created, click on the + button on the top ribbon button to add a new channel tab. Look for MS Form and click to select the type of channel tab. Select Add existing form and choose your created Feedback form. After clicking on the Save button, a new Form Tab will be added to the feedback from channel of your Org Level Teams Check if Team, Channel and Form tab is visible from other users Log in with another and open the Team. Here, I have another user who has access to the Project Name team and Org Team but doesn’t have access to Admin Team as it Private Team for Management. Below is a screenshot for the same: Step 4: Create a Cloud Flow to post the response to the Private Teams channel Login to the Power Automate portal and create an Automated Cloud Flow Look for MS Form Trigger “When a new response is submitted” and click on Create to create Cloud Flow Select the Form in Cloud Flow trigger Add new step Get Response Data from MS Form Connect and select Response Id from triggering body Now, add a new step from Teams Connector Post a message (v3) to post the response in Teams Channel Configure the Team, Channel and Message (According to your requirement) Testing I have submitted the response from the MS Teams using another user: After submitting the response we get the message in the Admin Teams: Hope this helps!!!

Share Story :

SEARCH BLOGS:

[gravityform id="36" ajax="true"]

FOLLOW CLOUDFRONTS BLOG :