Blog Archives - Page 64 of 174 - - Page 64

Category Archives: Blog

Entering Multiple Opportunity Products at once in Dynamics 365 Sales

Very easy tweak but this will save loads of your time. One of the most important asks by Salespeople is perhaps this – “Add multiple Products on Opportunity at once!“ Here’s how you can do this – Classic Experience In current/classic experience, if you open Opportunity Lines and go on to add a Product as below – It’ll either open in a New form.This isn’t intuitive. You definitely need better experience. Enhanced Experience In System Settings, under Sales, you’ll need to enable the Adding Products to Yes. This will enable the enhanced experience. Now, when you click on Add Products in the Opportunity’s Product Line Items tab, you’ll see a Quick Create Form like form on which you can Add Multiple Products in one go. And then go to + Add products Now, a Quick Create form will appear on which you can select multiple products Now, when you click on any + sign in blue, you can directly enter what quantity you want to add. Also, if you go to the Selected section which indicated how many unique products you’ve added, you’ll be able to remove the added Products in case you don’t want them and then Delete the same if needed. Now, let’s say I have this finally and when I click on Add to Opportunity, they get added as Opportunity Lines And they appear as belowHope this helps!!

Share Story :

Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM

At times, ever wondered what happened to the Mailbox? You ran some tests, you also got results, but the Alerts section is empty or not generating Alerts. Here’s what’s missing and how the behavior is – Turn on Mailbox Alerts In System Settings, you can turn on what type of Mailbox alerts should be shown. Navigate to Email and scroll down. You can then choose what type of info should be generated in Alerts area in a Mailbox. Error, Warning or Information. Behavior Now, the behavior is a little confusing. Here’s what it is – Any previously generated errors will show if the setting was On initially and was later on turned off down the line.In my example, the last error was generated on 1st July 2020 Now, I turned the setting Off And post that, if there are any new errors/messages, they won’t show up But, after I turn the settings back on New errors after that will start showing up again. Meaning, the duration in which the Alerts are off, those will not be generated. And the duration in which the Alerts are On, they will keep populating the Alerts section. Hope this was useful.

Share Story :

Sales return order line registration in D365FO and AX 2012

Introduction: Sales return order line registration in X++ Details:  Consider SalesReturnOrderRegisterLine is the table where records are with SalesLine referenced. If we are required to register serialized items than salesReturnOrderRegisterLine.inventSerialId will be considered and if item referred with batch then salesReturnOrderRegisterLine.inventBatchId will be considered. public static void inventoryRegistration(SalesId _salesId) { SalesReturnOrderRegisterLine salesReturnOrderRegisterLine; SalesLine salesLine; TmpInventTransWMS tmpInventTransWMS; InventTransWMS_Register inventTransWMS_Register; InventDim inventDim; InventTrans inventTrans; VendPackingSlipTrans vendPackingSlipTransLoc; InventTransOrigin inventTransOrigin; while select salesReturnOrderRegisterLine where salesReturnOrderRegisterLine.SalesId == _salesId { salesLine = SalesReturnOrderRegister::updateDispositionCode(salesReturnOrderRegisterLine.InventTransId); inventTransWMS_Register = InventTransWMS_Register::newStandard(tmpInventTransWMS); select firstonly inventTrans where inventTrans.StatusReceipt == StatusReceipt::Ordered exists join inventTransOrigin where inventTransOrigin.RecId == inventTrans.InventTransOrigin && inventTransOrigin.InventTransId == salesLine.InventTransId && inventTransOrigin.ReferenceId == _salesId; tmpInventTransWMS.clear(); tmpInventTransWMS.initFromInventTrans(inventTrans); tmpInventTransWMS.InventQty = salesReturnOrderRegisterLine.SalesQty; tmpInventTransWMS.LineNum = int642int(salesLine.LineNum); inventDim = salesLine.inventDim(); inventDim.inventSerialId = salesReturnOrderRegisterLine.inventSerialId; inventDim.inventBatchId = salesReturnOrderRegisterLine.inventBatchId; tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId; tmpInventTransWMS.ItemId = salesLine.ItemId; inventTransWMS_Register.writeTmpInventTransWMS(tmpInventTransWMS, inventTrans, InventDim::find(tmpInventTransWMS.InventDimId)); if (!inventTransWMS_Register.updateInvent(salesLine)) { throw error(“Error during sales return order registration”); } } } Consider SalesReturnOrderRegister is the class which has below static methods public static SalesLine updateDispositionCode(InventTransId _inventTransId) { SalesLine salesLine = SalesLine::findInventTransId(_inventTransId, true); ReturnDispositionCode returnDispositionCode; SalesReturnOrderRegister::runPreReturnOrderRegisterLine(salesLine); salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId; salesLine.update(); return salesLine; } public static void runPreReturnOrderRegisterLine(SalesLine _salesLine) { InventTransOriginId salesLineInventTransOriginId; InventTransOriginId reservationLineInventTransOriginId; SalesLine reservationLine; ReturnDispositionCode returnDispositionCode; if (_salesLine.ReturnStatus == ReturnStatusLine::Awaiting) { if (!_salesLine.ReturnAllowReservation && _salesLine.isStocked()) { SalesLine::changeReturnOrderType(_salesLine.InventTransId); _salesLine = SalesLine::findInventTransId(_salesLine.InventTransId, true); } select firstOnly returnDispositionCode where returnDispositionCode.DispositionAction == DispositionAction::Credit; _salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId; _salesLine.update(); } else if (_salesLine.ReturnStatus == ReturnStatusLine::Registered) { select forupdate firstonly reservationLine where reservationLine.InventRefTransId == _salesLine.InventTransId; if (reservationLine || _salesLine.qtyMarked()) { if ((_salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReplaceScrap || _salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReturnToCust || _salesLine.returnDispositionCode().DispositionAction == DispositionAction::Scrap)) { if (reservationLine.SalesQty == reservationLine.RemainSalesPhysical) { reservationLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(reservationLine.DataAreaId, reservationLine.InventTransId); salesLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(_salesLine.DataAreaId, _salesLine.InventTransId); InventTransOrigin::deleteMarking(salesLineInventTransOriginId, reservationLineInventTransOriginId, -_salesLine.QtyOrdered); reservationLine.delete(); } } else { throw error(“@SYS332911”); } } } } Thanks for reading and stay connected with us for more updates!!! Jagdish Solanki | Senior Technical Consultant | CloudFronts Business Empowering Solutions Team “Solving Complex Business Challenges with Microsoft Dynamics 365 & Power Platform”

Share Story :

Factbox of workflow history on purchase order in D365FO

Introduction: In this blog, we will see how to create factbox of workflow history of purchase order in Microsoft Dynamics 365 Finance and Operations Details:  Well, Factbox is a very pretty cool feature available from the earlier version AX 2012. It is very easy to achieve in Dynamics 365 as well.  Here we will see how easy it is and steps for that.    As shown in the above image, we will be going to create factbox for the “Tracking details list” Steps:  Create the solution in Visual Studio and project for that. We’ll be required four objects mainly that is one display MenuItem, Table, Form (on which to display factbox), another Form (factbox). Reference attached below: 1. Table For displaying workflow history, we need to create the extension of table WorkflowTrackingStatusTable and create the normal relation and its relevant properties as 2. Factbox Now we are required to create the factbox of workflow history. For that we will use the effortless technique, where we will duplicate the standard form “WorkflowStatus” and will name as CFSPurchTableWorkflowHistoryFactBox (give name as per your naming convention standards) After duplicating and renaming the form, we need to change the pattern as “custom” After applying the custom pattern, delete the NavigationList which is not required in factbox, and do visible false ActionPane and PanelTab After that create the new Grid and assign the data source to it in the property and put all the required fields to show in factbox 3. Display MenuItem We will attach the created factbox form to the display menu item and relevant label “Workflow history” 4. Base form Base form we call it as where we will attach the factbox. Here it is purchase form. Go to Parm section and create a new part and give it a relevant name and its properties Properties:  Data source: Attached data source with which workflow history is connected Data Source Relation: WorkflowTable.RelationName Name: Part name That’s it. Build the project and go the frontend and check the output how it looks like. Conclusion: It results as (we can scroll left and right to see all the tracking details list) Hurray, How pretty it looks like! In the above example, we have seen how we can develop factbox in Microsoft Dynamics 365 Finance and Operations.   Thanks for reading and stay connected with us for more updates!!! Jagdish Solanki | Senior Technical Consultant | CloudFronts Business Empowering Solutions Team “Solving Complex Business Challenges with Microsoft Dynamics 365 & Power Platform”

Share Story :

Get/Read Selected Record Information From Main View Or A Sub-Grid using Ribbon Workbench In D365 CRM

There is a common application of getting selected records information while working with custom buttons using Ribbon Workbench. Use Case: We had a requirement, where we needed the information of the all selected records from the Main View and Sub-Grid of an entity. We can achieve in Ribbon Workbench. Steps: 1. The button on which we are customizing is named as “Submit”. 2. In the Command section, click on “Actions” -> “Javascript Action” to add Custom Javascript. Then click on “Add Parameter” -> Click on “Crm Parameter” -> then on  SelectedControlSelecteItemReferences. SelectedControlSelecteItemReferences = grabs the information of all selected record from the view. 3. SelectedControlSelecteItemReferences will pass the information of all the selected records in my “selectedItems” variable passed to the method. 4. On clicking the Submit Button, the selected records information will be passed on to the Javascript Code. 5. On clicking the “Submit” button, it will pass the two selected records information to the method that the button is calling. 6. You can further read all the information from the Array and perform the actions that you want. Note: This can be done in Sub-grids of the forms also. Conclusion: Hope this blog helps to get/read the selected Information from the Main View or Sub-Grid

Share Story :

Message API – Message::AddAction() in D365FO Version 10.0.10 PU34 | New Feature

Introduction: From the version 10.0.10 Platform update 34, Microsoft has added a new feature Message::AddAction() which is shown in the message bar.  Details: Message API associated with display or action menu items, which is visualized as a hyperlink/link button.  It is linked with a single record at a time, called single action. In below taken example, we will show sales order is navigated to the form SalesTable from the message bar. For testing it, we’ll create the runnable class also know as job in AX 2012.  class CFSMessageAPI { public static void main(Args _args) { SalesTable salesTable = SalesTable::find(‘SH-000121′); MenuItemMessageAction actionData = new MenuItemMessageAction(); actionData.MenuItemName(menuItemDisplayStr(SalesTable)); actionData.TableName(tableStr(SalesTable)); actionData.RecId(salesTable.RecId); str jsonData = FormJsonSerializer::serializeClass(actionData); int64 messageId = Message::AddAction(MessageSeverity::Informational, “Sales order details”, salesTable.customerName(), MessageActionType::DisplayMenuItem, jsonData); } } Let’s see how it works,  In my case it’s showing Mitchell. Click on the link.  After clicking on the action link, it is navigated to the sales order record form as shown in the above link.  Hurray, How pretty feature is released !!! Conclusion: In above example, we have seen how Message API is routed to the record. Thanks for reading !!!

Share Story :

How to export projects layerwise in Microsoft Dynamics AX 2012

 Introduction:  How to export projects layerwise (usr, cus, var, etc.) in Microsoft Dynamics AX 2012?  Details:  Here, we will see how we can export the projects from AX 2012. Now It’s very easy to do so.  We need to create a class or job in the respective environment and just need to do run.  static void exportProjects(Args _args) { #AotExport TreeNodeIterator tni; ProjectNode projectNode; int exportFlag; Dialog dialog = new Dialog(); DialogField folderName; DialogField projectDefinitionOnly; DialogField exportFromLayer; DialogField projectType; UtilEntryLevel layer; SysExcelApplication application; SysExcelWorkbooks workbooks; SysExcelWorkbook workbook; SysExcelWorksheets worksheets; SysExcelWorksheet worksheet; SysExcelCells cells; SysExcelCell cell; SysExcelFont font; int row; CustTable custTable; str fileName; fileName = “D:\\Backup XPOs.xlsx”; //By specifying the directly, we will get the list of exported projects //Excel Part…………………………………………………………………… dialog.addText(“This will export all projects (shared or private) that exist in a selected model.”); projectType = dialog.addFieldValue(enumStr(ProjectSharedPrivate), ProjectSharedPrivate::ProjShared); projectDefinitionOnly = dialog.addField(extendedTypeStr(NoYesId), ‘Project Definition Only’); folderName = dialog.addField(extendedTypeStr(FilePath)); exportFromLayer = dialog.addField(enumStr(UtilEntryLevel), ‘Projects from layer’); dialog.run(); if (dialog.closedOk()) { if (!folderName.value()) throw error(“Missing folder”); exportFlag = #export; if (projectDefinitionOnly.value()) exportFlag += #expProjectOnly; layer = exportFromLayer.value(); switch (projectType.value()) { case ProjectSharedPrivate::ProjPrivate: tni = SysTreeNode::getPrivateProject().AOTiterator(); break; case ProjectSharedPrivate::ProjShared: tni = SysTreeNode::getSharedProject().AOTiterator(); break; } projectNode = tni.next() as ProjectNode; while (projectNode) { if (projectNode.AOTLayer() == layer && projectNode.name() like “CFS*”) //if [like] specifies, system will export the projects which names starts with CFS { projectNode.treeNodeExport(folderName.value() + ‘\\’ + projectNode.name() + ‘.xpo’, exportFlag); row++; } projectNode = tni.next() as ProjectNode; } info(“Projects Exported Successfully & Exported Projects List to Excel Sheet”); } else warning(“No action taken…”); } After running the class it will prompt as below. After that select the directory where to export all projects and select the layer from which layer all projects should be exported.  Thanks for reading!!!

Share Story :

Import, Export and Uninstall the model from Microsoft Dynamics AX 2012

Introduction:  In this blog, we will see how we can import, export and uninstall the model from Microsoft Dynamics AX 2012  Details:  Prerequisite for import, export and uninstall the model from the environment, run the command prompt as in administrator mode. Form Importing the model script:  Install-AXModel -File “Path_Of_the_Model_File” -server ServerName -database DatabaseName_Model –Details Exmaple: Install-AXModel -File “D:\Model\VARModel.axmodel” -server CFSEnvVM -database DAX2012R3CFSEnv_Model –Details Form Exporting the model script:  Export-AXModel -Model ‘Model’ -File ‘Path’ -server ‘ServerName\DBName’ -database ‘DatabaseName_Model’ Exmaple: Export-AXModel -Model ‘CUS Model’ -File ‘C:\ModelFile\CUSModel.axmodel’ -server ‘TESTSERVER\CFSDAXSQL2014’ -database ‘DAX2012R3Blank_model’ Form Uninstalling the model script:  Uninstall-AXModel -Model ‘Model’ -server ‘ServerName’ -database ‘DatabseName_Model’ Exmaple: Uninstall-AXModel -Model ‘VAR Model’ -server ‘CFSEnvVM’ -database ‘DAX2012R3Test_model’ Thanks for reading !!!

Share Story :

What is Kernel Hotfix and Application Hotfix in Microsoft Dynamics AX 2012?

Introduction:  In this blog, we will see what includes in Kernel Hotfix and Application Hotfix in Microsoft Dynamics AX 2012.  Details:  1. Kernel Hotfix:  ·    This hotfix updates Microsoft dlls. E.g. update are the executable files (ax32.exe, ax32serv.exe) and assemblies (Microsoft.Dynamics.AX.*.dll) ·    There are no code-level changes. ·    This hotfix required to install at all the client PCs & Servers, where any of the components of AX is installed. ·    A kernel fix is always cumulative. 2. Application Hotfix:          ·   This type of hotfixes affects code development done by partners. ·    Updates in the SYP, GLP, FPP & SLP layers (the layers reserved for Microsoft code). These changes are made in the AX model store in AX 2012 and later versions ·    An application fix is NOT cumulative.

Share Story :

Email Parameters | SMTP Configurations for sending Test Mail from D365FO

Introduction: In this blog, we will see how to set up email parameters and SMTP configuration for sending test mail from Microsoft Dynamics 365 Finance and Operations. Details:  Go to the Email Parameters by follow this path: System administration -> Setup -> Email -> Email Parameter. Another easiest way to find the email parameter in a quick manner, go to the search box and simply write email parameter as below shown screenshot Steps:  1. In the configuration tab, set up the SMTP as in shown below image Move SMTP in the right box named with ENABLED to enable  2. In SMTP settings tab, configure the below stuff:      Outgoing mail server: smtp.office365.com     SMTP port number: 587     Username: put the email id from which email should be sent      Password: appropriate password of the email     Specify if SSL is required: true 3. In Test mail tab:      Email provider: SMTP     Send to: Put the email to whom test mail should be sent  In the final, click on the “Send test mail” and then sample mail will be sent to the respective email address.      Conclusion: In the above blog, we have seen how to set up SMTP configuration to test “send email” functionality from the email parameter form.  Thanks for reading !!!

Share Story :

SEARCH BLOGS:

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange