Overview
The Pimcore integration provides ready-made functions you can call when building mappings. They handle common lookups and conversions against your Pimcore catalog and your iPaaS.com data, such as reading a custom field value, resolving Pimcore categories to iPaaS.com category IDs, building product options from variants, and converting image galleries and dates, so you do not have to write that logic yourself.
Where you can use these functions
These functions are available anywhere you write a formula for the Pimcore integration:
Dynamic Formula mappings: where a destination field's value is produced by a formula rather than mapped directly from a source field.
Mapping collection filters: where a formula decides whether a record should be processed.
Error filters: a mapping collection's error filter, which sits alongside its collection filter. When the error filter's formula resolves to true, the transfer raises an error that is held in the Error Logs for review and is not retried automatically.
Translation collections: where a translation entry uses a formula as its source value.
How to use them
Call a function by name and pass the values it needs in parentheses, for example:
PimcoreCustomFieldValue(inputObject, customFieldName).Each function's signature shows its name, the parameters it accepts (with their types), and the type of value it returns. Use it as the reference for exactly how to call the function.
Function names and formula syntax are case-sensitive, so type each name exactly as shown. Whether the values a function matches are treated as case-sensitive varies by function, and is called out in the relevant parameter's description.
Most of these functions are synchronous and are called directly; one (
ConvertCategoriesToSpaceportIds) is asynchronous (its signature returns aTask) and must be called withawait. Each function's How to call it example shows the correct form.Each function runs at sync time, against the data in your connected Pimcore account and your iPaaS.com subscription.
The functions are grouped below by the area of the integration they support.
Products and custom fields
PimcoreCustomFieldValue
What it does: Returns the value of a named Pimcore custom field from a source object. It accepts either a Pimcore record that carries custom fields or a list of key/value custom-field pairs.
Signature: object PimcoreCustomFieldValue(object inputObject, string customFieldName)
How to call it: PimcoreCustomFieldValue(inputObject, customFieldName)
Parameter | Type | Required | Default | Description |
inputObject |
| Yes | N/A | The Pimcore source object that holds custom fields, either a Pimcore record with custom fields or a list of key/value custom-field pairs. |
customFieldName |
| Yes | N/A | The name of the Pimcore custom field to read. |
Returns: object. The custom field's value, or null when the field is not present.
When to use it: Use it to pull a named Pimcore custom field into a destination field. It raises an error if the supplied object does not expose readable custom fields.
ParseJsonArrayToDictionary
What it does: Converts a JSON array string into a lookup dictionary, using one field of each array element as the key and another as the value.
Signature: Dictionary<string, object> ParseJsonArrayToDictionary(string json, string keyFieldName, string valueFieldName)
How to call it: ParseJsonArrayToDictionary(json, keyFieldName, valueFieldName)
Parameter | Type | Required | Default | Description |
json |
| Yes | N/A | The JSON array string to parse. |
keyFieldName |
| Yes | N/A | The field in each array element to use as the dictionary key. |
valueFieldName |
| Yes | N/A | The field in each array element to use as the dictionary value. |
Returns: Dictionary<string, object>. A dictionary mapping each element's key field to its value field; an empty dictionary when the input is null or empty.
Example: parsing [{"code":"sku123","name":"Product A"}] with key code and value name maps sku123 to Product A.
When to use it: Use it to turn a JSON array from Pimcore into a quick lookup dictionary for later mapping steps.
GetPresetValue
What it does: Returns the value of a subscription preset setting by its name, looking it up directly in the integration's subscription configuration.
Signature: string GetPresetValue(string presetName)
How to call it: GetPresetValue(presetName)
Parameter | Type | Required | Default | Description |
presetName |
| Yes | N/A | The exact name of the subscription preset setting to read (for example |
Returns: string. The preset's configured value, or null when the name is blank or no such setting exists.
When to use it: Use it to read an optional subscription-level configuration value, such as a CDN, asset path, or manufacturer path preset, inside a formula.
Categories
ConvertCategoriesToSpaceportIds
What it does: Takes a product's assigned Pimcore categories and resolves each one to its matching iPaaS.com category ID, returning the resolved IDs. Categories that cannot be resolved in iPaaS.com are skipped.
Signature: Task<List<IPaaSApi.Model.GenericRequest>> ConvertCategoriesToSpaceportIds(List<ProductCategoryAssignmentModel> categories)
How to call it: await ConvertCategoriesToSpaceportIds(categories)
Parameter | Type | Required | Default | Description |
categories |
| Yes | N/A | The list of Pimcore product category assignments, each carrying a class name and an ID. |
Returns: List<IPaaSApi.Model.GenericRequest>. The resolved iPaaS.com category IDs, one entry per category that was found; categories with no match are omitted.
When to use it: Use it in To iPaaS.com product flows to translate a product's Pimcore categories into their iPaaS.com category IDs before assigning them.
Product variants and options
ParseVariantsFromCollection
What it does: Reads each Pimcore variant's option name and value pairs from a nested collection in its data and builds a consolidated set of structured product options and their values.
Signature: List<ProductOptionModel> ParseVariantsFromCollection(List<VariantModel> variants, string collectionPath, string optionNameField, string optionValueField, string className, string id)
How to call it: ParseVariantsFromCollection(variants, collectionPath, optionNameField, optionValueField, className, id)
Parameter | Type | Required | Default | Description |
variants |
| Yes | N/A | The Pimcore product variants to process. |
collectionPath |
| Yes | N/A | The path to the collection within each variant's data where the option name and value pairs are stored. |
optionNameField |
| Yes | N/A | The field within that collection that holds the option name. |
optionValueField |
| Yes | N/A | The field within that collection that holds the option value. |
className |
| Yes | N/A | The Pimcore class name of the variants, used to build the option identifiers. |
id |
| Yes | N/A | The identifier of the parent product the variants belong to. |
Returns: List<ProductOptionModel>. The consolidated product options, each with its distinct values across all variants.
When to use it: Use it when a Pimcore variant's options are stored in a nested collection and you need the structured product options for a To iPaaS.com product flow.
ParseVariantsFromCollectionToiPaaS
What it does: Does the same work as ParseVariantsFromCollection, then converts the result into iPaaS.com product option request objects ready to send to iPaaS.com.
Signature: List<ProductOptionRequest> ParseVariantsFromCollectionToiPaaS(List<VariantModel> variants, string collectionPath, string optionNameField, string optionValueField, string className, string id)
How to call it: ParseVariantsFromCollectionToiPaaS(variants, collectionPath, optionNameField, optionValueField, className, id)
Parameter | Type | Required | Default | Description |
variants |
| Yes | N/A | The Pimcore product variants to process. |
collectionPath |
| Yes | N/A | The path to the collection within each variant's data where the option name and value pairs are stored. |
optionNameField |
| Yes | N/A | The field within that collection that holds the option name. |
optionValueField |
| Yes | N/A | The field within that collection that holds the option value. |
className |
| Yes | N/A | The Pimcore class name of the variants, used to build the option identifiers. |
id |
| Yes | N/A | The identifier of the parent product the variants belong to. |
Returns: List<ProductOptionRequest>. The consolidated product options as iPaaS.com request objects, each with its option name and value entries.
When to use it: Use it in a To iPaaS.com product flow when a variant's options are stored in a nested collection and you need them as iPaaS.com request objects.
ParseVariantsFromFields
What it does: Reads each Pimcore variant's options from named custom fields and builds a consolidated set of structured product options and their values.
Signature: List<ProductOptionModel> ParseVariantsFromFields(List<VariantModel> variants, string fieldNames, string className, string id)
How to call it: ParseVariantsFromFields(variants, fieldNames, className, id)
Parameter | Type | Required | Default | Description |
variants |
| Yes | N/A | The Pimcore product variants to process. |
fieldNames |
| Yes | N/A | A comma-separated list of Pimcore custom field names to read as variant options (for example |
className |
| Yes | N/A | The Pimcore class name of the variants, used to build the option identifiers. |
id |
| Yes | N/A | The identifier of the parent product the variants belong to. |
Returns: List<ProductOptionModel>. The consolidated product options, each with its distinct values across all variants.
When to use it: Use it when a Pimcore variant's options are defined as flat custom fields and you need the structured product options for a To iPaaS.com product flow. It raises an error if a named field is missing from a variant.
ParseVariantsFromFieldsToiPaaS
What it does: Does the same work as ParseVariantsFromFields, then converts the result into iPaaS.com product option request objects. Option names that contain a nested path are simplified to the segment after the last dot.
Signature: List<ProductOptionRequest> ParseVariantsFromFieldsToiPaaS(List<VariantModel> variants, string fieldNames, string className, string id)
How to call it: ParseVariantsFromFieldsToiPaaS(variants, fieldNames, className, id)
Parameter | Type | Required | Default | Description |
variants |
| Yes | N/A | The Pimcore product variants to process. |
fieldNames |
| Yes | N/A | A comma-separated list of Pimcore custom field names to read as variant options (for example |
className |
| Yes | N/A | The Pimcore class name of the variants, used to build the option identifiers. |
id |
| Yes | N/A | The identifier of the parent product the variants belong to. |
Returns: List<ProductOptionRequest>. The consolidated product options as iPaaS.com request objects, with option names simplified to the last path segment.
When to use it: Use it in a To iPaaS.com product flow when a variant's options are defined as flat custom fields and you need them as iPaaS.com request objects with friendly option names.
ParseVariantOptionValuesFromCollection
What it does: Extracts the option name and value pairs for a single variant from a nested collection in its data.
Signature: List<VariantOptionValueModel> ParseVariantOptionValuesFromCollection(string collectionPath, string optionNameField, string optionValueField, JToken originalJToken)
How to call it: ParseVariantOptionValuesFromCollection(collectionPath, optionNameField, optionValueField, originalJToken)
Parameter | Type | Required | Default | Description |
collectionPath |
| Yes | N/A | The path to the collection of variant options within the variant's data. |
optionNameField |
| Yes | N/A | The field within that collection that holds the option name. |
optionValueField |
| Yes | N/A | The field within that collection that holds the option value. |
originalJToken |
| Yes | N/A | The raw Pimcore variant or product data (a JSON token, for example from a GraphQL response). |
Returns: List<VariantOptionValueModel>. The variant's option name and value pairs; only pairs that have both a name and a value are included.
When to use it: Use it to pull one variant's option values out of a nested collection, typically as an input to building product options.
ParseVariantOptionValuesFromCollectionToiPaaS
What it does: Does the same work as ParseVariantOptionValuesFromCollection, then converts the result into iPaaS.com option value request objects.
Signature: List<OptionValueRequest> ParseVariantOptionValuesFromCollectionToiPaaS(string collectionPath, string optionNameField, string optionValueField, JToken originalJToken)
How to call it: ParseVariantOptionValuesFromCollectionToiPaaS(collectionPath, optionNameField, optionValueField, originalJToken)
Parameter | Type | Required | Default | Description |
collectionPath |
| Yes | N/A | The path to the collection of variant options within the variant's data. |
optionNameField |
| Yes | N/A | The field within that collection that holds the option name. |
optionValueField |
| Yes | N/A | The field within that collection that holds the option value. |
originalJToken |
| Yes | N/A | The raw Pimcore variant or product data (a JSON token, for example from a GraphQL response). |
Returns: List<OptionValueRequest>. The variant's option values as iPaaS.com request objects, each with its option name and value.
When to use it: Use it in a To iPaaS.com product flow when a variant's option values live in a nested collection and you need them as iPaaS.com request objects.
ParseVariantOptionValuesFromFields
What it does: Extracts the option values for a single variant from named custom fields. Option names that contain a nested path are simplified to the segment after the last dot.
Signature: List<VariantOptionValueModel> ParseVariantOptionValuesFromFields(List<KeyValuePair<string, object>> customFields, string fieldNames, string variantId)
How to call it: ParseVariantOptionValuesFromFields(customFields, fieldNames, variantId)
Parameter | Type | Required | Default | Description |
customFields |
| Yes | N/A | The variant's custom fields as key/value pairs. |
fieldNames |
| Yes | N/A | A comma-separated list of custom field names to read as option values (for example |
variantId |
| Yes | N/A | The identifier of the variant the option values belong to. |
Returns: List<VariantOptionValueModel>. The variant's option name and value pairs, one per named field.
When to use it: Use it to pull one variant's option values from flat custom fields. It raises an error if a named field has no custom-field entry, so confirm the fields exist before calling it.
ParseVariantOptionValuesFromFieldsToiPaaS
What it does: Does the same work as ParseVariantOptionValuesFromFields, then converts the result into iPaaS.com option value request objects.
Signature: List<OptionValueRequest> ParseVariantOptionValuesFromFieldsToiPaaS(List<KeyValuePair<string, object>> customFields, string fieldNames, string variantId)
How to call it: ParseVariantOptionValuesFromFieldsToiPaaS(customFields, fieldNames, variantId)
Parameter | Type | Required | Default | Description |
customFields |
| Yes | N/A | The variant's custom fields as key/value pairs. |
fieldNames |
| Yes | N/A | A comma-separated list of custom field names to read as option values (for example |
variantId |
| Yes | N/A | The identifier of the variant the option values belong to. |
Returns: List<OptionValueRequest>. The variant's option values as iPaaS.com request objects, each with its option name and value.
When to use it: Use it in a To iPaaS.com product flow when a variant's option values are defined as flat custom fields and you need them as iPaaS.com request objects.
BuildProductOptionsFromVariants
What it does: Consolidates the option values already parsed onto a set of Pimcore variants into a de-duplicated list of product options and their values, creating each option and value only once across all variants.
Signature: List<ProductOptionModel> BuildProductOptionsFromVariants(CallWrapper activeCallWrapper, List<VariantModel> variants, string className, string id)
How to call it: BuildProductOptionsFromVariants(activeCallWrapper, variants, className, id)
Parameter | Type | Required | Default | Description |
activeCallWrapper |
| Yes | N/A | The integration's active call context. It is required by the function's signature but is not used in the consolidation itself. |
variants |
| Yes | N/A | The Pimcore product variants, each already carrying its parsed option values. |
className |
| Yes | N/A | The Pimcore class name of the variants, used with the ID to build the option identifiers. |
id |
| Yes | N/A | The identifier of the parent product, combined with the class name to build the option identifiers. |
Returns: List<ProductOptionModel>. The de-duplicated product options, each with its distinct values across all variants.
When to use it: Use it as the consolidation step after parsing each variant's option values, to produce one structured set of product options and values.
Images
GetImageIdsFromProductGallery
What it does: Reads the image IDs from a Pimcore product gallery and returns them as a single comma-separated string.
Signature: string GetImageIdsFromProductGallery(object gallery)
How to call it: GetImageIdsFromProductGallery(gallery)
Parameter | Type | Required | Default | Description |
gallery |
| Yes | N/A | The Pimcore product gallery holding the image data. |
Returns: string. The image IDs separated by commas, or null when the gallery is empty or holds no valid IDs.
Example: a gallery with images 123 and 456 returns 123,456.
When to use it: Use it in To iPaaS.com product flows to produce a comma-separated list of a product's Pimcore image IDs.
GetImageURLsFromProductGallery
What it does: Reads the image URLs from a Pimcore product gallery and returns them as a single comma-separated string, prefixing each image path with your Pimcore host.
Signature: string GetImageURLsFromProductGallery(object gallery)
How to call it: GetImageURLsFromProductGallery(gallery)
Parameter | Type | Required | Default | Description |
gallery |
| Yes | N/A | The Pimcore product gallery holding the image data. |
Returns: string. The full image URLs separated by commas, or null when the gallery is empty or holds no valid paths.
When to use it: Use it in To iPaaS.com product flows to produce a comma-separated list of a product's full Pimcore image URLs.
Dates
ConvertDateTimeToUnixTimestamp
What it does: Converts a date and time into a Unix timestamp, in seconds since 1970-01-01 UTC.
Signature: long ConvertDateTimeToUnixTimestamp(DateTime dateTime)
How to call it: ConvertDateTimeToUnixTimestamp(dateTime)
Parameter | Type | Required | Default | Description |
dateTime |
| Yes | N/A | The date and time to convert. Provide it in UTC to avoid time-zone differences. |
Returns: long. The Unix timestamp in seconds.
When to use it: Use it to turn a date value into a Unix timestamp for a destination field that expects seconds.
ConvertUnixTimestampToDateTime
What it does: Converts a Unix timestamp, in seconds since 1970-01-01 UTC, into a date and time value.
Signature: DateTime ConvertUnixTimestampToDateTime(long unixTimestamp)
How to call it: ConvertUnixTimestampToDateTime(unixTimestamp)
Parameter | Type | Required | Default | Description |
unixTimestamp |
| Yes | N/A | The Unix timestamp in seconds to convert. |
Returns: DateTime. The date and time for the given timestamp.
When to use it: Use it to turn a Unix timestamp from Pimcore into a date and time for a destination field.
