diff --git a/iga/__init__.py b/iga/__init__.py
index 380fb6f421159812100e0371b468707c88a52d0c..a954dc8065ef289285aca40ce028ae2900da338b 100644
--- a/iga/__init__.py
+++ b/iga/__init__.py
@@ -1,8 +1,8 @@
-from .uib import UibSebra
+from .uib import UibRiScim
 from .uio import UioCerebrum
 
 
 def get_iga_client(instance, config):
     if instance == "uib":
-        return UibSebra(config)
+        return UibRiScim(config)
     return UioCerebrum(config)
diff --git a/iga/tests/test_uib.py b/iga/tests/test_uib.py
index 74d09edabe093b6feee54c785112135cc7a28994..d6c57f347c86ce994aaf7b628bcbc58fb453d918 100644
--- a/iga/tests/test_uib.py
+++ b/iga/tests/test_uib.py
@@ -1,71 +1,89 @@
+import copy
+
 from greg.models import Identity
 from ..iga import IgaPerson
-from ..uib import UibSebra
-
+from ..uib import UibRiScim
 
-UIB_USERS = {
-    "Resources": [
+UIB_SEARCH = {
+  "schemas": [
+    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
+  ],
+  "totalResults": 1,
+  "startIndex": 1,
+  "itemsPerPage": 1,
+  "Resources": [
+    {
+      "schemas": [
+        "urn:ietf:params:scim:schemas:core:2.0:User",
+        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
+        "no:edu:scim:user"
+      ],
+      "id": "",
+      "externalId": "",
+      "userName": "",
+      "displayName": "Ruth Pedersen",
+      "profileUrl": "",
+      "title": "",
+      "userType": "Employee",
+      "preferredLanguage": None,
+      "active": True,
+      "emails": [
         {
-            "id": "1",
+          "value": "",
+          "type": "work"
         }
-    ]
-}
-UIB_SEARCH = {
-    "schemas": [""],
-    "id": 1,
-    "meta": {
-        "created": "2020-11-04T07:35:18Z",
-        "lastModified": "2020-11-04T07:35:18Z",
-        "resourceType": "User",
-    },
-    "username": "",
-    "active": True,
-    "no:edu:scim:user": {
+      ],
+      "phoneNumbers": [],
+      "roles": [
+        {
+          "value": "iam:employee"
+        },
+        {
+          "value": "iam:operation"
+        }
+      ],
+      "no:edu:scim:user": {
         "accountType": "primary",
         "employeeNumber": "102160",
         "eduPersonPrincipalName": "ruped001@uib.no",
         "userPrincipalName": "Ruth.Pedersen@uibtest.no",
-    },
+      },
+    }
+  ]
 }
 
 
+
 def test_uib_search(requests_mock):
     """Regular search works as expected"""
-    requests_mock.get(
-        "http://example.com/sebra/Users?norEduPersonNIN=1",
-        json=UIB_USERS,
-    )
-    uib_search_wname = UIB_SEARCH.copy()
-    uib_search_wname["name"] = {
+    uib_search_wname = copy.deepcopy(UIB_SEARCH)
+    uib_search_wname["Resources"][0]["name"] = {
         "formatted": "Ruth Pedersen",
         "givenName": "Ruth",
         "familyName": "Pedersen",
     }
+
     requests_mock.get(
-        "http://example.com/sebra/Users/1",
+        "https://example.com/scim/Users?norEduPersonNIN=1",
         json=uib_search_wname,
     )
 
-    client = UibSebra({"url": "http://example.com/sebra/", "headers": {"bar": "baz"}})
-    assert not client.extid_search(Identity.IdentityType.PASSPORT_NUMBER, 1)
+    client = UibRiScim({"url": "https://example.com/scim", "headers": {"bar": "baz"}})
+    assert not client.extid_search(Identity.IdentityType.PASSPORT_NUMBER, "1")
     assert client.extid_search(
-        Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER, 1
+        Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER, "1"
     ) == IgaPerson(first="Ruth", last="Pedersen")
 
 
 def test_uib_search_nameless(requests_mock):
     """Nameless people can be also be found"""
     requests_mock.get(
-        "http://example.com/sebra/Users?norEduPersonNIN=1",
-        json=UIB_USERS,
-    )
-    requests_mock.get(
-        "http://example.com/sebra/Users/1",
+        "https://example.com/scim/Users?norEduPersonNIN=1",
         json=UIB_SEARCH,
     )
 
-    client = UibSebra({"url": "http://example.com/sebra/", "headers": {"bar": "baz"}})
-    assert not client.extid_search(Identity.IdentityType.PASSPORT_NUMBER, 1)
+    client = UibRiScim({"url": "https://example.com/scim", "headers": {"bar": "baz"}})
+    assert not client.extid_search(Identity.IdentityType.PASSPORT_NUMBER, "1")
     assert client.extid_search(
-        Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER, 1
+        Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER, "1"
     ) == IgaPerson(first=None, last=None)
diff --git a/iga/uib.py b/iga/uib.py
index 3ba8b8991ab96a136b762a779f54f5ca5fad9d2e..2e923e8f33b5897e23e3614b5a8a583b5b320357 100644
--- a/iga/uib.py
+++ b/iga/uib.py
@@ -1,30 +1,46 @@
 from typing import Optional
-from scim_client import ScimClient
-from scim_client.models import User
 
-from greg.models import Identity
+import structlog
+from abstract_iga_client.iga_scim_ri_uib import IgaClient, IgaAbstract, UserListResponse
+from scim2_client import user_query_request
 
+from greg.models import Identity
 from .iga import IgaImplementation, IgaPerson
 
+logger = structlog.getLogger(__name__)
+
 
-class UibSebra(IgaImplementation):
+class UibRiScim(IgaImplementation):
     def __init__(self, config) -> None:
-        self.client = ScimClient(**config)
+        self.client: IgaClient = IgaAbstract.get_iga_client(
+            "scim-ri@uib",
+            endpoints={"base_url": config["url"]},
+            headers=config["headers"])
         self.idtype_methodmap = {
-            Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER: self.client.get_by_nin,
+            Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER: lambda nor_edu_person_nin: self.client.client(
+                user_query_request(extra_parameters={"norEduPersonNIN": nor_edu_person_nin})).payload,
             Identity.IdentityType.PASSPORT_NUMBER: None,  # not supported by uib scim
         }
 
     def extid_search(
-        self, id_type: Identity.IdentityType, extid: str
+            self, id_type: Identity.IdentityType, extid: str
     ) -> Optional[IgaPerson]:
         search = self.idtype_methodmap.get(id_type)
+
         if not search:
             return None
-        user: User = search(extid)
-        if not user:
+        user: UserListResponse = search(extid)
+        if len(user.resources) == 0:
             return None
+
+        if len(user.resources) > 1:
+            # Not expected that this should happen
+            logger.warning("Multiple hits found when searching in RI SCIM for {}".format(extid))
+
+        # Return the first user found
         return IgaPerson(
-            first=user.name.given_name if user.name else None,
-            last=user.name.family_name if user.name else None,
+            first=user.resources[0].name.given_name if user.resources[0].name and user.resources[
+                0].name.given_name else None,
+            last=user.resources[0].name.family_name if user.resources[0].name and user.resources[
+                0].name.family_name else None,
         )
diff --git a/poetry.lock b/poetry.lock
index 22a7a71a6314defff0bec0da9ba688bcac039cf9..a8653b0da944dfdc09fc4dbfbb0374090c429b3d 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,3 +1,26 @@
+[[package]]
+name = "abstract-iga-client"
+version = "1.0.2"
+description = "Abstraction layer to interact with IGA clients"
+category = "main"
+optional = false
+python-versions = "^3.7"
+develop = false
+
+[package.dependencies]
+cerebrum-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/cerebrum-client.git", rev = "v1.9.2"}
+ntnu-tia-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/ntnu-tia-client.git", rev = "v0.1.0"}
+pydantic = "^1.4"
+requests = "^2.25.0"
+scim-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/scim-client.git", rev = "v0.2.1"}
+scim2-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/scim2-client.git", rev = "v3.0.1"}
+
+[package.source]
+type = "git"
+url = "https://git.app.uib.no/it-bott-integrasjoner/abstract-iga-client.git"
+reference = "v1.0.2"
+resolved_reference = "8ce26e08ada49ad6b427a5a90016f54f29dcb688"
+
 [[package]]
 name = "ansicon"
 version = "1.89.0"
@@ -34,7 +57,7 @@ optional = false
 python-versions = ">=3.7"
 
 [package.extras]
-tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"]
+tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
 
 [[package]]
 name = "astroid"
@@ -46,6 +69,7 @@ python-versions = ">=3.6.2"
 
 [package.dependencies]
 lazy-object-proxy = ">=1.4.0"
+setuptools = ">=20.0"
 typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""}
 wrapt = ">=1.11,<1.14"
 
@@ -80,10 +104,10 @@ optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
-docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
+dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"]
+docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
+tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "zope.interface"]
+tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six"]
 
 [[package]]
 name = "backcall"
@@ -130,7 +154,7 @@ wcwidth = ">=0.1.4"
 
 [[package]]
 name = "cachetools"
-version = "5.0.0"
+version = "5.2.0"
 description = "Extensible memoizing collections and decorators"
 category = "main"
 optional = false
@@ -252,12 +276,12 @@ python-versions = ">=3.6"
 cffi = ">=1.12"
 
 [package.extras]
-docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
-docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
+docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx_rtd_theme"]
+docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"]
 pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
 sdist = ["setuptools_rust (>=0.11.4)"]
 ssh = ["bcrypt (>=3.1.5)"]
-test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
+test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"]
 
 [[package]]
 name = "decorator"
@@ -366,9 +390,9 @@ django-picklefield = ">=3.0.1,<4.0.0"
 redis = ">=3.5.3,<4.0.0"
 
 [package.extras]
-testing = ["hiredis (>=1.0.1,<2.0.0)", "psutil (>=5.7.0,<6.0.0)", "django-redis (>=4.12.1,<5.0.0)", "iron-mq (>=0.9,<0.10)", "boto3 (>=1.14.12,<2.0.0)", "pymongo (>=3.10.1,<4.0.0)", "croniter (>=0.3.34,<0.4.0)"]
 rollbar = ["django-q-rollbar (>=0.1)"]
 sentry = ["django-q-sentry (>=0.1)"]
+testing = ["boto3 (>=1.14.12,<2.0.0)", "croniter (>=0.3.34,<0.4.0)", "django-redis (>=4.12.1,<5.0.0)", "hiredis (>=1.0.1,<2.0.0)", "iron-mq (>=0.9,<0.10)", "psutil (>=5.7.0,<6.0.0)", "pymongo (>=3.10.1,<4.0.0)"]
 
 [[package]]
 name = "django-reversion"
@@ -533,6 +557,7 @@ pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
 pickleshare = "*"
 prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
 pygments = "*"
+setuptools = ">=18.5"
 stack-data = "*"
 traitlets = ">=5"
 
@@ -542,11 +567,11 @@ doc = ["Sphinx (>=1.3)"]
 kernel = ["ipykernel"]
 nbconvert = ["nbconvert"]
 nbformat = ["nbformat"]
-notebook = ["notebook", "ipywidgets"]
+notebook = ["ipywidgets", "notebook"]
 parallel = ["ipyparallel"]
 qtconsole = ["qtconsole"]
-test = ["pytest", "pytest-asyncio", "testpath", "pygments"]
-test_extra = ["pytest", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pygments", "trio"]
+test = ["pygments", "pytest", "pytest-asyncio", "testpath"]
+test_extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pygments", "pytest", "testpath", "trio"]
 
 [[package]]
 name = "isort"
@@ -557,10 +582,10 @@ optional = false
 python-versions = ">=3.6.1,<4.0"
 
 [package.extras]
-pipfile_deprecated_finder = ["pipreqs", "requirementslib"]
-requirements_deprecated_finder = ["pipreqs", "pip-api"]
 colors = ["colorama (>=0.4.3,<0.5.0)"]
+pipfile_deprecated_finder = ["pipreqs", "requirementslib"]
 plugins = ["setuptools"]
+requirements_deprecated_finder = ["pip-api", "pipreqs"]
 
 [[package]]
 name = "itypes"
@@ -621,11 +646,12 @@ python-versions = ">=3.6"
 [package.dependencies]
 cryptography = ">=1.5"
 PyOpenSSL = ">=0.13"
+setuptools = ">=1.0"
 
 [package.extras]
 dev = ["pytest", "tox"]
 docs = ["Sphinx (>=1.0)", "sphinx-rtd-theme (>=1.0)"]
-tests = ["coverage (>=4.0)", "flake8 (<4)", "mypy", "pytest-cov", "pytest-flake8 (>=0.5)", "pytest (>=2.8.0)", "types-pyopenssl", "types-pyrfc3339", "types-requests", "types-setuptools"]
+tests = ["coverage (>=4.0)", "flake8 (<4)", "mypy", "pytest (>=2.8.0)", "pytest-cov", "pytest-flake8 (>=0.5)", "types-pyOpenSSL", "types-pyRFC3339", "types-requests", "types-setuptools"]
 
 [[package]]
 name = "jsonschema"
@@ -717,6 +743,26 @@ category = "dev"
 optional = false
 python-versions = "*"
 
+[[package]]
+name = "ntnu-tia-client"
+version = "0.1.0"
+description = "Client for the TIA v4 REST API"
+category = "main"
+optional = false
+python-versions = "*"
+develop = false
+
+[package.dependencies]
+pydantic = "*"
+requests = "*"
+setuptools = "*"
+
+[package.source]
+type = "git"
+url = "https://git.app.uib.no/it-bott-integrasjoner/ntnu-tia-client.git"
+reference = "v0.1.0"
+resolved_reference = "b0b01e67258d5caa86044e8533433c176901bf39"
+
 [[package]]
 name = "orgreg-client"
 version = "0.2.3"
@@ -956,8 +1002,8 @@ pylint = ">=2.0"
 pylint-plugin-utils = ">=0.7"
 
 [package.extras]
-for_tests = ["django-tables2", "factory-boy", "coverage", "pytest", "wheel", "django-tastypie"]
-with_django = ["django"]
+for_tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pytest", "wheel"]
+with_django = ["Django"]
 
 [[package]]
 name = "pylint-plugin-utils"
@@ -1038,7 +1084,7 @@ pytest = ">=5.4.0"
 
 [package.extras]
 docs = ["sphinx", "sphinx-rtd-theme"]
-testing = ["django", "django-configurations (>=2.0)"]
+testing = ["Django", "django-configurations (>=2.0)"]
 
 [[package]]
 name = "pytest-mock"
@@ -1052,7 +1098,7 @@ python-versions = ">=3.7"
 pytest = ">=5.0"
 
 [package.extras]
-dev = ["pre-commit", "tox", "pytest-asyncio"]
+dev = ["pre-commit", "pytest-asyncio", "tox"]
 
 [[package]]
 name = "python-dateutil"
@@ -1147,7 +1193,7 @@ dev = ["build", "pytest", "pytest-timeout"]
 
 [[package]]
 name = "scim-client"
-version = "0.3.0"
+version = "0.2.1"
 description = "Client for accessing SCIM"
 category = "main"
 optional = false
@@ -1163,8 +1209,28 @@ requests = "*"
 [package.source]
 type = "git"
 url = "https://git.app.uib.no/it-bott-integrasjoner/scim-client.git"
-reference = "v0.3.0"
-resolved_reference = "61bd5a49e951641fc7982aadc7c02e5006d74e55"
+reference = "v0.2.1"
+resolved_reference = "b9ef1efcfc4ec66825f1cb9346ec67ff7e171938"
+
+[[package]]
+name = "scim2-client"
+version = "3.0.1"
+description = ""
+category = "main"
+optional = false
+python-versions = "^3.7"
+develop = false
+
+[package.dependencies]
+pydantic = "^1.8"
+requests = "^2.25"
+typing-extensions = "*"
+
+[package.source]
+type = "git"
+url = "https://git.app.uib.no/it-bott-integrasjoner/scim2-client.git"
+reference = "v3.0.1"
+resolved_reference = "679c840784f9116aeaa6645d4d72dfabec0b6620"
 
 [[package]]
 name = "sentry-sdk"
@@ -1186,16 +1252,29 @@ celery = ["celery (>=3)"]
 chalice = ["chalice (>=1.16.0)"]
 django = ["django (>=1.8)"]
 falcon = ["falcon (>=1.4)"]
-flask = ["flask (>=0.11)", "blinker (>=1.1)"]
+flask = ["blinker (>=1.1)", "flask (>=0.11)"]
 httpx = ["httpx (>=0.16.0)"]
-pure_eval = ["pure-eval", "executing", "asttokens"]
+pure_eval = ["asttokens", "executing", "pure-eval"]
 pyspark = ["pyspark (>=2.4.4)"]
-quart = ["quart (>=0.16.1)", "blinker (>=1.1)"]
+quart = ["blinker (>=1.1)", "quart (>=0.16.1)"]
 rq = ["rq (>=0.6)"]
 sanic = ["sanic (>=0.8)"]
 sqlalchemy = ["sqlalchemy (>=1.2)"]
 tornado = ["tornado (>=5)"]
 
+[[package]]
+name = "setuptools"
+version = "65.3.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
 [[package]]
 name = "six"
 version = "1.16.0"
@@ -1226,7 +1305,7 @@ executing = "*"
 pure-eval = "*"
 
 [package.extras]
-tests = ["pytest", "typeguard", "pygments", "littleutils", "cython"]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
 
 [[package]]
 name = "structlog"
@@ -1237,9 +1316,9 @@ optional = false
 python-versions = ">=3.6"
 
 [package.extras]
-dev = ["pre-commit", "rich", "cogapp", "tomli", "coverage", "freezegun (>=0.2.8)", "pretend", "pytest-asyncio", "pytest (>=6.0)", "simplejson", "furo", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "twisted"]
+dev = ["cogapp", "coverage[toml]", "freezegun (>=0.2.8)", "furo", "pre-commit", "pretend", "pytest (>=6.0)", "pytest-asyncio", "rich", "simplejson", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "tomli", "twisted"]
 docs = ["furo", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "twisted"]
-tests = ["coverage", "freezegun (>=0.2.8)", "pretend", "pytest-asyncio", "pytest (>=6.0)", "simplejson"]
+tests = ["coverage[toml]", "freezegun (>=0.2.8)", "pretend", "pytest (>=6.0)", "pytest-asyncio", "simplejson"]
 
 [[package]]
 name = "toml"
@@ -1318,7 +1397,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
 
 [package.extras]
 brotli = ["brotlipy (>=0.6.0)"]
-secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
+secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)"]
 socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
 
 [[package]]
@@ -1338,7 +1417,7 @@ optional = false
 python-versions = ">=3.7"
 
 [package.extras]
-brotli = ["brotli"]
+brotli = ["Brotli"]
 
 [[package]]
 name = "wrapt"
@@ -1351,9 +1430,10 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.9"
-content-hash = "71dd7a6443650f866f25eda257aea9647c88129646e8c5ea4a81bdd2a7c2316d"
+content-hash = "5f8bda09d51483955337e6c45d45ae41ce78702c1939e5de9bfa50cf7fa13f4a"
 
 [metadata.files]
+abstract-iga-client = []
 ansicon = [
     {file = "ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec"},
     {file = "ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1"},
@@ -1420,8 +1500,8 @@ blessed = [
     {file = "blessed-1.19.1.tar.gz", hash = "sha256:9a0d099695bf621d4680dd6c73f6ad547f6a3442fbdbe80c4b1daa1edbc492fc"},
 ]
 cachetools = [
-    {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"},
-    {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"},
+    {file = "cachetools-5.2.0-py3-none-any.whl", hash = "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db"},
+    {file = "cachetools-5.2.0.tar.gz", hash = "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757"},
 ]
 cerebrum-client = []
 certifi = [
@@ -1800,6 +1880,7 @@ mypy-extensions = [
     {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
     {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
 ]
+ntnu-tia-client = []
 orgreg-client = []
 packaging = [
     {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
@@ -2076,10 +2157,15 @@ rope = [
     {file = "rope-0.22.0.tar.gz", hash = "sha256:b00fbc064a26fc62d7220578a27fd639b2fad57213663cc396c137e92d73f10f"},
 ]
 scim-client = []
+scim2-client = []
 sentry-sdk = [
     {file = "sentry-sdk-1.5.5.tar.gz", hash = "sha256:98fd155fa5d5fec1dbabed32a1a4ae2705f1edaa5dae4e7f7b62a384ba30e759"},
     {file = "sentry_sdk-1.5.5-py2.py3-none-any.whl", hash = "sha256:3817274fba2498c8ebf6b896ee98ac916c5598706340573268c07bf2bb30d831"},
 ]
+setuptools = [
+    {file = "setuptools-65.3.0-py3-none-any.whl", hash = "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82"},
+    {file = "setuptools-65.3.0.tar.gz", hash = "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"},
+]
 six = [
     {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
     {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
diff --git a/pyproject.toml b/pyproject.toml
index e26ec978a31630de712c92fd0382281d7d93ea61..c1d77696e794b3f508b573beb498777051126f85 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -27,7 +27,7 @@ django-structlog = "^2.1.3"
 structlog = "^21.2.0"
 phonenumbers = "^8.12.35"
 cerebrum-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/cerebrum-client.git", rev = "v1.9.2"}
-scim-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/scim-client.git", rev = "v0.3.0"}
+abstract-iga-client = {git = "https://git.app.uib.no/it-bott-integrasjoner/abstract-iga-client.git", rev = "v1.0.2"}
 
 [tool.poetry.dev-dependencies]
 Faker = "*"