Category Archives: Power Plattform
Transforming Return Logistics for a USA Manufacturer: Automating Shipment Processing with Dynamics 365 Customer Service
Summary This blog highlights the integration of Microsoft Dynamics 365 Customer Service Hub with FedEx Shipping Manager to handle automated email return shipments for a consumer electronic appliances company based in Massachusetts, USA. In the original process, customer service representatives were required to manually register each return shipment through the FedEx Shipping Manager portal. This process involved copying customer details, creating shipments, generating labels, and capturing tracking numbers ā a workflow that typically required 20ā30 minutes per request. The integration project automated the entire return shipment process directly within the Dynamics 365 Customer Service Hub. With a single click, the system now registers the shipment using FedEx Shipment APIs, generates a return label, captures the tracking number, and updates the case record automatically. This innovation eliminated the need for agents to switch between systems and reduced shipment registration time from 20ā30 minutes to just a few seconds, significantly improving operational efficiency and the overall customer service experience. This blog explains: 1] The operational challenges caused by manual shipment registration. 2] How Dynamics 365 Customer Service Hub was integrated with FedEx Shipping Manager. 3] The functional workflow used to automate shipment creation. 4] How customer service representatives trigger shipments directly from CRM. 5] The business impact achieved through automation and system integration. Table of Contents 1. Customer Scenario 2. Solution Overview 3. Functional Implementation Approach 4. Email Return Label Experience 5. Handling Complex Data Automatically 6. Business Impact 7. Preview Video 8. Final Thoughts Customer Scenario A Massachusetts-based consumer appliance manufacturer known for building innovative kitchen technology was experiencing a growing operational challenge in its customer service operations. As demand for its products increased across major retail channels, the number of customer support cases related to product returns and replacements also grew significantly. The companyās customer support team handled all service requests through Microsoft Dynamics 365 Customer Service. However, when a product needed to be returned for inspection, replacement, or warranty evaluation, agents were required to manually create a shipment in FedEx Ship Manager. This manual process involved several steps: 1] Opening the customer case in the CRM system 2] Copying customer information and shipping details 3] Logging into the FedEx portal 4] Registering the shipment manually 5] Generating a return label 6] Capturing the tracking number 7] Returning to CRM to update the case Each shipment registration typically took 20ā30 minutes. When hundreds of return requests were processed weekly, this created several operational challenges: 1] Agents constantly switched between multiple systems 2] Manual data entry increased the risk of errors 3] Customer response times increased, leading to customer resentment 4] Tracking information was not always immediately available in the case record The organization needed a more efficient way to handle returns while keeping the entire process inside their CRM platform. Solution Overview To streamline the returns process, I implemented an integration between Microsoft Dynamics 365 Customer Service and FedEx shipping manager services. The goal was simple: Allow customer service representatives to generate a return shipment directly from the case record with a single click. Instead of navigating to the separate external shipping portal, agents can now initiate a return shipment directly from the CRM case page. Once triggered, the system automatically handles the entire shipment (Email/Return/Label) registration process. With this solution in place, the workflow now looks like this: A customer contacts support regarding a product return via their website, which registers an associated Case record in D365 Case Management (via existing case automation). The support agent opens the case in Dynamics 365. A āCreate Return Shipmentā button becomes available when the case meets the required conditions, e.g., Case Stage, RMA availability, Region of Customer, etc., thus validating and restricting shipment privileges. With one click, the system registers the shipment with FedEx (via appropriate FedEx Shipment APIs, as per customer requirements). The shipment tracking number is automatically captured and stored in the case record. This tracking number is useful for the customer support team as well as the customer to check the progress of the shipment on the FedEx Shipping Manager portal. The customer receives an email return label that they can print and attach to their package. FedEx Email Return Shipment Process Flow This transformation reduced a 20ā30 minute process to just a few seconds. Functional Implementation Approach The implementation focused on simplifying the experience for customer service agents while maintaining strict control over when and how shipments could be created. Intelligent Shipment Trigger Visibility Within the CRM case interface, the return shipment button appears only when specific conditions are met. This ensures that shipments are created only for valid return scenarios. Examples of conditions include: The case must have an approved return authorization The case must be in an appropriate service stage The customer address must be eligible for shipment Required customer information must be available Example: Return Shipment Trigger inside Dynamics 365 Customer Service Hub By embedding these conditions into the CRM interface, agents are guided through the correct service workflow without needing to remember complex procedures. Automated Shipment Creation Once the button is clicked, the system automatically gathers key information from the case record, such as: Customer details Shipping address Product description Return authorization number Contact phone number This information is then used to register the shipment through the FedEx shipping system. The system generates: A unique shipment tracking number A return shipment registration A digital return label The warehouse where the shipment would reach based on the product and end consumer requirement ā e.g., return, replacement, or repair of the product Example: A Successful Return Shipment to a specific warehouse. Example: Tracking a Return Shipment using the Tracking No. updated on D365 Customer Service Hub. Example: The FedEx Shipping Manager for Tracking the Integrated Shipments. The tracking number is immediately written back to the case record in Microsoft Dynamics 365 Customer Service, ensuring that support agents can track the return shipment without leaving the case. Email Return Label Experience After the shipment is registered, the customer automatically receives an email containing their return label. … Continue reading Transforming Return Logistics for a USA Manufacturer: Automating Shipment Processing with Dynamics 365 Customer Service
Share Story :
Donāt Just Migrate – Rethink Job Costing Beyond Dynamics GP
For many organizations using Dynamics GP, job costing has worked for years. Until it doesnāt. As GP approaches end-of-life, companies are being pushed to move – but when job costing is complex, the real question becomes:āCan we just move this to Business Central?ā In one of our recent implementations, we learned that the answer is no – not directly. Whatās needed is not a migration, but a re-architecture. Letās look at why, using a smaller, real-life example. The Starting Point: Job Costing That āWorksā in GP Our client had been using: The system worked – but it was tightly tied to GP logic and tables. When the move to Business Central was discussed, it became clear that a straight migration would carry old limitations into a new system. Why Business Central Alone Was Not Enough Business Centralās Jobs module is powerful, but it is best suited for simpler job structures. The client needed: Trying to force all of this into standard BC Jobs would have meant heavy customization and long-term maintenance risk. So instead, we rethought the design. The Re-Architecture Approach We clearly separated responsibilities: This allowed us to keep Business Central clean while still supporting real-world job complexity. A Real-Life Example A company wins a project worth $50,000. Job Setup This becomes the baseline for performance tracking. Committed & Actual Costs Now management can compare: Estimate vs Committed vs Actual – and see margin trends early. Forecast Revision Labor is running higher than planned. Instead of changing the original estimate: Change Order The client approves an extra $5,000 scope. Percent of Completion (POC) At month-end: Revenue is recognized based on actual cost incurred. Finance gets accurate revenue, WIP, and margin – without manual adjustments. Why This Architecture Worked This approach delivered: Most importantly, the system supported how people actually run jobs – not just how software expects them to. The Bigger Lesson: Donāt Migrate Problems When moving from Dynamics GP to modern platforms, the goal should not be to recreate the past. It should be to: Job costing is not just a module – itās a business process. Final Thought If you are planning a transition away from Dynamics GP and rely on job costing, ask yourself: Are we simply moving systems – or are we redesigning job costing for better control and visibility? The answer makes all the difference. I hope you found this blog useful. If you would like to discuss anything further, feel free to reach out to us at transform@cloudfronts.com.
Share Story :
Let AI Do the Talking: Smarter AI-Generated Responses to Customer Queries
Summary Customer service teams today must handle increasing support volumes while maintaining fast response times and high customer satisfaction. Traditional service models relying on emails, spreadsheets, and manual processes often struggle to scale efficiently. In this article, we explore how organizations can transform customer service operations using Dynamics 365 Customer Service, Power Platform, and Azure OpenAI to automate workflows, generate intelligent responses, and improve service efficiency. Table of Contents 1. Watch the Webinar 2. The Challenge: Scaling Customer Support 3. Operationalizing Customer Service with Dynamics 365 4. How AI is Transforming Customer Service 5. Key Benefits for Organizations FAQs Watch the Webinar In a recent CloudFronts webinar, Vidit Golam, Solution Architect at CloudFronts, demonstrated how organizations can operationalize customer service workflows using Dynamics 365 and enhance them with AI-powered responses. The session covers real-world service automation scenarios, intelligent case management, and how AI can assist support teams with contextual response generation. Watch the full webinar here: š The Challenge: Scaling Customer Support Many organizations begin managing customer service through email inboxes or simple ticket tracking systems. While this approach may work initially, it becomes difficult to manage as the number of customer interactions grows. Common challenges include: 1. Customer emails being missed or delayed 2. No centralized system to track service requests 3. Lack of visibility into response times and SLAs 4. Inconsistent responses across support teams As customer expectations increase, businesses require more structured and scalable service management systems. Operationalizing Customer Service with Dynamics 365 Dynamics 365 Customer Service helps organizations bring structure, automation, and visibility to service operations. The platform enables organizations to manage cases, track service performance, and automate routine service tasks. Key capabilities include: 1. Automatic case creation from customer emails 2. Queue-based case management 3. Service Level Agreement (SLA) tracking 4. Automated case assignment 5. Real-time service dashboards 6. Customer self-service portals Instead of manually tracking service requests, inquiries are automatically converted into cases, ensuring every issue is logged, assigned, and resolved systematically. How AI is Transforming Customer Service The integration of Azure OpenAI with Dynamics 365 enables organizations to move beyond basic service management and adopt intelligent automation. AI-powered capabilities can assist support teams by: 1. Generating contextual responses for customer queries 2. Summarizing case details for faster resolution 3. Suggesting knowledge base articles 4. Automating repetitive service tasks 5. Improving response quality and consistency These capabilities help support teams handle more requests efficiently while improving the overall customer experience. Key Benefits for Organizations 1. Faster response times for customer inquiries 2. Reduced manual effort for support teams 3. Improved consistency in customer communication 4. Better visibility into service performance 5. Scalable support operations without increasing headcount FAQs Q1: Can Dynamics 365 automatically create cases from emails? Yes. Dynamics 365 Customer Service can automatically convert incoming emails into cases and route them to appropriate service queues. Q2: How does AI help customer service agents? AI can generate response suggestions, summarize case details, and recommend knowledge base articles to help agents respond faster. Q3: Can this solution integrate with existing systems? Yes. Dynamics 365 integrates with Microsoft Power Platform, Azure services, and many third-party applications. We hope you found this article useful. If you would like to explore how AI-powered customer service can improve your support operations, please contact the CloudFronts team at transform@cloudfronts.com.
Share Story :
Implementing Custom Auto Numbering in Dynamics 365 CRM
In Microsoft Dynamics 365 CRM, every Case (Incident) record comes with a default Ticket Number. Microsoft generates it automatically, and while thatās fine for basic tracking, it usually doesnāt survive first contact with real business requirements. Users want meaningful Case IDsāsomething that actually tells them what kind of case this is, what service it belongs to, and where it came from. Unfortunately, since Ticket Number (ticketnumber) is a Microsoft-managed field, you canāt just slap a custom format on it using configuration alone. Thatās exactly where a Pre-Operation plugin comes in. This blog walks through a real production use case where we customize the default Case ID format without breaking Microsoftās auto-numbering, and without creating race conditions or duplicate numbers. Use Case Table: Case (Incident) Field: Ticket Number (ticketnumber) Requirement: Execution: Why Pre-Operation Microsoft generates the Ticket Number before the Create operation completes. In Pre-Operation, we can: This gives us: The Custom Ticket Number Format The final Case ID looks like this: Example: Plugin Logic Overview Hereās what the plugin does, step by step: The Plugin Code Plugin Registration Details Message: Create Primary Entity: Case (incident) Stage: Pre-Operation Mode: Synchronous Filtering Attributes: Not required. To conclude, customizing a Microsoft-managed field like Ticket Number often sounds risky, but as youāve seen, it doesnāt have to be. By letting Dynamics 365 generate the number first and then reshaping it in a pre-Operation plugin, you get the best of both worlds. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com
Share Story :
US-Based Field Service & Construction Management Provider Partners with CloudFronts for Job Cost v1 Transition from Dynamics GP to Power Platform & Business Central
We are pleased to announce that US-based field Service & construction management provider has partnered with CloudFronts to enhance their job costing capabilities through Microsoft Dynamics 365. As part of this collaboration, we are entering the second phase of our work on Job Cost on Power Platform with Business Central, where an MVP version of Job Cost is being developed for some of their select customers. These customers will transition from Job Cost on GP to Job Cost v1 on Power Platform & Business Central, with implementations tailored to their specific needs. Founded in 1995 and headquartered in New Berlin, Wisconsin, this organization is a leading provider of field service and construction management solutions. With products like Signature Suite and ProjectStream 365, it helps businesses streamline job costing, scheduling, equipment tracking, and field mobility. The company serves industries such as HVAC, energy services, and specialty trades, with deep integration across Microsoft Dynamics GP and the Power Platform. Since Microsoft has announced end-of-support for Dynamics GP by 2029, and company Signature Job Cost is built on GP, the CloudFronts team is developing Job Cost v1 on the Field Service/Power Apps platform, integrated with Business Central for transactions. This will enable Job Cost customers to smoothly transition to Dynamics 365 cloud applications like Power Apps and Business Central. To support them in this platform transition journey, CloudFronts is collaborating closely with their team. On this occasion, Priyesh Wagh, Practice Manager at CloudFronts, stated: “Weāre looking forward to working closely with the team on the development of Job Cost v1 on Power Platform and Business Central. This collaboration will enable customers to transition to Power Platformābased applications, and we are excited to partner with the core team behind this product.” About CloudFronts CloudFronts is a global AI First Microsoft & Databricks Solutions Partner for Business Applications, Data & AI, helping teams and organizations worldwide solve their complex business challenges with Microsoft Cloud, AI, and Azure Integration Services. We have a global presence with offices in U.S, Singapore & India. Since 2012, CloudFronts has empowered 200+ global clients small and medium-sized clients all over the world, such as North America, Europe, Australia, MENA, Maldives & India, with diverse experiences in sectors ranging from Professional Services, Financial Services, Manufacturing, Retail, Logistics/SCM, and Non-profits. Please feel free to connect with us at transform@cloudfronts.com
Share Story :
Connecting Your MCP Server to Microsoft Copilot Studio – Part 2
In Part 1, we built a simple MCP server in TypeScript that exposed a “getWeather” tool. Now, letās take the next step: connecting our MCP server to Microsoft Copilot Studio so that Copilot agents can call it directly. This section will cover: Step 1 ā Publish Your MCP Server to Azure To make your MCP server accessible to Copilot Studio, youāll need to host it online. There are multiple ways to deploy it ā Azure App Service, Azure Container Apps, or even Azure Functions if you prefer serverless. For example, using Azure App Service: Test using curl to ensure it responds with MCP-compatible JSON: Step 2 ā Create a New Copilot in Copilot Studio Step 3 ā Add Knowledge Sources Optionally, you can enrich your Copilot by adding: This gives your Copilot a baseline knowledge to answer broader questions, while the MCP server will handle specific tasks (like fetching live weather data). Step 4 ā Create a Custom Connector in Dataverse To let Copilot Studio talk to our MCP server, we need a custom connector inside Dataverse/CRM. Step 5 ā Add the Custom Connector to Copilot Studio you’ll see the MCP server in your Tools section of copilot. To test the setup, letās ask Copilot: āWhatās the current weather in Mumbai?ā On the first attempt, Copilot will prompt you to establish a connection. Simply open the Connection Manager, click Connect, and authorize the link to your MCP server. Once connected, Copilot will fetch the live weather details for Mumbai directly from your MCP server. and click retry on the Test window of your copilot. And just like that, your MCP server is live and fully integrated. It can now provide real-time weather updates for any city mentioned in your conversation with Copilot. You can try out different variations of questions or phrasings ā Copilot will intelligently interpret your request, extract the city name, and seamlessly call the MCP server to deliver accurate weather details. Beyond Weather: Business Integrations The same process works for enterprise systems. For example, instead of getWeather, you could expose: By publishing these tools via MCP, your Copilot becomes a true enterprise assistant, capable of pulling structured business data and triggering workflows on demand. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
Merging Unmanaged Solutions in Power Platform with XRMToolBox
Let’s say you are developing a module driven app or some custom app development in CRM and multiple teams have created multiple different solutions involving customizations for the develop. Best would be to have all the customizations in a single solution before and then move it to UAT or Production. In this blog I will show you how you can move components of multiple solutions into a single main solution using the Solutions Component Mover tool in XRM Tool Box. So let’s begin. Step 1: Download XRM Tool Box from this link – https://www.xrmtoolbox.com/ Step 2: Make a connection to your Dynamics 365 Environment inside of the XRM Tool Box by clicking on Create a new connection. Step 2: Click on Microsoft Login Control Step 3: Click on Open Microsoft Login Control Step 4: Now Select Display list of available organizations & show advance –> put your username and password -> after successful authentication Name your Connection. Step 5: Now in Took Library Search for “Solution Component Mover” and hit install. Step 6: Once the tool is installed it will appear in your tool list click on it Step 7: once you are in the solution component mover tool click on Load Solution. To conclude, now, you will get a list of all Managed and Unmanaged solutions. Select the solutions you want to merge in the Source Solution section and select the target solution in which you want to move the components. All the elements from source solutions will be moved to the target solution (Selected Solutions are highlighted in light grey colour). Once you have selected the source and target solutions hit Copy Components and we are done. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Share Story :
How to Trim and Remove Spaces from Multiple Columns in Power Query
Efficient data cleaning is a crucial step in any data preparation process, and Power Query makes it easy to handle common tasks like trimming and removing unnecessary spaces with functions that you can apply across multiple columns and queries at once. By creating and invoking a function, you can quickly trim and remove spaces from all the columns & tables you need, saving time and effort. In this blog, weāll show you how to use Power Query functions to streamline your data-cleaning process. The power query we are going to use to trim text in columns is – (text as text, optional char_to_trim as text) =>letchar = if char_to_trim = null then ” ” else char_to_trim,split = Text.Split(text, char),removeblanks = List.Select(split, each _ <> “”),result=Text.Combine(removeblanks, char)inresult This Power Query function takes text as input and removes extra spaces or a specified character from a text string. It splits the text into parts, filters out empty strings, and recombines the cleaned parts using the specified character. If no character is provided, it defaults to removing spaces. The power query we are going to use to remove spaces from the text is – (InputTxt as text) => let Clendata = Text.Combine(List.Select(Text.Split(Text.Trim(InputTxt),” “),each _ <> “”),“”) in Clendata The Power Query function removes all spaces from a given text string. It trims the input, splits it by spaces, filters out blanks, and then combines the parts into a single string. The result is a clean, space-free text, ideal for standardized data preparation. Now, we have our power query function ready, we can use this function across multiple columns or dataset. To do so, go to Add Column > Invoke Custom Function > Your Power Query Function. To conclude, Cleaning and transforming data in Power Query become much easier and more efficient with the use of custom functions. Whether you need to remove spaces, clean multiple columns, or standardize text, these functions save time and ensure consistency across your dataset. By applying these techniques, you can handle large, messy datasets with ease, making your data ready for analysis or reporting. Start implementing these simple yet powerful methods today to streamline your data preparation process! We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Share Story :
Data Flow with Array Filtering in Power Automate
When working with arrays in Power Automate, it’s common to need to filter or select a specific item based on certain attributes. Whether you’re handling JSON data from an API, processing records from a list, or managing dynamic content within a flow, efficiently identifying the right item is key. In this blog, we’ll explore a simple yet effective method to extract the desired item from an array using expressions in Power Automate. By the end, you’ll have a clear strategy to streamline your workflows and enhance the intelligence of your automation. In case you need to select an item from an array in Power Automate based on the value of a certain attribute, hereās how you can do it. Scenario You have an array of objects, and each object has a specific attribute. You want to efficiently select the object(s) where this attribute matches a particular value. As you see, the array of objects have different structure ā All of them have an attribute called ākeyā and thatās the one you want to select and then process further. Letās see how we do it. Filter Array Letās see how you can select the item from the array based on the value of the ākeyā attribute instead of looping through all the items and matching. To encapsulate, by using this approach, you can efficiently select specific items from an array based on the value of a particular attribute, making your Power Automate flows more dynamic and tailored to your specific needs. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Share Story :
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