Search This Blog

May 23, 2017

How to enable ARM for D365 deployment

Hi Folks,

Many of us trying to deploy the new D365 environment using LCS and Azure, but due to ARM configuration we face below issue, 

Issue: Lifecycle Services can't connect to the Azure subscription using Azure Resource Manager. Click the Microsoft Azure Settings button and edit the selected Connector to provide the required permissions to ERP applications in your Azure subscription. If the issue persists, please contact support with this Id: da1c591d-7360-413c-b370-b51ec1ddef2b

Here are some good links on how we can fix this issue once for all, 


Hope this will help.
Thanks
Harry


May 19, 2017

Breakpoint not hit in Visual studio [Dynamics 365]

Hi Folks,





Situation: While put a breakpoint and try to hit debug on any object which is not a part of your solution/project; Breakpoint will not hit. You will get below message.

“The breakpoint will not currently be hit. No symbols have been loaded for this document.”

clip_image001[8]

Possible reason: This is because of one of Debugger property that will not load any symbols for other than Solution/Project objects.
 
Solution: To enable such debugging, you have to set the debugger property,
Uncheck this option Load symbols only for items in the solution as shown below snaps,

Step 1: Go to Dynamics 365 menu in Visual studio and select option

clip_image002[7]

  
Step 2: Choose Debugging option from list and uncheck the Load symbols only for items in the solution

clip_image003

Now try to run again, this time breakpoint should hit as expected.

Enjoy…!!!

Harry 

May 13, 2017

Send Message to all Online users [Dynamics 365 FO]

Hi Guys,

In D365 where we manage most of the things using LCS, if there is any Planned/Unplanned activity need to perform on server and down time require.
In such case, you need to send a message to all online used for that particular environment. To do that simply follow below steps,

Step 1: Login into your LCS account. 

Step 2: Under Environment section > select your environment. > Click on maintain option > Select Message online users.

clip_image001[4]

Step 3: Here you will have two options
i.                    Broadcast a new message for downtime: Post a new message
ii.                 Cancel message: To cancel any previous posted message.

clip_image003[4]

Step 4: Select Broadcast a new message for downtime, you have to provide message start date time and when this operation will begin OR massage valid to date time. click on Post button and click when asking for confirmation.

clip_image004[4]

Step 5: When a user will login into environment he/she must get this message
clip_image005[4]

Step 6: Now if in case you have to postpone or cancel this activity, choose second option i.e. Cancel message, system will ask which message you want to cancel as there can be multiple messages.
clip_image006[4]

Let’s try to cancel first message that we created in last step. In the right corner, you will found a delete icon, click on that icon and hit yes when ask for confirmation. You will see now only two messages are active here

clip_image007[4]

Now when user will login in next time he/she will not any notification from system.

Enjoy…
-Harry.

May 06, 2017

Merger two LedgerDimension in Dynamics 365

Hi Folks,

In my previous post I shared  information about new classed that introduced in D365 for Dimension actions. In this post, I am sharing a sample code to merge two different ledger dimension and get a new LedgerDimension id.
This is rough code, please feel free to copy and update it according to your requirement.

public static void main(Args _args)
   {    
       LedgerJournalTrans  ledgerJournalTrans1, ledgerJournalTrans2 ;
       RefRecId            dim1, dim2, mergerDim;
      
  
       select firstonly TrvExpTrans where TrvExpTrans.ExpNumber == "USMF-000565";
       select firstonly AccountingDistribution where AccountingDistribution.SourceDocumentLine == SourceDocumentLine::find(TrvExpTrans.SourceDocumentLine).RecId;
       //AccountingDistribution::
       dim1 = TrvCostType::find("mycategory").LedgerDimension; //First dimension
       dim2 = 5637236123;//AccountingDistribution.LedgerDimension; //Second dimension
       mergerDim = LedgerDimensionFacade::serviceMergeLedgerDimensions(dim1, dim2);
     
      info(strFmt("Dim1: %1" , DimensionAttributeValueCombination::find(dim1).DisplayValue));
      info(strFmt("Dim2: %1" , DimensionAttributeValueCombination::find(dim2).DisplayValue));
      info(strFmt("merge dim: %1", DimensionAttributeValueCombination::find(mergerDim).DisplayValue));
  
   }

Please share your queries/feedback in comment box, I will be happy to help you.

-Harry

May 04, 2017

New classes in Dynamics 365 for Dimensions





Hi Folks,

Since many days, I was trying to perform few logics over LedgerDimensions and DefaultDimensions, like merge and replace etc. In AX2012 its handled by DiemsionDefaultingService class that having many static method to help us to play around ledger/default dimensions.

But in Dynamics 365 FO , this class is deprecated, and MS introduce few more classes to help us with these requirements. Here are few name of classes and method that can be used.


1. LedgerDimensionFacade : 
This class used for fixed LedgerDimension, we have many static methods here, like Merge Dimension, getdefaultDimension and many more, refer below image.

image

2. LedgerDimensionDefaultFacade: 
This class will help us to perform action over default dimension. Like Merge specify default dimension into single default dimension, replace attribute value etc.

Please refer below image, 

image

Both classed having almost same method that is available in AX with DiemsionDefaultingService class.


See Also,

How to merge two dimension

-Harry

March 09, 2017

How to rename an Object in VisualStudio[Dynamics365/AX7]

Hi Folks,
Many times we need to duplicate an standard object and do the required changes and system gives warning while rename. Same caused error during project build.
 Problem: While renaming any object in Visual studio project system throw below warning
“Some of the files you are renaming or moving will be located outside of the project's binding root. The item(s) <objectName>.xml will not be source controlled if you continue with this rename.”
image
If you just continue with change , you may get errors while project/solution build.
Possible reason: If you are using TFS and this new object are not added to source code you’' will get this error.
Suggest Solution: Add this new object in Source control by right click on object and select “Add file  to source control”
image
Now you should be able to rename it.
This works for me perfectly. If you got some other solution to fix this issue plz keep share your feedback or links to other posts.
-Harry

February 27, 2017

How to add Standard Address fields into a new table [Dynamics365/AX7]

Hi Folks,

Its been a long time to write any new post on AX. Here I’m back today. Since few months we all are trying the new Dynamics 365 and its amazing new features in D365.

In this post we will see how to add new address fields in table using Table mapping.

[Note: In D365 we have object extension functionality to customize standard objects. But we don't have this option for Maps. This post will also help you to understand the alternative for the same by using table Mapping section.]

Requirement: We need to add all standard address fields in table followed by adding a new tab for address in respective from.

Proposed solution: We can achieve this by adding a single field rather than add multiple fields in table. Perform below steps to get this done,

1. Add a new field in table, EDT type “LogisticsLocationRecId”, rename it  as “Location”.

2. Now add a new Foreign key relation for “LogisticPostalAddress”  table and set its property as below snap shot,

image

3. Add a new map in mapping node for “LogisticsLocationMap”. Map field to location.
Your table must looks like below

image

Now we done with table customization, now we need do some addition on Form.

4. Firstly, Add new DS in your form, Table : “LogisticsPostalAddress”, set “LinkType” as “OuterJoin” with your main DS (where we added our new field “Location”)

5. Add a new tab page into your design with DS “LogisticsPostalAddress”(make sure it will be as per your from pattern)

image

Set Menu item object for menu item button as below table
MenuItemButton MenuItem Object Name
NewAddress LogisticsPostalAddressNewCustBankAccount
EditAddress LogisticsPostalAddressEditCustBankAccoun
ClearAddress LogisticsPostalAddressClearCustBankAccou
MapButton LogisticsPostalAddressMap

6. Add below code
I. Form declation 
LogisticsPostalAddressFormHandler   addressController; 
II. Form init
public void init()
    {
        super();

        addressController = LogisticsPostalAddressFormHandler::newParameters(<maintable>_ds,LogisticsPostalAddress_ds);
        addressController.callerUpdateQuery(fieldNum(<maintable>,Location));
    }
 
III. New global method
public LogisticsPostalAddressFormHandler getAddressController()
    {
        return addressController;
    }
 
IV. Active method of new DS (LogisticsPostalAddress)
public int active()
        {
            int ret;
       
            ret = super();

            addressController.callerActive();
            addressController.callerUpdateButtons(newAddress,editAddress,clearAddress,mapButton);
       
            return ret;
        }
7.Save all your changes, build project and run the Form. Your changes must looks like below,
New tab on from
image
while click on edit button you will get an dialog that contain all address fields.

image

You can make require changes and click on Ok button it will save your changes and on Form will show complete address  in a single field (LogisticsPostalAddress.address)

Hope it will help…, Please keep sharing your comments and feedback.

-Harry