Saturday, 20 June 2026

OUAF C2M 25.4 installation on Windows64

This blog is for anyone looking to installing Oracle C2M 25.4 on windows. Main changes observed in this installation compared to earlier installations are:
  • JDK 17 used
  • Weblogic 14.1.2 used. (Needs Weblogic Remote Console)
  • Major step changes in Native Weblogic Installation. Everything is to be done on Weblogic Remote Console now. Also steps have reduced compared to native installation in earlier versions of the application. I feel it is much simpler now.

Download Softwares

C2M 25.4 download

Login to the Oracle Software Delivery Cloud and search for “Oracle Utilities Customer to Meter”. Add the C2M 25.4 release to the download queue.




Database download


Repeat the search on Oracle Software Delivery Cloud for “Oracle Database 19c Standard Edition 2” and queue it up as well – C2M 25.4 still runs on Oracle 19c.

C:\Users\sreen\OneDrive\Pictures\Screenshots\Screenshot 2026-02-21 165918.png


C:\Users\sreen\OneDrive\Pictures\Screenshots\Screenshot 2026-02-21 170044.png


C:\Users\sreen\OneDrive\Pictures\Screenshots\Screenshot 2026-02-21 172438.png


C:\Users\sreen\OneDrive\Pictures\Screenshots\Screenshot 2026-02-21 172452.png

JDK download – Download version 17



Download jdk 17 and install it



This is the location where I installed jdk: C:\c2m\java\jdk\jdk-17.0.18


Database Installation

Download and Install Oracle 19c



Select Setup Software only.











This completes the installation of database software.

Configure the Database Path Variable


Create the Database

Navigate to DBCA (Database Configuration Assistant)






Create the Listener


Navigate to Net Configuration Assistant








Verify that Listener and Database Service are Running





Add Database Service Against Listener

Oracle Home directory is : C:\c2m\database\19c\software\V982656-01

Click Add Database



Below is listener.ora file for reference.

C:\Users\sreen\Downloads\listener_image_redacted.png




Enable Extended Data Types

Set the DB parameter max_string_size = EXTENDED.

Ensure all connections to database are closed first

SQLplus commands for updating database to EXTENDED

Connect to sqlplus

Connect using sys as sysdba


Shutdown database

SHUTDOWN NORMAL


Start database in upgrade mode

STARTUP UPGRADE


Update value to EXTENDED

alter system set max_string_size='EXTENDED';


Run script

@C:/c2m/database/19c/software/V982656-01/rdbms/admin/utl32k.sql


Restart DB in Normal Mode

SHUTDOWN

STARTUP


Run script

@C:/c2m/database/19c/software/V982656-01/rdbms/admin/utlrp.sql


Login to sqlplus with sys as SYSDBA



C:\Users\sreen>sqlplus


SQL*Plus: Release 19.0.0.0.0 - Production on Sun Mar 8 15:15:04 2026

Version 19.3.0.0.0


Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Enter user-name: sys as sysdba

Enter password:


Connected to:

Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


SQL> SHUTDOWN NORMAL

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> STARTUP UPGRADE

ORACLE instance started.


Total System Global Area 2.0535E+10 bytes

Fixed Size                 19655840 bytes

Variable Size            2684354560 bytes

Database Buffers         1.7784E+10 bytes

Redo Buffers               47452160 bytes

Database mounted.

Database opened.

SQL> alter system set max_string_size='EXTENDED';


System altered.


SQL> @C:/c2m/database/19c/software/V982656-01/rdbms/admin/utl32k.sql


Session altered.



Session altered.


DOC>#######################################################################

DOC>#######################################################################

DOC>   The following statement will cause an "ORA-01722: invalid number"

DOC>   error if the database has not been opened for UPGRADE.

DOC>

DOC>   Perform a "SHUTDOWN ABORT"  and

DOC>   restart using UPGRADE.

DOC>#######################################################################

DOC>#######################################################################

DOC>#


no rows selected


DOC>#######################################################################

DOC>#######################################################################

DOC>   The following statement will cause an "ORA-01722: invalid number"

DOC>   error if the database does not have compatible >= 12.0.0

DOC>

DOC>   Set compatible >= 12.0.0 and retry.

DOC>#######################################################################

DOC>#######################################################################

DOC>#


PL/SQL procedure successfully completed.



Session altered.



5 rows updated.



Commit complete.



System altered.



PL/SQL procedure successfully completed.



Commit complete.



System altered.



Session altered.



Session altered.



Table created.



Table created.



Table created.



Table truncated.



0 rows created.



PL/SQL procedure successfully completed.



STARTTIME

--------------------------------------------------------------------------------

03/08/2026 16:31:15.668000000



PL/SQL procedure successfully completed.


No errors.


PL/SQL procedure successfully completed.



Session altered.



Session altered.



0 rows created.



no rows selected



no rows selected


DOC>#######################################################################

DOC>#######################################################################

DOC>   The following statement will cause an "ORA-01722: invalid number"

DOC>   error if we encountered an error while modifying a column to

DOC>   account for data type length change as a result of enabling or

DOC>   disabling 32k types.

DOC>

DOC>   Contact Oracle support for assistance.

DOC>#######################################################################

DOC>#######################################################################

DOC>#


PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.



Commit complete.



Package altered.



Package altered.



Session altered.


SQL> SHUTDOWN

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> STARTUP

ORACLE instance started.


Total System Global Area 2.0535E+10 bytes

Fixed Size                 19655840 bytes

Variable Size            2684354560 bytes

Database Buffers         1.7784E+10 bytes

Redo Buffers               47452160 bytes

Database mounted.

Database opened.

SQL> @C:/c2m/database/19c/software/V982656-01/rdbms/admin/utlrp.sql


Session altered.



TIMESTAMP

--------------------------------------------------------------------------------

COMP_TIMESTAMP UTLRP_BGN              2026-03-08 16:36:35


DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid

DOC>   objects in the database. Recompilation time is proportional to the

DOC>   number of invalid objects in the database, so this command may take

DOC>   a long time to execute on a database with a large number of invalid

DOC>   objects.

DOC>

DOC>   Use the following queries to track recompilation progress:

DOC>

DOC>   1. Query returning the number of invalid objects remaining. This

DOC>      number should decrease with time.

DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);

DOC>

DOC>   2. Query returning the number of objects compiled so far. This number

DOC>      should increase with time.

DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;

DOC>

DOC>   This script automatically chooses serial or parallel recompilation

DOC>   based on the number of CPUs available (parameter cpu_count) multiplied

DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).

DOC>   On RAC, this number is added across all RAC nodes.

DOC>

DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel

DOC>   recompilation. Jobs are created without instance affinity so that they

DOC>   can migrate across RAC nodes. Use the following queries to verify

DOC>   whether UTL_RECOMP jobs are being created and run correctly:

DOC>

DOC>   1. Query showing jobs created by UTL_RECOMP

DOC>         SELECT job_name FROM dba_scheduler_jobs

DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';

DOC>

DOC>   2. Query showing UTL_RECOMP jobs that are running

DOC>         SELECT job_name FROM dba_scheduler_running_jobs

DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';

DOC>#


PL/SQL procedure successfully completed.



TIMESTAMP

--------------------------------------------------------------------------------

COMP_TIMESTAMP UTLRP_END              2026-03-08 16:36:39


DOC> The following query reports the number of invalid objects.

DOC>

DOC> If the number is higher than expected, please examine the error

DOC> messages reported with each object (using SHOW ERRORS) to see if they

DOC> point to system misconfiguration or resource constraints that must be

DOC> fixed before attempting to recompile these objects.

DOC>#


OBJECTS WITH ERRORS

-------------------

                  0


DOC> The following query reports the number of exceptions caught during

DOC> recompilation. If this number is non-zero, please query the error

DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors

DOC> are due to misconfiguration or resource constraints that must be

DOC> fixed before objects can compile successfully.

DOC> Note: Typical compilation errors (due to coding errors) are not

DOC>       logged into this table: they go into DBA_ERRORS instead.

DOC>#


ERRORS DURING RECOMPILATION

---------------------------

                          0



Function created.



PL/SQL procedure successfully completed.



Function dropped.



PL/SQL procedure successfully completed.


SQL>


Login to database as sys as SYSDBA. Use sqldeveloper and run below commands.



CREATE TABLESPACE CISTS_01 LOGGING DATAFILE 'C:/c2m/database/c2m2504/oradata/C2M2504/cists01.dbf' SIZE 1024M REUSE AUTOEXTEND ON NEXT 8192K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;


CREATE ROLE CIS_ADM NOT IDENTIFIED;

CREATE ROLE CIS_USER NOT IDENTIFIED;

CREATE ROLE CIS_READ NOT IDENTIFIED;


GRANT CREATE TABLE TO CIS_ADM;

GRANT CREATE VIEW TO CIS_ADM;

GRANT CREATE SYNONYM TO CIS_ADM;

GRANT CREATE MATERIALIZED VIEW TO CIS_ADM;

GRANT CREATE SEQUENCE TO CIS_ADM;

GRANT CREATE INDEXTYPE TO CIS_ADM;

GRANT CREATE ROLE TO CIS_ADM;

GRANT CREATE TRIGGER TO CIS_ADM;

GRANT CREATE PROCEDURE TO CIS_ADM;

GRANT CREATE SYNONYM TO CIS_USER;

GRANT CREATE SYNONYM TO CIS_READ;


CREATE USER CISADM IDENTIFIED BY CISADM DEFAULT TABLESPACE CISTS_01 TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;

ALTER USER CISADM QUOTA UNLIMITED ON CISTS_01;


GRANT CREATE SESSION TO CISADM;

GRANT CREATE TABLESPACE TO CISADM;

GRANT READ on DBA_TABLESPACES TO CISADM;

GRANT ALTER TABLESPACE TO CISADM;

GRANT UNLIMITED TABLESPACE TO CISADM;

GRANT DROP TABLESPACE TO CISADM;

GRANT EXECUTE on DBMS_UTILITY TO CISADM;

GRANT SELECT_CATALOG_ROLE TO CISADM;

GRANT EXECUTE_CATALOG_ROLE TO CISADM;

GRANT CIS_ADM TO CISADM;


grant execute on dbms_rls to CISADM with grant option;

grant execute on dbms_crypto to CISADM;



CREATE USER CISUSER PROFILE DEFAULT IDENTIFIED BY CISUSER DEFAULT TABLESPACE CISTS_01 TEMPORARY TABLESPACE TEMP;

ALTER USER CISUSER QUOTA UNLIMITED ON CISTS_01;

GRANT CIS_USER to CISUSER;

GRANT CREATE SESSION TO CISUSER;


CREATE USER CISREAD IDENTIFIED BY CISREAD DEFAULT TABLESPACE CISTS_01 TEMPORARY TABLESPACE TEMP;

ALTER USER CISREAD QUOTA UNLIMITED ON CISTS_01;

GRANT CIS_READ to CISREAD;

GRANT CREATE SESSION TO CISREAD;


CREATE USER CISOPR PROFILE DEFAULT IDENTIFIED BY OPRPLUS DEFAULT TABLESPACE CISTS_01 TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION,EXP_FULL_DATABASE TO CISOPR;


Import Demo Database



Check Data Pump Directory Location

SELECT directory_name, directory_path FROM dba_directories where directory_name = 'DATA_PUMP_DIR';



C:\c2m\database\19c\app\admin\c2m2504\dpdump/


C:\myfolder\OracleDownloads\C2M.25.4\V1049681-01.zip\C2M\Demo

Extract and Import the Demo Dump

Copy the exp_demo.dmp.gz file from the Demo folder of the C2M 25.4 media pack into the DATA_PUMP_DIR location identified above, then extract it there so that exp_demo.dmp sits directly inside the dpdump folder.





Extract the .gz file and place the exp_demo.dmp file at the data pump dir location


Open a command prompt and run the import using the directory and dump file from above:

impdp directory=data_pump_dir dumpfile=exp_demo.dmp logfile=exp_demo.log schemas=CISADM

When prompted, log in as sys as SYSDBA. The import runs through the CISADM schema objects and finishes with a completed message – a handful of RLS policy warnings are expected here and can be ignored, since fine-grained access control is enabled later in the install.





Create Synonyms for CISUSER and CISREAD



Extract the files in V1048344-01.zip


Open command prompt in admin mode.

Navigate to the folder where jarfiles is

cd C:\myfolder\OracleDownloads\C2M.25.4\V1048344-01\jarfiles


SET CLASSPATH=C:\myfolder\OracleDownloads\C2M.25.4\V1048344-01\jarfiles\*


"%JAVA_HOME%"\bin\java -Xmx1500M com.oracle.ouaf.oem.install.OraGenSec -d CISADM,CISADM,jdbc:oracle:thin:@localhost:1521/C2M2504 -u CISUSER,CISREAD -r CIS_USER,CIS_READ -a A -p CISUSER,CISREAD -l output.log





Weblogic Installation

Download weblogic 14.1.2

C2M 25.4 runs on WebLogic 14.1.2 with JDK 17. Download the fmw_14.1.2.0.0_infrastructure.jar installer and run it with the JDK 17 java executable to launch the install wizard, then step through the wizard accepting the standard Fusion Middleware Infrastructure install – no custom values are needed here.













This completes installation of weblogic.


Update Environment Path Variables

Add JAVA_HOME, ORACLE_CLIENT_HOME


Add jdk path, database path, database perl path





C2M Application Installation

Install the Framework

Extract the downloaded Application Framework and Customer to Meter jar files to a temporary folder (for example C:\tmp). Navigate to the extracted FW-V25.4 folder and run install.cmd from an administrator command prompt to launch the installer.








************************************

* Environment Installation Options *

************************************


 1. Environment ID, Roles, Third Party Software Configuration

       Environment ID:                                    c2m2504

       Server Roles:                                      batch,online

       Oracle Client Home Directory:                      C:\c2m\database\19c\software\V982656-01

       Web Java Home Directory:                           C:\c2m\java\jdk\jdk-17.0.18

       ONS JAR Directory:

       Web Application Server Home Directory:             C:\c2m\weblogic\14.1.2.jv.17\Oracle\Middleware\Oracle_Home\wlserver

       Additional JAR Directory:


 2. Keystore Options

       Import Keystore Directory:


50. Environment Installation Options

       Environment Mount Point:                           C:\c2m\ouaf

       Log Files Mount Point:                             C:\c2m\ouaf\sploutput

       Environment Name:                                  C2M2504

       Install Application Javadocs:                      true

       Install Sample CM Source Code:                     true


Each item in the above list should be configured for a successful install.



Enter P and proceed


*************************************

* Environment Configuration C2M2504 *

*************************************


 1. Environment Description

       Environment Description:                           c2m2504


 2. Business Application Server Configuration

       Business Server Host:                              localhost

       Business Server Application Name:                  SPLService


 3. Web Application Server Configuration

       Web Server Host:                                   localhost

       WebLogic SSL Port Number:                          7002

       WebLogic Console Port Number:                      7001

       Web Context Root:                                  ouaf


       WebLogic JNDI User ID:                             system

       WebLogic JNDI Password:                          ouafadmin1 (This should be same value as password for system user in Weblogic server. Put atleast one numeric value in password with more that 8 characters atleast. These limitations are present on weblogic side)


       WebLogic Server Name:                              AdminServer

       Web Server Application Name:                       SPLWeb

       This Is A Production Env. And The Client Is Live:  false

       Deploy Javadocs Module:                            true

       Enable The Unsecured Health Check Service:         false

       MDB RunAs User ID:                                 SYSUSER

       Super User Ids:


 4. Database Configuration

       Application Server Database User ID:               CISADM

       Application Server Database Password:            CISADM

       Batch Database User ID:                            CISADM

       Batch Database Password:                           CISADM

       Web JDBC DataSource Name:

       Database Name:                                     C2M2504

       Database Server:                                   localhost

       Database Port:                                     1521

       ONS Server Configuration:

       Database Override Connection String:

       Character Based Database:                          false

       Oracle Client Character Set NLS_LANG:              AMERICAN_AMERICA.AL32UTF8


 5. General Configuration Options

       Batch RMI Port:

       RMI Port number for JMX Business:

       RMI Port number for JMX Web:

       JMX Enablement System User ID:

       JMX Enablement System Password:

       Coherence Cluster Name:                            mycluster

       Coherence Cluster Address:                         localhost

       Coherence Cluster Port:                            6590

       Coherence Cluster Mode:                            dev


 6. OUAF TrustStore Options

       Import TrustStore Directory:


Each item in the above list should be configured for a successful install.


Choose option (1,2,3,4,5,6, <P> Process, <X> Exit):







Updating keystore:



1. Using configureEnv.cmd, re-enter the menu passwords to encrypt the data.

2. Run initialSetup.cmd to update property files with the encrypted data.



Next navigate to %SPLEBASE%/bin folder



Run splenviron.cmd -e C2M2504



Navigate back to bin folder

Run following commands



perl run_java_standalone.plx com.splwg.shared.common.ResetCryptographyKey



invokeDBUpdatePatch.cmd



Verify that both commands ran successfully.

This completes the configuration of OUAF keystore part of the installation



Installing other application components:



In case of no errors, proceed further with installing CCB, MDM, WAM and C2M module in that order.

Navigate to the corresponding folder in command prompt and execute the install.cmd file in each.

No need to change any values in the menu for these modules. Just enter P and process it.


 

Weblogic Domain Creation

Create the Domain

Navigate to the oracle_common\common\bin folder under the WebLogic install and run config.cmd as administrator. This opens the Fusion Middleware Configuration Wizard. Choose “Create a new domain” and set the domain location to a folder named c2m2504_domain (instead of the default base_domain), then step through Templates, Administrator Account, Domain Mode and JDK, and Advanced Configuration, accepting the defaults unless you have a specific requirement to change them.

Ensure restricted JRF template is selected.




Node Manager is not needed if you are installing the application on Weblogic AdminServer for development environment. For higher environments, you can install application on separate managed server. Then Node Manager is needed to be checked below.





C:\Users\sreen\Downloads\server_image_redacted.png

This completes creation of Weblogic Domain.

Configure setUserOverrides.cmd

Copy setUserOverrides.cmd from following location: C:\c2m\ouaf\C2M2504\tools\examples\bin



Copy below content into the file. Some updates were made to fix issues.

setUserOverrides.cmd

@echo off

REM

REM This is a WebLogic domain customized domain overide utility to ensure the appropriate environmental values are set for the domain startup

REM

REM


set USER_MEM_ARGS=-Xms6144m -Xmx6144m

set PERL5LIB=C:\c2m\ouaf\C2M2504\bin\perllib;%PERL5LIB%

set SPLEBASE=C:\c2m\ouaf\C2M2504


if "%SPLEBASE%" == "" (

   echo SPLEBASE needs to be set in environment

   exit /b 0

)


if "%TRUST_TYPE%" == "DEMO" (

   set "JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.security.TrustKeyStore=DemoTrust -Dweblogic.security.SSL.ignoreHostnameVerification=true"

)


if "%USER_MEM_ARGS%" == "" (

   set USER_MEM_ARGS=-Xms3072m -Xmx3072m

)




for /f %%I in ('call perl %SPLEBASE%\bin\getconfvalue.plx -k JAVA_VERSION_MAIN') do set JAVA_VERSION_MAIN=%%I

set JAVA_VERSION_MAIN=17

if "%JAVA_VERSION_MAIN%" == "17" (

   set JAVA_OPENS_ARGS=--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED

   set JAVA_SOAPMF_ARGS=-Djavax.xml.soap.MessageFactory=oracle.j2ee.ws.saaj.soap.MessageFactoryImpl

) else (

   set JAVA_SOAPMF_ARGS=-Djavax.xml.soap.MessageFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl

)


set "JAVA_OPTIONS=%JAVA_OPENS_ARGS% -XX:CompileThreshold=8000 -Djava.security.auth.login.config=%SPLEBASE%\splapp\config\java.login.config -Dfile.encoding=UTF8 %JAVA_SOAPMF_ARGS% -Djavax.xml.soap.SOAPConnectionFactory=weblogic.wsee.saaj.SOAPConnectionFactoryImpl -Dcom.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace=false -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\temp -Djava.net.preferIPv4Stack=true -Dweblogic.deploy.MaxPostSize=1610612736 %JAVA_OPTIONS%"


echo SPLEBASE %SPLEBASE%

echo SERVER_NAME %SERVER_NAME%



Start the WebLogic Admin Server




In this version of weblogic, you cannot access the weblogic admin server from browser. You need to access it through Weblogic Remote Console.


Weblogic Remote Console

Download and install weblogic Remote Console.

Next open weblogic remote console application







Connect to Admin Server as shown below. User name and password is same as weblogic admin server.


Admin home page opens up. It has mainly 4 views:

  • Edit Tree – Used for adding deployments

  • Configuration View Tree – Not used (Read only view of Edit Tree Configuration)

  • Monitoring Tree – Used for activating deployments

  • Security Tree – Used for adding users and groups

First step, search for jta in search window.

Click on the row, the JTA screen opens up



Next update the timeout to 600 instead of 30. This is needed for deploying SPLWeb ear file.


Next go to File -> settings 

Navigate to Networking inside settings page and update Administration server read timeout to 9000000


Create Users and Groups

Create cisusers group


Create SYSUSER user, with password sysuser00


Add SYSUSER to cisusers group

Next create system user. This user and password should be same as that input during CCS application installation.



Add system user to below groups

Restart the weblogic admin server after users are created.

Ear File Deployment


Deploy SPLService and SPLWeb

Create new deployment with name SPLService. In source select the SPLService.ear file from the location where application is installed. Set security model to Advanced.



Click on the cart at top right and commit the changes.


This takes some mintues. After it is done you should see a changes completed message.



Next do the same for SPLWeb. Set security model to Advanced.




Update the deployment order to 200

Next go to cart and commit changes.


On committing you should see a rotating wait sign. Wait for it to complete. Will take some minutes. Took me atleast 15 min with 6gb of allocated memory to weblogic server.



After both deployments are completed, navigate to Monitoring -> Deployments -> Application Management.

You should see both the SPLService and SPLWeb in Prepared state


Start the Applications

Next select SPLService and click on Start button



Select Servicing all requests



After step is completed, the status of the application is updated to Active.


Next do the same for SPLWeb, select and start application.

This should take some time. If you go to your weblogic admin server cmd prompt, you should see c2m configurations getting loaded.

Once all configs are loaded, you should see the application state changing to Active.


This completes the deployment of the ear files.

Test the Installation

Now to test the server, connect to the SSL port (7002). Non SSL port (7001) has some page loading issues.




As seen below C2M main page is successfully loaded. 

This completes the installation of C2M 25.4 on Windows64.

No comments:

Post a Comment

OUAF C2M 25.4 installation on Windows64

This blog is for anyone looking to installing Oracle C2M 25.4 on windows. Main changes observed in this installation compared to earlier ins...