---
schema_version: "1"
id: 1725ed829f62df7de429e6e86f5eb38b1a2ece36f42242db127ab4a196a41818
title: SessionPermSetActivation
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/object_reference/sforce_api_objects_sessionpermsetactivations.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_sessionpermsetactivations.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: b3aa34c21a69bbd7a375b9b18de3f9ce09b08cdbcc58d43fb2a3dfde481f9345
description: The SessionPermSetActivation object represents a permission set assignment activated during an individual user session. When a SessionPermSetActivation object is inserted into a permission set, an activation event fires, allowing the permission settings to apply to the user’s specific session. This object is available in API versions 37.0 and later.
---
# SessionPermSetActivation

The SessionPermSetActivation object represents a permission set assignment activated during an individual user session. When a SessionPermSetActivation object is inserted into a permission set, an activation event fires, allowing the permission settings to apply to the user’s specific session. This object is available in API versions 37.0 and later.

## Supported Calls

create(), delete(), describeLayout(), describeSObjects(), query(), retrieve()

![Note](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/images/icon_note.png)

#### Note

If you include session-based permission sets in a permission set group, the permissions in them don’t require session-based activation for users assigned to the group.

## Special Access Rules

As of Summer ’20 and later, only users who have one of these permissions can access this object:

- View Setup and Configuration
- Manage Session Permission Set Activations

## Fields

| Field Name | Details |
| --- | --- |
| AuthSessionId | 
Type

reference

Properties

Create, Filter, Group, Sort

Description

The session ID related to this permission set assignment for its duration.

This is a relationship field.

Relationship Name

AuthSession

Relationship Type

Lookup

Refers To

AuthSession



 |
| Description | 

Type

string

Properties

Create, Filter, Group, Nillable, Sort

Description

The session details, such as device used and browser.



 |
| PermissionSetGroupId | 

Type

reference

Properties

Create, Filter, Group, Nillable, Sort

Description

The permission set group ID related to this permission set group assignment and user for its duration. This field is available in API version 53.0 and later.

This is a relationship field.

Relationship Name

PermissionSetGroup

Relationship Type

Lookup

Refers To

PermissionSetGroup



 |
| PermissionSetId | 

Type

reference

Properties

Create, Filter, Group, Sort

Description

The permission set ID related to this permission set assignment and user for its duration.

This is a relationship field.

Relationship Name

PermissionSet

Relationship Type

Lookup

Refers To

PermissionSet



 |
| UserId | 

Type

reference

Properties

Filter, Group, Sort

Description

The user ID of the user to whom this permission set assignment applies for its duration.

This is a relationship field.

Relationship Name

User

Relationship Type

Lookup

Refers To

User



 |

## Usage

Use SessionPermSetActivation to create a permission set available only for a specified session’s duration. For example, create permission sets that provide access to specific applications only during authenticated sessions.

In the following Apex example, an identified session is activated after session information is submitted via a button. Successful activation results in a confirmation message displayed to the user.

public class SessionPermSetActivationController {
    // id of the session permission set to be activated
    private final String sessionPermSetId = '0PSxx00000004rJ';
    private final String sessionId; 
    
    public SessionPermSetActivationController() {
        Map<String, String\> sessionManagement = Auth.SessionManagement.getCurrentSession();
        String parentSessionId = sessionManagement.get('ParentId');
        String currentSessionId = sessionManagement.get('SessionId');
        
        sessionId = parentSessionId != null ? parentSessionId : currentSessionId;
    }
    
    public PageReference activate() {
        // activate the permission set
        SessionPermSetActivation activation = new SessionPermSetActivation();
        activation.AuthSessionId = sessionId;
        activation.PermissionSetId = sessionPermSetId;
        activation.Description = 'created by SessionPermSetActivationController';
    
        insert activation;
        return null;
    }
    
    public boolean getActivated() {
        Integer alreadyActivated =  \[SELECT count()  
            FROM SessionPermSetActivation  
            WHERE AuthSessionId = :sessionId
            And PermissionSetId = :sessionPermSetId  LIMIT 1\];
        return alreadyActivated > 0;
    }
}


<apex:page controller="SessionPermSetActivationController"\>
      <apex:outputPanel rendered="{!!Activated}"\>
          <h3>Activate Session Permission Set</h3>
          <br />
          <apex:form >
                <apex:commandButton action="{!activate}" value="Activate" id="activateButton"/>
          </apex:form>
      </apex:outputPanel>
      <apex:outputPanel rendered="{!Activated}"\>
          <h3>Session Permission Set is already active.</h3>
      </apex:outputPanel>
</apex:page>

To deactivate a session-based permission set for the current session, delete the matching SessionPermSetActivation record. Removing that record ends the activation for that permission set in that session. In this example, a deactivate() method is added to the class from the previous example.

public PageReference deactivate() {
    List<SessionPermSetActivation> activations = \[
        SELECT Id
        FROM SessionPermSetActivation
        WHERE AuthSessionId = :sessionId
            AND PermissionSetId = :sessionPermSetId
    \];
    if (!activations.isEmpty()) {
        delete activations;
    }
    return null;
}