Hello,
I’m just getting started setting up ECM as a repository for our attachments in Epicor Kinetic. I am wondering if there is a way to tell ECM or Kinetic what the base folder structure should be. Currently it automatically creates a folder at the “top-level” in ECM, using the Kinetic Company ID.
Is it possible to put these Company folders one level deeper, maybe in a subfolder called Kinetic, for example?
Also, it is creating an ECM subfolder inside the Company folder. Seems redundant, considering we are in ECM. Can that be prevented? Is there a reason for it? Are there other folders that could exist at that level of folder structure?
You can move the folders and documents however you want - it’s up to you to make sure the documents are in the right place and proeprly secured.
But these are great questions - but you’ll find there are two camps on this topic.
Folders are useless - the index and search feature are your friends. If each document is properly indexed, named, and attached back to Epicor transactions, there will be no need to traverse the folder structure looking for your documents.
Humans use the system - As long as humans get into ECM directly to work with documents, some level of folder structure is nice.
But I’ll say that there is a nice location in between. And it has to do more with Security Class (and folder security) than anything else. We created a content-type folder under each company folder, and all of our workflows have a specific step where the naming, moving, and setting of security class is done before the document can proceed in the workflow. this allows us to use ECM for many more things than Kinetic attachments and maintain a consistency for users of both Kientic and ECM.
Getting past any philosophical discussion on the merits of document management systems, you will use the system as you choose and anything that works for you is a perfectly good answer.
Thanks Mike. I can see the merits of both ‘sides’.
In theory, if folder structure is important to our organization, you are saying that setting up workflows would be the way to handle control over where the files end up in the folder structure? That I can ‘intercept’ the upload of a file and direct it to a particular folder, different than the default that Kinetic/ECM normally use?
100%.
Each Content Type has a field for Workflow. Create a basic ‘housekeeping’ workflow and assign it to the Content Type. No matter where the document comes from, that workflow will put it where it needs to be.
The link back to Kinetic is a document ID (GUID) so the “location” doesn’t matter.
Now that brings up another question… Either Kinetic or ECM is creating and assigning a Content Type that is identified as “{KineticDocumentTypeID}_{Company}”. Is this something that can be controlled at all? If I have 10 companies and 5 attachment types, am I absolutely going to have 50 content types to manage?
It has more to do with the ability to link additional Metadata from the Kinetic Side (Document Type Metadata maintenance program in Kinetic). Kinetic is based on the company level “firewall” to maintain security and prevent cross contamination, and the Content types must follow suit.
Doesn’t mean you can’t do some other creative stuff though.
Is the Attachments folder what allows the upload of attachments to ECM ?
We have been trying to override the default behavior that Kinetic provides and also provide some capability where Kinetic does not support it.
Seems like my goal would go something like this:
Use File-Picker-Client control to select the client side file,
Use an Event with file-transfer-widget to upload the file to the server.
Is this making any sense ? I’m not really an ECM guy, I’m just being asked to explore if something like this can work.
What I’m missing though, even if the above is true, is the file-transfer-widget does not appear to provide spots to specify all the details,
like with Ice.BO.AttachmentSvc.DocStartUploadFile
No. It’s the only simple answer when it comes to ECM.
Programmatic uploads can be done via the ECM API (like Kinetic does it) using either the Kinetic method or direct to ECM. However, there’s a bit more to it.
Earlier in this thread I mentioned the Kinetic Attachment type = ECM Content Type. The expectation from the Kinetic attachment method is that ECM will take care of storage, permissions, and any workflow attached to the content type. I don’t know of a way for you to pass a folder specification. Even the ECM API requires multiple methods to attach and then move/relocate a file.
The ECM Content type and workflows are your answer though. A generic workflow attached to the content type (or intermediate content type) can change all sorts of properties of the attachment through its processing steps. As long as you don’t mess with the document ID/GUID that Kinetic received from the attach method, you can change just about anything about the attachment.
Thank you for the reply, this is a new area, excuse my na·ive·té.
What do you mean when you say “Kinetic method” ?
Using the file-transfer widget ? or
Using Rest to call BO.Method ? (which BO ?)
So here you are referring to ECM workflows (i.e. built in ECM tool) ?
I’m totally inexperienced with that
(new topic)
Here is an example of a good confusion of mine…
I found in REST API help " Ice.BO.AttachmentSvc" method " UploadFileToDocTypeStorage",
It’s input is the following:
Assuming DocTypeStorage means like ECM, vs Dropbox etc,
and docTypeID is ECM Content Type,
but from Kinetic web there is no way for me the read a local client file contents, which the “data” parameter to the rest call requires, is there ?
no worries. I’ll clarify. Sometimes I make simple references assuming others know more than they do - apologies. I don’t have the ECM API reference handy, but it can be found in the ECM online help somewhere.
The kinetic method would be either from inside the UI - drag/drop, button click, Function, or BPM - they all use the Kinetic API method call out to the ECM API.
Direct to ECM would be to bypass the Kinetic API method call to ECM by calling the ECM API directly - from any program, including a Function of BPM inside Kinetic.
Yes - inside ECM. The content type definition sets all the default document properties when the document is created (of that content type)/
I have not done this, but reading this and knowing a bit about it, the “docTypeID” is going to be the Kinetic Doc Type. It has the definition of “DocTypeStorage” and is linked to the ECM Content Type. *** You must create Doc Types in Kinetic with the ECM Storage option - it will build the ECM content Type for you. Then you go into ECM and set the default properties there.
Correct. The Edge Agent makes this possible, but you must do it via the Kinetic API Method calls. I’m not sure which/how to utilize the Edge Agent programmatically, and I’ve not seen anyone else here do it yet (that I can recall).
A few options are available outside of what was mentioned.
ECM Client can import files.
If the Content Type is selected in the Batch Import and you monitor a folder for files.
CSV files with a PDF or most file types can be imported and can optionally link to a workflow.
The workflow with the correct REST calls can lookup the SysRowId from Kinetic and attach to a record.
I would look through Epiuser ECM threads and lookup some of the information that is available.
Certainly the easiest method to use ECM is to attach using ECM document types in Kinetic.
Thanks for the help guys, it is getting a littler clearer…couple of follow up questions
I assume by this you mean use the built-in 'paperclip’s on certain epicor apps ?
We want to do something similiar but build our own fit-for-purpose kind of thing.
From what’s been replied, it seems the best approach for that is to get the ECM Rest API documentation and implement Rest calls from Kinetic to ECM, does that sound correct ?
The second easiest is to use the Batch impart as @swilliasc111 mentioned - you just have to get some bit of data in there with it so the workflow can then connect it back to the entity or transaction in Epicor (eg - filename is the Order# so the workflow can take the value from the $Title field and use a datalink to connect the file to the Sales Order in Kinetic)
The third easiest way would be to build the App as a Kinetic App and use the internal methods (Ice.BO.AttachmentSvc methods)
The fourth way is to build your own from scratch outside of Kinetic and hit the ECM API directly.
But no matter the choice, you have to keep the links between Kinetic and ECM (DocType ↔ ContentType) straight, and use the ContentType defaults and ECM worklows to do a few necessary things to keep ECM well maintained.
I will explore this more, now that I’ve reread his response a couple of times I think I get the concept…Imagine, I’ve never been in ECM except to view attacmendts, much less developed a workflow, lol
BUT…for that I need to be able to read the data from a client side file, I don’t see anyway to do that from the Kinetic web browser, I’ve seen expectations it may be possible using Edge Agent api, but I don’t think that really exists at this point.