Managed Packages
While the GRAX Application is hosted outside of the Salesforce platform, we provide our customers with multiple ways to integrate GRAX with Salesforce to best fit their needs. This guide walks you through installing and managing the optional GRAX Salesforce Managed Packages.
Pre-requisites
Prior to installing a GRAX Managed Package, you'll need the following:
-
A copy of the GRAX Application connected to a storage bucket running on cloud infrastructure
Need help getting set up?
Contact Support or the Trial Team for assistance.
-
A Salesforce account
- You can use your existing Salesforce account or register here for a Salesforce Developer Edition account
Available Managed Packages
We offer two Managed Packages:
Second Generation Managed Package
The Second Generation Managed Package is our latest and greatest GRAX Managed Package. This package features:
- Second Generation LWCs
- Fewer
Custom Settings
to configure - No scheduled jobs
- No permission sets to configure
Installing the Second Generation Managed Package
- Install GRAX Second Generation Managed Package in Production (including Developer Editions) or Install GRAX Second Generation Managed Package in Sandbox (including Scratch orgs)
- Enter Salesforce login details
- Select the user type (
Admin Users
,All Users
, orSpecific Profiles
) you'd like to install the managed package for and clickInstall
Install for Admins Only
:- Specifies the following settings on the installing administrator’s profile and any profile with the
Customize Application
permission:- Apex classes — enabled
- Custom LWC tab - enabled
- Custom Settings record - enabled
- Second Generation LWCs - enabled
- After installation, if you have Enterprise, Performance, Unlimited, or Developer Edition, set the appropriate user and object permissions on custom profiles as needed
- Specifies the following settings on the installing administrator’s profile and any profile with the
Install for All Users
:- Specifies the following settings on all internal custom profiles:
- Apex classes — enabled
- Custom LWC tab - enabled
- Custom Settings record - enabled
- Second Generation LWCs - enabled
- Specifies the following settings on all internal custom profiles:
Install for Specific Profiles
:- Enables you to choose the usage access for all custom profiles in your organization. You can set each profile to have full access or no access for the new package and all its components.
- Full Access — Specifies the following settings for each profile.
- Apex classes — enabled
- Custom LWC tab - enabled
- Custom Settings record - enabled
- Second Generation LWCs - enabled
- Enables you to choose the usage access for all custom profiles in your organization. You can set each profile to have full access or no access for the new package and all its components.
- Please Note: If you install for
All Users
, then all users will have access to the Apex Classes thar support the LWCs. If you install forAdmin's Only
orSpecific Profiles
, and the LWCs are not displaying for a user, then you'll need to provide users access to the Apex Classes listed below via a permission set or by adding them directly to their profile.- Version
- Custom Settings
Configuring the Second Generation Managed Package
Once the installation is complete, take the following steps:
- Configure Custom Settings
- Open SFDC Setup
- Search for
Custom Settings
- Click on
Manage
next toGRAX Settings
- Click
New
to create a new organization-level default custom setting record - Populate the
URL
field with the URL of your GRAX instance (e.g.https://mygraxapp.secure.grax.io
)
- Configure Trusted URLs
- Search for
Trusted URLs
in SFDC Setup - Click
New Trusted URL
- Enter any acceptable name for the new Trusted URL
- Populate the
URL
field with the URL of your GRAX instance (e.g.https://mygraxapp.secure.grax.io
) - Check the
frame-src
checkbox Save
the new Trusted URL- Repeat the steps above to add another Trusted URL, but this time populate the
URL
field withhttps://hq.grax.com
- Search for
First Generation Managed Package
The First Generation Managed Package was the first, and original, GRAX Managed Package. This package features:
Installing the First Generation Managed Package
-
Install GRAX First Generation Managed Package in Production (including Developer Editions) or Install GRAX First Generation Managed Package in Sandbox (including Scratch orgs)
-
Enter Salesforce login details
-
Select the user type (
Admin Users
,All Users
, orSpecific Profiles
) you'd like to install the managed package for and clickInstall
Install for Admins Only
: Specifies the following settings on the installing administrator’s profile and any profile with theCustomize Application
permission:- Object permissions —
Read,
Create,
Edit,
Delete,
View All,
andModify All
enabled - Field-level security — set to visible and editable for all fields
- Apex classes — enabled
- Visualforce pages — enabled
- App settings — enabled
- Tab settings — enabled for GRAX app
- Page layout settings — read only
- Record Type settings — read only
- After installation, if you have Enterprise, Performance, Unlimited, or Developer Edition, set the appropriate user and object permissions on custom profiles as needed
- Object permissions —
Install for All Users
: Specifies the following settings on all internal custom profiles:- Object permissions —
Read,
Create,
Edit,
andDelete
enabled - Field-level security — set to visible and editable for all fields
- Apex classes — enabled
- Visualforce pages — enabled
- App settings — enabled
- Tab settings — enabled for GRAX app
- Page layout settings — read only
- Record Type settings — copied from administrator profile
- Object permissions —
Install for Specific Profiles
: Enables you to choose the usage access for all custom profiles in your organization. You can set each profile to have full access or no access for the new package and all its components.- Full Access — Specifies the following settings for each profile.
- Object permissions —
Read,
Create,
Edit,
Delete,
View All,
andModify All
enabled - Field-level security — set to visible and editable for all fields
- Apex classes — enabled
- Visualforce pages — enabled
- App settings — enabled
- Tab settings — enabled for GRAX app
- Page layout settings — read only
- Record Type settings — read only
-
Before the installation begins, you'll be prompted to grant third-party access. Check the box granting access to third-party websites and click
Continue.
Configuring the First Generation Managed Package
Configure Custom Settings
To enable a custom setting, follow the steps below:
- Using Quick Find in Salesforce Setup, search for
Custom Settings
- Click
Manage
next to GRAX Settings - Click
Edit
- Click the checkbox next to the custom setting you wish to enable
- Click
Save
Enable Auto Backup Custom Setting
The Enable Auto Backup custom setting, when set to TRUE, does the following:
Redirects the Schedule tab to the GRAX Application, which removes the ability to see legacy backup and archive jobs
BEFORE enabling this custom setting, you need to ensure that ALL of the following are true:
- All legacy backup jobs have been deactivated
- All legacy archive jobs have been deactivated
- All archive jobs, that you want to continue to run, have been moved over to the GRAX Application
Enable GRAX Next Generation Custom Setting
The Enable GRAX Next Generation custom setting, when set to TRUE, does the following:
- Redirects the
Search
tab to GRAX Global Search - Redirects the
Summary
tab to GRAX Auto Backup - Hides the
Summary History
dropdown on an individual GSP action dropdown - Hides
Datalake Delete
tab - Hides
Logs
tab - Hides
Setup
sub-tab (GRAX>Configuration>Setup) - Hides
Time Machine Trigger Template Code
on GRAX>Configuration>Miscellaneous
Configure Trusted URLs
- Search for
Trusted URLs
in SFDC Setup - Click
New Trusted URL
- Enter any acceptable name for the new Trusted URL
- Populate the
URL
field with the URL of your GRAX instance (e.g.https://mygraxapp.secure.grax.io
) - Check the
frame-src
checkbox Save
the new Trusted URL- Repeat the steps above to add another Trusted URL, but this time populate the
URL
field withhttps://hq.grax.com
Assign Permission Sets
- Using Quick Find in Salesforce Setup, search for
Users
and navigate to the user that you're granting permissions to - Click
Edit Assignments
- Select from the permission sets included in the GRAX Salesforce Managed Package and click
Add
- Click
Save
Configure GRAX in Salesforce
- Launch the GRAX app in Salesforce from the App Launcher icon and click
Unlock
in the bottom right corner - In a separate tab, login to GRAX and navigate to
Settings
>GRAX API Tokens
>Reveal GRAX Tokens
- Copy and paste the Application URL and API Token information from GRAX into Salesforce and click
Save
NOTE:
The GRAX Configuration tab will need to be reconfigured each time the application URL or the API tokens change
Configure Remote Site Setting
- Click
Add Remote Site Setting
- The necessary information will auto-populate
- Click
Save
Frequently Asked Questions
Don't I need the Managed Package to manage and utilize GRAX?
No - Using the GRAX Salesforce Managed Package is now optional. All GRAX features, with the exception of LWCs, can be accessed directly via the application's web interface.
How do I know whether I have the First or Second Generation Managed Package installed?
The First Generation Managed Package namespace is grax
, while the Second Generation Managed Package namespace is graxinc
.
Can I have both the First Generation and Second Generation Managed Packages installed at the same time?
Technically, yes you can. However, we do not recommend this as it may be difficult to decipher between the different LWCs and permission sets.
Can I manage permission sets without the Managed Package?
User permission sets can be created via the Auto Config
flow during initial configuration, or by manually creating the Console permission sets by using the Salesforce Developer Console.
What does it mean to uninstall a Managed Package?
Uninstalling a managed package removes its components and data from the org. During the uninstall process, any customizations, including custom fields or links, that you’ve made to the package are removed.
Do I need special permissions to uninstall the Managed Package?
To uninstall managed packages, you will need the Download AppExchange Packages
user permission.
How do I uninstall the Managed Package?
Log in to the Salesforce org where you want to uninstall the GRAX Salesforce Managed Package and follow the steps here.
NOTE:
It is not necessary to save any of the GRAX Salesforce Managed Package data. This will only contain configuration and helper job information which is now maintained on the GRAX Application.
After uninstalling the GRAX Salesforce Managed Package it will appear under the Uninstalled Packages
section. Once the uninstall status is complete you can delete the GRAX Salesforce Managed Package by clicking Del
under Action
. Click OK
when prompted to permanently delete it.
NOTE:
All referenced components will need to be removed prior to the uninstalling and deleting the GRAX Salesforce Managed Package. The most common components that will need to be removed are Permission sets and the Lightning Web Component Bundle. If the managed package user permission sets are being used then these will need to be replaced by first manually creating the Console permission sets and assigning them to the users. If the LWC included in the managed package are being used, then these will also need to be replaced by the Embedded LWC Data Viewer option.
Click here for additional resources on removing a SFDC managed package.
Can I migrate permission sets from the Managed Package to the "Console" permission sets?
Yes. Before starting the migration, run Auto Config
(or create the Console permission sets manually) to ensure the destination permission sets exist. The script below will map the managed package permission sets to the Console permission sets:
- GRAX Configuration Admin -> GRAX Console Admin Permission
- GRAX Advanced User -> GRAX Console Power Permission
- GRAX User -> GRAX Console Standard Permission
To run the script in the Salesforce Developer Console:
- Open the Salesforce Developer Console
- Open the
Debug
menu - Select
Open Execute Anonymous Window
(or pressCTRL + E
) - Copy the script below into the
Enter Apex Code
dialog - Select the
Open Log
checkbox - Click
Execute
private class GRAXLegacyPerm {
Map<String, Id> psIDs;
Map<String, Set<Id>> existingConsole;
public GRAXLegacyPerm() {
List<PermissionSet>lps=[
SELECT Id, Name
FROM PermissionSet
WHERE name in ('GRAX_Configuration_Admin', 'GRAX_Advanced_User', 'GRAX_User', 'GRAX_Console_Admin_User', 'GRAX_Console_Power_User', 'GRAX_Console_Standard_User')
];
psIDs = new Map<String, Id>();
for(PermissionSet ps : lps){
System.debug('PermissionSet '+ps.Name +' Id: ' + ps.Id);
psIDs.put(ps.Name, ps.Id);
}
existingConsole = new Map<String, Set<Id>>();
for (String name : new String[]{'GRAX_Console_Admin_User', 'GRAX_Console_Power_User', 'GRAX_Console_Standard_User'}) {
List<PermissionSetAssignment> ecpsa = [
SELECT AssigneeId
FROM PermissionSetAssignment
WHERE IsActive=true
AND PermissionSetId = :psIDs.get(name)
];
Set<Id> ecpsuID = new Set<Id>();
for (PermissionSetAssignment a : ecpsa) {
ecpsuID.add(a.AssigneeId);
}
existingConsole.put(name, ecpsuID);
System.debug('Existing '+name +' User Ids: ' + ecpsa);
}
}
public String migratePermSet(String oldPS, String newPS) {
List<PermissionSetAssignment> migratePS = new List<PermissionSetAssignment>();
List<PermissionSetAssignment> lpsuID = [
SELECT AssigneeId
FROM PermissionSetAssignment
WHERE IsActive=true
AND PermissionSetId = :psIDs.get(oldPS)
AND AssigneeId NOT IN :existingConsole.get(newPS)
];
for(PermissionSetAssignment a : lpsuID){
System.debug('Migrate '+oldPS+' User: ' + a.AssigneeId + ' to '+newPS);
migratePS.add( new PermissionSetAssignment (
PermissionSetId = psIDs.get(newPS),
AssigneeId = a.AssigneeId
));
if( migratePS.size() > 200) {
upsert migratePS;
migratePS.clear();
}
}
if( migratePS.size() > 0) {
try {
insert migratePS;
} catch(DmlException e) {
System.debug('error: ' + e);
}
migratePS.clear();
}
return 'done';
}
}
GRAXLegacyPerm glp = new GRAXLegacyPerm();
glp.migratePermSet('GRAX_Configuration_Admin', 'GRAX_Console_Admin_User');
glp.migratePermSet('GRAX_Advanced_User', 'GRAX_Console_Power_User');
glp.migratePermSet('GRAX_User', 'GRAX_Console_Standard_User');
Updated 1 day ago