Best practise to retrieve user specified UI Locale in ADF BC Model

Hello,
Situation:
In my application the UI locale is based on a Managed Bean property by using the locale attribute of the f:view tag. e.g. <f:view locale=#{SessionInfo.currentLocale}>.
The user has the ability to change the UI locale by means of a simple popup which contains a <af:commandLink> with a <af:setActionListener from="#{locale}" to="#{Session.currentLocale}"/> for every supported locale.
Questions:
<ul>
<li>Which is the best way to make the current UI locale available on the Model?</li>
<li>Are there other (better) solutions then the once I propose?</li>
</ul>
Possible solutions:
<ol>
<li>Use the BindingContext in the SessionInfo Managed Bean to retrieve the RootApplicationModule and store the locale in the Session UserData Map. This requires to overwrite the activateState and passivateState methods to prevent problems when the AM is released to the pool.</li>
<li>Use the ADFContext object to store the UI locale on the HTTP Session object by using ADFContext.getCurrent().getSessionScope(). The ADFContext object is shared between the UI and the Model.</li>
<li>Use the ADFContext object and its locale property e.g. ADFContext.getCurrent().setLocale(locale)</li>
</ol>
Remarks:
Solution 1: should be chosen when you are working in a clustered environment.
Solution 2: can be difficult to work with in clustered environments since its hard to share the HttpSession object over different clusters.
Solution 3: I'm not sure if this works! The JavaDoc isn't very helpful.
Environment:
Oracle JDeveloper Studio Edition Version 11.1.1.2.0 Build JDEVADF_MAIN_GENERIC_090826.1233.5475 on MicroSoft Windows 7
Oracle RDBMS 11gR1 on Microsoft Windows Server 2003.
Regards,
Steven.

Frank,
Thanks for the hint.
I have read the thread and gave the example by Steve Munch a go (Updated URL to the example on [Steve Munch Dive into ADF Blog|http://blogs.oracle.com/smuenchadf/examples/#95] ).
Since I'm using ADF 11g and the example given is for ADF 10g I had to make some modifications to the example in order to make it work.
Let me explain in short the difference for the people who are interested:
<u>Extending the ADF/Faces Lifecycle</u>
Since the ADF 10g ADFPhaseListener class has become deprecated in ADF 11g we have to use a different approach.
Instead of using the CustomADFPhaseListener and CustomFacesPageLifecycle classes for extending the ADF/Faces Lifecycle we have to use the a custom oracle.adf.controller.v2.lifecycle.PagePhaseListener.
In this class we overwrite the beforePhase method and use a slightly modified version of Steve's code.
public void afterPhase(PagePhaseEvent pagePhaseEvent) {
if (ADFLifecycle.PREPARE_RENDER_ID == pagePhaseEvent.getPhaseId()) {
    App app = (App)ELHelper.get("#{App}");
    Locale preferredLocale = app.getPreferredLocale();
    UIViewRoot uiViewRoot = FacesContext.getCurrentInstance().getViewRoot();
    boolean changedLocale = false;
    if (preferredLocale == null) {
      app.setPreferredLocale(uiViewRoot.getLocale());
    } else {
      if (preferredLocale != uiViewRoot.getLocale()) {
        uiViewRoot.setLocale(preferredLocale);
        changedLocale = true;
    if (changedLocale) {
      for (ControlBinding cb : (List<ControlBinding>)pagePhaseEvent.getLifecycleContext().getBindingContainer().getControlBindings()) {
        if (cb instanceof JUCtrlListBinding) {
          JUCtrlListBinding lb = (JUCtrlListBinding)cb;
          // If the list has a translatable null value
          if (lb.hasNullValue()) {
            // Force the list of values for the list binding to be recalculated
            // so that the null value text will be in the new locale.
            ((JUCtrlListBinding)cb).setValueList(null);
}Next we need to register this CustomPagePhaseListener. This should be done in the adf-settings.xml configuration file.
This file should be placed at *\ViewController\adfmsrc\META-INF* where ViewController is the name of your ADF Rich Faces project.
Example of adf-settings.xml file content.
<?xml version="1.0" encoding="UTF-8" ?>
<adf-settings xmlns="http://xmlns.oracle.com/adf/settings> ">
   <adfc-controller-config xmlns="http://xmlns.oracle.com/adf/controller/config">
      <lifecycle>
         <phase-listener>
            <listener-id>CustomPagePhaseListener</listener-id>
            <class>CustomPagePhaseListener</class>
         </phase-listener>
      </lifecycle>
   </adfc-controller-config>
</adf-settings>Good information about extending the Faces Lifecycle is found in the Fusion Middleware Fusion Developer's Guide chapter [19.4 Customizing the ADF Page Lifecycle|http://download.oracle.com/docs/cd/E15051_01/web.1111/b31974/adf_lifecycle.htm#CIAJGBID]
Hope this information is useful.
Regards,
Steven.
Edited by: StevenJanssens on 12-apr-2010 3:39
Used correct forum layout tags for code examples

Similar Messages

  • Best practise for SAP users who leave the company

    Hi
    Could anyone reccommend a best practise document or give advice on how to deal with SAP user ID's when employee's/contractors/consultants leave? I am the basis admin just starting an SAP implementation and we have no dedicated authorisation team at the moment, so I have been asked to look into this :
    Currently we set the validity date in SU01 to the termination date.
    We chack there are no background jobs scheduled under that user id, if there are, we change the job owner to a valid user (we try to run all background jobs under an admin account).
    We do not delete the user as from an audit point of view I believe it restricts information you can report on and there are implications on change documents etc, so best to lock it with validity dates.
    Can anyone advise further?
    We are running SAP ECC 5.0 on Windows 2003 64 Bit/MS SQL 2000.
    Thanks for any help.

    Hi,
    Different people will tell you different versions of what they believe is best practice, but in my opinion you are already doing reasonably well.
    What I prefer is
    1. Lock ID & set validity date.
    2. Assign user to user group LEAVER or EXPIRED or something similar (helps with reporting) out of SUIM/S_BCE* reports.
    3. Delete role assignment (should you need it, the role assignment will be in the change history docs anyway).
    4. Check background jobs & act accordingly.
    For ease of getting info I prefer not to delete the ID though plenty of people do.

  • Best Practise of maintaining user stories in MTM

    Hi
    I have below questions.
    1.In MTM the best way to maintain the user stories can be which way
    User story1- Under this sprint1,sprint 2...
    User story2 - Under this sprint 2,sprint 3-...
    or
    Sprint 1- Under this User story1
    Sprint 2- Under this User story 1,User story 2
    Which is the best practice in the MTM. Any sample will be good

    Hi Santhu,
    Thank you for posting in MSDN forum.
    MTM is used to define and manage your test plans for manual and automated system tests. These test plans are stored in TFS, and are closely integrated with its build and application
    lifecycle management tools.
    As you said that about the best way to maintain the user stories, as far as I know that the user story is maintained
    by web access. So if you want to maintain the user story, I suggest you can maintain it by the TFS web access.
    Reference:http://msdn.microsoft.com/en-us/library/vstudio/ee523998(v=vs.120).aspx
    In addition, as you said that you want to the User story1- Under this sprint1,sprint 2.... or Sprint 1- Under this User story1. I know that the user story1 can not under this sprint1,sprint 2.... as the same time,
    it just can under one sprint.
    About this issue, since I am not the TFS experts, so I suggest you can ask this issue directly to the
    TFS forum,
    it will be better support.
    Thanks for your understanding.
    Best Regards,
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • When granting a user or a role access to a group of pages, it is best practise to grant that access to what type of file or component?

    My question is same while granting user or role in the application, what is the best practise? How to decide the level of applying role to pagedef's, xml files, or some other file that i have missed out.

    As for my concern I would go for page definition files.

  • Group policy - restricted groups. How to specify a -local- user as member of the administrators group in group policy

    Hi
    With restricted groups I can specify the end user -domain- accounts that are members of the local administrators group on domain PCs. But - I need a particular LOCAL account on all the machines to keep its membership of the local administrators group for testing reasons. At the moment restricted groups is striping this local account of its admin access.
    Is it possible to specify a -local- computer account as admin on all the PCs via group policy or it can only be done with domain accounts?
    thanks

    You are asking for local accounts to be managed via "Restricted Groups".
    Yes, it is possible.
    Rajesh showed you one way with domain groups. In his version "Administrators" group will only contain those accounts
    that are specified in the GPO, no manually added accounts. This is not always desired.
    If you wish to have an account (group or user, local or domain) to be added to "Administrators" group while keeping all the other
    members, proceed like this:
    - create the local account on the client(s)
    - in the GPO select "Add Group" in "Restricted Groups".
    - type in the name of the local account, e.g. "TestID"
    - in the appearing dialogue choose "This group is a member of" => Add
    - type in "Administrators"
    Link the GPO and that's all.
    The original MS description for "Restricted Groups".is here:
    http://support.microsoft.com/kb/279301/en-us
    Another nice one here:
    http://www.frickelsoft.net/blog/?p=13
    Besides that, a great solution to manage local accouts is GP Preference Extension "Local Users and Groups".
    You can simply create a "Local Users and Groups" Item (computer or user based) and specify the needed options.
    http://technet.microsoft.com/en-us/library/cc731972.aspx
    Of course you need some prerequisites (at least one Vista or Winows 2008 for management and the GPP CSE on each target machine).
    If you are new to GPP, these links will help you to get into it:
    http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=42E30E3F-6F01-4610-9D6E-F6E0FB7A0790&displaylang=en
    http://support.microsoft.com/kb/943729/en-us
    http://technet.microsoft.com/en-us/library/cc732027.aspx
    http://technet.microsoft.com/en-us/library/cc731892(WS.10).aspx
    Patrick

  • BEST PRACTISE on users deletions HR/SU01

    Hi
    we use CUA/SSO.
    The records are fed from HR records and sent to Active Directory (AD) 
    AD brings backs the records and creates/changes users in SU01
    A function module populates the CVR (timesheet) parameter dependent on whether you are an employee or a contractor 
    Occasionally, our HR department request records to be deleted from the SAP Support team - for example if the employee or contractor hasn't in fact joined the company.
    Until some time ago, the deletion was causing problems because:
    a) the record does not get deleted in AD and there is  no way to send the deletion across after
    b) when AD tries to reprocess that specific record, LDAP connector will not find it as HR record so what happens in SU01 for some reasons, the VALID from field gets wiped out and the CVR parameter for Timesheet also...
    We have changed the process for the deletion however, I would like to ask if you know what is the best practise for this?? HR want to delete the record so it can be re-utilised
    I cannot delete those records from UMR unless I am 100% sure they have never used the system (will have to check that)
    I hope I have provided enough info on what the issue is..
    Thank you
    Nadia

    Best practice is not to delete.
    > HR want to delete the record so it can be re-utilised
    So many people with the same name? Perhaps a suffix of 2 numbers when the ID naming convention produces a clash. Besides, do your AD admins not want unique names in the AD as well?
    E.g. (just an imperfect example)
    MUSTERMA = Alfred MUSTERMan
    MUSTERMM = Manfred MUSTERMan
    MUSTER01 = Mechtilde MUSTERMuller
    > I cannot delete those records from UMR unless I am 100% sure they have never used the system (will have to check that)
    Surest way is to determine that they have never logged on before. But that does not exclude that records might exist for them, which may eventually do a "user existence check" to be read. One such example is the Security Audit Log, e.g. there may have been failed login attempts.
    Good luck,
    Julius

  • There was a problem starting c:\users\tom\appData\local\Apps\Apple Computer\xvgtv.dll The specified module could not be found

    I get error on Windows startup. I have iCloud installed as well as other apple software.
    error:
    there was a problem starting c:\users\tom\appData\local\Apps\Apple Computer\xvgtv.dll The specified module could not be found.

    I get error on Windows startup. I have iCloud installed as well as other apple software.
    error:
    there was a problem starting c:\users\tom\appData\local\Apps\Apple Computer\xvgtv.dll The specified module could not be found.

  • Best Practises for Email Addresses?

    Hi Guys,
    Are there any best practise guides / documents / etc. for configuring user's E-mail addresses? We have a large turnaround of users and obviously sometimes they have the same name as previous/current employees (we
    do not delete any old accounts / mailboxes.) My question is whether or not it is OK to use numbers in an email address (i.e. [email protected])?
    Thanks
    Stephen

    Hi,
    It's OK to use numbers in an email address.
    The format of email addresses is local-part@domain where the local-part may be up to 64 characters long and the domain name may have a maximum of 253 characters.
    The local-part of the email address may use any of these ASCII characters RFC 5322
    Uppercase and lowercase English letters (a–z, A–Z) (ASCII: 65-90, 97-122)
    Digits 0 to 9 (ASCII: 48-57)
    Characters !#$%&'*+-/=?^_`{|}~ (ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)
    Character . (dot, period, full stop) (ASCII: 46) provided that it is not the first or last character, and provided also that it does not appear two or more times consecutively (e.g. John..[email protected] is not allowed.).
    Special characters are allowed with restrictions. They are:
           Space and "(),:;<>@[\] (ASCII: 32, 34, 40, 41, 44, 58, 59, 60, 62, 64, 91-93)
           The restrictions for special characters are that they must only be used when contained between quotation marks, and that 3 of them (The space, backslash \ and quotation mark " (ASCII: 32, 92, 34)) must also
    be preceded by a backslash \ (e.g. "\ \\\"").
    For more information, please refer to this similar thread.
    https://social.technet.microsoft.com/Forums/exchange/en-US/69f393aa-d555-4f8f-bb16-c636a129fc25/what-are-valid-and-invalid-email-address-characters
    Best Regards.

  • Request for howto - error processing best practise

    Hi JDev Team. Something I would like to see in a future HOWTO would be error handling in a BC4J/JSP application. What is best practise? How do we make sure that when a database error occurs, we can trap the error and provide a friendly error message, or failing that, at least ensure the standard error is usable by a maintenance programmer. For eg. the following error occurs if a referential constraint restricts the delete:
    javax.servlet.jsp.JspException: JBO-26041: Failed to post data to database during "Delete": SQL Statement " DELETE FROM TECHTRANSFER.TTSITES Sites WHERE SITEID=:1".
    in fact the same error message is displayed for almost any database error - the programmer can't fix the problem when he has no idea what it is!! (same with update and insert)
    I wasn't going to request this until I had read all of the help available on error processing but the way this project is going I won't get time. If you think that it is adequately covered in the help, then fine, just let me know where.
    Thanks,
    Simon

    You can enclose your bc4j/jsp code with a try / catch expression. That way if a failure occurs, you can trap it, display a friendy error, and do whatever you want with the exception.
    What I have been doing for develpment purposes, is send via email a modified errorpage.jsp. Here is what gets emailed to me (*'s in potentially sensitive data) and displayed to the screen (I'm eventually going to replace all the displayed garbage with something friendly):
    An error occured in application PDC User Administration
    User Session Properties:
    Sesion ID: *********
    App ID: *********
    User Name: *********
    User ID: *********
    Priv Role: *********
    Password: *********
    Org No: *********
    First Name: skunitzer
    Last Name: ANALYST
    App Title : PDC User Administration
    Current Url: insertNewUser.jsp
    Specific error is javax.servlet.jsp.JspException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[1423 ].
    Parameters:
    LastName
    Kunitzer
    EmailAddress
    [email protected]
    FirstName
    SteveLiveTest
    OrgNo
    PhoneWorkNo
    I have no phone #
    ExpireDate
    2001-04-26
    ExpireDateString
    jRQiIsFGANIbrGlihGTl[epofZmSNgEkGqbHN@iErHNPRi
    UserID
    UserPrivs
    Exception:
    javax.servlet.jsp.JspException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[1423 ].
    Message:
    JBO-25013: Too many objects match the primary key oracle.jbo.Key[1423 ].
    Localized Message:
    JBO-25013: Too many objects match the primary key oracle.jbo.Key[1423 ].
    Stack Trace:
    javax.servlet.jsp.JspException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[1423 ].
    at java.lang.Throwable.fillInStackTrace(Native Method)
    at java.lang.Throwable.fillInStackTrace(Compiled Code)
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    ...Stack Trace goes on but I won't bother with it anymore...
    While not always as specific as I would like, I have not had too much trouble hunting down the errors.
    null

  • Exception Propagation - Best Practises

    Hello,
    I was thinking what is the best practise for exception propogation.
    The way I know and have been doing is to specify an error page in my web.xml and in that I get a request paramater from the sesion ( which I populate in the catch blocks across the various classes) and display it to the user and ask him to contact the admin. Ofcourse I log them using log4j.
    I was wondering if there are other ways people do this (other than just displaying a "Sorry, Application Error" page and what do you think should be the best practise of exception handling and more importantly exception propagation.
    Thanks in advance for your time
    rgds,

    Sarvananda wrote:
    ...what do you think should be the best practise of exception handling and more importantly exception propagation.The very best practice is to always handle the exception, that is to say: never use empty "catch blocks".
    As already stated there are many correct ways to handle exceptions depending largely on the result you desire according to the exception. If you want feedback for debugging: I've made the errors descriptive... class/method and exception/error included in the message to the end user. This almost never works, since they never read it and if they report it, they just say: "I got this error thingy and it said to call you..." I got smarter the second time around and put the errors in logs, so when they actually called, then I could have them look up the error for me, or even better, just send me the log so I could see any other problems they didn't bother to report.
    It sounds like you are doing web development, one thing I have done in the past is to just pop up an e-mail ready to go with all the info in it. All the end user had to do is hit send.

  • Best practises for replication

    Hi,
    I want to know what is best practise for duration of replicaation of database between two Cisco ACS.
    Regards,
    Atif.

    Hi Atif,
    The replication time interval should always be higher.
    Reason: Everytime you replicate the data it requires ACS services to restart so doing this frequently may affect your production enviroment.
    However, if you want to replicate internal user's password then there is an option to replicate password changes right awayvwithout a full replication.  You can enable this option under System Configuration -> Local Password Management.  With this enabled you could potentially set the replications to a larger interval.
    It also depend how often you do changes in your ACS. If its normal then I would say set it to every sunday 12:00 PM.
    This is how replication happens:
    The primary ACS stops its authentication and creates a copy of the ACSinternal database components that it is configured to replicate. During this
    step, if AAA clients are configured properly, those that usually use the primary ACS fail over to another ACS. The primary ACS resumes its authentication service.
    After the preceding events on the primary ACS, the database replication process continues on the secondary ACS. The secondary ACS stops its authentication service and replaces its database components with the database components that it received from the primary ACS. During this step, if AAA clients are configured properly, those that usually use the secondary ACS fail over to another ACS. The secondary ACS resumes its authentication service.
    HTH
    Regards,
    JK
    Plz rate helpful posts-

  • Best Practises with ACS Replication & external databases

    I am looking for a best practise with the following scenario:
    2 ACS Servers in 2 separate locations, each providing mutual backup to each other - i.e. all devices/users in Site X point to local ACS Server X 1st and remote ACS Server Y 2nd. In Site Y the devices/users point to the local ACS Server Y 1st and remote ACS Server X 2nd. This works fine; currently Server X replicates the Database to Server Y.
    In the future we will be implementing a remote LDAP database and will forward unknown users to this database for authentication. As I understand it if an unknown user exists on the LDAP database then the ACS Server will create a local account (depending the mapping policy etc) and point the password at the remote LDAP server. If we replicate from Server X to Server Y, but Server Y has created an account for an unknown user will this get deleted on replication? Is there a best practise to handle this scenario?
    Andy

    I could not find a best practices document as such but a lot of ground is covered in the document 'CiscoSecure Database Replication' at http://www.cisco.com/univercd/cc/td/doc/product/access/acs_soft/csacs4nt/acs33/user/sad.htm#wp755988.

  • OBIEE 11g Active Directory Presentation Service Error retrieving user

    Hi Team,
    It was a great help from all of you on our OBIEE learnings.
    I recently configured Microsoft AD on Weblogic rather than RPD. But felt like I am in a desert of helplessness due to the complicated and lengthy documents and settings :(
    Still when I configured everything and logged in to presentation services using AD Credentials, observed following error!
    Error retrieving user/group data from Oracle BI Server's User Population API.
    Error Details
    Error Codes: GDU6UYHS:OPR4ONWY:U9IM8TAC:OI2DL65P:SDKE4UTF
    Odbc driver returned an error (SQLExecDirectW).
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 13049] User 'gp06108' with 'oracle.bi.publisher.scheduleReport;AtAGlance;oracle.bi.publisher.accessReportOutput;_all_;oracle.bi.publisher.accessExcelReportAnalyzer;_all_;oracle.epm.financialreporting.accessReporting;Explore;oracle.bi.publisher.accessOnlineReportAnalyzer;EPM_Essbase_Filter;oracle.bi.publisher.runReportOnline;oracle.as.scheduler.security.MetadataPermission' permission can not query user population.Please have your System Administrator look at the log for more details on this error. (HY000)
    Please have your System Administrator look at the log for more details on this error.
    Expression: privileges['Admin: Catalog']['Change Permissions']
    Total blockout! Anyone faced this issue earlier

    You need a user to be present in your Active Directory Base DN that will be used as the BISystemUser. You will either have to create this user in AD or use an existing AD user and then specify its credentials in Enterprise Manager (expand Weblogic Domain > bifoundation_domain (right click) > Security > Credentials). You will need to set system.user credential under oracle.bi.system map. Make sure your AD user's password never expires or you will run into problems in a few weeks time!
    Paul

  • Moving Mail Users from a Local Directory to Open Directory

    Hi,
    We have been running a standalone mail server for a few years. We have recently upgraded to 10.5 for all of our servers. We have also been running an Open Directory server for the last year or so. Now I am trying to move my email users from the Local Directory on the Mail server to the LDAP server. Obviously we do not want to change account names, so I find I need to delete the local user and then enable the user through the LDAP. This works fine, but I need to bring the original IMAP files/folders forward.
    My question is what is the best practice? I thought backing up the Mail folder in each user's Library and reimporting it would work, but it won't take the IMAP mbox (I can see all the .emlx files in the backup of the user's Mail folder).
    So again, I had a user called user1 in my mail server Local directory say server1. I also have an Open Directory server2 with the same username on it. I have bound server1 to server2. I can see the server2 (OD) accounts on the server1 (mail). I then need to delete user1 from Local server1 directory in order to enable mail to user1 from the OD. This does work, but again, I need bring the mail files/folders to the new OD account on server1.
    thanks,
    mike

    Tony,
    Let me check of the migration manual, thank you!
    I really thought this was going to easier than this. The current accounts are IMAP, and therefore when I "hook up" the new OD account, which doesn't really need anything done on the client side because it is the same username and password and server as the current Local account. When it syncs, the old emails on the IMAP account in the user's Mail program clear since the new OD account is empty on the server.
    I just really thought duplicating the Mail folder in the client's home Library would allow me to import the emails back in. I have tried highlighting the mailboxes (Inbox, and personal folders), archiving them, and then reimporting seemed to work, but I need to beat it up before I start working on live accounts. One account I did try lets me read the emails from the user, but when I try dragging them to the IMAP folders from the import folder, I get a NULL character problem on IMAP append error. NOT to chase that, but it was something else that tripped me up.
    You do bring up a good point, I think the accounts were originally setup as POP and IMAP. I'll chase some ideas about that.
    Let me play around, you've been great considering my awful explanation of this different situation.
    thanks again,
    mike

  • Advice or best practise information about 1 or 2 clients in SAP R/3 DEV

    I'm searching for advice or best practise information about clients in a SAP R/3 development system.
    Reason for this is that we are up to refresh our SAP R/3 development system and up to now we have two clients on it:
    -     One customizing/development client without master data, transaction data et cetera
    -     One local test client with master data, transaction data and so on
    One of our developers suggested to only have one client on development, where we could customize, program and test. So that client would be with master data, transaction data et cetera.
    What would be your advice or what would be best practise for the development system: 1 client (with data) or 2 clients (one clean customizing and one with data). And what are the most important reasons to do it so.
    Maybe there is already some good (SAP) information about this specific subject, but up to now I havenu2019t found it yet.

    Maybe I've asked my question too broad. I'll try to narrow it down.
    Up to now we always had two clients on our SAP R/3 development system:
    - Client 200 - Customizing/development only. No other data in this client
    - Client 400 - Local test client with master data and transaction data. New customizing is copied from client 200 to test
    The reason for having those two clients are:
    - It feels someway good to have a customizing-only client
    - We've always done this before
    A developer suggested to only have one client in our SAP R/3 development system for the following reason:
    - You'll never need to copy the customizing (tr.SCC1) first to be able to test it
    - You can work in one client and don't need to login in the other client to test it (for example: ABAP reports)
    - For customizing of easy setting (for example producthiërarchie, as we don't test it everytime in client 400) it is possible to forget copying it into client 400 (test client). With one client, you can not forget it
    The reasons of this developer seems very valid and up to now we haven't found a convincing/compelling reason to make a good choice for one or two clients.
    Please, try to convince us with good reasons to choose for one or two clients.

Maybe you are looking for