I’ve come across a situation a couple of times in the past where I could not see certain (custom) properties in a Receive shapes’s filter list. In my cases, this appeared to happen when:
- I was attempting to use a property from a property schema that is in a different assembly from the schema that contains the node that you have promoted and
- The schema that contains the promoted property’s underlying value is the base type for the message the Receive shape will receive and
- I set the Property Schema Base to [the default] or MessageDataPropertyBase
An obvious solution is to make sure that your property schema and the schema whose node you have promoted are in the same assembly. In my case I didn’t want to do this because I inherited a solution that has been used for quite a while and I didn’t want to create extra work for myself by having to restructure the artifacts.
Instead, I modified the underlying .odx file manually to add the Receive shape’s filter. Here’s how you do it:
- Make sure you have a reference to the property schema assembly and the schema (that uses the property) assembly.
- Create a bogus Receive shape filter expression using any property and value that you like (set them to something you’ll remember when you have the .odx open in a text editor, see below); make sure you use the operator that you’re really going to use to make things easier on yourself.
- Save the .odx.
- Close the .odx.
- Right click the .odx in the Solution Explorer and select ‘Open with…’
- Open the file with your favorite text editor (add the text editor if necessary.)
- Search for your bogus Receive shape filter’s property or value
- Replace the //Property/@Value for the appropriate //Property/@LHS with the real property that you want to use in your filter.
- Replace the //Property/@Value for the appropriate //Property/@RHS with the real value that you want to use in your filter.
- Save the .odx file and close it.
- Open the .odx in the Orchestration Designer.
- View the Receive shape’s filter.
- Compile the orchestration assembly to verify you didn’t break anything while using the text editor.