diff --git a/src/main/java/org/eclipsefoundation/adopters/api/WorkingGroupsAPI.java b/src/main/java/org/eclipsefoundation/adopters/api/WorkingGroupsAPI.java
deleted file mode 100644
index 4b0daa9cf56aca2598d116e4a1aebfb6df992c7c..0000000000000000000000000000000000000000
--- a/src/main/java/org/eclipsefoundation/adopters/api/WorkingGroupsAPI.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*********************************************************************
-* Copyright (c) 2022 Eclipse Foundation.
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* Author: Martin Lowe <martin.lowe@eclipse-foundation.org>
-*
-* SPDX-License-Identifier: EPL-2.0
-**********************************************************************/
-package org.eclipsefoundation.adopters.api;
-
-import java.util.List;
-
-import javax.ws.rs.BeanParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
-import org.eclipsefoundation.core.service.APIMiddleware.BaseAPIParameters;
-
-@Path("working-groups/")
-@Produces(MediaType.APPLICATION_JSON)
-@RegisterRestClient(configKey = "wg-api")
-public interface WorkingGroupsAPI {
-
-    @GET
-    public Response getAll(@BeanParam BaseAPIParameters baseParams, @QueryParam("status") List<String> statuses);
-}
diff --git a/src/main/java/org/eclipsefoundation/adopters/api/models/WorkingGroup.java b/src/main/java/org/eclipsefoundation/adopters/api/models/WorkingGroup.java
deleted file mode 100644
index eb0ba1f3d9580ed2a244dd0f60dd3b5b1a4fbe83..0000000000000000000000000000000000000000
--- a/src/main/java/org/eclipsefoundation/adopters/api/models/WorkingGroup.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * Copyright (c) 2021 Eclipse Foundation
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * Author: Martin Lowe <martin.lowe@eclipse-foundation.org>
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.eclipsefoundation.adopters.api.models;
-
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
-import com.google.auto.value.AutoValue;
-
-/**
- * JSON object for importing Working group JSON assets.
- * 
- * @author Martin Lowe <martin.lowe@eclipse-foundation.org>
- */
-@AutoValue
-@JsonDeserialize(builder = AutoValue_WorkingGroup.Builder.class)
-public abstract class WorkingGroup {
-    public abstract String getAlias();
-
-    public abstract String getTitle();
-
-    public abstract String getStatus();
-
-    public abstract String getLogo();
-
-    public abstract String getDescription();
-
-    public abstract String getParentOrganization();
-
-    public abstract WorkingGroupResources getResources();
-
-    public abstract List<WorkingGroupParticipationLevel> getLevels();
-
-    public static Builder builder() {
-        return new AutoValue_WorkingGroup.Builder();
-    }
-
-    @AutoValue.Builder
-    @JsonPOJOBuilder(withPrefix = "set")
-    public abstract static class Builder {
-        public abstract Builder setAlias(String alias);
-
-        public abstract Builder setTitle(String title);
-
-        public abstract Builder setStatus(String status);
-
-        public abstract Builder setLogo(String logo);
-
-        public abstract Builder setDescription(String description);
-
-        public abstract Builder setParentOrganization(String parentOrganization);
-
-        public abstract Builder setResources(WorkingGroupResources resources);
-
-        public abstract Builder setLevels(List<WorkingGroupParticipationLevel> levels);
-
-        public abstract WorkingGroup build();
-    }
-
-    @AutoValue
-    @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupResources.Builder.class)
-    public abstract static class WorkingGroupResources {
-        public abstract String getCharter();
-
-        @JsonProperty("participation_agreements")
-        public abstract WorkingGroupParticipationAgreements getParticipationAgreements();
-
-        public abstract String getWebsite();
-
-        public abstract String getMembers();
-
-        public abstract String getSponsorship();
-
-        public abstract String getContactForm();
-
-        public static Builder builder() {
-            return new AutoValue_WorkingGroup_WorkingGroupResources.Builder();
-        }
-
-        @AutoValue.Builder
-        @JsonPOJOBuilder(withPrefix = "set")
-        public abstract static class Builder {
-            public abstract Builder setCharter(String charter);
-
-            public abstract Builder setParticipationAgreements(
-                    WorkingGroupParticipationAgreements participationAgreements);
-
-            public abstract Builder setWebsite(String website);
-
-            public abstract Builder setMembers(String members);
-
-            public abstract Builder setSponsorship(String sponsorship);
-
-            public abstract Builder setContactForm(String contactForm);
-
-            public abstract WorkingGroupResources build();
-        }
-    }
-
-    @AutoValue
-    @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupParticipationLevel.Builder.class)
-    public abstract static class WorkingGroupParticipationLevel {
-        public abstract String getRelation();
-
-        public abstract String getDescription();
-
-        public static Builder builder() {
-            return new AutoValue_WorkingGroup_WorkingGroupParticipationLevel.Builder();
-        }
-
-        @AutoValue.Builder
-        @JsonPOJOBuilder(withPrefix = "set")
-        public abstract static class Builder {
-            public abstract Builder setRelation(String relation);
-
-            public abstract Builder setDescription(String description);
-
-            public abstract WorkingGroupParticipationLevel build();
-        }
-    }
-
-    @AutoValue
-    @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupParticipationAgreement.Builder.class)
-    public abstract static class WorkingGroupParticipationAgreement {
-        @JsonProperty("document_id")
-        public abstract String getDocumentId();
-
-        public abstract String getPdf();
-
-        public static Builder builder() {
-            return new AutoValue_WorkingGroup_WorkingGroupParticipationAgreement.Builder();
-        }
-
-        @AutoValue.Builder
-        @JsonPOJOBuilder(withPrefix = "set")
-        public abstract static class Builder {
-
-            public abstract Builder setDocumentId(String documentId);
-
-            public abstract Builder setPdf(String pdf);
-
-            public abstract WorkingGroupParticipationAgreement build();
-        }
-    }
-
-    @AutoValue
-    @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupParticipationAgreements.Builder.class)
-    public abstract static class WorkingGroupParticipationAgreements {
-        @Nullable
-        public abstract WorkingGroupParticipationAgreement getIndividual();
-
-        @Nullable
-        public abstract WorkingGroupParticipationAgreement getOrganization();
-
-        public static Builder builder() {
-            return new AutoValue_WorkingGroup_WorkingGroupParticipationAgreements.Builder();
-        }
-
-        @AutoValue.Builder
-        @JsonPOJOBuilder(withPrefix = "set")
-        public abstract static class Builder {
-
-            public abstract Builder setIndividual(@Nullable WorkingGroupParticipationAgreement individual);
-
-            public abstract Builder setOrganization(@Nullable WorkingGroupParticipationAgreement organization);
-
-            public abstract WorkingGroupParticipationAgreements build();
-        }
-    }
-}
diff --git a/src/main/java/org/eclipsefoundation/adopters/precaches/WorkingGroupPrecacheProvider.java b/src/main/java/org/eclipsefoundation/adopters/precaches/WorkingGroupPrecacheProvider.java
deleted file mode 100644
index ffe84fcdb42b9afbc07c709f9b2e03deca1ca111..0000000000000000000000000000000000000000
--- a/src/main/java/org/eclipsefoundation/adopters/precaches/WorkingGroupPrecacheProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*********************************************************************
-* Copyright (c) 2023 Eclipse Foundation.
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* Author: Zachary Sabourin <zachary.sabourin@eclipse-foundation.org>
-*
-* SPDX-License-Identifier: EPL-2.0
-**********************************************************************/
-package org.eclipsefoundation.adopters.precaches;
-
-import java.util.List;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.eclipse.microprofile.rest.client.inject.RestClient;
-import org.eclipsefoundation.adopters.api.WorkingGroupsAPI;
-import org.eclipsefoundation.adopters.api.models.WorkingGroup;
-import org.eclipsefoundation.core.model.ParameterizedCacheKey;
-import org.eclipsefoundation.core.service.APIMiddleware;
-import org.eclipsefoundation.core.service.LoadingCacheManager.LoadingCacheProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Named("working-groups")
-@ApplicationScoped
-public class WorkingGroupPrecacheProvider implements LoadingCacheProvider<WorkingGroup> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(WorkingGroupPrecacheProvider.class);
-
-    @RestClient
-    WorkingGroupsAPI api;
-
-    @Inject
-    APIMiddleware middleware;
-
-    @Override
-    public List<WorkingGroup> fetchData(ParameterizedCacheKey k) {
-        LOGGER.debug("LOADING PROJECTS WITH KEY: {}", k);
-        return middleware.getAll(params -> api.getAll(params, null), WorkingGroup.class);
-    }
-
-    @Override
-    public Class<WorkingGroup> getType() {
-        return WorkingGroup.class;
-    }
-}
diff --git a/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java b/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java
index 97f59319ad12f95cc0b045ab0b6539717ad7a25b..38bdf29bd6f854f64b488697e63513d9a336209f 100644
--- a/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java
+++ b/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java
@@ -14,6 +14,7 @@ package org.eclipsefoundation.adopters.resource;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import javax.inject.Inject;
@@ -26,14 +27,14 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.eclipsefoundation.adopters.api.models.WorkingGroup;
 import org.eclipsefoundation.adopters.model.AdoptedProject;
 import org.eclipsefoundation.adopters.model.Breadcrumb;
 import org.eclipsefoundation.adopters.service.AdopterService;
-import org.eclipsefoundation.adopters.service.WorkingGroupsService;
 import org.eclipsefoundation.core.service.CachingService;
 import org.eclipsefoundation.efservices.api.models.Project;
+import org.eclipsefoundation.efservices.api.models.WorkingGroup;
 import org.eclipsefoundation.efservices.services.ProjectService;
+import org.eclipsefoundation.efservices.services.WorkingGroupService;
 
 import io.quarkus.qute.Location;
 import io.quarkus.qute.Template;
@@ -61,7 +62,7 @@ public class AdoptersResource {
     @Inject
     AdopterService adopterService;
     @Inject
-    WorkingGroupsService wgs;
+    WorkingGroupService wgs;
 
     @Location("pages/project-adopters-wg")
     Template adoptersWgTemplate;
@@ -109,8 +110,8 @@ public class AdoptersResource {
     @Path("project-adopters/{alias}")
     public Response getWorkingGroupSubPage(@PathParam("alias") String workingGroupAlias) {
         // retrieve the corresponding working group, or return an error
-        WorkingGroup currentWg = wgs.getByName(workingGroupAlias);
-        if (currentWg == null) {
+        Optional<WorkingGroup> currentWg = wgs.getByName(workingGroupAlias);
+        if (currentWg.isEmpty()) {
             // a bit redundant, but attempt to get a cached error page or render a fresh copy
             return Response
                     .ok(cache
@@ -123,10 +124,10 @@ public class AdoptersResource {
                 .ok(cache
                         .get(workingGroupAlias, null, String.class,
                                 () -> adoptersWgTemplate
-                                        .data("wg", currentWg)
+                                        .data("wg", currentWg.get())
                                         .data(BREADCRUMB_TEMPLATE_PROPERTY,
                                                 new Breadcrumb("/adopters/project-adopters/" + workingGroupAlias,
-                                                        currentWg.getTitle()))
+                                                        currentWg.get().getTitle()))
                                         .render())
                         .orElseGet(errorTemplate::render))
                 .build();
diff --git a/src/main/java/org/eclipsefoundation/adopters/service/WorkingGroupsService.java b/src/main/java/org/eclipsefoundation/adopters/service/WorkingGroupsService.java
deleted file mode 100644
index 4155939d8e69dda6abca7bb3c2fdd450306c06e1..0000000000000000000000000000000000000000
--- a/src/main/java/org/eclipsefoundation/adopters/service/WorkingGroupsService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Copyright (c) 2021 Eclipse Foundation
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * Author: Martin Lowe <martin.lowe@eclipse-foundation.org>
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.eclipsefoundation.adopters.service;
-
-import java.util.List;
-
-import org.eclipsefoundation.adopters.api.models.WorkingGroup;
-
-/**
- * Defines a service that will return available working group data.
- * 
- * @author Martin Lowe
- *
- */
-public interface WorkingGroupsService {
-
-    /**
-     * Returns all available working groups as a list.
-     * 
-     * @return list of all working group definitions from the working group API
-     */
-    public List<WorkingGroup> get();
-
-    /**
-     * Retrieves a single working group by its alias if available.
-     * 
-     * @param name the alias of the working group to retrieve
-     * @return the working group with the given alias if available, or null.
-     */
-    public WorkingGroup getByName(String name);
-}
diff --git a/src/main/java/org/eclipsefoundation/adopters/service/impl/DefaultWorkingGroupsService.java b/src/main/java/org/eclipsefoundation/adopters/service/impl/DefaultWorkingGroupsService.java
deleted file mode 100644
index c309ab3c9b4898b8d900ae735e64338ee10af23b..0000000000000000000000000000000000000000
--- a/src/main/java/org/eclipsefoundation/adopters/service/impl/DefaultWorkingGroupsService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright (c) 2021 Eclipse Foundation
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * Author: Martin Lowe <martin.lowe@eclipse-foundation.org>
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.eclipsefoundation.adopters.service.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-
-import org.eclipsefoundation.adopters.api.models.WorkingGroup;
-import org.eclipsefoundation.adopters.service.WorkingGroupsService;
-import org.eclipsefoundation.core.model.ParameterizedCacheKey;
-import org.eclipsefoundation.core.service.LoadingCacheManager;
-
-/**
- * Builds a list of working group definitions from an embedded list of working group definitions. This is an interim
- * solution to accelerate this project and should be replaced with a call to the foundation API to retrieve this data.
- * 
- * @author Martin Lowe
- */
-@ApplicationScoped
-public class DefaultWorkingGroupsService implements WorkingGroupsService {
-
-    @Inject
-    LoadingCacheManager cache;
-
-    @Override
-    public List<WorkingGroup> get() {
-        return new ArrayList<>(
-                cache.getList(ParameterizedCacheKey.builder().setId("all").setClazz(WorkingGroup.class).build()));
-    }
-
-    @Override
-    public WorkingGroup getByName(String name) {
-        return get().stream().filter(wg -> wg.getAlias().equalsIgnoreCase(name)).findFirst().orElse(null);
-    }
-
-}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e8895397e5917b4722db3f44f67d88ce155a11e3..d507ac48ae3a8dd85ad1c4a33e6e207e2c28f519 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -3,6 +3,9 @@ quarkus.log.level=INFO
 
 ## CORS settings
 quarkus.http.cors=false
+%dev.eclipse.core.secure-key.override-key=test
+%dev.eclipse.optional-resources.enabled=true
+%dev.eclipse.cache.resource.enabled=true
 
 ## OIDC settings
 quarkus.oidc.enabled=false