diff --git a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/KafkaConfigManager.java b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/KafkaConfigManager.java
index aed8ba8..4b90b8e 100644
--- a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/KafkaConfigManager.java
+++ b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/KafkaConfigManager.java
@@ -24,7 +24,6 @@
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Deactivate;
 import org.osgi.service.component.annotations.Modified;
-import org.osgi.service.component.annotations.Property;
 import org.osgi.service.component.annotations.Reference;
 import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
@@ -34,8 +33,18 @@
 
 import static com.google.common.base.Strings.isNullOrEmpty;
 import static org.onlab.util.Tools.get;
+import static org.onosproject.kafkaintegration.kafka.OsgiPropertyConstants.*;
 
-@Component(immediate = true, service = KafkaConfigService.class)
+@Component(immediate = true, service = KafkaConfigService.class,
+        property = {
+                BOOTSTRAP_SERVERS + "=" + BOOTSTRAP_SERVERS_DEFAULT,
+                RETRIES + ":Integer=" + RETRIES_DEFAULT,
+                MAX_IN_FLIGHT + ":Integer=" + MAX_IN_FLIGHT_DEFAULT,
+                REQUIRED_ACKS + ":Integer=" + REQUIRED_ACKS_DEFAULT,
+                KEY_SERIALIZER + "=" + KEY_SERIALIZER_DEFAULT,
+                VALUE_SERIALIZER + "=" + VALUE_SERIALIZER_DEFAULT,
+        }
+)
 public class KafkaConfigManager implements KafkaConfigService {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
@@ -46,45 +55,22 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected KafkaPublisherAdminService kafkaPublisherAdminService;
 
-    public static final String BOOTSTRAP_SERVERS = "localhost:9092";
-    private String kafkaServerIp =
-            BOOTSTRAP_SERVERS.substring(0, BOOTSTRAP_SERVERS.indexOf(":"));
-    private String kafkaServerPortNum =
-            BOOTSTRAP_SERVERS.substring(BOOTSTRAP_SERVERS.indexOf(":") + 1,
-                                        BOOTSTRAP_SERVERS.length());
+    /** Default IP/Port pair to establish initial connection to Kafka cluster. */
+    protected String bootstrapServers = BOOTSTRAP_SERVERS_DEFAULT;
 
-    private static final int RETRIES = 1;
-    private static final int MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION = 5;
-    private static final int REQUEST_REQUIRED_ACKS = 1;
-    private static final String KEY_SERIALIZER =
-            "org.apache.kafka.common.serialization.StringSerializer";
-    private static final String VALUE_SERIALIZER =
-            "org.apache.kafka.common.serialization.ByteArraySerializer";
+    /** Number of times the producer can retry to send after first failure. */
+    protected int retries = RETRIES_DEFAULT;
 
-    @Property(name = "bootstrap.servers", value = BOOTSTRAP_SERVERS,
-            label = "Default IP/Port pair to establish initial connection to Kafka cluster.")
-    protected String bootstrapServers = BOOTSTRAP_SERVERS;
+    /** The maximum number of unacknowledged requests the client will send before blocking. */
+    protected int maxInFlightRequestsPerConnection = MAX_IN_FLIGHT_DEFAULT;
 
-    @Property(name = "retries", intValue = RETRIES,
-            label = "Number of times the producer can retry to send after first failure")
-    protected int retries = RETRIES;
+    /** Producer will get an acknowledgement after the leader has replicated the data. */
+    protected int requestRequiredAcks = REQUIRED_ACKS_DEFAULT;
 
-    @Property(name = "max.in.flight.requests.per.connection",
-            intValue = MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION,
-            label = "The maximum number of unacknowledged requests the client will send before blocking")
-    protected int maxInFlightRequestsPerConnection =
-            MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION;
+    /** Serializer class for key that implements the Serializer interface. */
+    protected String keySerializer = KEY_SERIALIZER_DEFAULT;
 
-    @Property(name = "request.required.acks", intValue = 1,
-            label = "Producer will get an acknowledgement after the leader has replicated the data")
-    protected int requestRequiredAcks = REQUEST_REQUIRED_ACKS;
-
-    @Property(name = "key.serializer", value = KEY_SERIALIZER,
-            label = "Serializer class for key that implements the Serializer interface.")
-    protected String keySerializer = KEY_SERIALIZER;
-
-    @Property(name = "value.serializer", value = VALUE_SERIALIZER,
-            label = "Serializer class for value that implements the Serializer interface.")
+    /** Serializer class for value that implements the Serializer interface. */
     protected String valueSerializer = VALUE_SERIALIZER;
 
     @Activate
@@ -104,13 +90,12 @@
     @Modified
     private void modified(ComponentContext context) {
         if (context == null) {
-            bootstrapServers = BOOTSTRAP_SERVERS;
-            retries = RETRIES;
-            maxInFlightRequestsPerConnection =
-                    MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION;
-            requestRequiredAcks = REQUEST_REQUIRED_ACKS;
-            keySerializer = KEY_SERIALIZER;
-            valueSerializer = VALUE_SERIALIZER;
+            bootstrapServers = BOOTSTRAP_SERVERS_DEFAULT;
+            retries = RETRIES_DEFAULT;
+            maxInFlightRequestsPerConnection = MAX_IN_FLIGHT_DEFAULT;
+            requestRequiredAcks = REQUIRED_ACKS_DEFAULT;
+            keySerializer = KEY_SERIALIZER_DEFAULT;
+            valueSerializer = VALUE_SERIALIZER_DEFAULT;
             return;
         }
 
@@ -121,20 +106,20 @@
         int newMaxInFlightRequestsPerConnection;
         int newRequestRequiredAcks;
         try {
-            String s = get(properties, "bootstrap.servers");
+            String s = get(properties, BOOTSTRAP_SERVERS);
             newBootstrapServers =
                     isNullOrEmpty(s) ? bootstrapServers : s.trim();
 
-            s = get(properties, "retries");
+            s = get(properties, RETRIES);
             newRetries =
                     isNullOrEmpty(s) ? retries : Integer.parseInt(s.trim());
 
-            s = get(properties, "max.in.flight.requests.per.connection");
+            s = get(properties, MAX_IN_FLIGHT);
             newMaxInFlightRequestsPerConnection =
                     isNullOrEmpty(s) ? maxInFlightRequestsPerConnection
                                      : Integer.parseInt(s.trim());
 
-            s = get(properties, "request.required.acks");
+            s = get(properties, REQUIRED_ACKS);
             newRequestRequiredAcks =
                     isNullOrEmpty(s) ? requestRequiredAcks
                                      : Integer.parseInt(s.trim());
@@ -147,11 +132,10 @@
                            newMaxInFlightRequestsPerConnection,
                            newRequestRequiredAcks)) {
             bootstrapServers = newBootstrapServers;
-            kafkaServerIp = bootstrapServers
+            String kafkaServerIp = bootstrapServers
                     .substring(0, bootstrapServers.indexOf(":"));
-            kafkaServerPortNum = bootstrapServers
-                    .substring(bootstrapServers.indexOf(":") + 1,
-                               bootstrapServers.length());
+            String kafkaServerPortNum = bootstrapServers
+                    .substring(bootstrapServers.indexOf(":") + 1);
 
             retries = newRetries;
 
@@ -191,11 +175,8 @@
 
     @Override
     public KafkaServerConfig getConfigParams() {
-        String ipAddr =
-                bootstrapServers.substring(0, bootstrapServers.indexOf(":"));
-        String port =
-                bootstrapServers.substring(bootstrapServers.indexOf(":") + 1,
-                                           bootstrapServers.length());
+        String ipAddr = bootstrapServers.substring(0, bootstrapServers.indexOf(":"));
+        String port = bootstrapServers.substring(bootstrapServers.indexOf(":") + 1);
 
         return KafkaServerConfig.builder().ipAddress(ipAddr).port(port)
                 .numOfRetries(retries)
diff --git a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/OsgiPropertyConstants.java b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/OsgiPropertyConstants.java
new file mode 100644
index 0000000..5e207e3
--- /dev/null
+++ b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/kafka/OsgiPropertyConstants.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.kafkaintegration.kafka;
+
+/**
+ * Constants for default values of configurable properties.
+ */
+public final class OsgiPropertyConstants {
+    private OsgiPropertyConstants() {
+    }
+
+    static final String BOOTSTRAP_SERVERS = "bootstrapServers";
+    static final String BOOTSTRAP_SERVERS_DEFAULT = "localhost:9092";
+
+    static final String RETRIES = "retries";
+    static final int RETRIES_DEFAULT = 1;
+
+    static final String MAX_IN_FLIGHT = "maxInFlightRequestsPerConnection";
+    static final int MAX_IN_FLIGHT_DEFAULT = 5;
+
+    static final String REQUIRED_ACKS = "requestRequiredAcks";
+    static final int REQUIRED_ACKS_DEFAULT = 1;
+
+    static final String KEY_SERIALIZER = "keySerializer";
+    static final String KEY_SERIALIZER_DEFAULT = "org.apache.kafka.common.serialization.StringSerializer";
+
+    static final String VALUE_SERIALIZER = "valueSerializer";
+    static final String VALUE_SERIALIZER_DEFAULT = "org.apache.kafka.common.serialization.ByteArraySerializer";
+
+}
diff --git a/docs/BUILD b/docs/BUILD
index 39693ab..7e10736 100644
--- a/docs/BUILD
+++ b/docs/BUILD
@@ -14,7 +14,7 @@
     "//core/store/primitives:onos-core-primitives-sources",
     "//core/store/serializers:onos-core-serializers-sources",
     "//core/store/dist:onos-core-dist-sources",
-    "//core/security:onos-security-sources",
+    # "//core/security:onos-security-sources",
     "//core/store/persistence:onos-core-persistence-sources",
     "//incubator/net:onos-incubator-net-sources",
     "//incubator/store:onos-incubator-store-sources",
@@ -156,8 +156,8 @@
         "org.onosproject.json",
         "org.onosproject.json.*",
         "org.onosproject.common.*",
-        "org.onosproject.security.impl",
-        "org.onosproject.security.store",
+        # "org.onosproject.security.impl",
+        # "org.onosproject.security.store",
     ],
     "Distributed Stores": [
         "org.onosproject.store.*",
diff --git a/tools/build/bazel/modules.bzl b/tools/build/bazel/modules.bzl
index dfa5cfe..2c3176d 100644
--- a/tools/build/bazel/modules.bzl
+++ b/tools/build/bazel/modules.bzl
@@ -242,7 +242,7 @@
     "//apps/powermanagement:onos-apps-powermanagement-oar",
     "//apps/t3:onos-apps-t3-oar",
     "//apps/simplefabric:onos-apps-simplefabric-oar",
-    #"//apps/kafka-integration:onos-apps-kafka-integration-oar",
+    "//apps/kafka-integration:onos-apps-kafka-integration-oar",
     "//apps/rabbitmq:onos-apps-rabbitmq-oar",
     "//apps/odtn/api:onos-apps-odtn-api-oar",
     "//apps/odtn/service:onos-apps-odtn-service-oar",
@@ -298,8 +298,8 @@
     "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr",
     "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr",
     "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb",
-    #"//apps/kafka-integration/api:onos-apps-kafka-integration-api",
-    #"//apps/kafka-integration/app:onos-apps-kafka-integration-app",
+    "//apps/kafka-integration/api:onos-apps-kafka-integration-api",
+    "//apps/kafka-integration/app:onos-apps-kafka-integration-app",
 ]
 
 FEATURES = [
