How to update People Group KFF Segments in Assignment Form

Hi Gurus,
Please help me on how to update people group KFF individual segments on assignment form.
Please provide sample code/reference.
Thanks,
Raghava.

Hi Vignesh,
I have tried the api using below code. But im getting the error like below:
ORA-20001: FLEX-VALUE DOES NOT EXIST: N, VALUE, Teachers, N, SEGMENT, PENSION_SCHEME_ESCH, N, VALUESET, GEN_PENS_SCHEME_LOOKUP
ORA-06512: at "APPS.HR_ASSIGNMENT_API", line 16616
ORA-06512: at line 22
Code:
DECLARE
l_people_group_id number;
l_special_ceiling_step_id number;
l_ovn number;
l_soft_coding_keyflex_id number;
l_group_name varchar2(9000);
l_effective_start_date date;
l_effective_end_date date;
l_org_now_no_manager_warning boolean;
l_other_manager_warning boolean;
l_spp_delete_warning boolean;
l_entries_changed_warning varchar2(9000);
l_tax_district_changed_warning boolean;
l_concatenated_segments varchar2(9000);
l_gsp_post_process_warning varchar2(9000);
BEGIN
l_ovn:=11;
--l_people_group_id:=966;
l_soft_coding_keyflex_id:=null;
l_special_ceiling_step_id:=null;
hr_assignment_api.update_emp_asg_criteria
(p_effective_date =>TO_DATE('08-SEP-2012')
,p_datetrack_update_mode =>'CORRECTION'
,p_validate =>FALSE
,p_assignment_id =>37325
--,p_segment1 =>'Local Government Conditions (Green book)'
--,p_segment2 =>'R'
,p_segment3 =>'None'
,p_object_version_number =>l_ovn
,p_special_ceiling_step_id =>l_special_ceiling_step_id
,p_people_group_id =>l_people_group_id
,p_soft_coding_keyflex_id =>l_soft_coding_keyflex_id
,p_group_name =>l_group_name
,p_effective_start_date =>l_effective_start_date
,p_effective_end_date =>l_effective_end_date
,p_org_now_no_manager_warning =>l_org_now_no_manager_warning
,p_other_manager_warning =>l_other_manager_warning
,p_spp_delete_warning =>l_spp_delete_warning
,p_entries_changed_warning =>l_entries_changed_warning
,p_tax_district_changed_warning =>l_tax_district_changed_warning
,p_concatenated_segments =>l_concatenated_segments
,p_gsp_post_process_warning =>l_gsp_post_process_warning
END;
Commit;
Please help me on how to update the individual segment.
Thanks
Raghava

Similar Messages

  • How to set Default Value in People Group KFF

    Hi
    We are storing some information in People Group KFF which depends on Employee Category so if employee category is Permanent Headcount then the value in People group KFF will be different and if it is Temporary then the value will be different.
    Now we want to default the People Group KFF value automatically based on Employee Category for a New Hire employee. And also we should be able to change the People Group KFF value for some new hire as there are few exceptions.
    I tried WHEN-NEW-RECORD-INSTANCE and tried to set the value through INITIAL_VALUE but it is not working.
    Kindly please advise if you have idea on how to implement this requirement.
    Thanks
    Gaurav

    Hello Gaurav,
    If I understood correctly, Your requirement is to update People Group segments based on employee category.
    Basically you need to update people group values based on employee category before insert into assignment table.
    You can acheive this using Dynamic Trigger on Assignment Table.
    you need to change the new.people_group_id along with other segment values in this trigger logic.
    Following articles will help you steps on how to create dyanamic triggers.
    http://oracle.anilpassi.com/dynamic-triggers-in-hrms-payroll-demo.html
    http://apps2fusion.com/apps/oracle-hrms/oracle-hr/204-triggers-in-oracle-hrms-and-payroll
    Regards,
    Saurabh

  • Updating people group segments

    Hi,
    I'm very new to PL/SQL and want to run a sql script to update people group segments based on grade step and ceiling points
    I've searched around on metalink and have the beginnings of something but maybe I need to use an extra cursor at the beginning or something? Could anyone help?
    Thanks
    declare l_people_group_id NUMBER;
    select paf.assignment_id, paf.object_version_number, paf.special_ceiling_step_id
    into p_assignment_id, l_out_object_version_number, l_special_ceiling_step_id
    from per_assignments_f paf,
    pay_people_groups ppg
    where p_person_id = paf.person_id
    and paf.people_group_id = ppg.people_group_id
    and p_effective_date between paf.effective_start_date and paf.effective_end_date;
    cursor get_current_ceiling_assignment is
    select asg.*, ast.per_system_status
    from per_assignment_status_types ast,
    per_assignments_f asg,
    per_grade_spines_f pgsf,
    per_spinal_point_steps_f pspsf
    where assignment_id = p_assignment_id
    and ast.assignment_status_type_id = asg.assignment_status_type_id
    and pgsf.grade_spine_id = pspsf.grade_spine_id
    and pspsf.step_id = pgsf.ceiling_step_id
    and asg.grade_id = pgsf.grade_id
    -- and p_effective_date between effective_start_date and effective_end_date;
    and asg.effective_start_date = (select max(effective_start_date)
    from per_all_assignments_f
    where assignment_id = asg.assignment_id);
    begin
    for v1 in get_current_ceiling_assignment loop
    l_out_object_version_number := v1.object_version_number;
    l_special_ceiling_step_id := v1.special_ceiling_step_id;
    l_datetrack_update_mode := 'UPDATE';
    hr_assignment_api.update_emp_asg_criteria
    p_validate => false,
    p_effective_date => p_effective_date,
    p_datetrack_update_mode => l_datetrack_update_mode,
    p_assignment_id => p_assignment_id,
    p_object_version_number => l_out_object_version_number,
    p_special_ceiling_step_id => l_special_ceiling_step_id,
    p_segment5 => NULL,
    p_segment6 => NULL,
    p_group_name => l_group_name,
    p_effective_start_date => l_out_effective_start_date,
    p_effective_end_date => l_out_effective_end_date,
    p_people_group_id => l_people_group_id,
    p_org_now_no_manager_warning => l_org_now_no_manager_warning,
    p_other_manager_warning => l_other_manager_warning,
    p_spp_delete_warning => l_spp_delete_warning,
    p_entries_changed_warning => l_entries_changed_warning,
    p_tax_district_changed_warning => l_tax_district_changed_warning
    end loop;
    end;

    I'm trying to update two people segments when the grade step reaches the ceiling point.
    I'm not expecting anything to be returned in the query but want the api to update the relevant assignment records.
    I'm using 11.5.10 apps, 10g database. I just think I'm missing something fundamental with the constrcution of my script here

  • How to use people/group picker to send emails

    Hello all,
    Forgive me on my lack of understanding this subject. I've read multiple articles and it is driving me crazy! All I need to do is have a user select someone from "people/group picker", click a button and the person selected gets an email. That is
    it!
    I need a simple set of instructions. Help!

    Hello,
    You need several things:
    a view that contains the form and text for the email body (Email view)
    a data connection to "Submit to Email"
    a data connection to GetUserProfileByName
    Re 1: create a view with the field controls and the text that you want to email. Alternatively, if the email is all static text, you can enter it in the email body in step 2.
    Re 2: create a data connection to submit to email: on the Data ribbon click the
    To Email button and follow the prompts. You can go back later to modify the data connection, change the fields and configure them to receive data from your form. Set the "To" field to receive its value from a field in the form (emailHelper)
    Re 3: When the button is clicked, you need to get the user's email address from the UserProfile service. The steps are explained in this page http://sharepointisland.wordpress.com/tag/getuserprofilebyname/ and
    consist of setting up a data connection to the User Profile Service "_vti_bin/UserProfileService.asmx?WSDL"
    on the site, feeding the user AccountID into the query field, querying the service. After that the data connection contains the user's data and you can filter it with the "WorkEmail" parameter. 
    This is the value that you need to put into the "To" field of the "Submit to Email" data connection. You may want to store the field in the emailHelper field and then point the "To" field to emailHelper.
    The button to send the email is on the Users view and should contain these actions
    set a fields value - User Account ID to the GetUserProfileByName query field
    query a data connection - the GetUserProfileByName connection
    Set a field's value - the emailHelper field to the GetUserProfileByName field filtered by Name = WorkEmail
    Switch to the Email View
    Submit to Email data connection
    Switch back to Users view
    cheers, teylyn

  • How to update firmware for HP Compaq DC small form factor

    I have HP Compaq dc7700 small form factor, Windows xp pro. It was bought on ebay and works fine except for one thing. The Bios was upgraded  but the firmware is not upgrading. the Bios was upgraded to V3.05 but the firmware remains 2.04
    I downloaded al the updates and firmware and followed instructions but I seem to have problems updating the firmware. I would like to know how to do this step by step because the instructions I read seems to be missing some steps. my question is how to update the firmware. I did read the instructions but could not get it updated. either updating via windows or in dos, I can't seem to make it successful. There are two error messages,
    1. ME BIOS Extension module has halted. Update BIOS or Management Engine firmware if problem persists.
    2. Amt mamagement engine is disabled.

    HP normally uses the term BIOS to refer to motherboard/CPU "firmware" updates and Firmware to refer to other device "firmware" updates... Below is a list of the two classes of firmware;
    BIOS 
    Business Desktops BIOS Utilities 4.02 Rev. A
    Microcode Update for HP 786E BIOS Family Computers with Intel Processors 1.06 Rev. A
    HP Compaq Business Desktop ME Firmware Update and Utilities 2.2.30.1046 Rev. A
    HP Compaq dc7700p Business Desktop System BIOS for Intel vPro Technology (786E1 BIOS) 3.05 Rev. A
    HP Compaq Business Desktop System BIOS (786E1 BIOS) 1.15 Rev. A
    Firmware
    Western Digital 7200-rpm Hard Drive Firmware Update 3.03E03 Rev. A
    Intel PRO/1000 Firmware 1.10 Rev. A
    HP Optical Drive (TSST H353B DVD-ROM) Firmware Update BC08 Rev. A
    HP Optical Drive (TSST H653N DVD-RW) Firmware Update HB02 Rev. A
    Seagate Hard Drive Firmware Upgrade for 500-GB Barracuda 7200.11 HP13 Rev. A
    ATI X1600XT Graphics Card Video BIOS Update S3A67124.104 Rev. A
    Samsung Hard Drive Firmware Upgrade - SATA Drives 42_51 Rev. A
    Please identify the exact device you wish to upgrade/update the firmware to.
    Frank
    Frank
    {------------ Please click the "White Kudos" Thumbs Up to say THANKS for helping.
    Please click the "Accept As Solution" on my post, if my assistance has solved your issue. ------------V
    This is a user supported forum. I am a volunteer and I don't work for HP.
    HP 15t-j100 (on loan from HP)
    HP 13 Split x2 (on loan from HP)
    HP Slate8 Pro (on loan from HP)
    HP a1632x - Windows 7, 4GB RAM, AMD Radeon HD 6450
    HP p6130y - Windows 7, 8GB RAM, AMD Radeon HD 6450
    HP p6320y - Windows 7, 8GB RAM, NVIDIA GT 240
    HP p7-1026 - Windows 7, 6GB RAM, AMD Radeon HD 6450
    HP p6787c - Windows 7, 8GB RAM, NVIDIA GT 240

  • Default KFF segment value using Forms Personalization

    Hi All,
    Is there any way to default the KFF segment value based on other field value thru forms personalization?
    Thanks,

    Gareth,
    Sorry for taking so long to respond. I was on vacation last week. Your suggestion was exactly what I wanted. The '=' made all the difference. I tried it with the INITIAL_VALUE also and both work. Thanks a lot!
    Thu

  • How to update Material group code in contracts ?

    Hi,
    We implemented SAP in my company a year ago. AS you can imagine we need to do some cleaning now we know how it works...
    We have change the Material Group code for over 1100 items.
    Thing is, the material group code in the contracts do not update automatically.
    I see two ways to handel this :
    1- re-enter contract
    2- delete lines that needs to be changed and recreate them...
    I know for sure that both solutions would work but they are time consuming so I was wondering if one of you had another idea ( a quick or at least a massive one would be appreciated...)
    Thanks for your help.

    Hi,
    You can use transaction MEMASSCONTRACT for mass changes to contracts
    Caution:- Please use this transaction if you know, else first practice it in sandbox and then use in production environment
    Thanks
    Diwakar

  • Validation on People Group Key Flexfield

    Hi all,
    I have a People Group Key flexfield (KFF) defined with 7 Segments, and I want to make 1 of the Segments (SEGMENT7) Read-Only for a specific set of Responsibilities.
    I have tried creating a Form Personalization for this, but I don't believe you can achieve this using forms personalizations (because you can only reference the entire flexfield as a whole, and not individual segments).
    I have also tried using the Custom Library, and referencing FND_KEY_FLEX.UPDATE_DEFINITION to apply this validation, but I have not been able to get this to work either.
    Finally, I have tried creating a security group and attaching it to the Value Set / KFF Segment but this doesn't quite give me what I need, as this only lets you Include/Exclude specific values and not make the segment Read-Only.
    Does anyone know how to apply this validation to a People Group KFF Segment?
    Thanks in advance,
    Jon

    If nothing else works , you can write a before-update d/b trigger on the underlying table that compares :old.segment7 with :new.segment7 and raises failure if the values differ for the user's logged in responsibility.

  • How to retrive KFF segment values in each row of VO?

    Hi,
    I need to retrve Special Information Type values in HR screen.
    There is a table based on the VO and on of the column is a flex (KFF) linked ot the same VO.
    How can i retrieve the KFF segments values from each row of the table (or VO row).
    The VO contains the ID_FLEX_NUM only.
    Specific issue details:
    It is an HR screen
    page : PersonSIT Page
    Region : SpecialInformationType(Table)
    VO : SpecialInformationDetailsVO
    flex id="HrSitKeyFlex" flexName="PEA" flexFieldAppShortName="PER" user:akAttributeCode="HR_PERSON_SIT_FLEX"
    Any information is of great help
    Thanks,
    Kamath..

    Vo Query is
    SELECT /*+ ORDERED */pac.analysis_criteria_id,
    ppa.analysis_criteria_id old_analysis_criteria_id,
    ppa.person_analysis_id,
    ppa.object_version_number,
    ppa.id_flex_num,
    ppa.business_group_id,
    ppa.person_id,
    ppa.date_from,
    ppa.date_to,
    'DB_ROW' status,
    ppa.date_from old_date_from,
    ppa.date_to old_date_to,
    ppa.attribute1,
    ppa.attribute2,
    ppa.attribute3,
    ppa.attribute4,
    ppa.attribute5,
    ppa.attribute6,
    ppa.attribute7,
    ppa.attribute8,
    ppa.attribute9,
    ppa.attribute10,
    ppa.attribute11,
    ppa.attribute12,
    ppa.attribute13,
    ppa.attribute14,
    ppa.attribute15,
    ppa.attribute16,
    ppa.attribute17,
    ppa.attribute18,
    ppa.attribute19,
    ppa.attribute20,
    ppa.attribute_category
    FROM per_person_analyses ppa,
    per_analysis_criteria pac
    WHERE ppa.business_group_id = :1
    AND ppa.person_id = :2
    AND ppa.id_flex_num = :3
    AND pac.analysis_criteria_id = ppa.analysis_criteria_id
    The values from log file for a single row is as below
    i = 0
    row.getAnalysisCriteriaId()=68198
    row.getAttribute1()=null
    row.getAttribute10()=null
    row.getAttribute11()=null
    row.getAttribute12()=null
    row.getAttribute13()=null
    row.getAttribute14()=null
    row.getAttribute15()=null
    row.getAttribute16()=null
    row.getAttribute17()=null
    row.getAttribute18()=null
    row.getAttribute19()=null
    row.getAttribute20()=null
    row.getAttribute2()=null
    row.getAttribute3()=null
    row.getAttribute4()=null
    row.getAttribute5()=null
    row.getAttribute6()=null
    row.getAttribute7()=null
    row.getAttribute8()=null
    row.getAttribute9()=null
    row.getAttributeCategory()=null
    row.getBusinessGroupId()=83
    row.getDateFrom()=2009-10-01 03:32:38.0
    row.getDateTo()=null
    row.getIdFlexNum()=50454
    row.getPersonAnalysisId()=null
    row.getObjectVersionNumber()=null
    row.getOldAnalysisCriteriaId()=null
    row.getOldDateTo()=null
    row.getOldDateTo1()=null
    row.getPersonId()=46788
    row.getSelectFlag()=Y
    row.getStatus()=NEW_ROW
    Here, row.getIdFlexNum()=50454 is the id_flex_num- KFF structure code which has 4 segments.
    I need to get the value for the VaueSet of Segment1
    The segment values are displayed in the OAF page but i did not get how did std oracle code fetch it
    Thanks,
    kamath

  • How to set default group in EXS24 patch?

    Hi,
    This question is about the EXS24 sampler in MainStage 3.   I'm in no way an EXS24 expert, so I'm hoping this is an easy one - I can't find it in the manual anywhere though.  I'm working with some EXS24 patches that have been supplied to me for a live project, reproducing the recorded version using those patches.  They are set up with keyswitches to select sample groups to allow the use of different articulations.  The question I have is how to set the default group - so that every time the patch loads (for example) it selects the legato articulation group, instead of defaulting to staccato as it does at present.  I've thought about scripting MainStage to send the keyswitch on load of the patch but that seems like a lot of effort to fix something that surely must be an easy fix I'm missing.  From what I can tell, the last group defined is the one that loads automatically - but I can't find any way of changing the order of the groups - I can sort the view, but that makes no difference to the behaviour.

    Hello Gaurav,
    If I understood correctly, Your requirement is to update People Group segments based on employee category.
    Basically you need to update people group values based on employee category before insert into assignment table.
    You can acheive this using Dynamic Trigger on Assignment Table.
    you need to change the new.people_group_id along with other segment values in this trigger logic.
    Following articles will help you steps on how to create dyanamic triggers.
    http://oracle.anilpassi.com/dynamic-triggers-in-hrms-payroll-demo.html
    http://apps2fusion.com/apps/oracle-hrms/oracle-hr/204-triggers-in-oracle-hrms-and-payroll
    Regards,
    Saurabh

  • KFF segment in FF

    HI,
    I am using below codes in a FF.
    ALIAS GROUP_KF_NATIONALITY_GROUP AS Emp_Country (Nationality_Group is the segment name in people group kff)
    DEFAULT FOR Emp_Country is 'IND'
    But, while verifying the FF, I am getting an error msg that "GROUP_KF_NATIONALITY_GROUP" is not global or DB items. How could I resolve this?
    Pl. note, the above codes perfectly working in 11.5.9 instance. But, not working in R12 instance.
    Thanks in advance.

    Hi,
    Segment of a group is not available as database item.
    ASSIGNMENT_GROUP is available as database item.
    You will get whole concatenated value in this column.
    You dervie your value using instr and substr function.
    I hope that answers your question.
    Regards,
    Ashish Shah

  • How to define replication groups?

              Hai All!
              Can anybody suggest steps in detail to define a groups in a cluster of
              servers for the purpose of inline memmory replication through console or by any
              other way? I am unable to find neccessary info regarding this in docs.
              Note i want help regarding how to define a group and not the assigning primary
              and secondary groups to the servers in a cluster.
              TIA
              Rgds
              Manohar
              

    Hi,
              For most situations, there is no need to define a replication group. Simply define
              the machines and servers in your cluster and denote which servers are located on
              which machines. WebLogic will do its best to make sure that the primary and
              secondary are not located on the same machine. Replication groups allow you to
              have more control over the selection of secondary server selection if you had some
              extraordinary situation where you needed something other than making sure the
              primary and secondary copies were on servers located on different machines.
              Hope this helps,
              Robert
              Manu Kar wrote:
              > Hai All!
              >
              > Can anybody suggest steps in detail to define a groups in a cluster of
              > servers for the purpose of inline memmory replication through console or by any
              > other way? I am unable to find neccessary info regarding this in docs.
              >
              > Note i want help regarding how to define a group and not the assigning primary
              > and secondary groups to the servers in a cluster.
              >
              > TIA
              > Rgds
              > Manohar
              

  • How to populate data in PAY_PEOPLE_GROUPS table (People Group Flexfiled)

    Hello
    We are migrating the data from one oracle instance to another oracle instance which are in same version of Oralce Applications 11.5.10.2. As a part of migration can anybody let me know how to populate data in "People Group Key Flexfiled" (PAY_PEOPLE_GROUPS table), ideally I will create or update employee records from the source instance to destination instance, so while creating or updating the employee records in can pass people_group_id while calling to the assignment api but my question here is before passing group id to the api i should have the data populated in PAY_PEOPLE_GROUPS TABLE so that i can fetch the group id as per the combination and pass it in to the api.. please suggest...

    Thanks for your information! by any chance do you have any sample code which will create/update assignments with People Group Flexfield; when i check "hr_assignment_api.update_emp_asg_criteria" it only has parameter to pass people group id and not having segments parameters to pass individual segments.
    Also let me know the links if you have any for all HR API guide which will help me to develope the interfaces...
    My requirement is we have two instances in which in one instance we are treating as source for HR which will be used to master for all HR related activities and we are planning to develope an interface which will bring master instance in sync with dummy instance.

  • How to create master group in Portal - Segment Builder?

    Hi All,
    May i know how to create master group by using existing target group in segment builder PCUI in portal?
    I manage to do it in sapgui:
    tc: crmd_mktseg_mgr -> create new master group -> assign existing target group -> execute button -> master group is created.
    I tried in portal: click on segment builder tab -> search existing profile set -> open existing profile set -> click on target group tab -> mark one of target groups -> click on Master group button -> save changes -> go back to sapgui crmd_mktseg_mgr -> search for all the master groups -> i dun see result that i did in portal.
    Can guide me on this?
    Appreciated your guide. Thanks.
    Regards,
    wyee

    Hi All,
    May i know how to create master group by using existing target group in segment builder PCUI in portal?
    I manage to do it in sapgui:
    tc: crmd_mktseg_mgr -> create new master group -> assign existing target group -> execute button -> master group is created.
    I tried in portal: click on segment builder tab -> search existing profile set -> open existing profile set -> click on target group tab -> mark one of target groups -> click on Master group button -> save changes -> go back to sapgui crmd_mktseg_mgr -> search for all the master groups -> i dun see result that i did in portal.
    Can guide me on this?
    Appreciated your guide. Thanks.
    Regards,
    wyee

  • How do I read & update email group subscription status for a specific contact via api?

    Looking at Eloqua's api documentation, I can find out how to update contacts, and even the global subscription flag, however we want to build a page on our custom website whcih allows users to opt in and out of specific email groups (as can be done manually from the contact page / preferences tab)
    I cant find the appropriate api documentation for this - I found a page for contacts:
    REST API - Contact Fields
    and a page for email group:
    REST API - Email Groups
    any idea how can I find and udpate the object linking the two ?!?

    Via REST API, the bare bones call is:
    PUT /API/REST/2.0/data/contact/{contactid}/email/group/{groupid}/subscription
      "type": "ContactEmailSubscription",
      "contactId": "3174",
      "emailGroup": {
      "type": "EmailGroup",
      "id": "15",
      "depth": "minimal",
      "name": "Test Email Group"
      "isSubscribed": "false"
    Where isSubscribed can be toggled to true. This is the same call made by the UI when you open the contact record, move to the preferences tab and right click to subscribe or unsubscribe on an email group:
    The list of email groups and their ids can be obtained via GET /assets/email/groups. I recommend adding ?depth=minimal to avoid retrieving unnecessary configuration information.
    Best regards,
    Bojan

Maybe you are looking for

  • Package header failed verification during sfr package download

    Hello, I am trying to download the package asasfr-5500x-boot-5.3.1-152.pkg. But everytime it comes with an error "Package header failed verification - object of type 'NoneType' has no len() Please verify that the package is not corrupted.Upgrade abor

  • [HELP] MSI 6870 dual monitor problem

    mobo: asrock 970 extreme 4. procesor: phenom x4 965. PSU: Seasonic 500W SS-500ES 80 Plus Bronze. ram: Corsair CML4GX3M2A1600C9B (2x2Gb) DDR3 . monitors: benq GL950A. VGA: MSI R6870 HAWK Twin-Frozr-II-OC 1gb. OS: WINDOWS 7 64bit. i want to ask, how to

  • Strange Ideal Trend Line in burndown chart

    I am getting a very strange idealtrend line in my burn down chart. The project has 400 hours of work in it, but the ideal trend starts at 100 hours. THis places 300 hours above the ideal trend, which looks very weird. I would like to understand how t

  • Imac to MacBook Pro

    I purchased Numbers on my iPad and it transfered to my IMac and iPhone.  Now I have a MacBook Pro but I can't get it to transfer to the MacBook.  Do I have to purchase it again for my MacBook?

  • HT5634 i have upgraded to windows 8 but found out it will not work? How do I go back to windows 7?

    i have upgraded to windows 8 but found out it will not work? How do I go back to windows 7?