How to find the unique ID used by Board of a member of an entity

Julien CARDON
Julien CARDON Customer
Fourth Anniversary 100 Comments 25 Likes Photogenic
edited August 2022 in Platform
Hi,

Board is referencing entity members based on an internal ID.
=> How can I see that internal ID for each members ?


Because when we want to migrate procedures and screen from DEV to PROD, then procedure and screen are not calling the right member on PROD because internal IDs of member are different in DEV & PROD.


If I can see somewhere corresponding IDs it could help me a lot when creating new members in PROD with the right ID or in the right order


Regards
Julien

Accepted Answer

  • Florian Deutsch
    Florian Deutsch Active Partner
    Fourth Anniversary 25 Up Votes 10 Comments Board Developer
    Answer ✓

    You can see the entity member's idx when you use the browser's developer tools. This is because Board uses an internal API to function.

    1. Navigate to your Board DB > Entities
    2. Hit F12 in your browser, open up the "network" tab
    3. Click on "content". You'll see a GET request to getElementList?dbName={YOURDB}&entityIdx={current_entity-idx}&page=0:

    On the right hand side, you'll now see each entity member with its index (idx):

    ⇒ You can do the same with procedures and you'll find the internal entity member's idx :-)

Answers

  • Hi Julien,

    The internal ID is not something that is exposed to developer users however it does play a very important role behind the scenes.

    From what you describe above, it sounds like entity members may have been deleted from your Production model. This can cause the kind of misalignment you are experiencing between environments and, if not managed correctly, prevent some selections, rules and other objects from pointing to the correct entity members.

    This article here outlines the best practice for managing obsolete entity members:

    Hope this helps.

    Peter

  • Hi Julien,

    You can not see the internal ID of an Entitymember. But if you sort the Entity by "none" and extract it, you can see in the extract the Entity members in the "internal order". In case you did not delete a entity member manually, this is the order you are looking for.

    Is it regarding the "manually deletion" of entitymembers. Or more because of the different order in which master data is loaded into prod and dev - and therefor the different internal Entitymember ID?

    Best regards,

    Fabian

  • Julien CARDON
    Julien CARDON Customer
    Fourth Anniversary 100 Comments 25 Likes Photogenic
    edited February 2023

    Hi Fabian

    We want to be able to see the unique ID of each member because of use cases :

    • Use Case 1 : We have 1 living data model in PROD where new entity members are created every day. And at the same time I have the same data model in DEV environment that are not refreshed very often. I'm doing changes in procedure and making selection on members => When I will move the proc to PROD with transporter, member selected in DEV will be different than members in PROD because they don't have the same internal ID => Allow me to see the internal ID so I can easily check with members have different internal IDs between DEV and PROD
    • Use Case 2 : eg member was deleted and used in 100 + procedure, so procedure will fail or produce incorrect result since the member no longer exist. So instead of changing the selection in all my 100+ procedure, I just have to recreate the member in the entity dimension and give it the right internal ID


    regards

    julien

  • Hi Julien,

    i think there is no way to see the internal entity member ID. In my experience there are some points, that could be considerd while implementing a board solution, that could help to reduce the maintance effort for your point. That will of course not solve an existing case. But maybe some of the points can be helpful for further implementation.

    There are different areas where a changed element ID can lead to a not wanted selection

    • Screen and Layout Selection
    • Refer to
    • Selections in DataFlow
    • Fixed selections in the Security

    Helpful implementations in a board application

    • Very often a selection in an entity is only made to select or exclude the “_ - Not Available" element. Therefore, bring this element to the first internal ID using a DataReader to upload “_ - Not Available" as first element of the entity.
    • Try to use higher aggreated entities, where a change or deletion is less common, instead of selecting on a low level.
    • Use dynamic selections in screens (please be aware, that dynamic selections costs performance for bigger cubes).
    • Use “select based on cube” in procedures and calculate the selection cube per dataflow before (and then is based on the code of the entity member).
    • Security:
      • Use the selection script for fixed entity selections. This is based on the entity code and not the internal ID
      • Use higher aggreated entities, where a change or deletion is less common
      • Create “technical security” entities, where the entity order is under developers' control

    Change/Deletion of an Entity Element

    In my development of Board Applications, I always have a documentation on entites, where fix selections are used in the above mentioned areas. Before manually changing (manually deletion or “clear, clean, reload”) check that documention, to make sure not changing a affected entities. For housekeeping with deletion I would follow the process described in the articel posted by Peter. Then also the fixed selections needs to get updated. For an action that needs to be done outside the housekeeping, flag a members as “not in use” in a parent entity for the meanwhile.

    I hope this i helpful!

    Best regards,

    Fabian

  • Hi Fabian

    I agree with your advices and understand that today it is not possible to see that ID. So maybe an idea for a future enhancement.

    However just having the option to see the internal ID for each members would save us a lot of time (since this ID already exist in BOARD it should be easy to display it).

    I'm not a big fan of creating a lot of artificial / tech / fake parent entities just because I don't know the internal ID of a member :)

    regards

    julien

  • Thanks for the tips, that's great!

    I have also found with last board version by putting log to debug, I'm also able to see members IDs