Technical Blog Post
Where long descriptions actually are?
When defining an alphanumeric attribute for a MBO (let's call it MYDESCRIPTION), the database configuration application permits a long version by checking the "Long Description Owner?" flag. At saving time, Maximo automatically adds a new attribute linked to the alphanumeric attribute: its name is automatically set to the source attribute name plus the _LONGDESCRIPTION suffix (so for the previous example the long description attribute will be MYDESCRIPTION_LONGDESCRIPTION) and the Maximo type is automatically set to LONGALN.
Once configured, inspecting the database table behind the MBO there is no evidence about the long description attribute. So, where such data is actually stored?
For performance reasons and in order to support multiple languages at the same time, Maximo stores all the long descriptions, regardless the MBO they belong, in the dedicated table named LONGDESCRIPTION. Such table carries references to the records containing the corresponding short descriptions by means of those attributes:
- LDOWNERTABLE: the long description owner table
- LDOWNERCOL: the long description owner column, actually the alphanumeric attribute
- LDKEY: the unique key for the object
What is unclear at first glance is how Maximo actually retrieves the long description at run-time. The LONGALN type has a special treatment thanks to the psdi.mbo.MboLONGALNValue implementation which links at run-time the current MBO to the LONGDESCRIPTION corresponding records (more than one in case of multiple languages), giving the feeling that the long descriptions are stored in the same MBO table.
All the long descriptions can be retrieved by using the following automatically generated relationship
__LONGDESCRIPTION + attributeName + _LONGDESCRIPTION
So for the above example the relationship name would be