© 2002 BEA Systems, Inc.


com.bea.portal.admin.ejb
Interface DelegatedAdminManager


public interface DelegatedAdminManager
extends javax.ejb.EJBObject

Handles all delegated admin functionality.


Method Summary
 void addGroupAdmin(ProfileIdentity delegateeUser, GroupPortal groupPortal)
          Adds a GroupAdmin for a given GroupPortal
 void addPortalAdmin(ProfileIdentity delegateeUser, PortalIdentifier portalIdentifier, java.util.List groupPortals)
          Adds a PortalAdmin for a given Portal
 boolean canAdministerGroupPortal(ProfileIdentity delegateeUser, GroupPortal groupPortal)
          Returns true if the calling Admin is an (SA), (PA with assoc to Portal), or (GA with assoc to GroupPortal)
 boolean canAdministerPortal(ProfileIdentity delegateeUser, PortalIdentifier portalId)
          Returns true if the calling Admin is an (SA) or (PA with assoc to Portal)
 boolean canDelegateGroupAdmin(ProfileIdentity delegateeUser, GroupPortal groupPortal)
          Returns true if the calling Admin has at least at least 1 delegate capability for the given Portal
 boolean canDelegatePortalAdmin(ProfileIdentity delegateeUser, PortalIdentifier portalId)
          Returns true if the Admin has at least at least 1 delegate capability for the given Portal
 void copyGroupAdminEntitlements(ProfileIdentity delegateeUser, GroupPortal sourceGroupPortal, GroupPortal destinationGroupPortal)
          Copy the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user
 void copyPortalAdminEntitlements(ProfileIdentity delegateeUser, PortalIdentifier sourcePortalId, PortalIdentifier destinationPortalId)
          Copy the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user
 java.util.List getGroupAdminEligibleUsers(GroupPortal groupPortal)
          Retrieve admin eligible usernames for an SA, PA or GA to choose from when creating a GA for a GroupPortal.
 java.util.List getGroupAdmins(GroupPortal groupPortal)
          Get all GroupAdmin usernames for a GroupPortal for an SA, PA or GA to manage.
 java.util.List getPortalAdminEligibleGroupAdmins(PortalIdentifier portalId, java.util.List groupPortals)
          Retrieve admin eligible existing GroupAdmin user names for an SA or PA to choose from when promoting a GA to a PA for a Portal.
 java.util.List getPortalAdminEligibleUsers(PortalIdentifier portalIdentifier, java.util.List groupPortals)
          Retrieve admin eligible user names for an SA or PA to choose from when creating a PA for a Portal.
 java.util.List getPortalAdmins(PortalIdentifier portalId)
          Get all PortalAdmin usernames for a Portal for an SA or PA to manage (Note: Only PA's will be returned.
 boolean isAdmin(ProfileIdentity delegateeUser)
          Returns true if the given user is an admin for ANY resource
 boolean isAdminEligible(java.lang.String userName)
          Returns true if the given user is a member of the group for users who are elibible to be delegated administrators (usually "AdminEligible", but can be overridden with an env-entry.
 boolean isAdminGroup(java.lang.String userGroup)
          Returns true if the given user group is an admin or admin eligible group
 boolean isDelegatedAdmin(java.lang.String userName)
          Returns true if the given user is a member of the group for assigned delegated administrators (usually "DelegatedAdministrator", but can be overridden with an env-entry.
 boolean isGroupAdminAccessAllowed(ProfileIdentity delegateeUser, GroupPortal groupPortal, java.lang.String resourceType, java.lang.String adminTask, java.lang.String capabilityKey)
          Retrieve a capability for a given key (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to retrieve capabilities for a user during a capability edit
 boolean isMemberOf(java.lang.String userGroupName, java.lang.String userName)
          Returns true if the given user is a member of the given group
 boolean isPortalAdminAccessAllowed(ProfileIdentity delegateeUser, PortalIdentifier portalId, java.lang.String resourceType, java.lang.String adminTask, java.lang.String capabilityKey)
          Retrieve a capability for a given key (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to retrieve capabilities for a user during a capability edit
 boolean isPortalSystemAdmin(java.lang.String userName)
          Returns true if the given user is a member of the group for Portal System Administrators (usually "SystemAdministrator", but can be overridden with an env-entry.
 boolean isWritableRealm()
          Checks if the underlying user realm is writable or not
 void removeGroupAdmin(ProfileIdentity delegateeUser, GroupPortal groupPortal)
          Removes a GroupAdmin from a given GroupPortal
 void removeGroupAdminEntitlements(ProfileIdentity delegateeUser, GroupPortal groupPortal)
          Remove the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user
 void removePortalAdmin(ProfileIdentity delegateeUser, PortalIdentifier portalIdentifier)
          Removes a PortalAdmin from a given Portal
 void removePortalAdminEntitlements(ProfileIdentity delegateeUser, PortalIdentifier portalId)
          Remove the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user
 void setGroupAdminAccessAllowed(ProfileIdentity delegateeUser, GroupPortal groupPortal, java.lang.String resourceType, java.lang.String adminTask, java.lang.String capabilityKey, boolean capabilityValue)
          Set a capability for a given task and capability (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to set capabilities for a user during a capability edit
 void setPortalAdminAccessAllowed(ProfileIdentity delegateeUser, PortalIdentifier portalId, java.lang.String resourceType, java.lang.String adminTask, java.lang.String capabilityKey, boolean capabilityValue)
          Set a capability for a given task and capability (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to set capabilities for a user during a capability edit
 
Methods inherited from interface javax.ejb.EJBObject
getEJBHome, getHandle, getPrimaryKey, isIdentical, remove
 

Method Detail

isWritableRealm

public boolean isWritableRealm()
                        throws java.rmi.RemoteException
Checks if the underlying user realm is writable or not

Returns:
true if realm is writable

getPortalAdminEligibleUsers

public java.util.List getPortalAdminEligibleUsers(PortalIdentifier portalIdentifier,
                                                  java.util.List groupPortals)
                                           throws java.rmi.RemoteException
Retrieve admin eligible user names for an SA or PA to choose from when creating a PA for a Portal. Note: This method will NOT return existing GroupAdmins for the Portal. Use the getPortalAdminEligibleGroupAdmins() method for each to obtain that list separately if "promotion" is supported.

Parameters:
portalIdentifier - the PortalIdentifier of the Portal
groupPortals - list of all Group Portal objects for the given Portal
Returns:
list of usernames (String)
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

getPortalAdminEligibleGroupAdmins

public java.util.List getPortalAdminEligibleGroupAdmins(PortalIdentifier portalId,
                                                        java.util.List groupPortals)
                                                 throws java.rmi.RemoteException
Retrieve admin eligible existing GroupAdmin user names for an SA or PA to choose from when promoting a GA to a PA for a Portal.

Parameters:
portalIdentifier - the PortalIdentifier of the Portal
groupPortals - list of all Group Portal objects for the given Portal
Returns:
list of usernames (String)
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

getGroupAdminEligibleUsers

public java.util.List getGroupAdminEligibleUsers(GroupPortal groupPortal)
                                          throws java.rmi.RemoteException
Retrieve admin eligible usernames for an SA, PA or GA to choose from when creating a GA for a GroupPortal.

Parameters:
groupPortal - the GroupPortal
Returns:
list of usernames (String)
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

getPortalAdmins

public java.util.List getPortalAdmins(PortalIdentifier portalId)
                               throws java.rmi.RemoteException
Get all PortalAdmin usernames for a Portal for an SA or PA to manage (Note: Only PA's will be returned. SAs are managed outside of the portal tools as they have full-control.

Parameters:
portalId - the PortalIdentifier
Returns:
list of PortalAdmin Users
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

addPortalAdmin

public void addPortalAdmin(ProfileIdentity delegateeUser,
                           PortalIdentifier portalIdentifier,
                           java.util.List groupPortals)
                    throws RealmNotWritableAddException,
                           java.rmi.RemoteException
Adds a PortalAdmin for a given Portal

Parameters:
delegateeUser - the user to add as an Admin
portalIdentifier - the PortalIdentifier of the Portal to administer
groupPortals - all Group Portals for the Portal - required if GA -> PA promotion is being performed
Throws:
java.rmi.RemoteException - because of EJB contract
RealmNotWritableAddException - thrown if the underlying realm is not writable (ie. LDAP) during add operation
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

removePortalAdmin

public void removePortalAdmin(ProfileIdentity delegateeUser,
                              PortalIdentifier portalIdentifier)
                       throws java.rmi.RemoteException
Removes a PortalAdmin from a given Portal

Parameters:
delegateeUser - the user to remove as a PortalAdmin
portalIdentifier - the PortalIdentifier of the Portal to administer
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

getGroupAdmins

public java.util.List getGroupAdmins(GroupPortal groupPortal)
                              throws java.rmi.RemoteException
Get all GroupAdmin usernames for a GroupPortal for an SA, PA or GA to manage. (Note: Only GA's will be returned. For PAs, use the getPortalAdmins()

Parameters:
groupPortal - the GroupPortal
Returns:
list of GroupAdmin Users
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

addGroupAdmin

public void addGroupAdmin(ProfileIdentity delegateeUser,
                          GroupPortal groupPortal)
                   throws RealmNotWritableAddException,
                          java.rmi.RemoteException
Adds a GroupAdmin for a given GroupPortal

Parameters:
delegateeUser - the user to add as an GroupAdmin
groupPortal - the GroupPortal to administer
Throws:
java.rmi.RemoteException - because of EJB contract
RealmNotWritableAddException - thrown if the underlying realm is not writable (ie. LDAP)
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

removeGroupAdmin

public void removeGroupAdmin(ProfileIdentity delegateeUser,
                             GroupPortal groupPortal)
                      throws java.rmi.RemoteException
Removes a GroupAdmin from a given GroupPortal

Parameters:
delegateeUser - the user to remove as a PortalAdmin
groupPortal - the GroupPortal to administer
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

isPortalAdminAccessAllowed

public boolean isPortalAdminAccessAllowed(ProfileIdentity delegateeUser,
                                          PortalIdentifier portalId,
                                          java.lang.String resourceType,
                                          java.lang.String adminTask,
                                          java.lang.String capabilityKey)
                                   throws java.rmi.RemoteException
Retrieve a capability for a given key (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to retrieve capabilities for a user during a capability edit

Parameters:
delegateeUser - the delegatee admin user to set capabilities
portalId - the PortalIdentifier
resourceType - the type of resource - see either PortalAdminTaskResourceConstants or PortalEntitlementResourceConstants
adminTask - the adminTask
capabilityKey - the key to set a capability
Returns:
capabilityValue the value of the capability
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

isGroupAdminAccessAllowed

public boolean isGroupAdminAccessAllowed(ProfileIdentity delegateeUser,
                                         GroupPortal groupPortal,
                                         java.lang.String resourceType,
                                         java.lang.String adminTask,
                                         java.lang.String capabilityKey)
                                  throws java.rmi.RemoteException
Retrieve a capability for a given key (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to retrieve capabilities for a user during a capability edit

Parameters:
delegateeUser - the delegatee admin user to set capabilities
groupPortal - the GroupPortal
resourceType - the type of resource - see either PortalAdminTaskResourceConstants or PortalEntitlementResourceConstants * @param adminTask the adminTask
capabilityKey - the key to set a capability
Returns:
capabilityValue the value of the capability
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

setPortalAdminAccessAllowed

public void setPortalAdminAccessAllowed(ProfileIdentity delegateeUser,
                                        PortalIdentifier portalId,
                                        java.lang.String resourceType,
                                        java.lang.String adminTask,
                                        java.lang.String capabilityKey,
                                        boolean capabilityValue)
                                 throws java.rmi.RemoteException
Set a capability for a given task and capability (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to set capabilities for a user during a capability edit

Parameters:
delegateeUser - the delegatee admin user to set capabilities
portalId - the PortalIdentifier
resourceType - the type of resource - see either PortalAdminTaskResourceConstants or PortalEntitlementResourceConstants
adminTask - the adminTask
capabilityKey - the key to set a capability
Returns:
capabilityValue the value of the capability
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

setGroupAdminAccessAllowed

public void setGroupAdminAccessAllowed(ProfileIdentity delegateeUser,
                                       GroupPortal groupPortal,
                                       java.lang.String resourceType,
                                       java.lang.String adminTask,
                                       java.lang.String capabilityKey,
                                       boolean capabilityValue)
                                throws java.rmi.RemoteException
Set a capability for a given task and capability (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used by the UI to set capabilities for a user during a capability edit

Parameters:
delegateeUser - the delegatee admin user to set capabilities
groupPortal - the GroupPortal
resourceType - the type of resource - see either PortalAdminTaskResourceConstants or PortalEntitlementResourceConstants
adminTask - the adminTask
capabilityKey - the key to set a capability
capabilityValue - the value of the capability
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

copyPortalAdminEntitlements

public void copyPortalAdminEntitlements(ProfileIdentity delegateeUser,
                                        PortalIdentifier sourcePortalId,
                                        PortalIdentifier destinationPortalId)
                                 throws java.rmi.RemoteException
Copy the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user

Parameters:
delegateeUser - the delegatee admin user to set capabilities
sourcePortalId - the source PortalIdentifier
destinationPortalId - the destination PortalIdentifier
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

copyGroupAdminEntitlements

public void copyGroupAdminEntitlements(ProfileIdentity delegateeUser,
                                       GroupPortal sourceGroupPortal,
                                       GroupPortal destinationGroupPortal)
                                throws java.rmi.RemoteException
Copy the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user

Parameters:
delegateeUser - the delegatee admin user to set capabilities
sourceGroupPortal - the source GroupPortal
destinationGroupPortal - the destination GroupPortal
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

removePortalAdminEntitlements

public void removePortalAdminEntitlements(ProfileIdentity delegateeUser,
                                          PortalIdentifier portalId)
                                   throws java.rmi.RemoteException
Remove the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user

Parameters:
delegateeUser - the delegatee admin user to set capabilities
portalId - the PortalIdentifier
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

removeGroupAdminEntitlements

public void removeGroupAdminEntitlements(ProfileIdentity delegateeUser,
                                         GroupPortal groupPortal)
                                  throws java.rmi.RemoteException
Remove the complete set of capabilities for a given user (Note: Constants can be found in com.bea.portal.entitlement.resource.PortalAdminTaskResourceConstants) This method is used to copy capabilities for a user

Parameters:
delegateeUser - the delegatee admin user to set capabilities
groupPortal - the GroupPortal
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

canDelegatePortalAdmin

public boolean canDelegatePortalAdmin(ProfileIdentity delegateeUser,
                                      PortalIdentifier portalId)
                               throws java.rmi.RemoteException
Returns true if the Admin has at least at least 1 delegate capability for the given Portal

Parameters:
delegateeUser - the delegatee admin user to check
portalId - the Portal
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

canDelegateGroupAdmin

public boolean canDelegateGroupAdmin(ProfileIdentity delegateeUser,
                                     GroupPortal groupPortal)
                              throws java.rmi.RemoteException
Returns true if the calling Admin has at least at least 1 delegate capability for the given Portal

Parameters:
delegateeUser - the delegatee admin user to check
groupPortal - the GroupPortal
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

canAdministerPortal

public boolean canAdministerPortal(ProfileIdentity delegateeUser,
                                   PortalIdentifier portalId)
                            throws java.rmi.RemoteException
Returns true if the calling Admin is an (SA) or (PA with assoc to Portal)

Parameters:
delegateeUser - the delegatee admin user to check
portalId - the Portal
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

canAdministerGroupPortal

public boolean canAdministerGroupPortal(ProfileIdentity delegateeUser,
                                        GroupPortal groupPortal)
                                 throws java.rmi.RemoteException
Returns true if the calling Admin is an (SA), (PA with assoc to Portal), or (GA with assoc to GroupPortal)

Parameters:
delegateeUser - the delegatee admin user to check
groupPortal - the GroupPortal
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
DelegatedAdminSecurityException - if the caller does not have sufficient rights to perform this action
IllegalArgumentException - if the arguments are not valid

isAdminGroup

public boolean isAdminGroup(java.lang.String userGroup)
                     throws java.rmi.RemoteException
Returns true if the given user group is an admin or admin eligible group

Parameters:
userGroup - the User Group
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
IllegalArgumentException - if the arguments are not valid

isAdmin

public boolean isAdmin(ProfileIdentity delegateeUser)
                throws java.rmi.RemoteException
Returns true if the given user is an admin for ANY resource

Parameters:
user - the admin user
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
IllegalArgumentException - if the arguments are not valid

isMemberOf

public boolean isMemberOf(java.lang.String userGroupName,
                          java.lang.String userName)
                   throws java.rmi.RemoteException
Returns true if the given user is a member of the given group

Parameters:
userGroupName - the user group name
userName - the user name
Throws:
java.rmi.RemoteException - because of EJB contract
DelegatedAdminSystemException - if there is a system exception
IllegalArgumentException - if the arguments are not valid

isDelegatedAdmin

public boolean isDelegatedAdmin(java.lang.String userName)
                         throws java.rmi.RemoteException
Returns true if the given user is a member of the group for assigned delegated administrators (usually "DelegatedAdministrator", but can be overridden with an env-entry.

Parameters:
userName - the user name
Throws:
java.rmi.RemoteException - because of EJB contract

isPortalSystemAdmin

public boolean isPortalSystemAdmin(java.lang.String userName)
                            throws java.rmi.RemoteException
Returns true if the given user is a member of the group for Portal System Administrators (usually "SystemAdministrator", but can be overridden with an env-entry.

Parameters:
userName - the user name
Throws:
java.rmi.RemoteException - because of EJB contract

isAdminEligible

public boolean isAdminEligible(java.lang.String userName)
                        throws java.rmi.RemoteException
Returns true if the given user is a member of the group for users who are elibible to be delegated administrators (usually "AdminEligible", but can be overridden with an env-entry.

Parameters:
userName - the user name
Throws:
java.rmi.RemoteException - because of EJB contract

© 2002 BEA Systems, Inc.

Copyright © 2002 BEA Systems, Inc. All Rights Reserved