# Problem loading UserStorageProvider after KC 19

**URL:** <https://forum.keycloak.org/t/problem-loading-userstorageprovider-after-kc-19/19439>\
**Category:** Extending the server\
**Created:** [January 7, 2023, 12:53pm UTC](https://forum.keycloak.org/t/problem-loading-userstorageprovider-after-kc-19/19439 "2023-01-07T12:53:10Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![xgp](https://yyz2.discourse-cdn.com/free1/user_avatar/forum.keycloak.org/xgp/32/2589_2.png) [@xgp](https://forum.keycloak.org/u/xgp)\
**Post date:** [January 7, 2023, 12:53pm UTC](https://forum.keycloak.org/t/problem-loading-userstorageprovider-after-kc-19/19439/1 "2023-01-07T12:53:10Z")

</div>

Hi all,

I’m working on a problem I can’t figure out, where the first load of a `UserStorageProvider` fails, but subsequent load succeeds. In some cases, the provider should be loaded by an attempt to load a user (e.g. during a login attempt), and in others, it’s from a `ImportSynchronization` implementation in the `sync()` method. In all cases, it worked in versions of Keycloak before 19.

In the case of the `ImportSynchronization` implementation, I did some debugging of how I load the provider to see what’s going on:

```java
  public static MyUserStorageProvider getMyProvider(KeycloakSession session, ComponentModel fedModel) {
    log.infof("getProvider for %s, id=%s, providerId=%s", fedModel, fedModel.getId(), fedModel.getProviderId());
    MyUserStorageProvider provider = session.getProvider(MyUserStorageProvider.class, fedModel);
    log.infof("got MyUserStorageProvider %s with ComponentModel %s", provider, fedModel);
    if (provider == null) {
      Provider p = getMyProvider(session);
      if (p != null) {
        provider = (MyUserStorageProvider)p;
        log.infof("got MyUserStorageProvider %s via set of UserStorageProvders", provider, fedModel);
      }
    }
    return provider;
  }      

  public static UserStorageProvider getMyProvider(KeycloakSession session) {
    Set<UserStorageProvider> userStorageProviders = session.getAllProviders(UserStorageProvider.class);
    log.infof("Found %d providers for type UserStorageProvider", userStorageProviders.size());
    return userStorageProviders.stream()
        .filter(pr -> {
            log.infof("UserStorageProvider is %s", pr);
            if (pr == null) return false;
            log.infof("found UserStorageProvider of type %s", pr.getClass().getName());
            return (pr instanceof MyUserStorageProvider);
          })
        .findAny()
        .orElse(null);
  }

```

The resulting output on the first call is:

```auto
2023-01-07 13:30:52 12:30:52,620 INFO [test.LegacyStorageUtils] (Timer-2) getProvider for org.keycloak.storage.UserStorageProviderModel@2949d279, id=660ab6d8-c0eb-45e0-a35e-039d049c5451, providerId=my
2023-01-07 13:30:52 12:30:52,622 INFO [test.LegacyStorageUtils] (Timer-2) got MyUserStorageProvider null with ComponentModel org.keycloak.storage.UserStorageProviderModel@2949d279
2023-01-07 13:30:52 12:30:52,622 INFO [test.LegacyStorageUtils] (Timer-2) Found 1 providers for type UserStorageProvider
2023-01-07 13:30:52 12:30:52,623 INFO [test.LegacyStorageUtils] (Timer-2) UserStorageProvider is null

```

The method `session.getProvider(MyUserStorageProvider.class, fedModel);` used to work as expected, but now returns null. Furthermore, the use of `session.getAllProviders(UserStorageProvider.class)` returns a Set with a single, null entry. I know that there has been a lot of work on these classes, and there have been deprecations in how we’re supposed to look up providers, but I’ve tried all of the new `getComponentProvider` methods, and I always get null the first time they are called.

Any ideas as to why this is happening, but only on the first call? Is there some, new, lazy-loading logic to be aware of? Is there a feasible workaround that anyone has used?

Thank you!

---

<div class="post-metadata">

**Author:** ![keaz](https://yyz2.discourse-cdn.com/free1/user_avatar/forum.keycloak.org/keaz/32/7607_2.png) [@keaz](https://forum.keycloak.org/u/keaz)\
**Post date:** [February 2, 2023, 8:34am UTC](https://forum.keycloak.org/t/problem-loading-userstorageprovider-after-kc-19/19439/2 "2023-02-02T08:34:27Z")

</div>

Hi, did you find a solution for this?  
I’m also having this issue.

---

<div class="post-metadata">

**Author:** ![xgp](https://yyz2.discourse-cdn.com/free1/user_avatar/forum.keycloak.org/xgp/32/2589_2.png) [@xgp](https://forum.keycloak.org/u/xgp)\
**Post date:** [February 2, 2023, 8:39am UTC](https://forum.keycloak.org/t/problem-loading-userstorageprovider-after-kc-19/19439/3 "2023-02-02T08:39:49Z")

</div>

Sounds from your other post like you are having a different issue.

In this case, I solved it by changing the class name in this line from the specific implementation to `UserStorageProvider`

```java
    MyUserStorageProvider provider = (MyUserStorageProvider)session.getProvider(UserStorageProvider.class, fedModel);

```
