web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

Product Configuration Model - Performance Advise

(0) ShareShare
ReportReport
Posted on by 135

Hi Community,

So i built a medium sized Configuration Model for a Customer (6500 Attributes, 50 Table Restrictions, 25 Sub Components, lots of Calculations) and we re experiencing real Problems with Performance. To start up the Model and the first initiation in regards to, what to show and what to hide from the start off it takes up to 2 minutes to apply all the rules.

Now i know the Cache does SOME work in performance increase, but maybe some of you have other advise. It would be much appreciated.

regards. Ruben

*This post is locked for comments

I have the same question (0)
  • new_axys Profile Picture
    135 on at
    RE: Product Configuration Model - Performance Advise

    thank you for that. in our case, the values to be calculated are in the MAIN component, so there kinda unique.

    i have coded all day yester day :D couldnt debug though, still getting system out of memory for no obvious reasons :D will inform if solution found

  • Yves Y Profile Picture
    55 on at
    RE: Product Configuration Model - Performance Advise

    AttributeInstanceId are not static.  They can be different after clearing xml caching.  And they are not the same across multiple environments.

    You will need to check attribute name through runtimeModel.getAttributeFromId().  However, an attribute name is not necessarily unique within a model.  So you may need to customize class PCRuntimeAttribute and/or PCRuntimeXMLParseAttribute to add more info (ie extended solver name) in attribute class.

    You may also need to customize PCRuntimeModel because you will need a way to get attribute id from an extended solver name.  Id is required when calling AssignAttributeValue for attributes affected by custom calculations.

  • new_axys Profile Picture
    135 on at
    RE: Product Configuration Model - Performance Advise

    are the attributeInstanceId´s static ? so i simply debug, identify the attributeInstanceId and write my code?

  • Yves Y Profile Picture
    55 on at
    RE: Product Configuration Model - Performance Advise

    I don't know if it's possible to debug this part since we don't have access to the source code of product configuration dll.

    Have you already considered using custom x++ code to replace the calculation ?  In class PCRuntimeConfigurator (method valueChangedEventHandler), you could catch a specific attribute, call your custom method, and then call method assignAttributeValue to send back to the dll another attribute value.

    Just keep in mind that inserting customizations in this area can lead to performance degradation and/or instability.

  • new_axys Profile Picture
    135 on at
    RE: Product Configuration Model - Performance Advise

    Hi. Thanks - there is some usefull advise. I think my biggest Problem is a massive Calculation which has about 40 "if"s in it :D its hard though to work around, tough request by the customer .

    I now geat System.out.of. memory all the time , its very frustrating and simply can not be debugged.

  • Yves Y Profile Picture
    55 on at
    RE: Product Configuration Model - Performance Advise

    Hi Ruben,

    When working with product configurator, you should have R3 version to make sure you work with latest version of caching mechanism.  If you have R2, make sure you have at least hotfixes provided by KB2969969.

    Some perfomance issues can be caused by tree redraw.  You can declare an integer variable in PCRuntimeConfigurator class and use dispose method to display the content of it to infolog.  The variable can be incremented in class PCRuntimeUIConfigurator (method componentModifierChanged).  If the tree is redrawn more than 2 or 3 times, then you should consider doing a customization to minimize these redraw.  A suggestion here would be to use setTimeOut to do a redraw only once at the end of the loading process.

    Another time consuming task is within PCRuntimeConfigurator.parseXmlModel.  Even if XML caching option is activated, it can take many seconds to parse XML structure to build an instance of runtimeModel.  Again, a customization can be useful.  A suggestion here would be to use Infolog.globalCache() to store and reuse an instance of runtimeModel.

    Hope this helps.

    Yves

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Andrés Arias – Community Spotlight

We are honored to recognize Andrés Arias as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
Syed Haris Shah Profile Picture

Syed Haris Shah 9

#2
Mea_ Profile Picture

Mea_ 4

#3
Martin Dráb Profile Picture

Martin Dráb 2 Most Valuable Professional

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans