Pages

Thursday, April 26, 2012

Installing Windows 8 (32-bit) Under VMware Fusion

The first thing that you'll probably notice if you've (like me) been tinkering around with pre-release Microsoft Operating Systems for a while is the appearance of a new "logo" on this version of the software which seems interesting if nothing else.

First off I've configured the VM with 2Gb memory, 4 processors, and a 10gb Hard Drive (it's not like I'm going to be doing any serious amount of work on it). I'm using VMware Fusion 4.1.2 (683185) which I'm pretty certain is the latest version.

The base machine is a Mac BookPro running version Lion 10.7.3 with a 2.2GHz Intel i7 with 8GB of RAM. More than adequate for the task!

The first step was to download the ISO image from Microsoft's MSDN website. I'm going to use the 32-bit version (as the 64-bit version doesn't seem to work in Fusion - see here). I'm not using the public images, I'm using the ones from the MSDN website. Are they the same? No idea. The name of the file is;

en_windows_8_consumer_preview_with_apps_x86_dvd_811827.iso

If that helps, I'm going to connect the DVD drive in VMware Fusion to the image (rather than burning a CD, I imagine this is what everyone does ... but just in case).

When you first boot up you are presented with the following screen;
Windows 8 Release Candidate - Windows Setup Screen
Click "Next";
Windows 8 release Candidate - Windows Setup/ Install Now
Click "Install Now";
Windows 8 Consumer Preview - Product Key
Enter your product licensing key (available on MSDN) and click "Next";
Windows 8 Consumer Preview - License Terms
Click the checkbox to accept the terms (you're read it right?) and then click "Next";
Windows 8 Consumer Preview - Installation Type
Assuming that you are (like me) installing the software into a blank Virtual Machine click "Custom" (the bottom option);
Windows 8 Consumer Preview - Where do you want to install Windows?
Click "Next";
Windows 8 Consumer Preview - Installing Windows
There is nothing to do on this screen, just wait for the install the install to complete (shouldn't take that long). The system will then reboot and you'll see various messages at the bottom of the screen like "Preparing", "Getting devices ready", and then finally "restarting your PC".

After the machine has restarted and then you'll be presented with the following screen;
Windows 8 Consumer Preview - Personlize
First of all it's nice to see American English hard-coded into the application. I just can't get enough of that. But then it is only a "consumer preview"! My first reaction when being asked by Windows to "pick a colour I like" is to be filled with absolute dread about what effect this will have on the colouring of the interface. My mind is filled with garish windows styles which, because I said I "liked" the colour here, would be with me forever ... But still I just picked the colour on the left (Teal?), entered my PC name, and clicked "Next";
Windows 8 Consumer Preview - Settings
Because this is only a test and, fundamentally, I have no problems with Microsoft hoovering up as much information as they need during the public preview so long as the final product doesn't do any such hoovering without my consent I'm going to "Use express settings" (and then regret it later at my leisure);
Windows 8 Consumer Preview - Sign in to your PC
I'm going to try a gmail address that I know isn't already linked to a Microsoft account (which I guess will be the typical setup). Enter the email address you wish to use and click "Next";
Windows 8 Consumer Preview - Set up a Microsoft Account
This dialog will only appear if you're setting up a new account. If you have already got a Microsoft Account associated with your email account then you'll see something like;
Windows 8 Consumer Preview - Enter your Microsoft Account Password
After this dialog a couple of dialogs flash by while the account is created and the system is "Preparing Windows".

Then you're presented with your new "Start" screen;
Windows 8 Consumer Preview - Start Screen
 And you're done.

NOTE: I now installed VMware Tools (the Windows 7 version) and it all worked perfectly including with Unity desktop. The whole process of doing the install took around 30 minutes which would have been a lot quicker if I'd not had to grab all these screen shots!

Windows 8 x64 Consumer Preview vs VMware Fusion? (DVD Driver Error)

UPDATE: This problem is specific to the 64-bit version of the installation, if you want to play-around with Windows 8 you can use the 32-bit version and you're fine. See here.

Just a quick post to show off how it seems to be impossible to install Microsoft's Windows 8 Consumer Preview into a virtual machine (I'm using VMware Fusion on my Mac).

First off I've configured the VM with 2Gb memory, 4 processors, and a 10gb Hard Drive (it's not like I'm going to be doing any serious amount of work on it). I'm using VMware Fusion 4.1.2 (683185) which I'm pretty certain is the latest version.

The base machine is a Mac BookPro running version Lion 10.7.3 with a 2.2GHz Intel i7 with 8GB of RAM. More than adequate for the task!

The first step was to download the ISO image from Microsoft's MSDN website. I'm going to use the 64-bit version. I'm not using the public images, I'm using the ones from the MSDN website. Are they the same? No idea. The name of the file is;

en_windows_8_consumer_preview_with_apps_x64_dvd_811821.iso

If that helps, I'm going to connect the DVD drive in VMware Fusion to the image (rather than burning a CD, I imagine this is what everyone does ... but just in case).

On booting after a few seconds delay I'm presented with the first screen;
Windows 8 Consumer Preview - First Dialog
The top menu, Language to Install, only includes US English (starting as they might wish to go on I guess ... ;-), but the second drop down allows me to specify UK English format for Times and Currencies. Clicking "Next" then takes me to this screen;
Windows 8 Consumer Preview - Install Now
Just one button "Install now". I really think the only purpose of this screen is to show you how simple the process is now. Given that the "Install Now" button is only a little larger than the "Next" button the previous screen why not just combine them? There seems to be enough space for the "Repair your computer" link button as well ... why two screens? Anyway, clicking "Install now";
Windows 8 Consumer Preview - Drive Install
And this is where everything starts to get a little bit Windows 95. The message being displayed is titled "Load Driver" and reads;

"A DVD driver your PC needs is missing. If you have a CD, DVD, or USB flash drive with the driver on it, pelase insert it now.


NOTE: If the installation media for Windows is in the DVD drive, you can safely remove it for this step".

Now help buttons, no explanation of why if I can get this far and suddenly I'm having a driver problem with the DVD drive which has the Windows Media on it. No "checking online for drivers" either, which is a bit of a surprise, but at least I should be happy that it's not asking for the floppy disk.

Unfortunately, as a long-time VMware Workstation user I find the lack of some controls in VMware Fusion a little frustrating, for example would using a SCSI DVD work better than the IDE one? With Fusion there doesn't' seem to be a way to find out ...

NOTE: Ironically Windows 8 Server seems to work and install perfectly without any issues, which is just odder and odder as you'd assume the install process was the same between the two systems.







Wednesday, April 25, 2012

Noetix: Release 11 to Release 12 Migration (Replacing Obsolete Views)

While migration to R12 with Noetix is very easy and relatively painless in some areas the significant changes in Inventory between the two versions make it practically impossible for Noetix views to handle the migration "invisibly" (as they tend to do in other areas like Account Payable).

This is especially true if your organisation, like mine, is taking this opportunity to do a bit of restructuring the system so that, for example, rather than using stock being in a particular warehouse to mean that it's a retained sample achieving the same thing using statuses and getting rid of the warehouse.

Here is a list of R11 and R12 Noetix View Templates with "suggested" replacements. It's not a complete list, but it is the list we have been working of for all our reports;

View Label >>>> Recommended Replacement
GMP_Forecast_Details >>>> INV_Forecasts
GMI_Unallocated_Inventory >>>> INV_Unallocated_Inventory view
GMI_Onhand_Inv_By_Lot  >>>> INV_Item_Onhand_By_Lot*
GMI_Onhand_Inv_By_Location  >>>> INV_Onhand_Quantities*
GMI_Month_End_Inventory  >>>> INV_Period_Close_Details*
GMI_Item_Master  >>>> INV_Items and INV_Item_Inventory_Attributes
GMI_Inv_Transactions  >>>> INV_Transactions or INV_Transaction_Details
GMF_Update_Subledger  >>>> GMF_SLA_Cost_Subledger
GMF_Cost_Warehouse_Assoc  >>>> GMF_Cost_Organization_Assc
GMF_Order_Details_Base  >>>> GMF_SLA_Cost_Subledger

*- The migration from R11 Process Manufacturing Inventory to R12 Common Inventory for us has been less than smooth and has not been helped by a few, dare I say it, "obvious" issues that Noetix should have addressed prior to us attempting the upgrade.

The most obvious issue was that in R12 there was no view that would tell us the lot number, the location, and the onhand quantity. The best we could do is two out of three. I just cannot imagine any organisation out there not wanting to see all three on the same report. This led to us having to make significant customisations in order for the migration path to actually be a migration path.

For example looking at the view template INV_Item_Onhand_By_Lot we have added the following customisation columns (with some additional information where appropriate);

Days_Since_First_Transaction
ITEM  (Table Alias= ITEM, Column expression=ITEM) << Flexfield
Item_Type  (Table Alias= ITEM, Column expression=ITEM_TYPE)
Item_Type_Code  (Table Alias= ITEM, Column expression=ITEM_TYPE)
LOCT  (Table Alias= LOCT, Column expression=LOCT) << Flexfield
Material_Status  (Table Alias= MMST, Column expression=DESCRIPTION)
Material_Status_Code  (Table Alias= MMST, Column expression=STATUS_CODE)
Organization_Code  (Table Alias= MPARM, Column expression=ORGANIZATION_CODE)











Here is our list of customisation to the GMI_Onhand_Inv_By_Lot view;
Batch_Id 
Company_Code  (Table Alias= XMAP, Column expression=COMPANY_CODE)
Company_Name  (Table Alias= XMAP, Column expression=COMPANY_NAME)
Days_Since_First_Transaction
Inventory_Class  (Table Alias= ITEM, Column expression=INV_CLASS)
Item_Cost_Class  (Table Alias= ITEM, Column expression=ITEMCOST_CLASS)
Item_Id  (Table Alias= ITEM, Column expression=Item_Id)
Lots_MFD_Flag  (Table Alias= LOTS, Column expression=DECODE(LOTS.DELETE_MARK,0,'N',1,'Y'))
Qc_Hold_Reason_Code  (Table Alias= LOINV, Column expression=QCHOLD_RES_CODE)





I've highlighted the location flexfield which if you look at the Noetix columns for the original view seems to directly map to the INVENTORY_LOCATION_CODE. There seems to be no mapping for this column down the migration path we were recommended to take.

I'm currently going through the process of sorting out our customisations (something that I'm sure will greatly relieve Noetix Support!) and I'll be publishing as much as I possibly can of the work we've done (including the difference between Lot Status and Material_Status which I'm sure will intrigue and worry people).

Tuesday, April 17, 2012

Noetix: Problems with INV_Reservations Template Missing Records

As we've just (at the beginning of the year) moved to R12 we've only just started exploiting the Reservations functionality and, as is often the case, when we started using the new functionality we wanted to report on it.

Noetix provides a view (descended from the INV_Reservations) template that seemed to meet most of our needs and we produced a few reports based on it. Yesterday one of our users reported an issue whereby only certain reservations were being included in the total reserved;

Item Reservations Window (Release 12)
 As you can see we have five Reservation amounts (1, 1, 2, 2, .25), now the total being reported by the Noetix view was 3.25 (actual total is 6.25).

After a bit of investigation it became clear that what the view was adding up the distinct values (1 + 2 + .25 = 3.25) and I'm sure you'll spot that the most likely reason behind this is the use of a UNION rather than a UNION ALL in the SQL.

Looking at the SQL behind the view it shows that both the INV_Reservations and the INV_Reservations_Base views have UNIONS and in order to fix the issue you need to replace them with UNION ALL's. This issue has been raised with Noetix and is bug 29598.

The script to fix it is;

UPDATE n_view_query_templates
   SET union_minus_intersection = 'UNION ALL',
       last_update_date = TO_DATE('17-APR-2012'),
       last_updated_by = 'B29598'
 WHERE view_label like 'INV_Reservations_Base'
   AND union_minus_intersection = 'UNION'
;

UPDATE n_view_query_templates
   SET union_minus_intersection = 'UNION ALL',
       last_update_date = TO_DATE('17-APR-2012'),
       last_updated_by = 'B29598'
 WHERE view_label like 'INV_Reservations'
   AND union_minus_intersection = 'UNION'
;

You'll need to call this from XU2.

Friday, March 30, 2012

How To Spot Subsidence (and It's Potential Causes)

Bit of a departure this blog post but it's quite rate to be able to spot some textbook subsidence for a building and have the most likely cause visible in the same picture.

As you can see in the image to the left the tree (bush?) is growing right next to the brick wall, judging by the tilt it's quite easy to imaging the roots of the plant going under the foundations of the building.

If you zoom in to the corner of the building you'll see that the brick wall next to the bush has been undermined and has dropped by a few millimetres - this causes the practically-vertical crack down the side of the building about half-a-brick in.

As the bush grows it will cause more and more damage to the foundations (the drop it quite likely due to it falling down due to the bush absorbing moisture from the clay-rich soil).

The solution would seem to be to remove the bush and see if that stops the subsidence (it's a garage not a house). Depending on the rate of subsidence it's important to work out the risks involved in any "wait and see" approach.

Clearly the motto here is to check for inappropriate plantings like this every few years!

Wednesday, March 28, 2012

Noetix: Disabling Material Category (XXK_MTL_CAT) caching

This is slightly more complicated than the other "removal of caching" blog posts I've done earlier as there are multiple views (one for each structure) which all need to be updated and replaced at the same time. I've adopted a fairly simple approach;
  • Remove any backup (_BK) views
  • Create a new view to replace the root XXK_MTL_CAT view
  • Go through the ALL_VIEWS system view looking for the structure-specific views and then individually replace each of them with a view based on the new XXK_MTL_CAT view created above
  • Rebuild all the objects that have been invalidated by this change
Here is the script (you'll notice the * instead of the important piece of SQL, more details on that later);

@utlspon xu6_2012_replace_xxk_mtl_cat_view

BEGIN
  for v_Data in (SELECT av.view_name
                   FROM ALL_VIEWS av
                  WHERE av.owner = USER
                    and av.view_name LIKE 'XXK_MTL_CAT_%BK') loop
    execute immediate 'drop view ' || v_Data.view_name; -- Remove an existing backup view if it exists
  end loop;
END;
/

RENAME XXK_MTL_CAT TO XXK_MTL_CAT_BK
/

CREATE OR REPLACE VIEW XXK_MTL_CAT AS
*
/

begin
  for v_view in (select av.*
                   from all_views av
                  where av.owner = USER
                    and av.view_name like 'XXK_MTL_CAT_%') loop
    if instr(v_view.text, 'NOETIX_SYS.N_KFF_MTL_CAT') > 0 then
        execute immediate 'CREATE OR REPLACE VIEW ' || v_view.view_name || '_BK AS ' || v_view.text;
        execute immediate 'CREATE OR REPLACE VIEW ' || v_view.view_name || ' AS ' || replace(v_view.text, 'NOETIX_SYS.N_KFF_MTL_CAT', 'NOETIX_SYS.XXK_MTL_CAT');
        end if;
  end loop;
end;
/

begin
  dbms_output.put_line('Recompiling invalid Views under NOETIX_SYS Schema');
  dbms_output.put_line('-------------------------------------------------');
  dbms_output.put_line('Remove Invalid Noetix Views (that are not set to be ommitted)');
  for v_SQL in (select 'ALTER VIEW NOETIX_SYS.' || do.object_name || ' COMPILE' text
                  from dba_objects do
                 where do.status = 'INVALID'
                   and do.OWNER = 'NOETIX_SYS'
                   and do.OBJECT_TYPE = 'VIEW'
                   and do.OBJECT_NAME not in
                       (select view_name
                          from n_views
                         where nvl(omit_flag, 'N') = 'N')) loop
    dbms_output.put_line('  ' || v_SQL.Text);
    execute immediate v_SQL.Text;
  end loop;
  dbms_output.put_line('END');
end;
/

COMMIT;

@utlspoff

*- Now Noetix owns the code for this bit and as it's going to be distinct to every individual system (as it includes references to ID's) you'll need to do a bit of detective work and work it out yourself. I'll tell you how below.


First of all do a search for the object N_KFF_Mtl_Cat in all the .SQL files in your install directory. You shouldn't find many, the one you're after is named something like N_KFF_Mtl_Cat_pkg.sql, open the file and then scroll down to the line;

INSERT  /*+ APPEND */ INTO N_KFF_Mtl_Cat

You'll see that that the basis for this insert statement is a select statement. You need to take this select statement, take the columns in the table and re-format the SQL to return all the columns as specified in table.

When you've done this you'll notice that the column in the source table STRUCTURE_ID is mapping to both the STRUCTURE_ID and STRUCTURE_NAME in the view. If you scroll down quite a bit further you'll notice that there is also an UPDATE statement;

UPDATE N_KFF_Mtl_Cat dtbl
   SET dtbl.STRUCTURE_NAME =

You need to extract this UPDATE statement and put it into the view you're building (as the STRUCTURE_NAME) column.

In the end you'll have a piece of SQL that you can drop into the script above. If everything works when you run the script there will be no (well, the same number as you started with!) invalid views.

Monday, March 26, 2012

Switching to Google Public DNS (on an Apple Mac OS X Lion)

If you are interested in learning why you should be using a DNS other than that provided by your Service Provider then you might like to see Google Article on the subject;

http://code.google.com/speed/public-dns/docs/intro.html

A couple of things it doesn't mention but are also definite benefits (for me anyway) are;

  • Automatically opting out of any Service Provider "search" services (such as those offered by Virgin Media) when you miss-type a URL
  • Avoiding any blocks your Service Provider might put on you reaching certain sites by substituting DNS entries. Of course the down side of using a service like Google is that suddenly by using a US-based service you are subject to US law and filtering
Here are the instructions in order to set-up your Mac to use Google DNS.

Go to the top-right of the screen and right-click the Network (Wireless?) network icon;
Apple Network Options
Select "Open Network Preferences";
Network Preferences
Click on the "Advanced" button at the bottom right;
Advanced Network Options
Click on the "DNS" tab (centre-middle at the top);
DNS  Servers
As you can see in the screen shot the Google IP addresses for DNS are 8.8.8.8 and 8.8.4.4 (which are certainly a lot easier to remember than IP addresses generally!).

You need to remove any entries that are already in this box and replace them with the two IP addresses above.