public void createContactURL( GenKbAuthorization Authorization,
		GenKbContactURLBuff Buff )
	{
		GenKbContactURLPKey pkey = schema.getFactoryContactURL().newPKey();


		pkey.setRequiredContactURLId( schema.nextContactURLIdGen() );
		Buff.setRequiredContactURLId( pkey.getRequiredContactURLId() );

		GenKbContactURLByContactIdxKey keyContactIdx = schema.getFactoryContactURL().newContactIdxKey();
		keyContactIdx.setRequiredContactId( Buff.getRequiredContactId() );

		GenKbContactURLByProtocolIdxKey keyProtocolIdx = schema.getFactoryContactURL().newProtocolIdxKey();
		keyProtocolIdx.setOptionalURLProtocolId( Buff.getOptionalURLProtocolId() );

		GenKbContactURLByUNameIdxKey keyUNameIdx = schema.getFactoryContactURL().newUNameIdxKey();
		keyUNameIdx.setRequiredContactId( Buff.getRequiredContactId() );
		keyUNameIdx.setRequiredName( Buff.getRequiredName() );

		// Validate unique indexes

		if( dictByPKey.containsKey( pkey ) ) {
			throw CFLib.getDefaultExceptionFactory().newPrimaryKeyNotNewException( getClass(), "createContactURL", pkey );
		}

		if( dictByUNameIdx.containsKey( keyUNameIdx ) ) {
			throw CFLib.getDefaultExceptionFactory().newUniqueIndexViolationException( getClass(),
				"createContactURL",
				"ContactURLUNameIdx",
				keyUNameIdx );
		}

		// Validate foreign keys

		{
			boolean allNull = true;
			allNull = false;
			if( ! allNull ) {
				if( null == schema.getTableContact().readDerivedByPIdx( Authorization,
						Buff.getRequiredContactId() ) )
				{
					throw CFLib.getDefaultExceptionFactory().newUnresolvedRelationException( getClass(),
						"createContactURL",
						"Container",
						"Contact",
						"Contact",
						null );
				}
			}
		}

		{
			boolean allNull = true;
			if( Buff.getOptionalURLProtocolId() != null ) {
				allNull = false;
			}
			if( ! allNull ) {
				if( null == schema.getTableURLProtocol().readDerivedByPIdx( Authorization,
						Buff.getOptionalURLProtocolId() ) )
				{
					throw CFLib.getDefaultExceptionFactory().newUnresolvedRelationException( getClass(),
						"createContactURL",
						"Lookup",
						"URLProtocol",
						"URLProtocol",
						null );
				}
			}
		}

		// Proceed with adding the new record

		dictByPKey.put( pkey, Buff );

		SortedMap< GenKbContactURLPKey, GenKbContactURLBuff > subdictContactIdx;
		if( dictByContactIdx.containsKey( keyContactIdx ) ) {
			subdictContactIdx = dictByContactIdx.get( keyContactIdx );
		}
		else {
			subdictContactIdx = new TreeMap< GenKbContactURLPKey, GenKbContactURLBuff >();
			dictByContactIdx.put( keyContactIdx, subdictContactIdx );
		}
		subdictContactIdx.put( pkey, Buff );

		SortedMap< GenKbContactURLPKey, GenKbContactURLBuff > subdictProtocolIdx;
		if( dictByProtocolIdx.containsKey( keyProtocolIdx ) ) {
			subdictProtocolIdx = dictByProtocolIdx.get( keyProtocolIdx );
		}
		else {
			subdictProtocolIdx = new TreeMap< GenKbContactURLPKey, GenKbContactURLBuff >();
			dictByProtocolIdx.put( keyProtocolIdx, subdictProtocolIdx );
		}
		subdictProtocolIdx.put( pkey, Buff );

		dictByUNameIdx.put( keyUNameIdx, Buff );

	}