How can I determine if the org that I'm currently connected to is a scratch org?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







6















When I'm within a Salesforce org, how can I tell if that org is a Scratch Org or not?



Ideally this would be via Apex, but it could be an API call if required.



This would be useful information for the creator of a managed package who may not otherwise know what type of org is running the code.





I've had a couple of thoughts on how this might be achieved:




  1. Check if the pod/instance that Scratch orgs are created on are separate from the general population of sandbox orgs. I suspect that scratch orgs have dedicated hardware. E.g. a new scratch org I just created is on p0/CS31.

  2. Look for describe Metadata that is unique to only scratch orgs.










share|improve this question

























  • Full disclosure, this question has been discussed in the GoodDaySir slack channel. For posterity, it would be useful to have a solution listed in the open. gooddaysir.slack.com/messages/C3BJMEH3J/convo/…

    – Daniel Ballinger
    Apr 4 at 1:31













  • Can you see the relevant ActiveScratchOrg or ScratchOrgInfo from within one?

    – Adrian Larson
    Apr 4 at 1:33













  • @AdrianLarson Those are in the DevHub, aren't they? I don't think they would be reachable from the Scratch org itself in isolation.

    – Daniel Ballinger
    Apr 4 at 1:38











  • For scratch dev edition orgs in specific, they are always located on CS sandbox pods but also identify as Developer Edition. That's a combo you don't see anywhere other than scratch orgs at the moment.

    – Charles T
    2 days ago











  • One other option could be to query the Organization object and identify the difference between CreatedDate and TrialExpirationDate for an Org. In majority of the cases say for DE Orgs, Prod, and Sandboxes, TrialExpirationDate will be null. If you are not considering any trial orgs, then just having TrialExpirationDate populated will help identify that the org is a Scratch Org. For Scratch Orgs, the difference between the dates though will be anything between 1-30.

    – Jayant Das
    2 days ago




















6















When I'm within a Salesforce org, how can I tell if that org is a Scratch Org or not?



Ideally this would be via Apex, but it could be an API call if required.



This would be useful information for the creator of a managed package who may not otherwise know what type of org is running the code.





I've had a couple of thoughts on how this might be achieved:




  1. Check if the pod/instance that Scratch orgs are created on are separate from the general population of sandbox orgs. I suspect that scratch orgs have dedicated hardware. E.g. a new scratch org I just created is on p0/CS31.

  2. Look for describe Metadata that is unique to only scratch orgs.










share|improve this question

























  • Full disclosure, this question has been discussed in the GoodDaySir slack channel. For posterity, it would be useful to have a solution listed in the open. gooddaysir.slack.com/messages/C3BJMEH3J/convo/…

    – Daniel Ballinger
    Apr 4 at 1:31













  • Can you see the relevant ActiveScratchOrg or ScratchOrgInfo from within one?

    – Adrian Larson
    Apr 4 at 1:33













  • @AdrianLarson Those are in the DevHub, aren't they? I don't think they would be reachable from the Scratch org itself in isolation.

    – Daniel Ballinger
    Apr 4 at 1:38











  • For scratch dev edition orgs in specific, they are always located on CS sandbox pods but also identify as Developer Edition. That's a combo you don't see anywhere other than scratch orgs at the moment.

    – Charles T
    2 days ago











  • One other option could be to query the Organization object and identify the difference between CreatedDate and TrialExpirationDate for an Org. In majority of the cases say for DE Orgs, Prod, and Sandboxes, TrialExpirationDate will be null. If you are not considering any trial orgs, then just having TrialExpirationDate populated will help identify that the org is a Scratch Org. For Scratch Orgs, the difference between the dates though will be anything between 1-30.

    – Jayant Das
    2 days ago
















6












6








6








When I'm within a Salesforce org, how can I tell if that org is a Scratch Org or not?



Ideally this would be via Apex, but it could be an API call if required.



This would be useful information for the creator of a managed package who may not otherwise know what type of org is running the code.





I've had a couple of thoughts on how this might be achieved:




  1. Check if the pod/instance that Scratch orgs are created on are separate from the general population of sandbox orgs. I suspect that scratch orgs have dedicated hardware. E.g. a new scratch org I just created is on p0/CS31.

  2. Look for describe Metadata that is unique to only scratch orgs.










share|improve this question
















When I'm within a Salesforce org, how can I tell if that org is a Scratch Org or not?



Ideally this would be via Apex, but it could be an API call if required.



This would be useful information for the creator of a managed package who may not otherwise know what type of org is running the code.





I've had a couple of thoughts on how this might be achieved:




  1. Check if the pod/instance that Scratch orgs are created on are separate from the general population of sandbox orgs. I suspect that scratch orgs have dedicated hardware. E.g. a new scratch org I just created is on p0/CS31.

  2. Look for describe Metadata that is unique to only scratch orgs.







apex scratch-org






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 4 at 1:37







Daniel Ballinger

















asked Apr 4 at 1:16









Daniel BallingerDaniel Ballinger

74.3k15155405




74.3k15155405













  • Full disclosure, this question has been discussed in the GoodDaySir slack channel. For posterity, it would be useful to have a solution listed in the open. gooddaysir.slack.com/messages/C3BJMEH3J/convo/…

    – Daniel Ballinger
    Apr 4 at 1:31













  • Can you see the relevant ActiveScratchOrg or ScratchOrgInfo from within one?

    – Adrian Larson
    Apr 4 at 1:33













  • @AdrianLarson Those are in the DevHub, aren't they? I don't think they would be reachable from the Scratch org itself in isolation.

    – Daniel Ballinger
    Apr 4 at 1:38











  • For scratch dev edition orgs in specific, they are always located on CS sandbox pods but also identify as Developer Edition. That's a combo you don't see anywhere other than scratch orgs at the moment.

    – Charles T
    2 days ago











  • One other option could be to query the Organization object and identify the difference between CreatedDate and TrialExpirationDate for an Org. In majority of the cases say for DE Orgs, Prod, and Sandboxes, TrialExpirationDate will be null. If you are not considering any trial orgs, then just having TrialExpirationDate populated will help identify that the org is a Scratch Org. For Scratch Orgs, the difference between the dates though will be anything between 1-30.

    – Jayant Das
    2 days ago





















  • Full disclosure, this question has been discussed in the GoodDaySir slack channel. For posterity, it would be useful to have a solution listed in the open. gooddaysir.slack.com/messages/C3BJMEH3J/convo/…

    – Daniel Ballinger
    Apr 4 at 1:31













  • Can you see the relevant ActiveScratchOrg or ScratchOrgInfo from within one?

    – Adrian Larson
    Apr 4 at 1:33













  • @AdrianLarson Those are in the DevHub, aren't they? I don't think they would be reachable from the Scratch org itself in isolation.

    – Daniel Ballinger
    Apr 4 at 1:38











  • For scratch dev edition orgs in specific, they are always located on CS sandbox pods but also identify as Developer Edition. That's a combo you don't see anywhere other than scratch orgs at the moment.

    – Charles T
    2 days ago











  • One other option could be to query the Organization object and identify the difference between CreatedDate and TrialExpirationDate for an Org. In majority of the cases say for DE Orgs, Prod, and Sandboxes, TrialExpirationDate will be null. If you are not considering any trial orgs, then just having TrialExpirationDate populated will help identify that the org is a Scratch Org. For Scratch Orgs, the difference between the dates though will be anything between 1-30.

    – Jayant Das
    2 days ago



















Full disclosure, this question has been discussed in the GoodDaySir slack channel. For posterity, it would be useful to have a solution listed in the open. gooddaysir.slack.com/messages/C3BJMEH3J/convo/…

– Daniel Ballinger
Apr 4 at 1:31







Full disclosure, this question has been discussed in the GoodDaySir slack channel. For posterity, it would be useful to have a solution listed in the open. gooddaysir.slack.com/messages/C3BJMEH3J/convo/…

– Daniel Ballinger
Apr 4 at 1:31















Can you see the relevant ActiveScratchOrg or ScratchOrgInfo from within one?

– Adrian Larson
Apr 4 at 1:33







Can you see the relevant ActiveScratchOrg or ScratchOrgInfo from within one?

– Adrian Larson
Apr 4 at 1:33















@AdrianLarson Those are in the DevHub, aren't they? I don't think they would be reachable from the Scratch org itself in isolation.

– Daniel Ballinger
Apr 4 at 1:38





@AdrianLarson Those are in the DevHub, aren't they? I don't think they would be reachable from the Scratch org itself in isolation.

– Daniel Ballinger
Apr 4 at 1:38













For scratch dev edition orgs in specific, they are always located on CS sandbox pods but also identify as Developer Edition. That's a combo you don't see anywhere other than scratch orgs at the moment.

– Charles T
2 days ago





For scratch dev edition orgs in specific, they are always located on CS sandbox pods but also identify as Developer Edition. That's a combo you don't see anywhere other than scratch orgs at the moment.

– Charles T
2 days ago













One other option could be to query the Organization object and identify the difference between CreatedDate and TrialExpirationDate for an Org. In majority of the cases say for DE Orgs, Prod, and Sandboxes, TrialExpirationDate will be null. If you are not considering any trial orgs, then just having TrialExpirationDate populated will help identify that the org is a Scratch Org. For Scratch Orgs, the difference between the dates though will be anything between 1-30.

– Jayant Das
2 days ago







One other option could be to query the Organization object and identify the difference between CreatedDate and TrialExpirationDate for an Org. In majority of the cases say for DE Orgs, Prod, and Sandboxes, TrialExpirationDate will be null. If you are not considering any trial orgs, then just having TrialExpirationDate populated will help identify that the org is a Scratch Org. For Scratch Orgs, the difference between the dates though will be anything between 1-30.

– Jayant Das
2 days ago












2 Answers
2






active

oldest

votes


















8














The SourceMember sObject is only present in scratch orgs. Its presence would be a sign that you are in a scratch org. The gotcha would be that it is only accessible via the Tooling API and not Apex alone.



https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_sourcemember.htm






share|improve this answer
























  • This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

    – Daniel Ballinger
    Apr 4 at 1:40



















2














Using the Organization object, both scratch and trial orgs have TrialExpirationDate, but we can use IsSandbox to differentiate the two.



Organization org = [SELECT IsSandbox, TrialExpirationDate FROM Organization];
Boolean isScratchOrg = org.IsSandbox && org.TrialExpirationDate != null;
Boolean isTrialOrg = !org.IsSandbox && org.TrialExpirationDate != null;





share|improve this answer
























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "459"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f256499%2fhow-can-i-determine-if-the-org-that-im-currently-connected-to-is-a-scratch-org%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    8














    The SourceMember sObject is only present in scratch orgs. Its presence would be a sign that you are in a scratch org. The gotcha would be that it is only accessible via the Tooling API and not Apex alone.



    https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_sourcemember.htm






    share|improve this answer
























    • This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

      – Daniel Ballinger
      Apr 4 at 1:40
















    8














    The SourceMember sObject is only present in scratch orgs. Its presence would be a sign that you are in a scratch org. The gotcha would be that it is only accessible via the Tooling API and not Apex alone.



    https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_sourcemember.htm






    share|improve this answer
























    • This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

      – Daniel Ballinger
      Apr 4 at 1:40














    8












    8








    8







    The SourceMember sObject is only present in scratch orgs. Its presence would be a sign that you are in a scratch org. The gotcha would be that it is only accessible via the Tooling API and not Apex alone.



    https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_sourcemember.htm






    share|improve this answer













    The SourceMember sObject is only present in scratch orgs. Its presence would be a sign that you are in a scratch org. The gotcha would be that it is only accessible via the Tooling API and not Apex alone.



    https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_sourcemember.htm







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Apr 4 at 1:36









    HeberHeber

    19317




    19317













    • This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

      – Daniel Ballinger
      Apr 4 at 1:40



















    • This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

      – Daniel Ballinger
      Apr 4 at 1:40

















    This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

    – Daniel Ballinger
    Apr 4 at 1:40





    This seems like a great solution and shouldn't be too difficult with an HTTP request from Apex. Especially since we don't need the Remote Site setting anymore.

    – Daniel Ballinger
    Apr 4 at 1:40













    2














    Using the Organization object, both scratch and trial orgs have TrialExpirationDate, but we can use IsSandbox to differentiate the two.



    Organization org = [SELECT IsSandbox, TrialExpirationDate FROM Organization];
    Boolean isScratchOrg = org.IsSandbox && org.TrialExpirationDate != null;
    Boolean isTrialOrg = !org.IsSandbox && org.TrialExpirationDate != null;





    share|improve this answer




























      2














      Using the Organization object, both scratch and trial orgs have TrialExpirationDate, but we can use IsSandbox to differentiate the two.



      Organization org = [SELECT IsSandbox, TrialExpirationDate FROM Organization];
      Boolean isScratchOrg = org.IsSandbox && org.TrialExpirationDate != null;
      Boolean isTrialOrg = !org.IsSandbox && org.TrialExpirationDate != null;





      share|improve this answer


























        2












        2








        2







        Using the Organization object, both scratch and trial orgs have TrialExpirationDate, but we can use IsSandbox to differentiate the two.



        Organization org = [SELECT IsSandbox, TrialExpirationDate FROM Organization];
        Boolean isScratchOrg = org.IsSandbox && org.TrialExpirationDate != null;
        Boolean isTrialOrg = !org.IsSandbox && org.TrialExpirationDate != null;





        share|improve this answer













        Using the Organization object, both scratch and trial orgs have TrialExpirationDate, but we can use IsSandbox to differentiate the two.



        Organization org = [SELECT IsSandbox, TrialExpirationDate FROM Organization];
        Boolean isScratchOrg = org.IsSandbox && org.TrialExpirationDate != null;
        Boolean isTrialOrg = !org.IsSandbox && org.TrialExpirationDate != null;






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 days ago









        Kevin VizcarraKevin Vizcarra

        8815




        8815






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Salesforce Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f256499%2fhow-can-i-determine-if-the-org-that-im-currently-connected-to-is-a-scratch-org%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How did Captain America manage to do this?

            迪纳利

            南乌拉尔铁路局