# WebService Connector Issue

**URL:** <https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373>\
**Category:** SHF Discussion and Questions\
**Tags:** webservice-connector, identity-security-cloud\
**Created:** [September 5, 2024, 8:39am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373 "2024-09-05T08:39:04Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Amrit1897](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@Amrit1897](https://developer.sailpoint.com/discuss/u/Amrit1897)\
**Post date:** [September 5, 2024, 8:39am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/1 "2024-09-05T08:39:04Z")

</div>

I am facing issue with calling plan attributes.  
$plan.nativeIdentity$ works fine.  
But lets say I have to do PUT call on remove entitlement and I have to update some attribute which are there in account shema but it is not getting called and will get 400 bad request. If I hard code the values then it works fine. I believe plan is not able to fetch those attributes, verified from logs as well.

I am passing this kind of body in http operation.

```auto
{
  "loginName" : "$plan.loginName$",
  "userName": "$plan.userName$",
  "email": "$plan.email$",
  "role": {
       "id": 1234,
        "name": "Test"
     }
}

```

URL : baseUrl\contextUrl\$plan.nativeIdentity$

Can anyone please suggest, what I am missing?

---

<div class="post-metadata">

**Author:** ![KirstenV](https://avatars.discourse-cdn.com/v4/letter/k/278dde/32.png) [@KirstenV](https://developer.sailpoint.com/discuss/u/KirstenV)\
**Post date:** [September 5, 2024, 8:56am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/3 "2024-09-05T08:56:22Z")

</div>

Hi Amrit,

Which operation in the WebService connector are you using to do this call?  
By default the provisioning plan only includes the attributes that need an update/change. So if you do an entitlement remove operation email, userName, etc will not be included in the plan.

---

<div class="post-metadata">

**Author:** ![shekhardas1825](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/shekhardas1825/32/20889_2.png) [@shekhardas1825](https://developer.sailpoint.com/discuss/u/shekhardas1825)\
**Post date:** [September 5, 2024, 9:06am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/4 "2024-09-05T09:06:44Z")

</div>

@Amrit1897 Validate your schema attributes are correct.

Like if you are using **$plan.loginName$** make sure your account schema have the same name “loginName”.

Also you are missing a comma , in id

Try below

```auto
{
    "loginName": "$plan.loginName$",
    "userName": "$plan.userName$",
    "email": "$plan.email$",
    "role": {
        "id": 1234,
        "name": "Test"
    }
}

```

---

<div class="post-metadata">

**Author:** ![Amrit1897](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@Amrit1897](https://developer.sailpoint.com/discuss/u/Amrit1897)\
**Post date:** [September 5, 2024, 10:42am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/5 "2024-09-05T10:42:19Z")

</div>

But I need those for remove entitlement.  
Is there any other way possible?

---

<div class="post-metadata">

**Author:** ![Amrit1897](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@Amrit1897](https://developer.sailpoint.com/discuss/u/Amrit1897)\
**Post date:** [September 5, 2024, 10:43am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/6 "2024-09-05T10:43:17Z")

</div>

Yes, schema name is same  
Comma missing in id is missed while writing this post, which I have edited now.

---

<div class="post-metadata">

**Author:** ![shekhardas1825](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/shekhardas1825/32/20889_2.png) [@shekhardas1825](https://developer.sailpoint.com/discuss/u/shekhardas1825)\
**Post date:** [September 5, 2024, 11:05am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/7 "2024-09-05T11:05:29Z")

</div>

@Amrit1897 Ok my bad, you can only get the requested attribute from the plan.

For e.g. in this case you are trying to remove the entitlement, so you will only get which role is getting removed and the nativeIdentity in the plan not others.

For Create Operation you are getting all the required values from Create Profile and they are there in the provisioning plan.

Since you are not passing all the value it is giving you the 400 bad request.

You can use a beforeOperation rule to set your request body with required attributes.

Please check below documentation examples are given:  
[Web Services Before Operation Rule (sailpoint.com)](https://documentation.sailpoint.com/connectors/identityiq/webservices/help/integrating_webservices/beforeoperationrule.html#:~:text=The%20Before%20Operation%20Rule%20is%20used%20to%20calculate,such%20as%20Test%20Connection%2C%20Aggregation%2C%20and%20so%20on.)

[IdentityNow Rule Guide - Web Services Before Operation Rule - Compass (sailpoint.com)](https://community.sailpoint.com/t5/IdentityNow-Wiki/IdentityNow-Rule-Guide-Web-Services-Before-Operation-Rule/ta-p/77337)

[Web Services Before Operation Rule | SailPoint Developer Community](https://developer.sailpoint.com/docs/extensibility/rules/connector-rules/webservices-before-provisioning-rule/)

Hope this will help!

---

<div class="post-metadata">

**Author:** ![patrickboston](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/patrickboston/32/5876_2.png) [@patrickboston](https://developer.sailpoint.com/discuss/u/patrickboston)\
**Post date:** [September 5, 2024, 11:19am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/8 "2024-09-05T11:19:09Z")

</div>

There is another way to do this that I outlined here that would not require a rule: [Add/Remove Entitlement operation $plan placeholder issues - #2 by patrickboston](https://developer.sailpoint.com/discuss/t/add-remove-entitlement-operation-plan-placeholder-issues/19770/2)

---

<div class="post-metadata">

**Author:** ![shekhardas1825](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/shekhardas1825/32/20889_2.png) [@shekhardas1825](https://developer.sailpoint.com/discuss/u/shekhardas1825)\
**Post date:** [September 5, 2024, 11:29am UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/9 "2024-09-05T11:29:01Z")

</div>

@patrickboston Liked the way you suggested.

Parent endPoint - First get the account details and map those in response mapping  
Child endPoint - Get the values from Parent response and pass it to body.

@Amrit1897 This is up to you whichever way suitable your requirement.

---

<div class="post-metadata">

**Author:** ![travis-k](https://avatars.discourse-cdn.com/v4/letter/t/d78d45/32.png) [@travis-k](https://developer.sailpoint.com/discuss/u/travis-k)\
**Post date:** [September 6, 2024, 1:36pm UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/10 "2024-09-06T13:36:13Z")

</div>

maybe, in a web services before operation rule, you could grab the required attribute value(s) and insert them into the plan to make them available with $plan. notation.

---

<div class="post-metadata">

**Author:** ![Amrit1897](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@Amrit1897](https://developer.sailpoint.com/discuss/u/Amrit1897)\
**Post date:** [September 6, 2024, 10:12pm UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/11 "2024-09-06T22:12:19Z")

</div>

@patrickboston, Thanks for the suggestion. It works…

---

<div class="post-metadata">

**Author:** ![Amrit1897](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@Amrit1897](https://developer.sailpoint.com/discuss/u/Amrit1897)\
**Post date:** [October 24, 2024, 4:59pm UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/13 "2024-10-24T16:59:42Z")

</div>

@patrickboston or anyone, I have this requirement for other use case, where I have two disable operation first operation fetches id from a endpoint, fetched id is used in 2nd disable operation which calls different endpoint.

Basically, my ask is can we call the 2nd disable operation only if ID is found from first operation? Is it possible without before operation rule?  
Currently if id is not found from first operation then it gives Disable Account Failure which I don’t want.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/sailpoint/original/2X/f/f2136700ed5e3703e0b85e02f6be799dacca7735.png) [@system](https://developer.sailpoint.com/discuss/u/system)\
**Post date:** [December 23, 2024, 5:00pm UTC](https://developer.sailpoint.com/discuss/t/webservice-connector-issue/79373/14 "2024-12-23T17:00:17Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
