Topic for reporting IFS Developer studio bugs
- Community
- IFS Solutions
- Framework & Experience (Infrastructure, Cloud, Integration, Dev Tools)
- IFS Developer Studio - bugs
IFS Developer Studio - bugs
- October 24, 2024
- 73 replies
- 1124 views
73 replies
- Superhero (Employee)
- June 19, 2026
Hi
just wandering - how could this produce error during deployment? If you do not set dynamic dependency in deploy.ini, it could be deployed in incorrect order. But Conditional compilation should not affect it - only bad implementation of conditional compilation should be problem - but this increase probability of making mistake.
Suppose you have two components, A and B, and A depends dynamically on B, with an entry in deploy.ini as well. During deployment, B needs to be deployed before A. Since the deployment order of components is not predefined unless there is a static dependency between them, if A starts deploying before B has been deployed, you will get deployment errors if the conditional compilation is not set properly in the code.
we are trying to catch these type of scenarios beforehand at development time to avoid these errors.
CC
- Superhero (Employee)
- June 19, 2026
Hi
just wandering - how could this produce error during deployment? If you do not set dynamic dependency in deploy.ini, it could be deployed in incorrect order. But Conditional compilation should not affect it - only bad implementation of conditional compilation should be problem - but this increase probability of making mistake.
Suppose you have two components, A and B, and A depends dynamically on B, with an entry in deploy.ini as well. During deployment, B needs to be deployed before A. Since the deployment order of components is not predefined unless there is a static dependency between them, if A starts deploying before B has been deployed, you will get deployment errors if the conditional compilation is not set properly in the code.
our attempt was to identify these type of potential issues at the development time before they become deployment isssues
CC
- Superhero (Employee)
- June 19, 2026
- Conditional compilation is not just used for the solution sets but also plays a vital part in deployment order handling. Even if a component is enabled in the solutionset, it will still be treated as “inactive” during the delivery installation if that component is also included in the delivery, to avoid object dependency errors.
- @DynamicComponentDependency was deprecated as it was causing an unjustifiable amount of non-deterministic deployment issues: If a view is sometimes created and sometimes not based on the content of the delivery it makes the installation behaviour unpredictable as other views/packages that reference the view will then sometimes deploy successfully… and sometimes not.
- Your example 4 is the exact approach that I would suggest for a large view with many different dynamic dependencies as it is still readable and avoids deployment issues.
- Regarding you final question how this can cause issues: Dynamically dependent components are not deployed in a specific order so you are not guaranteed that the objects of the referenced components actually exist and are valid at the point that the view is deployed. Example:
- You have referenced Inventory_Part_API in your view
- Inventory_Part_API, deployed via InventoryPart.api sits in the INVENT component.
- As you seemingly do not have a static dependency from your component to the INVENT component you are not guaranteed that INVENT, and therefore Inventory_Part_API, will be deployed before your view is deployed.
- There are now multiple scenarios where this can fail deployment of your file:
- If something is included in the delivery that makes Inventory_Part_API temporarily invalid until the INVENT component is fully deployed, your view will fail deployment.
- If the method in Inventory_Part_API you are referencing is also introduced from the delivery, your view will fail deployment. Of course in this particular case you know that this will not be the case because it is a Core method but we have to have a solution that works for all methods and not just for some.
- If you are doing a Fresh Install of a new environment the Inventory_Part_API will not exist at all yet. Again, this might not be a scenario you are currently performing but again we have to ensure that the deployment works for all scenarios and eventualities.
- Therefore:
- Adding conditional compilation around the call to Inventory_Part_API will ensure that the API call is not added to the view when both, the view and the INVENT component are included in a delivery. The view will then be redeployed later on in the installation process when all components have been deployed and the dynamic dependencies are guaranteed to be present.
- Not allowing usage of @DynamicComponentDependency ensures that the view is still always created and any other objects that reference it are also guaranteed to deploy successfully.
The amount of support cases we receive because of deployment issues caused by unhandled dynamic dependencies (i.e. lack of conditional compilation) in modifications and the fact that even you, who seems to have an otherwise solid understanding of the process, are asking how this can cause deployment failures, kind of proofs the point why this check is now enforced.
I do understand your pain though and agree with your point that this should’ve come with better communication and ideally only be enabled for 26R1 onwards.
- Hero (Customer)
- June 19, 2026
References for this topic
Dynamic Dependencies - Technical Documentation For IFS Cloud
Component Deployment Profile File - Technical Documentation For IFS Cloud
Entity Modeling - Technical Documentation For IFS Cloud
Components - Technical Documentation For IFS Cloud
Dynamic Calls to Optional Components - Technical Documentation For IFS Cloud
Upvote everything
So, they don’t sit for 3 years.
- Hero (Partner)
- June 22, 2026
Hi @Jonas Feigl,
thanks, this makes sense and I understand the reasoning.
When we develop the “Ext” layer, we of course follow this approach, because the delivery has to be clean, deterministic and reusable.
My point was mainly about the “Cust” layer, where we are usually working on top of already installed Core modules in a specific customer environment. In that context, we have so far often simplified this, because excessive conditional compilation can reduce readability and, in practice, also introduce new errors if it is not done correctly. (For example, in Core 25R2 reports, the do_sql_ variable is now set to TRUE only when the CRYSTL module is installed, which caused a few code blocks not to execute as expected.)
And realistically, this is exactly where the risk is: many developers will not implement the conditional compilation correctly, especially when they are fixing existing modifications in a hurry. I already wanted to find some ideal compromise - IFS - Backbone modules - Conditional compilation | IFS Community
So I fully agree that the check makes sense technically. My concern is mainly about introducing it suddenly for existing Cust projects, where there was often no previous pressure to handle these cases perfectly.
- Superhero (Employee)
- June 22, 2026
As an example, Oracle will raise an error if all of your code inside a method is inside a $IF/$END as it will say “method is empty”. Developer Studio will show you a warning telling you that you are missing a “$ELSE NULL;” section to avoid this. But there are other such warnings like when using a variable that is only available conditionally etc.
If you are aware of other such scenarios that currently do not show a warning in Developer Studio please report these.
- Hero (Partner)
- June 23, 2026
Hi
I received some update of SD just now. But it failed with many warning.

Is safe to disable it (at least for 25r2 development?) or reinstallation /appdata folder cleanup is needed?
Edit:
it stucks in endless restarting loop.. (i will try cleanup)



- Superhero (Employee)
- June 23, 2026
Hi
I received some update of SD just now. But it failed with many warning.

Is safe to disable it (at least for 25r2 development?) or reinstallation /appdata folder cleanup is needed?
Edit:
it stucks in endless restarting loop.. (i will try cleanup)



yes it’s good if you can clear the User profile and restart the tool, then all the libraries will get updated,
- Hero (Partner)
- June 26, 2026
Hi,
some files are not visible in Project view:
-
deploy.ini, *.upg,*.ddl
IFS Developer Studio 18 (Build 26.1.1164 2026-06-16)
Project 25.2.7
- Hero (Partner)
- July 14, 2026
Deployment of entire component fails, but deploy of particular file is ok.



IFS Developer Studio 18 (Build 26.1.1164 2026-06-16)
- Do Gooder (Customer)
- July 14, 2026
If an IFS projection has an attribute named “BusinessObject” in the core code it is disabling the option to customize the projection, more details are in this post: Customize This not available. I’m not sure if this is intentional or is a bug but there is a workaround to manually create the -Cust file.

- Hero (Customer)
- July 15, 2026
Hi developers
I have started getting some stack overflow errors in IFS Developer when trying to ‘generate and deploy’ files which appear to come from an infinite loop associated with dependencies.

It happens straight away after selecting the menu option, with very little progress shown:

I am developing for 25R1 and using IFS Developer Studio 18 (Build 26.1.1164 2026-06-16) and have had to add dependencies to some modules as discussed earlier in this post using Installation_Sys.Register_Dependency().
I am getting this error on one particular customised client file in the partca module (Parts-Cust.client) although other files in the same module build and deploy without an error (including Part-Cust.client). I have added a new dependency to this module. However I am also getting this error for a file in the shpmnt module (ManualReservationsForShipmentAndCustomerOrderLine projection) where I have not added any dependencies.
This is stopping development work.
Has anyone else seen this, any ideas on what I can do?
Any input much appreciated!
mmck
- Hero (Partner)
- July 15, 2026
Hi
just idea for STATIC dependency - in past there was issue, when STATIC dependencies made cycle, so try use Dynamic dependency instead.
- Hero (Customer)
- July 15, 2026
Hi
Many thanks for the quick response.
I admit I was perhaps being lazy using the static dependency approach but given the extent of our customisations it was certainly the most efficient way to deal with the original problem. Given I’m getting the overflow error on the shpmnt module where I’ve not changed the dependencies presumably it’s coming from another module on which the shpmnt module depends?
If so, it’s going to take sometime to find the right dependency to change to dynamic...
I must admit, I also don’t understand why I would get the error for the Parts-Cust.client but not the Part-Cust.client when static dependencies are being used.
mmck
- Hero (Customer)
- July 16, 2026
Hi
Do you know the correct way to remove a static dependency which was added using Installation_Sys.Register_Dependency()? There doesn’t appear to be a Deregister function.
I believe I need to do this to begin to trace where the dynamic dependencies need to be declared…
Thanks,
mmck
- Hero (Partner)
- July 16, 2026
Hi
yes, registration procedure ignore changes…
You must manually update table.
PROCEDURE Register_Dependency (
module_ IN VARCHAR2,
dependent_module_ IN VARCHAR2,
dependency_ IN VARCHAR2 )
IS
stmt_ VARCHAR2(32000) := '
BEGIN
INSERT
INTO module_dependency_tab (
module,
dependent_module,
dependency,
rowversion)
VALUES (
:module_,
:dependent_module_,
:dependency_,
sysdate);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
END;';
BEGIN
-- Safe due to executed with Invokers rights
--@ApproveDynamicStatement(2010-05-12,haarse)
EXECUTE IMMEDIATE stmt_ USING module_, dependent_module_, dependency_;
END Register_Dependency;
- Hero (Customer)
- July 16, 2026
Hi
Many thanks for confirming, yes, I found that procedure and thought that would be the case.
Now for the long job of tracing all the dynamic dependencies…
I guess I’m to use the approach of conditional compilation with checks like this in the plsql:
$IF Component_Chmgmt_SYS.INSTALLED $THEN
$ELSE
$END
One thought though, where there’s a dependency on a completely new customised module, how do I check for it in the code? If I’m to use the same approach presumably I need to declare my own equivalent somehow?
Thanks again for your time and effort in responding on this.
mmck
- Hero (Partner)
- July 16, 2026
Hi
when you create first dependency in module_dependency_tab, call this to generate this package.
BEGIN
Installation_SYS.Create_Component_Package(TRUE);
END;
/
- Hero (Partner)
- July 16, 2026
DS UI sometimes freeze with this error
Product Version: IFS Developer Studio 18 (Build 26.1.1164 2026-06-16)
java.lang.NullPointerException: Cannot invoke "javax.swing.JEditorPane.requestFocus()" because the return value of "ifs.dev.nb.model.filetype.ui.SourceEditor.getEditorPane()" is null
at ifs.dev.nb.model.filetype.ui.SourceEditor.requestFocus(SourceEditor.java:164)
at org.netbeans.core.multiview.TabsComponent.changeActiveManually(TabsComponent.java:546)
at org.netbeans.core.multiview.MultiViewPeer$MVTCHandler.requestActive(MultiViewPeer.java:931)
at org.netbeans.core.api.multiview.MultiViewHandler.requestActive(MultiViewHandler.java:74)
at ifs.dev.nb.model.config.apps8.DiagramSourceSynchronizer.synchronize(DiagramSourceSynchronizer.java:60)
at ifs.dev.nb.model.filetype.ModelDataObject$ModelSaveCookie.save(ModelDataObject.java:313)
at org.openide.actions.SaveAction.performAction(SaveAction.java:107)
at org.openide.actions.SaveAction.performAction(SaveAction.java:77)
at org.openide.actions.SaveAction$Delegate.actionPerformed(SaveAction.java:224)
at org.openide.awt.ContextAction$Performer.actionPerformed(ContextAction.java:446)
at org.openide.awt.ContextManager.actionPerformed(ContextManager.java:263)
at org.openide.awt.ContextAction.actionPerformed(ContextAction.java:106)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:68)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:91)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:74)
at org.openide.awt.GeneralAction$BaseDelAction.actionPerformed(GeneralAction.java:354)
at org.openide.windows.TopComponent.processKeyBinding(TopComponent.java:1155)
at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:3009)
at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2909)
at java.desktop/java.awt.Component.processEvent(Component.java:6403)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1952)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1150)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4882)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
- Hero (Partner)
- July 16, 2026
immediately after update i got this error on attempt to “Generate Code” on entity (25.2.4)
Product Version: IFS Developer Studio 18 (Build 26.1.1175 2026-06-26)
java.lang.NullPointerException: Cannot invoke "ifs.dev.model.codegen.CodeLocationProvider.isModelProvider()" because "provider" is null
at ifs.dev.model.codegen.CodeLocator.resolveEntriesFromModelName(CodeLocator.java:162)
at org.netbeans.modules.plsql.execution.actions.SaveUsedModels.findDependentModelsToBeSaved(SaveUsedModels.java:146)
at org.netbeans.modules.plsql.execution.actions.SaveUsedModels.checkSaveUsedModels(SaveUsedModels.java:107)
at org.netbeans.modules.plsql.execution.actions.SaveUsedModels.saveSelfAndDependents(SaveUsedModels.java:85)
at org.netbeans.modules.plsql.execution.actions.SaveUsedModels.saveSelfAndDependents(SaveUsedModels.java:68)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at ifs.dev.nb.model.config.action.GenerateCodeAction.performAction(GenerateCodeAction.java:164)
at ifs.dev.nb.model.config.action.GenerateCodeAction.performAction(GenerateCodeAction.java:213)
at org.openide.util.actions.NodeAction$DelegateAction$1.run(NodeAction.java:561)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:70)
at org.openide.util.actions.ActionInvoker$ActionRunnable.actionPerformed(ActionInvoker.java:137)
at org.netbeans.core.ModuleActions.invokeAction(ModuleActions.java:84)
at org.netbeans.modules.openide.actions.ActionsBridgeImpl.invokeAction(ActionsBridgeImpl.java:35)
at org.openide.util.actions.ActionInvoker$ActionRunnable.doRun(ActionInvoker.java:128)
at org.openide.util.actions.ActionInvoker$2.run(ActionInvoker.java:85)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1419)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2034)
- Hero (Customer)
- July 20, 2026
Hi
when you create first dependency in module_dependency_tab, call this to generate this package.
BEGIN
Installation_SYS.Create_Component_Package(TRUE);
END;
/
Hi
Thank you for this. Just to make sure I understand it correctly, my custom package already exists, say it’s called MMCUST, so I should use
Installation_SYS.Create_Component_Package(TRUE, ‘MMCUST’);
Afterwards, when I have a call to that package from a different package, I’ll be able to use a check like this in the plsql:
$IF Component_Mmcust_SYS.INSTALLED $THEN
$ELSE
$END
Is my understanding correct?
Thanks again,
mmck
- Hero (Partner)
- July 20, 2026
procedure Installation_SYS.Create_Component_Package creates Component_<module>_SYS package for all modules mentioned in table module_dependency_tab
- Hero (Customer)
- July 20, 2026
OK, that makes sense, many thanks
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.