diff --git a/VERSION b/VERSION
index 399088b..49c00f0 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1,2 @@
-2.1.6
+2.1.7
+
diff --git a/xos/coreapi/apihelper.py b/xos/coreapi/apihelper.py
index ae2102c..c394fc8 100644
--- a/xos/coreapi/apihelper.py
+++ b/xos/coreapi/apihelper.py
@@ -557,6 +557,8 @@
             q = Q(**{element.name + "__gt": value})
         elif element.operator == element.GREATER_THAN_OR_EQUAL:
             q = Q(**{element.name + "__gte": value})
+        elif element.operator == element.IEXACT:
+            q = Q(**{element.name + "__iexact": value})
         else:
             raise Exception("unknown operator")
 
diff --git a/xos/coreapi/protos/common.proto b/xos/coreapi/protos/common.proto
index f6b2940..5f82f7d 100644
--- a/xos/coreapi/protos/common.proto
+++ b/xos/coreapi/protos/common.proto
@@ -13,6 +13,7 @@
         LESS_THAN = 2;
         GREATER_THAN_OR_EQUAL = 3;
         LESS_THAN_OR_EQUAL = 4;
+        IEXACT = 5;
     }
     QueryOperator operator = 1;
     bool invert = 2;
diff --git a/xos/xos_client/xosapi/fake_stub.py b/xos/xos_client/xosapi/fake_stub.py
index 88a54b7..3cd8094 100644
--- a/xos/xos_client/xosapi/fake_stub.py
+++ b/xos/xos_client/xosapi/fake_stub.py
@@ -322,6 +322,7 @@
 
 class FakeElement(object):
     EQUAL="equal"
+    IEXACT="iexact"
 
     def __init__(self):
         pass
@@ -335,6 +336,12 @@
         self.items.append(el)
         return el
 
+    def __getitem__(self, index):
+        return self.items[index]
+
+    def __len__(self):
+        return len(self.items)
+
 class FakeQuery(object):
     DEFAULT="default"
 
diff --git a/xos/xos_client/xosapi/orm.py b/xos/xos_client/xosapi/orm.py
index 40af7dd..392dd84 100644
--- a/xos/xos_client/xosapi/orm.py
+++ b/xos/xos_client/xosapi/orm.py
@@ -469,6 +469,9 @@
             elif name.endswith("__lte"):
                 name = name[:-5]
                 el.operator = el.LESS_THAN_OR_EQUAL
+            elif name.endswith("__iexact"):
+                name = name[:-8]
+                el.operator = el.IEXACT
             else:
                 el.operator = el.EQUAL
 
diff --git a/xos/xos_client/xosapi/test_orm.py b/xos/xos_client/xosapi/test_orm.py
index 6006a52..ddeab89 100644
--- a/xos/xos_client/xosapi/test_orm.py
+++ b/xos/xos_client/xosapi/test_orm.py
@@ -21,6 +21,7 @@
 import string
 import sys
 import unittest
+from mock import patch
 
 # by default, use fake stub rather than real core
 USE_FAKE_STUB=True
@@ -454,6 +455,30 @@
             tm.intfile = None
         self.assertEqual(e.exception.message, "Setting a non-foreignkey field to None is not supported")
 
+    def test_query_iexact(self):
+        orm = self.make_coreapi()
+        with patch.object(orm.grpc_stub, "FilterTestModel", autospec=True) as filter:
+            orm.TestModel.objects.filter(name__iexact = "foo")
+            self.assertEqual(filter.call_count, 1)
+            q = filter.call_args[0][0]
+
+            self.assertEqual(q.kind, q.DEFAULT)
+            self.assertEqual(len(q.elements), 1)
+            self.assertEqual(q.elements[0].operator, q.elements[0].IEXACT)
+            self.assertEqual(q.elements[0].sValue, "foo")
+
+    def test_query_equal(self):
+        orm = self.make_coreapi()
+        with patch.object(orm.grpc_stub, "FilterTestModel", autospec=True) as filter:
+            orm.TestModel.objects.filter(name = "foo")
+            self.assertEqual(filter.call_count, 1)
+            q = filter.call_args[0][0]
+
+            self.assertEqual(q.kind, q.DEFAULT)
+            self.assertEqual(len(q.elements), 1)
+            self.assertEqual(q.elements[0].operator, q.elements[0].EQUAL)
+            self.assertEqual(q.elements[0].sValue, "foo")
+
 def main():
     global USE_FAKE_STUB
     global xos_grpc_client
