com.crystaldecisions.sdk.occa.infostore
Interface IInfoObject

All Known Subinterfaces:
IAgnostic, IAlertingApp, IAlertNotification, IAuditEventInfo, IAuditEventInfo, ICalendar, ICategory, IConnection, IContainer, ICryptographicKey, ICustomMappedAttribute, ICustomRole, IDependencyRule, IDeploymentFile, IDiskUnmanaged, IEnterpriseNode, IEvent, IExcel, IFileEvent, IFolder, IFTP, IFullClient, IHotBackup, IHyperlink, IInbox, IInstall, ILicenseKey, ILicenseRestriction, IManaged, IManifest, IMetricDescriptions, INotificationEvent, INotificationSchedule, IObjectPackage, IOverload, IPDF, IPowerPoint, IProbeInfoObject, IProfile, IProgram, IPublication, IRemoteCluster, IReplication, IReport, IRestWebService, IRTF, ISAMLServiceProvider, IScheduleEvent, IScopeBatch, IsecEnterprise, IsecLDAP, IsecSAPR3, IsecWinAD, IsecWinNT, IServer, IServerGroup, IService, IServiceBase, IServiceCommon, IServiceContainer, IServiceContainerBase, ISFTP, IShortcut, ISMTP, IStreamWork, IStreamWorkIntegration, ITenant, ITxt, IUniverse, IUser, IUserEvent, IUserGroup, IWebi, IWebService, IWord
All Known Implementing Classes:
ServiceCommon

public interface IInfoObject

IInfoObject is the core interface for writing a SAP BusinessObjects Enterprise object that interacts and works within the SAP BusinessObjects Enterprise system. For the client library, this object allows for the persistence of information sent to the CMS. For the client desktop, this object defines the appearance of an object type.

Note: This object is serializable and can be used in environments that support fail-over. To ensure the object can be recreated in the event of an application server failure, use a session variable to persist the object across pages. The object can then be retrieved from the session variable from any server in the cluster.


Nested Class Summary
static interface IInfoObject.CommitLevel
           The CommitLevel interface contains constants corresponding to the commit levels that are supported for optimistic locking.
static interface IInfoObject.Delta
          Internal only.
static class IInfoObject.LocaleOption
           The LocaleOption indicates whether you want default, fallback, or create if not exist behaviour when you call getFiles
static interface IInfoObject.LockStatus
          Internal only.
static interface IInfoObject.PropertySet
           
 
Method Summary
 boolean applyDelta(java.lang.String delta)
          Internal only.
 boolean applyDelta(java.lang.String delta, int deltaFlags)
          Internal only.
 void clearTenantID()
          Clears the property representing the tenant this object is associated with (by setting the tenant id to 0 or shared).
 void deleteNow()
           Deletes the current object from the repository.
 int getCommitLevel()
           Returns the commit consistency level set on this InfoObject.
 java.lang.String getCUID()
          

Returns the object's unique identifier within a cluster.

 java.lang.String getDelta()
          Internal only.
 java.lang.String getDelta(int deltaFlags)
          Internal only.
 java.lang.String getDescription()
          

Returns the description of the InfoObject.

 java.lang.String getDescription(java.util.Locale locale)
          Returns the localized description of this InfoObject with fallback logic.
 java.lang.String getDescription(java.util.Locale locale, boolean doFallback)
          Returns the localized description of this InfoObject To read this value, this object must contain the SI_ML_DESCRIPTION property.
 java.util.List getDescriptionLocales()
          

Return a List of all locales in SI_ML_DESCRIPTION If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

 java.util.List getFileLocales()
          

Return a List of all locales in SI_FILES, not including SOURCE Return null if the files bag is single-valued, or it is a new infoobject, and no file hasn't been added yet

 IFiles getFiles()
          

Returns the InfoObject's associated files.

 IFiles getFiles(java.util.Locale locale, IInfoObject.LocaleOption option)
          

Returns the InfoObject's associated files based on the locale your provided.

 java.lang.String getGUID()
          

Returns the object's globally unique identifier.

 int getID()
          

Returns the unique ID of an InfoObject.

 java.lang.String getKeyword()
          

Returns the keyword of the InfoObject.

 java.lang.String getKind()
          

Returns the kind of the InfoObject.

 ILockInfo getLockInfo()
          Internal only.
 java.lang.String getOwner()
          Internal only.
 int getOwnerID()
          Internal only.
 IInfoObject getParent()
          

Gets the parent object for this object.

 IInfoObject getParent(int propertySet)
          

Gets the parent object for this object.

 java.lang.String getParentCUID()
          

Returns the parent object's cluster unique identifier.

 int getParentID()
          

Returns the ID of the parent object.

 IProcessingInfo getProcessingInfo()
          

Returns the processing information for the object.

 java.lang.String getProgID()
          

Returns the prog id of this InfoObject.

 java.lang.String getRUID()
          

Returns the object's unique identifier within an object package.

 ISchedulingInfo getSchedulingInfo()
          

Returns the scheduling information for the object.

 ISecurityInfo getSecurityInfo()
          Deprecated. since version 12.0. Use getSecurityInfo2 instead
 ISecurityInfo2 getSecurityInfo2()
          

Returns the security information for the object.

 IFiles getSourceFiles(IInfoObject.LocaleOption option)
          

Returns the InfoObject's SOURCE files

 java.lang.String getSpecificKind()
           Returns the specific kind of the InfoObject.
 java.lang.String getSpecificProgID()
           Returns the specific ProgID of this InfoObject.
 int getTenantID()
          Returns the id of the tenant that this object is associated with.
 java.lang.String getTitle()
          

Returns the title of the InfoObject.

 java.lang.String getTitle(java.util.Locale locale)
          Returns the localized title of this InfoObject with fallback logic.
 java.lang.String getTitle(java.util.Locale locale, boolean doFallback)
          Returns the localized title of this InfoObject To read this value, this object must contain the SI_ML_NAME property.
 java.util.List getTitleLocales()
          

Return a List of all locales in SI_ML_NAME If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

 java.util.Date getUpdateTimeStamp()
           Returns the date and time of when this object was last updated.
 boolean isDirty()
          

Returns true if any of the object's properties have been changed.

 boolean isInstance()
          

Returns true if this object is an instance.

 boolean isLockHeld()
          Internal only.
 boolean isMarkedAsRead()
          

Return true if the object has been read, and false otherwise.

 boolean isReadOnly()
          Return true if the object is read only.
 IProperties properties()
          

Returns a collection of properties.

 java.lang.Integer[] propertyIDs()
          

Returns a collection of InfoObject property IDs.

 void releaseLock()
          Internal only.
 IFiles removeFiles(java.util.Locale locale)
           Removes an IFiles associated with a certain locale.
 IFiles removeSourceFiles()
           Removes the InfoObject's SOURCE files.
 void retrievePropertySet(int propertySet)
          

Retrieves the property set from the repository.

 void save()
          

Saves the current object into the CMS repository.

 void setCommitLevel(int cl)
           Sets the commit consistency level, e.g., how property version conflicts will be resolved.
 void setDescription(java.lang.String newDescription)
          

Sets the description of the InfoObject.

 void setKeyword(java.lang.String keyword)
          

Sets the keyword of the InfoObject.

 void setMarkedAsRead(boolean value)
          

Sets a boolean that indicates whether the object has been read.

 void setParentID(int parentID)
          

Sets the ID of the parent object.

 void setTenantID(int tenantID)
          Sets the id of the tenant that this object is associated with.
 void setTitle(java.lang.String newTitle)
          

Sets the title of the InfoObject.

 void unlockNow()
          Internal only.
 

Method Detail

getDescription

java.lang.String getDescription()

Returns the description of the InfoObject.

Returns:
A String containing the description of the object.
InfoObject properties to query for:
SI_DESCRIPTION

getDescription

java.lang.String getDescription(java.util.Locale locale)
                                throws SDKException
Returns the localized description of this InfoObject with fallback logic.

To read this value, this object must contain the SI_ML_DESCRIPTION property.

If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

Parameters:
locale - The locale of the description
Returns:
The description of this service category
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_DESCRIPTION, SI_ML_DESCRIPTION, SI_TRANSLATION_STATE

getDescription

java.lang.String getDescription(java.util.Locale locale,
                                boolean doFallback)
                                throws SDKException
Returns the localized description of this InfoObject

To read this value, this object must contain the SI_ML_DESCRIPTION property.

If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

Parameters:
locale - The locale of the description
doFallback, - true if fallback logic is performed, false if fallback logic is not performed
Returns:
The description of this infoobject, returns null if locale doesn't exist and no fallback logic is performed
Throws:
SDKException - This is thrown if the process is unsuccessful.
Since:
4.0
InfoObject properties to query for:
SI_DESCRIPTION, SI_ML_DESCRIPTION, SI_TRANSLATION_STATE

getDescriptionLocales

java.util.List getDescriptionLocales()
                                     throws SDKException

Return a List of all locales in SI_ML_DESCRIPTION

If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

Returns:
A List of all up-to-date locales in SI_ML_DESCRIPTION
Throws:
SDKException
Since:
4.0

setDescription

void setDescription(java.lang.String newDescription)

Sets the description of the InfoObject.

Parameters:
newDescription - A String containing the InfoObject's description.

getID

int getID()

Returns the unique ID of an InfoObject.

Returns:
The unique ID of the InfoObject as an int.
InfoObject properties to query for:
SI_ID

isInstance

boolean isInstance()

Returns true if this object is an instance. This method is used to check whether or not the InfoObject is an instance.

Returns:
true if this object is an instance, false otherwise.

getParentID

int getParentID()

Returns the ID of the parent object. The ID of parent InfoObject is relative to the Enterprise hierarchy.

Returns:
The int value of the parent ID.
InfoObject properties to query for:
SI_PARENTID

getProcessingInfo

IProcessingInfo getProcessingInfo()

Returns the processing information for the object. It will be an empty reference if the object does not support processing (scheduling). In SAP BusinessObjects Enterprise, reports, programs, and object packages can be processed.

Returns:
An IProcessingInfo object containing processing information for the object.
InfoObject properties to query for:
SI_PROCESSINFO

propertyIDs

java.lang.Integer[] propertyIDs()

Returns a collection of InfoObject property IDs.

Returns:
An Integer array of property IDs.

properties

IProperties properties()

Returns a collection of properties. This is an interface to the object's property bag.

Returns:
An IProperties object containing a collection of properties.

getSchedulingInfo

ISchedulingInfo getSchedulingInfo()

Returns the scheduling information for the object. It will be an empty reference if the object does not support scheduling. In SAP BusinessObjects Enterprise, reports, programs, and object packages can be scheduled.

Returns:
An ISchedulingInfo object containing this object's scheduling information.
InfoObject properties to query for:
SI_SCHEDULEINFO

getSecurityInfo

ISecurityInfo getSecurityInfo()
Deprecated. since version 12.0. Use getSecurityInfo2 instead

Returns the security information for the object.

Returns:
The security information for the object.

getSecurityInfo2

ISecurityInfo2 getSecurityInfo2()
                                throws SDKException

Returns the security information for the object.

Returns:
The security information for the object.
Throws:
SDKException

getTitle

java.lang.String getTitle()

Returns the title of the InfoObject.

Returns:
A String containing the title of the InfoObject.
InfoObject properties to query for:
SI_NAME

getTitle

java.lang.String getTitle(java.util.Locale locale)
                          throws SDKException
Returns the localized title of this InfoObject with fallback logic.

To read this value, this object must contain the SI_ML_NAME property.

If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

Parameters:
locale - The locale of the title
Returns:
The title of this infoobject
Throws:
SDKException - This is thrown if the process is unsuccessful.
Since:
4.0
InfoObject properties to query for:
SI_NAME, SI_ML_NAME, SI_TRANSLATION_STATE

getTitle

java.lang.String getTitle(java.util.Locale locale,
                          boolean doFallback)
                          throws SDKException
Returns the localized title of this InfoObject

To read this value, this object must contain the SI_ML_NAME property.

If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

Parameters:
locale - The locale of the title
doFallback, - true if fallback logic is performed, false if fallback logic is not performed
Returns:
The title of this infoobject, returns null if locale doesn't exist and no fallback logic is performed
Throws:
SDKException - This is thrown if the process is unsuccessful.
Since:
4.0
InfoObject properties to query for:
SI_NAME, SI_ML_NAME, SI_TRANSLATION_STATE

getTitleLocales

java.util.List getTitleLocales()
                               throws SDKException

Return a List of all locales in SI_ML_NAME

If the object has SI_TRANSLATION_STATE property, it is used to prune outdated translations.

Returns:
A List of all up-to-date locales in SI_ML_NAME
Throws:
SDKException
Since:
4.0

setTitle

void setTitle(java.lang.String newTitle)

Sets the title of the InfoObject.

Parameters:
newTitle - The title of the InfoObject.

getFiles

IFiles getFiles()
                throws SDKException

Returns the InfoObject's associated files.

Returns:
An IFiles object that contains the InfoObject's associated files.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_FILES

getSourceFiles

IFiles getSourceFiles(IInfoObject.LocaleOption option)
                      throws SDKException

Returns the InfoObject's SOURCE files

Returns:
An IFiles object that contains the InfoObject's SOURCE files.
Throws:
SDKException - This is thrown if the process is unsuccessful.
Since:
4.0
InfoObject properties to query for:
SI_FILES

getFiles

IFiles getFiles(java.util.Locale locale,
                IInfoObject.LocaleOption option)
                throws SDKException

Returns the InfoObject's associated files based on the locale your provided.

Parameters:
locale - The locale of the files
option - indicates one of the following behavious, default, fallback or createifnotexist
Returns:
An IFiles object that contains the InfoObject's associated files.
Throws:
SDKException - This is thrown if the process is unsuccessful.
Since:
4.0
InfoObject properties to query for:
SI_FILES

getFileLocales

java.util.List getFileLocales()
                              throws SDKException

Return a List of all locales in SI_FILES, not including SOURCE Return null if the files bag is single-valued, or it is a new infoobject, and no file hasn't been added yet

Returns:
A List of all locales in SI_FILES, return null if SI_FILES is single-valued or it is a new infoobject, and no file hasn't been added yet
Throws:
SDKException - If it is not a new infoobject, and there is no SI_FILES property
Since:
4.0

removeFiles

IFiles removeFiles(java.util.Locale locale)
                   throws SDKException

Removes an IFiles associated with a certain locale. If SI_FILES is not multilingual or the locale isn't found then null is returned. Otherwise the removed IFiles is returned.

Returns:
The removed IFiles or null if the locale doesn't exist or SI_FILES is single-valued
Throws:
SDKException
Since:
4.0

removeSourceFiles

IFiles removeSourceFiles()
                         throws SDKException

Removes the InfoObject's SOURCE files. If SI_FILES is not multilingual or the SOURCE files isn't found then null is returned. Otherwise the removed IFiles is returned.

Returns:
The removed SOURCE IFiles or null if it doesn't exist or SI_FILES is single-valued
Throws:
SDKException
Since:
4.0

getGUID

java.lang.String getGUID()
                         throws SDKException

Returns the object's globally unique identifier.

Note: When creating a new IInfoObject you must retrieve the SI_GUID property. Otherwise, when this method is called an exception will be thrown.

Returns:
A string representing the object's globally unique identifier
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_GUID

getCUID

java.lang.String getCUID()
                         throws SDKException

Returns the object's unique identifier within a cluster.

Note: When creating a new IInfoObject you must retrieve the SI_CUID property. Otherwise, when this method is called an exception will be thrown.

Returns:
A string representing the object's cluster unique identifier.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_CUID

getRUID

java.lang.String getRUID()
                         throws SDKException

Returns the object's unique identifier within an object package.

Note: When creating a new IInfoObject you must retrieve the SI_RUID property. Otherwise, when this method is called an exception will be thrown.

Returns:
A string representing the object's package unique identifier.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_RUID

setParentID

void setParentID(int parentID)

Sets the ID of the parent object. The ID of parent InfoObject is relative to the Enterprise hierarchy.

Parameters:
parentID - A int specifying the ID of the parent object.

getParentCUID

java.lang.String getParentCUID()
                               throws SDKException

Returns the parent object's cluster unique identifier.

Note: When creating a new IInfoObject you must retrieve the SI_PARENT_CUID property. Otherwise, when this method is called an exception will be thrown.

Returns:
String representing the parent object's cluster unique identifier.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_PARENT_CUID

getProgID

java.lang.String getProgID()
                           throws SDKException

Returns the prog id of this InfoObject.

Returns:
String representing the InfoObject's ProgID.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_PROGID

retrievePropertySet

void retrievePropertySet(int propertySet)
                         throws SDKException

Retrieves the property set from the repository. Use the values in the PropertySet interface.

Throws:
SDKException - This is thrown if the process is unsuccessful.

getParent

IInfoObject getParent()
                      throws SDKException

Gets the parent object for this object.

Returns:
The IInfoObject who is the parent of this object. return null if the current session does not have right to view the parent object.
Throws:
SDKException - This is thrown if the process is unsuccessful.

getParent

IInfoObject getParent(int propertySet)
                      throws SDKException

Gets the parent object for this object. Use the values in the PropertySet interface.

Returns:
The IInfoObject who is the parent of this object. Will contain the requested properties.
Throws:
SDKException - This is thrown if the process is unsuccessful.

save

void save()
          throws SDKException

Saves the current object into the CMS repository.

Throws:
SDKException - This is thrown if the process is unsuccessful.

deleteNow

void deleteNow()
               throws SDKException

Deletes the current object from the repository.

Throws:
SDKException - This is thrown if the process is unsuccessful.

unlockNow

void unlockNow()
               throws SDKException
Internal only. No public support

Throws:
SDKException

isDirty

boolean isDirty()

Returns true if any of the object's properties have been changed.

Returns:
A boolean specifying whether any of the object's properties have been changed. true if any properties have changed, false otherwise.

getKeyword

java.lang.String getKeyword()

Returns the keyword of the InfoObject.

Returns:
A String containing the keyword of the object.
InfoObject properties to query for:
SI_KEYWORD

setKeyword

void setKeyword(java.lang.String keyword)
                throws SDKException

Sets the keyword of the InfoObject.

Parameters:
keyword - A String containing the InfoObject's keyword.
Throws:
SDKException - This is thrown if the process is unsuccessful.

getKind

java.lang.String getKind()
                         throws SDKException

Returns the kind of the InfoObject. The kind represents the InfoObject type.

Returns:
A String containing the kind of the object.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_KIND

isMarkedAsRead

boolean isMarkedAsRead()
                       throws SDKException

Return true if the object has been read, and false otherwise.

Returns:
A boolean that indicates whether the object has been read.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_MARKED_AS_READ

setMarkedAsRead

void setMarkedAsRead(boolean value)

Sets a boolean that indicates whether the object has been read.

Parameters:
value - A boolean that indicates whether the object has been read.

getDelta

java.lang.String getDelta()
                          throws SDKException
Internal only. No public support

Throws:
SDKException
InfoObject properties to query for:
SI_CUID

getDelta

java.lang.String getDelta(int deltaFlags)
                          throws SDKException
Internal only. No public support

Throws:
SDKException
See Also:
IInfoObject.getDelta()
InfoObject properties to query for:
SI_CUID

applyDelta

boolean applyDelta(java.lang.String delta)
                   throws SDKException
Internal only. No public support

Apply a given delta string to this object - equivalent to applyDelta(Delta.ALL).
Only property changes and limited file operation are supported. Specifically only ADD and REMOVE file operations are supported when communicating between Java and COM SDK. Otherwise Java SDK will try to apply all file operations.

SI_ID and SI_CUID are NOT applied to the object.
The InfoObject must have SI_CUID for all objects

Throws:
SDKException
InfoObject properties to query for:
SI_CUID

applyDelta

boolean applyDelta(java.lang.String delta,
                   int deltaFlags)
                   throws SDKException
Internal only. No public support

Throws:
SDKException
See Also:
IInfoObject.applyDelta(String)
InfoObject properties to query for:
SI_CUID

getUpdateTimeStamp

java.util.Date getUpdateTimeStamp()
                                  throws SDKException

Returns the date and time of when this object was last updated.

Returns:
A Date identifying the last time this object was updated.
Throws:
SDKException
InfoObject properties to query for:
SI_UPDATE_TS

setCommitLevel

void setCommitLevel(int cl)
                    throws SDKException

Sets the commit consistency level, e.g., how property version conflicts will be resolved. Valid settings are defined in IInfoObject.CommitLevel.

Parameters:
cl - The desired commit consistency level.
Throws:
SDKException - This is thrown if the parameter provided is invalid.

getCommitLevel

int getCommitLevel()
                   throws SDKException

Returns the commit consistency level set on this InfoObject. If the commit consistency level has not been set explicitly, the default setting is IInfoObject.CommitLevel.COMMIT_LAST_WRITE_WINS.

Returns:
The commit consistency level for this InfoObject.
Throws:
SDKException

isLockHeld

boolean isLockHeld()
                   throws SDKException
Internal only. No public support

Throws:
SDKException
InfoObject properties to query for:
SI_LOCK_INFO

releaseLock

void releaseLock()
Internal only. No public support

InfoObject properties to query for:
SI_LOCK_INFO

getLockInfo

ILockInfo getLockInfo()
                      throws SDKException
Internal only. No public support

Throws:
SDKException
InfoObject properties to query for:
SI_LOCK_INFO

isReadOnly

boolean isReadOnly()
Return true if the object is read only. If the object is read-only, only security changes are save on commit.

Returns:

getOwner

java.lang.String getOwner()
                          throws SDKException
Internal only. No public support

Throws:
SDKException
InfoObject properties to query for:
SI_OWNER

getOwnerID

int getOwnerID()
               throws SDKException
Internal only. No public support

Throws:
SDKException
InfoObject properties to query for:
SI_OWNERID

getSpecificKind

java.lang.String getSpecificKind()
                                 throws SDKException

Returns the specific kind of the InfoObject. The specific kind represents the InfoObject type. It will generally be the same as the object kind, except when the object belongs to a sub-type. In such a case, specific kind refers to the most derived type, whereas kind refers to the least derived type.

Returns:
A String containing the specific kind of the object.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_SPECIFIC_KIND

getSpecificProgID

java.lang.String getSpecificProgID()
                                   throws SDKException

Returns the specific ProgID of this InfoObject. It will generally be the same as the ProgID, except when the object belongs to a sub-type. In such a case, specific ProgID refers to the most derived type, whereas ProgID refers to the least derived type.

Returns:
String representing the InfoObject's specific ProgID.
Throws:
SDKException - This is thrown if the process is unsuccessful.
InfoObject properties to query for:
SI_SPECIFIC_PROGID

getTenantID

int getTenantID()
                throws SDKException
Returns the id of the tenant that this object is associated with. If the object does not associate with any tenant, the method will return 0.

Returns:
The id of the tenant that this object is associated with. 0 if the object does not belong to any tenant.
Throws:
SDKException - This exception will be thrown if the property is not queried for this object
InfoObject properties to query for:
SI_TENANT_ID

setTenantID

void setTenantID(int tenantID)
                 throws SDKException
Sets the id of the tenant that this object is associated with.

Parameters:
tenantID - The id of the tenant that this object is associated with
Throws:
SDKException - This exception will be thrown if the tenant ID cannot be set properly due to property construction error

clearTenantID

void clearTenantID()
                   throws SDKException
Clears the property representing the tenant this object is associated with (by setting the tenant id to 0 or shared).

Throws:
SDKException - This exception will be thrown if the tenant ID cannot be set properly