I decided to create this conversation as I don’t see this issue addressed clearly in other areas of the IFS Community. Although it is alluded to in other questions, no real answer is provided by IFS that has been satisfactory (or maybe it is but I could not find it).
The question is simple: Why has IFS fully restricted the execution of any IFSAPP API’s to the user accounts given to Customer’s IT departments to connect to Oracle (that is, IFSINFO and IFSDBREADONLY)? What alternatives does IFS provide to Customer’s IT departments to perform some tasks that are SAFE that were entirely possible in APPS10?
I would like to expand a bit on what I mean by SAFE API calls. In the past, IFS Consultants maintained that the state of IFS Database Access to Customer’s IT Departments was presenting a risk, as users (with the IFSAPP password) could do whatever CRUD operations they wanted against the base tables CIRCUMVENTING IFS API USAGE and that was very risky.
Fast forward to IFS Cloud architecture and now it seems that the pendulum has moved in the opposite way. In my view, this concern of Customer’s IT departments manipulating their data has made IFS fully restrict not only CRUD operations against base tables but also a very handy programmatically safe way to perform actions against IFS using PL/SQL scripts, that is, the very same API’s the IFS Cloud UI uses to manipulate data.
By removing such execute permission to ALL ACCOUNTS that a Customer can potentially use in Oracle, they have effectively taken away from customer’s the ability to perform any safe bulk operations. I know that the Migration Tool would allow you to bulk update or insert data, but that doesn’t provide for the same flexibility a PL/SQL Script would provide for those who are experienced PL/SQL Developers.
In addition to that, when it comes to executing an IFS API in a loop in APPS10 you could do something like this, which is safe (because you are effectively not doing anything against the data outside the real of IFS’s own APIs)
FOR rec_ IN (SELECT * FROM /*Table*/ p /*WHERE p.*/)
LOOP
IFSAPP./*API*/./*CALL*/;
END LOOP;
Now in IFS Cloud the answer may be to create a Migration Job, but frankly (and after using migration Jobs for many years) it is very clear that this requires a lot of configuration, is error prone, and is way more time consuming (we are talking about hours of elbow greasing parameters and settings) that the 4 lines of code above can achieve in 1 minute.
Am I missing something? is there an easy alternative to address this situation?