From ad3625324821a0dd6cbb002d2da6e111b2c63c31 Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Fri, 26 Jun 2026 13:06:30 -0400 Subject: [PATCH 01/10] ts panel nullify field work --- .../hmda/model/institution/Institution.scala | 24 +++++++++++++++++++ .../api/http/InstitutionQueryHttpApi.scala | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/common/src/main/scala/hmda/model/institution/Institution.scala b/common/src/main/scala/hmda/model/institution/Institution.scala index 963160daca..42060e7750 100644 --- a/common/src/main/scala/hmda/model/institution/Institution.scala +++ b/common/src/main/scala/hmda/model/institution/Institution.scala @@ -185,4 +185,28 @@ case class Institution( InstitutionFieldMapping .mapping(this) .getOrElse(field, s"error: field name mismatch for $field") +} + +def nullifyFields: Institution = { + Institution( + activityYear, + lei, + Agency.valueOf(agency), + InstitutionType.valueOf(institutionType), + institutionId2017, + taxId, + rssdId, + emailDomains, + respondent, + parent, + assets, + otherLenderCode, + topHolder, + hmdaFiler, + quarterlyFiler, + quarterlyFilerHasFiledQ1, + quarterlyFilerHasFiledQ2, + quarterlyFilerHasFiledQ3, + notes.getOrElse("") + ) } \ No newline at end of file diff --git a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala index 19c782e63c..bc11088cac 100644 --- a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala +++ b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala @@ -61,7 +61,7 @@ private class InstitutionQueryHttpApi(config: Config)(implicit ec: ExecutionCont case res: (Option[InstitutionEntity], Seq[String]) if res._1.nonEmpty => val (institution, emails) = res ToResponseMarshallable(InstitutionConverter - .convert(institution.getOrElse(InstitutionEntity()), emails)) + .convert(institution.getOrElse(InstitutionEntity()), emails).toCSV) } completeFuture(f, uri, entityMarshaller) From ac0e38f5940a7c96ecb2717e129554eaa0d4381d Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Mon, 29 Jun 2026 15:23:05 -0400 Subject: [PATCH 02/10] clear institution fields no longer being updated by the hmda-platform service --- .../hmda/model/institution/Institution.scala | 23 -------- .../api/http/InstitutionConverter.scala | 22 +++++-- .../hmda/institution/util/HelperUtility.scala | 59 +++++++++++++++++++ 3 files changed, 77 insertions(+), 27 deletions(-) create mode 100644 institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala diff --git a/common/src/main/scala/hmda/model/institution/Institution.scala b/common/src/main/scala/hmda/model/institution/Institution.scala index 42060e7750..e8ad884031 100644 --- a/common/src/main/scala/hmda/model/institution/Institution.scala +++ b/common/src/main/scala/hmda/model/institution/Institution.scala @@ -187,26 +187,3 @@ case class Institution( .getOrElse(field, s"error: field name mismatch for $field") } -def nullifyFields: Institution = { - Institution( - activityYear, - lei, - Agency.valueOf(agency), - InstitutionType.valueOf(institutionType), - institutionId2017, - taxId, - rssdId, - emailDomains, - respondent, - parent, - assets, - otherLenderCode, - topHolder, - hmdaFiler, - quarterlyFiler, - quarterlyFilerHasFiledQ1, - quarterlyFilerHasFiledQ2, - quarterlyFilerHasFiledQ3, - notes.getOrElse("") - ) -} \ No newline at end of file diff --git a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala index 0f2315f28e..a291c233b5 100644 --- a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala +++ b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala @@ -1,13 +1,15 @@ package hmda.institution.api.http import hmda.institution.query.{InstitutionEmailEntity, InstitutionEntity} -import hmda.model.institution._ +import hmda.institution.util.HelperUtility.{nullifyFields, nullifyInstitutionEntityFields, nullifyInstitutionFields} +import hmda.model.institution.{Institution, _} import hmda.util.CSVConsolidator.listDeDupeToList object InstitutionConverter { def convert(entity: InstitutionEntity, emails: Seq[String]): Institution = { - Institution( + + val institution= Institution( entity.activityYear, entity.lei, Agency.valueOf(entity.agency), @@ -39,10 +41,15 @@ object InstitutionConverter { entity.quarterlyFilerHasFiledQ3, entity.notes ) + + if (institution.activityYear>=2024){ + nullifyInstitutionFields(institution) + }else + institution } - def convert(institution: Institution): InstitutionEntity = - InstitutionEntity( + def convert(institution: Institution): InstitutionEntity = { + val instituionInstitutionEntity = InstitutionEntity( institution.LEI, institution.activityYear, institution.agency.code, @@ -67,6 +74,13 @@ object InstitutionConverter { notes = institution.notes ) + + if (instituionInstitutionEntity.activityYear>=2024){ + nullifyInstitutionEntityFields(instituionInstitutionEntity) + }else + instituionInstitutionEntity + } + def emailsFromInstitution(institution: Institution): Seq[InstitutionEmailEntity] = { val uniqueEmailDomainList= listDeDupeToList(institution.emailDomains) diff --git a/institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala b/institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala new file mode 100644 index 0000000000..28051d4c4b --- /dev/null +++ b/institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala @@ -0,0 +1,59 @@ +package hmda.institution.util + +import hmda.institution.query.InstitutionEntity +import hmda.model.institution.{Institution, Respondent} + + +object HelperUtility { + def nullifyInstitutionFields(institution: Institution): Institution = { + + Institution( + institution.activityYear, + institution.LEI, + institution.agency, + null, + Some(""), + institution.taxId, + -1, + institution.emailDomains, + Respondent(institution.respondent.name,None,None), + null, + -1, + -1, + null, + institution.hmdaFiler, + institution.quarterlyFiler, + institution.quarterlyFilerHasFiledQ1, + institution.quarterlyFilerHasFiledQ2, + institution.quarterlyFilerHasFiledQ3, + institution.notes + ) + } + + def nullifyInstitutionEntityFields(institutionEntity: InstitutionEntity): InstitutionEntity = { + + InstitutionEntity( + institutionEntity.lei, + institutionEntity.activityYear, + institutionEntity.agency, + -1, + "", + institutionEntity.taxId, + -1, + institutionEntity.respondentName, + "", + "", + -1, + "", + -1, + -1, + -1, + "", + institutionEntity.hmdaFiler, + institutionEntity.quarterlyFiler, + institutionEntity.quarterlyFilerHasFiledQ1, + institutionEntity.quarterlyFilerHasFiledQ2, + institutionEntity.quarterlyFilerHasFiledQ3 + ) + } +} From bf5ad8f5f31eb08e6738ec31f161ea0c3baf7c0b Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Mon, 29 Jun 2026 15:41:59 -0400 Subject: [PATCH 03/10] clear institution fields no longer being updated by the hmda-platform service --- .../scala/hmda/institution/api/http/InstitutionConverter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala index a291c233b5..4650610a68 100644 --- a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala +++ b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala @@ -1,7 +1,7 @@ package hmda.institution.api.http import hmda.institution.query.{InstitutionEmailEntity, InstitutionEntity} -import hmda.institution.util.HelperUtility.{nullifyFields, nullifyInstitutionEntityFields, nullifyInstitutionFields} +import hmda.institution.util.HelperUtility.{nullifyInstitutionEntityFields, nullifyInstitutionFields} import hmda.model.institution.{Institution, _} import hmda.util.CSVConsolidator.listDeDupeToList From befe0f6348eafcb3220c1aba77162a4913ae6fe3 Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Mon, 29 Jun 2026 16:56:15 -0400 Subject: [PATCH 04/10] clear institution fields no longer being updated by the hmda-platform service --- build.sbt | 19 +++++- .../scala/hmda/util/FieldNullifyUtility.scala | 34 +++++++++++ .../http/admin/InstitutionAdminHttpApi.scala | 13 ++-- .../api/http/InstitutionConverter.scala | 19 ++---- .../hmda/institution/util/HelperUtility.scala | 59 ------------------- 5 files changed, 63 insertions(+), 81 deletions(-) create mode 100644 common/src/main/scala/hmda/util/FieldNullifyUtility.scala delete mode 100644 institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala diff --git a/build.sbt b/build.sbt index 17936f1e83..23931bf767 100644 --- a/build.sbt +++ b/build.sbt @@ -57,7 +57,7 @@ lazy val circeDeps = Seq(circe, circeGeneric, circeParser) lazy val enumeratumDeps = Seq(enumeratum, enumeratumCirce) lazy val slickDeps = Seq(slick, slickHikariCP, postgres, h2) - +lazy val metaInfMatcher = """META-INF/.+\.(SF|DSA|RSA)""".r lazy val dockerSettings = Seq( dockerBuildCommand := { //force amd64 Architecture for k8s docker image compatability @@ -186,6 +186,7 @@ lazy val `hmda-platform` = (project in file("hmda")) case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "logback.xml" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -227,6 +228,7 @@ lazy val `check-digit` = (project in file("check-digit")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs @ _*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs @ _*) => MergeStrategy.last @@ -268,6 +270,7 @@ lazy val `check-digit` = (project in file("check-digit")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -304,6 +307,7 @@ lazy val `institutions-api` = (project in file("institutions-api")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -347,6 +351,7 @@ lazy val `hmda-data-publisher` = (project in file("hmda-data-publisher")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -385,6 +390,7 @@ lazy val `hmda-dashboard` = (project in file("hmda-dashboard")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -424,6 +430,7 @@ lazy val `ratespread-calculator` = (project in file("ratespread-calculator")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -463,6 +470,7 @@ lazy val `modified-lar` = (project in file("modified-lar")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -503,6 +511,7 @@ lazy val `irs-publisher` = (project in file("irs-publisher")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -543,6 +552,7 @@ lazy val `hmda-reporting` = (project in file("hmda-reporting")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -592,6 +602,7 @@ lazy val `hmda-analytics` = (project in file("hmda-analytics")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -634,6 +645,7 @@ lazy val `hmda-analytics` = (project in file("hmda-analytics")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs @ _*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs @ _*) => MergeStrategy.last @@ -672,6 +684,7 @@ lazy val `rate-limit` = (project in file("rate-limit")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -712,6 +725,7 @@ lazy val `data-browser` = (project in file("data-browser")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -746,6 +760,7 @@ lazy val `submission-errors` = (project in file("submission-errors")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -777,6 +792,7 @@ lazy val `email-service` = (project in file("email-service")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -818,6 +834,7 @@ lazy val `hmda-quarterly-data-service` = (project in file ("hmda-quarterly-data- case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last diff --git a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala new file mode 100644 index 0000000000..a164fb3e50 --- /dev/null +++ b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala @@ -0,0 +1,34 @@ +package hmda.util + +import hmda.model.institution.{Institution, InstitutionType, Parent, Respondent, TopHolder} + + +object FieldNullifyUtility { + def nullifyInstitutionFields(institution: Institution): Institution = { + if( institution.activityYear>=2024) +{ + Institution( + institution.activityYear, + institution.LEI, + institution.agency, + InstitutionType.valueOf(-1), + institution.institutionId_2017, + institution.taxId, + -1, + institution.emailDomains, + institution.respondent, + Parent(-1,Some("")), + -1, + -1, + TopHolder(-1,Some("")), + institution.hmdaFiler, + institution.quarterlyFiler, + institution.quarterlyFilerHasFiledQ1, + institution.quarterlyFilerHasFiledQ2, + institution.quarterlyFilerHasFiledQ3, + institution.notes + )} + else + institution + } +} diff --git a/hmda/src/main/scala/hmda/api/http/admin/InstitutionAdminHttpApi.scala b/hmda/src/main/scala/hmda/api/http/admin/InstitutionAdminHttpApi.scala index f21fe152c7..abeebc727d 100644 --- a/hmda/src/main/scala/hmda/api/http/admin/InstitutionAdminHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/admin/InstitutionAdminHttpApi.scala @@ -1,8 +1,8 @@ package hmda.api.http.admin -import akka.cluster.sharding.typed.scaladsl.{ ClusterSharding, EntityRef } +import akka.cluster.sharding.typed.scaladsl.{ClusterSharding, EntityRef} import akka.http.scaladsl.model.headers.RawHeader -import akka.http.scaladsl.model.{ StatusCodes, Uri } +import akka.http.scaladsl.model.{StatusCodes, Uri} import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.Route import akka.util.Timeout @@ -15,14 +15,15 @@ import hmda.api.http.model.admin.InstitutionDeletedResponse import hmda.auth.OAuth2Authorization import hmda.messages.institution.InstitutionCommands._ import hmda.messages.institution.InstitutionEvents._ -import hmda.model.institution.{ Agency, Institution } +import hmda.model.institution.{Agency, Institution} import hmda.persistence.institution.InstitutionPersistence import hmda.persistence.institution.InstitutionPersistence.selectInstitution import hmda.util.http.FilingResponseUtils._ import hmda.api.http.EmailUtils._ +import hmda.util.FieldNullifyUtility.nullifyInstitutionFields -import scala.concurrent.{ ExecutionContext, Future } -import scala.util.{ Failure, Success } +import scala.concurrent.{ExecutionContext, Future} +import scala.util.{Failure, Success} object InstitutionAdminHttpApi { def create(config: Config, sharding: ClusterSharding)(implicit ec: ExecutionContext, t: Timeout): OAuth2Authorization => Route = @@ -180,7 +181,7 @@ private class InstitutionAdminHttpApi(config: Config, sharding: ClusterSharding) complete((StatusCodes.InternalServerError, errorResponse)) case Success(Some(i)) => - complete(i) + complete(nullifyInstitutionFields(i)) case Success(None) => complete(StatusCodes.NotFound) diff --git a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala index 4650610a68..7a72ca2019 100644 --- a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala +++ b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala @@ -1,9 +1,9 @@ package hmda.institution.api.http import hmda.institution.query.{InstitutionEmailEntity, InstitutionEntity} -import hmda.institution.util.HelperUtility.{nullifyInstitutionEntityFields, nullifyInstitutionFields} -import hmda.model.institution.{Institution, _} +import hmda.model.institution._ import hmda.util.CSVConsolidator.listDeDupeToList +import hmda.util.FieldNullifyUtility.nullifyInstitutionFields object InstitutionConverter { @@ -41,15 +41,11 @@ object InstitutionConverter { entity.quarterlyFilerHasFiledQ3, entity.notes ) - - if (institution.activityYear>=2024){ nullifyInstitutionFields(institution) - }else - institution } - def convert(institution: Institution): InstitutionEntity = { - val instituionInstitutionEntity = InstitutionEntity( + def convert(institution: Institution): InstitutionEntity = + InstitutionEntity( institution.LEI, institution.activityYear, institution.agency.code, @@ -74,13 +70,6 @@ object InstitutionConverter { notes = institution.notes ) - - if (instituionInstitutionEntity.activityYear>=2024){ - nullifyInstitutionEntityFields(instituionInstitutionEntity) - }else - instituionInstitutionEntity - } - def emailsFromInstitution(institution: Institution): Seq[InstitutionEmailEntity] = { val uniqueEmailDomainList= listDeDupeToList(institution.emailDomains) diff --git a/institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala b/institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala deleted file mode 100644 index 28051d4c4b..0000000000 --- a/institutions-api/src/main/scala/hmda/institution/util/HelperUtility.scala +++ /dev/null @@ -1,59 +0,0 @@ -package hmda.institution.util - -import hmda.institution.query.InstitutionEntity -import hmda.model.institution.{Institution, Respondent} - - -object HelperUtility { - def nullifyInstitutionFields(institution: Institution): Institution = { - - Institution( - institution.activityYear, - institution.LEI, - institution.agency, - null, - Some(""), - institution.taxId, - -1, - institution.emailDomains, - Respondent(institution.respondent.name,None,None), - null, - -1, - -1, - null, - institution.hmdaFiler, - institution.quarterlyFiler, - institution.quarterlyFilerHasFiledQ1, - institution.quarterlyFilerHasFiledQ2, - institution.quarterlyFilerHasFiledQ3, - institution.notes - ) - } - - def nullifyInstitutionEntityFields(institutionEntity: InstitutionEntity): InstitutionEntity = { - - InstitutionEntity( - institutionEntity.lei, - institutionEntity.activityYear, - institutionEntity.agency, - -1, - "", - institutionEntity.taxId, - -1, - institutionEntity.respondentName, - "", - "", - -1, - "", - -1, - -1, - -1, - "", - institutionEntity.hmdaFiler, - institutionEntity.quarterlyFiler, - institutionEntity.quarterlyFilerHasFiledQ1, - institutionEntity.quarterlyFilerHasFiledQ2, - institutionEntity.quarterlyFilerHasFiledQ3 - ) - } -} From 887331be47df85355e1cdf651b2c44b3f274844e Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Tue, 30 Jun 2026 09:27:00 -0400 Subject: [PATCH 05/10] clear institution fields no longer being updated by the hmda-platform service --- common/src/main/scala/hmda/model/institution/Institution.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/src/main/scala/hmda/model/institution/Institution.scala b/common/src/main/scala/hmda/model/institution/Institution.scala index e8ad884031..963160daca 100644 --- a/common/src/main/scala/hmda/model/institution/Institution.scala +++ b/common/src/main/scala/hmda/model/institution/Institution.scala @@ -185,5 +185,4 @@ case class Institution( InstitutionFieldMapping .mapping(this) .getOrElse(field, s"error: field name mismatch for $field") -} - +} \ No newline at end of file From 9777787544d75b45d7caf6dd2c8db707f600450d Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Tue, 30 Jun 2026 09:29:19 -0400 Subject: [PATCH 06/10] clear institution fields no longer being updated by the hmda-platform service --- .../hmda/institution/api/http/InstitutionConverter.scala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala index 7a72ca2019..7df437460b 100644 --- a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala +++ b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionConverter.scala @@ -9,7 +9,7 @@ object InstitutionConverter { def convert(entity: InstitutionEntity, emails: Seq[String]): Institution = { - val institution= Institution( + nullifyInstitutionFields(Institution( entity.activityYear, entity.lei, Agency.valueOf(entity.agency), @@ -40,8 +40,7 @@ object InstitutionConverter { entity.quarterlyFilerHasFiledQ2, entity.quarterlyFilerHasFiledQ3, entity.notes - ) - nullifyInstitutionFields(institution) + )) } def convert(institution: Institution): InstitutionEntity = From 6d49ecb6c28baf248ab9e1aaee9703c9a2a03a7d Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Tue, 30 Jun 2026 09:32:15 -0400 Subject: [PATCH 07/10] clear institution fields no longer being updated by the hmda-platform service --- .../hmda/institution/api/http/InstitutionQueryHttpApi.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala index bc11088cac..0a2efdbcb3 100644 --- a/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala +++ b/institutions-api/src/main/scala/hmda/institution/api/http/InstitutionQueryHttpApi.scala @@ -61,7 +61,7 @@ private class InstitutionQueryHttpApi(config: Config)(implicit ec: ExecutionCont case res: (Option[InstitutionEntity], Seq[String]) if res._1.nonEmpty => val (institution, emails) = res ToResponseMarshallable(InstitutionConverter - .convert(institution.getOrElse(InstitutionEntity()), emails).toCSV) + .convert(institution.getOrElse(InstitutionEntity()), emails)) } completeFuture(f, uri, entityMarshaller) @@ -132,7 +132,7 @@ private class InstitutionQueryHttpApi(config: Config)(implicit ec: ExecutionCont .map(_.sumLars(bankFilterList.toSeq) .recover({ case err: Throwable => log.debug("ts repo failure, most likely table not yet available for year, skipping...", err) - 0 + 0 }) .map(AnnualLarCount(yr, _))) .getOrElse(Future(AnnualLarCount(yr, 0))) From 808ff3ddefbe257bdb8fe08051f4138c37ad6c9b Mon Sep 17 00:00:00 2001 From: PatrickGoRaft Date: Tue, 30 Jun 2026 10:05:34 -0400 Subject: [PATCH 08/10] clear institution fields no longer being updated by the hmda-platform service --- common/src/main/scala/hmda/util/FieldNullifyUtility.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala index a164fb3e50..007d0ea5ac 100644 --- a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala +++ b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala @@ -5,6 +5,8 @@ import hmda.model.institution.{Institution, InstitutionType, Parent, Respondent, object FieldNullifyUtility { def nullifyInstitutionFields(institution: Institution): Institution = { + //HMDA Ops will no longer provide updates to institution fields if they are not shared + //with the transmittal sheet model if( institution.activityYear>=2024) { Institution( From 784c4841b151e50bdaa7f28a1b9fec30318dfd65 Mon Sep 17 00:00:00 2001 From: lchen <73617864+lchen-2101@users.noreply.github.com> Date: Tue, 30 Jun 2026 07:43:36 -0700 Subject: [PATCH 09/10] fix: formatting --- .../scala/hmda/util/FieldNullifyUtility.scala | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala index 007d0ea5ac..b420ce7412 100644 --- a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala +++ b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala @@ -7,29 +7,28 @@ object FieldNullifyUtility { def nullifyInstitutionFields(institution: Institution): Institution = { //HMDA Ops will no longer provide updates to institution fields if they are not shared //with the transmittal sheet model - if( institution.activityYear>=2024) -{ - Institution( - institution.activityYear, - institution.LEI, - institution.agency, - InstitutionType.valueOf(-1), - institution.institutionId_2017, - institution.taxId, - -1, - institution.emailDomains, - institution.respondent, - Parent(-1,Some("")), - -1, - -1, - TopHolder(-1,Some("")), - institution.hmdaFiler, - institution.quarterlyFiler, - institution.quarterlyFilerHasFiledQ1, - institution.quarterlyFilerHasFiledQ2, - institution.quarterlyFilerHasFiledQ3, - institution.notes - )} + if (institution.activityYear >= 2024) + Institution( + institution.activityYear, + institution.LEI, + institution.agency, + InstitutionType.valueOf(-1), + institution.institutionId_2017, + institution.taxId, + -1, + institution.emailDomains, + institution.respondent, + Parent(-1,Some("")), + -1, + -1, + TopHolder(-1,Some("")), + institution.hmdaFiler, + institution.quarterlyFiler, + institution.quarterlyFilerHasFiledQ1, + institution.quarterlyFilerHasFiledQ2, + institution.quarterlyFilerHasFiledQ3, + institution.notes + ) else institution } From 11afa3176ef44e579ca7a2b39f78b545a940f9d3 Mon Sep 17 00:00:00 2001 From: lchen <73617864+lchen-2101@users.noreply.github.com> Date: Tue, 30 Jun 2026 07:46:38 -0700 Subject: [PATCH 10/10] fix: formatting --- build.sbt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 23931bf767..f508df0111 100644 --- a/build.sbt +++ b/build.sbt @@ -270,7 +270,7 @@ lazy val `check-digit` = (project in file("check-digit")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard - case metaInfMatcher(_) => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs@_*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs@_*) => MergeStrategy.last @@ -645,7 +645,7 @@ lazy val `hmda-analytics` = (project in file("hmda-analytics")) case "application.conf" => MergeStrategy.concat case "META-INF/io.netty.versions.properties" => MergeStrategy.concat case "META-INF/MANIFEST.MF" => MergeStrategy.discard - case metaInfMatcher(_) => MergeStrategy.discard + case metaInfMatcher(_) => MergeStrategy.discard case PathList("META-INF", xs @ _*) => MergeStrategy.concat case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first case PathList("jakarta", xs @ _*) => MergeStrategy.last