BPM Online: Difference between revisions

From Starfish ETL
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 29: Line 29:
=500 Internal Server Error=
=500 Internal Server Error=
If you receive this message while trying to create stages or work with mappings, there's a good chance your BPM metadata is corrupt. This can occur if you have a broken customization or have not completed a full compile within your BPM instance. To know for sure, in a browser go to the following URL: https://YOURINSTANCE.bpmonline.com/0/ServiceModel/EntityDataService.svc/$metadata (replacing YOURINSTANCE with the actual name of your company). If everything is working you should get back a giant XML stream. If there is something wrong with your metadata, you will see a message like "Internal Server Error. Unable to find property 'SomeFieldName' on type 'Terrasoft.Configuration.SomeTableName'. Please make sure that the property name is correct.". If you see this you will have to resolve this error before continuing to work within Starfish.
If you receive this message while trying to create stages or work with mappings, there's a good chance your BPM metadata is corrupt. This can occur if you have a broken customization or have not completed a full compile within your BPM instance. To know for sure, in a browser go to the following URL: https://YOURINSTANCE.bpmonline.com/0/ServiceModel/EntityDataService.svc/$metadata (replacing YOURINSTANCE with the actual name of your company). If everything is working you should get back a giant XML stream. If there is something wrong with your metadata, you will see a message like "Internal Server Error. Unable to find property 'SomeFieldName' on type 'Terrasoft.Configuration.SomeTableName'. Please make sure that the property name is correct.". If you see this you will have to resolve this error before continuing to work within Starfish.
=Indexing a Field=
You can add an index to a field to speed up performance, especially if you have a large data migration matching on a custom field.
Open the object via Advanced Settings. Click the + button next to the Indexes header. Give your Index a name and then add the field to it. At least for migration purposes, you'll want to index just your matched field on it's own. Save and publish.
If you already have data in Creatio before creating the index, use the SQL Command console to re-index. The syntax below works for SQL databases:
<syntaxhighlight lang="sql">ALTER INDEX IndexName ON TableName REBUILD</syntaxhighlight>
For example: <syntaxhighlight lang="sql">ALTER INDEX IndexUsrSLXId ON Activity REBUILD</syntaxhighlight>
In my scenario, indexing this field made my migration about 4 times faster.

Latest revision as of 13:53, 13 April 2021

bpm'online Connector Versions

StarfishETL has two connector types for bpm'online.

OData: Allows for more complex querying. 4-6k records per hour

Data Services: Faster than OData. Approx 30k records per hour

BPM Online (OData) Advanced Filtering

Sometimes it is necessary to filter BPM Online in ways that are not possible through a SQL statement. You may use the 'Filter' virtual field to override the filter that is sent to the BPM OData web service. 'Filter' will show up as a field for all tables. It is possible to match on this column or perform a SmartLookup on it. In the value for this field you will supply the full filter in the OData Query format http://www.odata.org/documentation/odata-version-2-0/uri-conventions/#FilterSystemQueryOption.

Filter Example

This is an example of a query you would supply in the Filter column when matching on it.

Account/Id eq guid'1de420aa-9577-46ac-8326-c3a566a58c3b'

Coded SmartLookup Example

This example would filter Contacts on the Contact's related Account ID, returning the Surname field.

ScriptedField=SmartLookup("ContactCollection", "Surname", "Filter = Account/Id eq guid'1de420aa-9577-46ac-8326-c3a566a58c3b'")

SQL SELECT Example

This example would filter for Products related to a single Order. This example would be used as your SQL Selection Statement when using BPM as your Origin.

SELECT * FROM OrderProductCollection WHERE Filter = 'Order/Id eq guid''e1d0c2ab-7d41-4e23-b040-3ba524778063'''

500 Internal Server Error

If you receive this message while trying to create stages or work with mappings, there's a good chance your BPM metadata is corrupt. This can occur if you have a broken customization or have not completed a full compile within your BPM instance. To know for sure, in a browser go to the following URL: https://YOURINSTANCE.bpmonline.com/0/ServiceModel/EntityDataService.svc/$metadata (replacing YOURINSTANCE with the actual name of your company). If everything is working you should get back a giant XML stream. If there is something wrong with your metadata, you will see a message like "Internal Server Error. Unable to find property 'SomeFieldName' on type 'Terrasoft.Configuration.SomeTableName'. Please make sure that the property name is correct.". If you see this you will have to resolve this error before continuing to work within Starfish.

Indexing a Field

You can add an index to a field to speed up performance, especially if you have a large data migration matching on a custom field.

Open the object via Advanced Settings. Click the + button next to the Indexes header. Give your Index a name and then add the field to it. At least for migration purposes, you'll want to index just your matched field on it's own. Save and publish.

If you already have data in Creatio before creating the index, use the SQL Command console to re-index. The syntax below works for SQL databases:

ALTER INDEX IndexName ON TableName REBUILD

For example:

ALTER INDEX IndexUsrSLXId ON Activity REBUILD

In my scenario, indexing this field made my migration about 4 times faster.