diff --git a/agents-audit/pom.xml b/agents-audit/pom.xml
index 8ac1edf4f6..eeeaddc038 100644
--- a/agents-audit/pom.xml
+++ b/agents-audit/pom.xml
@@ -102,6 +102,12 @@
guava
${google.guava.version}
+
+ org.apache.solr
+ solr-core
+ 7.7.1
+ compile
+
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java b/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java
index 7631e5882e..0bbeb46971 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java
@@ -27,15 +27,15 @@
import org.apache.ranger.audit.provider.MiscUtil;
import org.apache.ranger.audit.utils.InMemoryJAASConfiguration;
import org.apache.ranger.audit.utils.SolrAppUtil;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
-import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder;
-import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder;
-import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrInputDocument;
+import org.apache.ranger.index.solr.SolrClient;
+import org.apache.ranger.index.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.ranger.index.solr.client.solrj.impl.HttpClientUtil;
+import org.apache.ranger.index.solr.client.solrj.impl.Krb5HttpClientBuilder;
+import org.apache.ranger.index.solr.client.solrj.impl.SolrHttpClientBuilder;
+import org.apache.ranger.index.solr.client.solrj.impl.LBHttpSolrClient;
+import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse;
+import org.apache.ranger.index.solr.common.SolrException;
+import org.apache.ranger.index.solr.common.SolrInputDocument;
import java.io.File;
import java.io.FileInputStream;
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java b/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java
index dac006c6e3..1c4fe9f4cc 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java
@@ -32,10 +32,10 @@
import org.apache.ranger.audit.model.AuthzAuditEvent;
import org.apache.ranger.audit.provider.MiscUtil;
import org.apache.ranger.audit.utils.SolrAppUtil;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
+import org.apache.ranger.index.solr.client.solrj.SolrClient;
+import org.apache.ranger.index.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse;
+import org.apache.ranger.index.solr.common.SolrInputDocument;
public class SolrAuditProvider extends AuditDestination {
private static final Log LOG = LogFactory.getLog(SolrAuditProvider.class);
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java b/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java
index 5cb8b1be1f..3850f48c1b 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java
@@ -20,9 +20,10 @@
package org.apache.ranger.audit.utils;
import org.apache.ranger.audit.provider.MiscUtil;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
+import org.apache.ranger.index.solr.SolrClient;
+import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse;
+import org.apache.ranger.index.solr.common.SolrException;
+import org.apache.ranger.index.solr.common.SolrInputDocument;
import java.security.PrivilegedExceptionAction;
import java.util.Collection;
diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/SolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/SolrClient.java
new file mode 100644
index 0000000000..e3e14e7332
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/SolrClient.java
@@ -0,0 +1,22 @@
+package org.apache.ranger.index.solr;
+
+import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse;
+import org.apache.ranger.index.solr.common.SolrInputDocument;
+import org.apache.solr.client.solrj.SolrServerException;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+public class SolrClient {
+ public final org.apache.solr.client.solrj.SolrClient inner;
+
+ public SolrClient(org.apache.solr.client.solrj.SolrClient inner) {
+ this.inner = inner;
+ }
+
+ public UpdateResponse add(Collection docs) throws IOException, SolrServerException {
+ return new UpdateResponse(inner.add(docs.stream().map(x->x.inner).collect(Collectors.toList())));
+ }
+
+}
diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrClient.java
new file mode 100644
index 0000000000..2ec7ea4bf8
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrClient.java
@@ -0,0 +1,30 @@
+package org.apache.ranger.index.solr.client.solrj;
+
+import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse;
+import org.apache.ranger.index.solr.common.SolrInputDocument;
+import org.apache.solr.client.solrj.SolrServerException;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+public class SolrClient extends org.apache.ranger.index.solr.SolrClient {
+ public final org.apache.solr.client.solrj.SolrClient inner;
+
+ public SolrClient(org.apache.solr.client.solrj.SolrClient inner) {
+ super(inner);
+ this.inner = inner;
+ }
+
+ public UpdateResponse add(Collection docs) throws IOException, SolrServerException {
+ return new UpdateResponse(inner.add(docs.stream().map(x->x.inner).collect(Collectors.toList())));
+ }
+
+ public void close() throws IOException {
+ inner.close();
+ }
+
+ public UpdateResponse add(SolrInputDocument document) throws IOException, SolrServerException {
+ return new UpdateResponse(inner.add(document.inner));
+ }
+}
diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrQuery.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrQuery.java
new file mode 100644
index 0000000000..bd250e7eec
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrQuery.java
@@ -0,0 +1,48 @@
+package org.apache.ranger.index.solr.client.solrj;
+
+public class SolrQuery {
+ public final org.apache.solr.client.solrj.SolrQuery inner;
+
+ public SolrQuery(org.apache.solr.client.solrj.SolrQuery inner) {
+ this.inner = inner;
+ }
+
+ public SolrQuery() {
+ this(new org.apache.solr.client.solrj.SolrQuery());
+ }
+
+ public void setQuery(String s) {
+ inner.setQuery(s);
+ }
+
+ public void addFilterQuery(String fq) {
+ inner.addFilterQuery(fq);
+ }
+
+ public void setStart(int startIndex) {
+ inner.setStart(startIndex);
+ }
+
+ public void setRows(int maxRows) {
+ inner.setRows(maxRows);
+ }
+
+ public void addSort(String querySortBy, ORDER order) {
+ inner.addSort(querySortBy, order.inner);
+ }
+
+ public void setRequestHandler(String queryStr) {
+ inner.setRequestHandler(queryStr);
+ }
+
+ public enum ORDER {
+ asc(org.apache.solr.client.solrj.SolrQuery.ORDER.asc),
+ desc(org.apache.solr.client.solrj.SolrQuery.ORDER.desc);
+
+ public final org.apache.solr.client.solrj.SolrQuery.ORDER inner;
+
+ ORDER(org.apache.solr.client.solrj.SolrQuery.ORDER inner) {
+ this.inner = inner;
+ }
+ }
+}
diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrRequest.java
new file mode 100644
index 0000000000..b3c62b03b8
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrRequest.java
@@ -0,0 +1,13 @@
+package org.apache.ranger.index.solr.client.solrj;
+
+public class SolrRequest {
+ public enum METHOD {
+ POST(org.apache.solr.client.solrj.SolrRequest.METHOD.POST);
+
+ public final org.apache.solr.client.solrj.SolrRequest.METHOD inner;
+
+ METHOD(org.apache.solr.client.solrj.SolrRequest.METHOD post) {
+ inner = post;
+ }
+ }
+}
diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrResponse.java
new file mode 100644
index 0000000000..9aa75993e1
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrResponse.java
@@ -0,0 +1,16 @@
+package org.apache.ranger.index.solr.client.solrj;
+
+import org.apache.ranger.index.solr.common.util.NamedList;
+import org.apache.solr.client.solrj.response.CollectionAdminResponse;
+
+public class SolrResponse {
+ private final org.apache.solr.client.solrj.SolrResponse inner;
+
+ public SolrResponse(org.apache.solr.client.solrj.SolrResponse process) {
+ this.inner = process;
+ }
+
+ public NamedList