Tableau Migration SDK 5.3.0
  • Articles
  • Code Samples
  • Python API Reference
  • C# API Reference
Show / Hide Table of Contents
  • Filters
    • Filter projects by name
    • Filter users by SiteRole
    • Filter Custom Views by 'Shared' flag
  • Mappings
    • Username email
    • Rename projects
    • Change projects
  • Transformers
    • Add tags to content
    • Encrypt Extracts
    • Adjust 'Start At' to Scheduled Tasks
    • Change default users for Custom Views
    • Action URL XML Transformer
    • Modify Permissions
  • Post-Publish Hooks
    • Update permissions
  • Bulk Post-Publish Hooks
    • Bulk logging
  • Batch Migration Completed Hooks
    • Batch migration logging
  • Migration Action Completed Hooks
    • Migration action logging

Sample: Modify Permissions

This sample demonstrates how to modify permissions that are automatically updated as part of the standard post-publish step the SDK performs. To perform a separate permission update, with full control over the update logic, see the update permissions post-publish hook sample.

Permission transformers are registered for the IPermissionSet type and runs for all content types that support permissions, as well as project default permissions for all content types.

  • Python
  • C#

Transformer Class

To modify permissions in Python, you can use the following transformer class:

from tableau_migration import (
    ContentTransformerBase,
    GranteeType,
    IPermissionSet
)

class ModifyPermissionsTransformer(ContentTransformerBase[IPermissionSet]):
    def transform(self, item_to_transform: IPermissionSet) -> IPermissionSet:
        filtered_grantees = [g for g in item_to_transform.grantee_capabilities if g.grantee_type != GranteeType.GROUP]
        return item_to_transform

Registration

plan_builder.transformers.add(ModifyPermissionsTransformer)

See hook registration for more details.

Transformer Class

In C#, the transformer class for modifying permissions is implemented as follows:

public class ModifyPermissionsTransformer
    : ContentTransformerBase<IPermissionSet>
{
    public ModifyPermissionsTransformer(ISharedResourcesLocalizer localizer, ILogger<IContentTransformer<IPermissionSet>> logger) 
        : base(localizer, logger)
    { }

    public override Task<IPermissionSet?> TransformAsync(IPermissionSet itemToTransform, CancellationToken cancel)
    {
        itemToTransform.GranteeCapabilities = itemToTransform.GranteeCapabilities
            .Where(g => g.GranteeType is GranteeType.Group)
            .ToList();

        return Task.FromResult<IPermissionSet?>(itemToTransform);
    }
}

Registration

To register the transformer in C#, follow the guidance provided in the documentation.

_planBuilder.Transformers.Add<ModifyPermissionsTransformer, IPermissionSet>();

Dependency Injection

Learn more about dependency injection here.

services.AddScoped<ModifyPermissionsTransformer>();
  • Edit this page
In this article