Saviynt unveils its cutting-edge Intelligence Suite products to revolutionize Identity Security!
Click HERE to see how Saviynt Intelligence is transforming the industry.
Saviynt Copilot Icon

REST - Unable to map Response field

GPS
New Contributor III
New Contributor III

I am using rest API for ADD/Remove access. I am having an issue while mapping the response.

{
	"accountIdPath": "accountName",
	"responseColsToPropsMap": {},
	"call": [
		{
			"name": "Role",
			"connection": "acctAuth",
			"url": "https://uat-cloud.net/CustomServices/.asmx/AddEntitlementToUser?userName=${user.customproperty22}&entitlementValue=${entitlementValue.entitlementID}",
			"httpMethod": "POST",
			"httpHeaders": {
				"Accept": "application/json"
			},
			"httpContentType": "application/x-www-form-urlencoded",
			"successResponses": {
				"responseBodyEquals": "true"
			},
			"unsuccessResponses": {
				"responseBodyEquals": "false"
			}
		}
	]
}

Postman Response:
We are always getting 200 if we hit the API,

Response Body:
False mean failed
              <?xml version="1.0" encoding="utf-8">
              <bolean xmlns="http://tempuri.org">false</bolean>

True mean success
             <?xml version="1.0" encoding="utf-8">
            <bolean xmlns="http://tempuri.org">true</bolean>

Screenshot 2024-08-08 at 9.34.36 AM.pngScreenshot 2024-08-08 at 9.35.11 AM.png

 

 

 

t

20 REPLIES 20

NM
Honored Contributor II
Honored Contributor II

Hi @GPS , you don't need accountIDpath for add and remove json it is only used for create account.

Try this 

"boolean": false

GPS
New Contributor III
New Contributor III

@NM I am getting response as below.

{
    "Role": {
        "headers": "qc2hUNXfxzkM1F",
        "message": {
            "boolean": {
                "xmlns": "http://tempuri.org/",
                "content": "false"
            }
        },
        "statusCode": 200,
        "description": null,
        "status": "Success"
    }
}

 

Role.message.boolean.content


Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.

GPS
New Contributor III
New Contributor III

@rushikeshvartak @NM 

I tried multiple options but still I can't keep the task in a pending state.

 

 

 

"httpContentType": "application/x-www-form-urlencoded",
            "successResponses": [
                {
                    "Message.boolean.content": [
                        "true"
                    ]
                },
                {
                    "Role.Message.boolean.content": [
                        "true"
                    ]
                },
                {
                    "boolean.content": [
                        "true"
                    ]
                },
                {
                    "content": [
                        "true"
                    ]
                },
                {
                    "Role.Message.boolean.content": true
                },
                {
                    "Message.boolean.content": true
                },
                {
                    "boolean.content": true
                },
                {
                    "content": true
                }
            ],
            "unsuccessResponses": [
                {
                    "Message.boolean.content": [
                        "false"
                    ]
                },
                {
                    "Role.Message.boolean.content": [
                        "false"
                    ]
                },
                {
                    "boolean.content": [
                        "false"
                    ]
                },
                {
                    "content": [
                        "false"
                    ]
                },
                {
                    "Message.boolean.content": false
                },
                {
                    "Role.Message.boolean.content": false
                },
                {
                    "boolean.content": false
                },
                {
                    "content": false
                }
            ]

 

 

 



ERROR-Call response: {"boolean":{"xmlns":"http://tempuri.org/","content":"false"}}
 
2024-08-08T21:37:12-05:00-ecm-worker-rest.RestProvisioningService-quartzScheduler_Worker-2-9b76x-ERROR-callResponseMap: [boolean:[xmlns:http://tempuri.org/, content:false]]
 
2024-08-08T21:37:12-05:00-ecm-worker-pam.PamService-quartzScheduler_Worker-2-9b76x-DEBUG-Error while converting JsonStringToMap


It is closing the task.

NM
Honored Contributor II
Honored Contributor II

@GPS 

"boolean.content": "false"

Or 

Try one without doubles quotes with false

 

GPS
New Contributor III
New Contributor III

@NM 
Error:

2024-08-08T14:13:34-05:00-ecm-worker-rest.RestProvisioningService-quartzScheduler_Worker-10-9b76x-ERROR-Call response: {"boolean":{"xmlns":"http://tempuri.org/","content":"false"}}
 
2024-08-08T14:13:34-05:00-ecm-worker-rest.RestProvisioningService-quartzScheduler_Worker-10-9b76x-ERROR-callResponseMap: [boolean:[xmlns:http://tempuri.org/, content:false]]


I tried multiple things. It didn't work.

"boolean.content": "false"

"boolean.content": false

"message.boolean.content": "false"

"message.boolean.content": false

"content": "false"

"content": false


Hi @GPS please try the below format

{
    "successResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"Role.Message.boolean.content",
            "values":["true"]
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"Role.Message.boolean.content",
            "values":["false"]
        }
    ]
}

Response curated based on the below forum posts

https://forums.saviynt.com/t5/identity-governance/successresponses-for-rest-connection-are-failing/m...

https://forums.saviynt.com/t5/identity-governance/rest-connector-successresponses-checking-message-i...

Let me know if this helps!

 

Regards,
Naveen Sakleshpur
If this reply answered your question, please click the Accept As Solution button to help future users who may have a similar problem.

GPS
New Contributor III
New Contributor III

@naveenss 
Now, the task is sitting in a pending state without moving to a completed state.

1st Run:
{"auditDetails":{"Role":[{"headers":null,"message":{"boolean":{"xmlns":"http://tempuri.org/","content":"true"}},"statusCode":200,"description":null,"status":"Failed"}]},

2nd Run:
"Role":{"headers":null,"message":{"boolean":{"xmlns":"http://tempuri.org/","content":"false"}},"statusCode":200,"description":null,"status":"Failed"}}

{
    "successResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"Role.message.boolean.content",
            "values":["true"]
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"Role.message.boolean.content",
            "values":["false"]
        }
    ]
}

Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.

GPS
New Contributor III
New Contributor III

@rushikeshvartak @naveenss 
I tried it already with multiple combinations the task is still waiting in the pending state.

Provisioning Comments

{"Role":{"headers":null,"message":{"boolean":{"xmlns":"http://tempuri.org/","content":"true"}},"statusCode":200,"description":null,"status":"Failed"}}

Log error:

quartzScheduler_Worker-7-9b76x-ERROR-Call response: {"boolean":{"xmlns":"http://tempuri.org/","content":"true"}}
 
quartzScheduler_Worker-7-9b76x-ERROR-callResponseMap: [boolean:[xmlns:http://tempuri.org/, content:true]]
 
ecm-services.WorkflowService-http-nio-8080-exec-65-228gm-DEBUG-Close Request Called Status Completed grails.validation.ValidationErrors: 0 errors ARS_RequestsID=171



GPS
New Contributor III
New Contributor III

@rushikeshvartak@naveenss@NM 

Any other suggestions?
I tried multiple combinations.

Can you share all possible tried solutions 


Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.

GPS
New Contributor III
New Contributor III

@rushikeshvartak 

These below are keeping the task in pending state.
{
    "successResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"Role.message.boolean.content",
            "values":["true"]
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"Role.message.boolean.content",
            "values":["false"]
        }
    ]
}



{
    "successResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"message.boolean.content",
            "values":["true"]
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"message.boolean.content",
            "values":["false"]
        }
    ]
}






{
    "successResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"boolean.content",
            "values":["true"]
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "responsePath":"boolean.content",
            "values":["false"]
        }
    ]
}




This i reduced it till just the content like (Role.Message.boolean.content, Message.boolean.content, boolean.content, content)
{
    "successResponses":[
        {
            "statusCode":200
        },
        {
           "Role.Message.boolean.content": true
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "Role.Message.boolean.content": false
        }
    ]
}

This i reduced it till just the content like (Role.Message.boolean.content, Message.boolean.content, boolean.content, content)
{
    "successResponses":[
        {
            "statusCode":200
        },
        {
           "Role.Message.boolean.content": ["true"]
        }
    ],
    "unsuccessResponses":[
        {
            "statusCode":200
        },
        {
            "Role.Message.boolean.content": ["false"]
        }
    ]
}

***********************************************************************

This is closing the task even if the status is false.

"httpContentType": "application/x-www-form-urlencoded",
            "successResponses": [
                {
                    "Message.boolean.content": [
                        "true"
                    ]
                },
                {
                    "Role.Message.boolean.content": [
                        "true"
                    ]
                },
                {
                    "boolean.content": [
                        "true"
                    ]
                },
                {
                    "content": [
                        "true"
                    ]
                },
                {
                    "Role.Message.boolean.content": true
                },
                {
                    "Message.boolean.content": true
                },
                {
                    "boolean.content": true
                },
                {
                    "content": true
                }
            ],
            "unsuccessResponses": [
                {
                    "Message.boolean.content": [
                        "false"
                    ]
                },
                {
                    "Role.Message.boolean.content": [
                        "false"
                    ]
                },
                {
                    "boolean.content": [
                        "false"
                    ]
                },
                {
                    "content": [
                        "false"
                    ]
                },
                {
                    "Message.boolean.content": false
                },
                {
                    "Role.Message.boolean.content": false
                },
                {
                    "boolean.content": false
                },
                {
                    "content": false
                }
            ]

  • Does Response in XML ?
  • {
    "successResponses": [
    {
    "responsePath": "/bolean",
    "values": ["true"]
    }
    ],
    "unsuccessResponses": [
    {
    "responsePath": "/bolean",
    "values": ["false"]
    }
    ]
    }

Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.

GPS
New Contributor III
New Contributor III

@rushikeshvartak 

Yes, we are getting responses in XML from Postman.

False mean failed
              <?xml version="1.0" encoding="utf-8">
              <bolean xmlns="http://tempuri.org">false</bolean>

True mean success
             <?xml version="1.0" encoding="utf-8">
            <bolean xmlns="http://tempuri.org">true</bolean>

In Saviynt logs:

Call response: {"boolean":{"xmlns":"http://tempuri.org/","content":"true"}}
 
callResponseMap: [boolean:[xmlns:http://tempuri.org/, content:true]]

{
"accountIdPath": "accountName",
"responseColsToPropsMap": {},
"call": [
{
"name": "Role",
"connection": "acctAuth",
"url": "https://uat-cloud.net/CustomServices/.asmx/AddEntitlementToUser?userName=${user.customproperty22}&en...}",
"httpMethod": "POST",
"httpHeaders": {
"Accept": "application/json"
},
"httpContentType": "application/x-www-form-urlencoded",
"successResponses": {
"responseBodyContains": "<boolean>true</boolean>"
},
"unsuccessResponses": {
"responseBodyContains": "<boolean>false</boolean>"
}
}
]
}


Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.

GPS
New Contributor III
New Contributor III

Hello @rushikeshvartak 

I tried multiple options and still it is not working.

"successResponses": [
                {
                    "statusCode": 200
                },
                {
                    "responseBodyContains": "<boolean xmlns=\"http://tempuri.org\">true</boolean>"
                }
            ],
            "unsuccessResponses": [
                {
                    "statusCode": 200
                },
                {
                    "responseBodyContains": "<boolean xmlns=\"http://tempuri.org\">false</boolean>"
                }
            ]


 "successResponses": [
                {
                    "statusCode": 200
                },
                {
                    "responseBodyContains": ["true"]
                }
            ],
            "unsuccessResponses": [
                {
                    "statusCode": 200
                },
                {
                    "responseBodyContains": ["false"]
                }
            ]





"successResponses": {
				"responseBodyContains": [
					"<boolean xmlns=\"http://tempuri.org\">true</boolean>"
				]
			},
			"unsuccessResponses": {
				"responseBodyContains": [
					"<boolean xmlns=\"http://tempuri.org\">false</boolean>"
				]
			}




GPS
New Contributor III
New Contributor III

@NM @rushikeshvartak @naveenss 

Any other suggestions?

pruthvi_t
Saviynt Employee
Saviynt Employee

@GPS ,

did you happen to try the below mapping by combing them all into single object for for both success and unsuccess responses?

{
"successResponses": {
"statusCode": 200,
"responsePath": "Role.Message.boolean.content",
"values": ["true"]
},
"unsuccessResponses": {
"statusCode": 200,
"responsePath": "Role.Message.boolean.content",
"values": ["false"]
}
}


Regards,
Pruthvi

stalluri
Valued Contributor
Valued Contributor

@GPS 
The response is in XML, and Saviynt could not handle the response to hold the ticket status as the statusCode is constantly retuning 200.

1. Create a Saviynt support Ticket.
2. Check with the application teams to change  the response codes.



Best Regards,
Sam Talluri
If you find this a helpful response, kindly consider selecting Accept As Solution and clicking on the kudos button.