Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
gardenierbi
Creator II
Creator II

Deleting/updating a task trigger

I use Qlik CLI to duplicate apps, publish and create tasks. This is all going well. However, I now need to adjust reload tasks. The apps first had to be reloaded after app A was successfully completed. Now the apps need to be reloaded after app B is finished successfully.

In the Qlik CLI package I can only find the command "Add-QlikTrigger". I don't see any commands like "Get-QlikTrigger", "Remove-QlikTrigger" or "Update-QlikTrigger".

Do I have to delete and recreate the entire task and then provide it with the desired trigger?

For example this task :

Get-QlikReloadTask -Id 87a8cfe5-cc28-4035-8a3f-bd0277523866 -raw
id : 87a8cfe5-cc28-4035-8a3f-bd0277523866
createdDate : 2022-04-11T12:28:25.777Z
modifiedDate : 2022-11-23T08:24:04.759Z
modifiedByUserName : XXX
customProperties : {}
app : @{id=5b58c51d-e23a-4f6d-aa16-1c62136ad661; name=Commission Statement; appId=; publishTime=2023-01-17T20:00:56.931Z;
published=True; stream=; savedInProductVersion=12.1219.3; migrationHash=21ecc792c56e18162f1785d3d41f28fdaced5c96; availabilityStatus=0; privileges=}
isManuallyTriggered : False
operational : @{id=482640a1-2bd7-49f5-af0a-5a62f3a81a2f; lastExecutionResult=; nextExecution=1753-01-01T00:00:00.000Z; privileges=}
isPartialReload : False
name : Automated reload of app Commission Statement
taskType : 0
enabled : True
taskSessionTimeout : 30
maxRetries : 0
tags : {@{id=6a516ce1-7279-467d-82f7-bd9afda95dfd; name=Sales; privileges=}}
privileges :
schemaPath : ReloadTask

How can I retrieve and manage the active trigger of this task?

Labels (1)
  • API

1 Reply
Marc
Employee
Employee

The Following PowerShell Function is built using QlikSenseCLI (not the same as the Qlik-CLI-Windows)

The function requires a SourceAppID and a DestinationAppID and will copy all reaload tasks & triggers from one app to another

From this function you would be able to see that we can call the function (Get-QSSchemaevent -Full -Filter "ReloadTask.id eq $($ReloadTask.Id)") to get the "Triggers" for the reload tasks.

(Update-QSSchemaEvent) can be used to update modified triggers.

##Update Trigger
$SchemaEvent = Get-QSSchemaevent -Id f8bf1d52-d17e-4a54-9b29-c5c3ab67714e
#Modify the Event as required
$SchemaEvent.Name = "Updated_$($SchemaEvent.Name)"
$SchemaEvent.Enabled = $false
Update-QSSchemaevent -Id $SchemaEvent.Id -SchemaEventObj $SchemaEvent

 

 

 

function Copy-QSReloadTasks {
	param
	(
		[Parameter(Mandatory = $true)]
		$SourceAppID,
		[Parameter(Mandatory = $true)]
		$DestinationAppID
	)
	
	#Get the Condensed Verion of the Reload Task
	$AppReloadTasks = Get-QSReloadtask -Filter "App.id eq $($SourceAppID)"
	foreach ($ReloadTask in $AppReloadTasks) {
		#Get the full version
		$ReloadTaskFull = Get-QSReloadtask -Id $ReloadTask.Id
		
		#Get the Schema Events for the Reload Task
		$SchemaEvents = Get-QSSchemaevent -Full -Filter "ReloadTask.id eq $($ReloadTask.Id)"
		
		#Get Destination App Condensed, Filter alway returns a Array so select first
		$DestinationApp = $(Get-QSApp -Filter "id eq $($DestinationAppID)") | Select-Object -First 1
		
		#Create a New Reload task, clearing the ID,Operational and relacing the App
		## You can further manipulate the Name etc here if needed.
		$NewRT = New-QSReloadTask -InputObject $ReloadTaskFull -Id ([guid]::Empty) -App $DestinationApp -Operational $Null
		
		#Add the New reload task to QlikSense
		$DestRTFull = Add-QSReloadtask -ReloadTaskObj $NewRT
		
		#Get New ReloadTask Condensed, Filter alway returns a Array so select first
		$DestRT = $(Get-QSReloadtask -Filter "id eq $($DestRTFull.id)") | Select-Object -First 1
		
		foreach ($Event in $SchemaEvents) {
			#Create a New Schema Event, clearing the ID,Operational and relacing the ReloadTask
			## You can further manipulate the Name etc here if needed.
			$NewQSSchemaEvent = New-QSSchemaEvent -InputObject $Event -Id ([guid]::Empty) -Operational $null -ReloadTask $DestRT
			
			#Add the schema event to the reload task
			$QSSchemaEvent = Add-QSSchemaevent -SchemaEventObj $NewQSSchemaEvent
		}
	}
}

 

 

this can then be called like to, where we call the function and supply the required ID's

 

 

Connect-QlikSense -TrustAllCertificates
Copy-QSReloadTasks -SourceAppID b73ad8a5-ad67-4778-b350-8151976895bf -DestinationAppID ac2a350a-b54e-460f-9c67-c0d4eb5bea73

 

 

or like so, where we use a UI to select the Source and Destination Apps from a grid view and pass the IDs to the function 

 

 

Connect-QlikSense -TrustAllCertificates
$Apps = Get-QSApp
#create a formattedlist to make the UI a little more readable
$FormattedApplist = $($Apps|Select-Object -Property Name,ID,@{Name="Stream";e={$_.Stream.Name}})
$SelectedApp = $FormattedApplist|Out-GridView -OutputMode Single -Title "Copy Reload Tasks from"
$DestinationApp = $FormattedApplist|Out-GridView -OutputMode Single -Title "Copy Reload Tasks to"
Copy-QSReloadTasks -SourceAppID $SelectedApp.Id -DestinationAppID $DestinationApp.Id