Skip to main content

I have encountered the below error while deploying a GET patch.

Error: PLS-00201: identifier 'COMPONENT_TREF_SYS.INSTALLED' must be declared.

As I was investigating the issue, I noticed that Component_Tref_SYS was not generated/deployed in the DEV database during the build and installation.

The error comes from a method that belongs to Invoice_API but the patch I applied did not contain any code changes related to Invoice_API or INVOIC component. Therefore, I assumed that the Invoice_API got deployed as a dependency and compared module_dependency_tab of DEV with BNT as the next step and identified a few differences,

  • TREF is not listed as a dependency for INVOIC module
  • INVOIC is listed as a dynamic dependency for TREF module but in BNT it is listed as a static dependency. 

I’m not sure what caused these differences, but I noticed the same error in one of the previous  installation logs as well (only in DEV).

As a workaround (since this issue occurred in an internal environment), the deployment error can be fixed by manually adding/updating those two records in DEV module_dependency_tab according to BNT but I would like to know if there is a standard method to fix such issues?

When referencing an optional module or LU you typically find those type of references as part of a compiler directive.  Usually within a $if … $end  where the conditional is another package reference to the existence of the LU.  For example look at package INSTANT_INVOICE_PLAN_API.


When the package that is supposed to state if the LU exists is missing, it usually means something else is missing.  It can also be a sign of something missing with the migration tool kit.