Importing an Excel File

It seems totally crazy to me that we have to rely on other users here to fill in the blanks when Epicor removes functionality. They removed the ability to uptake from Excel. Trying to follow Kevins instructions has led me in circles for days. Excel Upload, Parse, Show in Grid → With Extras - Kinetic ERP - Epicor User Help Forum

I have used the file-transfer widget in kinetic successfully to import a textfile and drop it into a comments field. I just can’t get anything to work when it comes to importing and parsing excel data. Does epicor really expect us to roll our own excel file import tools?

I guess I could go back a step and try to use paste/new in a grid… Who here has successfully imported an excel file (or csv) into a dataset in Kinetic using functions (or some other method)?

2 Likes

Ended up back here using a UBAQ and a UD table. At least this works! Make sure your fields in the grid you are pasting to line up with the fields from your Excel copy. I did Paste New and it worked great! Create new record for UD table from Kinetic - Kinetic ERP - Epicor User Help Forum
EDIT: I had to change my UBAQ from Advanced BPM Update Only, to a regular BPM Update Processing just the UD03 table. My previous BAQ needed to have a blank Update custom action to work. I think this was a weird issue with Classic. I don’t like that you can’t see how long it will take to finish updating the records you paste this way. The update from excel could take a couple of minutes sometimes.

2 Likes

The Paste New > Update process works alright. It is a little slow and I can’t tell the process is proceeding. I also have a custom action in the UBAQ to Delete All rows in the UD03 table using this small bit of custom code:

using (var txScope = IceContext.CreateDefaultTransactionScope())
{
  foreach(var UD03 in (from row in Db.UD03 select row))
   {
      Db.UD03.Delete(UD03);
   }
   Db.Validate();
   txScope.Complete();
}

When I run that custom action from the App studio dashboard I created, I get this popup after a while, then over and over as long as I stay on the page:

Business Layer Exception

BpmData form feedback has been received from client but not processed by server code

Error Detail
============
Correlation ID: 429adb3a-09c9-4e73-88b5-19e762265a6f
Description: BpmData form feedback has been received from client but not processed by server code
Program: Epicor.Customization.Bpm.dll
Method: FinalizeBpmContextUsage
Table: undefined
Field: undefined

Eventually I get this popup:

The request has not finished processing. You have the option to keep waiting or enable the UI to interact with it. Be aware that changes may occur if you decide to enable the UI and the request finishes processing while you interact with it.

The I also get these errors that pop up until the delete process is done:


## System Information ##
==================

AppServer Connection: https://(REMOVED)
Form Name: System Monitor
Customization Name: 
Menu ID: SUMN1121
Software Version: 2025.2.0

============

Server Side Exception

Error accessing the database: Transaction (Process ID 801) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Exception caught in: Epicor.ServiceModel

## Error Detail ##
============

##!Correlation ID:##!  b5f54e1d-bcea-4af3-8fea-db23820dca80
##!Description:##!  Error accessing the database: Transaction (Process ID 801) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
##!Program:##!  Microsoft.Data.SqlClient.dll
##!Method:##!  OnError
##!Original Exception Type:##!  SqlException
##!SQL Line Number:##!  1
##!SQL Error Number:##!  1205
##!Framework Method:##!  ExecSqlCommand
##!Framework Line Number:##!  76
##!Framework Column Number:##!  21
##!Framework Source:##!  ExecSqlCommand at offset 621 in file:line:column C:\_releases\ICE\ICE5.1.100.0\Source\Server\Internal\Lib\SolutionTracker\SolutionTracker.cs:76:21


## Client Stack Trace ##
==================
   at Epicor.ServiceModel.Channels.ImplBase.CallWithCommunicationFailureRetry(String methodName, ProxyValuesIn valuesIn, ProxyValuesOut valuesOut, RestRpcValueSerializer serializer)
   at Epicor.ServiceModel.Channels.ImplBase.CallWithMultistepBpmHandling(String methodName, ProxyValuesIn valuesIn, ProxyValuesOut valuesOut, Boolean useSparseCopy)
   at Epicor.ServiceModel.Channels.ImplBase.Call(String methodName, ProxyValuesIn valuesIn, ProxyValuesOut valuesOut, Boolean useSparseCopy)
   at Ice.Proxy.BO.GenXDataImpl.StoreData(GenXDataDataSet dsGenXData)
   at Ice.Lib.Framework.GenXObject.StoreData(GenXDataDataSet ds)
   at Ice.Lib.Framework.GenXObject.handleChunkAndSave(Boolean doCompression, String company, String productID, String typeCode, String cgcCode, String key1, String key2, String key3, String description, String comment, String version, Boolean layerWIP, String data)
   at Ice.Lib.Framework.GenXObject.ChunkNSaveStringByID(String company, String productID, String typeCode, String cgcCode, String key1, String key2, String key3, String description, String comment, String version, Boolean layerWIP, String data)
   at Ice.Lib.Framework.GenXObject.ChunkNSaveStringByID(String company, String productID, String typeCode, String key1, String key2, String key3, String description, String comment, String version, Boolean layerWIP, String data)
   at Ice.Lib.Framework.FormFunctions.ChunkNSaveStringByID(Session s, String company, String productID, String typeCode, String key1, String key2, String key3, String description, String comment, String version, Boolean layerWIP, String data)
   at Ice.Lib.Framework.FormFunctions.ChunkNSaveStringByID(Object sender, String company, String productID, String typeCode, String key1, String key2, String key3, String description, String comment, String version, Boolean layerWIP, String data)

## Inner Exception ##
===============
Transaction (Process ID 801) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

##  ##

My custom action does include a bpmform to ask the user if they are sure they want to delete. The delete action seems to eventually finish removing all the rows. Eventually, the final dialog box from my UBAQ BPM comes up to show all records have been deleted.

How can I deal with this long delay, and give the user some feedback that they are doing the right thing by continuing to wait? I would like to show a time remaining bar, or something. At the very least, I want to suppress all those errors until the custom action actually finishes and shows the last dialog.

Any ideas?

1 Like

I removed the BPM form from the UBAQ and added a dialog box to the button event before I run the custom action. That seems to be the right approach for now.

I still would like some better way to tell the user to be patient while the paste update or delete all processes run. The screen is static except for the little bar at the top to show it is working. :thinking:

2 Likes