Skip to main content

#Salesforce Developers4 discussing

Recently encountered an interesting challenge related to access recovery in Salesforce Developer Orgs, and I believe it is worth discussing with the broader Salesforce community. 

 

In certain scenarios, when a user logs into a Salesforce Developer Org through a VPN or corporate network, the security framework may identify the activity as suspicious and automatically freeze the account. 

 

The challenge becomes critical when the impacted user is the only active user in the org, and the same user is also the sole System Administrator. In such cases, the Developer Org can become completely inaccessible. 

 

What makes this more complex is that the current support and recovery journey appears to rely heavily on authentication. Even while attempting to contact support or create a case through Agentforce, users are generally expected to log in first, which is not possible in this scenario. 

 

This creates a difficult recovery situation for individual developers, consultants, and small teams managing single admin Developer Orgs. 

From a platform governance and operational resilience perspective, it may be valuable to consider additional recovery mechanisms such as alternative identity verification methods, non login based support escalation options, emergency recovery workflows for single admin orgs, or clearer guidance around VPN related access restrictions and preventive measures. 

 

Security is absolutely essential, but equally important is having a reliable and well defined recovery path when legitimate users are unintentionally locked out. 

 

Curious to know: Has anyone else in the Salesforce ecosystem experienced similar situations with Developer Orgs or security triggered account freezes? 

 

#Salesforce #DeveloperOrg #Agentforce #SalesforceAdmin #SalesforceDevelopers #CRM #Security  #Developer Edition Org

0/9000

Background: I’m designing a V1 inventory tracker in Salesforce to replace an informal spreadsheet system. We need to track physical hardware across multiple warehouses (e.g., US, International).

The Core Challenge: I need to support a Soft vs. Hard Inventory model:

  • Soft: Quantity-level tracking at the Warehouse/Opportunity level for forecasting.
  • Hard: Serialized tracking (Hardware Rev, Software Version) required only at the point of fulfillment.

Key Requirements:

  • Inventory must decrement automatically when an Opportunity is committed.
  • Device state (Serial #, Software Version) must be "locked" once delivered to ensure Support/Engineering has a clean audit trail.
  • Ability to track specific versions (Rev A vs. Rev B per customer.

Current Thinking: I’m debating between a fully custom object schema (Warehouses __c, Inventory_Items __c) versus trying to leverage standard Products/Assets.

My Questions for the Group:

  1. Has anyone built a similar "checkout" system? Did you use standard Assets for the "Hard Inventory" or a custom object?
  2. What is your preferred logic for the "Soft-to-Hard" transition (moving from a quantity count on an Opp to a specific serial number at shipping)?
  3. Any "gotchas" regarding record locking once a device is marked as delivered?

Appreciate any insights or "lessons learned" from those who have tackled hardware fulfillment! 

 

#Salesforce Developers  #Architects  #Inventory Management  #Apex

1 answer
  1. May 11, 12:53 PM

    I would be very cautious with the duplication of the data. 

     

    I do not see a strong reason for use custom objects.

0/9000

Ready to apply your Trailhead expertise to a massive enterprise scale?  

 

We’re hiring

Salesforce Developers & Architects for a top-tier banking unit in Jhb.

  • Focus: Bridging Salesforce with AWS ecosystems.
  • Experience: 6+ years + Bachelor's Degree.
  • Tech: Apex, LWC, REST APIs, and Cloud Integration patterns.

Competitive JHB package + hybrid flexibility. Join a team where architecture actually drives the business.

Reach out today to discuss the roadmap!  

zan #Architects  #Salesforce Developers

0/9000

 Salesforce Definition: A Different Perspective

 

Salesforce is a structured, cloud-based, multitenant database management system that provides specialized functionalities to manipulate data and enforces a multi-layered security system. Architecturally, Salesforce stores data in a strictly structured way at the backend, but transmits and displays it in semi-structured formats (i.e., JSON or XML). 

 

 

How many of you agree with this definition? 

 

#Salesforce  #Salesforce Developers  #Tech-discussion  #Learning

0/9000

Hello, 

 

I'm not a developer but I'm trying to create custom print button for a Service Appointment list view. Unfortunately, the Service Appointment object doesn't have Printable View button. I found a code online, although, I'm getting an error: 

Error: Cyclic page or component references '/apex/PrintServiceAppointmentList' are not allowed

 

 

If someone can kindly give me some tips on the code below, I would appreciate it. Thank  you! 

 

<apex:page> 

<apex:page standardController="ServiceAppointment" recordSetVar="s" applyHtmlTag="false" showHeader="false" sidebar="false"> 

    <apex:slds />  

    <apex:outputPanel rendered="{!NOT(ISNULL(paramPrint))}"> 

        <script> 

            window.print(); // Triggers the print dialog 

        </script> 

    </apex:outputPanel> 

    <apex:outputPanel rendered="{!ISNULL(paramPrint)}"> 

        <div class="slds-scope"> 

            <h1 class="slds-text-heading_large">Service Appointments</h1> 

            <apex:repeat value="{!s}" var="sa"> 

                <div class="slds-box slds-m-bottom_small"> 

                    <p><b>Appointmen tNumber:</b> {!sa.AppointmentNumber}</p> 

                    <p><b>Account:</b> {!sa.AccountId}</p> 

                    <p><b>Work Type:</b> {!sa.WorkTypeId}</p> 

                    <p><b>Due Date:</b> {!sa.DueDate}</p> 

                    <p><b>Description:</b> {!sa.Description}</p> 

                    <p><b>Service Territory:</b> {!sa.ServiceTerritoryId}</p> 

                    <p><b>Address:</b> {!sa.Address} {!sa.City}</p> 

                    <p><b>Created By:</b> {!sa.CreatedById}</p> 

               </div> 

            </apex:repeat> 

        </div> 

        <!-- Button to view printable version -->  

       </apex:outputPanel> 

     <a href="/apex/PrintServiceAppointmentList?paramPrint=1" target="CarlosPMsUpcoming" class="slds-button slds-button_brand">Print This View</a> 

</apex:page> 

</apex:page> 

 

 

@Salesforce Developers

 

#Salesforce Developers

 

 

1 answer
  1. Jan 18, 11:07 AM

    hy @Michelle Johnson, The error happens because the page is calling itself using the same Visualforce URL, which creates a circular reference. You also have two apex:page tags, which is not allowed. Use only one apex:page, keep the standardController with recordSetVar, and remove the self-referencing link logic. For list view printing, you don’t need to reload the same page with a parameter; instead, render the list once and trigger window.print() directly, or use a separate Visualforce page purely for printing. That will avoid the cyclic reference and the error.

0/9000

Hello. Why omniscript reload when the method This.omniNavigateTo() is called from lwc that IS embeded in omniscript?

#Omnistudio #Omni #Vlocity #Vlocity Architects #Salesforce Developer #Salesforce Developers #Developer #Developers #Lightning Web Components
2 comments
  1. Dec 23, 2025, 6:42 AM

    The this.omniNavigateTo() function triggers a page navigation event. When used inside an LWC embedded within an OmniScript, it often bubbles up and causes the entire OmniScript container to refresh or re-initialize, looking like a "reload."

    Solution:

     

    Instead of this.omniNavigateTo(), use the

    OmniScriptBaseMixin events to communicate with the parent OmniScript without forcing a full page navigation.

    1. If moving to the Next Step:

    javascript

    this.dispatchEvent(new CustomEvent('omninesxtstep'));

    If updating data:

    javascript

    this.omniApplyCallResp({ "yourData": "value" });

    Why it happens: omniNavigateTo is designed for PageReference navigation (like moving from Salesforce Page A to Salesforce Page B). When you call it, the framework assumes you are leaving the current context, so it reloads the component wrapper. Avoid using it for simple step transitions inside the same OmniScript. 

    1. https://trailblazers.salesforce.com/profileView?u=0053A00000FTqkWQAT
0/9000

What is its function/purpose?    

2 answers
  1. Dec 11, 2025, 12:46 PM

    Hi @Shana Hawtrey

     

    The Salesforce CLI is a powerful command line interface that simplifies development and build automation when working with your Salesforce org.

    Use it to:

    • Aggregate all the tools you need to develop with and perform commands against your Salesforce org
    • Synchronize source to and from scratch orgs
    • Create and manage orgs
    • Import and export data
    • Create and execute tests
    • Create and install packages

     Refer: 

    https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_intro.htm

     

    https://developer.salesforce.com/tools/salesforcecli

     

    Thanks!

0/9000
2 answers
  1. Eric Burté (DEVOTEAM) Forum Ambassador
    Dec 7, 2025, 9:38 PM

    Hello @Surendra Chinnadandluru, with LWC I guess you can use jsPDF library, but  I would suggest doing it in a simple way with visualforce, where you just have to render your page as PDF (with <apex:page RenderAs="PDF">). 

    Eric

0/9000

Join us on November 20, 2025 at 11:00 a.m. SGT

 to explore what’s next for the Salesforce Platform! Get the top highlights from Dreamforce 2025—including Agentforce, Data Cloud, and innovations in Flow, Apex, and LWC.  

  

The agenda covers deep dives into:

- Agentforce and the latest Data Cloud innovations. 

- Core platform updates: Flow, Apex, and LWC

- The future of the Well-Architected Framework

Register now 

 

Please spread the news to everyone in the Salesforce community across the ASEAN!

 

#Dreamforce2025  #Agentforce  #Architects  #Salesforce Developers  #Salesforce Admin

0/9000

I'm receiving an error while trying to view a experience community page as a logged in Portal User that embeds an Omnistudio Flex Card that is built on the Omnistudio Standard Runtime Designer "Failed to process response from Apex class Exception: INVALID_TYPE: sObject type 'ApexClass' is not supported.:

".   

 

The data source of the Flex card is Apex Remote. This works fine when previewed by admin using test params but fails with authorized Portal Users. The same happens when a remote action is called from an Omnistudio Omniscript form for authorized portal users.  

 

On checking the logs in the developer tools from the browser, I saw the params are passed to the data source input, but the apex call is failed, so the flex card loads with blank data.  

 

The Portal User is a Customer Community Login Plus licensed, and has all the Omni related object permissions (Read), sharing settings (Public Read Only), Apex Class permissions, Field Permissions for Omni related Objects and Omnistudio Experience Cloud User Permission Set assigned. 

 

If any of you faced and resolved this issue before, kindly help. 

Failed to process response from Apex class Exception: INVALID_TYPE: sObject type 'ApexClass' is not supported.:

 

#Salesforce Developer #Salesforce Developers #Developer Forums #Omnistudio 

2 answers
  1. Oct 23, 2025, 5:54 AM

    ContentDocument document = [SELECT Title FROM ContentDocument WHERE Id IN (SELECT ContentDocumentId FROM ContentVersion WHERE Id = :cvId)]; 

     

            String fileName = document.Title; 

     

            System.debug('file Name '+ fileName); 

     

    // Prepare the metadata for the file, including the name and parent folder ID 

     

    String metadata = JSON.serialize(new Map<String, Object>{ 

     

        'name' => fileName, 

     

        'parents' => new List<String>{folderId} 

     

    }); 

     

    String boundary = '-------314159265358979323846'; 

     

    String delimiter = '\r\n--' + boundary + '\r\n'; 

     

    String close_delim = '\r\n--' + boundary + '--'; 

     

    String contentType = 'application/pdf'; // Adjust this based on your file type 

     

    // Combine the metadata and file content into a single request body 

     

    String requestBody = delimiter + 

     

        'Content-Type: application/json\r\n\r\n' + 

     

        metadata + '\r\n' + 

     

        delimiter + 

     

        'Content-Type: ' + contentType + '\r\n' +  

     

        'Content-Transfer-Encoding: base64\r\n\r\n' + 

     

        EncodingUtil.base64Encode(cv.VersionData) + 

     

        close_delim; 

     

    // Prepare the HttpRequest 

     

    HttpRequest req = new HttpRequest(); 

     

    req.setHeader('Authorization', 'Bearer ' + accessToken); 

     

    req.setHeader('Content-Type', 'multipart/related; boundary="' + boundary + '"'); 

     

    req.setMethod('POST'); 

     

    req.setEndpoint('

    https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart

    '); 

     

    req.setHeader('Content-Length', String.valueOf(requestBody.length())); 

     

    req.setBody(requestBody); 

     

    // Send the request 

     

    Http http = new Http(); 

     

    HttpResponse response = http.send(req); 

     

    System.debug(response.getBody()

0/9000