Solved

Process flow works in GUI but not in Universal.

  • 29 December 2022
  • 15 replies
  • 170 views

Userlevel 2
Badge +5

Hi,

I created a process flow to create IAM user when an employee is added. The complete flow is working as intended through GUI, however getting error in Universal.

The user is created via GUI but not via Universal. How to resolve it?

Universal version : 2022.2.17.0.0

 

GUI process flow monitor
Universal

 

Below is the entry in the error log , however it seems fine to me.

 at Indicium.Shared.ProcessFlows.SystemActions.SmtpConnector.StartInternal(ReadOnlyDictionary`2 inputParameters) in C:\azp\agent\_work\1\s\src\Indicium.Shared\ProcessFlows\SystemActions\SmtpConnector.cs:line 272
   --- End of inner exception stack trace ---
   at Indicium.Shared.ProcessFlows.SystemActions.SmtpConnector.StartInternal(ReadOnlyDictionary`2 inputParameters) in C:\azp\agent\_work\1\s\src\Indicium.Shared\ProcessFlows\SystemActions\SmtpConnector.cs:line 279
   at Indicium.Shared.ProcessFlows.ActiveProcessAction.Start(ReadOnlyDictionary`2 variableState) in C:\azp\agent\_work\1\s\src\Indicium.Shared\ProcessFlows\ActiveProcessAction.cs:line 290
 

icon

Best answer by Mark Jongeling 30 December 2022, 14:55

View original

This topic has been closed for comments

15 replies

Userlevel 4
Badge +2

Hi Rucha,

Can you add a bit more of the error message? It is now only containing the stacktrace, but we also need the error message. It will give us more insight what might be the issue.

Userlevel 2
Badge +5

Hi Dick,

Attaching the complete error log.

Let me know if this error can be seen somewhere else too.

Userlevel 7
Badge +22

Compliments on the Universal GUI look, really nice 👌🏼

I do see an error regarding "Failed to convert parameter value from a String to a Byte.”. We have received a ticket before with the same error. It occurred due to a domain (datatype Tinyint) with elements with negative values. Could it be that you also use a Tinyint datatype with negative values?

Userlevel 2
Badge +5

Thanks Mark! :)
I am using Tinyint datatype , but the values are positive :
 

 

However these values needs to be sent to IAM as user roles, so I tried below code in the control procedure to set the variables the correct values,

    set @email_id = (select email_id from employee_detail where employee_detail_id = @employee_id)
    set @first_name = (select first_name from employee_detail where employee_detail_id = @employee_id)
    set @last_name = (select last_name from employee_detail where employee_detail_id = @employee_id)
    set @tenant_id = '1'
    set @patch_HTTP_code         = null
    set @patch_status_code       = null
    set @pwd_HTTP_code           = null
    set @pwd_status_code         = null
    set @user_group_http_code    = null
    set @user_group_status_code  = null
    set @create_user_HTTP_code   = null
    set @create_user_status_code = null
    
    set @user_group = case
        when (select employee_role from employee_detail where employee_detail_id = @employee_id) = 0 then 'employee'
        when (select employee_role from employee_detail where employee_detail_id = @employee_id) = 1 then 'employee_manager' 
        when (select employee_role from employee_detail where employee_detail_id = @employee_id) = 2 then 'hr_employee'
        when (select employee_role from employee_detail where employee_detail_id = @employee_id) = 3 then 'hr_manager'
        when (select employee_role from employee_detail where employee_detail_id = @employee_id) = 4 then 'admin'
        when (select employee_role from employee_detail where employee_detail_id = @employee_id) = 5 then 'it_manager'
    end

    set @employee_name = (select ed.first_name+' '+isnull(ed.middle_name,' ')+' '+ed.last_name 
    from employee_detail ed where ed.employee_detail_id = @employee_id)

Userlevel 7
Badge +22

Okay, looks good to me. Little SQL tip, you can place the query next to Case instead of repeating it in the When lines like this:
 

set @user_group = case (select employee_role from employee_detail where employee_detail_id = @employee_id)
when 0 then 'employee'
when 1 then 'employee_manager'
when 2 then 'hr_employee'
when 3 then 'hr_manager'
when 4 then 'admin'
when 5 then 'it_manager'
end

 

The other error was regarding Indicium not being able to access the path

"System.UnauthorizedAccessException: Access to the path '/opt/Indicium/Employee_Report' is denied.
 System.IO.IOException: Permission denied”

Not sure if that is correct or not, but this could cause some trouble I think.

Userlevel 2
Badge +5

Thanks for the tip Mark, will make the changes. :)

 

This path is for the report process, which is not working yet.

This process worked before I connected SMTP connector to send the email to the user with his userid.

We have other process working fine with SMTP connectors.

 

Userlevel 2
Badge +5

Hi Mark,

Do you think it will work if I remove the report generation?

Userlevel 7
Badge +22

Hi Mark,

Do you think it will work if I remove the report generation?

Hi Rucha,

I wouldn't know for sure until tried out, so you could temporarily disable it by either removing the process action or by allowing the process flow to go different path (following different steps than usual)

Userlevel 2
Badge +5

After disabling the report process and IAM sync got stuck.

I tried to abort the job as well. But its not reflecting. Can you please guide how to get past it?

 

Userlevel 7
Badge +22

You can try writing the synchronization scripts to storage and execute them manually on the desired IAM database. If the Synchronization to IAM cannot run successfully, it can have multiple reasons which are not relevant at the moment

Userlevel 2
Badge +5

Thanks for the quick reply Mark!!

Can you please tell how below will be done: You can try writing the synchronization scripts to storage and execute them manually on the desired IAM database. 

I tried doing through synchronization , however its giving error too.
 

 

Userlevel 7
Badge +22

Can you open the Jobs screen in the Software Factory? Most likely a job is waiting/active there, you can safely cancel it and if the job is not actively doing anything (by double checking the Activity monitor within SQL Server Management Studio), you can abort if (if the job is active)

Activity monitor inside SSMS

When all jobs are cleared, you should be able to start a new Synchronization.

Userlevel 2
Badge +5

Thanks Mark, I had already aborted the job from Jobs screen in Software Factory. However it did not get aborted.

I checked in the Activity monitor within SQL Server Management Studio as well, however there are no jobs there as well.

 

Userlevel 7
Badge +22

After some troubleshooting we concluded that a Process variable was using a domain with the datatype TINYINT, but got assigned a value larger than 256 causing this error to occur. It now has been resolved.

Userlevel 2
Badge +5

Thank you so much for all your help Mark!! Its working now!