MicroStrategy / mstrio-py

Python integration for MicroStrategy
Apache License 2.0
89 stars 57 forks source link

Category Update for Attribute Forms not available. Attribute linking inside Dossier Bug. #177

Open vladbalcanu opened 3 months ago

vladbalcanu commented 3 months ago

For each attribute form there is a field named category that can only be set in the creation phase. This field can't be altered later and this is also specified in the details of the AttributeForm class. Through testing we have found out that this category influences the ability to link attributes and as a consequence the ability to use target visualizations. To be more specific, it seems like the key form of an attribute must have the category as ID (this is default when creating from workstation). Also, if there is a second attribute form, this seems to be set to DESC in the workstation. From experiments, after having 2 attribute forms, adding other attribute forms will set the category in different fashion using the attribute name in some way. We know that not having the category of the key-form set to ID causes linking issues with other attributes inside a dossier (i.e. no attribute recommendations or options are given when trying to link, even if you have 2 identical attributes just with different names). This is not documented anywhere even though we've tested this multiple times and it seems to be the case. Possibly even the second attribute form's category not being set to "DESC" could cause problems as well. This can be solved by just setting the category when creating the attributes however, for already created attributes, this problem is irreversible.

Can the Python API be updated in order for the Category class parameter of an attribute form to be available for updating/changing? This would be very needed in order to fix existing attributes.

Steps to reproduce problem with linking Attributes in Workstation:

  1. Create 2 Attributes with identical configuration manually through workstation. The only difference should be the name. You can call them TEST1 and TEST2. We recommend to add 2 attribute forms to each: a key-form and another form that is preferably the displayed one.
  2. Link the attributes together inside a dossier using the workstation to confirm that the bug can't be reproduced when creating these attributes manually.
  3. Create 2 more attributes using the python API with identical configuration with the ones created manually earlier named; TEST3 and TEST4. For attribute named TEST3 don't set the category for it's attribute forms and let the app create them randomly. For attribute named TEST4 set the categories in the following fashion: key-form has the category set to "ID" and the second attribute form has its category set to "DESC".
  4. Test the attribute linking inside a dossier using the workstation. Try to link attributes TEST3 and TEST4 with each other and with the attributes TEST1 and TEST2. You should be able to link attribute TEST4 with TEST1 and TEST2 and vice-versa. But attribute TEST3 will get no possible attributes available for linking.