Block Chain Engement Model



Blockchain in Insurance Claims

via Blockchain

Blockchain is a distributed ledger initially used by Bitcoin cryptocurrency and eventually by many banking organizations to record transactions between parties with high security. It is start of Blockchain arena and it is anticipated to have a long sustainability and acceptability in various industries.

One of the biggest use cases in Insurance Industry is adoption of blockchain in claim processing. Insurance contracts involve various parties as agents, brokers, repair shops and third party administrators involving manual work and duplication at various stages of value chain. Using blockchain, verification of transactions will be done without any human intervention and making it completely automated process at various stages.

Benefits for using blockchain in claim processing –

  1. The distributed ledger allows various parties to update the information securely like updating claim forms, evidence, police report etc helping in reduction of loss adjusted (LAE) expenses.
  2. Fraud Detection – As blockchain maintains a ledger of multiple parties, it has ability to eliminate any errors and frauds. Blockchain technology using the high computing power authenticates the customers, policies and transactions.
  3. Payments – Claim payments can be made without any need of intermediary authority for transaction validations which helps in reducing the overall operational cost of claims processing.
  4. As this is highly secured transactions, multi review process will be eliminated resulting into speedy claim processing.

Logback is not writing specific log file Solution

Logback is not writing specific log file Solution
Logback Configuration:
<property name="DEV_HOME" value="/root/apps/logs" />
<appender name="FILE-AUDIT"     class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- or whenever the file size reaches the max -->

Issue is related to conflict between log4j and Logback, when we migrate from old log4j to Logback. You need to exclude lo4j dependencies from existing dependencies by running this command:

$ mvn dependency:tree

= >Add these jars only for logging using SLF4j and Logback




Posted detail issue on StackOverflow: 

Crawl and Index….. Nutch / elasticSearch – Partners in the making


In the internet era, there is an old tech saying – “Content is King”  (inspired by old Jungle saying from Phantom.. 🙂 )

One of the common challenges in content management system is to extract the latest information.  In the WWW world, it is commonly known as crawling.  The king of the crawler world is Apache nutch.

elasticsearch (no more just the new kid in town) has already established itself as one of the top search platforms.  It is only natural that companies are looking at using the both platforms together to achieve a better content management system specifically acquire, analyze, publish, search  phase.

Here’s a quick and dirty guide to get them up and running quickly.

1. Download nutch
3. Clean build
ant clean
4. Verify new local deploy created under NUTCH_HOME/rutime
5. Under bin sudirectory of local, create a new directory called urls
6. In urls create a new file called nutch.txt. Edit the file to add URLs to crawl
7. Enable crawler in conf/nutch-site.xml by adding the below lines within configuration tags
<value>My Nutch Spider</value>
8. Note the value and enter the same in conf/nutch-default.xml as the
value for <name></name>
9. Test by running the below command in local/bin

nutch crawl urls -dir /tmp -depth 2
Integrate Nutch and ES
1. Activate elasticsearch indexer plugin
Edit conf/nutch-site.xml

<description>Regular expression naming plugin directory names to
include. Any plugin not matching this expression is excluded.
In any case you need at least include the nutch-extensionpoints plugin. By
default Nutch includes crawling just HTML and plain text via HTTP,
and basic indexing and search plugins. In order to use HTTPS please enable
protocol-httpclient, but be aware of possible intermittent problems with the
underlying commons-httpclient library.

2. Verify and add ES specific properties to nutch-site.xlm

<!– Elasticsearch properties –>

<description>The hostname to send documents to using TransportClient. Either host
and port must be defined or cluster.</description>


<description>The cluster name to discover. Either host and potr must be defined
or cluster.</description>

<description>Default index to send documents to.</description>

<description>Maximum size of the bulk in number of documents.</description>

<description>Maximum size of the bulk in bytes.</description>

3. Create a new index in ES if it is not there already

curl -XPUT ‘http://localhost:9200/nutch/&#8217;

Java Code Quality


Most tech leads will readily admit that in large development projects, a major chunk of their effort goes towards ensuring good code quality.  With the increase in number of developers, there is greater need for standardization the code which is enforced in the form of adherence to certain code quality.  As a programming language, Java if fortunate enough to have several coding conventions defined by several companies including Oracle (Sun).  However every company or even individual projects within a company often supplement the general standard with it’s own set of custom guidelines, rules and conventions.

Just like everything else in life, it is a simpler matter to define standards / guidelines.  However it is an entirely different ball game to follow them.  For architects and tech leads it is a question of ensuring the adherence.  So, we are constantly on the lookout for efficient ways to accomplish this.  One of our favourite tools is the Sonar – Java static code analysis tool from Sonarqube.

Here are some quick steps on how to get up and running with Sonar on a Mac system.  Hope you find it useful.

Set up Sonar

Here’s a great link that i found

1. Download sonar into some directory
For eg /Users/madheshr/tools/sonar-3.7

2. Create the sonar schema on MySQL

3. Edit in the conf directory and make below changes

– Specify DB parameters
– Webhosting mechanism: default is

4. Create a startup script to start sonar
/Users/madheshr/tools/sonar-3.7/bin/macosx-universal-64/ start &
Analyzing a project using sonar-runner

1. Download sonar-runner and extract it

2. Edit conf/ to mention webserver name and DB name

Note: The default script has mismatched sonar schema names.
3. In the project home create a file Note it is case-sensitive
Also confirm the path from which java code starts. May not be the main src itself

# required metadata

# optional description
sonar.projectDescription=Admin utility for iRecon

# path to source directories (required)

# The value of the property must be the key of the language.

# Encoding of the source code

4. Run using command sonar-runner

As always, all the mistakes are mine and all the credits go to the open source community.


Apache Common Pool – Object pool example

Advantage of using object pool is to improve performance of the application by saving time to create new object from other source for the same purpose. Object pool creates once and reuse for other subsequent operations on the same object. You can customize other configuration settings. Please visit this URL for more info:

Step:1 Add this Maven jar dependency in your POM.xml


Step:2 Create Factory  Class

import java.util.Properties;

import org.apache.commons.pool.BasePoolableObjectFactory;
import org.springframework.stereotype.Component;

 * @author Rajiv Srivastava
 * Object pool factory
//Extend BasePoolableObjectFactory class.
public class ObjectPoolFactory extends BasePoolableObjectFactory<ConnClient> {

 // for makeObject we'll simply return a new object e.g: connection object
 public ConnClient makeObject() throws Exception {

 InputStream stream = null;
 // Create object code here for the first time. e.g: Create connection object from other integrated system component
 ConnClient connClient= new connClient();
 return connClient;

Step:3 Create Object Pool class and usage

import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.PoolableObjectFactory;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.springframework.stereotype.Component;

 * @author Rajiv Srivastava

public class ObjectPoolConnection {

    private ObjectPool<ConnClient> pool;

	ConnClient obj = null;

	public ConnClient getConnClient(){

		PoolableObjectFactory<ConnClient> factory = new ObjectPoolFactory();
	    pool = new GenericObjectPool<ConnClient>(factory);

	        try {
	                try {
	                		obj = (ConnClient)pool.borrowObject();
	                } catch (Exception e) {
	                	logger.error("failed to borrow object from Connection pool"+e.getMessage());
	                } finally {
	                    if (obj != null) {
	                        try {
							} catch (Exception e) {
			                	logger.error("failed to return object from Connection"+e.getMessage());
	        } finally {
	            try {
				} catch (Exception e) {
                	logger.error("failed to return pool"+e.getMessage());
	    	return obj;