commsfwtools/preparedefaultcommsdatabase/te_commsdat/src/commsdatValidationTests.cpp
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwtools/preparedefaultcommsdatabase/te_commsdat/src/commsdatValidationTests.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,4990 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CCommsdat100Step
+// CCommsdat101Step
+// CCommsdat102Step
+// CCommsdat103Step
+// CCommsdat104Step
+// CCommsdat105Step
+// 
+//
+
+/**
+ @file commsdatValidationTests.cpp
+*/
+#include "commsdatValidationTests.h"
+#include "CommsDatInternalDefs.h"
+#include "Te_commsdatSuiteDefs.h"
+#include <e32test.h>
+#include <commsdat_partner.h>
+#include <commsdattypesv1_1_partner.h>
+#include <commsdattypeinfov1_1_internal.h>
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+namespace
+{
+TBool CheckConnPrefValidation(CommsDat::CMDBSession* aCDSession_v11, 
+							  CommsDat::CMDBSession* aCDSession_vLatest)
+	{
+	TBool result = EFalse;
+	
+	CCDConnectionPrefsRecord* connPrefRec1 = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec1);
+    
+    //for the mapped APPriorityselPol field
+    CMDBRecordLink<CCDAccessPointRecord>* apPrioritySelPolField = new(ELeave)CMDBRecordLink<CCDAccessPointRecord>();
+    CleanupStack::PushL(apPrioritySelPolField);
+    //the connPref records are mapped in the last APPrioritySelPol record (from the meshpreface.cfg)
+    apPrioritySelPolField->SetRecordId(254);
+    
+    connPrefRec1->SetRecordId(1);
+    connPrefRec1->LoadL(*aCDSession_v11);
+    
+    TInt rank = connPrefRec1->iRanking; 
+    
+    switch (rank)
+    	{
+    	case 1:
+    		{
+    		//rank 1 is mapped into the iAP1 field
+    		apPrioritySelPolField->SetElementId(apPrioritySelPolField->ElementId() | KCDTIdAp1);
+    		break;
+    		}
+    	case 2:
+    		{
+    		//rank 2 is mapped into the iAP2 field
+    		apPrioritySelPolField->SetElementId(apPrioritySelPolField->ElementId() | KCDTIdAp2);
+    		break;
+    		}
+    	default:
+    		User::Leave(KErrNotFound);
+    	}
+    
+    apPrioritySelPolField->LoadL(*aCDSession_vLatest);
+    
+    //at this point we know the elementId of the generated IPProto level AP which links aganst
+    //the link level AP through its' CustomSelectionPolicy field. The value of this field in the
+    //given IPProto AP must be the same as the recordID of the linked IAP record from the ConnPref
+    //record.
+    
+    //so let's read the customSelectionPolicy field from the IPProto AP
+    CMDBField<TInt>* custSelPolField = new(ELeave)CMDBField<TInt>(KCDTIdCustomSelectionPolicy);
+    CleanupStack::PushL(custSelPolField);
+    
+    custSelPolField->SetRecordId((*apPrioritySelPolField & KCDMaskShowRecordId) >> 8);
+    
+    custSelPolField->LoadL(*aCDSession_vLatest);
+    
+    if (connPrefRec1->iDefaultIAP == *custSelPolField)
+    	{
+    	result = ETrue;
+    	}
+    
+    CleanupStack::PopAndDestroy(custSelPolField);
+    CleanupStack::PopAndDestroy(apPrioritySelPolField);
+    CleanupStack::PopAndDestroy(connPrefRec1);
+    
+    return result;
+	}
+
+TInt GetAPNumberL(const TInt aTierValaue, CommsDat::CMDBSession* aCDSession_vLatest)
+	{
+	CMDBRecordSet<CCDAccessPointRecord>* ipprotoAPs = new(ELeave)CMDBRecordSet<CCDAccessPointRecord>(KCDTIdAccessPointRecord);
+	CleanupStack::PushL(ipprotoAPs);
+	
+	CCDAccessPointRecord* primedIPProtoAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+	CleanupStack::PushL(primedIPProtoAP);
+	
+	primedIPProtoAP->iTier = aTierValaue;
+	
+	ipprotoAPs->iRecords.AppendL(primedIPProtoAP);
+	//the ownership of the primed record is now at the recordset
+	CleanupStack::Pop(primedIPProtoAP);
+	
+	ipprotoAPs->FindL(*aCDSession_vLatest);
+	
+	TInt apNum = ipprotoAPs->iRecords.Count();
+	
+	CleanupStack::PopAndDestroy(ipprotoAPs);
+	
+	return apNum;
+	}
+
+}
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+void CConnectionPrefValidationTestBase::deleteAllL()
+	{
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CMDBRecordSet<CCDConnectionPrefsRecord> *recordSet1 = new (ELeave) CMDBRecordSet<CCDConnectionPrefsRecord>(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(recordSet1);
+	TRAPD(loadErr, recordSet1->LoadL(*cmdbSession));
+	if(loadErr == KErrNone)
+		{
+		recordSet1->DeleteL(*cmdbSession);
+		}
+	CleanupStack::PopAndDestroy(recordSet1);
+		
+	CMDBRecordSet<CCDIAPRecord> *recordSet2 = new(ELeave) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord);
+	CleanupStack::PushL(recordSet2);
+	
+	TRAP(loadErr, recordSet2->LoadL(*cmdbSession));
+	if(loadErr == KErrNone)
+		{
+		recordSet2->DeleteL(*cmdbSession);
+		}
+		
+	CleanupStack::PopAndDestroy(recordSet2);
+	CleanupStack::PopAndDestroy(cmdbSession);
+	}
+	
+TVerdict CConnectionPrefValidationTestBase::doTestStepPreambleL()
+	{
+	SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("I am in doTestStepPreambleL() and deleting all connection preferences record"));
+	
+	deleteAllL();
+		
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CConnectionPrefValidationTestBase::doTestStepPostambleL()
+	{
+	deleteAllL();
+	return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat100Step::CCommsdat100Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat100Step);                                                                                           
+	}
+
+TVerdict CCommsdat100Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * The IAP record, conn pref record refers to, has to have a valid id, hence less 
+ * than KCDMaxRecords.
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat100Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	cpRecord->SetRecordId(KConnPrefRecordId );
+	cpRecord->iDefaultIAP = KCDMaxRecords;
+	TRAPD(storeErr, cpRecord->StoreL(*cmdbSession));
+	
+	if(storeErr == KErrNotFound)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord);
+	CleanupStack::PopAndDestroy(cmdbSession);
+        
+	return TestStepResult();
+	}
+	
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat101Step::CCommsdat101Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat101Step);                                                                                           
+	}
+
+TVerdict CCommsdat101Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * The ranking of conn pref record must be eiher 1 or 2, testing with an invalid value
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat101Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	cpRecord->SetRecordId(KConnPrefRecordId);
+	cpRecord->iDefaultIAP = 1; // An arbitrary but still valid IAP record id
+	cpRecord->iRanking = 3;    // Invalid value, should cause KErrOverflow
+	TRAPD(storeErr, cpRecord->StoreL(*cmdbSession));
+	INFO_PRINTF2(_L("store returns %d"), storeErr);
+	
+	if(storeErr == KErrOverflow)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord);
+	CleanupStack::PopAndDestroy(cmdbSession);
+    
+	return TestStepResult();
+	}
+	
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat102Step::CCommsdat102Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat102Step);                                                                                           
+	}
+
+TVerdict CCommsdat102Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Conn pref records with a rank of 2 are not permitted to be incoming
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat102Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	cpRecord->SetRecordId(KConnPrefRecordId);
+	cpRecord->iDefaultIAP = 1;  // An arbitrary, but valiad IAP record id
+	cpRecord->iRanking = 2;     // A invalid ranking for incoming connection
+	cpRecord->iDirection = ECommDbConnectionDirectionIncoming;
+	TRAPD(storeErr, cpRecord->StoreL(*cmdbSession));
+	
+	if(storeErr == KErrNotSupported)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord);
+	CleanupStack::PopAndDestroy(cmdbSession);
+    
+	return TestStepResult();
+	}
+	
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat103Step::CCommsdat103Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat103Step);                                                                                           
+	}
+
+const TInt KRanking = 1; 
+
+TVerdict CCommsdat103Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Two conn pref records with the same ranking are not allowed
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat103Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord);
+	CleanupStack::PushL(iapRecord); 
+	
+	//Insert an IAP record; which will be referred by conn pref records
+	iapRecord->SetRecordId(KIAPRecordId); 
+	iapRecord->iServiceType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iServiceType= TPtrC(DIAL_OUT_ISP);
+	iapRecord->iService=1;
+	iapRecord->iBearerType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iBearerType=TPtrC(LAN_BEARER);
+	iapRecord->iBearer=1;
+    
+	iapRecord->StoreL(*cmdbSession);
+	
+	CleanupStack::PopAndDestroy(iapRecord);
+	
+	CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord1);
+	
+	cpRecord1->SetRecordId(KConnPrefRecordId);
+	cpRecord1->iDefaultIAP = KIAPRecordId;  //A valid IAP record id 
+	cpRecord1->iRanking = KRanking;         //A valid ranking
+	cpRecord1->iDirection = ECommDbConnectionDirectionOutgoing;  //A valid direction
+	TRAPD(storeErr1, cpRecord1->StoreL(*cmdbSession));  // Should raise KErrNone
+	INFO_PRINTF2(_L("first store returns %d"), storeErr1);
+	
+	CCDConnectionPrefsRecord *cpRecord2 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord2);
+	
+	cpRecord2->SetRecordId(KConnPrefRecordId + 1);//Just another conn pref record
+	cpRecord2->iDefaultIAP = KIAPRecordId ;       //A valid IAP record id
+	cpRecord2->iRanking = KRanking;               //Same ranking with above one; should cause KErrAlreadyExists
+	cpRecord2->iDirection = ECommDbConnectionDirectionOutgoing; // A valid direction
+	TRAPD(storeErr2, cpRecord2->StoreL(*cmdbSession));// Should raise KErrAlreadyExists
+	INFO_PRINTF2(_L("second store returns %d"), storeErr2);
+	
+	if(storeErr1 == KErrNone && storeErr2 == KErrAlreadyExists)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord2);
+	CleanupStack::PopAndDestroy(cpRecord1);
+	CleanupStack::PopAndDestroy(cmdbSession);
+    
+	return TestStepResult();
+	}
+	
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat104Step::CCommsdat104Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat104Step);                                                                                           
+	}
+
+TVerdict CCommsdat104Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * An outgoing IAP; cannot be referred as incoming
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat104Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord);
+	CleanupStack::PushL(iapRecord); 
+	
+	//Insert an outgoing IAP record
+	iapRecord->SetRecordId(KIAPRecordId);
+	iapRecord->iServiceType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iServiceType= TPtrC(DIAL_OUT_ISP);  // Outgoing IAP
+	TRAPD(storeErr1, iapRecord->StoreL(*cmdbSession)); //Should return KErrNone
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	cpRecord->SetRecordId(KConnPrefRecordId);
+	cpRecord->iRanking = 1;    //A valid ranking
+	cpRecord->iDirection = ECommDbConnectionDirectionIncoming; //Should cause KErrArgument
+	cpRecord->iDefaultIAP = KIAPRecordId;  //The IAP record inserted above
+	cpRecord->iBearerSet = KCommDbBearerCSD;  //Type of bearer
+	TRAPD(storeErr2, cpRecord->StoreL(*cmdbSession)); //Should return KErrArgument
+	
+	if(storeErr1 == KErrNone && storeErr2 == KErrArgument)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord);
+	CleanupStack::PopAndDestroy(iapRecord);
+	CleanupStack::PopAndDestroy(cmdbSession);
+    
+	return TestStepResult();
+	}
+	
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat105Step::CCommsdat105Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat105Step);                                                                                           
+	}
+
+TVerdict CCommsdat105Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * A valid combination: an outgoing IAP is referred with an outgoing direction 
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat105Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord);
+	CleanupStack::PushL(iapRecord);
+	
+	// An outgoing IAP record is inserted
+	iapRecord->SetRecordId(KIAPRecordId);
+	iapRecord->iServiceType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iServiceType= TPtrC(DIAL_OUT_ISP);
+	iapRecord->iService=1;
+	iapRecord->iBearerType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iBearerType=TPtrC(LAN_BEARER);
+	iapRecord->iBearer=1;
+	TRAPD(storeErr1, iapRecord->StoreL(*cmdbSession)); //Should return KErrNone
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	cpRecord->SetRecordId(KConnPrefRecordId);
+	cpRecord->iRanking = 1;     // A valid ranking
+	cpRecord->iDirection = ECommDbConnectionDirectionOutgoing;  //A valid direction
+	cpRecord->iDefaultIAP = KIAPRecordId;  //IAP record inserted above
+	cpRecord->iBearerSet = KCommDbBearerLAN; // A valid bearer type
+	TRAPD(storeErr2, cpRecord->StoreL(*cmdbSession)); //Should return KErrNone
+	
+	if(storeErr1 == KErrNone && storeErr2 == KErrNone)
+		{
+		SetTestStepResult(EPass);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord);
+	CleanupStack::PopAndDestroy(iapRecord);
+	CleanupStack::PopAndDestroy(cmdbSession);
+    
+	return TestStepResult();
+	}
+	
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat106Step::CCommsdat106Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat106Step);                                                                                           
+	}
+
+TVerdict CCommsdat106Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ Test whether iDefaultIAP accepts zero as a valid value, since phones get shipped without any predefined IAPs
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Testing validation for connection preferences in CCommsdat106Step::doTestStepL() "));
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	//Even if the defaultIAP field won't contain anything an IAP has to be inserted because this will
+	//be the base of the link layer AP generation - CommsDat will search for an IAP based on the
+	//serviceType and Direction settings in the ConnPref record.
+	CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord);
+	CleanupStack::PushL(iapRecord);
+	
+	// An outgoing IAP record is inserted which satisfies the settings of the ConnPref record
+	iapRecord->SetRecordId(KIAPRecordId);
+	iapRecord->iServiceType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iServiceType= TPtrC(DIAL_OUT_ISP);
+	iapRecord->iService=1;
+	iapRecord->iBearerType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iBearerType=TPtrC(LAN_BEARER);
+	iapRecord->iBearer=1;
+	TRAPD(storeErr, iapRecord->StoreL(*cmdbSession)); //Should return KErrNone
+	
+	if (storeErr == KErrNone)
+		{
+		cpRecord->SetRecordId(KConnPrefRecordId );
+		cpRecord->iDefaultIAP = 0;
+		cpRecord->iDirection.SetL(ECommDbConnectionDirectionOutgoing);
+		cpRecord->iBearerSet.SetL(KCommDbBearerCSD);
+		cpRecord->iRanking = 1;     // A valid ranking
+				
+		TRAP(storeErr, cpRecord->StoreL(*cmdbSession));
+		
+		if(storeErr == KErrNone)
+			{
+			SetTestStepResult(EPass);
+			}
+		}
+	CleanupStack::PopAndDestroy(iapRecord);
+	CleanupStack::PopAndDestroy(cpRecord);
+	CleanupStack::PopAndDestroy(cmdbSession);
+        
+	return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat107Step::CCommsdat107Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat107Step);
+	}
+
+TVerdict CCommsdat107Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ Test whether iDefaultIAP accepts zero as a valid value, since phones get shipped without any predefined IAPs
+ */
+	{
+    SetTestStepResult(EFail);	
+	INFO_PRINTF1(_L("Modifying a link value to 0 in CCommsdat107Step::doTestStepL() "));
+	
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	CleanupStack::PushL(cmdbSession); 
+	
+	CCDVPNServiceRecord* vpnRec = static_cast<CCDVPNServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdVPNServiceRecord));
+    CleanupStack::PushL(vpnRec);
+    
+    vpnRec->SetRecordId(2);
+    vpnRec->LoadL(*cmdbSession);
+	
+    vpnRec->iServiceIAP = 0;
+    
+    vpnRec->ModifyL(*cmdbSession);
+    
+    vpnRec->LoadL(*cmdbSession);
+    
+    //this record is stored by ced without the homeIAP field.
+    CCDVPNServiceRecord* vpnRec01 = static_cast<CCDVPNServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdVPNServiceRecord));
+    CleanupStack::PushL(vpnRec01);
+    
+    vpnRec01->SetRecordId(4);
+    vpnRec01->LoadL(*cmdbSession);
+    
+    //at this point the stored and the modified vpn service records should have and initial
+    //0 value in their homeIAP fields. The NotZero flag of the fields should be false when 
+    //reading from the DB.
+    
+    if (NULL == vpnRec01->iServiceIAP &&
+    	NULL == vpnRec->iServiceIAP &&
+    	NULL == (vpnRec01->ElementId() & KCDNotNullFlag) &&
+    	NULL == (vpnRec->ElementId() & KCDNotNullFlag) )
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(vpnRec01);
+    CleanupStack::PopAndDestroy(vpnRec);
+	CleanupStack::PopAndDestroy(cmdbSession);
+        
+	return TestStepResult();
+	}
+
+
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+CCommsdat332Step::CCommsdat332Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat332Step);                                                                                           
+	}
+
+CCommsdat332Step::~CCommsdat332Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat332Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat332Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat332Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat332Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the name of the 1st ConnPref record. ModifyL is called through a 
+ * field container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    _LIT(KConnPrefName, "Modified ConnPref Name");
+    
+    CMDBField<TDesC>* connPrefName = new(ELeave)CMDBField<TDesC>(KCDTIdConnectionPrefsRecord | KCDTIdRecordName);
+    CleanupStack::PushL(connPrefName);
+    connPrefName->SetRecordId(1);
+    
+    connPrefName->SetMaxLengthL(KConnPrefName().Length());
+    connPrefName->SetL(KConnPrefName);
+    
+    connPrefName->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(connPrefName);
+    
+    CMDBField<TDesC>* connPrefName1 = new(ELeave)CMDBField<TDesC>(KCDTIdConnectionPrefsRecord | KCDTIdRecordName);
+    CleanupStack::PushL(connPrefName1);
+    connPrefName1->SetRecordId(1);
+    
+    connPrefName1->LoadL(*iCDSession_v11);
+	
+    TPtrC nameField(*connPrefName1);
+    
+    if (0 == nameField.Compare(KConnPrefName))
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(connPrefName1);
+    
+	return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat333Step::CCommsdat333Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat333Step);                                                                                           
+	}
+
+CCommsdat333Step::~CCommsdat333Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat333Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat333Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat333Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat333Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the name of the 1st ConnPref record. ModifyL is called through a 
+ * record container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    _LIT(KConnPrefName, "DefaultRecordName-1");
+    
+    CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec);
+    
+    connPrefRec->SetRecordId(1);
+    
+    connPrefRec->iRecordName.SetMaxLengthL(KConnPrefName().Length());
+    connPrefRec->iRecordName.SetL(KConnPrefName);
+    
+    connPrefRec->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefRec);
+    
+    CMDBField<TDesC>* connPrefName1 = new(ELeave)CMDBField<TDesC>(KCDTIdConnectionPrefsRecord | KCDTIdRecordName);
+    CleanupStack::PushL(connPrefName1);
+    connPrefName1->SetRecordId(1);
+    
+    connPrefName1->LoadL(*iCDSession_v11);
+	
+    TPtrC nameField(*connPrefName1);
+    
+    if (0 == nameField.Compare(KConnPrefName))
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(connPrefName1);
+    
+	return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat334Step::CCommsdat334Step()
+/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat334Step);                                                                                           
+	}
+
+CCommsdat334Step::~CCommsdat334Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat334Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat334Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat334Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat334Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the DialogPref field of the 1st ConnPref record. 
+ * As a result _NOT_ the prompt field of the ipproto Tier record has to be modified
+ * but instead the full TMDBElementId of the connpref record should be stored
+ * in the cprConfig field of the generated ipproto AP. 
+ * 
+ * ModifyL is called through a record container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec);
+    
+    connPrefRec->SetRecordId(1);
+    connPrefRec->LoadL(*iCDSession_v11);
+    
+    connPrefRec->iDialogPref = ECommDbDialogPrefPrompt;
+    connPrefRec->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefRec);
+    
+    
+    CCDConnectionPrefsRecord* connPrefRec1 = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec1);
+    
+    connPrefRec1->SetRecordId(1);
+    connPrefRec1->LoadL(*iCDSession_v11);
+    
+    CMDBField<TUint32>* connPrefPromptField = &(connPrefRec1->iDialogPref);
+   
+    CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(apRec);
+    
+    apRec->iCprConfig = connPrefRec1->ElementId();
+    
+    if ( (ECommDbDialogPrefPrompt == *connPrefPromptField) &&
+    		apRec->FindL(*iCDSession_vLatest) )
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(apRec);
+    CleanupStack::PopAndDestroy(connPrefRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat335Step::CCommsdat335Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat335Step);                                                                                           
+	}
+
+CCommsdat335Step::~CCommsdat335Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat335Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat335Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat335Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat335Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the DialogPref field of the 1st ConnPref record. ModifyL is called through a 
+ * field container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TUint32>* connPrefPromptField = new(ELeave)CMDBField<TUint32>(KCDTIdDialogPref);
+    CleanupStack::PushL(connPrefPromptField);
+    
+    connPrefPromptField->SetRecordId(1);
+    connPrefPromptField->LoadL(*iCDSession_v11);
+    
+    *connPrefPromptField = ECommDbDialogPrefDoNotPrompt;
+    connPrefPromptField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefPromptField);
+    
+    
+    CCDConnectionPrefsRecord* connPrefRec1 = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec1);
+    
+    connPrefRec1->SetRecordId(1);
+    connPrefRec1->LoadL(*iCDSession_v11);
+    
+    CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(apRec);
+    
+    apRec->iCprConfig.SetL(connPrefRec1->iDefaultIAP);
+    apRec->FindL(*iCDSession_vLatest);
+    
+    CMDBField<TUint32>* connPrefPromptField1 = &(connPrefRec1->iDialogPref);
+    
+    if ( (ECommDbDialogPrefDoNotPrompt == *connPrefPromptField1) &&
+    		apRec->iCprConfig == apRec->iCustomSelectionPolicy)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(apRec);
+    CleanupStack::PopAndDestroy(connPrefRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat336Step::CCommsdat336Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat336Step);                                                                                           
+	}
+
+CCommsdat336Step::~CCommsdat336Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat336Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat336Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat336Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat336Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the BearerSet field of the 1st ConnPref record. ModifyL is called through a 
+ * record container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec);
+    
+    connPrefRec->SetRecordId(1);
+    connPrefRec->LoadL(*iCDSession_v11);
+    
+    connPrefRec->iBearerSet = KCommDbBearerWLAN;
+    
+    connPrefRec->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefRec);
+    
+    
+    CCDConnectionPrefsRecord* connPrefRec1 = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec1);
+    
+    connPrefRec1->SetRecordId(1);
+    connPrefRec1->LoadL(*iCDSession_v11);
+    
+    if (KCommDbBearerWLAN == connPrefRec1->iBearerSet)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(connPrefRec1);    
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat337Step::CCommsdat337Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat337Step);                                                                                           
+	}
+
+CCommsdat337Step::~CCommsdat337Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat337Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat337Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat337Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat337Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the BearerSet field of the 1st ConnPref record. ModifyL is called through a 
+ * field container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TUint32>* connPrefBearerField = new(ELeave)CMDBField<TUint32>(KCDTIdBearerSet);
+    CleanupStack::PushL(connPrefBearerField);
+    
+    connPrefBearerField->SetRecordId(1);    
+    *connPrefBearerField = KCommDbBearerPAN;
+    
+    connPrefBearerField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefBearerField);
+    
+    
+    CMDBField<TUint32>* connPrefBearerField1 = new(ELeave)CMDBField<TUint32>(KCDTIdBearerSet);
+    CleanupStack::PushL(connPrefBearerField1);
+    
+    connPrefBearerField1->SetRecordId(1);
+    connPrefBearerField1->LoadL(*iCDSession_v11);
+    
+    if (KCommDbBearerPAN == *connPrefBearerField1)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(connPrefBearerField1);    
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+//changing the default IAP field in the ConnPref rec
+CCommsdat338Step::CCommsdat338Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat338Step);
+	}
+
+CCommsdat338Step::~CCommsdat338Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat338Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat338Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat338Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat338Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the IAP field of the 1st ConnPref record to a valid IAP. ModifyL is called through a 
+ * record container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec);
+    
+    connPrefRec->SetRecordId(1);
+    connPrefRec->LoadL(*iCDSession_v11);
+    
+    connPrefRec->iDefaultIAP = 1;
+    
+    connPrefRec->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefRec);  
+    
+    if (CheckConnPrefValidation(iCDSession_v11, iCDSession_vLatest))
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+//changing the default IAP field in the ConnPref rec
+CCommsdat339Step::CCommsdat339Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat339Step);
+	}
+
+CCommsdat339Step::~CCommsdat339Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat339Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat339Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat339Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat339Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the IAP field of the 1st ConnPref record to a valid IAP. ModifyL is called through a 
+ * field container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* defIAPField = new(ELeave)CMDBField<TInt>(KCDTIdIAPLink);
+    CleanupStack::PushL(defIAPField);
+    
+    defIAPField->SetRecordId(1);
+    *defIAPField = 3;
+    
+    defIAPField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(defIAPField);  
+    
+    if (CheckConnPrefValidation(iCDSession_v11, iCDSession_vLatest))
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+//changing the default IAP field in the ConnPref rec
+CCommsdat340Step::CCommsdat340Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat340Step);
+	}
+
+CCommsdat340Step::~CCommsdat340Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat340Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat340Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat340Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    //I know it's a 'C' object so it's initialized to 0 but...
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat340Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the IAP field of the 1st ConnPref record to a _NON_ valid IAP. ModifyL is called through a 
+ * record container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec);
+    
+    connPrefRec->SetRecordId(1);
+    connPrefRec->LoadL(*iCDSession_v11);
+    
+    connPrefRec->iDefaultIAP = 30;
+    
+    TRAPD(err, connPrefRec->ModifyL(*iCDSession_v11));
+    
+    if (KErrNotFound == err)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(connPrefRec);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+//changing the default IAP field in the ConnPref rec
+CCommsdat341Step::CCommsdat341Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat341Step);
+	}
+
+CCommsdat341Step::~CCommsdat341Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat341Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat341Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat341Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    //I know it's a 'C' object so it's initialized to 0 but...
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat341Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Modify the IAP field of the 1st ConnPref record to a _NON_ valid IAP. ModifyL is called through a 
+ * field container.
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* defaultIAP = new(ELeave)CMDBField<TInt>(KCDTIdIAPLink);
+    CleanupStack::PushL(defaultIAP);
+    
+    defaultIAP->SetRecordId(1);    
+    *defaultIAP = 30;
+    
+    TRAPD(err, defaultIAP->ModifyL(*iCDSession_v11));
+    
+    if (KErrNotFound == err)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(defaultIAP);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat342Step::CCommsdat342Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat342Step);
+	}
+
+CCommsdat342Step::~CCommsdat342Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat342Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat342Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat342Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat342Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Storing a new connpref record with rank2 and delete the connpref record with rank1. 
+ * 
+ * Consecvencies:
+ * 1. There will be a default AP generated because the rank1 record is deleted.
+ *    (customselpol record will be CCDAccessPointRecord::KNoPolicy of it)
+ * 2. This record will be linked form the APPrioritySelPol record (from the AP1 field)
+ * 3. Because the rank2 connpref record is a prompting record the generated IPProto AP
+ *    will be a prompting AP too. Meaning that the full TMDBElementId of the connpref
+ *    record (record2) will be stored in the CprConfig field of the generated IPProto AP.
+ * 
+ * Delete is called on a record container 
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	CleanupStack::PushL(iapRec);
+	
+	iapRec->SetRecordId(10);
+	iapRec->LoadL(*iCDSession_v11);
+	
+	cpRecord->SetRecordId(2);
+	cpRecord->iDefaultIAP = iapRec->RecordId();
+	cpRecord->iRanking = 2;
+	cpRecord->iDirection = ECommDbConnectionDirectionOutgoing;
+	cpRecord->iBearerSet = KCommDbBearerCSD;
+	cpRecord->iDialogPref = ECommDbDialogPrefPrompt;
+	
+	cpRecord->StoreL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(iapRec);
+	CleanupStack::PopAndDestroy(cpRecord);
+	
+	//and now delete the 1st connpref record causing a hole in the mapped
+	//APPrioritySelPol record (AP1 link will be 0 but the APCount field of the rec
+	//should be still 2)
+	
+	CCDConnectionPrefsRecord *cpRec = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRec);
+	
+	cpRec->SetRecordId(1);
+	cpRec->DeleteL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(cpRec);
+	
+	
+	CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord1);
+	
+	cpRecord1->SetRecordId(1);
+	TRAPD(err, cpRecord1->LoadL(*iCDSession_v11));
+	
+	if (KErrNotFound == err)
+		{
+		//ok, the connPref record is deleted
+		CCDAPPrioritySelectionPolicyRecord* apPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+		CleanupStack::PushL(apPrioritySelPolRec);
+		//The last record is used for this mapping
+		apPrioritySelPolRec->SetRecordId(254);
+		
+		apPrioritySelPolRec->LoadL(*iCDSession_vLatest);
+		
+		if ( NULL != apPrioritySelPolRec->iAp1 &&
+			 2 == apPrioritySelPolRec->iApCount )
+			{
+			//1st ipprotoAP should contain CCDAccessPointRecord::KNoPolicy in its' customSelPol field
+			//2nd ipprotoAP should contain the full TMDBElementID of the 2nd connpref record
+			CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+			CleanupStack::PushL(apRec);
+			
+			apRec->SetElementId(apPrioritySelPolRec->iAp1);
+			apRec->LoadL(*iCDSession_vLatest);
+			
+			TPtrC recName(apRec->iRecordName);
+			_LIT(KDefIPProtoRecName, "IPProtoDefault");
+			
+			if (CCDAccessPointRecord::KNoPolicy == apRec->iCustomSelectionPolicy &&
+				0 == recName.Compare(KDefIPProtoRecName))
+				{
+				//ok, the 1st ipproto AP is fine
+				apRec->SetElementId(apPrioritySelPolRec->iAp2);
+				apRec->LoadL(*iCDSession_vLatest);
+				
+				CCDConnectionPrefsRecord *cpRecord2 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+				CleanupStack::PushL(cpRecord2);
+				
+				cpRecord2->SetRecordId(2);
+				cpRecord2->LoadL(*iCDSession_v11);
+				
+				if (apRec->iCprConfig == cpRecord2->ElementId())
+					{
+					SetTestStepResult(EPass);
+					}
+				
+				CleanupStack::PopAndDestroy(cpRecord2);
+				}
+			
+			CleanupStack::PopAndDestroy(apRec);
+			}
+		
+		CleanupStack::PopAndDestroy(apPrioritySelPolRec);
+		}
+
+	CleanupStack::PopAndDestroy(cpRecord1);
+	
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat343Step::CCommsdat343Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat343Step);
+	}
+
+CCommsdat343Step::~CCommsdat343Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat343Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat343Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat343Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat343Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Storing a new connpref record with rank1 and delete the connpref record with rank2. Delete 
+ * is called on a record container 
+ * This test step is dependent on CCommsdat342Step
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+	
+	CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	CleanupStack::PushL(iapRec);
+	
+	iapRec->SetRecordId(3);
+	iapRec->LoadL(*iCDSession_v11);
+	
+	cpRecord->SetRecordId(1);
+	cpRecord->iDefaultIAP = iapRec->RecordId();
+	cpRecord->iRanking = 1;
+	cpRecord->iDirection = ECommDbConnectionDirectionOutgoing;
+	cpRecord->iBearerSet = KCommDbBearerCSD;
+	cpRecord->iDialogPref = ECommDbDialogPrefPrompt;
+	
+	cpRecord->StoreL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(iapRec);
+	CleanupStack::PopAndDestroy(cpRecord);
+	
+	//and now delete the 2nd connpref record
+	
+	CCDConnectionPrefsRecord *cpRec = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRec);
+	
+	cpRec->SetRecordId(2);
+	cpRec->DeleteL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(cpRec);
+	
+	CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord1);
+	
+	cpRecord1->SetRecordId(2);
+	TRAPD(err, cpRecord1->LoadL(*iCDSession_v11));
+	
+	if (KErrNotFound == err)
+		{
+		//ok, the connPref record is deleted
+		CCDAPPrioritySelectionPolicyRecord* apPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+		CleanupStack::PushL(apPrioritySelPolRec);
+		//The last record is used for this mapping
+		apPrioritySelPolRec->SetRecordId(254);
+		
+		apPrioritySelPolRec->LoadL(*iCDSession_vLatest);
+		
+		if ( NULL == apPrioritySelPolRec->iAp2 &&
+			 1 == apPrioritySelPolRec->iApCount )
+			{
+			//ok, we have only 1 valid link in the mapped APPrioritySelPol record (the 1st one)
+			CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+			CleanupStack::PushL(tierRec);
+			
+			//we just know that the IPProto tier record is the 2nd
+			tierRec->SetRecordId(2);
+			tierRec->LoadL(*iCDSession_vLatest);
+			
+			CMDBRecordLink<CCDAccessPointRecord>* apPriorityVal = &(apPrioritySelPolRec->iAp1);
+			
+			TInt apPriority = apPrioritySelPolRec->iAp1;
+			TInt tierDefAP = tierRec->iDefaultAccessPoint;
+			
+			if (apPriority == tierDefAP)
+				{
+				//ok, the 2 links are the same
+				CCDAccessPointRecord* ipProtoAPRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+				CleanupStack::PushL(ipProtoAPRec);
+				
+				ipProtoAPRec->SetElementId(*apPriorityVal);
+				ipProtoAPRec->LoadL(*iCDSession_vLatest);
+				
+				if (3 == ipProtoAPRec->iCustomSelectionPolicy)
+					{
+					//remember, when we created the the connpref rec with rank1 the IAP which is
+					//linked was the 3rd
+					SetTestStepResult(EPass);
+					}
+				
+				CleanupStack::PopAndDestroy(ipProtoAPRec);
+				}
+			CleanupStack::PopAndDestroy(tierRec);
+			}
+		
+		CleanupStack::PopAndDestroy(apPrioritySelPolRec);
+		}
+
+	CleanupStack::PopAndDestroy(cpRecord1);
+	
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat344Step::CCommsdat344Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat344Step);
+	}
+
+CCommsdat344Step::~CCommsdat344Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat344Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat344Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat344Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat344Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * deleting the defaultIAP field from the connpref record with rank1
+ * Delete is called through a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+    
+	cpRecord->iRanking = 1;
+	cpRecord->FindL(*iCDSession_v11);
+    
+    CMDBField<TInt>* connPrefDefIAPField = new(ELeave)CMDBField<TInt>(KCDTIdIAPLink);
+    CleanupStack::PushL(connPrefDefIAPField);
+    
+    connPrefDefIAPField->SetRecordId(cpRecord->RecordId());
+    connPrefDefIAPField->DeleteL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefDefIAPField);
+    CleanupStack::PopAndDestroy(cpRecord);
+    
+    
+	CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord1);
+	
+	cpRecord1->SetRecordId(1);
+	cpRecord1->LoadL(*iCDSession_v11);
+	
+	if (NULL == cpRecord1->iDefaultIAP)
+		{
+		//ok, the defaultIAP link is 0
+		CCDAPPrioritySelectionPolicyRecord* apPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+		CleanupStack::PushL(apPrioritySelPolRec);
+		//The last record is used for this mapping
+		apPrioritySelPolRec->SetRecordId(254);
+		
+		apPrioritySelPolRec->LoadL(*iCDSession_vLatest);
+		
+		if ( NULL != apPrioritySelPolRec->iAp1 &&
+			 1 == apPrioritySelPolRec->iApCount )
+			{
+			//1st ipprotoAP should contain CCDAccessPointRecord::KNoPolicy in its' customSelPol field
+			CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+			CleanupStack::PushL(apRec);
+			
+			apRec->SetElementId(apPrioritySelPolRec->iAp1);
+			apRec->LoadL(*iCDSession_vLatest);
+			
+			TPtrC recName(apRec->iRecordName);
+			_LIT(KDefIPProtoRecName, "IPProtoDefault");
+			
+			if (CCDAccessPointRecord::KNoPolicy == apRec->iCustomSelectionPolicy &&
+				0 == recName.Compare(KDefIPProtoRecName) &&
+				0 == apRec->iCprConfig)
+				{
+				CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+				CleanupStack::PushL(tierRec);
+				
+				//we just know that the IPProto tier record is the 2nd
+				tierRec->SetRecordId(2);
+				tierRec->LoadL(*iCDSession_vLatest);
+				
+				TInt tierLink = tierRec->iDefaultAccessPoint;
+				TInt apPrioritySelPolLink = apPrioritySelPolRec->iAp1;
+				
+				if ( tierRec->iDefaultAccessPoint == (apRec->ElementId() & ~KCDMaskShowFieldType) &&
+					 tierLink == apPrioritySelPolLink )
+					{
+					SetTestStepResult(EPass);
+					}
+				
+				CleanupStack::PopAndDestroy(tierRec);
+				}
+			
+			CleanupStack::PopAndDestroy(apRec);
+			}
+		
+		CleanupStack::PopAndDestroy(apPrioritySelPolRec);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord1);
+	
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat345Step::CCommsdat345Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat345Step);
+	}
+
+CCommsdat345Step::~CCommsdat345Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat345Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat345Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat345Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat345Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * deleting the defaultIAP field from the connpref record with rank2
+ * Delete is called through a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+	CCDConnectionPrefsRecord *cpRec = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRec);
+	
+	CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	CleanupStack::PushL(iapRec);
+	
+	iapRec->SetRecordId(3);
+	iapRec->LoadL(*iCDSession_v11);
+	
+	//1st inserting a new connpref record with rank2
+	cpRec->SetRecordId(2);
+	cpRec->iDefaultIAP = iapRec->RecordId();
+	cpRec->iRanking = 2;
+	cpRec->iDirection = ECommDbConnectionDirectionOutgoing;
+	cpRec->iBearerSet = KCommDbBearerCSD;
+	cpRec->iDialogPref = ECommDbDialogPrefPrompt;
+	
+	cpRec->StoreL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(iapRec);
+	CleanupStack::PopAndDestroy(cpRec);
+    
+	//delete the linked IAP record from the DB
+	CCDIAPRecord* iapRecToDelete = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	CleanupStack::PushL(iapRecToDelete);
+	
+	iapRecToDelete->SetRecordId(3);
+	iapRecToDelete->DeleteL(*iCDSession_vLatest);
+	CleanupStack::PopAndDestroy(iapRecToDelete);
+	
+	
+	CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord);
+    
+	cpRecord->iRanking = 2;
+	cpRecord->FindL(*iCDSession_v11);
+    
+    CMDBField<TInt>* connPrefDefIAPField = new(ELeave)CMDBField<TInt>(KCDTIdIAPLink);
+    CleanupStack::PushL(connPrefDefIAPField);
+    
+    connPrefDefIAPField->SetRecordId(cpRecord->RecordId());
+    connPrefDefIAPField->DeleteL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefDefIAPField);
+    CleanupStack::PopAndDestroy(cpRecord);
+    
+    
+	CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord1);
+	
+	cpRecord1->SetRecordId(2);
+	cpRecord1->LoadL(*iCDSession_v11);
+	
+	if (NULL == cpRecord1->iDefaultIAP)
+		{
+		//ok, the defaultIAP link is 0
+		CCDAPPrioritySelectionPolicyRecord* apPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+		CleanupStack::PushL(apPrioritySelPolRec);
+		//The last record is used for this mapping
+		apPrioritySelPolRec->SetRecordId(254);
+		
+		apPrioritySelPolRec->LoadL(*iCDSession_vLatest);
+		
+		if ( NULL == apPrioritySelPolRec->iAp2 &&
+			 1 == apPrioritySelPolRec->iApCount )
+			{
+			//ok, we have only 1 valid link in the mapped APPrioritySelPol record (the 1st one)
+			CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+			CleanupStack::PushL(tierRec);
+			
+			//we just know that the IPProto tier record is the 2nd
+			tierRec->SetRecordId(2);
+			tierRec->LoadL(*iCDSession_vLatest);
+			
+			TInt apPriority = apPrioritySelPolRec->iAp1;
+			TInt tierDefAP = tierRec->iDefaultAccessPoint;
+			
+			if (apPriority == tierDefAP)
+				{
+				SetTestStepResult(EPass);
+				}
+			CleanupStack::PopAndDestroy(tierRec);
+			}
+		
+		CleanupStack::PopAndDestroy(apPrioritySelPolRec);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord1);
+	
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat346Step::CCommsdat346Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat346Step);
+	}
+
+CCommsdat346Step::~CCommsdat346Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat346Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat346Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat346Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat346Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * storing an IAP record and setting the defaultIAP link in the connpref record with ranking1
+ * The config file used for this test step doesn't contain any IAP records and the defaultIAP
+ * link in the connpref record is 0. In this case CommsDat doesn't generate any 399 path.
+ * The modify is called through a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    //insert a new IAP record
+	CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord);
+	CleanupStack::PushL(iapRecord); 
+	
+	//Insert an IAP record; which will be referred by conn pref records
+	iapRecord->SetRecordId(KCDNewRecordRequest); 
+	iapRecord->iServiceType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iServiceType= TPtrC(DIAL_OUT_ISP);
+	iapRecord->iService=2;
+	iapRecord->iBearerType.SetMaxLengthL(KMaxTextLength);
+	iapRecord->iBearerType=TPtrC(MODEM_BEARER);
+	iapRecord->iBearer=3;
+    
+	iapRecord->StoreL(*iCDSession_v11);
+	
+	CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+	CleanupStack::PushL(connPrefRec);
+	
+	connPrefRec->SetRecordId(1);
+	connPrefRec->LoadL(*iCDSession_v11);
+	
+	connPrefRec->iDefaultIAP = iapRecord->RecordId();
+	
+	connPrefRec->ModifyL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(connPrefRec);
+	
+	CCDConnectionPrefsRecord* connPrefRec1 = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+	CleanupStack::PushL(connPrefRec1);
+	
+	connPrefRec1->SetRecordId(1);
+	connPrefRec1->LoadL(*iCDSession_v11);
+	
+	if (iapRecord->RecordId() == connPrefRec1->iDefaultIAP)
+		{
+		CCDAPPrioritySelectionPolicyRecord* apPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+		CleanupStack::PushL(apPrioritySelPolRec);
+		//The last record is used for this mapping
+		apPrioritySelPolRec->SetRecordId(254);
+		
+		apPrioritySelPolRec->LoadL(*iCDSession_vLatest);
+		
+		if ( NULL != apPrioritySelPolRec->iAp1 &&
+			 1 == apPrioritySelPolRec->iApCount )
+			{
+			//ok, we have only 1 valid link in the mapped APPrioritySelPol record (the 1st one)
+			CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+			CleanupStack::PushL(tierRec);
+			
+			//we just know that the IPProto tier record is the 2nd
+			tierRec->SetRecordId(2);
+			tierRec->LoadL(*iCDSession_vLatest);
+			
+			TInt apPriority = apPrioritySelPolRec->iAp1;
+			TInt tierDefAP = tierRec->iDefaultAccessPoint;
+			
+			if (apPriority == tierDefAP)
+				{
+				SetTestStepResult(EPass);
+				}
+			CleanupStack::PopAndDestroy(tierRec);
+			}
+		
+		CleanupStack::PopAndDestroy(apPrioritySelPolRec);
+		}
+	
+	CleanupStack::PopAndDestroy(connPrefRec1);
+	CleanupStack::PopAndDestroy(iapRecord);
+	
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat347Step::CCommsdat347Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat347Step);
+	}
+
+CCommsdat347Step::~CCommsdat347Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat347Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat347Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat347Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat347Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * modify the defaultIAP field in the connpref rec with rank1 to 0. In this case
+ * although it's a modification commsdat has to delete the 399 path...
+ * The modify is called through a record container
+ * The expected behaviour in this case is that commsDat sets the 0 for the defaultIAP link
+ * but leaves the already constructed default path as it is. So nothing is deleted...
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+	CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+	CleanupStack::PushL(connPrefRec);
+	
+	connPrefRec->SetRecordId(1);
+	
+	connPrefRec->LoadL(*iCDSession_v11);
+	
+	connPrefRec->iDefaultIAP = 0;
+	connPrefRec->ModifyL(*iCDSession_v11);
+	
+	CleanupStack::PopAndDestroy(connPrefRec);
+	
+	
+	CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+	CleanupStack::PushL(cpRecord1);
+	
+	cpRecord1->SetRecordId(1);
+	cpRecord1->LoadL(*iCDSession_v11);
+	
+	if (NULL == cpRecord1->iDefaultIAP)
+		{
+		//ok, the defaultIAP link is 0
+		CCDAPPrioritySelectionPolicyRecord* apPrioritySelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+		CleanupStack::PushL(apPrioritySelPolRec);
+		//The last record is used for this mapping
+		apPrioritySelPolRec->SetRecordId(254);
+		
+		apPrioritySelPolRec->LoadL(*iCDSession_vLatest);
+		
+		if ( NULL != apPrioritySelPolRec->iAp1 &&
+			 1 == apPrioritySelPolRec->iApCount )
+			{
+			//ok, we have only 1 valid link in the mapped APPrioritySelPol record (the 1st one)
+			CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+			CleanupStack::PushL(tierRec);
+			
+			//we just know that the IPProto tier record is the 2nd
+			tierRec->SetRecordId(2);
+			tierRec->LoadL(*iCDSession_vLatest);
+			
+			TInt apPriority = apPrioritySelPolRec->iAp1;
+			TInt tierDefAP = tierRec->iDefaultAccessPoint;
+			
+			if (apPriority == tierDefAP)
+				{
+				SetTestStepResult(EPass);
+				}
+			CleanupStack::PopAndDestroy(tierRec);
+			}
+		
+		CleanupStack::PopAndDestroy(apPrioritySelPolRec);
+		}
+	
+	CleanupStack::PopAndDestroy(cpRecord1);
+	
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat348Step::CCommsdat348Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat348Step);
+	}
+
+CCommsdat348Step::~CCommsdat348Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat348Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat348Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat348Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat348Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Deleting an IAP record -> the 'mapped' AP record should be deleted too
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CMDBField<TInt>* mappedLinkLevelAPTagId = new(ELeave)CMDBField<TInt>(KCDTIdAccessPointRecord | KCDTIdRecordTag);
+    CleanupStack::PushL(mappedLinkLevelAPTagId);
+    
+    *mappedLinkLevelAPTagId = 3;
+    
+    if (mappedLinkLevelAPTagId->FindL(*iCDSession_vLatest))
+    	{
+    	//ok, at this point we have the 'mapped' link level AP
+	    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	    CleanupStack::PushL(iapRec);
+	    
+	    iapRec->SetRecordId(3);
+	    iapRec->DeleteL(*iCDSession_v11);
+	    
+	    CleanupStack::PopAndDestroy(iapRec);
+	    
+	    if (! (mappedLinkLevelAPTagId->FindL(*iCDSession_vLatest)) )
+	    	{
+	    	//this time the mapped link level AP shouldn't be in the db anymore
+	    	SetTestStepResult(EPass);
+	    	}
+    	}
+    
+    CleanupStack::PopAndDestroy(mappedLinkLevelAPTagId);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat349Step::CCommsdat349Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat349Step);
+	}
+
+CCommsdat349Step::~CCommsdat349Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat349Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat349Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat349Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat349Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Try to load an IAP record with recordId 255, and 256. (this was a Nokia defect in 9.4)
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec);
+    iapRec->SetRecordId(256);
+    
+    TRAPD(err, iapRec->LoadL(*iCDSession_v11))
+    if (KErrNotFound == err)
+    	{
+        SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(iapRec);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat350Step::CCommsdat350Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat350Step);
+	}
+
+CCommsdat350Step::~CCommsdat350Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat350Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat350Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat350Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat350Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the bearertype and bearer from modmbearer to lanbearer.
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec);
+    iapRec->SetRecordId(1);
+    
+    iapRec->LoadL(*iCDSession_v11);
+    iapRec->iBearerType.SetMaxLengthL(KMaxTextLength);
+	iapRec->iBearerType=TPtrC(LAN_BEARER);
+	iapRec->iBearer=1;
+    
+	iapRec->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapRec);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(1);
+    associatedLinkAP->iRecordTag = 1;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC bearerType(iapRec1->iBearerType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	_LIT(KExpectedAPName, "ethintMappedFromIAP1");
+    	
+    	if ( 0 == bearerType.Compare(TPtrC(LAN_BEARER)) &&
+    		 1 == iapRec1->iBearer &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000400 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000300 == associatedLinkAP->iSCpr &&
+    		 0x13800400 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat351Step::CCommsdat351Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat351Step);
+	}
+
+CCommsdat351Step::~CCommsdat351Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat351Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat351Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat351Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat351Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the bearertype from lanbearer to modmbearer 
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CMDBField<TDesC>* bearerType = new(ELeave)CMDBField<TDesC>(KCDTIdIAPBearerType);
+    CleanupStack::PushL(bearerType);
+    bearerType->SetRecordId(2);
+    
+    bearerType->SetMaxLengthL(KMaxTextLength);
+    bearerType->SetL(TPtrC(MODEM_BEARER));
+    
+    bearerType->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(bearerType);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(2);
+    associatedLinkAP->iRecordTag = 2;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC bearerTypeName(iapRec1->iBearerType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	_LIT(KExpectedAPName, "pppMappedFromIAP2");
+    	
+    	if ( 0 == bearerTypeName.Compare(TPtrC(MODEM_BEARER)) &&
+    		 2 == iapRec1->iBearer &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat352Step::CCommsdat352Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat352Step);
+	}
+
+CCommsdat352Step::~CCommsdat352Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat352Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat352Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat352Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat352Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the bearer from 3 to 2 
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CMDBField<TInt>* bearer = new(ELeave)CMDBField<TInt>(KCDTIdIAPBearer);
+    CleanupStack::PushL(bearer);
+    bearer->SetRecordId(3);
+    
+    *bearer = 2;
+    
+    bearer->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(bearer);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(3);
+    associatedLinkAP->iRecordTag = 3;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC bearerTypeName(iapRec1->iBearerType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	_LIT(KExpectedAPName, "pppMappedFromIAP3");
+    	
+    	if ( 0 == bearerTypeName.Compare(TPtrC(MODEM_BEARER)) &&
+    		 2 == iapRec1->iBearer &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat353Step::CCommsdat353Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat353Step);
+	}
+
+CCommsdat353Step::~CCommsdat353Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat353Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat353Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat353Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat353Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the servicetype from dialout to lanservice and the service from 3 to 2
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec);
+    iapRec->SetRecordId(4);
+    
+    iapRec->LoadL(*iCDSession_v11);
+    iapRec->iServiceType.SetMaxLengthL(KMaxTextLength);
+	iapRec->iServiceType=TPtrC(LAN_SERVICE);
+	iapRec->iService=2;
+    
+	iapRec->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapRec);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(4);
+    associatedLinkAP->iRecordTag = 4;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	_LIT(KExpectedAPName, "pppMappedFromIAP4");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(LAN_SERVICE)) &&
+    		 2 == iapRec1->iService &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat354Step::CCommsdat354Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat354Step);
+	}
+
+CCommsdat354Step::~CCommsdat354Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat354Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat354Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat354Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat354Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the name of the iap record
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec);
+    iapRec->SetRecordId(5);
+    
+    _LIT(KNewIAPName, "New IAP record name");
+    
+    iapRec->LoadL(*iCDSession_v11);
+    iapRec->iRecordName.SetMaxLengthL(KNewIAPName().Length());
+	iapRec->iRecordName.SetL(KNewIAPName);
+    
+	iapRec->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapRec);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(5);
+    associatedLinkAP->iRecordTag = 5;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	TPtrC iapRecName(iapRec1->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP5");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 4 == iapRec1->iService &&
+    		 0 == iapRecName.Compare(KNewIAPName) &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat355Step::CCommsdat355Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat355Step);
+	}
+
+CCommsdat355Step::~CCommsdat355Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat355Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat355Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat355Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat355Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the name of the iap record
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CMDBField<TDesC>* iapNameField = new(ELeave)CMDBField<TDesC>(KCDTIdIAPRecord | KCDTIdRecordName);
+    CleanupStack::PushL(iapNameField);
+    iapNameField->SetRecordId(6);
+    
+    _LIT(KNewIAPName, "New IAP record name 02");
+    
+    iapNameField->SetMaxLengthL(KNewIAPName().Length());
+    iapNameField->SetL(KNewIAPName);
+    
+    iapNameField->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapNameField);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(6);
+    associatedLinkAP->iRecordTag = 6;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	TPtrC iapRecName(iapRec1->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP6");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 2 == iapRec1->iService &&
+    		 0 == iapRecName.Compare(KNewIAPName) &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat356Step::CCommsdat356Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat356Step);
+	}
+
+CCommsdat356Step::~CCommsdat356Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat356Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat356Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat356Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat356Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the network weighting field of the iap record
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec);
+    iapRec->SetRecordId(7);
+    
+    iapRec->LoadL(*iCDSession_v11);
+    iapRec->iNetworkWeighting = 4;
+    
+	iapRec->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapRec);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(7);
+    associatedLinkAP->iRecordTag = 7;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP7");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 5 == iapRec1->iService &&
+    		 4 == iapRec1->iNetworkWeighting &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat357Step::CCommsdat357Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat357Step);
+	}
+
+CCommsdat357Step::~CCommsdat357Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat357Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat357Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat357Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat357Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the network weighting field of the iap record
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    CMDBField<TInt>* iapNetworkWeitghtingField = new(ELeave)CMDBField<TInt>(KCDTIdIAPNetworkWeighting);
+    CleanupStack::PushL(iapNetworkWeitghtingField);
+    iapNetworkWeitghtingField->SetRecordId(8);
+    
+    *iapNetworkWeitghtingField = 5;
+    
+    iapNetworkWeitghtingField->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapNetworkWeitghtingField);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(8);
+    associatedLinkAP->iRecordTag = 8;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP8");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 3 == iapRec1->iService &&
+    		 5 == iapRec1->iNetworkWeighting &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat358Step::CCommsdat358Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat358Step);
+	}
+
+CCommsdat358Step::~CCommsdat358Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat358Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat358Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat358Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat358Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the sid  field of the iap record
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    const TInt KDummySid = 0x4324567; 
+    
+    CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec);
+    iapRec->SetRecordId(9);
+    
+    iapRec->LoadL(*iCDSession_v11);
+    iapRec->iAppSid = KDummySid;
+    
+	iapRec->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapRec);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(9);
+    associatedLinkAP->iRecordTag = 9;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "ethintMappedFromIAP9");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(LAN_SERVICE)) &&
+    		 2 == iapRec1->iService &&
+    		 KDummySid == iapRec1->iAppSid &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000400 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000300 == associatedLinkAP->iSCpr &&
+    		 0x13800400 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 KDummySid == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat359Step::CCommsdat359Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat359Step);
+	}
+
+CCommsdat359Step::~CCommsdat359Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat359Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat359Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat359Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat359Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * change the sid  field of the iap record
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    const TInt KDummySid = 0x4324567; 
+    
+    CMDBField<TInt>* iapSidField = new(ELeave)CMDBField<TInt>(KCDTIdIAPAppSid);
+    CleanupStack::PushL(iapSidField);
+    iapSidField->SetRecordId(10);
+    
+    *iapSidField = KDummySid;
+    
+    iapSidField->ModifyL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapSidField);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(10);
+    associatedLinkAP->iRecordTag = 10;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP10");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 6 == iapRec1->iService &&
+    		 KDummySid == iapRec1->iAppSid &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 KDummySid == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat360Step::CCommsdat360Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat360Step);
+	}
+
+CCommsdat360Step::~CCommsdat360Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat360Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat360Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat360Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat360Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * delete the sid  field of the iap record
+ * delete is called on a field container
+ * This test step is dependent on the CCommsdat359Step
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* iapSidField = new(ELeave)CMDBField<TInt>(KCDTIdIAPAppSid);
+    CleanupStack::PushL(iapSidField);
+    iapSidField->SetRecordId(10);
+    
+    iapSidField->DeleteL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapSidField);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(10);
+    associatedLinkAP->iRecordTag = 10;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP10");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 6 == iapRec1->iService &&
+    		 0 == iapRec1->iAppSid &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat361Step::CCommsdat361Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat361Step);
+	}
+
+CCommsdat361Step::~CCommsdat361Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat361Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat361Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat361Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat361Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * delete the network weigthing  field of the iap record
+ * delete is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* iapnetworkWeightingField = new(ELeave)CMDBField<TInt>(KCDTIdIAPNetworkWeighting);
+    CleanupStack::PushL(iapnetworkWeightingField);
+    iapnetworkWeightingField->SetRecordId(11);
+    
+    iapnetworkWeightingField->DeleteL(*iCDSession_v11);
+	
+    CleanupStack::PopAndDestroy(iapnetworkWeightingField);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(11);
+    associatedLinkAP->iRecordTag = 11;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP11");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(DIAL_OUT_ISP)) &&
+    		 2 == iapRec1->iService &&
+    		 0 == iapRec1->iNetworkWeighting &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat362Step::CCommsdat362Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat362Step);
+	}
+
+CCommsdat362Step::~CCommsdat362Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat362Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat362Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat362Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat362Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * delete the bearer field of the iap record
+ * delete is called on a field container
+ * 
+ * NOTE: This case shouldn't be allowed since a linked field is set to 0. But because of BC reasons we have to allow
+ * this. There are test steps in the CommdbShim (24_03, 24_04, 24_07, 24_08) where a linked field in the GlobalSettings
+ * record is set to 0 explicitly!!!!
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* iapBearerField = new(ELeave)CMDBField<TInt>(KCDTIdIAPBearer);
+    CleanupStack::PushL(iapBearerField);
+    iapBearerField->SetRecordId(12);
+    
+    iapBearerField->DeleteL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(iapBearerField);
+    
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(12);
+    associatedLinkAP->iRecordTag = 12;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC bearerTypeName(iapRec1->iBearerType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "pppMappedFromIAP12");
+    	
+    	if ( 0 == bearerTypeName.Compare(TPtrC(MODEM_BEARER)) &&
+    		 0 == iapRec1->iBearer &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000300 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000500 == associatedLinkAP->iSCpr &&
+    		 0x13800300 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat363Step::CCommsdat363Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat363Step);
+	}
+
+CCommsdat363Step::~CCommsdat363Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat363Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat363Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat363Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat363Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the lanserviceextension recordId in the lanservice record
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CCDLANServiceRecord* lanServiceRec = static_cast<CCDLANServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+    CleanupStack::PushL(lanServiceRec);
+    lanServiceRec->SetRecordId(2);
+    
+    lanServiceRec->LoadL(*iCDSession_v11);
+    
+    lanServiceRec->iServiceExtensionTableRecordId = 2;
+    
+    lanServiceRec->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(lanServiceRec);
+
+    CCDLANServiceRecord* lanServiceRec1 = static_cast<CCDLANServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+    CleanupStack::PushL(lanServiceRec1);
+    lanServiceRec1->SetRecordId(2);
+    
+    lanServiceRec1->LoadL(*iCDSession_v11);
+    
+    if (2 == lanServiceRec1->iServiceExtensionTableRecordId)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(lanServiceRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat364Step::CCommsdat364Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat364Step);
+	}
+
+CCommsdat364Step::~CCommsdat364Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat364Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat364Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat364Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat364Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the lanserviceextension recordId in the lanservice record
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* lanServiceRecIdField = new(ELeave)CMDBField<TInt>(KCDTIdLANServiceExtensionTableRecordId);
+    CleanupStack::PushL(lanServiceRecIdField);
+    lanServiceRecIdField->SetRecordId(2);
+    
+    *lanServiceRecIdField = 2;
+    
+    lanServiceRecIdField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(lanServiceRecIdField);
+
+    CCDLANServiceRecord* lanServiceRec1 = static_cast<CCDLANServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+    CleanupStack::PushL(lanServiceRec1);
+    lanServiceRec1->SetRecordId(2);
+    
+    lanServiceRec1->LoadL(*iCDSession_v11);
+    
+    if (2 == lanServiceRec1->iServiceExtensionTableRecordId)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(lanServiceRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat365Step::CCommsdat365Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat365Step);
+	}
+
+CCommsdat365Step::~CCommsdat365Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat365Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat365Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat365Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat365Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the ISP recordId in the proxies record
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CCDProxiesRecord* proxiesRec = static_cast<CCDProxiesRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    CleanupStack::PushL(proxiesRec);
+    proxiesRec->SetRecordId(1);
+    
+    proxiesRec->LoadL(*iCDSession_v11);
+    
+    proxiesRec->iService = 2;
+    
+    proxiesRec->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(proxiesRec);
+
+    CCDProxiesRecord* proxiesRec1 = static_cast<CCDProxiesRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    CleanupStack::PushL(proxiesRec1);
+    proxiesRec1->SetRecordId(1);
+    
+    proxiesRec1->LoadL(*iCDSession_v11);
+    
+    if (2 == proxiesRec1->iService)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(proxiesRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat366Step::CCommsdat366Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat366Step);
+	}
+
+CCommsdat366Step::~CCommsdat366Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat366Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat366Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat366Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+    iCDSession_vLatest = NULL;
+	}
+
+
+TVerdict CCommsdat366Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the ISP recordId in the proxies record
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* proxiesISPField = new(ELeave)CMDBField<TInt>(KCDTIdISP);
+    CleanupStack::PushL(proxiesISPField);
+    proxiesISPField->SetRecordId(1);
+    
+    *proxiesISPField = 3;
+    
+    proxiesISPField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(proxiesISPField);
+
+    CCDProxiesRecord* proxiesRec1 = static_cast<CCDProxiesRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    CleanupStack::PushL(proxiesRec1);
+    proxiesRec1->SetRecordId(1);
+    
+    proxiesRec1->LoadL(*iCDSession_v11);
+    
+    if (3 == proxiesRec1->iService)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(proxiesRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+
+CCommsdat367Step::CCommsdat367Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat367Step);
+	}
+
+CCommsdat367Step::~CCommsdat367Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat367Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat367Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat367Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat367Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change bearer in the IAP record
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* IAPBearerField = new(ELeave)CMDBField<TInt>(KCDTIdIAPBearer);
+    CleanupStack::PushL(IAPBearerField);
+    IAPBearerField->SetRecordId(1);
+    
+    *IAPBearerField = 11;
+    
+    IAPBearerField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(IAPBearerField);
+
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(1);
+    associatedLinkAP->iRecordTag = 1;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC bearerTypeName(iapRec1->iBearerType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "rawipMappedFromIAP1");
+    	
+    	if ( 0 == bearerTypeName.Compare(TPtrC(MODEM_BEARER)) &&
+    		 11 == iapRec1->iBearer &&
+    		 0 == iapRec1->iNetworkWeighting &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000500 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000300 == associatedLinkAP->iSCpr &&
+    		 0x13800500 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat368Step::CCommsdat368Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat368Step);
+	}
+
+CCommsdat368Step::~CCommsdat368Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat368Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat368Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat368Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat368Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change service in the IAP record
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    CMDBField<TInt>* IAPServiceField = new(ELeave)CMDBField<TInt>(KCDTIdIAPService);
+    CleanupStack::PushL(IAPServiceField);
+    IAPServiceField->SetRecordId(2);
+    
+    *IAPServiceField = 2;
+    
+    IAPServiceField->ModifyL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(IAPServiceField);
+
+    CCDIAPRecord* iapRec1 = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRec1);
+    
+    CCDAccessPointRecord* associatedLinkAP = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+    CleanupStack::PushL(associatedLinkAP);
+    
+    iapRec1->SetRecordId(2);
+    associatedLinkAP->iRecordTag = 2;
+    
+    iapRec1->LoadL(*iCDSession_v11);
+    
+    if (associatedLinkAP->FindL(*iCDSession_vLatest))
+    	{
+    	TPtrC serviceTypeName(iapRec1->iServiceType);
+    	TPtrC apRecName(associatedLinkAP->iRecordName);
+    	
+    	_LIT(KExpectedAPName, "ethintMappedFromIAP2");
+    	
+    	if ( 0 == serviceTypeName.Compare(TPtrC(LAN_SERVICE)) &&
+    		 2 == iapRec1->iService &&
+    		 0 == iapRec1->iNetworkWeighting &&
+    		 0 == apRecName.Compare(KExpectedAPName) &&
+    		 0 == associatedLinkAP->iSelectionPolicy &&
+    		 0x11800300 == associatedLinkAP->iTier &&
+    		 0x12000400 == associatedLinkAP->iMCpr &&
+    		 0x12800300 == associatedLinkAP->iCpr &&
+    		 0x13000300 == associatedLinkAP->iSCpr &&
+    		 0x13800400 == associatedLinkAP->iProtocol &&
+    		 0 == associatedLinkAP->iCprConfig &&
+    		 0 == associatedLinkAP->iAppSID &&
+    		 0 == associatedLinkAP->iCustomSelectionPolicy )
+    		{
+    		SetTestStepResult(EPass);
+    		}
+    	}
+    
+    CleanupStack::PopAndDestroy(associatedLinkAP);
+    CleanupStack::PopAndDestroy(iapRec1);
+    
+    return TestStepResult();
+	}
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat369Step::CCommsdat369Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat369Step);
+	}
+
+CCommsdat369Step::~CCommsdat369Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat369Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat369Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat369Step::CreateSessionsL()
+	{
+    iCDSession_v11 = NULL;
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat369Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the TierThredName field in the Tier record (valid name)
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    _LIT(KNewTierName, "New Tier Name");
+    
+    CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+    CleanupStack::PushL(tierRec);
+    
+    tierRec->SetRecordId(1);
+    tierRec->LoadL(*iCDSession_vLatest);
+    
+    tierRec->iTierThreadName.SetMaxLengthL(KNewTierName().Length());
+    tierRec->iTierThreadName.SetL(KNewTierName);
+    
+    tierRec->ModifyL(*iCDSession_vLatest);
+    
+    CleanupStack::PopAndDestroy(tierRec);
+    
+    CCDTierRecord* tierRec1 = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+    CleanupStack::PushL(tierRec1);
+    
+    tierRec1->SetRecordId(1);
+    tierRec1->LoadL(*iCDSession_vLatest);
+    
+    TPtrC tierThreadName(tierRec1->iTierThreadName);
+    if (0 == tierThreadName.Compare(KNewTierName))
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(tierRec1);
+    
+    return TestStepResult();
+	}
+
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat370Step::CCommsdat370Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat370Step);
+	}
+
+CCommsdat370Step::~CCommsdat370Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat370Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat370Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat370Step::CreateSessionsL()
+	{
+    iCDSession_v11 = NULL;
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat370Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the TierThredName field in the Tier record (invalid name)
+ * Modify is called on a record container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    _LIT(KNewTierName, "New Tier Name which is longer than the permitted");
+    
+    CCDTierRecord* tierRec = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+    CleanupStack::PushL(tierRec);
+    
+    tierRec->SetRecordId(1);
+    tierRec->LoadL(*iCDSession_vLatest);
+    
+    tierRec->iTierThreadName.SetMaxLengthL(KNewTierName().Length());
+    tierRec->iTierThreadName.SetL(KNewTierName);
+    
+    TRAPD(err, tierRec->ModifyL(*iCDSession_vLatest));
+    
+    if (KErrTooBig == err)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(tierRec);
+    
+    return TestStepResult();
+    }
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat371Step::CCommsdat371Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat371Step);
+	}
+
+CCommsdat371Step::~CCommsdat371Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat371Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat371Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat371Step::CreateSessionsL()
+	{
+    iCDSession_v11 = NULL;
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat371Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the TierThredName field in the Tier record (valid name)
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    _LIT(KNewTierName, "New Tier Name2");
+    
+    CMDBField<TDesC>* tierNameField = new(ELeave)CMDBField<TDesC>(KCDTIdTierThreadName);
+    CleanupStack::PushL(tierNameField);
+    
+    tierNameField->SetRecordId(2);
+    tierNameField->SetMaxLengthL(KNewTierName().Length());
+    tierNameField->SetL(KNewTierName);
+
+    tierNameField->ModifyL(*iCDSession_vLatest);
+    
+    CleanupStack::PopAndDestroy(tierNameField);
+    
+    CCDTierRecord* tierRec1 = static_cast<CCDTierRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdTierRecord));
+    CleanupStack::PushL(tierRec1);
+    
+    tierRec1->SetRecordId(2);
+    tierRec1->LoadL(*iCDSession_vLatest);
+    
+    TPtrC tierThreadName(tierRec1->iTierThreadName);
+    if (0 == tierThreadName.Compare(KNewTierName))
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(tierRec1);
+    
+    return TestStepResult();
+    }
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat372Step::CCommsdat372Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat372Step);
+	}
+
+CCommsdat372Step::~CCommsdat372Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat372Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat372Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat372Step::CreateSessionsL()
+	{
+    iCDSession_v11 = NULL;
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+
+TVerdict CCommsdat372Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Change the TierThredName field in the Tier record (valid name)
+ * Modify is called on a field container
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    _LIT(KNewTierName, "New Tier Name2 which is longer than the permitted");
+    
+    CMDBField<TDesC>* tierNameField = new(ELeave)CMDBField<TDesC>(KCDTIdTierThreadName);
+    CleanupStack::PushL(tierNameField);
+    
+    tierNameField->SetRecordId(2);
+    tierNameField->SetMaxLengthL(KNewTierName().Length());
+    tierNameField->SetL(KNewTierName);
+
+    TRAPD(err, tierNameField->ModifyL(*iCDSession_vLatest));
+        
+    if (KErrTooBig == err)
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    
+    CleanupStack::PopAndDestroy(tierNameField);
+    
+    return TestStepResult();
+    }
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat380Step::CCommsdat380Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat380Step);
+	}
+
+CCommsdat380Step::~CCommsdat380Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat380Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat380Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat380Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+TVerdict CCommsdat380Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * This teststep inserts a rank1 connpref record with prompting on. There is IAP
+ * record in the database.
+ * 
+ * Store is made on a record container
+ * 
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    const TInt KIPProtoTierLink = 0x11800200;
+    
+    CCDConnectionPrefsRecord* connPrefRec = static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
+    CleanupStack::PushL(connPrefRec);
+    
+    connPrefRec->SetRecordId(1);
+    connPrefRec->DeleteL(*iCDSession_v11);
+    
+    CleanupStack::PopAndDestroy(connPrefRec);
+    
+    //Here the default IPProto AP should be linked from the APPrioritySelPol and
+    //IPProto Tier records.
+    
+	CCDAPPrioritySelectionPolicyRecord* apSelPolRec1 = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+	CleanupStack::PushL(apSelPolRec1);
+	
+	apSelPolRec1->SetRecordId(254);
+	apSelPolRec1->LoadL(*iCDSession_vLatest);
+	
+	CCDAccessPointRecord* ipprotoApRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+	CleanupStack::PushL(ipprotoApRec);
+	
+	ipprotoApRec->SetElementId(apSelPolRec1->iAp1);
+	ipprotoApRec->LoadL(*iCDSession_vLatest);
+    
+	if (1 == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest) &&
+		CCDAccessPointRecord::KNoPolicy == ipprotoApRec->iCustomSelectionPolicy &&
+		0 == ipprotoApRec->iCprConfig)
+		{
+	    //now insert an IAP record
+		CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord);
+		CleanupStack::PushL(iapRecord); 
+		
+		//Insert an IAP record; which will be referred by conn pref records
+		iapRecord->SetRecordId(KIAPRecordId); 
+		iapRecord->iServiceType.SetMaxLengthL(KMaxTextLength);
+		iapRecord->iServiceType= TPtrC(DIAL_OUT_ISP);
+		iapRecord->iService=2;
+		iapRecord->iBearerType.SetMaxLengthL(KMaxTextLength);
+		iapRecord->iBearerType=TPtrC(MODEM_BEARER);
+		iapRecord->iBearer=3;
+	    
+		iapRecord->StoreL(*iCDSession_v11);
+		
+		CCDConnectionPrefsRecord *cpRecord = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+		CleanupStack::PushL(cpRecord);
+		
+		cpRecord->SetRecordId(2);
+		cpRecord->iDefaultIAP = 0;
+		cpRecord->iRanking = 1;
+		cpRecord->iDirection = ECommDbConnectionDirectionOutgoing;
+		cpRecord->iBearerSet = KCommDbBearerCSD;
+		cpRecord->iDialogPref = ECommDbDialogPrefPrompt;
+		
+		cpRecord->StoreL(*iCDSession_v11);
+		
+		CleanupStack::PopAndDestroy(cpRecord);
+		CleanupStack::PopAndDestroy(iapRecord);
+	    
+		if (1 == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest))
+			{
+			CCDConnectionPrefsRecord *cpRecord1 = (CCDConnectionPrefsRecord*)CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord);
+			CleanupStack::PushL(cpRecord1);
+			
+			cpRecord1->SetRecordId(2);
+			cpRecord1->LoadL(*iCDSession_v11);
+			
+			CCDAPPrioritySelectionPolicyRecord* apSelPolRec = static_cast<CCDAPPrioritySelectionPolicyRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdApPrioritySelectionPolicyRecord));
+			CleanupStack::PushL(apSelPolRec);
+			
+			apSelPolRec->SetRecordId(254);
+			apSelPolRec->LoadL(*iCDSession_vLatest);
+			
+			CCDAccessPointRecord* apRec = static_cast<CCDAccessPointRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord));
+			CleanupStack::PushL(apRec);
+			
+			apRec->SetElementId(apSelPolRec->iAp1);
+			apRec->LoadL(*iCDSession_vLatest);
+			
+			//the customSelPol is the calculated IAP and the CprConfig field is the 
+			//elementID of the connpref record as it's a prompting record
+			if ( KIAPRecordId == apRec->iCustomSelectionPolicy &&
+			     apRec->iCprConfig == cpRecord1->ElementId() )
+				{
+				SetTestStepResult(EPass);
+				}
+			
+			CleanupStack::PopAndDestroy(apRec);
+			CleanupStack::PopAndDestroy(apSelPolRec);
+			CleanupStack::PopAndDestroy(cpRecord1);
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(ipprotoApRec);
+	CleanupStack::PopAndDestroy(apSelPolRec1);
+	
+    return TestStepResult();
+    }
+
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat381Step::CCommsdat381Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat381Step);
+	}
+
+CCommsdat381Step::~CCommsdat381Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat381Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat381Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat381Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+TVerdict CCommsdat381Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * This teststep inserts a rank1 connpref record with prompting on. There is IAP
+ * record in the database.
+ * 
+ * Store is made on a record container
+ * 
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    TBool goOn = EFalse;
+    
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRecord); 
+    
+    iapRecord->iServiceType.SetMaxLengthL((TPtrC(KCDTypeNameLANService)).Length());
+    iapRecord->iServiceType.SetL( TPtrC( KCDTypeNameLANService ) );
+    iapRecord->iService=2;
+    
+    if ( (iapRecord->FindL(*iCDSession_v11)) &&
+    	 (9 == iapRecord->RecordId()) )
+    	{
+    	goOn = ETrue;
+    	}
+    
+    CleanupStack::PopAndDestroy(iapRecord);
+    
+    if (goOn)
+    	{
+    	iapRecord = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	    CleanupStack::PushL(iapRecord); 
+	    
+	    iapRecord->iService=2;
+	    
+	    if ( (iapRecord->FindL(*iCDSession_v11)) &&
+	    	 (1 == iapRecord->RecordId()) )
+	    	{
+	    	SetTestStepResult(EPass);
+	    	}
+	    
+	    CleanupStack::PopAndDestroy(iapRecord);
+    	}
+    
+    return TestStepResult();
+    }
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat382Step::CCommsdat382Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat382Step);
+	}
+
+CCommsdat382Step::~CCommsdat382Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat382Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat382Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat382Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+TVerdict CCommsdat382Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * This teststep inserts a rank1 connpref record with prompting on. There is IAP
+ * record in the database.
+ * 
+ * Store is made on a record container
+ * 
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+	
+    TBool goOn = EFalse;
+    
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    CleanupStack::PushL(iapRecord); 
+    
+    iapRecord->iBearerType.SetMaxLengthL((TPtrC(KCDTypeNameLANBearer)).Length());
+    iapRecord->iBearerType.SetL( TPtrC( KCDTypeNameLANBearer ) );
+    iapRecord->iBearer=2;
+    
+    if ( (iapRecord->FindL(*iCDSession_v11)) &&
+    	 (2 == iapRecord->RecordId()) )
+    	{
+    	goOn = ETrue;
+    	}
+    
+    CleanupStack::PopAndDestroy(iapRecord);
+    
+    if (goOn)
+    	{
+    	iapRecord = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+	    CleanupStack::PushL(iapRecord); 
+	    
+	    iapRecord->iBearer=3;
+	    
+	    if ( (iapRecord->FindL(*iCDSession_v11)) &&
+	    	 (3 == iapRecord->RecordId()) )
+	    	{
+	    	SetTestStepResult(EPass);
+	    	}
+	    
+	    CleanupStack::PopAndDestroy(iapRecord);
+    	}
+    
+    return TestStepResult();
+    }
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat383Step::CCommsdat383Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat383Step);
+	}
+
+CCommsdat383Step::~CCommsdat383Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat383Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat383Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat383Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+TVerdict CCommsdat383Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * This teststep inserts a rank1 connpref record with prompting on. There is IAP
+ * record in the database.
+ * 
+ * Store is made on a record container
+ * 
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    TBool goOn = EFalse;
+    
+    CCDProxiesRecord *proxiesRecord = static_cast<CCDProxiesRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    CleanupStack::PushL(proxiesRecord); 
+    
+    proxiesRecord->iServiceType.SetMaxLengthL((TPtrC(KCDTypeNameDialOutISP)).Length());
+    proxiesRecord->iServiceType.SetL( TPtrC( KCDTypeNameDialOutISP ) );
+    proxiesRecord->iService=4;
+    
+    if ( (proxiesRecord->FindL(*iCDSession_v11)) &&
+    	 (1 == proxiesRecord->RecordId()) )
+    	{
+    	goOn = ETrue;
+    	}
+    
+    CleanupStack::PopAndDestroy(proxiesRecord);
+    
+    if (goOn)
+    	{
+    	proxiesRecord = static_cast<CCDProxiesRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    	CleanupStack::PushL(proxiesRecord); 
+	    
+    	proxiesRecord->iService=6;
+	    
+	    if ( (proxiesRecord->FindL(*iCDSession_v11)) &&
+	    	 (2 == proxiesRecord->RecordId()) )
+	    	{
+	    	SetTestStepResult(EPass);
+	    	}
+	    
+	    CleanupStack::PopAndDestroy(proxiesRecord);
+    	}
+    
+    return TestStepResult();
+    }
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat384Step::CCommsdat384Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat384Step);
+	}
+
+CCommsdat384Step::~CCommsdat384Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat384Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat384Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat384Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+TVerdict CCommsdat384Step::doTestStepL()
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    TBool goOn = EFalse;
+    
+    CCDLANServiceRecord *lanServiceRecord = static_cast<CCDLANServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+    CleanupStack::PushL(lanServiceRecord); 
+    
+    lanServiceRecord->iServiceExtensionTableName.SetMaxLengthL((TPtrC(KCDTypeNamePANServiceExt)).Length());
+    lanServiceRecord->iServiceExtensionTableName.SetL( TPtrC( KCDTypeNamePANServiceExt ) );
+    lanServiceRecord->iServiceExtensionTableRecordId=1;
+    
+    if ( (lanServiceRecord->FindL(*iCDSession_v11)) &&
+    	 (6 == lanServiceRecord->RecordId()) )
+    	{
+    	SetTestStepResult(EPass);
+    	}
+    	
+    CleanupStack::PopAndDestroy(lanServiceRecord);
+    
+    if (goOn)
+    	{
+    	lanServiceRecord = static_cast<CCDLANServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+    	CleanupStack::PushL(lanServiceRecord); 
+	    
+    	lanServiceRecord->iServiceExtensionTableRecordId=2;
+	    
+	    if ( (lanServiceRecord->FindL(*iCDSession_v11)) &&
+	    	 (7 == lanServiceRecord->RecordId()) )
+	    	{
+	    	SetTestStepResult(EPass);
+	    	}
+	    
+	    CleanupStack::PopAndDestroy(lanServiceRecord);
+    	}
+    
+    return TestStepResult();
+    }
+
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+//----------------------------------------------------------------------------------------------------------------
+CCommsdat385Step::CCommsdat385Step()/**
+ * Constructor
+ */
+	{
+	SetTestStepName(KCommsdat385Step);
+	}
+
+CCommsdat385Step::~CCommsdat385Step()
+/**
+ * Destructor
+ */
+	{
+	delete iCDSession_v11;
+	delete iCDSession_vLatest;
+	}
+
+TVerdict CCommsdat385Step::doTestStepPreambleL()
+	{
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CCommsdat385Step::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+void CCommsdat385Step::CreateSessionsL()
+	{
+    iCDSession_v11 = CMDBSession::NewL(KCDVersion1_1);
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_2);
+#else
+    iCDSession_vLatest = CMDBSession::NewL(KCDVersion1_1);
+#endif
+	}
+
+TVerdict CCommsdat385Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Check that for each Link layer ap created, there is a equivalent ipproto layer ap
+ */
+	{
+    SetTestStepResult(EFail);
+    CreateSessionsL();
+    
+    const TInt KIPProtoTierLink = 0x11800200;
+	const TInt KLinkTierLink = 0x11800300;
+    
+	if (GetAPNumberL(KLinkTierLink, iCDSession_vLatest) == GetAPNumberL(KIPProtoTierLink, iCDSession_vLatest))
+		{
+		SetTestStepResult(EPass);
+		}
+	
+    return TestStepResult();
+    }