If you want to completely uninstall InterFormNG2 on the IBM i platform, then you should consider the procedure below:
Please note: You should make sure, that you have not placed any objects, that you want to keep in the IFORMNG2 library or in the IFORMNG2 directory (including any sub-directory within the IFORMNG2 directory).
Disclaimer: InterForm A/S cannot be held responsible for any loss of data caused following this procedure below. You should use this as a suggestion and only delete any objects after making sure, that you really are not deleting too much. You should consider of course to perform a backup before deleting anything.
Normally the data queues and output queues take up so little space, that you can consider to skip this part and go directly to step 5 below, if you have only monitored very few output queues.
1.List all the output queues, that are (or have been) monitored by InterFormNG2.
2.Remove references to data queues on output queues, that are monitored by InterFormNG2 - unless another application will need them.
3.Delete the data queues (that has been added by InterFormNG2) for monitoring the output queues - unless another application will need them.
4.Consider if the monitored output queues should also be deleted.
5.Consider if you should delete any converted Spool2XML printer files.
6.Stop the IFORMNG2 subsystem.
7.Delete the IFORMNG2 library.
8.Delete the IFORMNG2 directory
9.Delete the user profile, IFORMNG2 and consider if all objects owned by this user profile should also be deleted.
Output queues can in InterFormNG2 be monitored in two ways:
1.From the IFORMNG2 menu. Here you can see the list of monitored output queues by running the command, IFORMNG2/IFORMNG2 and then select option, 1. Work with monitored output queues. You should expect at least to see the output queue, IFORMNG2 in the library, QUSRSYS.
2.In a workflow. Here you need to have the IFORMNG2 subsystem running and then go into the Workflows. All workflows, that have the input type, From IBM i output queue should be opened and here you can find the name and library of the output queue, that has been monitored by the current workflow.
From both of these you will now have a combined list of all output queues, that are (or can be) monitored by InterFormNG2.
For each of the output queues listed above you can now remove the reference to the data queue with the same name in the same library. If you intend to delete the output queue, then you can skip this step.
For each output queue you can verify, if a data queue is currently referenced with the command:
CHGOUTQ OUTQ(QUSRSYS/IFORMNG2). You can prompt the command with F4 and then press F9 to view all the current values. If a data queue is attached, then you will see this in the bottom:
Data queue . . . . . . . . . . . <dtaq> Name, *SAME, *NONE
Library . . . . . . . . . . . <library> Name, *LIBL, *CURLIB
(Where <dtaq> is the name of the data queue and <library> is the library, that contains the data queue)
If no data queue is attached, then you will see this:
Data queue . . . . . . . . . . . *NONE Name, *NONE
Library . . . . . . . . . . . Name, *LIBL, *CURLIB
InterFormNG2 will add a data queue in the same library as the output queue and with the same name as the output queue. If the data queue is named differently or placed in another library, then this output queue is NOT used by InterFormNG2 and you should not remove the reference to the data queue and neither the output queue nor the data queue should be deleted.
You can remove the reference to a data queue by running this command:
CHGOUTQ OUTQ(<outq>/<library>) DTAQ(*NONE)
(where <outq> is the name of the output queue and <library> is the library where the output queue is placed).
The data queues used by InterFormNG2 can be deleted with the command:
DLTDTAQ DTAQ(<library>/<dtaq>)
(Where <library> is the library of the data queue and <dtaq> is the name of the data queue).
InterFormNG2 has created the data queue, QUSRSYS/IFORMNG2 so you should consider to delete that one with the command:
DLTDTAQ DTAQ(QUSRSYS/IFORMNG2)
If you want to completely remove all traces of InterFormNG2, then you can consider even to delete some or all of the output queues, that has been monitored by InterFormNG2.
The output queue must be empty before you can delete an output queue, so you might need to clear the output queue first (deletes all spooled files on the selected output queue). If you are sure, that you are not deleting any important spooled files (by verifying the contents first), then you can clear an output queue with the command:
CLROUTQ OUTQ(<library>/<outq>)
(Where <library> is the library in which the output queue is placed and <outq> is the name of the output queue).
You can delete the output queue, if the output queue is empty with this command:
DLTOUTQ OUTQ(<library>/<outq>)
One output queue, that has been created with IFORMNG2 is the output queue, QUSRSYS/IFORMNG2. You can clear that output queue with the command:
CLROUTQ OUTQ(QUSRSYS/IFORMNG2)
- and you can delete that output queue with the command:
DLTOUTQ OUTQ(QUSRSYS/IFORMNG2)
If you have been converting any printer files with the command, IFORMNG2/CVTPRTFXML, then you will be able to find a link to these converted printer files by running the command, IFORMNG2/IFORMNG2 and then select option, 2. Work with XML definitions.
The screen will here show a list of all the converted (XML) printer files and the library in which they are placed. You can delete these printer files with the command:
DLTF FILE(<library>/<printer file>)
(Where <library> is the library where the converted (XML) printer file is placed and <printer file> is the name of the XML printer file).
You can run this command to stop the IFORMNG2 subsystem:
IFORMNG2/IFORMNG2 and then select option, 11. End IFORMNG2 subsystem. You can verify, that the subsystem has really been ended via option, 12. Work with IFORMNG2 subsystem on the same menu.
The IFORMNG2 library can be deleted with this command:
(You need to make sure, that you have not put any additional objects into this library before it is deleted - or make a backup before you delete it to be double sure.)
DLTLIB IFORMNG2
The IFORMNG2 directory and any sub-directories inside of it can be deleted with this command:
(You need to make sure, that you have not put any additional objects into this directory (or sub-directories inside of it) before it is deleted - or make a backup before you delete it to be double sure.)
RMVDIR DIR('/IFormNG2') SUBTREE(*ALL)
The final object is the IFORMNG2 user profile. This user profile will own any object, that has been generated by InterFormNG2 so you need to consider, if you also want to delete all objects owned by this user profile or not.
You can list all the objects owned by this user profile with the command:
WRKOBJOWN USRPRF(IFORMNG2)
You can delete the user profile with this command:
DLTUSRPRF USRPRF(IFORMNG2) OWNOBJOPT(<option> <new owner>)
(Where <option> decides what to do with the objects owned by IFORMNG2: If you set <option> to *DLT and exclude <new owner>, then all objects owned by IFORMNG2 will also be deleted. If you e.g. set <option> to *CHGOWN and <new owner> to another user profile, then the object owner will be changed to the other user profile before the IFORMNG2 user profile is deleted.)