Maximo List Archive

This is an archive of the Maximo Yahoo Community. The content of this pages may be a sometimes obsolete so please check post dates.
Thanks to the community owner Christopher Wanko for providing the content.



Error coping MaxUser.PersonID to Person.NewField when no MaxUser

From: b471code3 (2012-08-13 18:03)


I've created a attribute in the Person table called LoginID and it is
the same as MaxUser.LoginID field. I've created a crossover domain
called MaxUser2Person, that copies the MaxUser.LoginID to Person.LoginID
where personid = :personid. The crossover fields are source: LOGINID,
destination: LOGINID. I allow nulls and no overwrite is checked. The
crossover domain is attached to the new Person.LoginID field. The
process works IF there is a valid MaxUser but gives me an error
(BMXAA4191E - User Name "<whatever I enter>" is not valid.) if I add a
new person and that MaxUser.PersonID does not exist.
What I want to do is copy the field if the user exists and if it doesn't
just leave it blank/null. We have about 1000 people and about 200 users,
people don't have to be users but every one of our people have a loginid
(not Maximo loginid but network, that we pass to other Maximo
applications).
Any idea on why I'm getting this error or what I may have setup wrong?


From: Luca Truffarelli (2012-08-14 08:44)


Did you try to add
MaxUser.PersonID is not null
in the Clause of the relationship?
On 13/08/2012 20:03, b471code3 wrote:
>
>
> I've created a attribute in the Person table called LoginID and it is
> the same as MaxUser.LoginID field. I've created a crossover domain
> called MaxUser2Person, that copies the MaxUser.LoginID to Person.LoginID
> where personid = :personid. The crossover fields are source: LOGINID,
> destination: LOGINID. I allow nulls and no overwrite is checked. The
> crossover domain is attached to the new Person.LoginID field. The
> process works IF there is a valid MaxUser but gives me an error
> (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if I add a
> new person and that MaxUser.PersonID does not exist.
>
> What I want to do is copy the field if the user exists and if it doesn't
> just leave it blank/null. We have about 1000 people and about 200 users,
> people don't have to be users but every one of our people have a loginid
> (not Maximo loginid but network, that we pass to other Maximo
> applications).
>
> Any idea on why I'm getting this error or what I may have setup wrong?
>


From: b471code3 (2012-08-14 15:15)

Yes, I've tried adding it to the MaxUser and Person relationships as well as the crossover domain where clause with no success.
--- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@...> wrote:
>
>
> Did you try to add
> MaxUser.PersonID is not null
> in the Clause of the relationship?
>
> On 13/08/2012 20:03, b471code3 wrote:
> >
> >
> > I've created a attribute in the Person table called LoginID and it is
> > the same as MaxUser.LoginID field. I've created a crossover domain
> > called MaxUser2Person, that copies the MaxUser.LoginID to Person.LoginID
> > where personid = :personid. The crossover fields are source: LOGINID,
> > destination: LOGINID. I allow nulls and no overwrite is checked. The
> > crossover domain is attached to the new Person.LoginID field. The
> > process works IF there is a valid MaxUser but gives me an error
> > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if I add a
> > new person and that MaxUser.PersonID does not exist.
> >
> > What I want to do is copy the field if the user exists and if it doesn't
> > just leave it blank/null. We have about 1000 people and about 200 users,
> > people don't have to be users but every one of our people have a loginid
> > (not Maximo loginid but network, that we pass to other Maximo
> > applications).
> >
> > Any idea on why I'm getting this error or what I may have setup wrong?
> >
>
>
>
>
>


From: Travis Herron (2012-08-14 15:30)

Let's start with this:
Do you NEED to have the data available in the PERSON table, or are you just looking to have the Person's Maximo userid available to see on the Person app screen? If you only need to see it on the Person UI, you should go to Application Designer, add a blank textbox control to the screen, and set its Attribute property to USER.LOGINID
If you really do need that data in the PERSON table, then yes you need a crossover.
Trying to handle NULLs in the relationships (in the Database Configuration app) has no bearing on a crossover domain. The crossover domain is pulling data from one table and putting it in another. A relationship just shows how two tables relate to each other; where the joins should be. Crossover domains don't use relationships; they use the Validation WHERE clause that you give it when creating the crossover domain.
Anyhow, think of how the Users app works. You create a user, put in a PersonID there, and POOF! if that person has info in the Person app, such as an address, email address(es), phone number(s), etc. it shows up on your screen. That's not using a crossover. That's using relationships. The fields on the screen there are fields (attributes) from the Person table (and related tables like EMAIL and PHONE). The data is not actually being moved to the MAXUSER table. So first I ask you. . .is that what you need to happen, but in reverse (data about the user just showing up on the Person screen)?
Travis Herron
--- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@...> wrote:
>
> Yes, I've tried adding it to the MaxUser and Person relationships as well as the crossover domain where clause with no success.
>
> --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> >
> >
> > Did you try to add
> > MaxUser.PersonID is not null
> > in the Clause of the relationship?
> >
> > On 13/08/2012 20:03, b471code3 wrote:
> > >
> > >
> > > I've created a attribute in the Person table called LoginID and it is
> > > the same as MaxUser.LoginID field. I've created a crossover domain
> > > called MaxUser2Person, that copies the MaxUser.LoginID to Person.LoginID
> > > where personid = :personid. The crossover fields are source: LOGINID,
> > > destination: LOGINID. I allow nulls and no overwrite is checked. The
> > > crossover domain is attached to the new Person.LoginID field. The
> > > process works IF there is a valid MaxUser but gives me an error
> > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if I add a
> > > new person and that MaxUser.PersonID does not exist.
> > >
> > > What I want to do is copy the field if the user exists and if it doesn't
> > > just leave it blank/null. We have about 1000 people and about 200 users,
> > > people don't have to be users but every one of our people have a loginid
> > > (not Maximo loginid but network, that we pass to other Maximo
> > > applications).
> > >
> > > Any idea on why I'm getting this error or what I may have setup wrong?
> > >
> >
> >
> >
> >
> >
>


From: b471code3 (2012-08-15 14:31)

Thanks Travis. Yes, I do need that data in the Person table which is why I created the crossover. I need that ID if there is a User associated with the Person, if not the ID field in the Person record should be able to be entered manually if the User is not found. This user ID goes to the WorkOrder, PO and eventually the mxgltxn_iface table to transfer to another system. All this works except being able to enter the ID for a Person in which the User does not exist.
Yes, I understand how I can display related record data on different applications and where data is stored vs. displayed from, done that many many times without issue. The data IS needed in the Person record as Person is used throught Maximo (labor, supervisor in WO, purchase agent in PO, etc.) whereas a User is not. Users are for authentication and access, whereas Person could be anyone of the itmes I listed already (which I'm sure you know).
--- In MAXIMO@yahoogroups.com, "Travis Herron" <therron@...> wrote:
>
> Let's start with this:
>
> Do you NEED to have the data available in the PERSON table, or are you just looking to have the Person's Maximo userid available to see on the Person app screen? If you only need to see it on the Person UI, you should go to Application Designer, add a blank textbox control to the screen, and set its Attribute property to USER.LOGINID
>
> If you really do need that data in the PERSON table, then yes you need a crossover.
>
> Trying to handle NULLs in the relationships (in the Database Configuration app) has no bearing on a crossover domain. The crossover domain is pulling data from one table and putting it in another. A relationship just shows how two tables relate to each other; where the joins should be. Crossover domains don't use relationships; they use the Validation WHERE clause that you give it when creating the crossover domain.
>
> Anyhow, think of how the Users app works. You create a user, put in a PersonID there, and POOF! if that person has info in the Person app, such as an address, email address(es), phone number(s), etc. it shows up on your screen. That's not using a crossover. That's using relationships. The fields on the screen there are fields (attributes) from the Person table (and related tables like EMAIL and PHONE). The data is not actually being moved to the MAXUSER table. So first I ask you. . .is that what you need to happen, but in reverse (data about the user just showing up on the Person screen)?
>
> Travis Herron
>
> --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> >
> > Yes, I've tried adding it to the MaxUser and Person relationships as well as the crossover domain where clause with no success.
> >
> > --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> > >
> > >
> > > Did you try to add
> > > MaxUser.PersonID is not null
> > > in the Clause of the relationship?
> > >
> > > On 13/08/2012 20:03, b471code3 wrote:
> > > >
> > > >
> > > > I've created a attribute in the Person table called LoginID and it is
> > > > the same as MaxUser.LoginID field. I've created a crossover domain
> > > > called MaxUser2Person, that copies the MaxUser.LoginID to Person.LoginID
> > > > where personid = :personid. The crossover fields are source: LOGINID,
> > > > destination: LOGINID. I allow nulls and no overwrite is checked. The
> > > > crossover domain is attached to the new Person.LoginID field. The
> > > > process works IF there is a valid MaxUser but gives me an error
> > > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if I add a
> > > > new person and that MaxUser.PersonID does not exist.
> > > >
> > > > What I want to do is copy the field if the user exists and if it doesn't
> > > > just leave it blank/null. We have about 1000 people and about 200 users,
> > > > people don't have to be users but every one of our people have a loginid
> > > > (not Maximo loginid but network, that we pass to other Maximo
> > > > applications).
> > > >
> > > > Any idea on why I'm getting this error or what I may have setup wrong?
> > > >
> > >
> > >
> > >
> > >
> > >
> >
>


From: b471code3 (2012-08-27 13:10)


Any other input as to why this does not work properly?
--- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@...> wrote:
>
> Thanks Travis. Yes, I do need that data in the Person table which is
why I created the crossover. I need that ID if there is a User
associated with the Person, if not the ID field in the Person record
should be able to be entered manually if the User is not found. This
user ID goes to the WorkOrder, PO and eventually the mxgltxn_iface table
to transfer to another system. All this works except being able to enter
the ID for a Person in which the User does not exist.
>
> Yes, I understand how I can display related record data on different
applications and where data is stored vs. displayed from, done that many
many times without issue. The data IS needed in the Person record as
Person is used throught Maximo (labor, supervisor in WO, purchase agent
in PO, etc.) whereas a User is not. Users are for authentication and
access, whereas Person could be anyone of the itmes I listed already
(which I'm sure you know).
>
>
> --- In MAXIMO@yahoogroups.com, "Travis Herron" therron@ wrote:
> >
> > Let's start with this:
> >
> > Do you NEED to have the data available in the PERSON table, or are
you just looking to have the Person's Maximo userid available to see on
the Person app screen? If you only need to see it on the Person UI, you
should go to Application Designer, add a blank textbox control to the
screen, and set its Attribute property to USER.LOGINID
> >
> > If you really do need that data in the PERSON table, then yes you
need a crossover.
> >
> > Trying to handle NULLs in the relationships (in the Database
Configuration app) has no bearing on a crossover domain. The crossover
domain is pulling data from one table and putting it in another. A
relationship just shows how two tables relate to each other; where the
joins should be. Crossover domains don't use relationships; they use the
Validation WHERE clause that you give it when creating the crossover
domain.
> >
> > Anyhow, think of how the Users app works. You create a user, put in
a PersonID there, and POOF! if that person has info in the Person app,
such as an address, email address(es), phone number(s), etc. it shows up
on your screen. That's not using a crossover. That's using
relationships. The fields on the screen there are fields (attributes)
from the Person table (and related tables like EMAIL and PHONE). The
data is not actually being moved to the MAXUSER table. So first I ask
you. . .is that what you need to happen, but in reverse (data about the
user just showing up on the Person screen)?
> >
> > Travis Herron
> >
> > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > >
> > > Yes, I've tried adding it to the MaxUser and Person relationships
as well as the crossover domain where clause with no success.
> > >
> > > --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> > > >
> > > >
> > > > Did you try to add
> > > > MaxUser.PersonID is not null
> > > > in the Clause of the relationship?
> > > >
> > > > On 13/08/2012 20:03, b471code3 wrote:
> > > > >
> > > > >
> > > > > I've created a attribute in the Person table called LoginID
and it is
> > > > > the same as MaxUser.LoginID field. I've created a crossover
domain
> > > > > called MaxUser2Person, that copies the MaxUser.LoginID to
Person.LoginID
> > > > > where personid = :personid. The crossover fields are source:
LOGINID,
> > > > > destination: LOGINID. I allow nulls and no overwrite is
checked. The
> > > > > crossover domain is attached to the new Person.LoginID field.
The
> > > > > process works IF there is a valid MaxUser but gives me an
error
> > > > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if
I add a
> > > > > new person and that MaxUser.PersonID does not exist.
> > > > >
> > > > > What I want to do is copy the field if the user exists and if
it doesn't
> > > > > just leave it blank/null. We have about 1000 people and about
200 users,
> > > > > people don't have to be users but every one of our people have
a loginid
> > > > > (not Maximo loginid but network, that we pass to other Maximo
> > > > > applications).
> > > > >
> > > > > Any idea on why I'm getting this error or what I may have
setup wrong?
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> >
>


From: Travis Herron (2012-08-27 15:23)

Adding it to the where clause of the crossover domain should have done the trick. But I too have a crossover where if it's NULL I want it to leave it alone but it doesn't work correctly, and I get an error.
But to continue beating the dead horse. . .if your goal is to get the UserID out to an external system, can you not change the Integration Object so that it includes the USER mbo?
Travis Herron
--- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@...> wrote:
>
>
> Any other input as to why this does not work properly?
>
> --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> >
> > Thanks Travis. Yes, I do need that data in the Person table which is
> why I created the crossover. I need that ID if there is a User
> associated with the Person, if not the ID field in the Person record
> should be able to be entered manually if the User is not found. This
> user ID goes to the WorkOrder, PO and eventually the mxgltxn_iface table
> to transfer to another system. All this works except being able to enter
> the ID for a Person in which the User does not exist.
> >
> > Yes, I understand how I can display related record data on different
> applications and where data is stored vs. displayed from, done that many
> many times without issue. The data IS needed in the Person record as
> Person is used throught Maximo (labor, supervisor in WO, purchase agent
> in PO, etc.) whereas a User is not. Users are for authentication and
> access, whereas Person could be anyone of the itmes I listed already
> (which I'm sure you know).
> >
> >
> > --- In MAXIMO@yahoogroups.com, "Travis Herron" therron@ wrote:
> > >
> > > Let's start with this:
> > >
> > > Do you NEED to have the data available in the PERSON table, or are
> you just looking to have the Person's Maximo userid available to see on
> the Person app screen? If you only need to see it on the Person UI, you
> should go to Application Designer, add a blank textbox control to the
> screen, and set its Attribute property to USER.LOGINID
> > >
> > > If you really do need that data in the PERSON table, then yes you
> need a crossover.
> > >
> > > Trying to handle NULLs in the relationships (in the Database
> Configuration app) has no bearing on a crossover domain. The crossover
> domain is pulling data from one table and putting it in another. A
> relationship just shows how two tables relate to each other; where the
> joins should be. Crossover domains don't use relationships; they use the
> Validation WHERE clause that you give it when creating the crossover
> domain.
> > >
> > > Anyhow, think of how the Users app works. You create a user, put in
> a PersonID there, and POOF! if that person has info in the Person app,
> such as an address, email address(es), phone number(s), etc. it shows up
> on your screen. That's not using a crossover. That's using
> relationships. The fields on the screen there are fields (attributes)
> from the Person table (and related tables like EMAIL and PHONE). The
> data is not actually being moved to the MAXUSER table. So first I ask
> you. . .is that what you need to happen, but in reverse (data about the
> user just showing up on the Person screen)?
> > >
> > > Travis Herron
> > >
> > > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > > >
> > > > Yes, I've tried adding it to the MaxUser and Person relationships
> as well as the crossover domain where clause with no success.
> > > >
> > > > --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> > > > >
> > > > >
> > > > > Did you try to add
> > > > > MaxUser.PersonID is not null
> > > > > in the Clause of the relationship?
> > > > >
> > > > > On 13/08/2012 20:03, b471code3 wrote:
> > > > > >
> > > > > >
> > > > > > I've created a attribute in the Person table called LoginID
> and it is
> > > > > > the same as MaxUser.LoginID field. I've created a crossover
> domain
> > > > > > called MaxUser2Person, that copies the MaxUser.LoginID to
> Person.LoginID
> > > > > > where personid = :personid. The crossover fields are source:
> LOGINID,
> > > > > > destination: LOGINID. I allow nulls and no overwrite is
> checked. The
> > > > > > crossover domain is attached to the new Person.LoginID field.
> The
> > > > > > process works IF there is a valid MaxUser but gives me an
> error
> > > > > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if
> I add a
> > > > > > new person and that MaxUser.PersonID does not exist.
> > > > > >
> > > > > > What I want to do is copy the field if the user exists and if
> it doesn't
> > > > > > just leave it blank/null. We have about 1000 people and about
> 200 users,
> > > > > > people don't have to be users but every one of our people have
> a loginid
> > > > > > (not Maximo loginid but network, that we pass to other Maximo
> > > > > > applications).
> > > > > >
> > > > > > Any idea on why I'm getting this error or what I may have
> setup wrong?
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
>


From: b471code3 (2012-08-28 14:53)

I don't think you're understanding completely. Not all of my Person records have an associated User record BUT the Person record should have the ability to store a userid even though the UserId does not exist in the User table. When we create users we create their UserId's with ID's they are already using.
For instance, User.UserId = ABC, Person.PersonId = 123, Person.UserId = ABC. User.UserId = null, Person.PersonId = 456, Person.UserId = DEF. So in the case of PersonId 456 they don't have an associated User record but the data entry person should still be able to enter DEF as their user ID.
So again, I can't use the User MBO because 1). Not all People have a User record. 2). I need to get the UserId from a Person, because Users cannot be Resources (Supervisors, Laborers, etc.).
--- In MAXIMO@yahoogroups.com, "Travis Herron" <therron@...> wrote:
>
> Adding it to the where clause of the crossover domain should have done the trick. But I too have a crossover where if it's NULL I want it to leave it alone but it doesn't work correctly, and I get an error.
>
> But to continue beating the dead horse. . .if your goal is to get the UserID out to an external system, can you not change the Integration Object so that it includes the USER mbo?
>
> Travis Herron
>
> --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> >
> >
> > Any other input as to why this does not work properly?
> >
> > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > >
> > > Thanks Travis. Yes, I do need that data in the Person table which is
> > why I created the crossover. I need that ID if there is a User
> > associated with the Person, if not the ID field in the Person record
> > should be able to be entered manually if the User is not found. This
> > user ID goes to the WorkOrder, PO and eventually the mxgltxn_iface table
> > to transfer to another system. All this works except being able to enter
> > the ID for a Person in which the User does not exist.
> > >
> > > Yes, I understand how I can display related record data on different
> > applications and where data is stored vs. displayed from, done that many
> > many times without issue. The data IS needed in the Person record as
> > Person is used throught Maximo (labor, supervisor in WO, purchase agent
> > in PO, etc.) whereas a User is not. Users are for authentication and
> > access, whereas Person could be anyone of the itmes I listed already
> > (which I'm sure you know).
> > >
> > >
> > > --- In MAXIMO@yahoogroups.com, "Travis Herron" therron@ wrote:
> > > >
> > > > Let's start with this:
> > > >
> > > > Do you NEED to have the data available in the PERSON table, or are
> > you just looking to have the Person's Maximo userid available to see on
> > the Person app screen? If you only need to see it on the Person UI, you
> > should go to Application Designer, add a blank textbox control to the
> > screen, and set its Attribute property to USER.LOGINID
> > > >
> > > > If you really do need that data in the PERSON table, then yes you
> > need a crossover.
> > > >
> > > > Trying to handle NULLs in the relationships (in the Database
> > Configuration app) has no bearing on a crossover domain. The crossover
> > domain is pulling data from one table and putting it in another. A
> > relationship just shows how two tables relate to each other; where the
> > joins should be. Crossover domains don't use relationships; they use the
> > Validation WHERE clause that you give it when creating the crossover
> > domain.
> > > >
> > > > Anyhow, think of how the Users app works. You create a user, put in
> > a PersonID there, and POOF! if that person has info in the Person app,
> > such as an address, email address(es), phone number(s), etc. it shows up
> > on your screen. That's not using a crossover. That's using
> > relationships. The fields on the screen there are fields (attributes)
> > from the Person table (and related tables like EMAIL and PHONE). The
> > data is not actually being moved to the MAXUSER table. So first I ask
> > you. . .is that what you need to happen, but in reverse (data about the
> > user just showing up on the Person screen)?
> > > >
> > > > Travis Herron
> > > >
> > > > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > > > >
> > > > > Yes, I've tried adding it to the MaxUser and Person relationships
> > as well as the crossover domain where clause with no success.
> > > > >
> > > > > --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> > > > > >
> > > > > >
> > > > > > Did you try to add
> > > > > > MaxUser.PersonID is not null
> > > > > > in the Clause of the relationship?
> > > > > >
> > > > > > On 13/08/2012 20:03, b471code3 wrote:
> > > > > > >
> > > > > > >
> > > > > > > I've created a attribute in the Person table called LoginID
> > and it is
> > > > > > > the same as MaxUser.LoginID field. I've created a crossover
> > domain
> > > > > > > called MaxUser2Person, that copies the MaxUser.LoginID to
> > Person.LoginID
> > > > > > > where personid = :personid. The crossover fields are source:
> > LOGINID,
> > > > > > > destination: LOGINID. I allow nulls and no overwrite is
> > checked. The
> > > > > > > crossover domain is attached to the new Person.LoginID field.
> > The
> > > > > > > process works IF there is a valid MaxUser but gives me an
> > error
> > > > > > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if
> > I add a
> > > > > > > new person and that MaxUser.PersonID does not exist.
> > > > > > >
> > > > > > > What I want to do is copy the field if the user exists and if
> > it doesn't
> > > > > > > just leave it blank/null. We have about 1000 people and about
> > 200 users,
> > > > > > > people don't have to be users but every one of our people have
> > a loginid
> > > > > > > (not Maximo loginid but network, that we pass to other Maximo
> > > > > > > applications).
> > > > > > >
> > > > > > > Any idea on why I'm getting this error or what I may have
> > setup wrong?
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>


From: richard_almendarez (2012-08-29 18:02)


bkehren,
I don't believe you have the crossover domain on the right field.
For example, if you want to cross an extra Location field (LOEX1) from the Location object to the WorkOrder object, you don't put the crossover domain on the WorkOrder.LOEX1 field, you put it on the WorkOrder.Location field.
That same concept should apply here. You wouldn't put the crossover domain on the Person.Loginid field as that's the field you want to crossover.
I think that the crossover domain should go on the Person.Personid field as that's the linking record/attribute in which the Loginid field would crossover; however, I tested that, and it didn't work either. It's quite possible that it didn't work because the MBOs save the Person record before the MaxUser record, but I didn't run a sql trace on it or anything.
Although this conceptually should work, I didn't have any luck in my brief testing.
If you can't get it working, you may want to consider an escalation to accomplish your requirement.
Richard A
--- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@...> wrote:
>
> I don't think you're understanding completely. Not all of my Person records have an associated User record BUT the Person record should have the ability to store a userid even though the UserId does not exist in the User table. When we create users we create their UserId's with ID's they are already using.
>
> For instance, User.UserId = ABC, Person.PersonId = 123, Person.UserId = ABC. User.UserId = null, Person.PersonId = 456, Person.UserId = DEF. So in the case of PersonId 456 they don't have an associated User record but the data entry person should still be able to enter DEF as their user ID.
>
> So again, I can't use the User MBO because 1). Not all People have a User record. 2). I need to get the UserId from a Person, because Users cannot be Resources (Supervisors, Laborers, etc.).
>
> --- In MAXIMO@yahoogroups.com, "Travis Herron" <therron@> wrote:
> >
> > Adding it to the where clause of the crossover domain should have done the trick. But I too have a crossover where if it's NULL I want it to leave it alone but it doesn't work correctly, and I get an error.
> >
> > But to continue beating the dead horse. . .if your goal is to get the UserID out to an external system, can you not change the Integration Object so that it includes the USER mbo?
> >
> > Travis Herron
> >
> > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > >
> > >
> > > Any other input as to why this does not work properly?
> > >
> > > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > > >
> > > > Thanks Travis. Yes, I do need that data in the Person table which is
> > > why I created the crossover. I need that ID if there is a User
> > > associated with the Person, if not the ID field in the Person record
> > > should be able to be entered manually if the User is not found. This
> > > user ID goes to the WorkOrder, PO and eventually the mxgltxn_iface table
> > > to transfer to another system. All this works except being able to enter
> > > the ID for a Person in which the User does not exist.
> > > >
> > > > Yes, I understand how I can display related record data on different
> > > applications and where data is stored vs. displayed from, done that many
> > > many times without issue. The data IS needed in the Person record as
> > > Person is used throught Maximo (labor, supervisor in WO, purchase agent
> > > in PO, etc.) whereas a User is not. Users are for authentication and
> > > access, whereas Person could be anyone of the itmes I listed already
> > > (which I'm sure you know).
> > > >
> > > >
> > > > --- In MAXIMO@yahoogroups.com, "Travis Herron" therron@ wrote:
> > > > >
> > > > > Let's start with this:
> > > > >
> > > > > Do you NEED to have the data available in the PERSON table, or are
> > > you just looking to have the Person's Maximo userid available to see on
> > > the Person app screen? If you only need to see it on the Person UI, you
> > > should go to Application Designer, add a blank textbox control to the
> > > screen, and set its Attribute property to USER.LOGINID
> > > > >
> > > > > If you really do need that data in the PERSON table, then yes you
> > > need a crossover.
> > > > >
> > > > > Trying to handle NULLs in the relationships (in the Database
> > > Configuration app) has no bearing on a crossover domain. The crossover
> > > domain is pulling data from one table and putting it in another. A
> > > relationship just shows how two tables relate to each other; where the
> > > joins should be. Crossover domains don't use relationships; they use the
> > > Validation WHERE clause that you give it when creating the crossover
> > > domain.
> > > > >
> > > > > Anyhow, think of how the Users app works. You create a user, put in
> > > a PersonID there, and POOF! if that person has info in the Person app,
> > > such as an address, email address(es), phone number(s), etc. it shows up
> > > on your screen. That's not using a crossover. That's using
> > > relationships. The fields on the screen there are fields (attributes)
> > > from the Person table (and related tables like EMAIL and PHONE). The
> > > data is not actually being moved to the MAXUSER table. So first I ask
> > > you. . .is that what you need to happen, but in reverse (data about the
> > > user just showing up on the Person screen)?
> > > > >
> > > > > Travis Herron
> > > > >
> > > > > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > > > > >
> > > > > > Yes, I've tried adding it to the MaxUser and Person relationships
> > > as well as the crossover domain where clause with no success.
> > > > > >
> > > > > > --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> > > > > > >
> > > > > > >
> > > > > > > Did you try to add
> > > > > > > MaxUser.PersonID is not null
> > > > > > > in the Clause of the relationship?
> > > > > > >
> > > > > > > On 13/08/2012 20:03, b471code3 wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > I've created a attribute in the Person table called LoginID
> > > and it is
> > > > > > > > the same as MaxUser.LoginID field. I've created a crossover
> > > domain
> > > > > > > > called MaxUser2Person, that copies the MaxUser.LoginID to
> > > Person.LoginID
> > > > > > > > where personid = :personid. The crossover fields are source:
> > > LOGINID,
> > > > > > > > destination: LOGINID. I allow nulls and no overwrite is
> > > checked. The
> > > > > > > > crossover domain is attached to the new Person.LoginID field.
> > > The
> > > > > > > > process works IF there is a valid MaxUser but gives me an
> > > error
> > > > > > > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if
> > > I add a
> > > > > > > > new person and that MaxUser.PersonID does not exist.
> > > > > > > >
> > > > > > > > What I want to do is copy the field if the user exists and if
> > > it doesn't
> > > > > > > > just leave it blank/null. We have about 1000 people and about
> > > 200 users,
> > > > > > > > people don't have to be users but every one of our people have
> > > a loginid
> > > > > > > > (not Maximo loginid but network, that we pass to other Maximo
> > > > > > > > applications).
> > > > > > > >
> > > > > > > > Any idea on why I'm getting this error or what I may have
> > > setup wrong?
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>


From: Travis Herron (2012-08-29 18:49)

I understand what you are saying. I am saying change your Integration Object (that is rooted in the PERSON object) to include the USER mbo as a child. The out-of-the-box MXPERSON Integration Object is based on the PERSON object, but also includes EMAIL and PHONE. I'm saying add USER to EMAIL and PHONE. So if the information is there, the Integration can then use it.
I imagine you would then have to make some changes to the Interface too. . .
Travis Herron
--- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@...> wrote:
>
> I don't think you're understanding completely. Not all of my Person records have an associated User record BUT the Person record should have the ability to store a userid even though the UserId does not exist in the User table. When we create users we create their UserId's with ID's they are already using.
>
> For instance, User.UserId = ABC, Person.PersonId = 123, Person.UserId = ABC. User.UserId = null, Person.PersonId = 456, Person.UserId = DEF. So in the case of PersonId 456 they don't have an associated User record but the data entry person should still be able to enter DEF as their user ID.
>
> So again, I can't use the User MBO because 1). Not all People have a User record. 2). I need to get the UserId from a Person, because Users cannot be Resources (Supervisors, Laborers, etc.).
>
> --- In MAXIMO@yahoogroups.com, "Travis Herron" <therron@> wrote:
> >
> > Adding it to the where clause of the crossover domain should have done the trick. But I too have a crossover where if it's NULL I want it to leave it alone but it doesn't work correctly, and I get an error.
> >
> > But to continue beating the dead horse. . .if your goal is to get the UserID out to an external system, can you not change the Integration Object so that it includes the USER mbo?
> >
> > Travis Herron
> >
> > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > >
> > >
> > > Any other input as to why this does not work properly?
> > >
> > > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > > >
> > > > Thanks Travis. Yes, I do need that data in the Person table which is
> > > why I created the crossover. I need that ID if there is a User
> > > associated with the Person, if not the ID field in the Person record
> > > should be able to be entered manually if the User is not found. This
> > > user ID goes to the WorkOrder, PO and eventually the mxgltxn_iface table
> > > to transfer to another system. All this works except being able to enter
> > > the ID for a Person in which the User does not exist.
> > > >
> > > > Yes, I understand how I can display related record data on different
> > > applications and where data is stored vs. displayed from, done that many
> > > many times without issue. The data IS needed in the Person record as
> > > Person is used throught Maximo (labor, supervisor in WO, purchase agent
> > > in PO, etc.) whereas a User is not. Users are for authentication and
> > > access, whereas Person could be anyone of the itmes I listed already
> > > (which I'm sure you know).
> > > >
> > > >
> > > > --- In MAXIMO@yahoogroups.com, "Travis Herron" therron@ wrote:
> > > > >
> > > > > Let's start with this:
> > > > >
> > > > > Do you NEED to have the data available in the PERSON table, or are
> > > you just looking to have the Person's Maximo userid available to see on
> > > the Person app screen? If you only need to see it on the Person UI, you
> > > should go to Application Designer, add a blank textbox control to the
> > > screen, and set its Attribute property to USER.LOGINID
> > > > >
> > > > > If you really do need that data in the PERSON table, then yes you
> > > need a crossover.
> > > > >
> > > > > Trying to handle NULLs in the relationships (in the Database
> > > Configuration app) has no bearing on a crossover domain. The crossover
> > > domain is pulling data from one table and putting it in another. A
> > > relationship just shows how two tables relate to each other; where the
> > > joins should be. Crossover domains don't use relationships; they use the
> > > Validation WHERE clause that you give it when creating the crossover
> > > domain.
> > > > >
> > > > > Anyhow, think of how the Users app works. You create a user, put in
> > > a PersonID there, and POOF! if that person has info in the Person app,
> > > such as an address, email address(es), phone number(s), etc. it shows up
> > > on your screen. That's not using a crossover. That's using
> > > relationships. The fields on the screen there are fields (attributes)
> > > from the Person table (and related tables like EMAIL and PHONE). The
> > > data is not actually being moved to the MAXUSER table. So first I ask
> > > you. . .is that what you need to happen, but in reverse (data about the
> > > user just showing up on the Person screen)?
> > > > >
> > > > > Travis Herron
> > > > >
> > > > > --- In MAXIMO@yahoogroups.com, "b471code3" <bkehren@> wrote:
> > > > > >
> > > > > > Yes, I've tried adding it to the MaxUser and Person relationships
> > > as well as the crossover domain where clause with no success.
> > > > > >
> > > > > > --- In MAXIMO@yahoogroups.com, Luca Truffarelli <luca@> wrote:
> > > > > > >
> > > > > > >
> > > > > > > Did you try to add
> > > > > > > MaxUser.PersonID is not null
> > > > > > > in the Clause of the relationship?
> > > > > > >
> > > > > > > On 13/08/2012 20:03, b471code3 wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > I've created a attribute in the Person table called LoginID
> > > and it is
> > > > > > > > the same as MaxUser.LoginID field. I've created a crossover
> > > domain
> > > > > > > > called MaxUser2Person, that copies the MaxUser.LoginID to
> > > Person.LoginID
> > > > > > > > where personid = :personid. The crossover fields are source:
> > > LOGINID,
> > > > > > > > destination: LOGINID. I allow nulls and no overwrite is
> > > checked. The
> > > > > > > > crossover domain is attached to the new Person.LoginID field.
> > > The
> > > > > > > > process works IF there is a valid MaxUser but gives me an
> > > error
> > > > > > > > (BMXAA4191E - User Name "<whatever I enter>" is not valid.) if
> > > I add a
> > > > > > > > new person and that MaxUser.PersonID does not exist.
> > > > > > > >
> > > > > > > > What I want to do is copy the field if the user exists and if
> > > it doesn't
> > > > > > > > just leave it blank/null. We have about 1000 people and about
> > > 200 users,
> > > > > > > > people don't have to be users but every one of our people have
> > > a loginid
> > > > > > > > (not Maximo loginid but network, that we pass to other Maximo
> > > > > > > > applications).
> > > > > > > >
> > > > > > > > Any idea on why I'm getting this error or what I may have
> > > setup wrong?
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>