Why I am abandoning Kinetic screens completely 😥

Am I missing a setting somewhere - It seems we have to be in a specific site to see shipments/Jobs/Etc. done at that site.

AR Invoice Tracker - for example - will only show me site specific shipments if I am in that site. Otherwise it shows No Records.

Is that by design? If so - Kinetic is DOA for multi-site implementations

Are you sure it’s not territory? Are you set as an authorized user? I don’t know if it’s acting different in the web UI or not, but traditionally, if you aren’t authorized to anyone, you can see everything, but once you are authorized to any specific workforce, then you are locked to the territories that you are authorized for only.


Well, for AR Staff members they never have been assigned Work Force or other CRM related setup.
I can log in as the manager account and same result - have to switch sites to see data originated at that site.

Sesame Street Idk GIF

Well, a thought. I’m assuming that it’s as you expect in classic?

Yes - works as expected in classic and Modern - Just not Kinetic.

That’s true even in 10

Hi Ed,

I agree with Calvin. It’s been this way since at least Epicor 9.04. You cannot see jobs or customer shipments in plants that are not selected current one. This was an incredible bummer for us for many years until we got a customization on JobEntry and Tracker where TimePhase open with switches curPlant to job plant.


HI Nancy,

Did you develop that customization internally or did you pay someone to do it? This is extremely annoying for us and would love to be able to see all jobs and orders regardless of what site we are currently logged into.


Hi Dan,

(Also Andris - askulte - sorry for delay in reply!).
A person who worked here prior did the development with help from this group. The problem is it is in VB, but I think with a little work and search and help here hopefully, you could get it working in C# for your version.

The technique is to monitor for Key down event on the job field in Timephase, so assuming someone wants to use “open with” Job in timephase and the job is not in user logged in current plant. With that session ID is changed to match the job getting opened. We have 3 plants with jobs in each and central planners needing to switch alot.

Here’s the vb. I wanted to step thru and follow with visual studio but I have a new computer and 2019 VS which doesn’t seem to want to play nice with Epicor debugging :frowning: IDK what the uncomment next line was about but I figured I’ll just leave it there in case useful too…
I also saw a post from ChrisConn that shows how to change session plant which I’ll post at here at start. I hope this helps you too!


' **************************************************
' Custom code for TimePhasForm
' Created: 12/27/2018 1:57:31 PM
' **************************************************
Imports System
Imports System.ComponentModel
Imports System.Data
Imports System.Diagnostics
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Erp.Adapters
Imports Erp.UI
Imports Ice.Lib
Imports Ice.Adapters
Imports Ice.Lib.Customization
Imports Ice.Lib.ExtendedProps
Imports Ice.Lib.Framework
Imports Ice.Lib.Searches
Imports Ice.UI.FormFunctions
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinGrid
imports System.Drawing
Imports Infragistics.Win.UltraWinToolbars

#Region "Customizations"
	'Rev0 - 12/27/18
	'	Determine cell for mouse down.  If it has a number, change session.plantid to dropdown plant id
	'	Reset session.plantid to original on Clear Button and CloseForm
	'	Changed to detect site dropdown change to set plantid...left mousedown here, but commented out
#End Region

Public Class Script

	' ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **

	' Add Custom Module Level Variables Here **
	Dim ThisPlant as string = string.empty
	dim grdJob as EpiUltraGrid
	dim cmbSite as epiCombo

	Public Sub InitializeCustomCode()
		' Begin Wizard Added Variable Initialization
		AddHandler Me.TimePhasForm.Closing, AddressOf Me.TimePhasForm_Closing
		AddHandler Me.baseToolbarsManager.ToolClick, AddressOf Me.baseToolbarsManager_ToolClick
		' End Wizard Added Variable Initialization
	End Sub

	Public Sub DestroyCustomCode()
		' Begin Wizard Added Object Disposal
		RemoveHandler Me.TimePhasForm.Closing, AddressOf Me.TimePhasForm_Closing
		RemoveHandler Me.baseToolbarsManager.ToolClick, AddressOf Me.baseToolbarsManager_ToolClick
		' End Wizard Added Object Disposal
	End Sub

	Private Sub TimePhasForm_Load(ByVal sender As Object, ByVal args As EventArgs)
		' Add Event Handler Code
		'save current plantid
		ThisPlant = TimePhasForm.Session.PlantID

		'so we can get handler for mousedown
		grdJob = Ctype(csm.GetNativeControlReference("7908565c-cc3c-43d1-b85b-9921ad88fb89"),EpiUltraGrid)
		AddHandler grdJob.MouseDown, AddressOf grdJob_mousedown

		'so we can detect dropdown value change
		cmbSite = Ctype(csm.GetNativeControlReference("f7641147-3182-4540-bb0a-8ab960aad5c2"),EpiCombo)
		AddHandler cmbSite.valuechanged, AddressOf cmbSite_valuechanged

	End Sub

	Private Sub TimePhasForm_Closing(ByVal sender As Object, ByVal args As System.ComponentModel.CancelEventArgs)
		' Add Event Handler Code
		'restore original plantid
		TimePhasForm.Session.PlantID = ThisPlant 
		RemoveHandler grdJob.MouseDown, AddressOf grdJob_mousedown
		RemoveHandler cmbSite.valuechanged, AddressOf cmbSite_valuechanged
	End Sub

	Private Sub grdJob_mousedown (sender as object, args as System.Windows.Forms.MouseEventArgs)
		' Declare and retrieve a reference to the UIElement
		Dim aUIElement As UIElement = grdJob.DisplayLayout.UIElement.ElementFromPoint( New Point(args.X, args.Y))
		' Declare and retrieve a reference to the Cell
		Dim aCell As UltraGridCell = aUIElement.GetContext(GetType(UltraGridCell))
		dim ColName as string = string.empty

		' If a cell was found
		If Not aCell Is Nothing Then
			ColName = aCell.Column.Key
			if ColName = "JobNum" andalso acell.value <> "" then
				'click is in the jobnum cell with a job number
				' get the plant dropdown value
				Dim edvMisc As EpiDataView = CType(oTrans.EpiDataViews("Misc"), EpiDataView)
				Dim jobPlantID As String = edvMisc.dataView(edvMisc.Row)("PlantID")
				'set the session plantid to the jobplantid

'uncomment the next line to use mouse down in the grid jobnumber column to change plant id
'				TimePhasForm.Session.PlantID = jobPlantID
			end if
		End If

	end sub

	Private Sub baseToolbarsManager_ToolClick(ByVal sender As Object, ByVal args As Infragistics.Win.UltraWinToolbars.ToolClickEventArgs)
		if args.Tool.Key = "ClearTool" then
			TimePhasForm.Session.PlantID = ThisPlant 
		end if
	End Sub

	private sub cmbSite_valuechanged(sender as object, args as System.Eventargs)
		TimePhasForm.Session.PlantID = sender.value
	end sub
End Class
1 Like