Application Studio - Pass Tableset to Function

Is it possible to create a Function that has a Tableset as the Request Parameter and pass a Tableset to it through App Studio?

Your best bet is to convert the tableset to a generic dataset with Ice.DatasetAdapter.ConvertToGenericDataset, then serialize the dataset to XML through .WriteXml(), encode the XML to Base64, and pass it as a string. On the receiving side, you can decode the base64 string back to XML, and use .ReadXml() to deserialize it back to a dataset.

Otherwise, the dataset gets converted to JSON arrays and you lose extended properties, column types, deleted rows, original rows, etc…

EDIT: Sorry I just saw you wrote through App Studio… This won’t work in app studio, due to no code and all…


With today’s API-first development, the Epicor/Kinetic details are hidden from the client and the API will exposed a shaped view that references an OpenAPI(Swagger) specification to describe data types, mandatory items, etc.

In your case @jkane, an Epicor Function seems to be the way Kinetic screens do what you are asking. I have to keep reminding myself not to code in the client as we see daily the various issues it causes with upgrading, security, performance, …


That’s a bit of a corporate cop out if you ask me. A proper service would pass objects unmolested and loss-less… But whatever, I’m not going to die on that hill this morning… :wink:

I’m not sure what you mean by this LMAO
OpenAPI is a standard… dare I say “The” standard for RESTFUL Services and APIs not sure what you mean by “unmolested” the data you get out of the REST API is “The data” that the API expects and understands…

Try passing a dataset to a function from a customization or a BPM, you will see what I mean… Everything becomes strings! I’m not knocking on OpenAPI, it does have provisions for offering strongly typed services, it’s just not being used…

Any luck with this issue?

I also want to pass a Tableset to perform some complex logic on the backend.

There are a few posts out there that show how to do this. You’ll need to search for them.

I think I figured it out.

you need to pass the Dataset ID of the DataView.



I tested it and it works fine.