Q1. Can I extract the info without converting the content type to application/json ?
A1. You have already extracted it at this point. Are you trying to update it in the message or just get the value for use.
Simple way to store this part is just create a new context variable and have it contain the mainpart (assuming you just want to act on it within the policy and not update the multi-part message). For example contextvariable myNewMainpart
Q2. what is the long number that appears in mainpart?
A2. These are just the boundary ids if I am not mistaken that identify the message parts. They are common with multipart data.
Q3. How to fetch the userId in above example ?
A3. Assuming you put this in myNewMainpart you should be able to encapsulate the ID with the Evaluate Regular Expression assertion OR Evaluate JSON PATH or any other number of items.
Though I would likely just apply a regular expression to
"userId":"ABC"
Something like "userId":".+?"
Then just split the variable on the : and use the right side content in the multipart context variable.
Hope that helps.
Charlie.