AdhocAdam / smletsexchangeconnector

SMLets PowerShell based Exchange Connector for controlling Microsoft System Center Service Manager 2016+
https://adhocadam.github.io/smletsexchangeconnector/
GNU General Public License v3.0
29 stars 19 forks source link

Skip works but doesn't quite render in the Cireson Portal correctly #64

Closed AdhocAdam closed 6 years ago

AdhocAdam commented 6 years ago

Opening on behalf of Nick Flint in the Cireson Community -

I'm not sure where to discuss this one and it is fairly minor. I used the SMLets Exchange Connector to skip a manual activity. The Status of the MA changed and the workflow updated the next activity correctly. However, the skipped activity isn't displayed in the Cireson Portal like activities skipped from the portal. It's not crossed out and the skip button still appears instead of the unskip button.

i9opqv5o33jw

AdhocAdam commented 6 years ago

Well Nick you've certainly got an eye for detail I'll give you that! The connector just sets the Status property on a Manual Activity to "ActivityStatusEnum.Skipped$". This is what tells core SCSM to actually skip and continue the activity flow. Looking into how Cireson is doing this it's become clear that when using their portal they set an additional property on Manual Activities and that's the Skip property with a value of true. This is the property that appears to signal their portal to display the MA just a little bit different.

I'll get this addressed in the upcoming 1.4.4 release. If you or anyone would like to address this immediatley with the connector it requires a very simple change in the Manual Activity Skip logic.

CURRENT

Set-SCSMObject -SMObject $workItem -PropertyHashtable @{"Status" = "ActivityStatusEnum.Skipped$"; "ActualEndDate" = (get-date).ToUniversalTime(); "Notes" = "$($workItem.Notes)$($activityImplementer.Name) @ $(get-date): $commentToAdd `n"} @scsmMGMTParams

AFTER

Set-SCSMObject -SMObject $workItem -PropertyHashtable @{"Status" = "ActivityStatusEnum.Skipped$"; "Skip" = $true; "ActualEndDate" = (get-date).ToUniversalTime(); "Notes" = "$($workItem.Notes)$($activityImplementer.Name) @ $(get-date): $commentToAdd `n"} @scsmMGMTParams

Looking closely you can see that the AFTER simply adds a single new property to be set within the hashtable as seen below:

"Skip" = $true;