Loading
Run activity based on compliance info

Hi,

I would like to extend our default SLM AutomationBook workflow with a "run extra activity based on compliance info"

1. software request by user via Snow AP

 

2. SLM AP Workflows

 

2.1 Wait for organizational approval (default workflow step)

 

2.2 Organizational approval (default workflow step)

   - shows the approver the current compliance status

2.3 If compliance status is negativ, run procurement workflow

   - procurement workflow is done, back to 2.2 and wait for final approval by organisation

2.4 install application

I want to add an intermediate step, if the compliance status is negative, then the approver should be able to start a procurement workflow. When the procurement workflow is complete, the approval workflow should go one.

I would be pleased about suggestions for the implementation of my requirement.

Thank and Best

Mathias


  • Community Manager (Flexera Software)

    Hi Mathias, With the (default) application owner approval step that shows the approver the compliance information, the application owner can initiate the procurement as needed before approving the request. If you want to automate the procurement as well that would remove the manual work of carrying it out, you would simply need to identify what activities that needs to be done and design that workflow before putting it in to action in Automation Platform. Regardless of if you automate the procurement process or notifies a group to have it done manually - one way to approach this is to add the extra step to the workflow (initiate procurement wf / notify group to procure). Then imake one (existing or new parameter) in the workflow visible to the approver (my tasks) that asks if new license needs to be procured. Use the Boolean toggle as input control and make it required so that a decision is needed by the approver. On the extra added step set the run condition to run if the Boolean toggle parameter above is true.  Depending on the complexity of the procurement process it might end up as part of this workflow or being a separate one.  One important thing to consider is that if users request software and are required to wait for several approvals and  until a procurement process has completed - risk is that they will not be very satisfied. It might seem like a good idea from a pure SAM perspective, but if the experience is to slow for the business, they will find new/other ways and the purpose is not achieved in the end. Just some thoughts.. Hope this helps! David
    Expand Post
    • Hello, David, thank you for your answer to my question. I agree with you that the ordering process should not necessarily be delayed by the procurement process, and if then in consultation with the user. We would like to use it to notifiy a group by mail. I had already thought about an additional run condition depending on a boolean. But until you answered, I thought it would end the complete workflow if you chose "no" - no matter how the others booleans are. I have added an additional activity which should only start if the corresponding run condition is fulfilled. In our case -  "start procurement = True." As you can see, there is a red notification dot next to the activity and another notification next to the "Run Condition" tab. Running the workflow and checking the status in the Request monitor shows that my run condition isn't fulfilled and conditionally skipped Response from workflow for the boolean is "True" Activity output Thanks and Best Mathias
      Expand Post
      • Oskar Frolin (Flexera Software)

        Hi Mathias, The issue with the run condition is probably that it is referencing the display name, not the value. It can be seen in the reference and raw reference here: In this case the Value is equal to 'True', but this parameters Display name is equal to ''. To fix this just update the reference to the option without (value display name). The "quick fix" is to update the raw code reference and remove the d from {{rpd:1192}} to -> {{rp:1192}}. Cheers! /Oskar
        Expand Post
        • Oskar Frolin (Flexera Software)

          one quick addition, I also have this very basic powershell that collects application information from SLM for an ApplicationID. I usually check against the Compliance and the LicenseRequired (yes/no) to trigger different activities based on compliance. param ( $apiuser , $applicationid , $slmurl , $customerid , $ApplicationName , $ApplicationManufacturerId , $ApplicationManufacturerName , $ApplicationManufacturerWebsite , $ApplicationLanguageName , $ApplicationReleaseDate , $ApplicationCreatedDate , $ApplicationCreatedBy , $ApplicationUpdatedDate , $ApplicationUpdatedBy , $ApplicationDescription , $ApplicationSystemOwnerName , $ApplicationSystemOwnerPhone , $ApplicationSystemOwnerEmail , $ApplicationMedia , $ApplicationIsOperatingSystem , $ApplicationOperatingSystemType , $ApplicationApplicationTypes , $ApplicationUpgradeOptions , $ApplicationDowngradeOptions , $ApplicationTotalCoverage , $ApplicationLicenseRequired , $ApplicationLicenseRequirement , $ApplicationLicenseCount , $ApplicationInstallationCount , $ApplicationBundleInstallationCount , $ApplicationUnusedInstallationCount , $ApplicationUsageFactor , $ApplicationUserCount , $ApplicationRisk , $ApplicationRiskUnused , $ApplicationCompliance , $ApplicationAllocation , $ApplicationLicenseKeys , $ApplicationMetric , $ApplicationApplicationCostTotal , $ApplicationApplicationCostPerLicense , $ApplicationAverageCostPerLicense , $ApplicationLicenseCostTotal , $ApplicationLicenseCostCurrency , $ApplicationUserLicenseCost , $ApplicationAlertOnOverlicensing , $ApplicationAlertOnUnderlicensing , $ApplicationAlertWhenNotUsed , $ApplicationCustomValues , $ApplicationSecondaryUseAllowed , $ApplicationMultipleVersionsAllowed , $ApplicationMultipleEditionsAllowed ) $serviceAccount = Get- ServiceAccount - Name $apiuser $apipassword = $serviceAccount . Password #{{na:service.vendorItemId}} == this is the application id from the sync job with SLM, can be used to configure the template service #if there is an issue with getting the URL from the input parameter, it can be retrieved directly from the AP Setting. #$slmurl  = Get-APSetting "SLMUri" $uri = "$slmurl/api/customers/$customerid/applications/$applicationid/" $headers = @{ "Authorization" = "Basic " + [ System. Convert] : : ToBase64String ( [ System. Text. Encoding] : : UTF8 . GetBytes ( $apiuser + ":" + $apipassword ) ) } $application = Invoke- WebRequest - Uri $uri - contentType "application/json" - Method Get - Headers $headers - UseBasicParsing | ConvertFrom- Json $ApplicationName                                           = $application . body. Name                                        $ApplicationManufacturerId                                 = $application . body. ManufacturerId                              $ApplicationManufacturerName                               = $application . body. ManufacturerName                            $ApplicationManufacturerWebsite                            = $application . body. ManufacturerWebsite                         $ApplicationLanguageName                                   = $application . body. LanguageName                                $ApplicationReleaseDate                                    = $application . body. ReleaseDate                                 $ApplicationCreatedDate                                    = $application . body. CreatedDate                                 $ApplicationCreatedBy                                      = $application . body. CreatedBy                                   $ApplicationUpdatedDate                                    = $application . body. UpdatedDate                                 $ApplicationUpdatedBy                                      = $application . body. UpdatedBy                                   $ApplicationDescription                                    = $application . body. Description                                 $ApplicationSystemOwnerName                                = $application . body. SystemOwnerName                             $ApplicationSystemOwnerPhone                               = $application . body. SystemOwnerPhone                            $ApplicationSystemOwnerEmail                               = $application . body. SystemOwnerEmail                            $ApplicationMedia                                          = $application . body. Media                                       $ApplicationIsOperatingSystem                              = $application . body. IsOperatingSystem                           $ApplicationOperatingSystemType                            = $application . body. OperatingSystemType                         $ApplicationApplicationTypes                               = $application . body. ApplicationTypes                            $ApplicationUpgradeOptions                                 = $application . body. UpgradeOptions                              $ApplicationDowngradeOptions                               = $application . body. DowngradeOptions                            $ApplicationTotalCoverage                                  = $application . body. TotalCoverage                               $ApplicationLicenseRequired                                = $application . body. LicenseRequired                             $ApplicationLicenseRequirement                             = $application . body. LicenseRequirement                          $ApplicationLicenseCount                                   = $application . body. LicenseCount                                $ApplicationInstallationCount                              = $application . body. InstallationCount                           $ApplicationBundleInstallationCount                        = $application . body. BundleInstallationCount                     $ApplicationUnusedInstallationCount                        = $application . body. UnusedInstallationCount                     $ApplicationUsageFactor                                    = $application . body. UsageFactor                                 $ApplicationUserCount                                      = $application . body. UserCount                                   $ApplicationRisk                                           = $application . body. Risk                                        $ApplicationRiskUnused                                     = $application . body. RiskUnused                                  $ApplicationCompliance                                     = $application . body. Compliance                                  $ApplicationAllocation                                     = $application . body. Allocation                                  $ApplicationLicenseKeys                                    = $application . body. LicenseKeys                                 $ApplicationMetric                                         = $application . body. Metric                                      $ApplicationApplicationCostTotal                           = $application . body. ApplicationCostTotal                        $ApplicationApplicationCostPerLicense                      = $application . body. ApplicationCostPerLicense                   $ApplicationAverageCostPerLicense                          = $application . body. AverageCostPerLicense                       $ApplicationLicenseCostTotal                               = $application . body. LicenseCostTotal                            $ApplicationLicenseCostCurrency                            = $application . body. LicenseCostCurrency                         $ApplicationUserLicenseCost                                = $application . body. UserLicenseCost                             $ApplicationAlertOnOverlicensing                           = $application . body. AlertOnOverlicensing                        $ApplicationAlertOnUnd
          Expand Post
        • Hi Oska, Hi David, thanks for helping me to fix this little problem Now the run condition works and the additional workflow step is started, but it is marked as successful without any interaction. The approver cannot make any entries in this step. I've added one "required" parameter and a "TaskCompleted : False" boolean parameter (seen in the default AP approval workflows) - nothing helped At the moment it looks like I've to use default activities "Approval" and "Task" and edit them to be got a working workflow with my fields and settings Could you please give me a short intro - How does AP check whether an activity or interaction is displayed or not, as in my case. Thanks and Best, Mathias
          Expand Post
          • Oskar Frolin (Flexera Software)

            Hi Mathias, Quick description of how to interact with users using Task parameters in AP: Gather the information from the Owner of the task as described in the images, the parameters can in most cases then be referenced later on in the workflow. The Approve parameter can be used if you want the owner of the Task to be able to cancel the restering workflow steps, if this is not needed it can just be hidden. Cheers! /Oskar
            Expand Post
            • Thank you very much for the detailed information on the handling of the individual AP tasks. Question and Problem solved!

Loading
Run activity based on compliance info