diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js
index 70067081e7a312c8747364454040bafc4154f914..f7a60437aaab7cb428356e1d2b84a4de9d0f852f 100644
--- a/src/api/SwaggerApi.js
+++ b/src/api/SwaggerApi.js
@@ -283,19 +283,6 @@ export function unpackGitProject(project) {
   return { ...project };
 }
 
-export function unpackAllowedGitProjects(projectList) {
-  return projectList.map((p) => unpackGitProject(p));
-}
-
-export function useAllowedGitProjects() {
-  const api = useContext(apiContext);
-  const method = useCallAndUnpack(
-    (repoUrl) => api.apis.Git.listProjects(),
-    unpackAllowedGitProjects
-  );
-  return useAsync({ fcn: method, call: false, init: [] });
-}
-
 export function useUpdateIoc(id, onError) {
   const api = useContext(apiContext);
   const method = useCallAndUnpack(
diff --git a/src/components/IOC/CreateIOC/CreateIOC.js b/src/components/IOC/CreateIOC/CreateIOC.js
index 8ff9e72dac92671558093189d8559d609729e1ed..0263fa30b729e287f19abcee53501e0ce2d25315 100644
--- a/src/components/IOC/CreateIOC/CreateIOC.js
+++ b/src/components/IOC/CreateIOC/CreateIOC.js
@@ -1,6 +1,5 @@
 import React, { useEffect, useState, useContext } from "react";
 import { useNavigate } from "react-router-dom";
-import { useAllowedGitProjects } from "../../../api/SwaggerApi";
 import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
 import { RootPaper } from "@ess-ics/ce-ui-common/dist/components/common/container/RootPaper";
 import {
@@ -33,14 +32,19 @@ export function CreateIOC() {
   const [name, setName] = useState();
   const [gitId, setGitId] = useState(null);
   const [nameQuery, onNameKeyUp] = useTypingTimer({ interval: 500 });
-  const [
-    allowedGitProjects,
-    getAllowedGitProjects,
-    ,
-    loadingAllowedGitProjects
-  ] = useAllowedGitProjects([]);
 
   const client = useContext(apiContext);
+
+  const {
+    value: allowedGitProjects,
+    wrapper: getAllowedGitProjects,
+    loading: loadingAllowedGitProjects,
+    dataReady: dataReadyAllowedGitProjects
+  } = useAPIMethod({
+    fcn: client.apis.Git.listProjects,
+    call: false
+  });
+
   const {
     value: ioc,
     wrapper: createIoc,
@@ -155,8 +159,8 @@ export function CreateIOC() {
         <Autocomplete
           autoHighlight
           id="gitId"
-          options={allowedGitProjects}
-          loading={loadingAllowedGitProjects}
+          options={allowedGitProjects ?? []}
+          loading={loadingAllowedGitProjects || !dataReadyAllowedGitProjects}
           clearOnBlur={false}
           defaultValue={{
             id: null,
@@ -179,7 +183,8 @@ export function CreateIOC() {
                 ...params.InputProps,
                 endAdornment: (
                   <React.Fragment>
-                    {loadingAllowedGitProjects ? (
+                    {loadingAllowedGitProjects ||
+                    !dataReadyAllowedGitProjects ? (
                       <CircularProgress
                         color="inherit"
                         size={20}
diff --git a/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
index f8da494b91ef30f39c4a28f590c55ae92c839b37..fd1310fa8af7421363daae9031d29eef82816190 100644
--- a/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
+++ b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
@@ -13,7 +13,7 @@ import {
   Autocomplete,
   Alert
 } from "@mui/material";
-import { useAllowedGitProjects, useUpdateIoc } from "../../../api/SwaggerApi";
+import { useUpdateIoc } from "../../../api/SwaggerApi";
 import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
 import AccessControl from "../../auth/AccessControl";
 import { apiContext } from "../../../api/DeployApi";
@@ -25,12 +25,7 @@ export default function IOCDetailAdmin({
   buttonDisabled
 }) {
   const [gitId, setGitId] = useState(ioc.gitProjectId);
-  const [
-    allowedGitProjects,
-    getAllowedGitProjects,
-    ,
-    loadingAllowedGitProjects
-  ] = useAllowedGitProjects([]);
+
   const [nameQuery, onNameKeyUp] = useTypingTimer({ interval: 500 });
   const [name, setName] = useState({
     uuid: ioc.namingUuid,
@@ -47,6 +42,17 @@ export default function IOCDetailAdmin({
   }
 
   const client = useContext(apiContext);
+
+  const {
+    value: allowedGitProjects,
+    wrapper: getAllowedGitProjects,
+    loading: loadingAllowedGitProjects,
+    dataReady: dataReadyAllowedGitProjects
+  } = useAPIMethod({
+    fcn: client.apis.Git.listProjects,
+    call: false
+  });
+
   const {
     value: names,
     wrapper: getNames,
@@ -163,12 +169,14 @@ export default function IOCDetailAdmin({
 
   function gitRepoAutocomplete(disabled) {
     const isDisabled = disabled || iocIsDeployed;
-    const loading = loadingAllowedGitProjects && !isDisabled;
+    const loading =
+      (loadingAllowedGitProjects || !dataReadyAllowedGitProjects) &&
+      !isDisabled;
     return (
       <Autocomplete
         autoHighlight
         id="gitId"
-        options={allowedGitProjects}
+        options={allowedGitProjects ?? []}
         loading={loading}
         clearOnBlur={false}
         defaultValue={{