Category Archives: Blog
Automating Access Token and Refresh Token Generation Using ADF and Azure Key Vault – Part 2
In continuation to our Part 1, welcome to part 2 of the blog on Automating Access Token and Refresh Token Generation Using ADF and Azure Key Vault. We have already completed the necessary setup in part 1, so if you haven’t read part 1 yet, please do so before proceeding with this part. Assumptions- Before going further, let’s first discuss the assumptions we made: Now, let’s discuss the step to create a pipeline to refresh the access token: – – Create a web activity to pull the client ID, client secret, and refresh token you created in part 1. – As for settings, you use this setup, and URI is your Azure key vault’s Secret Identifier. – Similarly, set up web activities for the client ID, client secret, and refresh token. – For the refresh token, I have done setup as shown but you may want to change it according to your API requirements. Body- grant_type=refresh_token&refresh_token=@{activity(‘Get Refresh Token’).output.value} Authorization- Basic @{base64(concat(activity(‘Get Client Id’).output.value, ‘:’, activity(‘Get Client Secret’).output.value))} – After this, use another web activity to refresh the access token using the refresh token and save it to the Azure Key Vault. Body- { “value”: “@{activity(‘Refresh Access Token’).output.access_token}” } Conlusion: This blog provides a comprehensive guide to automating the access token and refresh token generation process using Azure Data Factory and Azure Key Vault. By following the steps outlined, you can ensure seamless token management, reduce manual interventions, and maintain secure access to your resources. 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 :
Automating HTML Email Notifications in Microsoft Dynamics 365 Business Central
Introduction In this blog, we will explore how to create HTML-formatted email notifications in Microsoft Dynamics 365 Business Central using AL code. We will guide you through a practical example that sends an HTML email notification when a Posted Purchase Invoice is inserted. Pre-requisite – Microsoft Dynamics 365 Business Central (On-premises or Cloud) Objective Our goal is to automatically send an HTML email containing purchase order details whenever a new Purchase Invoice Header is created. Step-by-Step Implementation Before diving into the code, you need to set up the email functionality in Business Central to ensure the system can send emails. Step 1: Set Up Email in Business Central Open Business Central: – Sign in to your Business Central account. – Search for “Set Up Email” in the top-right search bar. Configure Email: – Choose SMTP as the email type and click “Next.” – Fill in the necessary details, such as the email account and authentication details, then click “Next” to finish the setup. – Set the email account as the default if you have multiple email addresses. Step 2: Create Necessary Fields in Table and Page Extensions Add a Field in Table Extension: – Create a boolean field named “GRN Notification” in the User Setup table extension. This field will ensure that the email is sent only to the users who require it. tableextension 51328 UserSetupExt extends “User Setup” { fields { field(55005; “GRN Notification”; Boolean) { DataClassification = CustomerContent; } } } Add a Field in Page Extension: – Add the “GRN Notification” field to the User Setup page extension to allow users to enable or disable notifications. pageextension50102 extends “User Setup” { layout { addafter(“Register Time”) { field(“GRN Notification”; Rec.”GRN Notification”) { ApplicationArea = All; } } } } Step 3: Create a Table Extension for the Purchase Invoice Header This is where we extend the Purch. Inv. Header table to trigger a procedure that sends the email when a new record is inserted. tableextension 50101 PurchaseInvoiceHeader extends “Purch. Inv. Header”{ trigger OnInsert() begin GRNPostingtoPO(Rec); end; Step 4: Define the GRNPostingtoPO Procedure This procedure handles the core logic of the email notification: procedure GRNPostingtoPO(PurchaseInvoiceHeader: Record “Purch. Inv. Header”) var UserSetup: Record “User Setup”; EmailMessage: Codeunit “Email Message”; Email: Codeunit “Email”; PurchaseLine: Record “Purchase Line”; PurchaseHeader: Record “Purchase Header”; HtmlBody: Text; begin // Find the corresponding Purchase Header using the “Order No.” PurchaseHeader.SetRange(“No.”, PurchaseInvoiceHeader.”Order No.”); // If the Purchase Header exists, retrieve related Purchase Lines. if PurchaseHeader.FindFirst() then begin PurchaseLine.SetRange(“Document No.”, PurchaseHeader.”No.”); if PurchaseLine.FindSet() then begin // Build the HTML email body with purchase order details. HtmlBody := ‘Hello Team,’ + ‘<p>Please find the attached purchase order details.</p>’ + ‘<BR>’ + ‘<p>Purchase Order has been created successfully.</p>’ + ‘<h3>Purchase Order No. ‘ + PurchaseInvoiceHeader.”No.” + ‘</h3>’ + ‘<table border=”1″ style=”border-collapse: collapse; width: 100%;”>’ + ‘<tr>’ + ‘<th style=”padding: 8px; text-align: left; background-color: #f2f2f2;”>IDS No.</th>’ + ‘<th style=”padding: 8px; text-align: left; background-color: #f2f2f2;”>ITEM No.</th>’ + ‘<th style=”padding: 8px; text-align: left; background-color: #f2f2f2;”>Item Description</th>’ + ‘<th style=”padding: 8px; text-align: left; background-color: #f2f2f2;”>Quantity</th>’ + ‘</tr>’; // Loop through the Purchase Lines to add them to the HTML body. repeat HtmlBody += ‘<tr>’ + ‘<td style=”padding: 8px;”>’ + PurchaseLine.”Document No.” + ‘</td>’ + ‘<td style=”padding: 8px;”>’ + PurchaseLine.”No.” + ‘</td>’ + ‘<td style=”padding: 8px;”>’ + PurchaseLine.Description + ‘</td>’ + ‘<td style=”padding: 8px;”>’ + Format(PurchaseLine.Quantity) + ‘</td>’ + ‘</tr>’; until PurchaseLine.Next() = 0; // Close the HTML table and body. HtmlBody += ‘</table>’ + ‘<p>This is an Auto-generated mail, if any concerns related to purchase please contact the ERP Team.</p>’ + ‘</body></html>’; // Send the email to users who have GRN Notification enabled. UserSetup.SetRange(“GRN Notification”, true); if UserSetup.FindSet() then begin repeat EmailMessage.Create( UserSetup.”E-Mail”, ‘Purchase Order Posted’, HtmlBody, true ); Email.Send(EmailMessage, Enum::”Email Scenario”::Default); until UserSetup.Next() = 0; end; end; end; end; Output: Conclusion By following these steps, you can create HTML-formatted email notifications in Microsoft Dynamics 365 Business Central. This method ensures that users receive detailed and well-structured notifications, which enhances communication and workflow efficiency within your organization. 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 :
Introduction to Azure Service Bus and Its Use Case
Introduction Azure Service Bus is a fully managed, multi-tenant cloud messaging service functioning as a brokered messaging system. In a software-oriented architecture (SOA), application components interact through communication protocols over a network, facilitated by the Service Bus. This article provides an overview of Azure Service Bus, highlighting its role in integrating systems like Microsoft Dynamics 365 CRM with third-party e-commerce platforms. Real-World Scenario: Integrating Dynamics 365 CRM with an E-commerce Platform Azure Service Bus is instrumental in enabling seamless interaction between Dynamics 365 CRM and external e-commerce applications, enhancing data management and operational efficiency. – Customer Data Synchronization: Customer data from the e-commerce platform is transferred to Dynamics 365 CRM using Service Bus queues, ensuring the CRM system reflects the latest information. – Order Processing: When an order is placed, it triggers a message to Dynamics 365 CRM, streamlining order fulfilment and tracking through Service Bus topics and subscriptions. – Inventory Management: Inventory levels are updated in real-time across both systems. Messages sent through Service Bus ensure accurate stock levels, preventing overselling. – Customer Support Integration: Customer support tickets from the e-commerce platform are channelled to Dynamics 365 CRM, providing a comprehensive view of customer interactions and improving support quality. Use Case Real-Time Data Synchronization Between Dynamics 365 CRM and Finance & Operations Scenario: Imagine a company that uses Microsoft Dynamics 365 CRM for customer relationship management and Dynamics 365 Finance & Operations (F&O) for financial and inventory management. To ensure consistent and accurate data across these systems, especially regarding inventory levels, real-time data synchronization is essential. Solution: In this integration scenario, the goal is to synchronize inventory levels between Microsoft Dynamics 365 CRM and Finance and Operations (F&O) systems to ensure real-time accuracy. The process starts with Dynamics 365 CRM, where changes in inventory, such as sales or restocking, trigger an event. This event generates a message containing the updated inventory details, which is then sent via Azure Service Bus. Azure Service Bus serves as a reliable messaging service that decouples the CRM and F&O systems, facilitating smooth communication between them. Once the message reaches Azure Service Bus, it is picked up by an Azure Logic App. The Logic App orchestrates the integration process, potentially using Azure Functions for tasks such as data transformation, validation, or enrichment. For instance, it may convert the message into a format compatible with the F&O system, such as OData, a standard protocol for data exchange. After processing, the transformed data is sent to the F&O system, where the inventory levels are updated accordingly. This setup ensures that inventory records are synchronized in real time across both systems, preventing issues like overselling by maintaining up-to-date stock levels. The use of Azure Service Bus and Logic Apps not only supports real-time communication but also offers a scalable and flexible integration solution that can adapt to evolving business needs. Key benefits of this approach include real-time updates, fault tolerance through message persistence and retry logic, and the flexibility to scale and integrate systems without tight coupling. Azure Service Bus Queues and Topics and Subscriptions Azure Service Bus offers Queues and Topics and Subscriptions as core features, enabling different messaging patterns to suit various use cases. Queues facilitate point-to-point communication, while Topics and Subscriptions support a publish-subscribe model. This flexibility allows for efficient data transfer and processing across applications. Stay tuned for my next post, where we’ll explore the specific scenarios in which to use queues versus topics and subscriptions. Conclusion Azure Service Bus provides a versatile and reliable messaging solution for building scalable, decoupled distributed applications. By integrating seamlessly with the broader Azure ecosystem, Service Bus empowers developers to create efficient communication channels, enhancing the performance and reliability of their applications. Whether you’re modernizing existing systems or developing new cloud-native applications, Azure Service Bus is an essential tool for delivering an excellent user experience. 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 :
Automating Access Token and Refresh Token Generation Using ADF and Azure Key Vault – Part 1
Introduction In this blog, I will explain how we can automate generating access tokens or refresh tokens. When working with APIs, a common problem is the expiration of the access token or refresh token after some time. We solved this issue by using Azure Data Factory and Azure Key Vault. Azure Key Vault is used for storing API credentials as it is one of the most secure ways to store keys/secrets in Azure. Azure Data Factory is used to automate the process of generating access tokens for APIs. We are dividing this blog into two parts: Before we proceed with the blog, please test your API in Postman to know the API requirements for generating access tokens. For me, it is client ID, client secret, and Refresh Token. Steps to Set Up Azure Key Vault and Azure Data Factory: – Go to the Azure portal and create a Key Vault resource. Please make sure that your Key Vault and Azure Data Factory are in the same region. – Create a secret by generate/import and entering the required details. I have already created the secrets I need. – For the access token, you can keep the initial value as anything you want; we will update it later using an ADF Pipeline. – Set up an access policy for the Azure Data Factory to access our Key Vault. To do this, go to “Access Policy” and select the appropriate options. – Click “Next” and select your Azure Data Factory, where you will be creating a pipeline for refreshing the access token. – Now, go to Azure Data Factory Studio and set up the linked Service for your API in the Azure data factory. – The dataset is also pretty straightforward, and I prefer to use a parameter for the relative URL so that I can reuse the same dataset and just set the URL of the API I want to call during runtime: Conclusion That’s all for the setup in part 1. We’ve covered the essential steps to set up Azure Key Vault and Azure Data Factory for securely managing API credentials and setting the groundwork for automating access token generation. These tools provide a reliable and secure way to handle token expiration, ensuring smooth API operations without manual intervention. In part 2, we will discuss in detail how we can automate access token generation using Azure Data Factory. 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 :
Automating Opportunity Timeline Updates for Owners and Sales Teams in Dynamics 365 using power automate
What is Opportunity in D365 CRM? The opportunity table represents a potential sale to new or established customers. It helps you to forecast future business demands and sales revenues. You can create a new opportunity in Dynamics 365 for Customer Engagement to monitor an inquiry from your existing customer or convert a qualified lead into an opportunity. Opportunities are frequently used by salespeople to monitor the sales engagements they are presently working on. For More details, please follow the linkhttps://learn.microsoft.com/en-us/dynamics365/sales/developer/opportunity-entities What are Notes in Timeline Section of D365 CRM? The timeline makes the entire history of activities visible to app users. The timeline control is used to capture activities like notes, appointments, emails, phone calls, and tasks to ensure that all interactions with the related table are tracked and visible over time. Use the timeline to quickly catch up on all the latest activity details. For More details, please follow the link https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/set-up-timeline-control Use Case: Using Power Automate, whenever the notes in the Opportunity’s Timeline are updated, an automated email will be sent to the Opportunity Owner and associated Sales Team in the timeline of that Opportunity. Steps: – Login to make.powerautomate.com with your CRM credentials and you will land onto this page. – Once you have landed into Power Automate Page, click on Create and selected Automated Cloud Flow – Set your Trigger as the below since the flow should start working only when the Notes are added in the timeline of the Opportunity. – I have also set a certain condition to this flow. In other words, it checks whether there is a non-empty value in _objectid_value and that this value’s type is ‘opportunities’. The expression returns true if both requirements are satisfied and returns false otherwise. – The Expression is @and(not(empty(triggerOutputs()?[‘body/_objectid_value’])), equals(triggerOutputs()?[‘body/_objectid_type’], ‘opportunities’)) – Then Initializing variable for Email Addresses – Initializing variable for Notes Table – Retrieving the Owner’s Email Address. This step is necessary to obtain the Opportunity Owner’s email address so that we can send the initial notification email to them. – List All Notes in the Opportunity. We use the List rows action to retrieve multiple Note records associated with the Opportunity. This allows us to access all the notes within the Opportunity’s timeline. – Get opportunity by ID. Here we are fetching the complete details of to access all the fields and data associated with the specific record. We are filtering out based on name and opportunity id. The row ID is typically obtained from another step in your flow, such as a “List rows” action or a trigger that provides record details. My record details where I need fetch details is from Opportunity. – After retrieving the record, we need to fetch details of the associated Sales Team. This ensures that whenever a record is linked to the Sales Team, all members of the Sales Team receive an email notification. Thus, we are connecting the Sales Team to the Opportunity to include them in the notification process. The Fetch XML needs to be taken from Advanced Find in CRM. – In this step, we need to store the email address of the sender (i.e., the “From” user). We initialized this variable in step 3, so here we will save the GUID of the sender into that variable. – In this step, we need to save the email address of the recipient (i.e., the “To” user). We initialized this variable in step 3, so here we will store the GUID of the recipient into that variable. a participationtype mask of 2 indicates a specific participant role or type, i.e., sales team members associated with this Opportunity. – Next, we need to ensure that the content is structured within a table. As specified in step 6, I created a variable called `NotesTable` to hold this data. We will use this table to format the content into an HTML table for the email. – In this step, we are configuring the URL link for the Opportunity. Include the base URL of the environment and append the unique identifiers for both the Opportunity and the Topic field (which is a field within the Opportunity). – Sending an Outlook Email to the Opportunity Owner and Sales Team associated with the Opportunity. This Outlook mail works only if ‘Email Addresses Sales Team is Skipped’. – In Power Automate, adding a new row typically involves using actions provided by connectors such as Dataverse, SQL Server, SharePoint, or others, depending on where your data is stored. Here we have created an email body in this action. – In this step, we are using a bound action to send emails within the CRM system. Output: – Once, I click on Add Note, waiting 5-10 seconds and then you find the email within the timeline. Please note that the Email is tracked within CRM itself. – Below is the Opportunity which contains the Opportunity Owner, and the Sales team associated with that Opportunity. The Owner is CF Admin, and the Sales Team Members are Amit Prajapati, Ethan Rebello and Mithun Varghese. – The Opportunity Owner and Sales Team will receive notifications about the Notes in the timeline. All email interactions will be tracked in the Opportunity’s timeline, where you can also view all previous notes associated with this timeline. Conclusion: Automating bulk case resolution using Power Automate in Dynamics 365 CRM offers an efficient way to streamline your workflows and reduce manual errors. By setting up automated email notifications for updates in the Opportunity’s timeline, your sales team and opportunity owners stay informed, ensuring smoother communication and faster response times. 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 :
Understanding Additional Reporting Currency in Microsoft Dynamics 365 Business Central
Introduction The Additional Reporting Currency feature in Business Central allows a company to maintain its financial records in a secondary currency, in addition to the primary currency. This secondary currency is used for reporting and analytical purposes, providing a clearer picture of the company’s financial health in the context of different economic environments. The use of Additional Reporting Currency for Regulatory Compliance, Simplified Financial Reporting, Enhanced Decision Making. Steps to achieve the goal: 1. Defining the Additional Reporting Currency Navigate to the “General Ledger Setup” page and specify the additional reporting currency. This can be any currency other than the primary currency of your company’s base country/region. Here I am going to set SGD as my Additional Reporting currency. Before I set SGD in my Additional Reporting currency, I have to make sure I am assigning the exchange rates properly. 2. Specifying Exchange Rates Define the exchange rates between the primary currency and the additional reporting currency. This can be done through the “Currency Exchange Rates” page. It is crucial to regularly update these rates to reflect current market conditions. 3. Specify the residual gain and loss account in your Currency The field is ideally not visible in screen. You can personalize and make those fields visible on your screen. Click on Settings icon-> Personalize->Field->Select the field and drag the field in your screen. Set the GL account to update its additional Currency value for future transactions. Globally search Chart of Accounts and Open the G/L Account that you wished to update its Additional currency value whenever you Adjust the transactions. No Adjustment: The default selection. No adjustments are made to the account Adjust Amount: Any gain or loss in exchange rates is reflected in the LCY amount field. Adjust Additional-Currency Amount: Any gains or losses in exchange rates are taken into account when adjusting the additional currency amount field. Please Note: You cannot set VAT Purchase or Vat Sales Account and G/L Accounts which you have tagged in Currency page (Realized gain and loss, Unrealized gain and loss, residual gain and loss) as for Additional reporting currency. As it can throw error when you perform Revaluation in the system. 4. Final Setup Go to general ledger setup and set the Additional Reporting currency SGD and set Retained Earnings Account, Set Document not as per the screenshot below and click on OK. This is batch job used to convert LCY transactions to Additional Currency. The exchange rate that is in effect on the work date is used in the job.The entry that is posted to the retained earnings account should be indicated in the Document No. field. On the last day of every closed year, this rounding entry is made to ensure that all income and expense accounts have a zero balance.The same account used when running the Close Income Statement batch job. You would view the below message once the transaction is calculated in the system. Click on OK. You can change the Additional Reporting currency again in future once it is set. Please note any Analysis created for previous Additional Currency that you must delete. Before and After setting up this configuration – Before the Additional Currency Setup The Chart of Accounts Additional Currency Net change and Additional Currency Balance to Date is blank no values. – After the Additional Currency Setup The Chart of Accounts Additional Currency Net change and balance to date value has been set. Please Note: Warning Issued by Microsoft on Additional reporting Currency Conclusion The Additional Reporting Currency feature in Microsoft Dynamics 365 Business Central offers a robust solution for maintaining financial transparency and compliance. By setting up and leveraging this functionality, businesses can streamline their financial reporting processes, enhance decision-making, and ultimately achieve greater financial clarity and control. Whether you are a small business expanding into new markets or a large enterprise with operations in multiple countries, the Additional Reporting Currency feature in Business Central can provide the tools you need to succeed in a complex financial landscape. 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 :
How to bulk resolve cases using Power Automate?
Introduction When dealing with a large volume of cases, manually handling each one can be time-consuming and error prone. Thankfully, Microsoft Power Automate provides a powerful solution for automating bulk case resolution, streamlining your workflow, and saving valuable time. Why Automate Bulk Case Resolution? Bulk case resolution involves addressing multiple cases at once, which can be necessary for various reasons, such as resolving customer complaints, updating status, or closing resolved cases. Automating this process can: Getting Started with Power Automate Flows Log in to Power Automate and sign in with your credentials. Start a new flow. Click on ‘Create’ from the left-hand menu and select ‘Automated flow’ for a trigger-based flow or ‘Instant flow’ for a manual trigger. Click on ‘Create’ from the left-hand menu and select “Automated flow” for a trigger-based flow or ‘Instant flow’ for a manual trigger. Add an appropriate Flow Name and also, select the Trigger. Once the trigger has been added to the flow, click on ‘+ New Step’ to add an action to process the cases. We have an Excel sheet that contains the records of the cases to be resolved. So, we add an action of ‘List rows present in a table’. Add a step ‘Apply to Each’ where it iterates through list of cases in the Excel sheet and retrieves the case using ‘Get a row by ID’ Finally, add another step ‘Add a new row’ a record of Case Resolution and pass the Case GUID which resolves the case. Conclusion Automating bulk case resolution with Microsoft Power Automate can significantly improve your team’s efficiency, reduce manual errors, and free up valuable time for more strategic tasks. By setting up flows to handle multiple cases at once, you can streamline your workflow and ensure that cases are resolved quickly and accurately. 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 :
How to Adjust Exchange Rates in Microsoft Business Central: New Preview Posting Feature Explained
Introduction For companies operating in diverse countries or regions, managing business transactions and financial reporting in multiple currencies is essential. Due to frequent fluctuations in exchange rates, it’s necessary to update these rates regularly in Business Central. Microsoft recently released a new feature you can now see how an exchange rate adjustment will affect your records before finalizing it. Just use the “Preview Posting” option on the Exch. Rates Adjustment report (Report 596). You can choose to see either detailed or summarized results and decide how dimensions are managed for gains and losses. Steps to achieve the goal: – Enable the New Feature: – Access Exchange Rate Adjustment: – Choose Dimension Settings: – Preview Posting View: Note: Due to local regulations, it’s not recommended to enable the “Enable use of new extensible exchange rate adjustment, including posting review” feature in the Swiss (CH) version. Conclusion The steps outlined in this blog, you can effectively utilize this feature to maintain accurate records and enhance your organization’s financial management capabilities. Whether you’re adjusting for a specific period or managing multiple dimensions, this feature streamlines the process and helps you stay compliant with local regulations. Implement these practices to ensure your business remains responsive to currency fluctuations. 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 :
Displaying Associated Records on the Main Grid Form Using Power Apps Grid Control
Introduction Microsoft Power Apps is a pivotal tool for creating custom apps tailored to specific business needs. A powerful feature of Power Apps is the ability to display associated records on the main grid form using Grid Control. This functionality provides users with a comprehensive view of related data, enhancing user experience and productivity. In this blog, we’ll explore how to effectively display associated records on the main grid form using Power Apps Grid Control. Steps to Display Associated Records Open your Power Apps Studio. From the Power Apps homepage, go to the Tables section. Select your desired table. In this case, it is the ‘Task’ entity. Go to the View Section on the ‘Task’ Entity. Select the desired view such as ‘All Tasks’ Click on ‘Components’ from the Navigation Bar Click on ‘+ Add a component’ followed by ‘Get more components’. This will open a library of available components that you can add to your table. Choose ‘Power Apps grid control’ and click ‘Add’ below. This control allows you to customize how data is displayed within the grid, including the ability to show related records. It will be present in the control list like this. Select it. In the Power Apps grid control settings, select the related entity for which you want to display the associated records. For example, if you want to display users assigned to tasks, choose ‘Assigned Users’. Click ‘Done’ After configuring the grid control, save your changes to the app. Make sure to test the configuration to verify that the associated records are displayed as expected. Once everything looks good, publish the app to make the changes live for all the users.Voila, you see the Assigned Users’ Associated Records on the View. Conclusion By effectively utilizing Microsoft Power Apps Grid Control, you can significantly enhance the user experience by providing a comprehensive view of associated records directly on the main grid form. This step-by-step guide equips you with the knowledge to configure and display related data, streamlining your app’s functionality and improving productivity. 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 :
Setup supplementary item/items on purchase order
Introduction In today’s competitive market it is very much important to have edge over other competitors for sustainable business & growth. There are various ways to gain market share like affordable rates, specialized items, etc. One of the ways to offer some essential supplementary items that are required for the optimal use and functionality of the primary products. Hence, many suppliers are offering various supplementary items either free or at with minimum price. Or offering certain quantity of same item on purchase of bulk quantity. i.e. Luggage bag with luggage bag cover as supplementary item or Buy 4 soaps & get 1 free. Problem Statement In this scenario we need to define supplementary item & conditions to add same on purchase order. i.e. Which supplementary item or items to for which vendor for what quantity of main item, at what rate & for what time period. Solution steps Follow below steps to create & add supplementary item/items on purchase order. Create main item. Create supplementary item – Then go to main item -> Purchase Tab -> Supplementary purchase items New window will open -> Click on new Then add supplementary item details based on different scenarios. Scenario 1 – When will buy 1 “Luggage bag” from Vendor 1002 will get 1 “Luggage cover” free. Define supplementary item accordingly. Add Vendor details – Select “Account code” as Table if only specific vendor is going to provide supplementary item. & Select “Account code” as All if all vendor will provide supplementary item. Quantity limit – Select quantity of main item. i.e. Luggage bag Supplementary item – Select code of Supplementary item. i.e. Luggage bag cover Supplementary quantity – Select quantity of supplementary item Multiple quantity – Select what will be incremental quantity. i.e. in this case it is 1, means if we buy 1 bag then will get 1 cover free, if we buy 2 bags then will get 2 covers free. Date range – If supplementary item will get only for specific period, then define from date & to date. Free of charge – If this toggle is Yes then supplementary item will be added to purchase order without price. If it is No, then supplementary item will be added with price. & save. Now create purchase order for vendor 1002 & add item luggage bag – go to Procurement & sourcing -> All purchase orders Now to add supplementary item click on Purchase order line -> Supplementary items New window will open. Click Ok. Then Supplementary item will be added to the purchase order. Follow regular procedure to further process the purchase order. Scenario 2 – When will buy 5 “Luggage bags” from Vendor 1001 will get 1 “Luggage bag” free. Define supplementary item accordingly. Add Vendor details – Select “Account code” as Table if only specific vendor is going to provide supplementary item. & Select “Account code” as All if all vendors will provide supplementary item. Quantity limit – Select quantity of main item. i.e. Luggage bag Supplementary item – Select code of Supplementary item. i.e. Luggage bag Supplementary quantity – Select quantity of supplementary item. Multiple quantity – Select what will be incremental quantity. i.e. in this case it is 5, means if we buy 5 bags then will get 1 bag free, if we buy 10 bags then will get 2 bags free. Date range – If supplementary item will get only for specific period, then define from date & to date. Free of charge – If this toggle is Yes then supplementary item will be added to purchase order without price. If it is No, then supplementary item will be added with price. & save. Create PO & add Luggage bag 10 quantity. Now to add supplementary item click on Purchase order line -> Supplementary items For 10 quantity of Luggage bags 2 bags will be added as supplementary. As we have set up of on buy of 5 bags 1 bag free. Follow regular procedure to further process the purchase order. Conclusion In above mentioned way, we can setup different supplementary item/items to be used on purchase orders. 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
