Opening Epicor session and Kinetic menus externally from .NET C# application

We are looking at our options for development of customizations outside of Epicor Kinetic. Does anybody have information on opening an epicor session and menus (ie Part Entry) externally, specifically from a .NET C# program utilizing DLL references from local Epicor files? Our intended use is to navigate to related menus on a right click within C# app, similar to Kinetic functionality of right clicking on a field and seeing menu navigation options. We have been able to find some examples of referencing DLLs externally, but most seem to be using deprecated code.

Curious if this is possible and if anybody has done something similar. We are on the latest version of Epicor Kinetic Cloud.

In my experience it is very difficult to do this with the ‘smart client’. I never found a way to do it without it starting a new instance of the client each time.

If you use the Kinetic Browser interface, you could generate a Kinetic URL and run it from your external application. It would open your default web browser and open the appropriate page.

Thank you for the quick response! Browser is definitely an easier option and will be the way we go if we can’t find a smart client solution.

Does the “Allow Multiple Sessions” permission have any impact on this behavior?

If the way you code it opens up multiple sessions at any point, then yes.

I’m assuming you mean classic

You want to just open an existing Epicor part? This can be done via file

In part entry you can send a record to file you can register that file extension to launch Epicor and using the broadcast tower it will intercept the file launch and open the record in your existing session

I’ll put together a demo if someone can remind me on monday

1 Like

I’m on my way out of the door for the week as well so I’ll set a reminder for myself. Thanks for the response!

Hello, you said to remind you on Monday about putting together a demo related to the post.

Sorry for the Delay

So in Epicor you can send a record to a file by going File → Send Record to File, this generates a file like the one shown below. Which includes a section called “Shortcut” which contains a reference to the record you’d like to launch in the system.

If you pass this file as an argument to Epicor.exe it will use the Session Manager to launch the respective Screen and Record without opening a new Epicor As seen below. So one could write a C# program that can have a template of a record and just dynamically create a sysconfig with the record info and then llaunch the screen.

Record File:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- Entries in the appSettings and userSettings nodes must be in this format:
  <name value="" />
  otherwise they will not be parsed correctly by the AppSettingsHandler class.
  Node names must be unique as well.  For example, having two nodes named 'AppServerURL'
  would cause problems.
  Boolean settings must have the additional attribute bool="".
  Enumeration-type settings must have their possible values in an "options" attribute,
  for example options="Last|List|Windows|None".
  -->
  <appSettings>
    <!-- Enter the URL of your appserver.  Format is "https://serverName/SiteName/ -->
    <AppServerURL value="https://Url Here/EpicorLive10" />
    <!-- Can set default language code for startup -->
    <CultureCode value="enu" />
    <!-- Can set default culture for logon window before session is opened -->
    <LogonCultureName value="en-US" />
    <ResourceFile value=".\res\MfgBaseImages.resources" />
    <CustomResourceFile value="" />
    <ToolbarSettings value=".\res\ToolbarSettings.xml" />
    <ProductID value="Epicor" />
    <Version value="11.1.200.0" />
    <snip...>
  <Shortcut>
    <Company>C001</Company>
    <Plant>047</Plant>
    <AppServerURL>https://UrlHere</AppServerURL>
    <DateTime>6/9/2023 7:55:58 PM</DateTime>
    <Originator>Jose C. Gomez</Originator>
    <Process>
      <ProcessID>MRMT1010</ProcessID>
      <Description>Part Maintenance (V1.2)</Description>
    </Process>
    <RecordIDS KeyFields="PartNum" KeyFieldsType="System.String" TableName="PartList" DataSourceType="PartListDataSet">
      <RecordID>10004</RecordID>
    </RecordIDS>
    <Search>
      <NamedSearch>Search Name</NamedSearch>
      <SearchCriteria>Search Criteria</SearchCriteria>
    </Search>
  </Shortcut>
</configuration>
    Process.Start(@"C:\Epicor\ERP10.2Client\Client\Epicor.exe", @"C:\tmp\Part_Maintenance_V12.sysconfig");

LaunchRecordExternally

Thanks for such a detailed response. Is there a way to do exactly this process, but with Kinetic menus?

There should be a Share button starting in 2022.

1 Like

You can do the exact same thing in Kinetic 2023.x generate a URL with a built in record locator

@Mark_Wonsil , that “Share” button was for the forum here. That didn’t have anything do to with Epicor.

Much more relevant! haha

It was my Epicor Idea and I couldn’t find it! :rofl:

1 Like

Here is what it looks like to share:

1 Like