diff --git a/src/main/java/org/kohsuke/github/GHAppInstallation.java b/src/main/java/org/kohsuke/github/GHAppInstallation.java
index e92c744e99..1dfc63d0e9 100644
--- a/src/main/java/org/kohsuke/github/GHAppInstallation.java
+++ b/src/main/java/org/kohsuke/github/GHAppInstallation.java
@@ -1,6 +1,8 @@
 package org.kohsuke.github;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.kohsuke.github.internal.EnumUtils;
@@ -39,7 +41,10 @@ GHRepository[] getItems(GitHub root) {
     @JsonProperty("access_tokens_url")
     private String accessTokenUrl;
 
-    private GHUser account;
+    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
+    @JsonSubTypes({ @JsonSubTypes.Type(value = GHUser.class, name = "User"),
+            @JsonSubTypes.Type(value = GHOrganization.class, name = "Organization") })
+    private GHPerson account;
     @JsonProperty("app_id")
     private long appId;
     private List<String> events;
@@ -122,7 +127,7 @@ public String getAccessTokenUrl() {
      * @return the account
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
-    public GHUser getAccount() {
+    public GHPerson getAccount() {
         return account;
     }
 
diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java
index cb59f2af62..2772f85c04 100755
--- a/src/test/java/org/kohsuke/github/AppTest.java
+++ b/src/test/java/org/kohsuke/github/AppTest.java
@@ -737,6 +737,7 @@ public void testGetAppInstallations() throws Exception {
         final GHAppInstallation ghAppInstallation = appInstallation.toList().get(0);
         assertThat(ghAppInstallation.getAppId(), is(122478L));
         assertThat(ghAppInstallation.getAccount().getLogin(), is("t0m4uk1991"));
+        assertThat(ghAppInstallation.getAccount(), instanceOf(GHUser.class));
     }
 
     /**
diff --git a/src/test/java/org/kohsuke/github/GHAppTest.java b/src/test/java/org/kohsuke/github/GHAppTest.java
index 420bc16466..dc297d14a6 100644
--- a/src/test/java/org/kohsuke/github/GHAppTest.java
+++ b/src/test/java/org/kohsuke/github/GHAppTest.java
@@ -264,11 +264,12 @@ public void listInstallationsSince() throws IOException, ParseException {
 
     private void testAppInstallation(GHAppInstallation appInstallation) throws IOException {
         Map<String, GHPermissionType> appPermissions = appInstallation.getPermissions();
-        GHUser appAccount = appInstallation.getAccount();
+        GHPerson appAccount = appInstallation.getAccount();
 
         assertThat(appInstallation.getId(), is((long) 11111111));
         assertThat(appAccount.getId(), is((long) 111111111));
         assertThat(appAccount.login, is("bogus"));
+        assertThat(appAccount, instanceOf(GHOrganization.class));
         assertThat(appAccount.getType(), is("Organization"));
         assertThat(appInstallation.getRepositorySelection(), is(GHRepositorySelection.SELECTED));
         assertThat(appInstallation.getAccessTokenUrl(), endsWith("/app/installations/11111111/access_tokens"));
diff --git a/src/test/java/org/kohsuke/github/GHEventPayloadTest.java b/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
index 506bb62269..ec030ee17a 100644
--- a/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
+++ b/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
@@ -18,6 +18,7 @@
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasProperty;
 import static org.hamcrest.Matchers.hasToString;
+import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.lessThanOrEqualTo;
 import static org.hamcrest.Matchers.notNullValue;
@@ -59,6 +60,8 @@ public void InstallationCreatedEvent() throws Exception {
         assertThat(event.getAction(), is("created"));
         assertThat(event.getInstallation().getId(), is(43898337L));
         assertThat(event.getInstallation().getAccount().getLogin(), is("CronFire"));
+        assertThat(event.getInstallation().getAccount(), instanceOf(GHOrganization.class));
+        assertThat(event.getInstallation().getAccount().getType(), is("Organization"));
 
         assertThat(event.getRepositories().isEmpty(), is(false));
         assertThat(event.getRepositories().get(0).getId(), is(1296269L));
@@ -84,6 +87,8 @@ public void InstallationDeletedEvent() throws Exception {
         assertThat(event.getAction(), is("deleted"));
         assertThat(event.getInstallation().getId(), is(2L));
         assertThat(event.getInstallation().getAccount().getLogin(), is("octocat"));
+        assertThat(event.getInstallation().getAccount(), instanceOf(GHUser.class));
+        assertThat(event.getInstallation().getAccount().getType(), is("User"));
 
         assertThrows(IllegalStateException.class, () -> event.getRepositories().isEmpty());
         assertThat(event.getRawRepositories().isEmpty(), is(false));