Saturday, 26 September 2020

Oracle C2M - A product review (Developer's View)

This blog is aimed at sharing my views on the C2M product of Oracle. This is not highlight any shortcomings of the product or to discredit the product in anyways. It is just an opinion on what is good and what could be better in the product. 

I recently had the experience of completing an end to end C2M implementation project. Got good experience and working knowledge of C2M product. On completion of the project, did an evaluation of the product from an implementor/developer point of view and have shared my views of the same. 

 For people who do not have an idea of working with C2M, this new product of Oracle is a combination of different existing products of Oracle Utilities. These existing products include CC&B (Customer care and Billing), MDM (Meter Data Management), SOA (Service Order Management), ODM (Operational Device Management) and SGG (Smart Grid Gateway). A new layer of C2M has been built over these products to help these different underlying products interact seamlessly with each other. 

Technically speaking this integration of different products has been done by adding new algorithms on Audit plugin spots, synchronization objects and building common UI for common entities across products. Just to give an example, service point is common in CC&B, MDM and ODM. In C2M, on the backend, the database tables for service point is different corresponding to each product (CCB – CI_SP, MDM – D1_SP, ODM – W1_NODE). All tables are populated with the same data of a service point even if it increases redundant data. Algorithms are attached on Maintenance object audit spot to update the corresponding data in other product’s table whenever the data in one table is updated. Synchronization objects are also created to aid in this data synchronization across tables. Only one common UI map is made accessible to the user for service point. Any updates made on the UI map are synced to all the tables in the backend.

Things I was happy with in the new C2M product:
  • I have worked on both CC&B and MDM before. So my learning curve was less for C2M. I can easily pop into working directly on C2M knowing the underlying working of each product. So I would say someone who has worked before in CC&B or MDM would not face much difficulty in learning corresponding module in C2M as the underlying functionality is same. 
  • Reduction in synchronization integration and usage (bill determinant) integration points. These points generally involve a middleware to convert the requests, configuration of JMS queues and lot of testing to ensure the entire integration is working properly. Lot of integration  and testing effort was reduced in this area as CC&B and MDM are present in the same product. 
  • New products/modules like SOA (Field work management) and ODM (Operational device or Asset management) were easy to pick up and work on as they were based on OUAF Business lifecycle objects and not Cobol to Java converted Service programs like in CC&B. The learning curve is less if you have worked on pure OUAF java products like MDM, MWM etc. People coming from a pure CC&B side might face some difficulty here if they did not have much exposure on the OUAF java framework. 

Things I wish were better in the product: 
  • Too much redundant data present on the system. Merging of all these products by just adding a new layer on the top of multiple products has the big disadvantage of adding on redundant data in the system. Might be better if Oracle integrates these products at a database level instead of just adding an application layer at the top. This would improve performance of the system and also enable the system to scale up for an implementation having a large customer base.
  • Lot off unnecessary synchronization calls happening in the system just to sync of the data between different products. This increase the load on the system and creates lot of unnecessary algorithm calls in the system. 
  • Synchronization errors cause data to be just updated in one module and not in the other. E.g. Field activity got created in CC&B but did not get created in SOA due to some synchronization error. But took some time to identify that corresponding counterpart object in other module was not getting updated. This is not a one off error. Have seen this kind of synchronization errors coming up on multiple modules. These kind of errors are not easily identifiable as on the front end we see updated data. This is another disadvantage of having multiple synchronization happening in the system, just for updating an entity. One way to identify issues would be to monitor all synchronization objects getting created in the system and monitor any sync objects going to error status. Since there are lot of synchronization objects getting created, this would also be a cumbersome task. 
  • There are some unexpected errors coming up during working of the product primarily because these are different products stitched up to work together rather than one coherent product built from scratch. 
  • One thing I would like to see is replacement of entire Cobol to Java converted code in CC&B module to pure Java code. Even though oracle has removed the entire Cobol runtime from the framework, lot of out of box code are Cobol2Java converted codes. These codes are more like machine converted code and is not readable for a developer after decompiling. On the other hand, if it was just new Java code (not converted from Cobol) created from scratch it would be easier for a developer to understand how the out of box code works. This would need Oracle to completely rebuild the CC&B part of the product from scratch in Java and has a good chance of introducing new defects in the product. But I feel it would be advantageous in the long run. 
  • Redesign the entire CC&B part of the product and convert all plugins to business object lifecycle plugins like other newer modules. Currently there are lot of plugin spots which are just present at adhoc locations on the product. Only someone with a lot of experience in CC&B would have knowledge of all plugin spots. For a new person, this increases the learning curve as you need to go through Oracle documentation to understand functionality of each plugin spot. Also CC&B has lot of objects which cannot be converted into business objects as they support only legacy services for update. This causes lot of difficulty in extending the product. Due to no business object layer, customizations generally go down to Java changehandler for out of box entities. Also changes to front end is very difficult as they don't utilize UI maps. This puts restrictions on the developer for customizing the product. 

I understand that Oracle would have some limitations and reasons for the ways the product has been designed currently. These might be business reasons and also practical reasons for avoiding drastic changes in product from existing products that might prevent someone invested in CC&B for a long time in going for a new product. 

Possibly Oracle can think of redesigning the whole C2M product as a new product built purely in OUAF framework instead of it being an extension of existing products. This might impact existing CC&B developers who have vast experience in the CC&B product. But in the longer run, it would be better for everyone. The learning curve would be faster even if it is for a new product as it would be based on pure OUAF framework guidelines. This would also help it in adding new features to the product that might be limited by current legacy code.

Friday, 26 June 2020

OUAF C2M 2.7.0.3 installation on Windows64 - Part III - Deployment of C2M product in Weblogic using Native Installation

This blog is for anyone trying to install C2M or any similar OUAF product for evaluation purposes on Windows 64 OS. I have noted down the steps that I had taken for doing an installation of C2M 2.7.0.3 product on Windows 64bit OS. Have tried to highlight issues that came up. Also have mentioned the exact paths where the application has been installed. You can use the same OS paths wherever possible. This will help you in following the steps. Alternatively, if you wish to install the application in your desired location, make appropriate modifications in the paths while following the steps.

Since there are many steps for complete installation, I have divided it into three blogs instead of one single blog.
Part I - Download of Softwares and Installation of Prerequisites

This blog covers steps for Deployment of C2M product in Weblogic using Native Installation

(Kindly also refer my latest blog for using WLST to do native installation on weblogic. It helps to reduce the time taken as well as reduces any errors. Link to blog: Native installation using WLST)

I am assuming that you have already installed Weblogic software by following the instructions in Part I. These steps are subsequent to that.

Navigate to Oracle Weblogic Home

C:\c2m\Oracle\Middleware\Oracle_Home\oracle_common\common\bin
Run config.cmd with ‘Run as administrator’ option
Below configuration Wizard screen opens up.
Select Create a new domain
Update the domain location. Instead of base_domain, update it to c2m2703_domain

You can give any desired name for domain name.
Click on Next


In next step,
Basic Weblogic Server Domain would already be selected
Select Oracle Restricted JRF also [If this is not selected your application help screen (ohelp) won’t work]

Click on Next

In Administrator account screen
Enter username as 'weblogic'
Enter a password for your weblogic admin server
Click on next

Select Development
Select JDK that maps to your installed jdk earlier
Click on Next


On next screen,
Select Administration Server and Node Manager

Set Server name as AdminServer
You can name it as myserver also
Set listen port to 7001
Enable SSL
Set SSL port to 7002

Next on Node manager screen
Select per domain Default location
Enter same username and password as entered on administrator screen
Click on next


Next screen opens up
Click on Create button

Configuration process is visible. Once it is completed to 100%, click on Next.


As seen the new weblogic domain creation is completed.
The link for logging to admin server is visible.
Click on Finish and complete the configuration.


Next start the admin server. To do that open a command prompt with ‘Run as Administrator option’
Navigate to your domain location
C:\c2m\Oracle\Middleware\Oracle_Home\user_projects\domains\c2m2703_domain

Enter startWebLogic.cmd

Weblogic server should start up

Wait till you see the link Server state changed to RUNNING
Next open a browser window and enter you weblogic admin server link

http://localhost:7001/console

Enter username and password as defined in the administrator domain configuration earlier



Navigate to Machines link on the domain configuration




Click on New button.
Enter c2m2703mac in name field


Navigate to Servers and Click on New button

Click on Next

Click on Finish

c2m2703server is created and visible. Click on the server name link

Below configuration screen opens up
Select Machine as c2m703mac
Set Listen port as 6500
SSL port as 6501



Navigate to Server start tab



Set the following values in classpath. Put in single line. Don't use newline.

C:\c2m\ouaf\C2M2703\splapp\standalone\lib\xalan-mod-2.7.1.jar;C:\c2m\ouaf\C2M2703\splapp\standalone\lib\serializer-2.7.1.jar;C:\c2m\ouaf\C2M2703\splapp\standalone\lib\antlr-2.7.6.jar;C:\c2m\Oracle\Middleware\Oracle_Home\wlserver\server\lib\weblogic_sp.jar; C:\c2m\Oracle\Middleware\Oracle_Home\wlserver\server\lib\weblogic.jar

Set below value in arguments field. (We will see how to set this using setUserOverrides options later)
-Xms2048m -Xmx2048m -XX:PermSize=300m



Note*: For C2M 2.8.0.0 installation, set classpath to C:\c2m\ouaf\C2M2800\splapp\standalone\lib\antlr-2.7.7.jar;C:\c2m\weblogic\12.2.1.4.0\Oracle\Middleware\Oracle_Home\wlserver\server\lib\weblogic_sp.jar;C:\c2m\weblogic\12.2.1.4.0\Oracle\Middleware\Oracle_Home\wlserver\server\lib\weblogic.jar

Also set heap size to 3072 for C2M 2.8.0.0
-Xms3072m -Xmx3072m -XX:PermSize=512m


Navigate to XML Registries


Update the below parameters as defined below. Other values remain same.

Parameter

Setting

Document Builder Factory

com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

SAX Parser Factory 

com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

Transformer Factory

com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl


Set name as 'myxmlregistry'

Click on Next

Select the server as c2m2703server. And click on Finish button.

Xml registry is created

Next navigate to Security Realms and click on New button.

Create a new realm ‘myrealm’

Click on myrealm and open it

Navigate to Users and Group tab


Click on new button in Groups tab
Enter name 'cisusers'

Navigate to Configuration tab
Uncheck 'Combined Role Mapping enabled'


Navigate to myrealm-> Providers->Password Validation

Update minimum number of non-Alphabetic characters to 0


Navigate back to myrealm -> users and groups -> users

Click on new button

Enter 'system' in name
Password is 'ouafadmin'
Note* - This password has to be same as the one set during the application installation for 'WebLogic JNDI Password' parameter (Covered in Part 2 of blog series)


Click on 'system' user

Click on Groups tab

Update the group member ship as shown below. 'cisusers' should be added in Chosen

Click on Save button

Navigate back to myrealm -> Users and Groups -> Users
Click on New button


Enter 'SYSUSER' in name
And password as 'sysuser00'

Once user is created. Open the user and navigate to Groups tab
Add 'cisusers' in Chosen
Click on Save.

Now close the admin server. You can just close the command prompt window.

Set SPLBASE

Navigate to below location

C:\c2m\Oracle\Middleware\Oracle_Home\user_projects\domains\c2m2703_domain\bin

Open 'setDomainEnv.cmd' file

add the following line in the file

set SPLEBASE=C:\c2m\ouaf\C2M2703



Save the file and close it.


Next Go to C:\c2m\Oracle\Middleware\Oracle_Home\user_projects\domains\c2m2703_domain\bin

Open 'startWebLogic.cmd' file

Add below line in the file.

set MEM_ARGS=-Xms2048m -Xmx2048m

Save the file and close it.

This increases the assigned RAM memory of Weblogic Admin server to 2GB, this is needed as more memory is needed for deploying ear files of application. You can reset it after deployment has completed.


Next again start the admin server. Follow the steps to do the same

Open a command prompt with ‘Run as Administrator option’
Navigate to your domain location

C:\c2m\Oracle\Middleware\Oracle_Home\user_projects\domains\c2m2703_domain

Enter startWebLogic.cmd

Weblogic server should start up
Verify that the memory allocated on server startup is 2GB
Look for below arguments in the command prompt screen for verifying

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

*  To start WebLogic Server, use a username and   *

*  password assigned to an admin-level user.  For *

*  server administration, use the WebLogic Server *

*  console at http:\\hostname:port\console        *

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

Starting WLS with line:

C:\c2m\java\jdk\bin\java -server   -Xms2048m -Xmx2048m


Open the server from browser using the link http://localhost:7001/console

Navigate to the domain c2m2703_domain in domain structure on left side


Go to JTA tab

Set the timeout seconds to '86400'. This is needed because SPLWeb deployment takes a lot of time and we don’t want the deployment to timeout.

Next navigate to Deployments screen from domain structure



Click on Install button

Enter the following Path or navigate to following path in Path field

C:\c2m\ouaf\C2M2703\splapp\applications\SPLService.ear

Click on Next button

Select c2m2703server in targets and click on Next

Enter 'SPLService' in Name field

In Source Accessibility select Copy this application onto every target for me

Click on Next button


Select ‘Yes, take me to the deployment’s configuration screen’

Click on Finish button

Once deployment is complete

Enter ‘100’ in deployment order

This completes deployment of 'SPLService'

Deployment of SPLWeb

Again go to deployments and click on Install button
Put C:\c2m\ouaf\C2M2703\splapp\applications in Path field
Select 'SPLWeb.ear'
Click on Next button


This step will take a lot of time (around one hour)

On next screen select ‘Install this deployment as an application’


Select target as c2m2703server
Click on Next button

Enter name as 'SPLWeb'
In Source Accessibility select ‘Copy this application onto every target for me’
Click on Next button

Select ‘Yes, take me to the deployment’s configuration screen’
Click on Finish button

Enter ‘200’ in the deployment order


Help deployment

Do similar steps as earlier ears for ohelp.ear


Put deployment order as 100 for this. Order doesn’t matter for this.
This completes the deployment of application ear files on weblogic.

Starting C2M managed server


Now to start the managed server, first start the nodemanager.

To do that open a command prompt with ‘Run as Administrator option’
Navigate to your domain location\bin
C:\c2m\Oracle\Middleware\Oracle_Home\user_projects\domains\c2m2703_domain\bin

Run startNodeManager.cmd

This starts the nodemanager
Verify that the port is set to 5556 for nodemanager


Next navigate to Environment -> Servers

Go to Control tab

Select c2m2703server and click on start


Server will get started up.

You can verify the status of server startup by viewing the log files at following location

C:\c2m\Oracle\Middleware\Oracle_Home\user_projects\domains\c2m2703_domain\servers\c2m2703server\logs
(ORACLE_HOME\user_projects\domains\c2m2703_domain\servers\c2m2703server\logs)

The files c2m2703server.log and c2m2703server.out can be used to check the status of server. This can be used to check if any errors came up in server startup
Alternatively you can also check the framework product logs at following location
C:\c2m\ouaf\C2M2703\logs\system
(SPLEBASE\logs\system)

Once server has started up the state of the server changes to running.


You can login to your OUAF application (C2M) by entering the following url in your brower

https://localhost:6501/ouaf/loginPage.jsp

Enter 'SYSUSER' in userid

And 'sysuser00' in password

If everything has been proper you application should open up


This completes the installation of C2M application

Try it out. Let me know in case of any queries.

OUAF Oracle Utilities WAM / ODM 2.4.0.0 installation on Windows

  This blog is for anyone looking to install Oracle Utilities WAM or ODM 2.4.0.0 (Oracle Utilities Workflow and Asset Management) or (Orac...