When you install Metacoda Custom Tasks for use in SAS® Enterprise Guide® and the SAS® Add-In for Microsoft Office you may find you don’t see the new menu items you expected in the Tools menu:
There are 2 main reasons why they may be missing: 1) the custom tasks could not be loaded, perhaps due to an issue during installation; and 2) you are not being granted access to the custom tasks due to your metadata roles and capabilities. The first issue is usually quite easy to resolve. This post is about the second scenario because it can be somewhat harder to troubleshoot.
Roles and capabilities are used in the SAS platform to control access to SAS application features such as menu items in SAS Enterprise Guide. In a new SAS platform installation the PUBLIC group (which includes everyone) is a member of the Enterprise Guide: Advanced role, and that role grants all capabilities for SAS Enterprise Guide. That means, by default, all users have access to all of the controllable features in SAS Enterprise Guide. Some SAS customers change this, as may be required for their security plan, by removing the PUBLIC group and replacing it with more appropriate groups for their environment, and perhaps create additional roles with the required capabilities. It is in this scenario where you may find your capability set is preventing access to the Metacoda Custom Tasks.
It is quite clear when you have a limited subset of SAS Enterprise Guide capabilities, as you will see Functions: Restricted on the status bar in the bottom right corner of the window:
Additionally, if you have turned on logging for SAS Enterprise Guide you may see a line like this in the log file:
2019-06-14 20:55:03,249 [Main] DEBUG SAS.EC.Directory.Metadata.OMSProvider [(null)] - Action: Component Enterprise Guide 7.1, Name Access Unregistered Custom Tasks, Authorized = N
That line indicates that the Access Unregistered Custom Tasks capability has not been granted to the current user. This is a special capability that controls access to custom tasks that have not been installed with their own capability for controlling access – a catch-all if you like. You can see it if you look at one of the roles in SAS Management Console User Manager:
By default that capability is granted in the Enterprise Guide: Advanced role that has PUBLIC (everyone) as a member. Unless this has been modified at your site, that means everyone should have the capability to access Metacoda Custom Tasks (as unregistered custom tasks). If this default setup has been modified in your SAS platform environment then you may need to dig deeper.
When Metacoda Custom Tasks have been installed using the simpler and more common Drop-In Deployment method, they are Unregistered Custom Tasks and so access to them may be blocked because the user has not been granted that capability. To resolve this you might take the simple approach of granting the Access Unregistered Custom Tasks capability to a role the user is a member of (most likely indirectly through a group they are a member of). That means the user will then get access to any new unregistered custom tasks that may get installed in future. Whilst that might be an approach you want to take to keep it simple, you may prefer instead to have more control and only grant access to specific unregistered custom tasks only. For that latter approach you would need to convert the Unregistered Custom Tasks to Registered Custom Tasks by switching from Drop-in Deployment to Add-In Deployment and giving them their own capabilities. This is covered in the second half (add-in deployment steps) of the Deploy Custom Tasks subsection, and the Register Custom Tasks as Capabilities subsection of the Registering Custom Tasks as Capabilities in SAS Enterprise Guide section in the SAS 9.4 Intelligence Platform: Desktop Application Administration Guide. To help those that might be looking to do this with Metacoda Custom Tasks, I’ll go through those steps with some screenshots.
First you will want to remove the Metacoda Custom Tasks DLL (MetacodaCTL.dll) from any of the well-known Drop-In Deployment locations that SAS Enterprise Guide scans for custom tasks:
- C:\Program Files\SASHome\SASEnterpriseGuide\7.1\Custom
- %APPDATA%\SAS\EnterpriseGuide\7.1\Custom e.g. C:\Users\Paul\AppData\Roaming\SAS\EnterpriseGuide\7.1\Custom
- %APPDATA%\SAS\SharedSettings\7.1\Custom e.g. C:\Users\Paul\AppData\Roaming\SAS\SharedSettings\7.1\Custom
Next, choose another local location you want to use for Add-In Deployment, and download/copy the Metacoda Custom Tasks DLL (MetacodaCTL.dll) into that location e.g. C:\MetacodaCustomTasks\MetacodaCTL.dll
Start, or restart, SAS Enterprise Guide and use the menu items Tools > Add-In > Add-In Manager …
In the Add-In Manager window, click the Browse… button and navigate to and select the MetacodaCTL.dll file from the Add-In Deployment Directory directory you chose above (e.g. C:\MetacodaCustomTasks\MetacodaCTL.dll) then click the Open button.
You should then see the two Metacoda Custom Tasks (both contained in that DLL) listed in Add-In Manager dialog.
Click the OK button to return the the main SAS Enterprise Guide window.
Now the custom tasks have been deployed, it is time to register new capabilities for them. Use the SAS Enterprise Guide menu items Tools > SAS Enterprise Guide Explorer…:
Then use the SAS Enterprise Guide Explorer menu items Tools > Task Import Wizard:
On the 1st Task Import Wizard page, review the details and click the Next> button:
On the 2nd Task Import Wizard page, keep “All known locations on this computer” selected and click the Next> button:
On the 3rd Task Import Wizard page, review the results and click the Next> button:
On the 4th Task Import Wizard page, select both of the Metacoda Custom Tasks, Metadata Column Finder and Metadata Table Finder, then click the Next> button:
On the 5th Task Import Wizard page, choose a locale that is correct for you (en for me), then click the Next> button:
On the 6th and final Task Import Wizard page, review the message, then click the Finish button:
After the wizard completes, you should see both Metacoda Custom Tasks listed in the SAS Enterprise Guide Explorer Actions folder:
You should also be able to find both Metacoda Custom Tasks shown as newly available capabilities for roles using the SAS Management Console User Manager:
These Metacoda Custom Task capabilities can now be granted to roles (and their members) as needed. You may notice that the capabilities are listed, but not granted, within each of the 4 pre-defined SAS Enterprise Guide roles:
- Enterprise Guide: Advanced
- Enterprise Guide: Analysis
- Enterprise Guide: OLAP
- Enterprise Guide: Programming
You may decide to grant, or not grant, these new capabilities within these pre-defined roles as you need. However, please bear in mind that it is considered a good practice to leave the capability sets of the pre-defined roles like these untouched (changing the members is expected). Instead of changing the capability sets of the pre-defined roles, it is considered a good practice to instead make copies and change those copies. How do you easily duplicate/copy a role? Stay tuned for a future post about new Metacoda Security Plug-ins features we are working on for duplicating security related metadata objects … like ACTs, Users, Groups, and Roles! ;)
I hope you have found this post useful. Please let me know if you have any comments or questions by posting below.