syndesisio / syndesis-project

Placeholder repository for project management
https://syndesis.io/
Apache License 2.0
6 stars 12 forks source link

As a citizen user, perform basic actions with a Salesforce object #32

Closed kcbabo closed 7 years ago

kcbabo commented 7 years ago

As a citizen user, I create integrations that interact with Salesforce objects. When using a Salesforce connection, I expect OOTB actions for the following use cases:

I need to integrate with OOTB Salesforce objects and custom Salesforce objects that my company has created and/or have been supplied by third-party add-ons to Salesforce. Therefore, I'll need the ability to browse through the list of Salesforce objects available in my account to specify which one will be used for each action. Further, any customizations my company has made to OOTB Salesforce objects should be visible in iPaaS functions such as data mapping, message filtering, and action configuration.

In the event that an action configuration requires a field to be identified, the UI should provide a list of available options. For example, the 'Create or Update' action should have a UI input which presents me with a list of available fields on the Salesforce object that can be used as a unique field ID (only fields marked as unique within Salesforce should be shown). This field is used by Salesforce to determine whether an existing Object is updated or a new Object is created.

Note that the UI input for field identification should be similar to what the content input is like for the Filter step.

sjcox-rh commented 7 years ago

iPaaS_SalesforceObject.pdf

@kcbabo @chirino @kahboom @rhuss Please review the designs for the Salesforce object flow. Let me know if you have any feedback, thanks!

kcbabo commented 7 years ago

Looks good to me!

gashcrumb commented 7 years ago

@sjcox-rh (and anyone else) on the last page (the action page after selecting an object), what are the 'configurable field' form inputs for? Going by the description the action here seems like it's basically pick which field will be used as a unique identifier when the integration updates the salesforce object.

Also, if only one field is unique on an object type would it make sense to pre-populate that or even skip the selection? Anyone know if there's a general convention like 'id' is always unique etc?

zregvart commented 7 years ago

A bit of a technical issue, but please bare with me

If we look at the create or update example, there are two properties of the action that the client chooses:

On a technical level, I think those two properties will be parameters passed to the Camel Connector, and I see an issue with those as we don't have a way of knowing if parameter precedes another and what would their relationship be.

So if we can consider those at least at equal level, and possibly unrelated (as we don't have that information), does it make sense to have them on two separate screens?

(I'm taking the liberty of assuming that sObjectName needs to be specified, it is currently for create-or-update determined from the type of object given in input, i.e. from the datamapper)

rhuss commented 7 years ago

A bit of a technical issue, but please bare with me

Sorry, not yet (even though its quite hot these days ;-)

rhuss commented 7 years ago

Is there a way to find out which fields of an object can serve as a unique field ? So that we can offer these to the users ? Or is there only a singled field per object which can server is this (business) id ?

For the UI I guess the perfect situation would be if both of these parameters would be combo box style controls. E.g. the second combo box about could be disabled until the object type is chosen and get reset again when the object type is changed.

zregvart commented 7 years ago

Is there a way to find out which fields of an object can serve as a unique field ? So that we can offer these to the users ? Or is there only a singled field per object which can server is this (business) id ?

Indeed there is, Salesforce supports a Metadata API, through which we can determine what object types, fields and their type information exist in an instance. There could be multiple unique fields, all Salesforce objects have an Id field assigned by Salesforce, but can have multiple unique fields (think: HR_Identifier, Company_Identifier).

For the UI I guess the perfect situation would be if both of these parameters would be combo box style controls. E.g. the second combo box about could be disabled until the object type is chosen and get reset again when the object type is changed.

Yes indeed. Here is the thing: looking through Camel Connector eyes, these parameters are both of equal significance, and there is no connection between them. So we would need another source of information along with the Camel Connector metadata to have the UI behave like that. In Salesforce component we used to have an auto-complete functionality that was deprecated and removed, but something like that can be provided by the component.

zregvart commented 7 years ago

This was implemented I believe we can close it.