crm.schemas.custom.write scope behavior during legacy app to Project-based app migration

VDugar
Participant | Diamond Partner
Participant | Diamond Partner

I have a question about Custom Objects scopes while migrating an app.

I will be migrating an existing legacy app (which already has access to crm.schemas.custom.write via the Custom Objects Schema Pilot in 2024) into a Project-based app.

While preparing for this, I recreated the functionality in a separate test project and test app. That test app does not have pilot access, and when I includecrm.schemas.custom.write, the HubSpot CLI fails with:

The scope crm.schemas.custom.write could not be recognized. Check your scope and try again.

I understand why this happens for the test app, since it doesn’t have pilot access. What I want to confirm is the behavior during the actual migration of the legacy app that does have access.

My questions are:

  • When a legacy app with pilot-granted access is migrated, does that access carry over to the Project-based app?
  • Are pilot-only scopes such ascrm.schemas.custom.write supported in Project-based apps?
  • Is there any action required from HubSpot to preserve this access during migration?

Any guidance or confirmation would be hugely appreciated.

0 Upvotes
2 Accepted solutions
JOB3
Solution
Community Manager
Community Manager

Hello @VDugar

 

I understand this is a new type of migration which you need more information about. Here is what I found regarding your queries above:

  1.  Yes, the access will carry over from the legacy app to the project based app through the migration. The only time the custom objects would end missing if it wasn't on the legacy app to begin with ( migration dev docs
  2. Pilot-only scopes such as crm.schemas.custom.write are supported in project-based apps, provided your developer account is in the relevant pilot and allowed to request them.

I recommend to review the key limitations for more information on what is supported and not supported when migrated to the project based apps. You can also verify the resulting scopes after the migration through these steps

 

Cheers🚀

Josefina - Community Moderator 

 

View solution in original post

RubenBurdin
Solution
Top Contributor

Hi @VDugar  this is a great question, and honestly you’re not alone. The confusion usually comes from mixing three different things that HubSpot treats separately: the app container type (legacy vs project-based), the scopes themselves, and the pilot entitlement.

 

A key thing to anchor on is that scopes are granted to the app, but the ability to request certain scopes is tied to your developer account’s pilot access, not the CLI or the project-based app model. That’s why your test app fails validation when you add crm.schemas.custom.write. The CLI is doing exactly what it should when the developer account behind that app isn’t enrolled in the Custom Objects Schema pilot.

 

For the real migration case, the behavior Josefina described is consistent with how HubSpot has been handling pilot entitlements lately. When you migrate a legacy app to a project-based app, HubSpot preserves the app’s existing scope grants, including pilot-only scopes, as long as they were already present on the legacy app at the time of migration. In other words, migration does not re-validate those scopes against the public scope catalog.

 

Project-based apps themselves do support pilot-only scopes. The limitation isn’t the app type, it’s whether the app or developer account is entitled to request them. This is why recreating the app from scratch in a non-pilot account doesn’t work, but migrating the existing one does.

The only time things usually go wrong is if the legacy app never actually had the scope granted, or if the pilot access was revoked before migration. After migration, it’s a good practice to explicitly verify scopes in the app settings and by inspecting an access token to confirm crm.schemas.custom.write is still present (https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/overview )

 

If you want something more official for peace of mind, the safest escalation path is still developer support tied to the developer account that owns the pilot. General in-app support often can’t see pilot entitlements, which explains the vague responses you got. Pointing them directly to the migration behavior documented here also helps frame the question more concretely (https://developers.hubspot.com/docs/apps/developer-platform/build-apps/migrate-an-app/migrate-an-exi... ) Hope this helps clarify what’s going on.

Did my answer help? Please mark it as a solution to help others find it too.

Ruben Burdin Ruben Burdin
HubSpot Advisor
Founder @ Stacksync
Real-Time Data Sync between any CRM and Database
Stacksync Banner

View solution in original post

6 Replies 6
RubenBurdin
Solution
Top Contributor

Hi @VDugar  this is a great question, and honestly you’re not alone. The confusion usually comes from mixing three different things that HubSpot treats separately: the app container type (legacy vs project-based), the scopes themselves, and the pilot entitlement.

 

A key thing to anchor on is that scopes are granted to the app, but the ability to request certain scopes is tied to your developer account’s pilot access, not the CLI or the project-based app model. That’s why your test app fails validation when you add crm.schemas.custom.write. The CLI is doing exactly what it should when the developer account behind that app isn’t enrolled in the Custom Objects Schema pilot.

 

For the real migration case, the behavior Josefina described is consistent with how HubSpot has been handling pilot entitlements lately. When you migrate a legacy app to a project-based app, HubSpot preserves the app’s existing scope grants, including pilot-only scopes, as long as they were already present on the legacy app at the time of migration. In other words, migration does not re-validate those scopes against the public scope catalog.

 

Project-based apps themselves do support pilot-only scopes. The limitation isn’t the app type, it’s whether the app or developer account is entitled to request them. This is why recreating the app from scratch in a non-pilot account doesn’t work, but migrating the existing one does.

The only time things usually go wrong is if the legacy app never actually had the scope granted, or if the pilot access was revoked before migration. After migration, it’s a good practice to explicitly verify scopes in the app settings and by inspecting an access token to confirm crm.schemas.custom.write is still present (https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/overview )

 

If you want something more official for peace of mind, the safest escalation path is still developer support tied to the developer account that owns the pilot. General in-app support often can’t see pilot entitlements, which explains the vague responses you got. Pointing them directly to the migration behavior documented here also helps frame the question more concretely (https://developers.hubspot.com/docs/apps/developer-platform/build-apps/migrate-an-app/migrate-an-exi... ) Hope this helps clarify what’s going on.

Did my answer help? Please mark it as a solution to help others find it too.

Ruben Burdin Ruben Burdin
HubSpot Advisor
Founder @ Stacksync
Real-Time Data Sync between any CRM and Database
Stacksync Banner
JOB3
Community Manager
Community Manager

Hi @VDugar

 

Thank you for reaching out to the community, glad to have you here! I'm adding some top experts to help us @alyssamwilie  @Anton @ArtyCele. Do you have any suggestions for @VDugar's 3 inquiries ? 

 

Josefina, Community Moderator 

0 Upvotes
ArtyCele
Top Contributor

Thanks for the mention @JOB3 !

@VDugar I am struggling to find anything in the dev documentation , specifically confirming the migration of access too.
I'd confirm with Hubsport directly.

Artyom Celegato

Snr. Revenue Operations Analyst

Revenue Operations | Causaly

mobilePhone
07487730233
emailAddress
artyom.celegato@causaly.com
address
10-16 Elm St, London WC1X 0BJ
Create Your Own Free Signature
0 Upvotes
VDugar
Participant | Diamond Partner
Participant | Diamond Partner

Thanks for replying @ArtyCele.

I tried using the in-app support, but did not receive a useful response. They also did not have any information regarding this.

I also tried posting this on the Developer Slack, but did not get any response.

 

Are you aware of any email address to which I can send an email about this?

0 Upvotes
JOB3
Solution
Community Manager
Community Manager

Hello @VDugar

 

I understand this is a new type of migration which you need more information about. Here is what I found regarding your queries above:

  1.  Yes, the access will carry over from the legacy app to the project based app through the migration. The only time the custom objects would end missing if it wasn't on the legacy app to begin with ( migration dev docs
  2. Pilot-only scopes such as crm.schemas.custom.write are supported in project-based apps, provided your developer account is in the relevant pilot and allowed to request them.

I recommend to review the key limitations for more information on what is supported and not supported when migrated to the project based apps. You can also verify the resulting scopes after the migration through these steps

 

Cheers🚀

Josefina - Community Moderator 

 

VDugar
Participant | Diamond Partner
Participant | Diamond Partner

Thank you! This is very helpful.